@aplus-frontend/ui
Version:
2 lines (1 loc) • 6.27 kB
JavaScript
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue");require("../../../config-provider/index.js");const v=require("../utils/returnData.js"),B=require("@ant-design/icons-vue"),y=require("../hooks/useOss.js"),S=require("../utils/accept.js"),l=require("@aplus-frontend/antdv"),J=require("lodash-unified"),K=require("../style/index.js"),Q=require("../../../config-provider/hooks/use-locale.js"),W=require("../../../config-provider/hooks/use-namespace.js"),X=["accept"],Y={class:"picture-context"},Z={class:"picture-item-box"},F=["src"],ee={class:"picture-item-shadow"},te=["onClick"],ne={key:0,class:"picture-item-uploading"},ae={class:"picture-title"},se={key:0},oe={key:1},ce=e.defineComponent({__name:"Picture",setup(re,{expose:q}){const{t:i}=Q.useLocale(),{b:M}=W.useNamespace("ap-upload-picture"),R=K.default("ap-upload"),{put:b}=y.useOss(),P=e.inject("dirName"),h=e.inject("accept")||"image/*",k=e.inject("maxSize")??5,_=e.inject("title"),u=e.inject("maxCount")??10,f=e.inject("uploadingCount"),w=e.inject("beforeUpload"),E=e.inject("customRequest"),U=e.inject("getOssAccess"),z=e.inject("maxSizeErrorMsg"),A=e.inject("maxCountErrorMsg"),I=e.inject("acceptErrorMsg"),m=e.ref(null),r=e.inject("value"),g=e.inject("needName"),C=e.inject("onRemove"),x=e.inject("showUploadErrorMsg");let o=e.ref([]);const p=[];e.watch(()=>r?.value,async function(n){!o?.value?.length&&n&&N(n)},{immediate:!0});function N(n){if(!n){r.value=void 0,p.splice(0,p.length),o.value=[];return}e.nextTick(async()=>{const s=[];for(let t of n){const a=v.getPath(g,t),c=v.getName(g,t),d=await y.getOssInstance(U),G=await d.getSignatureUrl(a),H={...typeof t=="string"?{}:t,...new File([t],c,{}),uid:`${new Date().getTime()}-${Math.random()}`,thumbUrl:G,status:"success",percent:100,path:a};s.push(H),d.destroy()}if(u&&s.length>u){l.message.warning(i("ap.apUpload.fileInitializationException",{maxCount:u}));return}s.forEach(t=>{o.value.push(t),p.push({uid:t.uid,path:t.path})}),r.value=n})}q({setValue:N});function D(){m.value?.click()}function $(n){const s=n.target;O(s?.files)}function O(n){if(n?.length)for(let s=0;s<n.length;s++)T(n[s]);m.value&&(m.value.value="")}let V;async function T(n){if(u&&u>1&&o.value.length>=u)return clearTimeout(V),V=setTimeout(()=>{l.message.warning(A||i("ap.apUpload.maxUploadPicture",{maxCount:u}))}),!1;if(n.size>k*1024*1024)return l.message.warning(z||i("ap.apUpload.maxUploadFileSize",{maxSize:k})),!1;if(!/image\/\w+/.test(n.type)||!S.fileMatchesAccept(n,h))return l.message.warning(I||i("ap.apUpload.pictureFormatNotSupported")),!1;if(typeof w=="function"&&await w(n)===!1)return!1;const s=new FileReader;s.readAsDataURL(n),s.onload=function(){const t={...n,uid:`${new Date().getTime()}-${Math.random()}`,thumbUrl:this.result,status:"uploading",percent:0};L(t,n)},s.onerror=function(){l.message.warning(i("ap.apUpload.imageParsingFailed"))}}async function L(n,s){if(f.value++,typeof E=="function"){E({onProgress:t=>{const a=o.value.find(c=>c.uid===n.uid);a&&(a.percent=t)},onError:t=>{x&&l.message.warning(t||i("ap.apUpload.networkAnomaly"));const a=o.value.findIndex(c=>c.uid===n.uid);a>-1&&o.value.splice(a,1),f.value--},onSuccess:t=>{const a=o.value.find(c=>c.uid===n.uid);a&&(a.status="success",a.path=t),r.value=[...r.value||[],v.getReturnData(g,t,s.name)],p.push({uid:n.uid,path:t}),f.value--},file:s});return}try{const t=await y.getOssInstance(U);n.oss=t,o.value.push(n),b({file:s,dirName:P,oss:t,successCallBack(a){const c=o.value.find(d=>d.uid===n.uid);c&&(c.status="success",c.path=a),r.value=[...r.value||[],v.getReturnData(g,a,s.name)],p.push({uid:n.uid,path:a}),f.value--},errorCallBack(a){x&&l.message.warning(a||i("ap.apUpload.networkAnomaly"));const c=o.value.findIndex(d=>d.uid===n.uid);c>-1&&o.value.splice(c,1),f.value--},progressCallBack(a){const c=o.value.find(d=>d.uid===n.uid);c&&(c.percent=a)}})}catch(t){x&&l.message.warning(typeof t?.message=="string"?t.message:i("ap.apUpload.networkAnomaly"));const a=o.value.findIndex(c=>c.uid===n.uid);a>-1&&o.value.splice(a,1),f.value--}}function j(n){if(C&&C?.(n),n.path&&r){if(Array.isArray(r.value)){const t=p.findIndex(a=>a.uid===n.uid);if(t>=0){const a=r?.value?.slice()??[];a?.splice(t,1),r.value=a,p.splice(t,1)}r.value.length===0&&(r.value=void 0)}}else n?.oss?.pauseUpload();const s=o.value.findIndex(t=>t.uid===n.uid);return o.value.splice(s,1),Promise.resolve(!0)}return(n,s)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({[e.unref(M)()]:!0,[e.unref(R)??""]:!0})},[e.createElementVNode("input",{ref_key:"fileRef",ref:m,style:{display:"none"},type:"file",accept:e.unref(h),onChange:$},null,40,X),e.createElementVNode("div",Y,[e.renderSlot(n.$slots,"pictureContext",{fileList:e.unref(o).map(t=>({...e.unref(J.omit)(t,"oss"),oss:{pauseUpload:t?.oss?.pauseUpload}})),remove:j},()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(o),t=>(e.openBlock(),e.createElementBlock("div",{key:t.uid,class:"picture-item"},[e.createElementVNode("div",Z,[e.createElementVNode("img",{src:t.thumbUrl,alt:""},null,8,F),e.withDirectives(e.createElementVNode("div",ee,[e.createElementVNode("div",{class:"picture-item-close",onClick:a=>j(t)},[e.createVNode(e.unref(B.CloseOutlined))],8,te),t.status==="uploading"?(e.openBlock(),e.createElementBlock("div",ne,[e.createVNode(e.unref(l.Progress),{percent:t.percent,"stroke-color":"#ffffff","trail-color":"rgba(255, 255, 255, 0.3)",size:4,"show-info":!1},null,8,["percent"])])):e.createCommentVNode("",!0)],512),[[e.vShow,t.status==="uploading"]])])]))),128))]),e.unref(u)===void 0||e.unref(o).length<e.unref(u)?(e.openBlock(),e.createElementBlock("div",{key:0,class:"picture-upload",onClick:D},[e.createVNode(e.unref(B.PlusOutlined)),e.createElementVNode("div",null,e.toDisplayString(e.unref(i)("ap.apUpload.update")),1)])):e.createCommentVNode("",!0)]),e.createElementVNode("div",ae,[e.unref(_)?(e.openBlock(),e.createElementBlock("div",se,e.toDisplayString(e.unref(_)),1)):(e.openBlock(),e.createElementBlock("div",oe,e.toDisplayString(`${e.unref(i)("ap.apUpload.supportExtension")}:${e.unref(S.getAcceptText)(e.unref(h))},${e.unref(i)("ap.apUpload.maxUploadPictureSize",{maxSize:e.unref(k)})}`),1))])],2))}});exports.default=ce;
;