Files
qhmes/web-dist/js/JSelectMultiple-ByaAeU9_.js
2026-06-16 18:19:57 +08:00

2 lines
5.9 KiB
Java

var V=(e,r,v)=>new Promise((i,l)=>{var p=c=>{try{s(v.next(c))}catch(n){l(n)}},y=c=>{try{s(v.throw(c))}catch(n){l(n)}},s=c=>c.done?i(c.value):Promise.resolve(c.value).then(p,y);s((v=v.apply(e,r)).next())});import{useRuleFormItem as z}from"./useFormItem-b_EqFlJz.js";import{J as I,d as q,as as O,aO as $,dU as E,au as N,aw as x,aH as j,av as J}from"./index-X7Y8jykP.js";import{initDictOptions as M}from"./index-Cq6YxX27.js";import{r as S,c as T,u as b,e as R,o as U,h as k,n as G,y as H,z as w,A as F,C as K,F as Q,D as W,Q as X,T as Y,J as Z,G as ee,H as ae}from"./vue-vendor-DNhG1Cve.js";import"./emoji-mart-vue-fast-R0uJEDq-.js";const te=10,le=300;function ne(e,r,v){const i=S(!1),l=S(1),p=S(!0),y=S(!1),s=S(""),c=T(()=>e.dictCode?e.dictCode.split(",").length>=2:!1),n=T(()=>e.scrollLoad&&c.value);function D(o,f,d){const u=d!==void 0?d:s.value;return q.get({url:`/sys/dict/loadDict/${e.dictCode}`,params:{pageNo:o,pageSize:e.pageSize,keyword:u||"",order:"asc"}}).then(g=>{const a=(g||[]).map(t=>({value:t.value,label:t.text||t.label,text:t.text||t.label,color:t.color}));if(a.length>0){if(f){const t=new Set(r.value.map(C=>String(C.value))),h=a.filter(C=>!t.has(String(C.value)));h.length>0&&(r.value=r.value.concat(h))}else b(v).length&&b(r).length&&b(v).forEach(t=>{const h=b(r).find(C=>String(C.value)===String(t));h&&!a.some(C=>String(C.value)===String(t))&&a.push(h)}),r.value=a;l.value=o+1}else f||(r.value=[]),p.value=!1})}function P(o){return o==null||!e.dictCode?Promise.resolve(null):q.get({url:`/sys/dict/loadDictItem/${e.dictCode}`,params:{key:o}}).then(f=>{var d,u,g,a;if(Array.isArray(f)&&f.length>0){const t=f[0];return typeof t=="string"?{value:o,label:t,text:t,color:void 0}:{value:(d=t.value)!=null?d:o,label:(u=t.text)!=null?u:t.label,text:(a=(g=t.text)!=null?g:t.label)!=null?a:"",color:t.color}}return null}).catch(()=>null)}function m(){if(!n.value)return;const o=v.value;if(!o||o.length===0)return;const f=new Set(r.value.map(u=>String(u.value))),d=o.filter(u=>!f.has(String(u)));d.length!==0&&Promise.all(d.map(u=>P(u))).then(u=>{const g=u.filter(Boolean);g.length>0&&(r.value=[...r.value,...g])})}const L=I(o=>{n.value&&(s.value=o||"",l.value=1,p.value=!0,i.value=!0,D(1,!1,s.value).finally(()=>{i.value=!1,m()}))},le);function A(o){!n.value||!o||s.value&&(s.value="",l.value=1,p.value=!0,i.value=!0,D(1,!1,"").finally(()=>{i.value=!1,m()}))}function _(){n.value&&(l.value=1,p.value=!0,i.value=!0,D(1,!1).finally(()=>{i.value=!1,m()}))}function B(o){if(!n.value)return;const f=o.target,{scrollTop:d,scrollHeight:u,clientHeight:g}=f,a=d+g>=u-te;!y.value&&p.value&&a&&(y.value=!0,D(l.value,!0).finally(()=>{y.value=!1}).catch(()=>{l.value>1&&l.value--}))}return{isDictTable:c,useLoadDict:n,loading:i,loadDictOptions:_,ensureValueInOptions:m,handleSearch:L,handleDropdownVisibleChange:A,handlePopupScroll:B}}const oe=R({name:"JSelectMultiple",components:{},inheritAttrs:!1,props:{value:O.oneOfType([O.string,O.array]),placeholder:{type:String,default:"请选择",required:!1},readOnly:{type:Boolean,required:!1,default:!1},options:{type:Array,default:()=>[],required:!1},triggerChange:{type:Boolean,required:!1,default:!0},spliter:{type:String,required:!1,default:","},popContainer:{type:String,default:"",required:!1},dictCode:{type:String,required:!1},disabled:{type:Boolean,default:!1},useDicColor:{type:Boolean,default:!1},pageSize:{type:Number,default:10},scrollLoad:{type:Boolean,default:!1}},emits:["options-change","change","input","update:value"],setup(e,{emit:r}){const v=S([]),i=S(e.value?Array.isArray(e.value)?e.value:e.value.split(e.spliter):[]),l=S([]),p=$(),[y,,,s]=z(e,"value","change",v),c=ne(e,l,i),{useLoadDict:n,loading:D,loadDictOptions:P,ensureValueInOptions:m,handleSearch:L,handleDropdownVisibleChange:A,handlePopupScroll:_,isDictTable:B}=c,o=T(()=>Array.isArray(l.value)?l.value.map((a,t)=>{const{useDicColor:h}=e,C=a.text||a.label||a.label||"";return{key:a.value+"_"+C+"_"+t,text:C,value:a.value,color:a.color,class:[h&&a.color?"colorText":""],style:{backgroundColor:`${h&&a.color}`}}}):[]);U(()=>{e.dictCode?u():l.value=e.options}),k(()=>e.dictCode,()=>{e.dictCode?u():l.value=e.options}),k(()=>e.value,a=>{a?i.value=Array.isArray(e.value)?e.value:e.value.split(e.spliter):i.value=[],n.value&&m()}),k(()=>e.options,()=>{e.dictCode,l.value=e.options});function f(a){e.triggerChange?(r("change",a.join(e.spliter)),r("update:value",a.join(e.spliter))):(r("input",a.join(e.spliter)),r("update:value",a.join(e.spliter))),G(()=>{s==null||s.onFieldChange()})}function d(a){return e.popContainer?E(a,e.popContainer):a==null?void 0:a.parentNode}function u(){return V(this,null,function*(){var a;if(n.value)P();else{const t=(a=e.dictCode)!=null?a:"";try{const h=yield M(t);l.value=h}catch(h){l.value=[]}}})}function g(a,t){return t.children()[0].children.toLowerCase().indexOf(a.toLowerCase())>=0}return{state:y,attrs:p,getOptions:o,dictOptions:l,onChange:f,arrayValue:i,getParentContainer:d,filterOption:g,isDictTable:B,useLoadDict:n,loading:D,handlePopupScroll:_,handleSearch:L,handleDropdownVisibleChange:A}}});function re(e,r,v,i,l,p){const y=j,s=x,c=J;return w(),H(c,{value:e.arrayValue,onChange:e.onChange,mode:"multiple","filter-option":e.useLoadDict?!1:e.filterOption,disabled:e.disabled,placeholder:e.placeholder,allowClear:"",showSearch:"",getPopupContainer:e.getParentContainer,notFoundContent:e.loading?void 0:null,onSearch:e.handleSearch,onDropdownVisibleChange:e.handleDropdownVisibleChange,onPopupScroll:e.handlePopupScroll},{notFoundContent:F(()=>[e.loading?(w(),H(y,{key:0,size:"small"})):ae("",!0)]),default:F(()=>[(w(!0),K(Q,null,W(e.getOptions,n=>(w(),H(s,{key:n.key,value:n.value,getPopupContainer:e.getParentContainer},{default:F(()=>[X("span",{class:Z(n.class),style:Y(n.style)},ee(n.text),7)]),_:2},1032,["value","getPopupContainer"]))),128))]),_:1},8,["value","onChange","filter-option","disabled","placeholder","getPopupContainer","notFoundContent","onSearch","onDropdownVisibleChange","onPopupScroll"])}const ge=N(oe,[["render",re],["__scopeId","data-v-104f8857"]]);export{ge as default};