2 lines
13 KiB
JavaScript
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-CYM97J2V.js";import{u as A}from"./useDict-BjF_A4fe.js";import{P as Ve}from"./index-B7x062Ky.js";import{F as a}from"./index-CacOxAQN.js";import{T as E}from"./index-DqftVe8j.js";import{P as ke}from"./index-DfhCfAUo.js";import{C as U}from"./index-Bcf8yIZZ.js";import{I as u}from"./index-DV4zjsPW.js";import{F as Pe}from"./Table-CAs2vM8c.js";import{R as V,C as I}from"./row-DNGQ3hV2.js";import"./useForm-B5uILH8t.js";import"./index-M0Ae7f04.js";import"./Pagination-By0LqcoC.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-hi
|