import{u as ee,G as ye,r as n,j as e,z as I,R as G,T as be,X as we,B as f,U as Ne,V as ve,M as R,N as Se,H as J,I as X,K as Te,Y as Ce,Z as Ee,_ as Y,$ as Pe,a0 as Re,a1 as _e,s as Z,a2 as ke,a3 as ze,a4 as De}from"./index-D2cxrzyv.js";import{u as Fe}from"./useDict-BN4y0n-Y.js";import{P as Le}from"./index-DICUnuN_.js";import{g as Me}from"./pagination-m5F4NDQi.js";import{F as l}from"./index-KuslyOWx.js";import{T as _}from"./index-C8Xnkbw4.js";import{P as Oe}from"./index-Dv-9vGc2.js";import{C as $}from"./index-BFDbUxK1.js";import{I as N}from"./index-4zw5l6IX.js";import{F as $e}from"./Table-BLvbgkX9.js";import{R as k,C as g}from"./row-C5EMotZ4.js";import{T as se}from"./index--w-5SUEd.js";import{S as Ue}from"./index-DPZE8XLS.js";import{l as Ae}from"./tenant-DSFtTF68.js";import{l as ae}from"./org-DMlC3mxP.js";import"./useForm-CaItC8xb.js";import"./iconUtil-CAY5Il88.js";import"./index-COTHVrjr.js";import"./index-Iw46KAPi.js";import"./Pagination-lXX40XmA.js";const{Title:Q,Text:z}=be;function te(a){const u=new Map,p=[];return a.forEach(c=>{u.set(c.id,{value:c.id,title:c.orgName,children:[]})}),u.forEach((c,y)=>{const h=a.find(b=>b.id===y);h!=null&&h.parentId&&u.has(h.parentId)?u.get(h.parentId).children.push(c):p.push(c)}),p}function Be({fieldProps:a,name:u,tenantId:p}){const{t:c}=ee(),[y,h]=n.useState([]),[b,w]=n.useState(!1);return n.useEffect(()=>{if(!p){h([]);return}w(!0),ae(p).then(D=>h(te(D||[]))).finally(()=>w(!1))},[p]),e.jsx(l.Item,{...a,label:c("users.orgNode"),name:[u,"orgId"],children:e.jsx(se,{placeholder:c("usersExt.selectDepartment"),allowClear:!0,treeData:y,loading:b,disabled:!p})})}function ds(){const{t:a}=ee(),{can:u}=ye(),{items:p}=Fe("sys_common_status"),[c,y]=n.useState(!1),[h,b]=n.useState(!1),[w,D]=n.useState([]),[F,re]=n.useState([]),[T,ne]=n.useState([]),[U,A]=n.useState([]),[le,C]=n.useState(1),[ie,oe]=n.useState(10),[E,B]=n.useState(""),de=()=>{C(1)},ce=()=>{B(""),V(void 0),C(1)},[L,V]=n.useState(void 0),[me,v]=n.useState(!1),[x,q]=n.useState(null),[j]=l.useForm(),i=n.useMemo(()=>{const t=sessionStorage.getItem("userProfile");return t?JSON.parse(t).isPlatformAdmin&&localStorage.getItem("activeTenantId")==="0":!1},[]),S=n.useMemo(()=>Number(localStorage.getItem("activeTenantId")||0),[]),K=l.useWatch("tenantId",j),H=l.useWatch("memberships",j)||[],M=n.useMemo(()=>{const t={};return T.forEach(s=>{t[s.id]=s.tenantName}),t},[T]),ue=n.useMemo(()=>{if(!i)return F.map(s=>({label:s.roleName,value:s.roleId}));const t=new Set(H.map(s=>s==null?void 0:s.tenantId).filter(Boolean));return F.filter(s=>s.tenantId!=null&&t.has(s.tenantId)).map(s=>{const r=s.tenantId??0,d=M[r]||`Tenant:${r}`;return{label:e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",width:"100%"},children:[e.jsx("span",{children:s.roleName}),e.jsxs("span",{style:{color:"#bfbfbf",fontSize:"11px",marginLeft:8},children:["[",d,"]"]})]}),value:s.roleId,searchText:`${s.roleName} ${d}`}})},[i,F,H,M]),pe=async()=>{try{const t=[Ee()];i&&t.push(Ae({current:1,size:1e3}));const[s,r]=await Promise.all(t);re(s||[]),i&&r&&ne(r.records||[])}catch{}},O=async()=>{y(!0);try{const t=await Y({tenantId:L});D(t||[])}finally{y(!1)}};n.useEffect(()=>{pe()},[]),n.useEffect(()=>{O()},[L]),n.useEffect(()=>{(async()=>{const s=i?K:S;if(s){const r=await ae(s);A(r||[])}else A([])})()},[K,i,S]);const he=n.useMemo(()=>te(U),[U]),W=n.useMemo(()=>{if(!E)return w;const t=E.toLowerCase();return w.filter(s=>s.username.toLowerCase().includes(t)||s.displayName.toLowerCase().includes(t)||s.email&&s.email.toLowerCase().includes(t))},[w,E]),xe=()=>{q(null),j.resetFields(),j.setFieldsValue({status:1,roleIds:[],isPlatformAdmin:!1,tenantId:i?void 0:S,memberships:i?[]:[{tenantId:S}]}),v(!0)},fe=async t=>{var s,r,d,o;q(t);try{const m=await Pe(t.userId),P=await Re(t.userId);j.setFieldsValue({...m,roleIds:P||[],password:"",tenantId:m.tenantId||((r=(s=m.memberships)==null?void 0:s[0])==null?void 0:r.tenantId),orgId:m.orgId||((o=(d=m.memberships)==null?void 0:d[0])==null?void 0:o.orgId),memberships:m.memberships||[]}),v(!0)}catch{}},je=async t=>{await _e(t),Z.success(a("common.success")),O()},ge=async()=>{const t=await j.validateFields();b(!0);try{const s={username:t.username,displayName:t.displayName,email:t.email,phone:t.phone,status:t.status,isPlatformAdmin:t.isPlatformAdmin};i?s.memberships=t.memberships||[]:s.memberships=[{tenantId:S,orgId:t.orgId}],t.password&&(s.password=t.password);let r=x==null?void 0:x.userId;if(x)await ke(x.userId,s);else{await ze(s);const o=(await Y()).find(m=>m.username===s.username);r=o==null?void 0:o.userId}r&&await De(r,t.roleIds||[]),Z.success(a("common.success")),v(!1),O()}finally{b(!1)}},Ie=[{title:a("users.userInfo"),key:"user",render:(t,s)=>e.jsxs(I,{children:[e.jsx("div",{className:"user-avatar-placeholder",children:e.jsx(G,{})}),e.jsxs("div",{children:[e.jsxs(I,{size:4,children:[e.jsx("div",{className:"user-display-name",children:s.displayName}),s.isPlatformAdmin&&e.jsx(_,{color:"gold",style:{fontSize:10},children:a("users.platformAdmin")})]}),e.jsxs("div",{className:"user-username tabular-nums",children:["@",s.username]})]})]})},...i?[{title:a("users.tenant"),key:"tenant",render:(t,s)=>s.memberships&&s.memberships.length>0?e.jsxs("div",{className:"flex flex-col gap-1",children:[s.memberships.slice(0,2).map(r=>e.jsx(_,{color:"blue",style:{margin:0,padding:"0 4px",fontSize:11},children:M[r.tenantId]||`Tenant ${r.tenantId}`},r.tenantId)),s.memberships.length>2&&e.jsxs(z,{type:"secondary",style:{fontSize:11},children:["+",s.memberships.length-2," more"]})]}):e.jsx(z,{type:"secondary",children:a("usersExt.noTenant")})}]:[],{title:a("users.orgNode"),key:"org",render:(t,s)=>{if(s.memberships&&s.memberships.length>0){const r=s.memberships.map(d=>d.orgName).filter(Boolean);if(r.length>0)return e.jsx("div",{className:"flex flex-col gap-1",children:r.map((d,o)=>e.jsxs(I,{size:4,style:{fontSize:13,color:"#555"},children:[e.jsx(we,{}),e.jsx("span",{children:d})]},o))})}return e.jsx(z,{type:"secondary",children:"-"})}},{title:a("users.roles"),key:"roles",render:(t,s)=>e.jsx(I,{wrap:!0,size:[0,4],children:s.roles&&s.roles.length>0?s.roles.map(r=>e.jsx(_,{color:"cyan",children:r.roleName},r.roleId)):e.jsx(z,{type:"secondary",children:a("usersExt.noRoles")})})},{title:a("common.status"),dataIndex:"status",width:80,render:t=>{const s=p.find(r=>r.itemValue===String(t));return e.jsx(_,{color:t===1?"green":"red",className:"m-0",children:s?s.itemLabel:a(t===1?"usersExt.enabled":"usersExt.disabled")})}},{title:a("common.action"),key:"action",width:100,fixed:"right",render:(t,s)=>e.jsxs(I,{children:[u("sys:user:update")&&e.jsx(f,{type:"text",icon:e.jsx(Ne,{"aria-hidden":"true"}),onClick:()=>fe(s),"aria-label":a("common.edit")}),u("sys:user:delete")&&s.userId!==1&&e.jsx(Oe,{title:a("usersExt.deleteConfirm"),okText:a("common.confirm"),cancelText:a("common.cancel"),onConfirm:()=>je(s.userId),children:e.jsx(f,{type:"text",danger:!0,icon:e.jsx(ve,{"aria-hidden":"true"}),"aria-label":a("common.delete")})})]})}];return e.jsxs("div",{className:"app-page users-page",children:[e.jsx(Le,{title:a("users.title"),subtitle:a("users.subtitle")}),e.jsx($,{className:"users-table-card app-page__filter-card",styles:{body:{padding:"16px"}},children:e.jsx("div",{className:"users-table-toolbar",children:e.jsxs(I,{size:"middle",wrap:!0,className:"app-page__toolbar",style:{justifyContent:"space-between",width:"100%"},children:[e.jsxs(I,{size:"middle",wrap:!0,className:"app-page__toolbar",children:[i&&e.jsx(R,{placeholder:a("users.tenantFilter"),style:{width:200},allowClear:!0,value:L,onChange:V,options:T.map(t=>({label:t.tenantName,value:t.id})),suffixIcon:e.jsx(Se,{"aria-hidden":"true"})}),e.jsx(N,{placeholder:a("users.searchPlaceholder"),prefix:e.jsx(J,{"aria-hidden":"true"}),className:"users-search-input",style:{width:300},value:E,onChange:t=>{B(t.target.value),C(1)},allowClear:!0,"aria-label":a("common.search")}),e.jsx(f,{type:"primary",icon:e.jsx(J,{"aria-hidden":"true"}),onClick:de,children:a("common.search")}),e.jsx(f,{onClick:ce,children:a("common.reset")})]}),u("sys:user:create")&&e.jsx(f,{type:"primary",icon:e.jsx(X,{"aria-hidden":"true"}),onClick:xe,children:a("common.create")})]})})}),e.jsx($,{className:"app-page__content-card flex-1 flex flex-col overflow-hidden",styles:{body:{padding:0,flex:1,display:"flex",flexDirection:"column",overflow:"hidden"}},children:e.jsx("div",{className:"flex-1 min-h-0 h-full",children:e.jsx($e,{rowKey:"userId",columns:Ie,dataSource:W,loading:c,size:"middle",scroll:{y:"calc(100vh - 420px)"},pagination:Me(W.length,le,ie,(t,s)=>{C(t),oe(s)})})})}),e.jsx(Te,{title:e.jsxs("div",{className:"user-drawer-title",children:[e.jsx(G,{className:"mr-2","aria-hidden":"true"}),a(x?"users.drawerTitleEdit":"users.drawerTitleCreate")]}),open:me,onClose:()=>v(!1),width:520,destroyOnClose:!0,footer:e.jsxs("div",{className:"app-page__drawer-footer",children:[e.jsx(f,{onClick:()=>v(!1),children:a("common.cancel")}),e.jsx(f,{type:"primary",loading:h,onClick:ge,children:a("common.save")})]}),children:e.jsxs(l,{form:j,layout:"vertical",className:"user-form",children:[e.jsx(Q,{level:5,style:{marginBottom:16},children:a("usersExt.basicInfo")}),e.jsxs(k,{gutter:16,children:[e.jsx(g,{span:12,children:e.jsx(l.Item,{label:a("users.username"),name:"username",rules:[{required:!0,message:a("users.username")}],children:e.jsx(N,{placeholder:a("users.username"),disabled:!!x,className:"tabular-nums"})})}),e.jsx(g,{span:12,children:e.jsx(l.Item,{label:a("users.displayName"),name:"displayName",rules:[{required:!0,message:a("users.displayName")}],children:e.jsx(N,{placeholder:a("users.displayName")})})})]}),e.jsxs(k,{gutter:16,children:[e.jsx(g,{span:12,children:e.jsx(l.Item,{label:a("users.email"),name:"email",children:e.jsx(N,{placeholder:a("usersExt.emailPlaceholder"),className:"tabular-nums"})})}),e.jsx(g,{span:12,children:e.jsx(l.Item,{label:a("users.phone"),name:"phone",children:e.jsx(N,{placeholder:a("users.phone"),className:"tabular-nums"})})})]}),e.jsx(l.Item,{label:a("users.password"),name:"password",rules:[{required:!x,message:a("users.password")}],children:e.jsx(N.Password,{placeholder:a(x?"usersExt.passwordKeepPlaceholder":"usersExt.passwordInitPlaceholder")})}),e.jsx(l.Item,{label:a("users.roles"),name:"roleIds",rules:[{required:!0,message:a("users.roles")}],children:e.jsx(R,{mode:"multiple",placeholder:a("users.roles"),options:ue,optionFilterProp:i?"searchText":"label"})}),!i&&e.jsx(l.Item,{label:a("users.orgNode"),name:"orgId",children:e.jsx(se,{placeholder:a("usersExt.selectOrgPlaceholder"),allowClear:!0,treeData:he})}),e.jsxs(k,{gutter:16,children:[e.jsx(g,{span:12,children:e.jsx(l.Item,{label:a("common.status"),name:"status",initialValue:1,children:e.jsx(R,{options:p.map(t=>({label:t.itemLabel,value:Number(t.itemValue)}))})})}),i&&e.jsx(g,{span:12,children:e.jsx(l.Item,{label:a("users.platformAdmin"),name:"isPlatformAdmin",valuePropName:"checked",children:e.jsx(Ue,{})})})]}),i&&e.jsxs(e.Fragment,{children:[e.jsx(Q,{level:5,style:{marginTop:24,marginBottom:16},children:a("usersExt.membershipsTitle")}),e.jsx(l.List,{name:"memberships",children:(t,{add:s,remove:r})=>e.jsxs(e.Fragment,{children:[t.map(({key:d,name:o,...m})=>e.jsx($,{size:"small",className:"mb-3",styles:{body:{padding:"12px"}},title:a("usersExt.membershipTitle",{index:o+1}),extra:t.length>1&&e.jsx(f,{type:"text",danger:!0,icon:e.jsx(Ce,{}),onClick:()=>r(o)}),children:e.jsxs(k,{gutter:12,children:[e.jsx(g,{span:12,children:e.jsx(l.Item,{...m,label:a("users.tenant"),name:[o,"tenantId"],rules:[{required:!0,message:a("usersExt.membershipRequired")}],children:e.jsx(R,{options:T.map(P=>({label:P.tenantName,value:P.id})),placeholder:a("usersExt.selectTenant")})})}),e.jsx(g,{span:12,children:e.jsx(Be,{fieldProps:{...m},name:o,tenantId:j.getFieldValue(["memberships",o,"tenantId"])})})]})},d)),e.jsx(f,{type:"dashed",onClick:()=>s(),block:!0,icon:e.jsx(X,{}),children:a("usersExt.addMembership")})]})})]})]})})]})}export{ds as default};