Files
geMoldInsight/static/assets/UsersView-DqMm4h9Y.js
T
2026-06-09 15:44:17 +08:00

1 line
5.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{B as e,E as t,F as n,L as r,O as i,P as a,R as o,S as s,_ as c,b as l,c as u,d,h as f,k as p,m,p as h,r as g,s as _,u as v,w as y,y as b}from"./index-Dwzy8ysZ.js";import{r as x}from"./utils-COFIQvWo.js";var S={class:`page-container`},C={class:`page-header`},w={key:0,class:`loading-state`},T={key:1,class:`table-container`},E={class:`data-table`},D={class:`action-buttons`,style:{display:`flex`,gap:`4px`}},O=[`onClick`],k=[`onClick`],A=[`onClick`],j={class:`modal-content`},M={class:`modal-header`},N={class:`modal-body`},P={class:`form-group`},F=[`disabled`],I={class:`form-group`},L={key:0,class:`form-group`},R={class:`form-group`},z={class:`form-group`},B={class:`checkbox-group`,style:{"flex-direction":`column`,gap:`8px`}},V=[`value`],H={class:`modal-footer`},U=y({__name:`UsersView`,setup(y){let U=v(),W=u(),G=W.user,K=n({users:[],roles:[],loading:!0,showUserModal:!1,editingUser:null,userForm:{username:``,email:``,password:``,full_name:``,role_ids:[]}}),q=async()=>{try{K.users=await _(`/api/auth/users`)}catch(e){g(e.message||`加载用户列表失败`,`error`)}finally{K.loading=!1}},J=async()=>{try{K.roles=await _(`/api/auth/roles`)}catch(e){g(e.message||`加载角色列表失败`,`error`)}},Y=(e=null)=>{K.editingUser=e,e?K.userForm={username:e.username,email:e.email,password:``,full_name:e.full_name||``,role_ids:e.roles.map(e=>{let t=K.roles.find(t=>t.code===e);return t?t.id:null}).filter(e=>e!==null)}:K.userForm={username:``,email:``,password:``,full_name:``,role_ids:[]},K.showUserModal=!0},X=async()=>{if(!K.userForm.username||!K.userForm.email){g(`请填写用户名和邮箱`,`error`);return}if(!K.editingUser&&!K.userForm.password){g(`请填写密码`,`error`);return}try{K.editingUser?(await _(`/api/auth/users/${K.editingUser.id}`,{method:`PUT`,body:JSON.stringify({email:K.userForm.email,full_name:K.userForm.full_name||null,role_ids:K.userForm.role_ids})}),g(`用户更新成功`,`success`)):(await _(`/api/auth/users`,{method:`POST`,body:JSON.stringify(K.userForm)}),g(`用户创建成功`,`success`)),K.showUserModal=!1,q()}catch(e){g(e.message||`保存用户失败`,`error`)}},Z=async e=>{if(confirm(`确定要删除用户 ${e.username} 吗?`))try{await _(`/api/auth/users/${e.id}`,{method:`DELETE`}),g(`用户已删除`,`success`),q()}catch(e){g(e.message||`删除用户失败`,`error`)}},Q=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 t(async()=>{if(!W.user?.is_superuser){U.push(`/`);return}await J(),q()}),(t,n)=>(i(),l(`div`,S,[c(`div`,C,[n[9]||=c(`div`,null,[c(`h1`,null,`用户管理`),c(`p`,null,`管理系统用户和权限`)],-1),c(`button`,{class:`btn btn-primary`,onClick:n[0]||=e=>Y()},`+ 添加用户`)]),K.loading?(i(),l(`div`,w,[...n[10]||=[c(`div`,{class:`loading-spinner`},null,-1),c(`span`,null,`加载中...`,-1)]])):(i(),l(`div`,T,[c(`table`,E,[n[11]||=c(`thead`,null,[c(`tr`,null,[c(`th`,null,`用户名`),c(`th`,null,`邮箱`),c(`th`,null,`姓名`),c(`th`,null,`状态`),c(`th`,null,`角色`),c(`th`,null,`注册时间`),c(`th`,null,`操作`)])],-1),c(`tbody`,null,[(i(!0),l(f,null,p(K.users,t=>(i(),l(`tr`,{key:t.id},[c(`td`,null,e(t.username),1),c(`td`,null,e(t.email),1),c(`td`,null,e(t.full_name||`-`),1),c(`td`,null,[c(`span`,{class:o([`badge`,t.is_active?`badge-success`:`badge-error`])},e(t.is_active?`正常`:`禁用`),3)]),c(`td`,null,[(i(!0),l(f,null,p(t.roles,t=>(i(),l(`span`,{key:t,class:`badge badge-info`,style:{"margin-right":`4px`}},e(t),1))),128))]),c(`td`,null,e(r(x)(t.created_at)),1),c(`td`,null,[c(`div`,D,[c(`button`,{class:`btn btn-sm`,style:{background:`var(--primary-500)`,color:`white`},onClick:e=>Y(t)},`编辑`,8,O),c(`button`,{class:`btn btn-sm`,style:{background:`#eab308`,color:`white`},onClick:e=>Q(t)},`重置密码`,8,k),t.id===r(G)?.id?b(``,!0):(i(),l(`button`,{key:0,class:`btn btn-sm`,style:{background:`var(--error)`,color:`white`},onClick:e=>Z(t)},`删除`,8,A))])])]))),128))])])])),K.showUserModal?(i(),l(`div`,{key:2,class:`modal-overlay`,onClick:n[8]||=m(e=>K.showUserModal=!1,[`self`])},[c(`div`,j,[c(`div`,M,[c(`h2`,null,e(K.editingUser?`编辑用户`:`添加用户`),1),c(`button`,{class:`modal-close`,onClick:n[1]||=e=>K.showUserModal=!1},`×`)]),c(`div`,N,[c(`div`,P,[n[12]||=c(`label`,{class:`form-label`},`用户名`,-1),a(c(`input`,{"onUpdate:modelValue":n[2]||=e=>K.userForm.username=e,type:`text`,class:`form-input`,disabled:!!K.editingUser},null,8,F),[[h,K.userForm.username]])]),c(`div`,I,[n[13]||=c(`label`,{class:`form-label`},`邮箱`,-1),a(c(`input`,{"onUpdate:modelValue":n[3]||=e=>K.userForm.email=e,type:`email`,class:`form-input`},null,512),[[h,K.userForm.email]])]),K.editingUser?b(``,!0):(i(),l(`div`,L,[n[14]||=c(`label`,{class:`form-label`},`密码`,-1),a(c(`input`,{"onUpdate:modelValue":n[4]||=e=>K.userForm.password=e,type:`password`,class:`form-input`},null,512),[[h,K.userForm.password]])])),c(`div`,R,[n[15]||=c(`label`,{class:`form-label`},`姓名`,-1),a(c(`input`,{"onUpdate:modelValue":n[5]||=e=>K.userForm.full_name=e,type:`text`,class:`form-input`},null,512),[[h,K.userForm.full_name]])]),c(`div`,z,[n[16]||=c(`label`,{class:`form-label`},`角色`,-1),c(`div`,B,[(i(!0),l(f,null,p(K.roles,t=>(i(),l(`label`,{key:t.id,class:`checkbox-label`},[a(c(`input`,{type:`checkbox`,value:t.id,"onUpdate:modelValue":n[6]||=e=>K.userForm.role_ids=e,class:`checkbox-input`},null,8,V),[[d,K.userForm.role_ids]]),s(` `+e(t.name),1)]))),128))])])]),c(`div`,H,[c(`button`,{class:`btn btn-secondary`,onClick:n[7]||=e=>K.showUserModal=!1},`取消`),c(`button`,{class:`btn btn-primary`,onClick:X},`保存`)])])])):b(``,!0)]))}});export{U as default};