index-DCVbHCzR.js 13 KB

1
  1. import{d as he,u as be,r as S,I as oe,e as _,f as b,o as s,F as w,g as N,i as z,j as t,k as C,x as E,m as se,K as G,J as Z,w as i,q as O,ai as Ve,D as re,_ as Ce,c as ne,p as Fe,H as $e,U as ee,y as Ee,a3 as h,z as J,aj as te,l as ue,t as de,ak as pe,al as ce,A as ze,am as Me,an as Ue,ao as Ae,ap as ie,aq as Le,ar as De,as as fe,at as ge,au as ve,E as ye,Y as me,$ as xe}from"./index-CS4R6zqy.js";function Ie(n,f){return n.install=L=>{const p=n.name||n.displayName;p&&L.component(p,n)},n}const Ne={style:{display:"flex",gap:"15px","flex-wrap":"wrap",width:"100%"}},Oe=["src","alt","onClick","onLoad","onError"],Be=["onClick"],Re=["src"],Ye=he({__name:"index",props:{isMultiple:{type:Boolean,default:!1},defaultImgList:{type:Array,default:()=>[]},defaultImgUrl:{type:String,default:""},limit:{type:Number,default:20},imgStyle:{type:Object,default:()=>({})},uploadStyle:{type:Object,default:()=>({})},delStyle:{type:Object,default:()=>({})},iconSize:{type:Number,default:27},isPreview:{type:Boolean,default:!1}},emits:["change"],setup(n,{expose:f,emit:L}){const p=n,D=L,{t:r}=be(),u=S(""),V=S(!1),B=S(window.global_config.uploadUrl),m=localStorage.getItem("token"),k=S([]),P=S(!1),g=S([]),d=S("");oe(()=>p.defaultImgList,()=>{g.value=p.defaultImgList},{immediate:!0}),oe(()=>p.defaultImgUrl,()=>{d.value=p.defaultImgUrl,g.value=[],d.value&&g.value.push(d.value)},{immediate:!0});function F(v){k.value[v]=!1}function $(){P.value=!0}function q(v){P.value=!1,v.code===-1?re.error(v.msg):g.value.length===p.limit?re.warning(r("最多可上传")+p.limit+r("张图片")):(g.value.push(v.data),p.isMultiple?D("change",g.value,v.data):D("change",v.data)),k.value.push(!0)}function x(){P.value=!1}function I(v){g.value.splice(v,1),k.value.splice(v,1)}function R(){g.value=[]}const W=v=>{u.value=v,V.value=!0};return f({imgList:g,imgUrl:d,handleDeleteAllImg:R,handleDeleteImg:I}),(v,Y)=>{const M=_("el-icon"),H=_("Loading"),U=_("Plus"),K=_("el-upload"),Q=_("el-dialog");return s(),b(w,null,[N("div",Ne,[(s(!0),b(w,null,E(g.value,(j,y)=>(s(),b("div",{class:Z(["skus-imgs",{loading:k.value[y]}]),key:y,style:G(n.imgStyle),onClick:Y[0]||(Y[0]=se(()=>{},["stop"]))},[N("img",{class:"coverImage",src:j,alt:`图片${y+1}`,onClick:T=>W(j),onLoad:T=>k.value[y]=!1,onError:T=>F(y)},null,40,Oe),N("div",{class:"skus-imgs-del",onClick:se(T=>I(y),["stop"]),style:G(n.delStyle)},[z(M,{color:"#fd4574",size:n.iconSize},{default:i(()=>[z(O(Ve))]),_:1},8,["size"])],12,Be),!n.isMultiple&&!n.isPreview?(s(),t(K,{key:0,action:B.value,headers:{Authorization:O(m)},"show-file-list":!1,"on-success":q,"on-progress":$,"on-error":x,disabled:P.value,multiple:n.isMultiple},{default:i(()=>[N("div",{class:Z(["avatar-uploader-insert",{uploading:P.value}]),style:G({...n.uploadStyle,zIndex:n.isPreview?-1:3})},[P.value?(s(),t(M,{key:0,size:n.iconSize,color:"#67c23a"},{default:i(()=>[z(H)]),_:1},8,["size"])):(s(),t(M,{key:1,size:n.iconSize,color:"#909399"},{default:i(()=>[z(U)]),_:1},8,["size"]))],6)]),_:1},8,["action","headers","disabled","multiple"])):C("",!0)],6))),128)),g.value.length===1&&!n.isMultiple?C("",!0):(s(),t(K,{key:0,action:B.value,headers:{Authorization:O(m)},"show-file-list":!1,"on-success":q,"on-progress":$,"on-error":x,disabled:P.value,multiple:n.isMultiple},{default:i(()=>[N("div",{class:Z(["avatar-uploader",{uploading:P.value}]),style:G(n.uploadStyle)},[P.value?(s(),t(M,{key:0,size:n.iconSize,color:"#67c23a"},{default:i(()=>[z(H)]),_:1},8,["size"])):(s(),t(M,{key:1,size:n.iconSize,color:"#909399"},{default:i(()=>[z(U)]),_:1},8,["size"]))],6)]),_:1},8,["action","headers","disabled","multiple"]))]),z(Q,{modelValue:V.value,"onUpdate:modelValue":Y[1]||(Y[1]=j=>V.value=j),width:"600px"},{default:i(()=>[N("img",{src:u.value,style:{width:"100%"}},null,8,Re)]),_:1},8,["modelValue"])],64)}}}),je=Ce(Ye,[["__scopeId","data-v-1627fee1"]]),He={style:{width:"100%",display:"flex","justify-content":"center"}},Te={key:2},qe=he({__name:"index",emits:["register"],setup(n,{expose:f,emit:L}){const{t:p}=be(),D=S(["select","sync-select","range-time-picker"]),r=ne({}),u=ne({schema:[],rules:{}}),V=S(!1),B={input:ye,select:ve,"sync-select":ve,checkbox:ce,"checkbox-group":ge,"checkbox-button-group":ge,radio:pe,"radio-group":fe,"radio-button-group":fe,switch:De,"date-picker":ie,"time-picker":Le,"range-time-picker":ie,number:Ae,slider:Ue,rate:Me},m=L,k=S(),P=Fe(()=>u.schema.filter(l=>!g(l))),g=l=>typeof l.hidden=="function"?l.hidden(r):l.hidden,d=l=>typeof l.notShow=="function"?l.notShow(r):l.notShow;function F(l,a){r[a.prop]=l}const $=l=>B[l]||ye,q=l=>l.required&&!l.rules?[{required:!0,message:l.type==="select"?p("请选择"):p("请输入"),trigger:l.trigger||"blur"}]:l.rules&&Array.isArray(l.rules)?l.rules.map(a=>({...a,message:a.message||l.type==="select"?p("请选择"):p("请输入"),trigger:a.trigger||"blur"})):l.rules,x=(l,a,c)=>{u.schema.forEach(A=>{A.prop===l&&(A[a]=c)})};function I(l,a){l.syncOptions&&(l.options=l.options.concat(a.map(c=>({...c,label:c[l.syncOptions.label],value:c[l.syncOptions.value]}))))}const R=S({});function W(l,a){l.apiParams[l.syncOptions?.remoteKey]=null,l.apiParams.page=1,l.options=[],R.value=l}function v(l,a){console.log("聚焦"),l.apiParams.page=1,l.options=[],R.value=l,M(l)}function Y(l){l&&u.schema.forEach(a=>{a.prop===R.value.prop&&(a.apiParams.page=1,a.options=[],a.syncOptions?.remoteKey&&(a.apiParams[a.syncOptions?.remoteKey]=l),M(a))})}function M(l){l.api&&(V.value=!0,l.api(l.apiParams,{isHideLoading:!0}).then(a=>{l.count=a.count,Array.isArray(a)?I(l,a):Array.isArray(a.list)&&I(l,a.list),V.value=!1}).catch(()=>{V.value=!1}))}function H(){u.schema.forEach(l=>{l.prop===R.value.prop&&(l.apiParams.page++,l.options||(l.options=[]),M(l))})}const U=S(null),K=l=>{U.value.scrollHeight===0||U.value.clientHeight===0||U.value.scrollHeight-U.value.clientHeight===l.scrollTop&&H()};function Q(l){l&&me(()=>{U.value=document.querySelector(".el-select-dropdown__wrap")})}function j(l){if(!r[l.prop]){r[l.rangeFields[0]]="",r[l.rangeFields[1]]="";return}l.type==="range-time-picker"&&l.rangeFields&&l.rangeFields.length===2&&(r[l.rangeFields[0]]=r[l.prop][0],r[l.rangeFields[1]]=r[l.prop][1])}const y={setConfig(l){Object.assign(u,l),u.schema.length&&u.schema.forEach(a=>{r[a.prop]=a.defaultValue||a.defaultValue===0?a.defaultValue:null,a.api&&(a.apiParams||(a.apiParams={}),a.apiParams.limit||(a.apiParams.limit=20),a.apiParams.page||(a.apiParams.page=1),a.immediate&&a.api(a.apiParams,{isHideLoading:!0}).then(c=>{Array.isArray(c)?I(a,c):Array.isArray(c.list)&&I(a,c.list)})),a.type==="range-time-picker"&&a.rangeFields&&a.rangeFields.length===2&&(u.schema.push({label:"",prop:a.rangeFields[0],type:"input",notShow:!0}),u.schema.push({label:"",prop:a.rangeFields[1],type:"input",notShow:!0}))})},getValues(){return r},reset(){k.value.resetFields()},setValues(l,a){r[l]=a},setFormModel(l){Object.keys(l).forEach(a=>{r[a]=l[a]})},validate(l,a){k.value.validate((c,A)=>{c?l&&l(r):a&&a(A)})},validateField(l,a,c){k.value.validateField(l,(A,X)=>{A?a&&a(r):c&&c(X)})},setSchema:x};function T(){m("register",y)}return $e(()=>{k.value&&m("register",y)}),f({formRef:k,manualRegister:T}),(l,a)=>{const c=_("el-button"),A=_("DArrowLeft"),X=_("el-icon"),le=_("el-radio-button"),ae=_("el-checkbox-button"),ke=_("el-form-item"),_e=_("el-col"),Se=_("el-row"),Pe=_("el-form");return s(),t(Pe,h({ref_key:"formRef",ref:k,model:r},{...u,...l.$attrs},{style:{padding:"10px",...u.elFormStyle}}),{default:i(()=>[z(Se,{gutter:u.gutter},{default:i(()=>[(s(!0),b(w,null,E(P.value,(e,we)=>(s(),b(w,{key:e.prop||we},[g(e)?C("",!0):Ee((s(),t(_e,h({key:0,ref_for:!0},e.colProps||{span:u.colSpan}),{default:i(()=>[e.itemSlotName?ee(l.$slots,e.itemSlotName,{key:0,model:r,schema:e}):(s(),t(ke,h({key:1,ref_for:!0},e,{label:u.hideFormLabel?"":e.label?l.$t(e.label):"",rules:q(e)}),{default:i(()=>[e.slotName?ee(l.$slots,e.slotName,{key:0,model:r,schema:e}):e.render?(s(),t(J(e.render({model:r,schema:e})),{key:1})):(s(),b(w,{key:2},[e.type==="sync-select"?(s(),t(J($(e.type)),h({key:0,style:{width:"100%"},modelValue:r[e.prop],"onUpdate:modelValue":o=>r[e.prop]=o},{ref_for:!0},e.props,{onFocus:o=>v(e,o),onBlur:o=>W(e,o),onChange:o=>e.change&&e.change({prop:e.prop,value:r[e.prop],event:o,schema:u.schema,setSchema:x,setValues:y.setValues,setFormModel:y.setFormModel,validate:y.validate,reset:y.reset}),teleported:!1,"remote-method":Y,placeholder:e.props?.placeholder===void 0?(D.value.includes(e.type)?l.$t("请选择"):l.$t("请输入"))+" "+(e.label?l.$t(e.label):""):e.props.placeholder,clearable:e.clearable===void 0?!0:e.clearable,onPopupScroll:K,onVisibleChange:Q}),{footer:i(()=>[N("div",He,[e.options.length>=e.count?(s(),t(c,{key:0,disabled:"",link:""},{default:i(()=>[ue(de(l.$t("没有更多了")),1)]),_:1})):(s(),t(c,{key:1,type:"primary",link:"",loading:V.value,disabled:V.value,onClick:H},{default:i(()=>[ue(de(l.$t("加载更多"))+" ",1),V.value?C("",!0):(s(),t(X,{key:0,style:{transform:"rotate(-90deg)","margin-left":"4px"}},{default:i(()=>[z(A)]),_:1}))]),_:1},8,["loading","disabled"]))])]),default:i(()=>[e.type==="sync-select"?(s(!0),b(w,{key:0},E(e.options,o=>(s(),t(O(te),h({key:o.value,label:o.label,value:o.value,disabled:o.disabled},{ref_for:!0},e.props?.optionProps),null,16,["label","value","disabled"]))),128)):C("",!0)]),_:2},1040,["modelValue","onUpdate:modelValue","onFocus","onBlur","onChange","placeholder","clearable"])):e.type==="range-time-picker"?(s(),t(J($(e.type)),h({key:1,style:{width:"100%"},modelValue:r[e.prop],"onUpdate:modelValue":o=>r[e.prop]=o},{ref_for:!0},e.props,{type:e.props.type||"daterange",format:e.props.format||"YYYY-MM-DD","value-format":e.props.valueFormat||"YYYY-MM-DD",onChange:()=>{e.change&&e.change({prop:e.prop,value:r[e.prop],schema:u.schema,setSchema:x,setValues:y.setValues}),j(e)},"start-placeholder":e.props.startPlaceholder?l.$t(e.props.startPlaceholder):l.$t("开始日期"),"end-placeholder":e.props.endPlaceholder?l.$t(e.props.endPlaceholder):l.$t("结束日期"),clearable:e.clearable===void 0?!0:e.clearable}),null,16,["modelValue","onUpdate:modelValue","type","format","value-format","onChange","start-placeholder","end-placeholder","clearable"])):e.type==="upload"?(s(),b("div",Te,[z(je,h({ref_for:!0},e.uploadProps,{ref_for:!0,ref:"CUploadImgRef",onChange:o=>{F(o,e)}}),null,16,["onChange"])])):(s(),t(J($(e.type)),h({key:3,style:{width:"100%"},modelValue:r[e.prop],"onUpdate:modelValue":o=>r[e.prop]=o},{ref_for:!0},e.props,{options:e.options,onChange:o=>e.change&&e.change({prop:e.prop,value:r[e.prop],event:o,schema:u.schema,setSchema:x,setValues:y.setValues}),placeholder:e.props?.placeholder===void 0?(D.value.includes(e.type)?l.$t("请选择"):l.$t("请输入"))+" "+(e.label?l.$t(e.label):""):e.props.placeholder,clearable:e.clearable===void 0?!0:e.clearable}),{default:i(()=>[e.type==="select"&&e.options?(s(!0),b(w,{key:0},E(e.options,o=>(s(),t(O(te),h({key:o.value,label:o.label,value:o.value,disabled:o.disabled},{ref_for:!0},e.props?.optionProps),null,16,["label","value","disabled"]))),128)):C("",!0),e.type==="radio-group"&&e.options?(s(!0),b(w,{key:1},E(e.options,o=>(s(),t(O(pe),h({key:o.value,label:o.label,value:o.value},{ref_for:!0},e.props?.optionProps,{disabled:o.disabled}),null,16,["label","value","disabled"]))),128)):C("",!0),e.type==="checkbox-group"&&e.options?(s(!0),b(w,{key:2},E(e.options,o=>(s(),t(O(ce),h({key:o.value,label:o.label,value:o.value,disabled:o.disabled},{ref_for:!0},e.props?.optionProps),null,16,["label","value","disabled"]))),128)):C("",!0),e.type==="radio-button"&&e.options?(s(!0),b(w,{key:3},E(e.options,o=>(s(),t(le,h({key:o.value,label:o.label,value:o.value,disabled:o.disabled},{ref_for:!0},e.props?.optionProps),null,16,["label","value","disabled"]))),128)):C("",!0),e.type==="checkbox-button"&&e.options?(s(!0),b(w,{key:4},E(e.options,o=>(s(),t(ae,h({key:o.value,label:o.label,value:o.value,disabled:o.disabled},{ref_for:!0},e.props?.optionProps),null,16,["label","value","disabled"]))),128)):C("",!0),e.type==="radio-button-group"&&e.options?(s(!0),b(w,{key:5},E(e.options,o=>(s(),t(le,h({key:o.value,label:o.label,value:o.value,disabled:o.disabled},{ref_for:!0},e.props?.optionProps),null,16,["label","value","disabled"]))),128)):C("",!0),e.type==="checkbox-button-group"&&e.options?(s(!0),b(w,{key:6},E(e.options,o=>(s(),t(ae,h({key:o.value,label:o.label,value:o.value,disabled:o.disabled},{ref_for:!0},e.props?.optionProps),null,16,["label","value","disabled"]))),128)):C("",!0)]),_:2},1040,["modelValue","onUpdate:modelValue","options","onChange","placeholder","clearable"]))],64))]),_:2},1040,["label","rules"]))]),_:2},1040)),[[ze,!d(e)]])],64))),128))]),_:3},8,["gutter"]),ee(l.$slots,"actions")]),_:3},16,["model","style"])}}}),Ke={labelPosition:"top",schema:[],gutter:20,colSpan:6,labelWidth:"auto"};function Je(n){const f=S(null),L={...Ke,...n};let p=S({});const D=d=>{f.value=d,d.setConfig(L)},r=()=>f.value.getValues(),u=()=>{let d=setInterval(()=>{f.value&&(p.value=f.value.getValues(),clearInterval(d))},100);return p.value},V=()=>{f.value.reset()},B=(d,F)=>{f.value.setValues(d,F)},m=d=>{f.value.setFormModel(d)},k=(d,F)=>{f.value.validate(d,F)},P=(d,F,$)=>{f.value.validateField(d,F,$)},g=(d,F,$)=>{f.value.setSchema(d,F,$)};return xe(()=>{f.value=null}),[D,{getValues:r,reset:V,setValues:B,setFormModel:m,validate:k,validateField:P,setSchema:g,getSyncValues:u}]}const We=Ie(qe);export{We as C,je as a,Je as u,Ie as w};