1 line
5.8 KiB
JavaScript
1 line
5.8 KiB
JavaScript
|
|
import{A as e,D as t,E as n,L as r,M as i,O as a,P as o,S as s,_ as c,b as l,c as u,d,g as f,h as p,j as m,p as h,r as g,s as _,t as v,u as y,v as b,w as x,x as S}from"./index-CpL0XiXx.js";import{r as C}from"./utils-COFIQvWo.js";var w={class:`page-container`},T={class:`page-header`},E={style:{display:`flex`,"flex-direction":`column`,gap:`8px`}},D=[`value`],O=s({__name:`UsersView`,setup(s){let O=y(),k=u(),A=k.user,j=i({users:[],roles:[],loading:!0,showUserModal:!1,editingUser:null,userForm:{username:``,email:``,password:``,full_name:``,role_ids:[]}});function M(e,t,n,r,i){return new Promise(a=>{let o=v.confirm({header:e,body:t,theme:n,confirmBtn:r,cancelBtn:i,onConfirm:()=>{o.hide(),a(!0)},onCancel:()=>{o.hide(),a(!1)},onClose:()=>{a(!1)}})})}let N=async()=>{try{j.users=await _(`/api/auth/users`)}catch(e){g(e.message||`加载用户列表失败`,`error`)}finally{j.loading=!1}},P=async()=>{try{j.roles=await _(`/api/auth/roles`)}catch(e){g(e.message||`加载角色列表失败`,`error`)}},F=(e=null)=>{j.editingUser=e,e?j.userForm={username:e.username,email:e.email,password:``,full_name:e.full_name||``,role_ids:e.roles.map(e=>{let t=j.roles.find(t=>t.code===e);return t?t.id:null}).filter(e=>e!==null)}:j.userForm={username:``,email:``,password:``,full_name:``,role_ids:[]},j.showUserModal=!0},I=async()=>{if(!j.userForm.username||!j.userForm.email){g(`请填写用户名和邮箱`,`error`);return}if(!j.editingUser&&!j.userForm.password){g(`请填写密码`,`error`);return}try{j.editingUser?(await _(`/api/auth/users/${j.editingUser.id}`,{method:`PUT`,body:JSON.stringify({email:j.userForm.email,full_name:j.userForm.full_name||null,role_ids:j.userForm.role_ids})}),g(`用户更新成功`,`success`)):(await _(`/api/auth/users`,{method:`POST`,body:JSON.stringify(j.userForm)}),g(`用户创建成功`,`success`)),j.showUserModal=!1,N()}catch(e){g(e.message||`保存用户失败`,`error`)}},L=async e=>{if(await M(`删除确认`,`确定要删除用户 ${e.username} 吗?`,`warning`,`删除`,`取消`))try{await _(`/api/auth/users/${e.id}`,{method:`DELETE`}),g(`用户已删除`,`success`),N()}catch(e){g(e.message||`删除用户失败`,`error`)}},R=async e=>{let t=prompt(`请输入 ${e.username} 的新密码:`);if(!t||t.length<6){g(`密码长度至少6位`,`error`);return}try{await _(`/api/auth/users/${e.id}/reset-password`,{method:`PUT`,body:JSON.stringify(t)}),g(`密码已重置`,`success`)}catch(e){g(e.message||`重置密码失败`,`error`)}};return x(async()=>{if(!k.user?.is_superuser){O.push(`/`);return}await P(),N()}),(i,s)=>{let u=a(`t-button`),g=a(`t-table-column`),_=a(`t-tag`),v=a(`t-space`),y=a(`t-table`),x=a(`t-empty`),O=a(`t-loading`),k=a(`t-input`),M=a(`t-form-item`),N=a(`t-form`),P=a(`t-dialog`);return n(),b(`div`,w,[p(`div`,T,[s[9]||=p(`div`,null,[p(`h1`,null,`用户管理`),p(`p`,null,`管理系统用户和权限`)],-1),S(u,{theme:`primary`,onClick:s[0]||=e=>F()},{default:e(()=>[...s[8]||=[l(`+ 添加用户`,-1)]]),_:1})]),S(O,{loading:j.loading,size:`large`},{default:e(()=>[S(y,{data:j.users,"row-key":`id`,stripe:``},{default:e(()=>[S(g,{colKey:`username`,title:`用户名`}),S(g,{colKey:`email`,title:`邮箱`}),S(g,{colKey:`full_name`,title:`姓名`},{cell:e(({row:e})=>[l(r(e.full_name||`-`),1)]),_:1}),S(g,{colKey:`is_active`,title:`状态`},{cell:e(({row:t})=>[S(_,{theme:t.is_active?`success`:`danger`},{default:e(()=>[l(r(t.is_active?`正常`:`禁用`),1)]),_:2},1032,[`theme`])]),_:1}),S(g,{colKey:`roles`,title:`角色`},{cell:e(({row:i})=>[(n(!0),b(h,null,t(i.roles,t=>(n(),f(_,{key:t,theme:`primary`,variant:`light`,style:{"margin-right":`4px`}},{default:e(()=>[l(r(t),1)]),_:2},1024))),128))]),_:1}),S(g,{colKey:`created_at`,title:`注册时间`},{cell:e(({row:e})=>[l(r(o(C)(e.created_at)),1)]),_:1}),S(g,{colKey:`actions`,title:`操作`},{cell:e(({row:t})=>[S(v,{size:4},{default:e(()=>[S(u,{theme:`primary`,size:`small`,onClick:e=>F(t)},{default:e(()=>[...s[10]||=[l(`编辑`,-1)]]),_:1},8,[`onClick`]),S(u,{theme:`warning`,size:`small`,onClick:e=>R(t)},{default:e(()=>[...s[11]||=[l(`重置密码`,-1)]]),_:1},8,[`onClick`]),t.i
|