2 lines
13 KiB
JavaScript
2 lines
13 KiB
JavaScript
|
|
import{u as pe,G as ue,r,j as e,z as y,T as he,Q as $,B as p,I as Q,U as xe,V as fe,H as _,M as V,c as ye,K as je,aD as be,W as ge,aE as Ie,aF as we,aG as Ce,aH as Te,s as U,aI as ve,aJ as Ee,aK as Se,aL as Ve,aM as Z}from"./index-D2cxrzyv.js";import{u as A}from"./useDict-BN4y0n-Y.js";import{P as Oe}from"./index-DICUnuN_.js";import{F as a}from"./index-KuslyOWx.js";import{T as E}from"./index-C8Xnkbw4.js";import{P as ke}from"./index-Dv-9vGc2.js";import{C as J}from"./index-BFDbUxK1.js";import{I as u}from"./index-4zw5l6IX.js";import{F as Pe}from"./Table-BLvbgkX9.js";import{R as O,C as I}from"./row-C5EMotZ4.js";import"./useForm-CaItC8xb.js";import"./iconUtil-CAY5Il88.js";import"./index-COTHVrjr.js";import"./index-Iw46KAPi.js";import"./Pagination-lXX40XmA.js";const{Text:H}=he,Le={dashboard:"DashboardOutlined",meeting:"VideoCameraOutlined",user:"UserOutlined",role:"TeamOutlined",permission:"SafetyCertificateOutlined",device:"DesktopOutlined",tenant:"ShopOutlined",org:"ApartmentOutlined",dict:"BookOutlined",setting:"SettingOutlined"},Y=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 Ue(){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,q]=r.useState(!1),[S,se]=r.useState([]),[c,P]=r.useState({name:"",code:"",permType:""}),[te,C]=r.useState(!1),[F,M]=r.useState(null),[T,x]=r.useState(""),[v,g]=r.useState(!1),[L,z]=r.useState(120),K=r.useRef(null),[m]=a.useForm(),N=async()=>{k(!0);try{const s=await we();se(s||[])}finally{k(!1)}};r.useEffect(()=>{N()},[]);const B=r.useMemo(()=>S.filter(s=>{var R,W;const i=c.name?(R=s.name)==null?void 0:R.includes(c.name):!0,n=c.code?(W=s.code)==null?void 0:W.includes(c.code):!0,d=c.permType?s.permType===c.permType:!0;return i&&n&&d}),[S,c]),ie=r.useMemo(()=>Ne(B),[B]),G=a.useWatch("permType",m),j=a.useWatch("icon",m),ne=r.useMemo(()=>S.filter(s=>G==="button"?s.permType==="menu":s.permType==="directory").map(s=>({value:s.permId,label:s.name})),[S,G]),f=r.useMemo(()=>{const s=T.trim().toLowerCase();return s?Y.filter(i=>i.toLowerCase().includes(s)):Y},[T]),D=r.useMemo(()=>f.slice(0,L),[f,L]);r.useEffect(()=>{z(120)},[T,v]),r.useEffect(()=>{if(!v||!j||T.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=K.current)==null?void 0:d.querySelector(`[data-icon-name="${j}"]`);n==null||n.scrollIntoView({block:"nearest",inline:"nearest"})},0);return()=>window.clearTimeout(i)},[f,v,T,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}),C(!0)},le=s=>{M(s),x(s.icon||""),g(!1),m.setFieldsValue(s),C(!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}),C(!0)},ce=async()=>{const s=await m.validateFields();q(!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 Ce(F.permId,n):await Te(n),U.success(t("common.success")),C(!1),N()}finally{q(!1)}},de=async s=>{await ve(s),U.success(t("common.success")),N()},me=[{title:t("permissions.permName"),dataIndex:"name",key:"name",render:(s,i)=
|