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.id===o(A)?.id?c(``,!0):(n(),f(u,{key:0,theme:`danger`,size:`small`,onClick:e=>L(t)},{default:e(()=>[...s[12]||=[l(`删除`,-1)]]),_:1},8,[`onClick`]))]),_:2},1024)]),_:1})]),_:1},8,[`data`]),!j.loading&&j.users.length===0?(n(),f(x,{key:0,description:`暂无用户数据`})):c(``,!0)]),_:1},8,[`loading`]),S(P,{visible:j.showUserModal,"onUpdate:visible":s[7]||=e=>j.showUserModal=e,header:j.editingUser?`编辑用户`:`添加用户`,"close-on-overlay-click":!0,width:`520px`},{footer:e(()=>[S(u,{theme:`default`,onClick:s[6]||=e=>j.showUserModal=!1},{default:e(()=>[...s[13]||=[l(`取消`,-1)]]),_:1}),S(u,{theme:`primary`,onClick:I},{default:e(()=>[...s[14]||=[l(`保存`,-1)]]),_:1})]),default:e(()=>[S(N,{"label-width":`80px`},{default:e(()=>[S(M,{label:`用户名`},{default:e(()=>[S(k,{modelValue:j.userForm.username,"onUpdate:modelValue":s[1]||=e=>j.userForm.username=e,disabled:!!j.editingUser},null,8,[`modelValue`,`disabled`])]),_:1}),S(M,{label:`邮箱`},{default:e(()=>[S(k,{modelValue:j.userForm.email,"onUpdate:modelValue":s[2]||=e=>j.userForm.email=e,type:`email`},null,8,[`modelValue`])]),_:1}),j.editingUser?c(``,!0):(n(),f(M,{key:0,label:`密码`},{default:e(()=>[S(k,{modelValue:j.userForm.password,"onUpdate:modelValue":s[3]||=e=>j.userForm.password=e,type:`password`},null,8,[`modelValue`])]),_:1})),S(M,{label:`姓名`},{default:e(()=>[S(k,{modelValue:j.userForm.full_name,"onUpdate:modelValue":s[4]||=e=>j.userForm.full_name=e},null,8,[`modelValue`])]),_:1}),S(M,{label:`角色`},{default:e(()=>[p(`div`,E,[(n(!0),b(h,null,t(j.roles,e=>(n(),b(`label`,{key:e.id,style:{display:`flex`,"align-items":`center`,gap:`6px`,cursor:`pointer`}},[m(p(`input`,{type:`checkbox`,value:e.id,"onUpdate:modelValue":s[5]||=e=>j.userForm.role_ids=e},null,8,D),[[d,j.userForm.role_ids]]),l(` `+r(e.name),1)]))),128))])]),_:1})]),_:1})]),_:1},8,[`visible`,`header`])])}}});export{O as default};