cd-personselector 1.3.0 → 1.3.1

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