UNPKG

@aplus-frontend/ui

Version:

2 lines (1 loc) 5.82 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),K=require("@ant-design/icons-vue"),i=require("@aplus-frontend/antdv"),Q=require("@aplus-frontend/icon"),X=require("../../ap-file-preview/index.js");require("../../../config-provider/index.js");const b=require("../hooks/useOss.js"),Y=require("../style/index.js"),A=require("../utils/accept.js"),x=require("../utils/returnData.js"),Z=require("../../../config-provider/hooks/use-global-config.js"),ee=require("../../../config-provider/hooks/use-locale.js"),te=require("../../../config-provider/hooks/use-namespace.js"),oe={class:"multiple-file-context"},ne={key:0},se={key:1},ae=e.defineComponent({__name:"MultipleFile",setup(re,{expose:D}){const C=Z.useGlobalConfig("downloadCenterTriggerConfig"),{t:r}=ee.useLocale(),{b:P}=te.useNamespace("ap-upload-multiple-file"),T=Y.default("ap-upload"),{put:M}=b.useOss(),R=e.inject("dirName"),S=e.inject("baseDirName"),k=e.inject("accept")||"*",j=e.inject("maxSize")??500,B=e.inject("title")||r("ap.apUpload.uploadFile"),m=e.inject("subTitle"),c=e.inject("maxCount")??10,p=e.inject("uploadingCount"),N=e.inject("beforeUpload"),U=e.inject("customRequest"),f=e.inject("getOssAccess"),L=e.inject("maxSizeErrorMsg"),O=e.inject("maxCountErrorMsg"),V=e.inject("acceptErrorMsg"),E=e.inject("onRemove"),y=e.inject("showUploadErrorMsg"),_=e.inject("bucket"),z=e.inject("showDownload")??!0,g=e.inject("showPreview")??!0,a=e.inject("value"),u=[],w=e.inject("needName"),d=e.ref(null);e.watch(()=>a?.value,function(t){!d?.value?.fileList?.length&&t&&q(t)},{immediate:!0});function q(t){if(!t){l=[],d.value.fileList=[],a.value=void 0,u.splice(0,u.length);return}e.nextTick(()=>{const o=t.map(n=>{const s=x.getPath(w,n),I=x.getName(w,n),v=new File([n],I,{});return v.response=s,v.uid=crypto.randomUUID(),v.status="done",v});if(c&&o.length>c){i.message.warning(r("ap.apUpload.fileInitializationException",{maxCount:c}));return}o.forEach(n=>{l.push(n),u.push({uid:n.uid,path:n.response})}),d.value.fileList=o,a.value=t})}D({setValue:q});let l=[],F;function h(t){setTimeout(()=>{const o=d.value.fileList.findIndex(n=>n.uid===t.uid);o>=0&&d.value.fileList.splice(o,1)})}async function $(t){if(c&&c>1&&l.length>=c)return clearTimeout(F),F=setTimeout(()=>{i.message.warning(O||r("ap.apUpload.maxUploadFiles",{maxCount:c}))}),h(t),!1;if(t.size>j*1024*1024)return i.message.warning(L||r("ap.apUpload.maxUploadFileSize",{maxSize:j})),h(t),!1;if(!A.fileMatchesAccept(t,k))return i.message.warning(V||r("ap.apUpload.fileFormatNotSupported")),h(t),!1;if(typeof N=="function"&&await N(t)===!1)return h(t),!1;c&&c===1&&(l=[],a.value=void 0),l.push(t)}async function G(t){if(p.value++,typeof U=="function"){U({onProgress:o=>{setTimeout(()=>{t.onProgress({percent:o})})},onError:o=>{y&&i.message.warning(o||r("ap.apUpload.networkAnomaly")),setTimeout(()=>{t.onError({name:o,message:o})}),p.value--},onSuccess:o=>{setTimeout(()=>{t.onSuccess(o)}),a.value=[...a.value||[],x.getReturnData(w,o,t.file.name)],u.push({uid:t.file.uid,path:o}),p.value--},file:t.file});return}try{const o=await(_?f(_):f()),n=await b.getOssInstance(async()=>o);t.file.oss=n,M({file:t.file,dirName:R,oss:n,successCallBack(s){t.onSuccess(s),a.value=[...a.value||[],x.getReturnData(w,s,t.file.name)],u.push({uid:t.file.uid,path:s}),p.value--},errorCallBack(s){y&&i.message.warning(s||r("ap.apUpload.networkAnomaly")),t.onError({name:s,message:s}),p.value--},progressCallBack(s){t.onProgress({percent:s})},baseDirName:S,bucket:o?.bucket})}catch(o){y&&i.message.warning(typeof o?.message=="string"?o.message:r("ap.apUpload.networkAnomaly")),t.onError({name:o?.message||r("ap.apUpload.networkAnomaly"),message:o?.message||r("ap.apUpload.networkAnomaly")}),p.value--}}function W(t){if(E&&E?.(t),t.response){if(Array.isArray(a.value)){const n=u.findIndex(s=>s.uid===t.uid);n>=0&&(a?.value.splice(n,1),u.splice(n,1)),a.value.length===0&&(a.value=void 0)}}else t?.oss?.pauseUpload();const o=l.findIndex(n=>n.uid===t.uid);return l.splice(o,1),Promise.resolve(!0)}const H=async t=>{if(C.value?.trigger){let o=[t].map(n=>({objectName:n.response,fileName:n.name}));C.value?.trigger?.(o)}else{const o=t.response?.match(/^([^:]+):(.*)$/),n=o?.[1],s=o?.[2]??t.response;(await b.getOssInstance(()=>n?f?.(n):f?.())).downloadFile([{path:s,fileName:t.name}])}},J=t=>{(typeof g=="function"?g(t):g)&&X.ApFilePreview.createFilePreviewModal({src:t.response,fileName:t.name})};return(t,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({[e.unref(P)()]:!0,[e.unref(T)??""]:!0})},[e.createVNode(e.unref(i.Upload),{ref_key:"uploadRef",ref:d,accept:e.unref(k),multiple:"","max-count":e.unref(c),progress:{strokeWidth:3,showInfo:!1,strokeColor:"#0070FF"},"before-upload":$,"custom-request":G,"show-upload-list":{showDownloadIcon:e.unref(z),showRemoveIcon:!0,showPreviewIcon:e.unref(g)},onPreview:J,onRemove:W,onDownload:H},{downloadIcon:e.withCtx(()=>[e.createVNode(e.unref(Q.IconApAdLineDownload),{class:"anticon anticon-vertical-align-bottom"})]),default:e.withCtx(()=>[e.createElementVNode("div",oe,[e.createVNode(e.unref(i.Button),{class:"file-btn"},{default:e.withCtx(()=>[e.createVNode(e.unref(K.UploadOutlined)),e.createTextVNode(" "+e.toDisplayString(e.unref(B)),1)]),_:1}),e.createElementVNode("div",{class:"sub-title",onClick:o[0]||(o[0]=e.withModifiers(()=>{},["stop"]))},[typeof e.unref(m)=="string"?(e.openBlock(),e.createElementBlock("div",ne,e.toDisplayString(e.unref(m)||`${e.unref(r)("ap.apUpload.supportExtension")}${e.unref(A.getAcceptText)(e.unref(k))}`),1)):e.unref(m)?(e.openBlock(),e.createElementBlock("div",se,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(m))))])):e.createCommentVNode("",!0)])])]),_:1},8,["accept","max-count","show-upload-list"])],2))}});exports.default=ae;