cd-personselector 1.2.1 → 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- (function(w,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(w=typeof globalThis<"u"?globalThis:w||self,e(w.CdPersonSelector={},w.Vue))})(this,function(w,e){"use strict";const ne={class:"cd-ps-container"},se={key:0,class:"cd-ps-tips"},ce={key:1,class:"cd-ps-search"},de={key:0,class:"cd-ps-org-select"},ie={class:"cd-ps-search-input"},re={class:"cd-ps-content"},pe={class:"cd-ps-left"},me={key:0,class:"cd-ps-search-results"},fe={class:"cd-ps-search-header"},he={key:0,class:"cd-ps-loading"},ke={key:1,class:"cd-ps-empty"},ue={key:2,class:"cd-ps-result-list"},_e=["onClick"],Ve={class:"cd-ps-avatar"},ge={class:"cd-ps-info"},ye={class:"cd-ps-name"},Ce={class:"cd-ps-meta"},Be={key:0},Ne={key:1},Ee={key:2},Se={class:"cd-ps-tree"},be={class:"cd-ps-node-name"},xe={key:0,class:"cd-ps-position"},we={key:0,class:"cd-ps-count"},Ue={key:1,class:"cd-ps-empty"},Ie={class:"cd-ps-right"},De={class:"cd-ps-right-header"},ze={class:"cd-ps-num"},Te={class:"cd-ps-right-list"},Oe={key:0,class:"cd-ps-empty"},Pe={key:1,class:"cd-ps-selected-list"},Re={class:"cd-ps-item-info"},$e={class:"cd-ps-info"},Le={class:"cd-ps-name"},Me={class:"cd-ps-meta"},Ae={key:0},Fe={key:1},je={key:2},We={key:3},Je=e.defineComponent({__name:"PersonSelector",props:{visible:{type:Boolean,default:!1},tabs:{default:()=>[]},organizations:{default:()=>[]},modelValue:{default:()=>[]},dialogWidth:{default:"900px"},tips:{default:""},showSearch:{type:Boolean,default:!0},showOrg:{type:Boolean,default:!0},multiple:{type:Boolean,default:!0}},emits:["update:visible","update:modelValue","confirm","load-users","search","org-change"],setup(f,{expose:P,emit:h}){var oe,le;const c=f,S=h,g=e.ref(c.visible),y=e.ref(((le=(oe=c.tabs)==null?void 0:oe[0])==null?void 0:le.key)||""),C=e.ref(null),B=e.ref(""),p=e.ref([]),m=e.ref(new Map),D=e.ref({}),R=e.ref(!1),z=e.ref(!1),I=e.ref([]),W=e.computed(()=>c.tabs||[]),L=e.computed(()=>c.organizations||[]),M=e.computed(()=>c.tips||""),J=e.computed(()=>c.showSearch),q=e.computed(()=>c.showOrg),G=e.computed(()=>c.dialogWidth),s=e.ref({});e.watch(()=>c.tabs,o=>{if(o&&o.length>0){const t={};o.forEach(n=>{t[n.key]=JSON.parse(JSON.stringify(n.tree))}),s.value=t,(!y.value||!o.find(n=>n.key===y.value))&&(y.value=o[0].key)}},{immediate:!0,deep:!0});function i(){if(c.modelValue&&c.modelValue.length>0){const o=c.modelValue[0];typeof o=="object"&&o!==null&&"id"in o?(p.value=c.modelValue.map(t=>t.id),m.value.clear(),c.modelValue.forEach(t=>{m.value.set(t.id,t)})):p.value=[...c.modelValue]}else p.value=[],m.value.clear()}e.watch(()=>c.modelValue,o=>{g.value&&o&&i()},{deep:!0}),e.watch(()=>c.visible,o=>{g.value=o,o&&(i(),c.organizations.length>0&&!C.value&&(C.value=c.organizations[0].id))}),e.watch(g,o=>{S("update:visible",o)});function d(o,t){t&&(D.value[o]=t)}function k(o,t){for(const n of o){if(n.id===t)return n;if(n.children){const r=k(n.children,t);if(r)return r}}return null}const V=e.computed(()=>p.value.map(o=>m.value.get(o)).filter(Boolean));function a(o,t){p.value.includes(o)||p.value.push(o),m.value.set(o,t)}function b(o){p.value=p.value.filter(t=>t!==o),m.value.delete(o)}const v=()=>{B.value=""},H=o=>{const t={};c.tabs.forEach(n=>{t[n.key]=[]}),s.value=t,S("org-change",o)};let T=null;const et=()=>{if(T&&clearTimeout(T),!B.value.trim()){Q();return}R.value=!0,z.value=!0,T=setTimeout(()=>tt(),300)},tt=()=>{I.value=[];const o=t=>{I.value=t.map(n=>({...n,isUser:!0})),z.value=!1};S("search",{keyword:B.value,orgId:C.value||void 0,callback:o})},Q=()=>{T&&(clearTimeout(T),T=null),R.value=!1,B.value="",I.value=[],z.value=!1},ot=o=>{p.value.indexOf(o.id)>-1?b(o.id):(c.multiple||(p.value=[],m.value.clear()),a(o.id,{...o,isUser:!0,typeName:"搜索结果",orgId:C.value}),c.multiple||X())};function lt(o){const t=[],n=r=>{for(const x of r)t.push(x.id),x.children&&n(x.children)};return n(o),t}const at=(o,t)=>{var u,N;const n=t==null?void 0:t.node;if(n){const E=n.value??((u=n.data)==null?void 0:u.id);if(E!==void 0){if(n.checked){c.multiple||(p.value=[],m.value.clear());const O=c.tabs.find(Y=>Y.key===y.value),$=O?O.name.replace(/^按/,""):"";a(E,{...n.data,typeName:$,orgId:C.value}),!c.multiple&&((N=n.data)!=null&&N.isUser)&&X()}else b(E);return}}const r=s.value[y.value]||[],x=lt(r),U=p.value.filter(E=>!x.includes(E));p.value=[...U,...o]};function ee(o,t,n){for(const r of o){if(r.id===t)return r.children=r.children||[],r.children.push(...n),r.loaded=!0,!0;if(r.children&&ee(r.children,t,n))return!0}return!1}async function nt(o,t){const n=o.value,r=D.value[t];S("load-users",{tabKey:t,nodeId:n,node:o,callback:async U=>{if(U.length>0){const u=U.map(E=>{const{id:A,name:O,...$}=E;return{...$,id:A,name:E.displayName||O,isUser:!0}}),N=s.value[t];if(N&&ee(N,n,u),r){r.appendTo(n,u),o.data.loaded=!0,await e.nextTick();try{r.setItem(n,{expanded:!0})}catch{}}}else{o.data.loaded=!0;const u=s.value[t];if(u){const N=k(u,n);N&&(N.loaded=!0)}}}})}const st=o=>{b(o)},te=()=>{p.value=[],m.value.clear()},X=()=>{S("update:modelValue",p.value),S("confirm",V.value),g.value=!1},ct=()=>{g.value=!1};return P({clearSelection:te,appendUsers:(o,t,n)=>{const r=D.value[o];if(r&&n.length>0){const x=n.map(U=>{const{id:u,name:N,...E}=U;return{...E,id:u,name:U.displayName||N,isUser:!0}});r.appendTo(t,x)}}}),(o,t)=>{const n=e.resolveComponent("t-icon"),r=e.resolveComponent("t-option"),x=e.resolveComponent("t-select"),U=e.resolveComponent("t-input"),u=e.resolveComponent("t-button"),N=e.resolveComponent("t-loading"),E=e.resolveComponent("t-checkbox"),A=e.resolveComponent("t-tree"),O=e.resolveComponent("t-tab-panel"),$=e.resolveComponent("t-tabs"),Y=e.resolveComponent("t-dialog");return e.openBlock(),e.createBlock(Y,{visible:g.value,"onUpdate:visible":t[4]||(t[4]=l=>g.value=l),header:"选择人员",width:G.value,footer:!0,placement:"center","destroy-on-close":"",onConfirm:X,onClose:ct},{default:e.withCtx(()=>[e.createElementVNode("div",ne,[M.value?(e.openBlock(),e.createElementBlock("div",se,[e.createVNode(n,{name:"info-circle"}),e.createElementVNode("span",null,e.toDisplayString(M.value),1)])):e.createCommentVNode("",!0),J.value?(e.openBlock(),e.createElementBlock("div",ce,[q.value&&L.value.length>0?(e.openBlock(),e.createElementBlock("div",de,[e.createVNode(x,{modelValue:C.value,"onUpdate:modelValue":t[0]||(t[0]=l=>C.value=l),placeholder:"选择组织",style:{width:"200px"},onChange:H},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(L.value,l=>(e.openBlock(),e.createBlock(r,{key:l.id,value:l.id,label:l.displayName||l.name},null,8,["value","label"]))),128))]),_:1},8,["modelValue"])])):e.createCommentVNode("",!0),e.createElementVNode("div",ie,[e.createVNode(U,{modelValue:B.value,"onUpdate:modelValue":t[1]||(t[1]=l=>B.value=l),placeholder:"输入手机号/工号/姓名/部门/职位搜索",clearable:"",onInput:et,onClear:Q},{"prefix-icon":e.withCtx(()=>[e.createVNode(n,{name:"search"})]),_:1},8,["modelValue"])])])):e.createCommentVNode("",!0),e.createElementVNode("div",re,[e.createElementVNode("div",pe,[R.value?(e.openBlock(),e.createElementBlock("div",me,[e.createElementVNode("div",fe,[t[6]||(t[6]=e.createElementVNode("span",null,"搜索结果",-1)),e.createVNode(u,{size:"small",variant:"text",onClick:Q},{default:e.withCtx(()=>[...t[5]||(t[5]=[e.createTextVNode("返回",-1)])]),_:1})]),z.value?(e.openBlock(),e.createElementBlock("div",he,[e.createVNode(N),t[7]||(t[7]=e.createElementVNode("span",null,"搜索中...",-1))])):I.value.length===0?(e.openBlock(),e.createElementBlock("div",ke,[e.createVNode(n,{name:"search",size:"48px",style:{color:"#ddd"}}),t[8]||(t[8]=e.createElementVNode("p",null,"未找到匹配的人员",-1))])):(e.openBlock(),e.createElementBlock("div",ue,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(I.value,l=>(e.openBlock(),e.createElementBlock("div",{key:l.id,class:e.normalizeClass(["cd-ps-result-item",{"cd-ps-selected":p.value.includes(l.id)}]),onClick:F=>ot(l)},[e.createVNode(E,{checked:p.value.includes(l.id),onClick:t[2]||(t[2]=e.withModifiers(()=>{},["stop"]))},null,8,["checked"]),e.createElementVNode("div",Ve,[e.createVNode(n,{name:"user"})]),e.createElementVNode("div",ge,[e.createElementVNode("div",ye,e.toDisplayString(l.displayName||l.name),1),e.createElementVNode("div",Ce,[l.position?(e.openBlock(),e.createElementBlock("span",Be,e.toDisplayString(l.position),1)):e.createCommentVNode("",!0),l.department?(e.openBlock(),e.createElementBlock("span",Ne,e.toDisplayString(l.department),1)):e.createCommentVNode("",!0),l.phone?(e.openBlock(),e.createElementBlock("span",Ee,e.toDisplayString(l.phone),1)):e.createCommentVNode("",!0)])])],10,_e))),128))]))])):(e.openBlock(),e.createBlock($,{key:1,modelValue:y.value,"onUpdate:modelValue":t[3]||(t[3]=l=>y.value=l),onChange:v},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(W.value,l=>(e.openBlock(),e.createBlock(O,{key:l.key,value:l.key,label:l.name},{default:e.withCtx(()=>{var F;return[e.createElementVNode("div",Se,[((F=s.value[l.key])==null?void 0:F.length)>0?(e.openBlock(),e.createBlock(A,{key:0,ref_for:!0,ref:_=>d(l.key,_),data:s.value[l.key],keys:{value:"id",label:"name",children:"children"},hover:"",checkable:"","expand-all":!1,value:p.value,onChange:at},{label:e.withCtx(({node:_})=>{var ae;return[e.createElementVNode("div",{class:e.normalizeClass(["cd-ps-node",{"cd-ps-node-user":_.data.isUser}])},[e.createVNode(n,{name:_.data.isUser?"user":l.icon||"folder"},null,8,["name"]),e.createElementVNode("span",be,[e.createTextVNode(e.toDisplayString(_.label)+" ",1),_.data.isUser&&_.data.position?(e.openBlock(),e.createElementBlock("span",xe,e.toDisplayString(_.data.position),1)):e.createCommentVNode("",!0)]),_.data.userCount&&!_.data.isUser?(e.openBlock(),e.createElementBlock("span",we,"("+e.toDisplayString(_.data.userCount)+")",1)):e.createCommentVNode("",!0),!_.data.isUser&&!((ae=_.data.children)!=null&&ae.length)&&!_.data.loaded?(e.openBlock(),e.createBlock(u,{key:1,size:"small",variant:"text",class:"cd-ps-load-btn",onClick:e.withModifiers(it=>nt(_,l.key),["stop"])},{default:e.withCtx(()=>[...t[9]||(t[9]=[e.createTextVNode("显示人员",-1)])]),_:1},8,["onClick"])):e.createCommentVNode("",!0)],2)]}),_:2},1032,["data","value"])):(e.openBlock(),e.createElementBlock("div",Ue,[e.createVNode(n,{name:l.icon||"folder-open",size:"48px",style:{color:"#ddd"}},null,8,["name"]),t[10]||(t[10]=e.createElementVNode("p",null,"暂无数据",-1))]))])]}),_:2},1032,["value","label"]))),128))]),_:1},8,["modelValue"]))]),e.createElementVNode("div",Ie,[e.createElementVNode("div",De,[t[12]||(t[12]=e.createElementVNode("span",{class:"cd-ps-title"},"已选择",-1)),e.createElementVNode("span",ze,e.toDisplayString(V.value.length)+" 项",1),V.value.length>0?(e.openBlock(),e.createBlock(u,{key:0,size:"small",variant:"text",onClick:te},{default:e.withCtx(()=>[...t[11]||(t[11]=[e.createTextVNode("清空",-1)])]),_:1})):e.createCommentVNode("",!0)]),e.createElementVNode("div",Te,[V.value.length===0?(e.openBlock(),e.createElementBlock("div",Oe,[e.createVNode(n,{name:"user-checked",size:"64px",style:{color:"#ddd"}}),t[13]||(t[13]=e.createElementVNode("p",null,"暂无选择",-1))])):(e.openBlock(),e.createElementBlock("div",Pe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.value,l=>(e.openBlock(),e.createElementBlock("div",{key:l.id,class:e.normalizeClass(["cd-ps-selected-item",{"cd-ps-dept-item":!l.isUser}])},[e.createElementVNode("div",Re,[e.createElementVNode("div",{class:e.normalizeClass(["cd-ps-avatar",{"cd-ps-avatar-dept":!l.isUser}])},[e.createVNode(n,{name:l.isUser?"user":"folder"},null,8,["name"])],2),e.createElementVNode("div",$e,[e.createElementVNode("div",Le,e.toDisplayString(l.displayName||l.name),1),e.createElementVNode("div",Me,[l.isUser&&l.position?(e.openBlock(),e.createElementBlock("span",Ae,e.toDisplayString(l.position),1)):e.createCommentVNode("",!0),l.isUser&&l.department?(e.openBlock(),e.createElementBlock("span",Fe,e.toDisplayString(l.department),1)):e.createCommentVNode("",!0),l.isUser?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",je,e.toDisplayString(l.typeName||"部门"),1)),!l.isUser&&l.userCount?(e.openBlock(),e.createElementBlock("span",We,e.toDisplayString(l.userCount)+"人",1)):e.createCommentVNode("",!0)])])]),e.createVNode(u,{size:"small",variant:"text",shape:"circle",onClick:F=>st(l.id)},{icon:e.withCtx(()=>[e.createVNode(n,{name:"close"})]),_:1},8,["onClick"])],2))),128))]))])])])])]),_:1},8,["visible","width"])}}}),Z=(f,P)=>{const h=f.__vccOpts||f;for(const[c,S]of P)h[c]=S;return h},j=Z(Je,[["__scopeId","data-v-1e0585c3"]]),qe={class:"cd-input-select"},Ge={class:"cd-input-select__option-content"},He={key:0,class:"cd-input-select__option-avatar"},Qe=["src","alt"],Xe={class:"cd-input-select__option-info"},Ye={class:"cd-input-select__option-name"},Ze={key:0,class:"cd-input-select__option-desc"},Ke={key:2,class:"ri-building-line cd-input-select__option-icon"},K=Z(e.defineComponent({name:"CdInputPersonSelector",__name:"InputSelect",props:{modelValue:{},multiple:{type:Boolean,default:!0},placeholder:{default:"搜索用户、部门、职位"},tabs:{},organizations:{}},emits:["update:modelValue","search","load-users"],setup(f,{emit:P}){const h=f,c=P,S=e.ref(),g=e.ref(!1),y=e.ref([]),C=e.ref(void 0),B=e.ref(!1),p=e.ref([]),m=e.ref([]),D=e.computed(()=>{const s=new Set(m.value.map(d=>d.id));return[...m.value,...y.value.filter(d=>!s.has(d.id))]}),R=s=>s?s.substring(0,2).toUpperCase():"",z=s=>{const i=["#1890ff","#52c41a","#faad14","#f5222d","#722ed1","#13c2c2","#eb2f96","#fa8c16"];let d=0;for(let k=0;k<s.length;k++)d=s.charCodeAt(k)+((d<<5)-d);return i[Math.abs(d)%i.length]},I=s=>{s&&s.trim()?(g.value=!0,c("search",{keyword:s,callback:i=>{y.value=i,g.value=!1}})):(y.value=[],g.value=!1)},W=s=>{const i=Array.isArray(s)?s:s?[s]:[],d=h.modelValue.map(a=>a.id),k=i.filter(a=>!d.includes(a)),V=d.filter(a=>!i.includes(a));if(k.length>0){const a=k.map(b=>D.value.find(H=>H.id===b)).filter(Boolean);if(!h.multiple)c("update:modelValue",a),m.value=a,y.value=[];else{const b=[...h.modelValue,...a];c("update:modelValue",b),m.value=b}}if(V.length>0){const a=h.modelValue.filter(b=>!V.includes(b.id));c("update:modelValue",a),m.value=a}},L=s=>{const i=h.modelValue.filter(d=>d.id!==s);c("update:modelValue",i),m.value=i},M=()=>{B.value=!0},J=s=>{const i=s.map(d=>{const k=d.displayName||d.name||d.title||String(d.id);return{id:d.id,name:k,avatar:d.avatar||"",department:d.department||"",position:d.position||"",phone:d.phone||"",isUser:d.isUser!==!1}});if(!h.multiple)c("update:modelValue",i.slice(0,1)),m.value=i.slice(0,1);else{const d=new Set(h.modelValue.map(a=>a.id)),k=i.filter(a=>!d.has(a.id)),V=[...h.modelValue,...k];c("update:modelValue",V),m.value=V}B.value=!1},q=s=>{c("load-users",s)},G=s=>{c("search",{keyword:s.keyword,callback:s.callback})};return e.watch(()=>h.modelValue,s=>{h.multiple?C.value=s.map(i=>i.id):C.value=s.length>0?s[0].id:void 0,p.value=s.map(i=>i.id),m.value=s},{immediate:!0,deep:!0}),(s,i)=>{const d=e.resolveComponent("t-tag"),k=e.resolveComponent("t-option"),V=e.resolveComponent("t-select");return e.openBlock(),e.createElementBlock("div",qe,[e.createVNode(V,{ref_key:"selectRef",ref:S,modelValue:C.value,"onUpdate:modelValue":i[0]||(i[0]=a=>C.value=a),multiple:f.multiple,placeholder:f.placeholder,filterable:!0,filter:()=>!0,loading:g.value,"reserve-keyword":!1,"allow-input":!0,size:"medium",class:"cd-input-select__select",onSearch:I,onChange:W},{valueDisplay:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,a=>(e.openBlock(),e.createBlock(d,{key:a.id,closable:"",size:"medium",variant:a.isUser===!1?"outline":"light",theme:a.isUser===!1?"primary":"default",onClose:()=>L(a.id),class:"cd-input-select__tag"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(a.name),1)]),_:2},1032,["variant","theme","onClose"]))),128))]),suffixIcon:e.withCtx(()=>[e.createElementVNode("i",{class:"ri-add-circle-line cd-input-select__add-icon",onClick:e.withModifiers(M,["stop"])})]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(D.value,a=>(e.openBlock(),e.createBlock(k,{key:a.id,value:a.id,label:a.name,class:"cd-input-select__option"},{default:e.withCtx(()=>[e.createElementVNode("div",Ge,[a.avatar?(e.openBlock(),e.createElementBlock("div",He,[e.createElementVNode("img",{src:a.avatar,alt:a.name},null,8,Qe)])):(e.openBlock(),e.createElementBlock("div",{key:1,class:"cd-input-select__option-avatar cd-input-select__option-avatar--placeholder",style:e.normalizeStyle({backgroundColor:a.isUser===!1?"#e6f4ff":z(a.name),color:a.isUser===!1?"#0052d9":"#fff"})},e.toDisplayString(R(a.name)),5)),e.createElementVNode("div",Xe,[e.createElementVNode("div",Ye,e.toDisplayString(a.name),1),a.department||a.position?(e.openBlock(),e.createElementBlock("div",Ze,e.toDisplayString(a.department)+e.toDisplayString(a.department&&a.position?" · ":"")+e.toDisplayString(a.position),1)):e.createCommentVNode("",!0)]),a.isUser===!1?(e.openBlock(),e.createElementBlock("i",Ke)):e.createCommentVNode("",!0)])]),_:2},1032,["value","label"]))),128))]),_:1},8,["modelValue","multiple","placeholder","loading"]),f.tabs&&f.tabs.length>0&&B.value?(e.openBlock(),e.createBlock(j,{key:0,visible:B.value,"onUpdate:visible":i[1]||(i[1]=a=>B.value=a),modelValue:p.value,"onUpdate:modelValue":i[2]||(i[2]=a=>p.value=a),tabs:f.tabs,organizations:f.organizations||[],"show-org":!1,"show-search":!0,multiple:f.multiple,tips:"选择要添加的人员",onConfirm:J,onLoadUsers:q,onSearch:G},null,8,["visible","modelValue","tabs","organizations","multiple"])):e.createCommentVNode("",!0)])}}}),[["__scopeId","data-v-26709bdb"]]),ve={install(f){f.component("PersonSelector",j),f.component("CdInputPersonSelector",K)}};w.InputSelect=K,w.PersonSelector=j,w.default=ve,Object.defineProperties(w,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
1
+ (function(w,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(w=typeof globalThis<"u"?globalThis:w||self,e(w.CdPersonSelector={},w.Vue))})(this,function(w,e){"use strict";const se={class:"cd-ps-container"},ce={key:0,class:"cd-ps-tips"},de={key:1,class:"cd-ps-search"},ie={key:0,class:"cd-ps-org-select"},re={class:"cd-ps-search-input"},pe={class:"cd-ps-content"},me={class:"cd-ps-left"},fe={key:0,class:"cd-ps-search-results"},he={class:"cd-ps-search-header"},ue={key:0,class:"cd-ps-loading"},ke={key:1,class:"cd-ps-empty"},_e={key:2,class:"cd-ps-result-list"},Ve=["onClick"],ge={class:"cd-ps-avatar"},ye={class:"cd-ps-info"},Ce={class:"cd-ps-name"},Be={class:"cd-ps-meta"},Ne={key:0},Ee={key:1},Se={key:2},be={class:"cd-ps-tree"},xe={class:"cd-ps-node-name"},we={key:0,class:"cd-ps-position"},Ue={key:0,class:"cd-ps-count"},Ie={key:1,class:"cd-ps-empty"},De={class:"cd-ps-right"},ze={class:"cd-ps-right-header"},Te={class:"cd-ps-num"},Pe={class:"cd-ps-right-list"},Oe={key:0,class:"cd-ps-empty"},$e={key:1,class:"cd-ps-selected-list"},Le={class:"cd-ps-item-info"},Re={class:"cd-ps-info"},Me={class:"cd-ps-name"},Ae={class:"cd-ps-meta"},Fe={key:0},je={key:1},We={key:2},Je={key:3},qe=e.defineComponent({__name:"PersonSelector",props:{visible:{type:Boolean,default:!1},tabs:{default:()=>[]},organizations:{default:()=>[]},modelValue:{default:()=>[]},dialogWidth:{default:"900px"},tips:{default:""},showSearch:{type:Boolean,default:!0},showOrg:{type:Boolean,default:!0},multiple:{type:Boolean,default:!0}},emits:["update:visible","update:modelValue","confirm","load-users","search","org-change"],setup(f,{expose:$,emit:u}){var le,ae;const c=f,g=u,y=e.ref(c.visible),B=e.ref(((ae=(le=c.tabs)==null?void 0:le[0])==null?void 0:ae.key)||""),C=e.ref(null),b=e.ref(""),r=e.ref([]),h=e.ref(new Map),T=e.ref({}),L=e.ref(!1),P=e.ref(!1),D=e.ref([]),G=e.computed(()=>c.tabs||[]),M=e.computed(()=>c.organizations||[]),A=e.computed(()=>c.tips||""),F=e.computed(()=>c.showSearch),H=e.computed(()=>c.showOrg),Q=e.computed(()=>c.dialogWidth),U=e.ref({});e.watch(()=>c.tabs,o=>{if(o&&o.length>0){const t={};o.forEach(a=>{t[a.key]=JSON.parse(JSON.stringify(a.tree))}),U.value=t,(!B.value||!o.find(a=>a.key===B.value))&&(B.value=o[0].key)}},{immediate:!0,deep:!0});function j(){if(c.modelValue&&c.modelValue.length>0){const o=c.modelValue[0];typeof o=="object"&&o!==null&&"id"in o?(r.value=c.modelValue.map(t=>t.id),h.value.clear(),c.modelValue.forEach(t=>{h.value.set(t.id,t)})):r.value=[...c.modelValue]}else r.value=[],h.value.clear()}e.watch(()=>c.modelValue,o=>{y.value&&o&&j()},{deep:!0}),e.watch(()=>c.visible,o=>{y.value=o,o&&(j(),c.organizations.length>0&&!C.value&&(C.value=c.organizations[0].id))}),e.watch(y,o=>{g("update:visible",o)});function n(o,t){t&&(T.value[o]=t)}function i(o,t){for(const a of o){if(a.id===t)return a;if(a.children){const p=i(a.children,t);if(p)return p}}return null}const d=e.computed(()=>r.value.map(o=>h.value.get(o)).filter(Boolean));function k(o,t){r.value.includes(o)||r.value.push(o),h.value.set(o,t)}function S(o){r.value=r.value.filter(t=>t!==o),h.value.delete(o)}const m=()=>{b.value=""},s=o=>{const t={};c.tabs.forEach(a=>{t[a.key]=[]}),U.value=t,g("org-change",o)};let z=null;const X=()=>{if(z&&clearTimeout(z),!b.value.trim()){Y();return}L.value=!0,P.value=!0,z=setTimeout(()=>tt(),300)},tt=()=>{D.value=[];const o=t=>{D.value=t.map(a=>({...a,isUser:!0})),P.value=!1};g("search",{keyword:b.value,orgId:C.value||void 0,callback:o})},Y=()=>{z&&(clearTimeout(z),z=null),L.value=!1,b.value="",D.value=[],P.value=!1},ot=o=>{r.value.indexOf(o.id)>-1?S(o.id):(c.multiple||(r.value=[],h.value.clear()),k(o.id,{...o,isUser:!0,typeName:"搜索结果",orgId:C.value}),c.multiple||Z())};function lt(o){const t=[],a=p=>{for(const x of p)t.push(x.id),x.children&&a(x.children)};return a(o),t}const at=(o,t)=>{var _,N;const a=t==null?void 0:t.node;if(a){const E=a.value??((_=a.data)==null?void 0:_.id);if(E!==void 0){if(a.checked){c.multiple||(r.value=[],h.value.clear());const O=c.tabs.find(K=>K.key===B.value),R=O?O.name.replace(/^按/,""):"";k(E,{...a.data,typeName:R,orgId:C.value}),!c.multiple&&((N=a.data)!=null&&N.isUser)&&Z()}else S(E);return}}const p=U.value[B.value]||[],x=lt(p),I=r.value.filter(E=>!x.includes(E));r.value=[...I,...o]};function te(o,t,a){for(const p of o){if(p.id===t)return p.children=p.children||[],p.children.push(...a),p.loaded=!0,!0;if(p.children&&te(p.children,t,a))return!0}return!1}async function nt(o,t){const a=o.value,p=T.value[t];g("load-users",{tabKey:t,nodeId:a,node:o,callback:async I=>{if(I.length>0){const _=I.map(E=>{const{id:W,name:O,...R}=E;return{...R,id:W,name:E.displayName||O,isUser:!0}}),N=U.value[t];if(N&&te(N,a,_),p){p.appendTo(a,_),o.data.loaded=!0,await e.nextTick();try{p.setItem(a,{expanded:!0})}catch{}}}else{o.data.loaded=!0;const _=U.value[t];if(_){const N=i(_,a);N&&(N.loaded=!0)}}}})}const st=o=>{S(o)},oe=()=>{r.value=[],h.value.clear()},Z=()=>{g("update:modelValue",r.value),g("confirm",d.value),y.value=!1},ct=()=>{y.value=!1};return $({clearSelection:oe,appendUsers:(o,t,a)=>{const p=T.value[o];if(p&&a.length>0){const x=a.map(I=>{const{id:_,name:N,...E}=I;return{...E,id:_,name:I.displayName||N,isUser:!0}});p.appendTo(t,x)}}}),(o,t)=>{const a=e.resolveComponent("t-icon"),p=e.resolveComponent("t-option"),x=e.resolveComponent("t-select"),I=e.resolveComponent("t-input"),_=e.resolveComponent("t-button"),N=e.resolveComponent("t-loading"),E=e.resolveComponent("t-checkbox"),W=e.resolveComponent("t-tree"),O=e.resolveComponent("t-tab-panel"),R=e.resolveComponent("t-tabs"),K=e.resolveComponent("t-dialog");return e.openBlock(),e.createBlock(K,{visible:y.value,"onUpdate:visible":t[4]||(t[4]=l=>y.value=l),header:"选择人员",width:Q.value,footer:!0,placement:"center","destroy-on-close":"",onConfirm:Z,onClose:ct},{default:e.withCtx(()=>[e.createElementVNode("div",se,[A.value?(e.openBlock(),e.createElementBlock("div",ce,[e.createVNode(a,{name:"info-circle"}),e.createElementVNode("span",null,e.toDisplayString(A.value),1)])):e.createCommentVNode("",!0),F.value?(e.openBlock(),e.createElementBlock("div",de,[H.value&&M.value.length>0?(e.openBlock(),e.createElementBlock("div",ie,[e.createVNode(x,{modelValue:C.value,"onUpdate:modelValue":t[0]||(t[0]=l=>C.value=l),placeholder:"选择组织",style:{width:"200px"},onChange:s},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(M.value,l=>(e.openBlock(),e.createBlock(p,{key:l.id,value:l.id,label:l.displayName||l.name},null,8,["value","label"]))),128))]),_:1},8,["modelValue"])])):e.createCommentVNode("",!0),e.createElementVNode("div",re,[e.createVNode(I,{modelValue:b.value,"onUpdate:modelValue":t[1]||(t[1]=l=>b.value=l),placeholder:"输入手机号/工号/姓名/部门/职位搜索",clearable:"",onInput:X,onClear:Y},{"prefix-icon":e.withCtx(()=>[e.createVNode(a,{name:"search"})]),_:1},8,["modelValue"])])])):e.createCommentVNode("",!0),e.createElementVNode("div",pe,[e.createElementVNode("div",me,[L.value?(e.openBlock(),e.createElementBlock("div",fe,[e.createElementVNode("div",he,[t[6]||(t[6]=e.createElementVNode("span",null,"搜索结果",-1)),e.createVNode(_,{size:"small",variant:"text",onClick:Y},{default:e.withCtx(()=>[...t[5]||(t[5]=[e.createTextVNode("返回",-1)])]),_:1})]),P.value?(e.openBlock(),e.createElementBlock("div",ue,[e.createVNode(N),t[7]||(t[7]=e.createElementVNode("span",null,"搜索中...",-1))])):D.value.length===0?(e.openBlock(),e.createElementBlock("div",ke,[e.createVNode(a,{name:"search",size:"48px",style:{color:"#ddd"}}),t[8]||(t[8]=e.createElementVNode("p",null,"未找到匹配的人员",-1))])):(e.openBlock(),e.createElementBlock("div",_e,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(D.value,l=>(e.openBlock(),e.createElementBlock("div",{key:l.id,class:e.normalizeClass(["cd-ps-result-item",{"cd-ps-selected":r.value.includes(l.id)}]),onClick:J=>ot(l)},[e.createVNode(E,{checked:r.value.includes(l.id),onClick:t[2]||(t[2]=e.withModifiers(()=>{},["stop"]))},null,8,["checked"]),e.createElementVNode("div",ge,[e.createVNode(a,{name:"user"})]),e.createElementVNode("div",ye,[e.createElementVNode("div",Ce,e.toDisplayString(l.displayName||l.name),1),e.createElementVNode("div",Be,[l.position?(e.openBlock(),e.createElementBlock("span",Ne,e.toDisplayString(l.position),1)):e.createCommentVNode("",!0),l.department?(e.openBlock(),e.createElementBlock("span",Ee,e.toDisplayString(l.department),1)):e.createCommentVNode("",!0),l.phone?(e.openBlock(),e.createElementBlock("span",Se,e.toDisplayString(l.phone),1)):e.createCommentVNode("",!0)])])],10,Ve))),128))]))])):(e.openBlock(),e.createBlock(R,{key:1,modelValue:B.value,"onUpdate:modelValue":t[3]||(t[3]=l=>B.value=l),onChange:m},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(G.value,l=>(e.openBlock(),e.createBlock(O,{key:l.key,value:l.key,label:l.name},{default:e.withCtx(()=>{var J;return[e.createElementVNode("div",be,[((J=U.value[l.key])==null?void 0:J.length)>0?(e.openBlock(),e.createBlock(W,{key:0,ref_for:!0,ref:V=>n(l.key,V),data:U.value[l.key],keys:{value:"id",label:"name",children:"children"},hover:"",checkable:"","expand-all":!1,value:r.value,onChange:at},{label:e.withCtx(({node:V})=>{var ne;return[e.createElementVNode("div",{class:e.normalizeClass(["cd-ps-node",{"cd-ps-node-user":V.data.isUser}])},[e.createVNode(a,{name:V.data.isUser?"user":l.icon||"folder"},null,8,["name"]),e.createElementVNode("span",xe,[e.createTextVNode(e.toDisplayString(V.label)+" ",1),V.data.isUser&&V.data.position?(e.openBlock(),e.createElementBlock("span",we,e.toDisplayString(V.data.position),1)):e.createCommentVNode("",!0)]),V.data.userCount&&!V.data.isUser?(e.openBlock(),e.createElementBlock("span",Ue,"("+e.toDisplayString(V.data.userCount)+")",1)):e.createCommentVNode("",!0),!V.data.isUser&&!((ne=V.data.children)!=null&&ne.length)&&!V.data.loaded?(e.openBlock(),e.createBlock(_,{key:1,size:"small",variant:"text",class:"cd-ps-load-btn",onClick:e.withModifiers(it=>nt(V,l.key),["stop"])},{default:e.withCtx(()=>[...t[9]||(t[9]=[e.createTextVNode("显示人员",-1)])]),_:1},8,["onClick"])):e.createCommentVNode("",!0)],2)]}),_:2},1032,["data","value"])):(e.openBlock(),e.createElementBlock("div",Ie,[e.createVNode(a,{name:l.icon||"folder-open",size:"48px",style:{color:"#ddd"}},null,8,["name"]),t[10]||(t[10]=e.createElementVNode("p",null,"暂无数据",-1))]))])]}),_:2},1032,["value","label"]))),128))]),_:1},8,["modelValue"]))]),e.createElementVNode("div",De,[e.createElementVNode("div",ze,[t[12]||(t[12]=e.createElementVNode("span",{class:"cd-ps-title"},"已选择",-1)),e.createElementVNode("span",Te,e.toDisplayString(d.value.length)+" 项",1),d.value.length>0?(e.openBlock(),e.createBlock(_,{key:0,size:"small",variant:"text",onClick:oe},{default:e.withCtx(()=>[...t[11]||(t[11]=[e.createTextVNode("清空",-1)])]),_:1})):e.createCommentVNode("",!0)]),e.createElementVNode("div",Pe,[d.value.length===0?(e.openBlock(),e.createElementBlock("div",Oe,[e.createVNode(a,{name:"user-checked",size:"64px",style:{color:"#ddd"}}),t[13]||(t[13]=e.createElementVNode("p",null,"暂无选择",-1))])):(e.openBlock(),e.createElementBlock("div",$e,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,l=>(e.openBlock(),e.createElementBlock("div",{key:l.id,class:e.normalizeClass(["cd-ps-selected-item",{"cd-ps-dept-item":!l.isUser}])},[e.createElementVNode("div",Le,[e.createElementVNode("div",{class:e.normalizeClass(["cd-ps-avatar",{"cd-ps-avatar-dept":!l.isUser}])},[e.createVNode(a,{name:l.isUser?"user":"folder"},null,8,["name"])],2),e.createElementVNode("div",Re,[e.createElementVNode("div",Me,e.toDisplayString(l.displayName||l.name),1),e.createElementVNode("div",Ae,[l.isUser&&l.position?(e.openBlock(),e.createElementBlock("span",Fe,e.toDisplayString(l.position),1)):e.createCommentVNode("",!0),l.isUser&&l.department?(e.openBlock(),e.createElementBlock("span",je,e.toDisplayString(l.department),1)):e.createCommentVNode("",!0),l.isUser?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",We,e.toDisplayString(l.typeName||"部门"),1)),!l.isUser&&l.userCount?(e.openBlock(),e.createElementBlock("span",Je,e.toDisplayString(l.userCount)+"人",1)):e.createCommentVNode("",!0)])])]),e.createVNode(_,{size:"small",variant:"text",shape:"circle",onClick:J=>st(l.id)},{icon:e.withCtx(()=>[e.createVNode(a,{name:"close"})]),_:1},8,["onClick"])],2))),128))]))])])])])]),_:1},8,["visible","width"])}}}),v=(f,$)=>{const u=f.__vccOpts||f;for(const[c,g]of $)u[c]=g;return u},q=v(qe,[["__scopeId","data-v-1e0585c3"]]),Ge={class:"cd-input-select"},He={class:"cd-input-select__option-content"},Qe={key:0,class:"cd-input-select__option-avatar"},Xe=["src","alt"],Ye={class:"cd-input-select__option-info"},Ze={class:"cd-input-select__option-name"},Ke={key:0,class:"cd-input-select__option-desc"},ve={key:2,class:"ri-building-line cd-input-select__option-icon"},ee=v(e.defineComponent({name:"CdInputPersonSelector",__name:"InputSelect",props:{modelValue:{},multiple:{type:Boolean,default:!0},placeholder:{default:"搜索用户、部门、职位"},tabs:{},organizations:{},showSelector:{type:Boolean,default:!0}},emits:["update:modelValue","search","load-users"],setup(f,{emit:$}){const u=f,c=$,g=e.ref(!1),y=e.ref([]),B=e.ref(void 0),C=e.ref(!1),b=e.ref([]),r=e.ref([]),h=e.ref(!1),T=e.computed(()=>{const n=new Set(r.value.map(d=>d.id));return[...r.value,...y.value.filter(d=>!n.has(d.id))]}),L=n=>n?n.substring(0,2).toUpperCase():"",P=n=>{const i=["#1890ff","#52c41a","#faad14","#f5222d","#722ed1","#13c2c2","#eb2f96","#fa8c16"];let d=0;for(let k=0;k<n.length;k++)d=n.charCodeAt(k)+((d<<5)-d);return i[Math.abs(d)%i.length]},D=n=>{n&&n.trim()?(h.value=!0,g.value=!0,c("search",{keyword:n,callback:i=>{y.value=i,g.value=!1}})):(y.value=[],g.value=!1,h.value=!1)},G=n=>{n&&y.value.length===0&&(h.value=!1)},M=n=>{const i=Array.isArray(n)?n:n?[n]:[],d=u.modelValue.map(m=>m.id),k=i.filter(m=>!d.includes(m)),S=d.filter(m=>!i.includes(m));if(k.length>0){const m=k.map(s=>T.value.find(X=>X.id===s)).filter(Boolean);if(!u.multiple)c("update:modelValue",m),r.value=m,y.value=[],h.value=!1;else{const s=[...u.modelValue,...m];c("update:modelValue",s),r.value=s}}if(S.length>0){const m=u.modelValue.filter(s=>!S.includes(s.id));c("update:modelValue",m),r.value=m}},A=n=>{const i=u.modelValue.filter(d=>d.id!==n);c("update:modelValue",i),r.value=i},F=n=>{n&&typeof n.stopPropagation=="function"&&n.stopPropagation(),n&&typeof n.preventDefault=="function"&&n.preventDefault(),h.value=!1,H()},H=()=>{C.value=!0},Q=n=>{const i=n.map(d=>{const k=d.displayName||d.name||d.title||String(d.id);return{id:d.id,name:k,avatar:d.avatar||"",department:d.department||"",position:d.position||"",phone:d.phone||"",isUser:d.isUser!==!1}});if(!u.multiple)c("update:modelValue",i.slice(0,1)),r.value=i.slice(0,1);else{const d=new Set(u.modelValue.map(m=>m.id)),k=i.filter(m=>!d.has(m.id)),S=[...u.modelValue,...k];c("update:modelValue",S),r.value=S}C.value=!1},U=n=>{c("load-users",n)},j=n=>{c("search",{keyword:n.keyword,callback:n.callback})};return e.watch(()=>u.modelValue,n=>{u.multiple?B.value=n.map(i=>i.id):B.value=n.length>0?n[0].id:void 0,b.value=n.map(i=>i.id),r.value=n},{immediate:!0,deep:!0}),(n,i)=>{const d=e.resolveComponent("t-icon"),k=e.resolveComponent("t-tag"),S=e.resolveComponent("t-option"),m=e.resolveComponent("t-select");return e.openBlock(),e.createElementBlock("div",Ge,[e.createVNode(m,{ref:"selectRef",modelValue:B.value,"onUpdate:modelValue":i[0]||(i[0]=s=>B.value=s),multiple:f.multiple,placeholder:f.placeholder,filterable:!0,filter:()=>!0,loading:g.value,"reserve-keyword":!1,"allow-input":!0,"popup-visible":h.value,"onUpdate:popupVisible":i[1]||(i[1]=s=>h.value=s),size:"medium",class:"cd-input-select__select",onSearch:D,onChange:M,onPopupVisibleChange:G},e.createSlots({valueDisplay:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,s=>(e.openBlock(),e.createBlock(k,{key:s.id,closable:"",size:"medium",variant:s.isUser===!1?"outline":"light",theme:s.isUser===!1?"primary":"default",onClose:()=>A(s.id),class:"cd-input-select__tag"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.name),1)]),_:2},1032,["variant","theme","onClose"]))),128))]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(T.value,s=>(e.openBlock(),e.createBlock(S,{key:s.id,value:s.id,label:s.name,class:"cd-input-select__option"},{default:e.withCtx(()=>[e.createElementVNode("div",He,[s.avatar?(e.openBlock(),e.createElementBlock("div",Qe,[e.createElementVNode("img",{src:s.avatar,alt:s.name},null,8,Xe)])):(e.openBlock(),e.createElementBlock("div",{key:1,class:"cd-input-select__option-avatar cd-input-select__option-avatar--placeholder",style:e.normalizeStyle({backgroundColor:s.isUser===!1?"#e6f4ff":P(s.name),color:s.isUser===!1?"#0052d9":"#fff"})},e.toDisplayString(L(s.name)),5)),e.createElementVNode("div",Ye,[e.createElementVNode("div",Ze,e.toDisplayString(s.name),1),s.department||s.position?(e.openBlock(),e.createElementBlock("div",Ke,e.toDisplayString(s.department)+e.toDisplayString(s.department&&s.position?" · ":"")+e.toDisplayString(s.position),1)):e.createCommentVNode("",!0)]),s.isUser===!1?(e.openBlock(),e.createElementBlock("i",ve)):e.createCommentVNode("",!0)])]),_:2},1032,["value","label"]))),128))]),_:2},[f.showSelector?{name:"suffix",fn:e.withCtx(()=>[e.createVNode(d,{name:"search",onClick:F})]),key:"0"}:void 0,f.showSelector?{name:"suffixIcon",fn:e.withCtx(()=>[e.createElementVNode("i",{class:"ri-add-circle-line cd-input-select__add-icon",onClick:F})]),key:"1"}:void 0]),1032,["modelValue","multiple","placeholder","loading","popup-visible"]),f.tabs&&f.tabs.length>0&&C.value?(e.openBlock(),e.createBlock(q,{key:0,visible:C.value,"onUpdate:visible":i[2]||(i[2]=s=>C.value=s),modelValue:b.value,"onUpdate:modelValue":i[3]||(i[3]=s=>b.value=s),tabs:f.tabs,organizations:f.organizations||[],"show-org":!1,"show-search":!0,multiple:f.multiple,tips:"选择要添加的人员",onConfirm:Q,onLoadUsers:U,onSearch:j},null,8,["visible","modelValue","tabs","organizations","multiple"])):e.createCommentVNode("",!0)])}}}),[["__scopeId","data-v-3180b8c7"]]),et={install(f){f.component("PersonSelector",q),f.component("CdInputPersonSelector",ee)}};w.InputSelect=ee,w.PersonSelector=q,w.default=et,Object.defineProperties(w,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});