epic-designer-gold
Version:
基于vue3的设计器,可视化开发页面表单
2 lines (1 loc) • 4.85 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("vue"),j=require("./index-DqKiZufS.cjs"),b=require("./index-BoL2PSBk.cjs"),z=require("element-plus"),Z=require("./_plugin-vue_export-helper-BHFhmbuH.cjs"),W=a.defineComponent({__name:"selectPage",props:{modelValue:[String,Number],placeholder:String,requestFn:{type:Function,default:()=>{}},valueKey:{type:String,default:"value"},labelKey:{type:String,default:"label"},pageSize:{type:Number,default:20},defaultData:{type:Object,default:()=>{}},componentSchema:{type:Object,default:()=>{}},sourceDateUrl:{type:String,default:""}},emits:["update:modelValue","update:modelValueLabel"],setup(_,{emit:A}){const O=`paginated-select-dropdown-${Math.random().toString(36).slice(2,8)}`,t=_,B=A,v=a.ref(t.modelValue);a.watch(()=>t.modelValue,e=>{v.value=e}),a.watch(v,e=>{B("update:modelValue",e);let l=u.value.find(o=>o.value===e);B("update:modelValueLabel",{label:l.label||t.defaultData.label,value:l.value||t.defaultData.value})});const u=a.ref(t.defaultData&&Object.keys(t.defaultData).length?[t.defaultData]:[]),p=a.ref(!1),f=a.ref(0),c=a.ref(1),T=a.ref(""),m=a.ref(!1),d=a.ref(null),h=a.ref(null);function k(){u.value=[],f.value=0,c.value=1,m.value=!1}function N(e=window.location.href){const l={},o=e.split("?")[1];return o&&o.split("&").forEach(r=>{const[i,g]=r.split("=");i&&(l[i]=decodeURIComponent(g||""))}),l}async function y(){var l,o,r,i,g,q,x,E,C,K;if(p.value||m.value)return;const e=N(n.value.url);p.value=!0;try{const s=await j.axios({url:n.value.url.split("?")[0],method:n.value.method,data:n.value.body?JSON.parse(n.value.body):{},params:n.value.params?{...e,...JSON.parse(n.value.params),[`${(o=(l=t==null?void 0:t.componentSchema)==null?void 0:l.componentProps)==null?void 0:o.pageKey}`]:c.value,[`${(i=(r=t==null?void 0:t.componentSchema)==null?void 0:r.componentProps)==null?void 0:i.searchKey}`]:T.value}:{...e},headers:{...JSON.parse(n.value.headers),Authorization:"Bearer "+b.api.get("Admin-Token"),lang:b.api.get("saas-locale")||"zh-CN",zone:Intl.DateTimeFormat().resolvedOptions().timeZone}});if(n.value&&n.value.dataPath){const J=((g=n.value)==null?void 0:g.dataPath.split(".")).reduce((P,D)=>P[D],s.data),L=(q=n.value)==null?void 0:q.dataPath.split(".");L.pop();const R=L.reduce((P,D)=>P[D],s.data);let U=S(J,n.value.dataKey,n.value.dataValue);c.value===1?u.value=U:u.value=u.value.concat(U),f.value=R[(E=(x=t==null?void 0:t.componentSchema)==null?void 0:x.componentProps)==null?void 0:E.pageTotalKey]}else{let V=S(s.data,n.value.dataKey,n.value.dataValue);c.value===1?u.value=V:u.value=u.value.concat(V),f.value=s.data[(K=(C=t==null?void 0:t.componentSchema)==null?void 0:C.componentProps)==null?void 0:K.pageTotalKey]}u.value.length>=f.value&&(m.value=!0)}catch(s){console.error("fetch error:",s)}finally{p.value=!1}}const n=a.ref();function S(e,l,o){return e&&Object.prototype.toString.call(e)==="[object Array]"?e.map(r=>r.children&&r.children.length?{label:r[l],value:r[o]+"",children:S(r.children,l,o)}:{label:r[l],value:r[o]+""}):[]}async function F(){var l,o;let e=await j.axios({url:t.sourceDateUrl,method:"get",params:{id:(o=(l=t==null?void 0:t.componentSchema)==null?void 0:l.componentProps)==null?void 0:o.dynamicId},headers:{Authorization:"Bearer "+b.api.get("Admin-Token"),lang:b.api.get("saas-locale")||"zh-CN",zone:Intl.DateTimeFormat().resolvedOptions().timeZone}});e.data.code===200&&(n.value=e.data.data)}a.watch(()=>t.sourceDateUrl,()=>{t.sourceDateUrl&&F()},{immediate:!0});function I(e){T.value=e,c.value=1,k(),y()}function $(e){e?(k(),y(),a.nextTick(()=>setTimeout(M,0))):H()}function M(){const e=document.querySelector(`.${O} .el-select-dropdown__wrap`);e?(d.value=e,e.addEventListener("scroll",w)):(h.value=new MutationObserver(()=>{const l=document.querySelector(".paginated-select-dropdown .el-select-dropdown__wrap");l&&(d.value=l,l.addEventListener("scroll",w),h.value.disconnect())}),h.value.observe(document.body,{childList:!0,subtree:!0}))}function H(){var e;d.value&&d.value.removeEventListener("scroll",w),(e=h.value)==null||e.disconnect()}function w(){const e=d.value;if(!e||p.value||m.value)return;e.scrollTop+e.clientHeight>=e.scrollHeight-10&&(c.value++,y())}return(e,l)=>(a.openBlock(),a.createBlock(a.unref(z.ElSelect),{modelValue:v.value,"onUpdate:modelValue":l[0]||(l[0]=o=>v.value=o),filterable:"",remote:"",clearable:"",placeholder:_.placeholder,"remote-method":I,loading:!1,teleported:!0,onVisibleChange:$,"popper-class":O,style:{width:"100%"}},{default:a.withCtx(()=>[(a.openBlock(!0),a.createElementBlock(a.Fragment,null,a.renderList(u.value,o=>(a.openBlock(),a.createBlock(a.unref(z.ElOption),{key:o.value,label:o.label,value:o.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue","placeholder"]))}}),G=Z._export_sfc(W,[["__scopeId","data-v-849e6326"]]);exports.default=G;