2 lines
6.5 KiB
JavaScript
2 lines
6.5 KiB
JavaScript
import{L as Q,d as Y,o as Z,b as ee,e as z,m as a,z as o,p as h,U as ae,s as le,y as T,r,C as i,T as te,g as $,j as p,t as B,V as ne,W as oe,k as se,I as ie,X as E,J as g,_ as ue}from"./index-eVF4AHSu.js";import{n as re}from"./pagination-BgSlm-mj.js";import{p as de,e as me,r as pe}from"./validate-B1skQ9Qw.js";const w=Q();async function ce(s){try{const u=await w.get("/admin/user/list",s);return re(u,y=>y,(s==null?void 0:s.size)??20)}catch(u){return console.warn("[admin/user/list] fallback:",u),{records:[{id:1,username:"admin",nickname:"超级管理员",role:"admin",status:1,createTime:"2024-01-01 00:00:00"}],total:1,current:1,pages:1}}}async function fe(s){return w.postJson("/admin/user/create",s)}async function ve(s,u){await w.putJson(`/admin/user/update/${s}`,u)}async function ge(s){await w.delete(`/admin/user/delete/${s}`)}async function _e(s,u){await w.putJson(`/admin/user/reset-password/${s}`,{})}const we={class:"user-manage"},ye={class:"page-header"},be={class:"pagination-bar"},Ve=Y({__name:"UserManage",setup(s){const u=r(!1),y=r([]),R=r(0),V=r(1),k=r(20),v=r(!1),U=r("新增用户"),c=r(null),C=r(!1),L=r(),l=ie({username:"",nickname:"",email:"",phone:"",role:"editor",status:1,password:""}),D={username:[pe("用户名")],email:[me()],phone:[de()]};async function b(){u.value=!0;try{const n=await ce({page:V.value,size:k.value});y.value=n.records,R.value=n.total}catch(n){console.warn("[UserManage] fetchUserList failed:",n)}finally{u.value=!1}}Z(b);function J(){c.value=null,U.value="新增用户",l.username="",l.nickname="",l.email="",l.phone="",l.role="editor",l.status=1,l.password="",v.value=!0}function N(n){c.value=n.id,U.value="编辑用户",l.username=n.username||"",l.nickname=n.nickname||"",l.email=n.email||"",l.phone=n.phone||"",l.role=n.role||"editor",l.status=n.status??1,l.password="",v.value=!0}async function S(n){try{await E.confirm(`确定删除用户「${n.username}」?`,"确认删除",{type:"warning"}),await ge(n.id),g.success("删除成功"),await b()}catch{}}async function q(n){try{await E.confirm(`确定重置用户「${n.username}」的密码?`,"重置密码",{type:"warning"}),await _e(n.id),g.success("密码已重置")}catch{}}async function I(){var e;if(await((e=L.value)==null?void 0:e.validate().catch(()=>!1))){if(!c.value&&!l.password){g.warning("请填写密码");return}C.value=!0;try{c.value?(await ve(c.value,l),g.success("更新成功")):(await fe(l),g.success("创建成功")),v.value=!1,await b()}catch(d){g.error(d instanceof Error?d.message:"操作失败")}finally{C.value=!1}}}function A(n){return{admin:"管理员",editor:"编辑",viewer:"查看者"}[n]||n}function j(n){return{admin:"danger",editor:"warning",viewer:"info"}[n]||"info"}return(n,e)=>{const d=i("el-button"),m=i("el-table-column"),M=i("el-tag"),W=i("el-table"),X=i("el-pagination"),_=i("el-input"),f=i("el-form-item"),x=i("el-option"),F=i("el-select"),G=i("el-switch"),H=i("el-form"),K=i("el-dialog"),O=te("loading");return $(),ee("div",we,[z("div",ye,[e[12]||(e[12]=z("h2",{class:"page-title"},"用户管理",-1)),a(d,{type:"primary",icon:h(ae),onClick:J},{default:o(()=>[...e[11]||(e[11]=[p("新增用户",-1)])]),_:1},8,["icon"])]),le(($(),T(W,{data:y.value,class:"admin-table"},{default:o(()=>[a(m,{prop:"username",label:"用户名",width:"140"}),a(m,{prop:"nickname",label:"昵称",width:"120"}),a(m,{prop:"email",label:"邮箱",width:"200"}),a(m,{prop:"phone",label:"手机",width:"130"}),a(m,{label:"角色",width:"100"},{default:o(({row:t})=>[a(M,{type:j(t.role),size:"small"},{default:o(()=>[p(B(A(t.role)),1)]),_:2},1032,["type"])]),_:1}),a(m,{label:"状态",width:"80"},{default:o(({row:t})=>[a(M,{type:t.status===1?"success":"info",size:"small"},{default:o(()=>[p(B(t.status===1?"启用":"禁用"),1)]),_:2},1032,["type"])]),_:1}),a(m,{prop:"lastLoginTime",label:"最后登录",width:"160"}),a(m,{label:"操作",width:"220",fixed:"right"},{default:o(({row:t})=>[a(d,{size:"small",icon:h(ne),onClick:P=>N(t),text:""},{default:o(()=>[...e[13]||(e[13]=[p("编辑",-1)])]),_:1},8,["icon","onClick"]),a(d,{size:"small",onClick:P=>q(t),text:""},{default:o(()=>[...e[14]||(e[14]=[p("重置密码",-1)])]),_:1},8,["onClick"]),a(d,{size:"small",icon:h(oe),type:"danger",onClick:P=>S(t),text:""},{default:o(()=>[...e[15]||(e[15]=[p("删除",-1)])]),_:1},8,["icon","onClick"])]),_:1})]),_:1},8,["data"])),[[O,u.value]]),z("div",be,[a(X,{"current-page":V.value,"onUpdate:currentPage":e[0]||(e[0]=t=>V.value=t),"page-size":k.value,"onUpdate:pageSize":e[1]||(e[1]=t=>k.value=t),total:R.value,layout:"total, prev, pager, next",onCurrentChange:b},null,8,["current-page","page-size","total"])]),a(K,{modelValue:v.value,"onUpdate:modelValue":e[10]||(e[10]=t=>v.value=t),title:U.value,width:"560px","destroy-on-close":""},{footer:o(()=>[a(d,{onClick:e[9]||(e[9]=t=>v.value=!1)},{default:o(()=>[...e[16]||(e[16]=[p("取消",-1)])]),_:1}),a(d,{type:"primary",loading:C.value,onClick:I},{default:o(()=>[...e[17]||(e[17]=[p("保存",-1)])]),_:1},8,["loading"])]),default:o(()=>[a(H,{ref_key:"formRef",ref:L,model:l,rules:D,"label-width":"80px"},{default:o(()=>[a(f,{label:"用户名",prop:"username",required:""},{default:o(()=>[a(_,{modelValue:l.username,"onUpdate:modelValue":e[2]||(e[2]=t=>l.username=t),disabled:!!c.value},null,8,["modelValue","disabled"])]),_:1}),c.value?se("",!0):($(),T(f,{key:0,label:"密码",prop:"password",required:""},{default:o(()=>[a(_,{modelValue:l.password,"onUpdate:modelValue":e[3]||(e[3]=t=>l.password=t),type:"password","show-password":""},null,8,["modelValue"])]),_:1})),a(f,{label:"昵称"},{default:o(()=>[a(_,{modelValue:l.nickname,"onUpdate:modelValue":e[4]||(e[4]=t=>l.nickname=t)},null,8,["modelValue"])]),_:1}),a(f,{label:"邮箱",prop:"email"},{default:o(()=>[a(_,{modelValue:l.email,"onUpdate:modelValue":e[5]||(e[5]=t=>l.email=t)},null,8,["modelValue"])]),_:1}),a(f,{label:"手机",prop:"phone"},{default:o(()=>[a(_,{modelValue:l.phone,"onUpdate:modelValue":e[6]||(e[6]=t=>l.phone=t)},null,8,["modelValue"])]),_:1}),a(f,{label:"角色"},{default:o(()=>[a(F,{modelValue:l.role,"onUpdate:modelValue":e[7]||(e[7]=t=>l.role=t),style:{width:"100%"}},{default:o(()=>[a(x,{label:"管理员",value:"admin"}),a(x,{label:"编辑",value:"editor"}),a(x,{label:"查看者",value:"viewer"})]),_:1},8,["modelValue"])]),_:1}),a(f,{label:"状态"},{default:o(()=>[a(G,{modelValue:l.status,"onUpdate:modelValue":e[8]||(e[8]=t=>l.status=t),"active-value":1,"inactive-value":0,"active-text":"启用","inactive-text":"禁用"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])])}}}),xe=ue(Ve,[["__scopeId","data-v-118cf679"]]);export{xe as default};
|