UNPKG

@aplus-frontend/ui

Version:

2 lines (1 loc) 6.25 kB
"use strict";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"),S=require("@ant-design/icons-vue"),y=require("../hooks/useOss.js"),M=require("../utils/accept.js"),l=require("@aplus-frontend/antdv"),J=require("lodash-unified"),K=require("../../config-provider/hooks/use-locale.js"),Q=require("../../config-provider/hooks/use-namespace.js"),W=["accept"],X={class:"picture-context"},Y={class:"picture-item-box"},Z=["src"],F={class:"picture-item-shadow"},ee=["onClick"],te={key:0,class:"picture-item-uploading"},ne={class:"picture-title"},ae={key:0},se={key:1},oe=e.defineComponent({__name:"Picture",setup(ce,{expose:R}){const{t:i}=K.useLocale(),{b:_}=Q.useNamespace("ap-upload-picture"),{put:b}=y.useOss(),q=e.inject("theme"),P=e.inject("dirName"),h=e.inject("accept")||"image/*",k=e.inject("maxSize")??5,w=e.inject("title"),u=e.inject("maxCount")??10,f=e.inject("uploadingCount"),E=e.inject("beforeUpload"),U=e.inject("customRequest"),C=e.inject("getOssAccess"),z=e.inject("maxSizeErrorMsg"),A=e.inject("maxCountErrorMsg"),D=e.inject("acceptErrorMsg"),m=e.ref(null),r=e.inject("value"),g=e.inject("needName"),N=e.inject("onRemove"),x=e.inject("showUploadErrorMsg");let o=e.ref([]);const p=[];e.watch(()=>r?.value,async function(n){!o?.value?.length&&n&&j(n)},{immediate:!0});function j(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(C),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})}R({setValue:j});function I(){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)||!M.fileMatchesAccept(n,h))return l.message.warning(D||i("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};L(t,n)},s.onerror=function(){l.message.warning(i("ap.apUpload.imageParsingFailed"))}}async function L(n,s){if(f.value++,typeof U=="function"){U({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(C);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 B(n){if(N&&N?.(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(_)()]:!0,[e.unref(_)("admin")]:e.unref(q)==="admin"})},[e.createElementVNode("input",{ref_key:"fileRef",ref:m,style:{display:"none"},type:"file",accept:e.unref(h),onChange:$},null,40,W),e.createElementVNode("div",X,[e.renderSlot(n.$slots,"pictureContext",{fileList:e.unref(o).map(t=>({...e.unref(J.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",Y,[e.createElementVNode("img",{src:t.thumbUrl,alt:""},null,8,Z),e.withDirectives(e.createElementVNode("div",F,[e.createElementVNode("div",{class:"picture-item-close",onClick:a=>B(t)},[e.createVNode(e.unref(S.CloseOutlined))],8,ee),t.status==="uploading"?(e.openBlock(),e.createElementBlock("div",te,[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:I},[e.createVNode(e.unref(S.PlusOutlined)),e.createElementVNode("div",null,e.toDisplayString(e.unref(i)("ap.apUpload.update")),1)])):e.createCommentVNode("",!0)]),e.createElementVNode("div",ne,[e.unref(w)?(e.openBlock(),e.createElementBlock("div",ae,e.toDisplayString(e.unref(w)),1)):(e.openBlock(),e.createElementBlock("div",se,e.toDisplayString(`${e.unref(i)("ap.apUpload.supportExtension")}${e.unref(M.getAcceptText)(e.unref(h))}${e.unref(i)("ap.apUpload.maxUploadPictureSize",{maxSize:e.unref(k)})}`),1))])],2))}});exports.default=oe;