You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
5.4 KiB

import{n as e}from"./axios-Cze8nXLL.js";import{At as t,I as n,N as r,V as i,X as a,_ as o,at as s,d as c,dt as l,i as u,l as d,p as f,rt as p,v as m,y as h,z as g}from"./runtime-core.esm-bundler-CP0MNZrl.js";import{n as _}from"./index-DkGXihWe.js";import{t as v}from"./listTable-DKAruyoN.js";var y=h({__name:`Admins`,setup(h){let y=s(!1),b=s([]),x=s([]),S=s(!1),C=s(null),w=p({username:``,name:``,email:``,password:``,role:`venue_admin`,is_active:!0,venue_ids:[]}),T={maxHeight:`70vh`,overflow:`auto`},E=d(()=>C.value!==null);function D(){C.value=null,w.username=``,w.name=``,w.email=``,w.password=``,w.role=`venue_admin`,w.is_active=!0,w.venue_ids=[]}async function O(){y.value=!0;try{let[e,t]=await Promise.all([_.get(`/admin-users`),_.get(`/venues`)]);b.value=e.data,x.value=t.data}catch(t){e.error(t?.response?.data?.message??`加载失败`)}finally{y.value=!1}}function k(){D(),S.value=!0}function A(e){C.value=e.id,w.username=e.username,w.name=e.name,w.email=e.email??``,w.password=``,w.role=e.role,w.is_active=e.is_active,w.venue_ids=e.venues.map(e=>e.id),S.value=!0}async function j(){try{return E.value?(await _.put(`/admin-users/${C.value}`,{name:w.name,email:w.email.trim()||void 0,password:w.password||void 0,role:w.role,is_active:w.is_active,venue_ids:w.venue_ids}),e.success(`更新管理员成功`)):(await _.post(`/admin-users`,{username:w.username,name:w.name,email:w.email.trim()||void 0,password:w.password,role:w.role,is_active:w.is_active,venue_ids:w.venue_ids}),e.success(`创建管理员成功`)),S.value=!1,await O(),!0}catch(t){return e.error(t?.response?.data?.message??`保存失败`),!1}}function M(e){return e?.length?e.map(e=>e.name).join(``):`-`}return r(O),(e,r)=>{let s=i(`a-button`),d=i(`a-space`),p=i(`a-alert`),h=i(`a-table-column`),_=i(`a-tag`),C=i(`a-table`),D=i(`a-card`),N=i(`a-input`),P=i(`a-form-item`),F=i(`a-input-password`),I=i(`a-option`),L=i(`a-select`),R=i(`a-switch`),z=i(`a-form`),B=i(`a-modal`);return n(),f(u,null,[m(D,{title:`用户与权限 / 管理员账号`},{extra:a(()=>[m(d,null,{default:a(()=>[m(s,{onClick:O},{default:a(()=>[...r[9]||=[o(`刷新`,-1)]]),_:1}),m(s,{type:`primary`,onClick:k},{default:a(()=>[...r[10]||=[o(`新建管理员`,-1)]]),_:1})]),_:1})]),default:a(()=>[m(p,{style:{"margin-bottom":`12px`}},{default:a(()=>[...r[11]||=[o(` 场馆管理员可绑定多个场馆;后续将用于限制“仅查看/编辑自己的场馆”及“仅核销自己场馆预约二维码”。 `,-1)]]),_:1}),m(C,{class:`list-data-table`,scroll:{x:l(v)},data:b.value,loading:y.value,"row-key":`id`,pagination:{pageSize:10}},{columns:a(()=>[m(h,{title:`ID`,"data-index":`id`,width:80,ellipsis:!0,tooltip:!0}),m(h,{title:`用户名`,"data-index":`username`,width:140,"min-width":120,ellipsis:!0,tooltip:!0}),m(h,{title:`姓名`,"data-index":`name`,width:120,ellipsis:!0,tooltip:!0}),m(h,{title:`角色`,width:130},{cell:a(({record:e})=>[m(_,{color:e.role===`super_admin`?`arcoblue`:`orangered`},{default:a(()=>[o(t(e.role===`super_admin`?`超级管理员`:`场馆管理员`),1)]),_:2},1032,[`color`])]),_:1}),m(h,{title:`绑定场馆`,width:220,"min-width":160,ellipsis:!0,tooltip:!0},{cell:a(({record:e})=>[o(t(M(e.venues)),1)]),_:1}),m(h,{title:`状态`,width:100},{cell:a(({record:e})=>[m(_,{color:e.is_active?`green`:`gray`},{default:a(()=>[o(t(e.is_active?`启用`:`禁用`),1)]),_:2},1032,[`color`])]),_:1}),m(h,{title:`操作`,width:120,fixed:`right`,align:`center`},{cell:a(({record:e})=>[m(s,{type:`text`,onClick:t=>A(e)},{default:a(()=>[...r[12]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`scroll`,`data`,`loading`])]),_:1}),m(B,{visible:S.value,"onUpdate:visible":r[7]||=e=>S.value=e,title:E.value?`编辑管理员`:`新建管理员`,width:`70%`,"body-style":T,"on-before-ok":j,onCancel:r[8]||=e=>S.value=!1},{default:a(()=>[m(z,{model:w,layout:`vertical`,class:`admin-modal-form`},{default:a(()=>[m(P,{label:`用户名`,required:``},{default:a(()=>[m(N,{modelValue:w.username,"onUpdate:modelValue":r[0]||=e=>w.username=e,disabled:E.value},null,8,[`modelValue`,`disabled`])]),_:1}),m(P,{label:`姓名`,required:``},{default:a(()=>[m(N,{modelValue:w.name,"onUpdate:modelValue":r[1]||=e=>w.name=e},null,8,[`modelValue`])]),_:1}),m(P,{label:`邮箱(选填)`},{default:a(()=>[m(N,{modelValue:w.email,"onUpdate:modelValue":r[2]||=e=>w.email=e,placeholder:`可留空`},null,8,[`modelValue`])]),_:1}),m(P,{label:E.value?`密码(留空不修改)`:`密码`,required:!E.value},{default:a(()=>[m(F,{modelValue:w.password,"onUpdate:modelValue":r[3]||=e=>w.password=e},null,8,[`modelValue`])]),_:1},8,[`label`,`required`]),m(P,{label:`角色`,required:``},{default:a(()=>[m(L,{modelValue:w.role,"onUpdate:modelValue":r[4]||=e=>w.role=e},{default:a(()=>[m(I,{value:`super_admin`},{default:a(()=>[...r[13]||=[o(`超级管理员`,-1)]]),_:1}),m(I,{value:`venue_admin`},{default:a(()=>[...r[14]||=[o(`场馆管理员`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),_:1}),m(P,{label:`绑定场馆`,class:`admin-modal-form__full`},{default:a(()=>[m(L,{modelValue:w.venue_ids,"onUpdate:modelValue":r[5]||=e=>w.venue_ids=e,multiple:``,"allow-clear":``},{default:a(()=>[(n(!0),f(u,null,g(x.value,e=>(n(),c(I,{key:e.id,value:e.id},{default:a(()=>[o(t(e.name),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`modelValue`])]),_:1}),m(P,{label:`状态`},{default:a(()=>[m(R,{modelValue:w.is_active,"onUpdate:modelValue":r[6]||=e=>w.is_active=e},null,8,[`modelValue`])]),_:1})]),_:1},8,[`model`])]),_:1},8,[`visible`,`title`])],64)}}});export{y as default};