import{d as xe,k as De,c as h,a as $,b as t,e as $e,g as m,s as Re,w as n,p as Se,B as te,m as Be,n as ne,q as C,r as o,L as Te,E as d,f as p,v as ze,o as v,i as r,x as K,A as Ie,a5 as Pe,a6 as Ne,a7 as Ee,y as I,T as Me,U as qe,a8 as Ke,a9 as Le,F as se,aa as Ae,ab as Fe,ac as je,M as Ge,ad as oe,ae as He,af as Je,ag as Oe,ah as Qe,ai as We,aj as Xe,_ as Ye}from"./index-BVz74E6_.js";const Ze={class:"user-manager"},ea={class:"toolbar"},aa={class:"pagination-wrapper"},la={key:0},ta={key:0,style:{color:"#909399","margin-left":"8px"}},na=xe({__name:"UserManager",setup(sa){const w=o(!1),L=o([]),A=o(0),U=o(1),R=o(10),P=o(""),c=o([]);async function f(){w.value=!0;try{const a=await Te({page:U.value,size:R.value,keyword:P.value||void 0});L.value=a.list,A.value=a.total}catch(a){d.error(a.message||"加载用户列表失败")}finally{w.value=!1}}function F(){U.value=1,f()}function ue(a){R.value=a,f()}function ie(a){U.value=a,f()}const b=o(!1),y=o(!1),S=o(null),s=o({username:"",password:"",display_name:"",email:"",phone:"",status:1});function de(){y.value=!1,S.value=null,s.value={username:"",password:"123456",display_name:"",email:"",phone:"",status:1},b.value=!0}function re(a){y.value=!0,S.value=a.id,s.value={username:a.username,password:"",display_name:a.display_name,email:a.email||"",phone:a.phone||"",status:a.status},b.value=!0}async function pe(){if(!s.value.username||!s.value.display_name){d.warning("请填写必要字段");return}w.value=!0;try{y.value&&S.value?(await Ke(S.value,{username:s.value.username,display_name:s.value.display_name,email:s.value.email,phone:s.value.phone,status:s.value.status}),d.success("更新成功")):(await Le({username:s.value.username,password:s.value.password||"123456",display_name:s.value.display_name,email:s.value.email,phone:s.value.phone}),d.success("创建成功")),b.value=!1,f()}catch(a){d.error(a.message||"保存失败")}finally{w.value=!1}}async function ve(a){try{await se.confirm(`确定要删除用户 "${a.display_name}" 吗?`,"确认删除",{type:"warning",confirmButtonText:"确定",cancelButtonText:"取消"}),await Ae(a.id),d.success("删除成功"),f()}catch{}}async function me(){if(c.value.length===0){d.warning("请先选择用户");return}try{await se.confirm(`确定要删除选中的 ${c.value.length} 个用户吗?`,"批量删除",{type:"warning",confirmButtonText:"确定",cancelButtonText:"取消"}),await Qe(c.value),d.success("删除成功"),c.value=[],f()}catch{}}function ce(a){c.value=a.map(e=>e.id)}async function fe(a){const e=a.status===1?0:1;try{await Fe(a.id,e),a.status=e,d.success(e===1?"已启用":"已禁用")}catch(u){d.error(u.message||"操作失败")}}const x=o(!1),j=o(0),G=o(""),B=o("123456");function ge(a){j.value=a.id,G.value=a.display_name,B.value="123456",x.value=!0}async function ye(){try{await je(j.value,B.value),d.success("密码已重置"),x.value=!1}catch(a){d.error(a.message||"重置失败")}}const N=o(!1),T=o(0),H=o(""),E=o([]),M=o([]);async function _e(a){T.value=a.id,H.value=a.display_name;try{const[e,u]=await Promise.all([Ge(),oe(a.id)]);E.value=e,M.value=u,N.value=!0}catch(e){d.error("加载角色失败: "+(e.message||e))}}function J(a){return M.value.some(e=>e.id===a)}async function ke(a){try{J(a.id)?(await We(T.value,a.id),d.success("已移除角色")):(await Xe(T.value,a.id),d.success("已分配角色")),M.value=await oe(T.value)}catch(e){d.error(e.message||"操作失败")}}De(()=>{f()});const D=o(!1),_=o(!1),O=o(0),Q=o(""),q=o([]),W=o([]),X=o();function Y(a,e=0){return a.filter(u=>(u.parent_id??0)===e).map(u=>{const i=Y(a,u.id);return i.length>0?{...u,children:i}:{...u}})}async function we(a){O.value=a.id,Q.value=a.display_name,_.value=!0;try{const[e,u]=await Promise.all([He(),Je(a.id)]);q.value=Y(e),W.value=u.map(i=>i.id),D.value=!0}catch(e){d.error(e.message||"加载部门信息失败")}finally{_.value=!1}}async function be(){const a=X.value;if(!a)return;const e=a.getCheckedKeys(!1);_.value=!0;try{await Oe(O.value,e),d.success("部门分配成功"),D.value=!1}catch(u){d.error(u.message||"部门分配失败")}finally{_.value=!1}}return(a,e)=>{const u=p("el-input"),i=p("el-button"),g=p("el-table-column"),Z=p("el-switch"),Ve=p("el-table"),he=p("el-pagination"),k=p("el-form-item"),ee=p("el-form"),z=p("el-dialog"),Ce=p("el-checkbox"),ae=p("el-empty"),Ue=p("el-tree"),le=ze("loading");return v(),h("div",Ze,[e[30]||(e[30]=$("div",{class:"page-header"},[$("h2",{class:"page-title"},"用户管理")],-1)),$("div",ea,[t(u,{modelValue:P.value,"onUpdate:modelValue":e[0]||(e[0]=l=>P.value=l),placeholder:"搜索用户名/显示名称",clearable:"",class:"search-input","prefix-icon":m(Re),onKeyup:$e(F,["enter"]),onClear:F},null,8,["modelValue","prefix-icon"]),t(i,{type:"primary",icon:m(Se),onClick:de},{default:n(()=>[...e[17]||(e[17]=[r("新增",-1)])]),_:1},8,["icon"]),t(i,{type:"danger",icon:m(te),onClick:me,disabled:c.value.length===0},{default:n(()=>[r(" 批量删除 "+K(c.value.length>0?`(${c.value.length})`:""),1)]),_:1},8,["icon","disabled"]),t(i,{icon:m(Be),onClick:f},{default:n(()=>[...e[18]||(e[18]=[r("刷新",-1)])]),_:1},8,["icon"])]),ne((v(),C(Ve,{data:L.value,border:"",stripe:"",class:"data-table",onSelectionChange:ce},{default:n(()=>[t(g,{type:"selection",width:"50"}),t(g,{prop:"id",label:"ID",width:"70"}),t(g,{prop:"username",label:"用户名","min-width":"120"}),t(g,{prop:"display_name",label:"显示名称","min-width":"120"}),t(g,{prop:"email",label:"邮箱","min-width":"160"}),t(g,{prop:"phone",label:"手机",width:"130"}),t(g,{label:"状态",width:"90"},{default:n(({row:l})=>[t(Z,{"model-value":l.status===1,onChange:V=>fe(l)},null,8,["model-value","onChange"])]),_:1}),t(g,{label:"操作",width:"360",fixed:"right"},{default:n(({row:l})=>[t(i,{type:"primary",link:"",icon:m(Ie),onClick:V=>re(l)},{default:n(()=>[...e[19]||(e[19]=[r("编辑",-1)])]),_:1},8,["icon","onClick"]),t(i,{type:"warning",link:"",icon:m(Pe),onClick:V=>ge(l)},{default:n(()=>[...e[20]||(e[20]=[r("重置密码",-1)])]),_:1},8,["icon","onClick"]),t(i,{type:"success",link:"",icon:m(Ne),onClick:V=>_e(l)},{default:n(()=>[...e[21]||(e[21]=[r("角色",-1)])]),_:1},8,["icon","onClick"]),t(i,{type:"primary",link:"",icon:m(Ee),onClick:V=>we(l)},{default:n(()=>[...e[22]||(e[22]=[r("部门",-1)])]),_:1},8,["icon","onClick"]),t(i,{type:"danger",link:"",icon:m(te),onClick:V=>ve(l)},{default:n(()=>[...e[23]||(e[23]=[r("删除",-1)])]),_:1},8,["icon","onClick"])]),_:1})]),_:1},8,["data"])),[[le,w.value]]),$("div",aa,[t(he,{"current-page":U.value,"onUpdate:currentPage":e[1]||(e[1]=l=>U.value=l),"page-size":R.value,"onUpdate:pageSize":e[2]||(e[2]=l=>R.value=l),total:A.value,"page-sizes":[5,10,20,50],background:"",layout:"total, sizes, prev, pager, next",onSizeChange:ue,onCurrentChange:ie},null,8,["current-page","page-size","total"])]),t(z,{modelValue:b.value,"onUpdate:modelValue":e[10]||(e[10]=l=>b.value=l),title:y.value?"编辑用户":"新增用户",width:"500px"},{footer:n(()=>[t(i,{onClick:e[9]||(e[9]=l=>b.value=!1)},{default:n(()=>[...e[24]||(e[24]=[r("取消",-1)])]),_:1}),t(i,{type:"primary",loading:w.value,onClick:pe},{default:n(()=>[...e[25]||(e[25]=[r("确定",-1)])]),_:1},8,["loading"])]),default:n(()=>[t(ee,{model:s.value,"label-width":"100px"},{default:n(()=>[t(k,{label:"用户名",required:""},{default:n(()=>[t(u,{modelValue:s.value.username,"onUpdate:modelValue":e[3]||(e[3]=l=>s.value.username=l),disabled:y.value,placeholder:"登录用户名"},null,8,["modelValue","disabled"])]),_:1}),y.value?I("",!0):(v(),C(k,{key:0,label:"密码",required:""},{default:n(()=>[t(u,{modelValue:s.value.password,"onUpdate:modelValue":e[4]||(e[4]=l=>s.value.password=l),type:"password","show-password":"",placeholder:"默认 123456"},null,8,["modelValue"])]),_:1})),t(k,{label:"显示名称",required:""},{default:n(()=>[t(u,{modelValue:s.value.display_name,"onUpdate:modelValue":e[5]||(e[5]=l=>s.value.display_name=l),placeholder:"用于展示的名称"},null,8,["modelValue"])]),_:1}),t(k,{label:"邮箱"},{default:n(()=>[t(u,{modelValue:s.value.email,"onUpdate:modelValue":e[6]||(e[6]=l=>s.value.email=l),placeholder:"电子邮箱"},null,8,["modelValue"])]),_:1}),t(k,{label:"手机号"},{default:n(()=>[t(u,{modelValue:s.value.phone,"onUpdate:modelValue":e[7]||(e[7]=l=>s.value.phone=l),placeholder:"手机号码"},null,8,["modelValue"])]),_:1}),y.value?(v(),C(k,{key:1,label:"状态"},{default:n(()=>[t(Z,{modelValue:s.value.status,"onUpdate:modelValue":e[8]||(e[8]=l=>s.value.status=l),"active-value":1,"inactive-value":0,"active-text":"启用","inactive-text":"禁用"},null,8,["modelValue"])]),_:1})):I("",!0)]),_:1},8,["model"])]),_:1},8,["modelValue","title"]),t(z,{modelValue:x.value,"onUpdate:modelValue":e[13]||(e[13]=l=>x.value=l),title:`重置密码 - ${G.value}`,width:"400px"},{footer:n(()=>[t(i,{onClick:e[12]||(e[12]=l=>x.value=!1)},{default:n(()=>[...e[26]||(e[26]=[r("取消",-1)])]),_:1}),t(i,{type:"primary",onClick:ye},{default:n(()=>[...e[27]||(e[27]=[r("确定",-1)])]),_:1})]),default:n(()=>[t(ee,{"label-width":"100px"},{default:n(()=>[t(k,{label:"新密码",required:""},{default:n(()=>[t(u,{modelValue:B.value,"onUpdate:modelValue":e[11]||(e[11]=l=>B.value=l),type:"password","show-password":""},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue","title"]),t(z,{modelValue:N.value,"onUpdate:modelValue":e[14]||(e[14]=l=>N.value=l),title:`角色分配 - ${H.value}`,width:"500px"},{default:n(()=>[E.value.length>0?(v(),h("div",la,[(v(!0),h(Me,null,qe(E.value,l=>(v(),h("div",{key:l.id,style:{"margin-bottom":"12px"}},[t(Ce,{"model-value":J(l.id),onChange:V=>ke(l)},{default:n(()=>[$("strong",null,K(l.display_name||l.name),1),l.description?(v(),h("span",ta," ("+K(l.description)+") ",1)):I("",!0)]),_:2},1032,["model-value","onChange"])]))),128))])):(v(),C(ae,{key:1,description:"暂无可用角色"}))]),_:1},8,["modelValue","title"]),t(z,{modelValue:D.value,"onUpdate:modelValue":e[16]||(e[16]=l=>D.value=l),title:`分配部门 - ${Q.value}`,width:"500px"},{footer:n(()=>[t(i,{onClick:e[15]||(e[15]=l=>D.value=!1)},{default:n(()=>[...e[28]||(e[28]=[r("取消",-1)])]),_:1}),t(i,{type:"primary",loading:_.value,onClick:be},{default:n(()=>[...e[29]||(e[29]=[r("确定",-1)])]),_:1},8,["loading"])]),default:n(()=>[ne((v(),h("div",null,[q.value.length>0?(v(),C(Ue,{key:0,ref_key:"deptTreeRef",ref:X,data:q.value,props:{label:"name",children:"children"},"show-checkbox":"","node-key":"id","default-checked-keys":W.value,"default-expand-all":""},null,8,["data","default-checked-keys"])):_.value?I("",!0):(v(),C(ae,{key:1,description:"暂无可用部门"}))])),[[le,_.value]])]),_:1},8,["modelValue","title"])])}}}),ua=Ye(na,[["__scopeId","data-v-e4a2cb39"]]);export{ua as default};