2 lines
11 KiB
JavaScript
2 lines
11 KiB
JavaScript
var be=Object.defineProperty;var Q=Object.getOwnPropertySymbols;var Ve=Object.prototype.hasOwnProperty,ke=Object.prototype.propertyIsEnumerable;var W=(o,r,d)=>r in o?be(o,r,{enumerable:!0,configurable:!0,writable:!0,value:d}):o[r]=d,X=(o,r)=>{for(var d in r||(r={}))Ve.call(r,d)&&W(o,d,r[d]);if(Q)for(var d of Q(r))ke.call(r,d)&&W(o,d,r[d]);return o};var C=(o,r,d)=>new Promise((z,g)=>{var p=c=>{try{m(d.next(c))}catch(k){g(k)}},y=c=>{try{m(d.throw(c))}catch(k){g(k)}},m=c=>c.done?z(c.value):Promise.resolve(c.value).then(p,y);m((d=d.apply(o,r)).next())});import{_ as Ce}from"./_plugin-vue_export-helper-DRcqrMy4.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css */import{v as Pe,j as Ee,y as V,B as q,C as a,D as t,E as T,u as R,Q as u,an as Ue,M as he,z as h,R as x,K as Y,a5 as Z,P as ee,r as f,l as L,c as xe}from"./vue-vendor-81Zqb-7t.js";import{j as Ne,z as Se,e as ze,c as Ie,A as $e,B as Re,C as Le,D as De,F as Me,G as Be,H as Fe,I as qe,J as Te,K as je,k as Ae,d as Ke,L as Oe,E as N,a as Ge}from"./element-plus-CSxUwlOP.js";import{r as S}from"./index-Dua4jQwX.js";import{g as He}from"./roles-DU-i4RQC.js";import{f as ae}from"./format-C9ipKQJf.js";const Je=o=>S.get("/users",{params:o}),Qe=o=>S.post("/users",o),We=(o,r)=>S.put(`/users/${o}`,r),Xe=o=>S.delete(`/users/${o}`),Ye=(o,r)=>S.post(`/users/${o}/reset-password`,{new_password:r}),Ze={class:"user-management"},ea={class:"toolbar-actions"},aa={class:"filter-section"},la={class:"pagination"},ta=Pe({__name:"UserManagement",setup(o){const r=f(!1),d=f([]),z=f([]),g=L({keyword:"",status:""}),p=L({page:1,pageSize:20,total:0}),y=f(!1),m=f(!1),c=xe(()=>m.value?"编辑用户":"新建用户"),k=f(!1),I=f(),i=L({username:"",password:"",realName:"",email:"",phone:"",roleIds:[]}),le={username:[{required:!0,message:"请输入用户名",trigger:"blur"},{min:4,max:50,message:"用户名长度在 4 到 50 个字符",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"},{min:8,message:"密码至少8位",trigger:"blur"}],realName:[{required:!0,message:"请输入真实姓名",trigger:"blur"}],email:[{type:"email",message:"请输入正确的邮箱地址",trigger:"blur"}],phone:[{pattern:/^1[3-9]\d{9}$/,message:"请输入正确的手机号",trigger:"blur"}],roleIds:[{required:!0,message:"请选择角色",trigger:"change",type:"array"}]},U=f(!1),D=f(!1),M=f(),B=f(),w=L({newPassword:"",confirmPassword:""}),te={newPassword:[{required:!0,message:"请输入新密码",trigger:"blur"},{min:8,message:"密码至少8位",trigger:"blur"}],confirmPassword:[{required:!0,validator:(s,e,n)=>{e===""?n(new Error("请再次输入密码")):e!==w.newPassword?n(new Error("两次输入密码不一致")):n()},trigger:"blur"}]},P=()=>C(this,null,function*(){r.value=!0;try{const{data:s}=yield Je(X({page:p.page,page_size:p.pageSize},g));d.value=s.items,p.total=s.total}finally{r.value=!1}}),se=()=>C(this,null,function*(){try{const{data:s}=yield He();z.value=s}catch(s){console.error("获取角色列表失败:",s)}}),F=()=>{p.page=1,P()},oe=()=>{Object.assign(g,{keyword:"",status:""}),F()},j=()=>{P()},re=()=>{m.value=!1,y.value=!0},ne=s=>{var e;m.value=!0,Object.assign(i,{username:s.username,realName:s.realName,email:s.email||"",phone:s.phone||"",roleIds:((e=s.roles)==null?void 0:e.map(n=>n.id))||[]}),y.value=!0},de=()=>C(this,null,function*(){if(I.value){yield I.value.validate(),k.value=!0;try{m.value?N.success("更新成功"):(yield Qe(i),N.success("创建成功")),y.value=!1,P()}finally{k.value=!1}}}),ie=()=>{var s;(s=I.value)==null||s.resetFields(),Object.assign(i,{username:"",password:"",realName:"",email:"",phone:"",roleIds:[]})},ue=s=>{B.value=s.id,w.newPassword="",w.confirmPassword="",U.value=!0},pe=()=>C(this,null,function*(){if(!(!M.value||!B.value)){yield M.value.validate(),D.value=!0;try{yield Ye(B.value,w.newPassword),N.success("密码重置成功"),U.value=!1}finally{D.value=!1}}}),me=s=>C(this,null,function*(){const e=s.status==="active"?"禁用":"启用",n=s.status==="active"?"disabled":"active";try{yield Ge.confirm(`确定要${e}用户 ${s.realName} 吗?`,"提示",{type:"warning"}),yield We(s.id,{status:n}),N.success(`${e}成功`),P()}catch(A){}}),fe=s=>C(this,null,function*(){try{yield Xe(s),N.success("删除成功"),P()}catch(e){console.error("删除失败:",e)}}),ge=s=>({active:"success",disabled:"danger",locked:"warning"})[s]||"",ce=s=>({active:"正常",disabled:"禁用",locked:"锁定"})[s]||s;return Ee(()=>{P(),se()}),(s,e)=>{const n=Ne,A=Ie,_=ze,$=Le,K=Re,O=De,v=Be,G=Fe,we=qe,ve=Me,ye=je,b=Ke,H=Ae,J=Oe,_e=Te;return V(),q("div",Ze,[a(O,{class:"toolbar"},{default:t(()=>[T("div",ea,[a(n,{type:"primary",icon:R(Se),onClick:re},{default:t(()=>[...e[16]||(e[16]=[u(" 新建用户 ",-1)])]),_:1},8,["icon"])]),T("div",aa,[a(_,{modelValue:g.keyword,"onUpdate:modelValue":e[0]||(e[0]=l=>g.keyword=l),placeholder:"搜索用户名/姓名/手机号",clearable:"",style:{width:"250px"},onKeyup:Ue(F,["enter"])},{prefix:t(()=>[a(A,null,{default:t(()=>[a(R($e))]),_:1})]),_:1},8,["modelValue"]),a(K,{modelValue:g.status,"onUpdate:modelValue":e[1]||(e[1]=l=>g.status=l),placeholder:"用户状态",clearable:"",style:{width:"150px"}},{default:t(()=>[a($,{label:"正常",value:"active"}),a($,{label:"禁用",value:"disabled"}),a($,{label:"锁定",value:"locked"})]),_:1},8,["modelValue"]),a(n,{type:"primary",onClick:F},{default:t(()=>[...e[17]||(e[17]=[u(" 搜索 ",-1)])]),_:1}),a(n,{onClick:oe},{default:t(()=>[...e[18]||(e[18]=[u(" 重置 ",-1)])]),_:1})])]),_:1}),a(O,{class:"table-card"},{default:t(()=>[he((V(),h(ve,{data:d.value,border:"",stripe:""},{default:t(()=>[a(v,{prop:"username",label:"用户名",width:"150"}),a(v,{prop:"realName",label:"真实姓名",width:"150"}),a(v,{prop:"email",label:"邮箱","min-width":"200"}),a(v,{prop:"phone",label:"手机号",width:"130"}),a(v,{prop:"status",label:"状态",width:"100"},{default:t(({row:l})=>[a(G,{type:ge(l.status)},{default:t(()=>[u(x(ce(l.status)),1)]),_:2},1032,["type"])]),_:1}),a(v,{label:"角色",width:"200"},{default:t(({row:l})=>[(V(!0),q(Y,null,Z(l.roles,E=>(V(),h(G,{key:E.id,type:"info",size:"small",style:{"margin-right":"5px"}},{default:t(()=>[u(x(E.roleName),1)]),_:2},1024))),128))]),_:1}),a(v,{prop:"lastLoginAt",label:"最后登录",width:"180"},{default:t(({row:l})=>[u(x(R(ae)(l.lastLoginAt)),1)]),_:1}),a(v,{prop:"createdAt",label:"创建时间",width:"180"},{default:t(({row:l})=>[u(x(R(ae)(l.createdAt)),1)]),_:1}),a(v,{label:"操作",width:"300",fixed:"right"},{default:t(({row:l})=>[a(n,{link:"",type:"primary",onClick:E=>ne(l)},{default:t(()=>[...e[19]||(e[19]=[u(" 编辑 ",-1)])]),_:1},8,["onClick"]),a(n,{link:"",type:"warning",onClick:E=>ue(l)},{default:t(()=>[...e[20]||(e[20]=[u(" 重置密码 ",-1)])]),_:1},8,["onClick"]),a(n,{link:"",type:l.status==="active"?"danger":"success",onClick:E=>me(l)},{default:t(()=>[u(x(l.status==="active"?"禁用":"启用"),1)]),_:2},1032,["type","onClick"]),a(we,{title:"确定删除该用户吗?",onConfirm:E=>fe(l.id)},{reference:t(()=>[a(n,{link:"",type:"danger"},{default:t(()=>[...e[21]||(e[21]=[u("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:1})]),_:1},8,["data"])),[[_e,r.value]]),T("div",la,[a(ye,{"current-page":p.page,"onUpdate:currentPage":e[2]||(e[2]=l=>p.page=l),"page-size":p.pageSize,"onUpdate:pageSize":e[3]||(e[3]=l=>p.pageSize=l),total:p.total,"page-sizes":[10,20,50,100],layout:"total, sizes, prev, pager, next, jumper",onSizeChange:j,onCurrentChange:j},null,8,["current-page","page-size","total"])])]),_:1}),a(J,{modelValue:y.value,"onUpdate:modelValue":e[11]||(e[11]=l=>y.value=l),title:c.value,width:"600px",onClosed:ie},{footer:t(()=>[a(n,{onClick:e[10]||(e[10]=l=>y.value=!1)},{default:t(()=>[...e[22]||(e[22]=[u("取消",-1)])]),_:1}),a(n,{type:"primary",loading:k.value,onClick:de},{default:t(()=>[...e[23]||(e[23]=[u(" 确定 ",-1)])]),_:1},8,["loading"])]),default:t(()=>[a(H,{ref_key:"formRef",ref:I,model:i,rules:le,"label-width":"100px"},{default:t(()=>[m.value?ee("",!0):(V(),h(b,{key:0,label:"用户名",prop:"username"},{default:t(()=>[a(_,{modelValue:i.username,"onUpdate:modelValue":e[4]||(e[4]=l=>i.username=l),placeholder:"请输入用户名",disabled:m.value},null,8,["modelValue","disabled"])]),_:1})),m.value?ee("",!0):(V(),h(b,{key:1,label:"密码",prop:"password"},{default:t(()=>[a(_,{modelValue:i.password,"onUpdate:modelValue":e[5]||(e[5]=l=>i.password=l),type:"password",placeholder:"请输入密码","show-password":""},null,8,["modelValue"])]),_:1})),a(b,{label:"真实姓名",prop:"realName"},{default:t(()=>[a(_,{modelValue:i.realName,"onUpdate:modelValue":e[6]||(e[6]=l=>i.realName=l),placeholder:"请输入真实姓名"},null,8,["modelValue"])]),_:1}),a(b,{label:"邮箱",prop:"email"},{default:t(()=>[a(_,{modelValue:i.email,"onUpdate:modelValue":e[7]||(e[7]=l=>i.email=l),placeholder:"请输入邮箱"},null,8,["modelValue"])]),_:1}),a(b,{label:"手机号",prop:"phone"},{default:t(()=>[a(_,{modelValue:i.phone,"onUpdate:modelValue":e[8]||(e[8]=l=>i.phone=l),placeholder:"请输入手机号"},null,8,["modelValue"])]),_:1}),a(b,{label:"角色",prop:"roleIds"},{default:t(()=>[a(K,{modelValue:i.roleIds,"onUpdate:modelValue":e[9]||(e[9]=l=>i.roleIds=l),placeholder:"请选择角色",multiple:"",style:{width:"100%"}},{default:t(()=>[(V(!0),q(Y,null,Z(z.value,l=>(V(),h($,{key:l.id,label:l.roleName,value:l.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"]),a(J,{modelValue:U.value,"onUpdate:modelValue":e[15]||(e[15]=l=>U.value=l),title:"重置密码",width:"500px"},{footer:t(()=>[a(n,{onClick:e[14]||(e[14]=l=>U.value=!1)},{default:t(()=>[...e[24]||(e[24]=[u("取消",-1)])]),_:1}),a(n,{type:"primary",loading:D.value,onClick:pe},{default:t(()=>[...e[25]||(e[25]=[u(" 确定 ",-1)])]),_:1},8,["loading"])]),default:t(()=>[a(H,{ref_key:"resetPasswordFormRef",ref:M,model:w,rules:te,"label-width":"100px"},{default:t(()=>[a(b,{label:"新密码",prop:"newPassword"},{default:t(()=>[a(_,{modelValue:w.newPassword,"onUpdate:modelValue":e[12]||(e[12]=l=>w.newPassword=l),type:"password",placeholder:"请输入新密码","show-password":""},null,8,["modelValue"])]),_:1}),a(b,{label:"确认密码",prop:"confirmPassword"},{default:t(()=>[a(_,{modelValue:w.confirmPassword,"onUpdate:modelValue":e[13]||(e[13]=l=>w.confirmPassword=l),type:"password",placeholder:"请再次输入新密码","show-password":""},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"])])}}}),Ua=Ce(ta,[["__scopeId","data-v-920c220f"]]);export{Ua as default};
|