OrgView-CHZrbeV6.js 10 KB

1
  1. import{_ as ee,k as le,o as d,c as I,a as s,d as a,w as t,i as r,t as R,f as w,r as v,g as k,h as ae,e as B,F as N,q as C,E as T,z as V,y as te}from"./index-B793OZVz.js";import{orgApi as c,kpiApi as oe}from"./index-Cvo9SNcI.js";const ne={class:"page"},ue={class:"page-hero"},de={class:"hero-actions"},se={class:"two-col"},re={class:"col dept-col"},ie={class:"tree-node"},pe={class:"tree-name"},me={class:"tree-actions"},ve={class:"col user-col"},fe={class:"col-head"},ce={class:"count"},_e={__name:"OrgView",setup(be){const x=w([]),y=w([]),P=w([]),g=w(!1),U=w(!1),M=w(null),i=w(null),b=w({name:"",parentId:null,leaderId:null}),u=w({username:"",password:"",realName:"",position:"",departmentId:null,superiorId:null,role:"EMPLOYEE"});function O(o){return{SUPER_ADMIN:"管理员",HR_ADMIN:"HR管理员",DEPT_LEADER:"部门负责人",TEAM_LEADER:"团队主管",EMPLOYEE:"员工"}[o]||"员工"}function q(o){return{SUPER_ADMIN:"#f56c6c",HR_ADMIN:"#e6a23c",DEPT_LEADER:"#8b5cf6",TEAM_LEADER:"#3ad4d8",EMPLOYEE:"#409eff"}[o]||"#409eff"}const z=te(()=>{const o=[];function e(p,A=""){var L;for(const m of p)o.push({id:m.id,name:A+m.name}),(L=m.children)!=null&&L.length&&e(m.children,A+"├ ")}return e(x.value),o});le(()=>D());async function D(){x.value=await c.getTree(),y.value=await c.getUsers(),y.value.forEach(o=>{o._deptId=o.departmentId});try{P.value=await oe.getTemplateNames()}catch{P.value=[]}}function F(o){M.value=o,b.value={name:o.name,parentId:o.parentId,leaderId:o.leaderId},g.value=!0}async function H(){M.value?await c.updateDept(M.value.id,b.value):await c.createDept(b.value),V.success("保存成功"),g.value=!1,D()}async function Y(o){await T.confirm("确定删除该部门吗?","提示",{type:"warning"}),await c.deleteDept(o),V.success("已删除"),D()}function K(o){i.value=o,u.value={username:o.username,password:"",realName:o.realName,position:o.position||"",departmentId:o.departmentId,superiorId:o.superiorId,role:o.role},U.value=!0}async function j(){if(!u.value.username||!u.value.realName){V.warning("用户名和姓名必填");return}if(!i.value&&!u.value.password){V.warning("请设置密码");return}try{i.value?await c.updateUser(i.value.id,u.value):await c.createUser(u.value),V.success(i.value?"已保存":"已创建"),U.value=!1,i.value=null,u.value={username:"",password:"",realName:"",position:"",departmentId:null,superiorId:null,role:"EMPLOYEE"},D()}catch{}}async function G(o){await T.confirm("确定删除该用户吗?此操作不可恢复。","删除用户",{type:"error",confirmButtonText:"确认删除"}),await c.deleteUser(o),V.success("已删除"),D()}async function J(o,e){await c.updateSuperior(o,e),V.success("已更新")}async function Q(o,e){await c.updateDepartment(o,e),V.success("已更新")}async function W(){await T.confirm("将初始化企业组织数据:深圳总部(含4个中心)+甘肃运营中心,以及韩拓等7名员工。确定继续?","初始化企业数据",{type:"info",confirmButtonText:"确定初始化"}),await c.initSeed(),V.success("企业数据已初始化"),D()}return(o,e)=>{const p=v("el-button"),A=v("el-tag"),L=v("el-tree"),m=v("el-table-column"),f=v("el-option"),E=v("el-select"),X=v("el-table"),h=v("el-input"),_=v("el-form-item"),Z=v("el-tree-select"),S=v("el-form"),$=v("el-dialog");return d(),I("div",ne,[s("div",ue,[e[19]||(e[19]=s("div",{class:"hero-info"},[s("h2",null,"组织架构"),s("p",null,"部门树 + 人员管理")],-1)),s("div",de,[a(p,{onClick:e[0]||(e[0]=l=>{g.value=!0,M.value=null}),round:""},{default:t(()=>[...e[16]||(e[16]=[r("添加部门",-1)])]),_:1}),a(p,{type:"primary",onClick:e[1]||(e[1]=l=>U.value=!0),round:""},{default:t(()=>[...e[17]||(e[17]=[r("添加成员",-1)])]),_:1}),a(p,{type:"warning",onClick:W,round:"",disabled:y.value.length>1},{default:t(()=>[...e[18]||(e[18]=[r(" 初始化企业数据 ",-1)])]),_:1},8,["disabled"])])]),s("div",se,[s("div",re,[e[22]||(e[22]=s("div",{class:"col-head"},"部门结构",-1)),a(L,{data:x.value,"node-key":"id","default-expand-all":"",props:{label:"name",children:"children"}},{default:t(({data:l})=>[s("span",ie,[s("span",pe,R(l.name),1),l.leaderName?(d(),k(A,{key:0,size:"small",effect:"plain",type:"info",round:""},{default:t(()=>[r("负责人 "+R(l.leaderName),1)]),_:2},1024)):ae("",!0),s("span",me,[a(p,{link:"",size:"small",onClick:B(n=>F(l),["stop"])},{default:t(()=>[...e[20]||(e[20]=[r("编辑",-1)])]),_:1},8,["onClick"]),a(p,{link:"",size:"small",type:"danger",onClick:B(n=>Y(l.id),["stop"])},{default:t(()=>[...e[21]||(e[21]=[r("删除",-1)])]),_:1},8,["onClick"])])])]),_:1},8,["data"])]),s("div",ve,[s("div",fe,[e[23]||(e[23]=r("人员列表 ",-1)),s("span",ce,R(y.value.length)+" 人",1)]),a(X,{data:y.value,stripe:"",style:{width:"100%"},size:"small"},{default:t(()=>[a(m,{prop:"username",label:"用户名","min-width":"100","show-overflow-tooltip":""}),a(m,{prop:"realName",label:"姓名","min-width":"90","show-overflow-tooltip":""}),a(m,{prop:"position",label:"职位","min-width":"110","show-overflow-tooltip":""}),a(m,{label:"部门","min-width":"130"},{default:t(({row:l})=>[a(E,{modelValue:l._deptId,"onUpdate:modelValue":n=>l._deptId=n,size:"small",onChange:n=>Q(l.id,n),placeholder:"选择",clearable:""},{default:t(()=>[(d(!0),I(N,null,C(z.value,n=>(d(),k(f,{key:n.id,label:n.name,value:n.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),a(m,{label:"直属上级","min-width":"130"},{default:t(({row:l})=>[a(E,{modelValue:l.superiorId,"onUpdate:modelValue":n=>l.superiorId=n,size:"small",onChange:n=>J(l.id,n),placeholder:"选择",clearable:""},{default:t(()=>[(d(!0),I(N,null,C(y.value.filter(n=>n.id!==l.id),n=>(d(),k(f,{key:n.id,label:n.realName,value:n.id},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","onChange"])]),_:1}),a(m,{prop:"role",label:"角色",width:"110"},{default:t(({row:l})=>[a(A,{color:q(l.role),size:"small",effect:"dark",round:"",style:{border:"none"}},{default:t(()=>[r(R(O(l.role)),1)]),_:2},1032,["color"])]),_:1}),a(m,{label:"操作",width:"120",fixed:"right"},{default:t(({row:l})=>[a(p,{link:"",size:"small",type:"primary",onClick:n=>K(l)},{default:t(()=>[...e[24]||(e[24]=[r("编辑",-1)])]),_:1},8,["onClick"]),a(p,{link:"",size:"small",type:"danger",onClick:n=>G(l.id),disabled:l.id===1},{default:t(()=>[...e[25]||(e[25]=[r("删除",-1)])]),_:1},8,["onClick","disabled"])]),_:1})]),_:1},8,["data"])])]),a($,{modelValue:g.value,"onUpdate:modelValue":e[6]||(e[6]=l=>g.value=l),title:M.value?"编辑部门":"添加部门",width:"420px"},{footer:t(()=>[a(p,{onClick:e[5]||(e[5]=l=>g.value=!1)},{default:t(()=>[...e[26]||(e[26]=[r("取消",-1)])]),_:1}),a(p,{type:"primary",onClick:H},{default:t(()=>[...e[27]||(e[27]=[r("保存",-1)])]),_:1})]),default:t(()=>[a(S,{"label-width":"80px"},{default:t(()=>[a(_,{label:"名称"},{default:t(()=>[a(h,{modelValue:b.value.name,"onUpdate:modelValue":e[2]||(e[2]=l=>b.value.name=l)},null,8,["modelValue"])]),_:1}),a(_,{label:"上级部门"},{default:t(()=>[a(Z,{modelValue:b.value.parentId,"onUpdate:modelValue":e[3]||(e[3]=l=>b.value.parentId=l),data:x.value,props:{label:"name",value:"id"},"check-strictly":"",clearable:"",placeholder:"无(顶级)",style:{width:"100%"}},null,8,["modelValue","data"])]),_:1}),a(_,{label:"负责人"},{default:t(()=>[a(E,{modelValue:b.value.leaderId,"onUpdate:modelValue":e[4]||(e[4]=l=>b.value.leaderId=l),clearable:"",placeholder:"选择负责人",style:{width:"100%"}},{default:t(()=>[(d(!0),I(N,null,C(y.value,l=>(d(),k(f,{key:l.id,label:l.realName,value:l.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue","title"]),a($,{modelValue:U.value,"onUpdate:modelValue":e[15]||(e[15]=l=>U.value=l),title:i.value?"编辑成员":"添加成员",width:"460px"},{footer:t(()=>[a(p,{onClick:e[14]||(e[14]=l=>{U.value=!1,i.value=null})},{default:t(()=>[...e[28]||(e[28]=[r("取消",-1)])]),_:1}),a(p,{type:"primary",onClick:j},{default:t(()=>[r(R(i.value?"保存":"创建"),1)]),_:1})]),default:t(()=>[a(S,{"label-width":"80px"},{default:t(()=>[a(_,{label:"用户名",required:""},{default:t(()=>[a(h,{modelValue:u.value.username,"onUpdate:modelValue":e[7]||(e[7]=l=>u.value.username=l),disabled:!!i.value},null,8,["modelValue","disabled"])]),_:1}),a(_,{label:"密码",required:!i.value},{default:t(()=>[a(h,{modelValue:u.value.password,"onUpdate:modelValue":e[8]||(e[8]=l=>u.value.password=l),placeholder:i.value?"留空不修改":"设置密码","show-password":""},null,8,["modelValue","placeholder"])]),_:1},8,["required"]),a(_,{label:"姓名",required:""},{default:t(()=>[a(h,{modelValue:u.value.realName,"onUpdate:modelValue":e[9]||(e[9]=l=>u.value.realName=l)},null,8,["modelValue"])]),_:1}),a(_,{label:"岗位"},{default:t(()=>[a(E,{modelValue:u.value.position,"onUpdate:modelValue":e[10]||(e[10]=l=>u.value.position=l),filterable:"",placeholder:"选择岗位(对应KPI模板)",style:{width:"100%"}},{default:t(()=>[(d(!0),I(N,null,C(P.value,l=>(d(),k(f,{key:l,label:l,value:l},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(_,{label:"部门"},{default:t(()=>[a(E,{modelValue:u.value.departmentId,"onUpdate:modelValue":e[11]||(e[11]=l=>u.value.departmentId=l),clearable:"",style:{width:"100%"}},{default:t(()=>[(d(!0),I(N,null,C(z.value,l=>(d(),k(f,{key:l.id,label:l.name,value:l.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(_,{label:"直属上级"},{default:t(()=>[a(E,{modelValue:u.value.superiorId,"onUpdate:modelValue":e[12]||(e[12]=l=>u.value.superiorId=l),clearable:"",style:{width:"100%"}},{default:t(()=>[(d(!0),I(N,null,C(y.value.filter(l=>{var n;return l.id!==((n=i.value)==null?void 0:n.id)}),l=>(d(),k(f,{key:l.id,label:l.realName,value:l.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(_,{label:"角色",prop:"role"},{default:t(()=>[a(E,{modelValue:u.value.role,"onUpdate:modelValue":e[13]||(e[13]=l=>u.value.role=l),placeholder:"请选择角色"},{default:t(()=>[a(f,{label:"普通员工",value:"EMPLOYEE"}),a(f,{label:"团队主管",value:"TEAM_LEADER"}),a(f,{label:"部门负责人",value:"DEPT_LEADER"}),a(f,{label:"HR管理员",value:"HR_ADMIN"}),a(f,{label:"超级管理员",value:"SUPER_ADMIN"})]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue","title"])])}}},ye=ee(_e,[["__scopeId","data-v-58b26ae2"]]);export{ye as default};