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
6.3 KiB

4 weeks ago
import{C as e,D as t,O as n,Q as r,S as i,T as a,W as o,Z as s,_t as c,ct as l,ht as u,in as d,k as f,m as p,q as m,st as h}from"./vue.runtime.esm-bundler-CACvpnko.js";import{h as g,m as _,s as v}from"./index-D5exsJys.js";import{t as y}from"./_plugin-vue_export-helper-CXTkFu_Z.js";function b(e){if(!e||typeof e!=`object`)throw Error(`列表响应格式无效`);let t=e;if(Array.isArray(t.data)&&typeof t.current_page==`number`)return{data:t.data,meta:{current_page:t.current_page,last_page:typeof t.last_page==`number`?t.last_page:1,per_page:typeof t.per_page==`number`?t.per_page:t.data.length||15,total:typeof t.total==`number`?t.total:t.data.length}};throw Error(`列表响应格式无效`)}async function x(e){let{data:t}=await v.get(`/admin-users`,{params:e});return b(t)}async function S(e){let{data:t}=await v.post(`/admin-users`,e);return t}async function C(e,t){let{data:n}=await v.patch(`/admin-users/${e}`,t);return n}async function w(e){await v.post(`/admin-users/${e}/delete`)}var T={class:`toolbar`},E={class:`table-pagination`},D=y(f({__name:`AdminUserManageView`,setup(f){let v=c(!1),y=c([]),b=u({page:1,perPage:15,total:0}),D=c(``),O=c(!1),k=c(`create`),A=c(!1),j=c(null),M=c(),N=u({username:``,name:``,mobile:``,password:``,status:`active`}),P={username:[{required:!0,message:`请填写账号`,trigger:`blur`}],name:[{required:!0,message:`请填写姓名`,trigger:`blur`}],password:[{validator:(e,t,n)=>{if(k.value===`create`&&!String(t||``).trim()){n(Error(`请填写密码`));return}n()},trigger:`blur`}]};async function F(e=b.page){v.value=!0,b.page=e;try{let e=await x({page:b.page,per_page:b.perPage,keyword:D.value.trim()||void 0});y.value=e.data,b.total=e.meta.total}finally{v.value=!1}}function I(){k.value=`create`,j.value=null,N.username=``,N.name=``,N.mobile=``,N.password=``,N.status=`active`,O.value=!0}function L(e){k.value=`edit`,j.value=e.id,N.username=e.username,N.name=e.name,N.mobile=e.mobile??``,N.password=``,N.status=e.status,O.value=!0}async function R(){if(await M.value?.validate().catch(()=>!1)){A.value=!0;try{let e={username:N.username.trim(),name:N.name.trim(),mobile:N.mobile?.trim()||null,status:N.status};N.password?.trim()&&(e.password=N.password.trim()),k.value===`create`?(await S({...e,password:(N.password??``).trim()}),g.success(`已创建`)):j.value&&(await C(j.value,e),g.success(`已保存`)),O.value=!1,await F(b.page)}catch(e){g.error(e instanceof Error?e.message:`保存失败`)}finally{A.value=!1}}}async function z(e){try{await _.confirm(`确定删除管理员「${e.name}」吗?`,`确认删除`,{type:`warning`}),await w(e.id),g.success(`已删除`),await F(b.page)}catch{}}return o(()=>void F(1)),(o,c)=>{let u=s(`el-input`),f=s(`el-button`),g=s(`el-table-column`),_=s(`el-tag`),x=s(`el-table`),S=s(`el-pagination`),C=s(`el-form-item`),w=s(`el-option`),j=s(`el-select`),B=s(`el-form`),V=s(`el-dialog`),H=r(`loading`);return m(),a(`div`,null,[c[18]||=i(`div`,{class:`page-head`},[i(`h2`,{class:`page-title`},`用户管理`),i(`p`,{class:`page-lead`},`维护可登录后台的管理员账号。`)],-1),i(`div`,T,[n(u,{modelValue:D.value,"onUpdate:modelValue":c[0]||=e=>D.value=e,placeholder:`搜索账号、姓名、手机号`,clearable:``,style:{"max-width":`280px`},onKeyup:c[1]||=p(e=>F(1),[`enter`])},null,8,[`modelValue`]),n(f,{type:`primary`,onClick:c[2]||=e=>F(1)},{default:h(()=>[...c[12]||=[t(`查询`,-1)]]),_:1}),n(f,{type:`primary`,onClick:I},{default:h(()=>[...c[13]||=[t(`新增管理员`,-1)]]),_:1})]),l((m(),e(x,{data:y.value,stripe:``,border:``,"empty-text":`暂无管理员`},{default:h(()=>[n(g,{prop:`username`,label:`账号`,"min-width":`140`}),n(g,{prop:`name`,label:`姓名`,width:`120`}),n(g,{prop:`mobile`,label:`手机号`,width:`140`},{default:h(({row:e})=>[t(d(e.mobile||`—`),1)]),_:1}),n(g,{label:`状态`,width:`100`},{default:h(({row:e})=>[n(_,{type:e.status===`active`?`success`:`info`,effect:`plain`},{default:h(()=>[t(d(e.status===`active`?`启用`:`停用`),1)]),_:2},1032,[`type`])]),_:1}),n(g,{prop:`last_login_at`,label:`最近登录`,"min-width":`170`},{default:h(({row:e})=>[t(d(e.last