2 lines
5.9 KiB
JavaScript
2 lines
5.9 KiB
JavaScript
var T=(D,I,u)=>new Promise((p,m)=>{var k=c=>{try{g(u.next(c))}catch(l){m(l)}},N=c=>{try{g(u.throw(c))}catch(l){m(l)}},g=c=>c.done?p(c.value):Promise.resolve(c.value).then(k,N);g((u=u.apply(D,I)).next())});import{bZ as Z,b_ as U,au as E,bt as q,an as G,cF as K,bu as Q,ct as X,az as $,ay as R,ak as ee,S as te,c3 as ae,a9 as se,ac as ne}from"./bootstrap-D-ZoMY6-.js";import{a as le}from"./index-Bnmy5vvs.js";import{g as re,u as oe}from"./index-CgiiJUH7.js";import{B as L}from"./data-DvywVrDG.js";import{m as ie,b9 as y,aa as M,ab as w,b2 as r,bJ as d,j as f,u as n,ae as o,ad as v,ac as x,I as F,bb as de,aR as H,bp as S,ai as C,d9 as ce}from"../jse/index-index-CbCBcLyX.js";const ue={class:"staff-search"},fe={key:0,class:"staff-list"},_e=["onClick"],ve={class:"staff-list-item__title"},pe={key:1,class:"py-4 text-center text-gray-500"},me={class:"content-header mb-3"},ge={class:"content-header__left"},he={class:"content-title"},be={key:0,class:"content-subtitle"},ye={key:0,class:"legend"},Ie={class:"tree-node__name"},ke={key:1,class:"py-4 text-center text-gray-500"},we=ie({__name:"staff-view",setup(D){const I=y([]),u=y([]),p=y(!1),m=y(new Map),k=y([]);function N(){return T(this,null,function*(){p.value=!0;try{const a=yield le({isActive:!0});I.value=a,u.value=ce(a,"id","parentId","children");const s=new Map,t=new Map,e=a.map(_=>_.id).filter(Boolean),i=10;for(let _=0;_<e.length;_+=i){const z=e.slice(_,_+i),Y=yield Promise.allSettled(z.map(h=>T(null,null,function*(){const b=yield re(h);return{areaId:h,list:b}})));for(const h of Y)if(h.status==="fulfilled"){s.set(h.value.areaId,h.value.list);for(const b of h.value.list){if(!b.enabled)continue;const P=t.get(b.userId);P?P.directCount++:t.set(b.userId,{userId:b.userId,userName:b.userName,directCount:1})}}}m.value=s,k.value=[...t.values()].toSorted((_,z)=>z.directCount-_.directCount)}catch(a){I.value=[],u.value=[],m.value=new Map,k.value=[]}finally{p.value=!1}})}N();const g=y(""),c=M(()=>{const a=g.value.trim().toLowerCase();return a?k.value.filter(s=>s.userName.toLowerCase().includes(a)):k.value}),l=y(null);function j(a){l.value=a}const B=M(()=>{if(!l.value)return new Set;const a=new Set;for(const[s,t]of m.value)for(const e of t)e.userId===l.value.userId&&e.enabled&&a.add(s);return a}),A=M(()=>{const a=B.value;if(a.size===0)return new Set;const s=new Map(I.value.map(e=>[e.id,e])),t=new Set;for(const e of I.value){if(!e.id||a.has(e.id))continue;let i=e.parentId?s.get(e.parentId):void 0;for(;i;){if(a.has(i.id)){t.add(e.id);break}i=i.parentId?s.get(i.parentId):void 0}}return t}),V=M(()=>new Set([...B.value,...A.value]));function J(a){var t;return((t=m.value.get(a))!=null?t:[]).find(e=>{var i;return e.userId===((i=l.value)==null?void 0:i.userId)&&e.enabled})}function O(){N()}function W(a,s){if(!l.value)return;const t=J(a);if(!t)return;const e=l.value.userName;ae.confirm({title:"确认解除绑定",content:`确定要解除「${e}」在区域「${s}」的绑定吗?`,okText:"确定",cancelText:"取消",okButtonProps:{danger:!0},onOk(){return T(this,null,function*(){yield oe(t.id),se.success("已解除绑定"),O()})}})}return(a,s)=>(r(),w(n(te),{spinning:p.value},{default:d(()=>[f(n(Z),{gutter:12,class:"layout-row"},{default:d(()=>[f(n(U),{xs:24,sm:24,md:6,lg:5,xl:4,class:"staff-col"},{default:d(()=>[f(n(E),{class:"staff-panel",title:"安保人员"},{default:d(()=>[o("div",ue,[f(n(q),{value:g.value,"onUpdate:value":s[0]||(s[0]=t=>g.value=t),placeholder:"搜索人员","allow-clear":"",class:"w-full"},{prefix:d(()=>[f(n(G),{icon:"lucide:search",class:"size-4"})]),_:1},8,["value"])]),c.value.length>0?(r(),v("div",fe,[(r(!0),v(F,null,de(c.value,t=>{var e;return r(),v("div",{key:t.userId,class:H(["staff-list-item",{"staff-list-item--active":((e=l.value)==null?void 0:e.userId)===t.userId}]),onClick:i=>j(t)},[o("div",ve,[o("span",null,S(t.userName),1),t.directCount>0?(r(),w(n(K),{key:0,count:t.directCount,"number-style":{backgroundColor:"#1677ff",fontSize:"11px",minWidth:"18px",height:"18px",lineHeight:"18px"}},null,8,["count"])):x("",!0)])],10,_e)}),128))])):p.value?x("",!0):(r(),v("div",pe," 暂无人员数据 "))]),_:1})]),_:1}),f(n(U),{xs:24,sm:24,md:18,lg:19,xl:20},{default:d(()=>{var t;return[o("div",me,[o("div",ge,[o("span",he,S(((t=l.value)==null?void 0:t.userName)||"请选择人员"),1),l.value?(r(),v("span",be," - 管辖区域 ("+S(V.value.size)+") ",1)):x("",!0)]),l.value?(r(),v("div",ye,[...s[1]||(s[1]=[o("span",{class:"legend__item"},[o("span",{class:"legend__dot legend__dot--direct"}),C(" 直接绑定 ")],-1),o("span",{class:"legend__item"},[o("span",{class:"legend__dot legend__dot--inherited"}),C(" 继承 ")],-1),o("span",{class:"legend__item"},[o("span",{class:"legend__dot legend__dot--none"}),C(" 未管辖 ")],-1)])])):x("",!0)]),l.value?(r(),w(n(E),{key:1,class:"tree-content-card"},{default:d(()=>[u.value.length>0?(r(),w(n(X),{key:0,"tree-data":u.value,"default-expand-all":!0,selectable:!1,"field-names":{title:"areaName",key:"id",children:"children"}},{title:d(({dataRef:e})=>[o("div",{class:H(["tree-node",{"tree-node--direct":B.value.has(e.id),"tree-node--inherited":A.value.has(e.id),"tree-node--none":!V.value.has(e.id)}])},[o("span",Ie,S(e.areaName),1),B.value.has(e.id)?(r(),v(F,{key:0},[f(n($),{color:"blue",class:"tree-node__tag"},{default:d(()=>[C(S(n(L).DIRECT.label),1)]),_:1}),f(n(R),{type:"link",size:"small",danger:"",class:"tree-node__action",onClick:ee(i=>W(e.id,e.areaName),["stop"])},{default:d(()=>[...s[2]||(s[2]=[C(" 解绑 ",-1)])]),_:1},8,["onClick"])],64)):A.value.has(e.id)?(r(),w(n($),{key:1,class:"tree-node__tag",color:n(L).INHERITED.color},{default:d(()=>[C(S(n(L).INHERITED.label),1)]),_:1},8,["color"])):x("",!0)],2)]),_:1},8,["tree-data"])):p.value?x("",!0):(r(),v("div",ke," 暂无区域数据 "))]),_:1})):(r(),w(n(E),{key:0,class:"empty-card"},{default:d(()=>[f(n(Q),{description:"请在左侧选择一位安保人员以查看其管辖区域"})]),_:1}))]}),_:1})]),_:1})]),_:1},8,["spinning"]))}}),Me=ne(we,[["__scopeId","data-v-0492ed99"]]);export{Me as default};
|