2 lines
5.6 KiB
JavaScript
2 lines
5.6 KiB
JavaScript
import{q as z,s as F,r as m,g as f,o as $,n as M,w as n,h as v,t as E,B,_ as G,u as H,j as J,E as g,c as Q,a as h,b as t,l as W,m as S,e as X,p as Y}from"./index-BKY3gHB2.js";import{_ as Z}from"./BaseTable-BUsuzGI9.js";import{_ as ee}from"./DeleteConfirm-D3Hh604n.js";const A={getAll(i={}){return z.get("/users",{params:i})},create(i){return z.post("/users",i)},update(i,l){return z.put(`/users/${i}`,l)},delete(i){return z.delete(`/users/${i}`)}},te=F("users",()=>{const i=m([]),l=m(!1),u=m({currentPage:1,pageSize:20,total:0,totalPages:0});async function d(r=1,p=""){var c,o;l.value=!0;try{const V=u.value.pageSize,P=(r-1)*V,C=await A.getAll({limit:V,offset:P,search:p});i.value=((c=C.data)==null?void 0:c.items)||C.data||[],u.value.total=((o=C.data)==null?void 0:o.total)||0,u.value.currentPage=r,u.value.totalPages=Math.ceil(u.value.total/V)||1}finally{l.value=!1}}async function w(r){const p=await A.create(r);return await d(1),p}async function y(r,p){const c=await A.update(r,p);return await d(u.value.currentPage),c}async function _(r){const p=await A.delete(r);return await d(u.value.currentPage),p}return{users:i,loading:l,page:u,fetchUsers:d,createUser:w,updateUser:y,deleteUser:_}}),ae={__name:"RoleBadge",props:{role:{type:String,required:!0}},setup(i){const l=i,u=B(()=>l.role==="admin"?"danger":"info"),d=B(()=>l.role==="admin"?"管理员":"普通用户");return(w,y)=>{const _=f("el-tag");return $(),M(_,{type:u.value,size:"small"},{default:n(()=>[v(E(d.value),1)]),_:1},8,["type"])}}},le={class:"users-page"},ne={class:"page-header"},oe={class:"search-bar"},se={__name:"Users",setup(i){const l=te(),u=H(),d=m(!1),w=m(!1),y=m("新增用户"),_=m(!1),r=m(null),p=m(null),c=m(""),o=Y({username:"",password:"",role:"user",description:""});J(()=>{if(!u.isAdmin){g.warning("无权限访问");return}l.fetchUsers()});function V(){l.fetchUsers(1,c.value)}function P(s){l.fetchUsers(s,c.value)}function C(){if(!u.isAdmin){g.warning("无权限访问");return}r.value=null,y.value="新增用户",Object.assign(o,{username:"",password:"",role:"user",description:""}),d.value=!0}function I(s){if(!u.isAdmin){g.warning("无权限访问");return}r.value=s.id,y.value="编辑用户",Object.assign(o,{username:s.username,password:"",role:s.role,description:s.description||""}),d.value=!0}async function N(){if(!o.username.trim()){g.warning("请输入用户名");return}if(!r.value&&!o.password.trim()){g.warning("请输入密码");return}_.value=!0;try{const s={...o};s.password||delete s.password,r.value?await l.updateUser(r.value,s):await l.createUser(s),g.success("保存成功"),d.value=!1}finally{_.value=!1}}function j(s){if(!u.isAdmin){g.warning("无权限访问");return}p.value=s,w.value=!0}async function q(){await l.deleteUser(p.value),g.success("删除成功")}function K(s){return s?new Date(s).toLocaleString("zh-CN"):"-"}return(s,e)=>{const b=f("el-button"),k=f("el-input"),U=f("el-table-column"),x=f("el-form-item"),D=f("el-option"),T=f("el-select"),L=f("el-form"),O=f("el-dialog");return $(),Q("div",le,[h("div",ne,[e[9]||(e[9]=h("h2",null,"用户管理",-1)),t(b,{type:"primary",onClick:C},{default:n(()=>[...e[8]||(e[8]=[v("新增用户",-1)])]),_:1})]),h("div",oe,[t(k,{modelValue:c.value,"onUpdate:modelValue":e[0]||(e[0]=a=>c.value=a),placeholder:"搜索用户名",onKeyup:W(V,["enter"]),style:{width:"210px"}},null,8,["modelValue"]),t(b,{onClick:V},{default:n(()=>[...e[10]||(e[10]=[v("搜索",-1)])]),_:1})]),t(Z,{data:S(l).users,loading:S(l).loading,"current-page":S(l).page.currentPage,"page-size":S(l).page.pageSize,total:S(l).page.total,onPageChange:P},{default:n(()=>[t(U,{type:"index",label:"ID",width:"60"}),t(U,{prop:"username",label:"用户名"}),t(U,{prop:"role",label:"角色"},{default:n(({row:a})=>[t(ae,{role:a.role},null,8,["role"])]),_:1}),t(U,{prop:"description",label:"描述"}),t(U,{prop:"created_at",label:"创建时间",width:"160"},{default:n(({row:a})=>[v(E(K(a.created_at)),1)]),_:1}),t(U,{label:"操作",width:"150",fixed:"right"},{default:n(({row:a})=>[t(b,{size:"small",type:"primary",onClick:R=>I(a)},{default:n(()=>[...e[11]||(e[11]=[v("编辑",-1)])]),_:1},8,["onClick"]),t(b,{size:"small",type:"danger",onClick:R=>j(a.id)},{default:n(()=>[...e[12]||(e[12]=[v("删除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data","loading","current-page","page-size","total"]),t(O,{modelValue:d.value,"onUpdate:modelValue":e[6]||(e[6]=a=>d.value=a),title:y.value,width:"400px"},{footer:n(()=>[t(b,{onClick:e[5]||(e[5]=a=>d.value=!1)},{default:n(()=>[...e[13]||(e[13]=[v("取消",-1)])]),_:1}),t(b,{type:"primary",onClick:N,loading:_.value},{default:n(()=>[...e[14]||(e[14]=[v("保存",-1)])]),_:1},8,["loading"])]),default:n(()=>[t(L,{model:o,"label-width":"80px"},{default:n(()=>[t(x,{label:"用户名"},{default:n(()=>[t(k,{modelValue:o.username,"onUpdate:modelValue":e[1]||(e[1]=a=>o.username=a),readonly:!!r.value},null,8,["modelValue","readonly"])]),_:1}),r.value?X("",!0):($(),M(x,{key:0,label:"密码"},{default:n(()=>[t(k,{modelValue:o.password,"onUpdate:modelValue":e[2]||(e[2]=a=>o.password=a),type:"password"},null,8,["modelValue"])]),_:1})),t(x,{label:"角色"},{default:n(()=>[t(T,{modelValue:o.role,"onUpdate:modelValue":e[3]||(e[3]=a=>o.role=a),style:{width:"100%"}},{default:n(()=>[t(D,{label:"管理员",value:"admin"}),t(D,{label:"普通用户",value:"user"})]),_:1},8,["modelValue"])]),_:1}),t(x,{label:"描述"},{default:n(()=>[t(k,{modelValue:o.description,"onUpdate:modelValue":e[4]||(e[4]=a=>o.description=a),type:"textarea",rows:"3"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"]),t(ee,{modelValue:w.value,"onUpdate:modelValue":e[7]||(e[7]=a=>w.value=a),onConfirm:q},null,8,["modelValue"])])}}},de=G(se,[["__scopeId","data-v-6b73a1be"]]);export{de as default};
|