AddressCascader-DhKp57xy.js 2.5 KB

1
  1. import{_ as q,k as E,l as I}from"./index-CKIhG1T4.js";import{q as O}from"./index-u84sDJgM.js";import{b as m,f as b,w as V,D as p,E as k,K as g,ad as K,$ as A,U as D,T as F}from"./spreadSheetsDesignerVue-MRUT1X_l.js";import"./spreadSheetsDesignerResourcesCn-afJmEehS.js";import"./spreadSheetsDesigner-vOnK2KEP.js";import"./spreadSheetsBarcode-0B8Cksr7.js";import"./spreadSheetsCharts-DpwtlVVO.js";import"./spreadExcelio-BZ-mA4Op.js";const T={class:"address-cascader"},$=q({__name:"AddressCascader",props:{modelValue:{type:Object,default:()=>({})},loader:{type:Function,required:!0}},emits:["update:modelValue"],setup(w,{emit:_}){const y=w,j=_,s=[{key:"province",placeholder:"\u8BF7\u9009\u62E9\u7701\u4EFD",parentKey:null},{key:"city",placeholder:"\u8BF7\u9009\u62E9\u57CE\u5E02",parentKey:"province"},{key:"district",placeholder:"\u8BF7\u9009\u62E9\u533A\u53BF",parentKey:"city"},{key:"street",placeholder:"\u8BF7\u9009\u62E9\u8857\u9053",parentKey:"city"}],a=m({province:"",city:"",district:"",street:""}),l=m({province:[],city:[],district:[],street:[]}),u=m({province:!1,city:!1,district:!1,street:!1}),f=b(()=>l.district.length>0?"district":"city"),x=t=>t.key==="street"?!a[f.value]:!!t.parentKey&&!a[t.parentKey],c=async t=>{const{key:e}=t;let i=t.parentKey;if(e==="street"&&(i=f.value),(i||e==="province")&&(!i||a[i])){u[e]=!0;try{if(e==="province")l.province=await y.loader();else if(e==="street"){const d=i==="district"?a.district:a.city;l.street=await O({id:d})}else{const d=l[i].find(r=>r.id===a[i]);l[e]=(d==null?void 0:d.children)||[],e==="district"&&l.district.length===0&&await c(s[3])}}finally{u[e]=!1}}},C=b({get:()=>y.modelValue,set:t=>j("update:modelValue",t)});return V(()=>y.modelValue,t=>{Object.assign(a,t),(async()=>{try{for(const e of s)a[e.key]&&await c(e)}catch(e){console.error("\u521D\u59CB\u5316\u5730\u5740\u6570\u636E\u5931\u8D25:",e)}})()},{deep:!0,immediate:!0}),V(a,t=>{C.value={...t}},{deep:!0}),c(s[0]),(t,e)=>{const i=E,d=I;return p(),k("div",T,[(p(),k(g,null,K(s,r=>A(d,{key:r.key,modelValue:a[r.key],"onUpdate:modelValue":o=>a[r.key]=o,placeholder:r.placeholder,disabled:x(r),clearable:"",filterable:"",loading:u[r.key],onChange:o=>(async U=>{const v=s.findIndex(n=>n.key===U.key);s.slice(v+1).forEach(n=>{a[n.key]="",l[n.key]=[]});const h=s[v+1];h&&await c(h)})(r)},{default:D(()=>[(p(!0),k(g,null,K(l[r.key],o=>(p(),F(i,{key:o.id,label:o.name,value:o.id},null,8,["label","value"]))),128))]),_:2},1032,["modelValue","onUpdate:modelValue","placeholder","disabled","loading","onChange"])),64))])}}},[["__scopeId","data-v-064a0871"]]);export{$ as default};