Files
yuezi-saas/frontend/dist/assets/departments-CnYyi91t.js
T

1 line
6.9 KiB
JavaScript

import{$ as e,H as t,L as n,P as r,V as i,Wt as a,_ as o,d as s,et as c,i as l,lt as u,p as d,st as f,u as p,v as m,z as h}from"./runtime-core.esm-bundler-DbRZbT7v.js";import{o as g,s as _}from"./index-3YculFMX.js";import"./request-DD5g7hLU.js";import{departmentApi as v}from"./system-DEm1DLCy.js";var y={class:`p-6 space-y-4`},b={class:`bg-white rounded-2xl border border-gray-100 shadow-sm`},x={class:`flex items-center justify-between px-5 py-4 border-b border-gray-50`},S={class:`flex items-center gap-3`},C={class:`px-2`},w={__name:`index`,setup(w){let T=u([]),E=u(!1),D=u(!1),O=u(`新增部门`),k=u(!1),A=u(!1),j=u(null),M=u([]),N=f({id:null,parent_id:null,name:``,code:``,leader:``,phone:``,sort:0,status:1,description:``}),P={name:[{required:!0,message:`请输入部门名称`,trigger:`blur`}]};function F(e,t=[]){for(let n of e)t.push({id:n.id,name:n.name}),n.children?.length&&F(n.children,t);return t}function I(e,t){let n=[e],r=t.find(t=>t.id===e);if(r?.children)for(let e of r.children)n.push(...I(e.id,M.value.map(e=>({...e}))));return n}let L=u([]);function R(e){if(!e){L.value=M.value;return}L.value=M.value.filter(t=>t.id!==e)}async function z(){E.value=!0;try{let e=await v.getList({per_page:500});if(Array.isArray(e.data))T.value=e.data,M.value=F(e.data);else{let t=e.data?.list||e.data?.data||[];M.value=t.map(e=>({id:e.id,name:e.name})),T.value=B(t)}}catch{}finally{E.value=!1}}function B(e,t=0){return e.filter(e=>(e.parent_id??0)===t).map(t=>({...t,children:B(e,t.id)}))}function V(e){A.value=!1,O.value=e?`在「${e.name}」下新增部门`:`新增顶级部门`,Object.assign(N,{id:null,parent_id:e?.id||null,name:``,code:``,leader:``,phone:``,sort:0,status:1,description:``}),R(null),D.value=!0}async function H(e){A.value=!0,O.value=`编辑部门 - ${e.name}`,Object.assign(N,{id:e.id,parent_id:e.parent_id,name:e.name,code:e.code||``,leader:e.leader||``,phone:e.phone||``,sort:e.sort||0,status:e.status,description:e.description||``}),R(e.id),D.value=!0}async function U(){j.value&&await j.value.validate(async e=>{if(e){k.value=!0;try{A.value?(await v.update(N.id,N),_.success(`部门信息更新成功`)):(await v.create(N),_.success(`部门创建成功`)),D.value=!1,z()}catch{}finally{k.value=!1}}})}async function W(e){if(e.children&&e.children.length>0){_.warning(`请先删除子部门`);return}await g.confirm(`确定删除部门「${e.name}」吗?`,`删除确认`,{confirmButtonText:`确定删除`,cancelButtonText:`取消`,type:`warning`,confirmButtonClass:`el-button--danger`}),await v.delete(e.id),_.success(`删除成功`),z()}return r(z),(r,u)=>{let f=i(`el-button`),g=i(`el-table-column`),_=i(`el-tag`),v=i(`el-table`),w=i(`el-option`),M=i(`el-select`),F=i(`el-form-item`),I=i(`el-col`),R=i(`el-input`),B=i(`el-input-number`),G=i(`el-radio`),K=i(`el-radio-group`),q=i(`el-row`),J=i(`el-form`),Y=i(`el-dialog`),X=t(`loading`);return n(),d(`div`,y,[p(`div`,b,[p(`div`,x,[p(`div`,S,[m(f,{icon:`Refresh`,onClick:z},{default:e(()=>[...u[11]||=[o(`刷新`,-1)]]),_:1})]),m(f,{type:`primary`,icon:`Plus`,onClick:u[0]||=e=>V(null)},{default:e(()=>[...u[12]||=[o(`新增顶级部门`,-1)]]),_:1})]),p(`div`,C,[c((n(),s(v,{data:T.value,"row-key":`id`,"tree-props":{children:`children`,hasChildren:`has_children`},"default-expand-all":``,style:{width:`100%`}},{default:e(()=>[m(g,{prop:`name`,label:`部门名称`,"min-width":`200`}),m(g,{prop:`code`,label:`部门编码`,width:`120`}),m(g,{prop:`leader`,label:`负责人`,width:`110`}),m(g,{prop:`phone`,label:`联系电话`,width:`140`}),m(g,{prop:`sort`,label:`排序`,width:`70`,align:`center`}),m(g,{label:`状态`,width:`90`,align:`center`},{default:e(({row:t})=>[m(_,{type:t.status===1?`success`:`danger`,size:`small`},{default:e(()=>[o(a(t.status===1?`正常`:`停用`),1)]),_:2},1032,[`type`])]),_:1}),m(g,{prop:`created_at`,label:`创建时间`,"min-width":`160`}),m(g,{label:`操作`,width:`180`,fixed:`right`,align:`center`},{default:e(({row:t})=>[m(f,{size:`small`,type:`success`,text:``,onClick:e=>V(t)},{default:e(()=>[...u[13]||=[o(`新增子部门`,-1)]]),_:1},8,[`onClick`]),m(f,{size:`small`,type:`primary`,text:``,onClick:e=>H(t)},{default:e(()=>[...u[14]||=[o(`编辑`,-1)]]),_:1},8,[`onClick`]),m(f,{size:`small`,type:`danger`,text:``,onClick:e=>W(t)},{default:e(()=>[...u[15]||=[o(`删除`,-1)]]),_:1},8,[`onClick`])]),_:1})]),_:1},8,[`data`])),[[X,E.value]])])]),m(Y,{modelValue:D.value,"onUpdate:modelValue":u[10]||=e=>D.value=e,title:O.value,width:`520px`,"destroy-on-close":``},{footer:e(()=>[m(f,{onClick:u[9]||=e=>D.value=!1},{default:e(()=>[...u[18]||=[o(`取消`,-1)]]),_:1}),m(f,{type:`primary`,loading:k.value,onClick:U},{default:e(()=>[o(a(A.value?`保存修改`:`确认创建`),1)]),_:1},8,[`loading`])]),default:e(()=>[m(J,{ref_key:`formRef`,ref:j,model:N,rules:P,"label-width":`90px`},{default:e(()=>[m(q,{gutter:16},{default:e(()=>[m(I,{span:24},{default:e(()=>[m(F,{label:`上级部门`,prop:`parent_id`},{default:e(()=>[m(M,{modelValue:N.parent_id,"onUpdate:modelValue":u[1]||=e=>N.parent_id=e,placeholder:`不选则为顶级部门`,clearable:``,style:{width:`100%`}},{default:e(()=>[m(w,{label:`顶级部门(无上级)`,value:null}),(n(!0),d(l,null,h(L.value,e=>(n(),s(w,{key:e.id,label:e.name,value:e.id},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`])]),_:1})]),_:1}),m(I,{span:12},{default:e(()=>[m(F,{label:`部门名称`,prop:`name`},{default:e(()=>[m(R,{modelValue:N.name,"onUpdate:modelValue":u[2]||=e=>N.name=e,placeholder:`请输入部门名称`},null,8,[`modelValue`])]),_:1})]),_:1}),m(I,{span:12},{default:e(()=>[m(F,{label:`部门编码`,prop:`code`},{default:e(()=>[m(R,{modelValue:N.code,"onUpdate:modelValue":u[3]||=e=>N.code=e,placeholder:`如: HR(选填)`},null,8,[`modelValue`])]),_:1})]),_:1}),m(I,{span:12},{default:e(()=>[m(F,{label:`负责人`,prop:`leader`},{default:e(()=>[m(R,{modelValue:N.leader,"onUpdate:modelValue":u[4]||=e=>N.leader=e,placeholder:`部门负责人`},null,8,[`modelValue`])]),_:1})]),_:1}),m(I,{span:12},{default:e(()=>[m(F,{label:`联系电话`,prop:`phone`},{default:e(()=>[m(R,{modelValue:N.phone,"onUpdate:modelValue":u[5]||=e=>N.phone=e,placeholder:`部门联系电话`},null,8,[`modelValue`])]),_:1})]),_:1}),m(I,{span:12},{default:e(()=>[m(F,{label:`排序`,prop:`sort`},{default:e(()=>[m(B,{modelValue:N.sort,"onUpdate:modelValue":u[6]||=e=>N.sort=e,min:0,max:9999,style:{width:`100%`}},null,8,[`modelValue`])]),_:1})]),_:1}),m(I,{span:12},{default:e(()=>[m(F,{label:`状态`,prop:`status`},{default:e(()=>[m(K,{modelValue:N.status,"onUpdate:modelValue":u[7]||=e=>N.status=e},{default:e(()=>[m(G,{value:1},{default:e(()=>[...u[16]||=[o(`正常`,-1)]]),_:1}),m(G,{value:0},{default:e(()=>[...u[17]||=[o(`停用`,-1)]]),_:1})]),_:1},8,[`modelValue`])]),_:1})]),_:1}),m(I,{span:24},{default:e(()=>[m(F,{label:`备注`,prop:`description`},{default:e(()=>[m(R,{modelValue:N.description,"onUpdate:modelValue":u[8]||=e=>N.description=e,type:`textarea`,rows:2,placeholder:`备注信息(选填)`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1},8,[`model`])]),_:1},8,[`modelValue`,`title`])])}}};export{w as default};