UNPKG

@aplus-frontend/ui

Version:

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