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