import{K as $,r as E}from"./index.BeV-poOC.js";import{a as j,_ as A,r as p,y as G,f as N,Z,w as T,ae as k,E as q,o as d,H as w,c as h,M as z,a8 as J,b as O,V as Q,R as W,G as X,U as Y,t as ee}from"./vue.D_RgHSVm.js";import{_ as le}from"./_plugin-vue_export-helper.DlAUqK2U.js";const te={class:"option-item"},ae={key:0,class:"empty-content"},oe={key:0,class:"no-data"},ne={key:1,class:"load-more-wrapper"},se={key:2,class:"no-more-data"},ce=j({__name:"index",props:{modelValue:{},tableConfig:{url:null,label:null,value:null,columns:[]},displayLabel:{}},emits:["update:modelValue","change"],setup(D,{emit:M}){const s=D,C=A(),I=M,{ui:P}=$(),v=P.formItem.injectFormItemContext(),B=p(),b=p(),l=p([]),f=p(!1),g=p(!1),y=p(""),u=G({page:1,limit:20,total:0}),o=N(()=>s.tableConfig),x=N(()=>l.value.length{y.value=e,u.page=1;const a=s.modelValue?l.value.find(t=>t[o.value.value]===s.modelValue):null;l.value=[],a&&(l.value=[a]),await S(!1),a&&s.modelValue&&(l.value.find(c=>c[o.value.value]===s.modelValue)||(l.value=[a,...l.value]))},H=async()=>{g.value||!x.value||(u.page+=1,await S(!0))},S=async(e=!1)=>{const a=o.value.url,t={page:u.page,limit:u.limit,has_inventory:1};y.value&&(t.search=y.value);try{e?g.value=!0:f.value=!0;const c=await E({url:a,params:t});if(c.code===2e3){const r=c.data||[];if(u.total=c.total||0,e){const n=new Set(l.value.map(i=>i[o.value.value])),_=r.filter(i=>!n.has(i[o.value.value]));l.value=[...l.value,..._]}else{const n=s.modelValue?l.value.find(_=>_[o.value.value]===s.modelValue):null;l.value=r,n&&s.modelValue?l.value.find(i=>i[o.value.value]===s.modelValue)||(l.value=[n,...l.value]):s.modelValue&&!n&&(l.value.find(i=>i[o.value.value]===s.modelValue)||await V())}}}catch(c){console.error("获取设备列表失败:",c),e||(l.value=[])}finally{f.value=!1,g.value=!1}},V=async e=>{const a=e||s.modelValue;if(a){try{const t=await E({url:`${o.value.url}${a}/`,method:"get"});if(t.code===2e3&&t.data){const c=t.data;return l.value.find(n=>n[o.value.value]===c[o.value.value])||(l.value=[c,...l.value]),c}}catch(t){console.error("加载选中项失败:",t)}return null}},U=async e=>{e?(l.value.length===0&&(u.page=1,y.value="",await S(!1)),await ee(),F()):L()},F=()=>{if(!B.value)return;const e=document.querySelector(".deviceSelectorPopper .el-select-dropdown__wrap");e&&(m=a=>{const t=a.target,c=t.scrollTop,r=t.scrollHeight,n=t.clientHeight;r-c-n<20&&x.value&&!g.value&&!f.value&&H()},e.addEventListener("scroll",m))},L=()=>{if(m){const e=document.querySelector(".deviceSelectorPopper .el-select-dropdown__wrap");e&&m&&e.removeEventListener("scroll",m),m=null}};Z(()=>{L()});const K=async e=>{e&&(l.value.find(t=>t[o.value.value]===e)||await V(e)),I("update:modelValue",e),v==null||v.onChange(),v==null||v.onBlur(),I("change",e),C.onChange&&typeof C.onChange=="function"&&C.onChange(e)};return T(()=>s.modelValue,async e=>{b.value=e,e&&(l.value.find(t=>t[o.value.value]===e)||await V(e))},{immediate:!0}),T(()=>s.displayLabel,e=>{s.modelValue&&e&&l.value.length===0&&V()},{immediate:!0}),(e,a)=>{const t=k("el-option"),c=k("el-button"),r=k("el-select");return d(),q(r,{ref_key:"selectRef",ref:B,"popper-class":"deviceSelectorPopper",class:"deviceSelector",modelValue:b.value,"onUpdate:modelValue":a[0]||(a[0]=n=>b.value=n),placeholder:"请选择设备",onVisibleChange:U,clearable:"",filterable:"",remote:"","remote-method":R,loading:f.value,onChange:K},{empty:w(()=>[f.value?W("",!0):(d(),h("div",ae,[l.value.length===0?(d(),h("div",oe,"暂无数据")):x.value?(d(),h("div",ne,[X(c,{link:"",type:"primary",onClick:H,loading:g.value},{default:w(()=>[...a[1]||(a[1]=[Y(" 加载更多 ",-1)])]),_:1},8,["loading"])])):(d(),h("div",se,"没有更多数据了"))]))]),default:w(()=>[(d(!0),h(z,null,J(l.value,n=>(d(),q(t,{key:n[o.value.value],label:n[o.value.label],value:n[o.value.value]},{default:w(()=>[O("div",te,Q(n[o.value.label]),1)]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue","loading"])}}}),de=le(ce,[["__scopeId","data-v-769660d3"]]);export{de as d};