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