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