unis_crm/frontend1/dist/assets/index-3DHKt_R6.js

2 lines
13 KiB
JavaScript

import{u as pe,a2 as ue,r,j as e,Y as y,T as he,ab as D,B as p,a4 as G,ac as xe,ad as fe,a3 as _,a7 as O,c as ye,a6 as je,bn as be,ae as ge,bo as Ie,bp as we,bq as ve,br as Ce,s as Q,bs as Te,bt as Ee,bu as Se,bv as Oe,bw as Z}from"./index-Dv-rJwbZ.js";import{u as A}from"./useDict-ClxJHHDi.js";import{P as Ve}from"./index-D4i8Uis-.js";import{F as a}from"./index-DmVlNV9v.js";import{T as E}from"./index-BymHESMU.js";import{P as ke}from"./index-5rm_zQK_.js";import{C as U}from"./index-EoMRal4G.js";import{I as u}from"./index-DFGcC-dW.js";import{F as Pe}from"./Table-BD43FaLh.js";import{R as V,C as I}from"./row-NVxLItiq.js";import"./useForm-43P2UNGc.js";import"./index-58fJYkx8.js";import"./Pagination-xbf267Yj.js";const{Text:q}=he,Le={dashboard:"DashboardOutlined",meeting:"VideoCameraOutlined",user:"UserOutlined",role:"TeamOutlined",permission:"SafetyCertificateOutlined",device:"DesktopOutlined",tenant:"ShopOutlined",org:"ApartmentOutlined",dict:"BookOutlined",setting:"SettingOutlined"},J=Object.keys(Z).filter(t=>/(?:Outlined|Filled|TwoTone)$/.test(t)).sort((t,o)=>t.localeCompare(o));function X(t){const o=t?Le[t]||t:void 0;if(!o)return null;const h=Z[o];return h?e.jsx(h,{"aria-hidden":"true"}):null}function Ne(t){const o=new Map,b=[];(t||[]).forEach(l=>{o.set(l.permId,{...l,key:l.permId,children:[]})}),o.forEach(l=>{l.parentId&&o.has(l.parentId)?o.get(l.parentId).children.push(l):b.push(l)});const h=l=>{l.sort((w,k)=>(w.sortOrder||0)-(k.sortOrder||0)),l.forEach(w=>w.children&&h(w.children))};return h(b),b}function Ye(){const{t}=pe(),{can:o}=ue(),{items:b}=A("sys_common_status"),{items:h}=A("sys_permission_type"),{items:l}=A("sys_common_visibility"),[w,k]=r.useState(!1),[ee,H]=r.useState(!1),[S,se]=r.useState([]),[c,P]=r.useState({name:"",code:"",permType:""}),[te,v]=r.useState(!1),[F,M]=r.useState(null),[C,x]=r.useState(""),[T,g]=r.useState(!1),[L,z]=r.useState(120),B=r.useRef(null),[m]=a.useForm(),N=async()=>{k(!0);try{const s=await we();se(s||[])}finally{k(!1)}};r.useEffect(()=>{N()},[]);const K=r.useMemo(()=>S.filter(s=>{var R,Y;const i=c.name?(R=s.name)==null?void 0:R.includes(c.name):!0,n=c.code?(Y=s.code)==null?void 0:Y.includes(c.code):!0,d=c.permType?s.permType===c.permType:!0;return i&&n&&d}),[S,c]),ie=r.useMemo(()=>Ne(K),[K]),W=a.useWatch("permType",m),j=a.useWatch("icon",m),ne=r.useMemo(()=>S.filter(s=>W==="button"?s.permType==="menu":s.permType==="directory").map(s=>({value:s.permId,label:s.name})),[S,W]),f=r.useMemo(()=>{const s=C.trim().toLowerCase();return s?J.filter(i=>i.toLowerCase().includes(s)):J},[C]),$=r.useMemo(()=>f.slice(0,L),[f,L]);r.useEffect(()=>{z(120)},[C,T]),r.useEffect(()=>{if(!T||!j||C.trim())return;const s=f.findIndex(n=>n===j);if(s>=0&&s+24>L){z(Math.min(s+60,f.length));return}const i=window.setTimeout(()=>{var d;const n=(d=B.current)==null?void 0:d.querySelector(`[data-icon-name="${j}"]`);n==null||n.scrollIntoView({block:"nearest",inline:"nearest"})},0);return()=>window.clearTimeout(i)},[f,T,C,j,L]);const re=()=>{m.setFieldValue("icon",void 0),x("")},ae=()=>{M(null),m.resetFields(),x(""),g(!1),m.setFieldsValue({level:1,permType:"directory",status:1,isVisible:1,sortOrder:0}),v(!0)},le=s=>{M(s),x(s.icon||""),g(!1),m.setFieldsValue(s),v(!0)},oe=s=>{M(null),m.resetFields(),x(""),g(!1);const i=s.level||1,n=Math.min(i+1,3);let d="menu";n===3&&(d="button"),n===1&&(d="directory"),m.setFieldsValue({parentId:s.permId,level:n,permType:d,status:1,isVisible:1,sortOrder:0}),v(!0)},ce=async()=>{const s=await m.validateFields();H(!0);try{let i=1;if(s.parentId){const d=S.find(R=>R.permId===s.parentId);d&&(i=(d.level||1)+1)}const n={parentId:s.parentId||0,name:s.name,code:s.code,permType:s.permType,level:i,path:s.path,component:s.component,icon:s.icon,sortOrder:s.sortOrder,isVisible:s.isVisible,status:s.status,description:s.description};F?await ve(F.permId,n):await Ce(n),Q.success(t("common.success")),v(!1),N()}finally{H(!1)}},de=async s=>{await Te(s),Q.success(t("common.success")),N()},me=[{title:t("permissions.permName"),dataIndex:"name",key:"name",render:(s,i)=>{let n=e.jsx(Ee,{style:{color:"#52c41a"},"aria-hidden":"true"});return i.permType==="directory"&&(n=e.jsx(Se,{style:{color:"#faad14"},"aria-hidden":"true"})),i.permType==="menu"&&(n=e.jsx(Oe,{style:{color:"#1890ff"},"aria-hidden":"true"})),e.jsxs(y,{children:[n,e.jsx(q,{strong:i.level===1,children:s})]})}},{title:t("permissions.permCode"),dataIndex:"code",key:"code",render:s=>s?e.jsx(E,{color:"blue",className:"tabular-nums",children:s}):"-"},{title:t("permissions.permType"),dataIndex:"permType",width:90,render:s=>{const i=h.find(d=>d.itemValue===s);let n="warning";return s==="directory"&&(n="default"),s==="menu"&&(n="processing"),e.jsx(E,{color:n,children:i?i.itemLabel:s})}},{title:t("permissions.sort"),dataIndex:"sortOrder",width:80,className:"tabular-nums"},{title:t("permissions.route"),key:"route",ellipsis:!0,render:(s,i)=>e.jsxs("div",{className:"flex flex-col",children:[i.path&&e.jsx(q,{type:"secondary",style:{fontSize:"12px"},className:"tabular-nums",children:i.path}),i.component&&e.jsx(q,{type:"secondary",style:{fontSize:"11px"},children:i.component})]})},{title:t("permissions.visible"),dataIndex:"isVisible",width:80,render:s=>{const i=l.find(n=>n.itemValue===String(s));return s===1?e.jsx(E,{color:"blue",children:(i==null?void 0:i.itemLabel)||t("permissionsExt.visible")}):e.jsx(E,{children:(i==null?void 0:i.itemLabel)||t("permissionsExt.hidden")})}},{title:t("common.status"),dataIndex:"status",width:80,render:s=>{const i=b.find(n=>n.itemValue===String(s));return s===1?e.jsx(E,{color:"green",children:(i==null?void 0:i.itemLabel)||t("permissionsExt.enabled")}):e.jsx(E,{color:"red",children:(i==null?void 0:i.itemLabel)||t("permissionsExt.disabled")})}},{title:t("common.action"),width:150,fixed:"right",render:(s,i)=>e.jsxs(y,{children:[o("sys:permission:create")&&i.permType!=="button"&&e.jsx(D,{title:t("permissionsExt.addChild"),children:e.jsx(p,{type:"text",size:"small",icon:e.jsx(G,{"aria-hidden":"true"}),onClick:()=>oe(i),"aria-label":t("permissionsExt.addChild")})}),o("sys:permission:update")&&e.jsx(p,{type:"text",size:"small",icon:e.jsx(xe,{"aria-hidden":"true"}),onClick:()=>le(i),"aria-label":t("common.edit")}),o("sys:permission:delete")&&e.jsx(ke,{title:t("permissionsExt.deleteConfirm",{name:i.name}),okText:t("common.confirm"),cancelText:t("common.cancel"),onConfirm:()=>de(i.permId),children:e.jsx(p,{type:"text",size:"small",danger:!0,icon:e.jsx(fe,{"aria-hidden":"true"}),"aria-label":t("common.delete")})})]})}];return e.jsxs("div",{className:"app-page permissions-page",children:[e.jsx(Ve,{title:t("permissions.title"),subtitle:t("permissions.subtitle")}),e.jsx(U,{className:"app-page__filter-card",styles:{body:{padding:"16px"}},children:e.jsxs(y,{wrap:!0,size:"middle",className:"app-page__toolbar",style:{justifyContent:"space-between",width:"100%"},children:[e.jsxs(y,{wrap:!0,size:"middle",className:"app-page__toolbar",children:[e.jsx(u,{placeholder:t("permissions.permName"),value:c.name,onChange:s=>P({...c,name:s.target.value}),prefix:e.jsx(_,{className:"text-gray-400","aria-hidden":"true"}),style:{width:180},allowClear:!0,"aria-label":t("permissions.permName")}),e.jsx(u,{placeholder:t("permissions.permCode"),value:c.code,onChange:s=>P({...c,code:s.target.value}),style:{width:180},allowClear:!0,"aria-label":t("permissions.permCode")}),e.jsx(O,{placeholder:t("permissions.permType"),allowClear:!0,value:c.permType||void 0,onChange:s=>P({...c,permType:s||""}),options:h.map(s=>({value:s.itemValue,label:s.itemLabel})),style:{width:120},"aria-label":t("permissions.permType")}),e.jsx(p,{type:"primary",icon:e.jsx(_,{"aria-hidden":"true"}),onClick:N,children:t("common.search")}),e.jsx(p,{icon:e.jsx(ye,{"aria-hidden":"true"}),onClick:()=>P({name:"",code:"",permType:""}),children:t("common.reset")})]}),o("sys:permission:create")&&e.jsx(p,{type:"primary",icon:e.jsx(G,{"aria-hidden":"true"}),onClick:ae,children:t("common.create")})]})}),e.jsx(U,{className:"app-page__content-card permissions-content-card flex-1 flex flex-col overflow-hidden",styles:{body:{padding:0,flex:1,display:"flex",flexDirection:"column",overflow:"hidden"}},children:e.jsx(Pe,{className:"permissions-table-full",rowKey:"permId",loading:w,dataSource:ie,columns:me,pagination:!1,size:"middle",scroll:{x:"max-content",y:"100%"},expandable:{defaultExpandAllRows:!1,rowExpandable:s=>{var i;return s.permType!=="button"&&!!((i=s.children)!=null&&i.length)}}})}),e.jsx(je,{title:e.jsxs(y,{children:[e.jsx(Ie,{"aria-hidden":"true"}),e.jsx("span",{children:t(F?"permissions.drawerTitleEdit":"permissions.drawerTitleCreate")})]}),open:te,onClose:()=>v(!1),width:520,destroyOnClose:!0,footer:e.jsxs("div",{className:"app-page__drawer-footer",children:[e.jsx(p,{onClick:()=>v(!1),children:t("common.cancel")}),e.jsx(p,{type:"primary",loading:ee,onClick:ce,children:t("common.save")})]}),children:e.jsxs(a,{form:m,layout:"vertical",className:"permission-form",onValuesChange:s=>s.permType==="button"&&m.setFieldsValue({isVisible:0}),children:[e.jsx(V,{gutter:16,children:e.jsx(I,{span:24,children:e.jsx(a.Item,{label:t("permissions.permType"),name:"permType",rules:[{required:!0}],children:e.jsx(O,{options:h.map(s=>({value:s.itemValue,label:s.itemLabel})),"aria-label":t("permissions.permType")})})})}),e.jsx(a.Item,{label:t("permissions.parentId"),name:"parentId",children:e.jsx(O,{allowClear:!0,showSearch:!0,placeholder:t("permissionsExt.parentPlaceholder"),options:ne,"aria-label":t("permissions.parentId")})}),e.jsx(a.Item,{label:t("permissions.permName"),name:"name",rules:[{required:!0,message:t("permissions.permName")}],children:e.jsx(u,{placeholder:t("permissionsExt.namePlaceholder")})}),e.jsx(a.Item,{label:e.jsxs(y,{children:[e.jsx("span",{children:t("permissions.permCode")}),e.jsx(D,{title:t("permissionsExt.codeHelp"),children:e.jsx(be,{className:"text-gray-400"})})]}),name:"code",rules:[{required:!0,message:t("permissions.permCode")}],children:e.jsx(u,{placeholder:t("permissionsExt.codePlaceholder"),className:"tabular-nums"})}),e.jsxs(V,{gutter:16,children:[e.jsx(I,{span:12,children:e.jsx(a.Item,{label:t("permissions.path"),name:"path",children:e.jsx(u,{placeholder:t("permissionsExt.pathPlaceholder"),className:"tabular-nums"})})}),e.jsx(I,{span:12,children:e.jsx(a.Item,{label:t("permissions.component"),name:"component",children:e.jsx(u,{placeholder:t("permissionsExt.componentPlaceholder")})})})]}),e.jsx(V,{gutter:16,children:e.jsx(I,{span:24,children:e.jsxs(a.Item,{label:t("permissions.icon"),children:[e.jsx(a.Item,{name:"icon",noStyle:!0,children:e.jsx(u,{type:"hidden"})}),e.jsxs(y,{direction:"vertical",size:12,style:{width:"100%"},children:[e.jsxs(y,{style:{width:"100%",justifyContent:"space-between"},children:[e.jsx(u,{readOnly:!0,value:j||"",onClick:()=>{x(""),g(!0)},onFocus:()=>{x(""),g(!0)},placeholder:t("permissionsExt.iconPlaceholder"),prefix:X(j)||e.jsx(_,{"aria-hidden":"true"}),style:{width:260}}),e.jsxs(y,{children:[e.jsx(p,{size:"small",onClick:()=>{T||x(""),g(s=>!s)},children:t(T?"permissionsExt.hideIconLibrary":"permissionsExt.showIconLibrary")}),j?e.jsx(p,{size:"small",onClick:re,children:t("common.reset")}):null]})]}),T?e.jsxs("div",{children:[e.jsx(u,{value:C,onChange:s=>x(s.target.value),placeholder:t("permissionsExt.iconSearchPlaceholder"),prefix:e.jsx(_,{"aria-hidden":"true"}),allowClear:!0,style:{marginBottom:12}}),e.jsxs("div",{ref:B,onScroll:s=>{const i=s.currentTarget;i.scrollTop+i.clientHeight>=i.scrollHeight-48&&z(n=>Math.min(n+120,f.length))},style:{maxHeight:240,overflowY:"auto",border:"1px solid #f0f0f0",borderRadius:8,padding:12,background:"#fafafa"},children:[e.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(44px, 1fr))",gap:10},children:$.map(s=>{const i=j===s;return e.jsx(D,{title:s,children:e.jsx(p,{"data-icon-name":s,type:"text",onClick:()=>{const n=i?void 0:s;m.setFieldValue("icon",n),n&&(x(""),g(!1))},"aria-label":s,style:{height:44,width:"100%",borderRadius:10,border:i?"1px solid #1677ff":"1px solid transparent",background:i?"#e6f4ff":"#fff",color:i?"#1677ff":"inherit",display:"inline-flex",alignItems:"center",justifyContent:"center",boxShadow:i?"0 0 0 2px rgba(22,119,255,0.12)":"none"},children:X(s)})},s)})}),f.length?null:e.jsx("div",{style:{padding:"16px 0",textAlign:"center",color:"#8c8c8c"},children:t("permissionsExt.iconEmpty")}),$.length<f.length?e.jsx("div",{style:{paddingTop:12,textAlign:"center",color:"#8c8c8c",fontSize:12},children:t("permissionsExt.iconLoadingMore",{current:$.length,total:f.length})}):null]})]}):null]})]})})}),e.jsx(V,{gutter:16,children:e.jsx(I,{span:12,children:e.jsx(a.Item,{label:t("permissions.sort"),name:"sortOrder",initialValue:0,children:e.jsx(ge,{style:{width:"100%"},min:0,className:"tabular-nums"})})})}),e.jsxs(V,{gutter:16,children:[e.jsx(I,{span:12,children:e.jsx(a.Item,{label:t("permissions.isVisible"),name:"isVisible",initialValue:1,children:e.jsx(O,{options:l.map(s=>({value:Number(s.itemValue),label:s.itemLabel}))})})}),e.jsx(I,{span:12,children:e.jsx(a.Item,{label:t("common.status"),name:"status",initialValue:1,children:e.jsx(O,{options:b.map(s=>({value:Number(s.itemValue),label:s.itemLabel}))})})})]}),e.jsx(a.Item,{label:t("permissions.description"),name:"description",children:e.jsx(u.TextArea,{rows:2,placeholder:t("permissionsExt.descriptionPlaceholder")})})]})})]})}export{Ye as default};