Files
qhmes/web-dist/js/BasicUpload-YszGMlg_.js
2026-06-16 18:19:57 +08:00

2 lines
14 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
var he=Object.defineProperty,ve=Object.defineProperties;var be=Object.getOwnPropertyDescriptors;var K=Object.getOwnPropertySymbols;var ye=Object.prototype.hasOwnProperty,we=Object.prototype.propertyIsEnumerable;var Q=(e,t,n)=>t in e?he(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,k=(e,t)=>{for(var n in t||(t={}))ye.call(t,n)&&Q(e,n,t[n]);if(K)for(var n of K(t))we.call(t,n)&&Q(e,n,t[n]);return e},j=(e,t)=>ve(e,be(t));var x=(e,t,n)=>new Promise((r,o)=>{var p=a=>{try{s(n.next(a))}catch(l){o(l)}},i=a=>{try{s(n.throw(a))}catch(l){o(l)}},s=a=>a.done?r(a.value):Promise.resolve(a.value).then(p,i);s((n=n.apply(e,t)).next())});import{B as Y}from"./index-BDvqZ5j4.js";import{ad as B,as as q,I as Ce,au as E,dQ as Se,c as Z,bV as Ue,s as Re,h$ as Pe,aP as ee,T as $e,x as _e,b2 as ke,aJ as Ie}from"./index-X7Y8jykP.js";import{c as _,u as S,e as N,K as y,C as T,z as $,y as O,H as A,f as u,h as W,n as Le,a7 as Me,r as F,b as Be,A as C,Q as Ne,E as I,G as L,B as G,F as J}from"./vue-vendor-DNhG1Cve.js";import te from"./TableAction-BiXnWkvt.js";import{T as H}from"./index-J2mOtM3w.js";import{buildUUID as xe}from"./uuid-CODpppBC.js";import{u as Te}from"./BasicModal-xH56XuRZ.js";import{a as ne,u as X}from"./useModal-DaJ3Bflg.js";import{b as Ae}from"./index-CeNCCWzL.js";import{downloadByUrl as Fe}from"./download-CygB1orH.js";import"./emoji-mart-vue-fast-R0uJEDq-.js";import"./TableAction.vue_vue_type_style_index_0_lang-BIWZ0bGo.js";import"./index-fAAIzD3j.js";import"./index-CfNJyBRj.js";import"./dropdown-jkliuVyN.js";import"./useTableContext-CncNVXgp.js";import"./index-ByCwbQDV.js";import"./index-Upeu4GGa.js";import"./index-BzChaRPg.js";import"./index-C4wWpZeQ.js";import"./useTimeout-D5AmIBZw.js";import"./index-M9QP6cvf.js";import"./Skeleton-CimgOdM7.js";import"./useScrollTo-0FPEw5-K.js";import"./useIntersectionObserver-BGOgyKyu.js";import"./index-saD4h7VJ.js";import"./ModalHeader-Sr8KwhJJ.js";import"./useWindowSizeFn-C-0M9_Ul.js";import"./useAppInject-DPZGPcR3.js";import"./index-CuWaQdlK.js";import"./index-DO7ZhK45.js";import"./base64Conver-24EVOS6V.js";const{t:V}=B();function Ee({acceptRef:e,helpTextRef:t,maxNumberRef:n,maxSizeRef:r}){const o=_(()=>{const s=S(e);return s&&s.length>0?s:[]}),p=_(()=>S(o).map(s=>s.indexOf("/")>0||s.startsWith(".")?s:`.${s}`).join(",")),i=_(()=>{const s=S(t);if(s)return s;const a=[],l=S(e);l.length>0&&a.push(V("component.upload.accept",[l.join(",")]));const m=S(r);m&&a.push(V("component.upload.maxSize",[m]));const h=S(n);return h&&h!==1/0&&a.push(V("component.upload.maxNumber",[h])),a.join("")});return{getAccept:o,getStringAccept:p,getHelpText:i}}var g=(e=>(e.SUCCESS="success",e.ERROR="error",e.UPLOADING="uploading",e))(g||{});const oe={helpText:{type:String,default:""},maxSize:{type:Number,default:2},maxNumber:{type:Number,default:1/0},accept:{type:Array,default:()=>[]},multiple:{type:Boolean,default:!0},uploadParams:{type:Object,default:{}},api:{type:Function,default:null,required:!0},name:{type:String,default:"file"},filename:{type:String,default:null}},Oe=j(k({value:{type:Array,default:()=>[]}},oe),{showPreviewNumber:{type:Boolean,default:!0},emptyHidePreview:{type:Boolean,default:!1}}),De={value:{type:Array,default:()=>[]}},ze={columns:{type:[Array],default:null},actionColumn:{type:Object,default:null},dataSource:{type:Array,default:null}};function je(e,t){const n=[],r=[];for(const i of t)if(i.includes("/"))n.push(i);else{const s=i.startsWith(".")?i.slice(1):i;r.push(s)}let o=!1;r.length>0&&(o=new RegExp(`\\.(${r.join("|")})$`,"i").test(e.name));let p=!1;if(n.length>0&&e.type&&(p=n.some(i=>{const s=i.replace(/[.+?^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*");return new RegExp(`^${s}$`,"i").test(e.type)})),n.length&&r.length)return o||p;if(n.length)return p;if(r.length)return o}function He(e){return ae(e.name)}function ae(e){return/\.(jpg|jpeg|png|gif)$/i.test(e)}function Ve(e){return new Promise((t,n)=>{const r=new FileReader;r.readAsDataURL(e),r.onload=()=>t({result:r.result,file:e}),r.onerror=o=>n(o)})}const We=N({components:{Image:Ce},props:{fileUrl:q.string.def(""),fileName:q.string.def("")}}),Ge={class:"thumb"};function Ke(e,t,n,r,o,p){const i=y("Image");return $(),T("span",Ge,[e.fileUrl?($(),O(i,{key:0,src:e.fileUrl,width:104},null,8,["src"])):A("",!0)])}const le=E(We,[["render",Ke]]),{t:v}=B();function Qe(){return[{dataIndex:"thumbUrl",title:v("component.upload.legend"),width:100,customRender:({record:e})=>{const{thumbUrl:t}=e||{};return t&&u(le,{fileUrl:t},null)}},{dataIndex:"name",title:v("component.upload.fileName"),align:"left",customRender:({text:e,record:t})=>{const{percent:n,status:r}=t||{};let o="normal";return r===g.ERROR?o="exception":r===g.UPLOADING?o="active":r===g.SUCCESS&&(o="success"),u("span",null,[u("p",{class:"truncate mb-1",title:e},[e]),u(Se,{percent:n,size:"small",status:o},null)])}},{dataIndex:"size",title:v("component.upload.fileSize"),width:100,customRender:({text:e=0})=>e&&(e/1024).toFixed(2)+"KB"},{dataIndex:"status",title:v("component.upload.fileStatue"),width:100,customRender:({text:e})=>e===g.SUCCESS?u(H,{color:"green"},{default:()=>v("component.upload.uploadSuccess")}):e===g.ERROR?u(H,{color:"red"},{default:()=>v("component.upload.uploadError")}):e===g.UPLOADING?u(H,{color:"blue"},{default:()=>v("component.upload.uploading")}):e}]}function qe(e){return{width:120,title:v("component.upload.operating"),dataIndex:"action",fixed:!1,customRender:({record:t})=>{const n=[{label:v("component.upload.del"),color:"error",onClick:e.bind(null,t)}];return u(te,{actions:n,outside:!0},null)}}}function Je(){return[{dataIndex:"url",title:v("component.upload.legend"),width:100,customRender:({record:e})=>{const{url:t}=e||{};return ae(t)&&u(le,{fileUrl:t},null)}},{dataIndex:"name",title:v("component.upload.fileName"),align:"left"}]}function Xe({handleRemove:e,handleDownload:t}){return{width:160,title:v("component.upload.operating"),dataIndex:"action",fixed:!1,customRender:({record:n})=>{const r=[{label:v("component.upload.del"),color:"error",onClick:e.bind(null,n)},{label:v("component.upload.download"),onClick:t.bind(null,n)}];return u(te,{actions:r,outside:!0},null)}}}const re=N({name:"FileList",props:ze,setup(e){const t=Te();return W(()=>e.dataSource,()=>{Le(()=>{var n;(n=t==null?void 0:t.redoModalHeight)==null||n.call(t)})}),()=>{const{columns:n,actionColumn:r,dataSource:o}=e,p=[...n,r];return u("table",{class:"file-table"},[u("colgroup",null,[p.map(i=>{const{width:s=0,dataIndex:a}=i,l={width:`${s}px`,minWidth:`${s}px`};return u("col",{style:s?l:{},key:a},null)})]),u("thead",null,[u("tr",{class:"file-table-tr"},[p.map(i=>{const{title:s="",align:a="center",dataIndex:l}=i;return u("th",{class:["file-table-th",a],key:l},[s])})])]),u("tbody",null,[o.map((i={},s)=>u("tr",{class:"file-table-tr",key:`${s+i.name||""}`},[p.map(a=>{const{dataIndex:l="",customRender:m,align:h="center"}=a,M=m&&Z(m);return u("td",{class:["file-table-td",h],key:l},[M?m==null?void 0:m({text:i[l],record:i}):i[l]])})]))])])}}}),Ye=N({components:{BasicModal:Y,Upload:Ue,Alert:Ae,FileList:re},props:j(k({},oe),{previewFileList:{type:Array,default:()=>[]}}),emits:["change","register","delete"],setup(e,{emit:t}){const n=Be({fileList:[]}),r=F(!1),o=F([]),{accept:p,helpText:i,maxNumber:s,maxSize:a}=Me(e),{t:l}=B(),[m,{closeModal:h}]=ne(),{getAccept:M,getStringAccept:D,getHelpText:z}=Ee({acceptRef:p,helpTextRef:i,maxNumberRef:s,maxSizeRef:a}),{createMessage:d}=Re(),se=_(()=>o.value.length>0&&!o.value.every(c=>c.status===g.SUCCESS)),ie=_(()=>{const c=o.value.some(f=>f.status===g.SUCCESS);return{disabled:r.value||o.value.length===0||!c}}),ue=_(()=>{const c=o.value.some(f=>f.status===g.ERROR);return r.value?l("component.upload.uploading"):l(c?"component.upload.reUploadFailed":"component.upload.startUpload")});function ce(c){const{size:f,name:w}=c,{maxSize:b}=e,U=S(M);if(b&&c.size/1024/1024>=b)return d.error(l("component.upload.maxSizeMultiple",[b])),!1;if(U.length>0&&!je(c,U))return d.error(l("component.upload.acceptUpload",[U.join(",")])),!1;const P={uuid:xe(),file:c,size:f,name:w,percent:0,type:w.split(".").pop()};return He(c)?Ve(c).then(({result:R})=>{o.value=[...S(o),k({thumbUrl:R},P)]}):o.value=[...S(o),P],!1}function pe(c){const f=o.value.findIndex(w=>w.uuid===c.uuid);f!==-1&&o.value.splice(f,1),t("delete",c)}function de(c){return x(this,null,function*(){var w;const{api:f}=e;if(!f||!Z(f))return Pe();try{c.status=g.UPLOADING;const{data:b}=yield(w=e.api)==null?void 0:w.call(e,{data:k({},e.uploadParams||{}),file:c.file,name:e.name,filename:e.filename},function(P){const R=P.loaded/P.total*100|0;c.percent=R});return c.status=g.SUCCESS,c.responseData=b,{success:!0,error:null}}catch(b){return c.status=g.ERROR,{success:!1,error:b}}})}function me(){return x(this,null,function*(){var f,w;const{maxNumber:c}=e;if(o.value.length+((w=(f=e.previewFileList)==null?void 0:f.length)!=null?w:0)>c)return d.warning(l("component.upload.maxNumber",[c]));try{r.value=!0;const b=o.value.filter(R=>R.status!==g.SUCCESS)||[],U=yield Promise.all(b.map(R=>de(R)));r.value=!1;const P=U.filter(R=>!R.success);if(P.length>0)throw P}catch(b){throw r.value=!1,b}})}function fe(){const{maxNumber:c}=e;if(o.value.length>c)return d.warning(l("component.upload.maxNumber",[c]));if(r.value)return d.warning(l("component.upload.saveWarn"));const f=[];for(const w of o.value){const{status:b,responseData:U}=w;b===g.SUCCESS&&U&&f.push(U.url)}if(f.length<=0)return d.warning(l("component.upload.saveError"));o.value=[],h(),t("change",f)}function ge(){return x(this,null,function*(){return r.value?(d.warning(l("component.upload.uploadWait")),!1):(o.value=[],!0)})}return{columns:Qe(),actionColumn:qe(pe),register:m,closeModal:h,getHelpText:z,getStringAccept:D,getOkButtonProps:ie,beforeUpload:ce,fileListRef:o,state:n,isUploadingRef:r,handleStartUpload:me,handleOk:fe,handleCloseFunc:ge,getIsSelectFile:se,getUploadBtnText:ue,t:l}}}),Ze={class:"upload-modal-toolbar"};function et(e,t,n,r,o,p){const i=y("a-button"),s=y("Alert"),a=y("Upload"),l=y("FileList"),m=y("BasicModal");return $(),O(m,G({width:"800px",title:e.t("component.upload.upload"),okText:e.t("component.upload.save")},e.$attrs,{onRegister:e.register,onOk:e.handleOk,closeFunc:e.handleCloseFunc,maskClosable:!1,keyboard:!1,wrapClassName:"upload-modal",okButtonProps:e.getOkButtonProps,cancelButtonProps:{disabled:e.isUploadingRef}}),{centerFooter:C(()=>[u(i,{onClick:e.handleStartUpload,color:"success",disabled:!e.getIsSelectFile,loading:e.isUploadingRef},{default:C(()=>[I(L(e.getUploadBtnText),1)]),_:1},8,["onClick","disabled","loading"])]),default:C(()=>[Ne("div",Ze,[u(s,{message:e.getHelpText,type:"info",banner:"",class:"upload-modal-toolbar__text"},null,8,["message"]),u(a,{accept:e.getStringAccept,multiple:e.multiple,"before-upload":e.beforeUpload,class:"upload-modal-toolbar__btn"},{default:C(()=>[u(i,{type:"primary"},{default:C(()=>[I(L(e.t("component.upload.choose")),1)]),_:1})]),_:1},8,["accept","multiple","before-upload"])]),u(l,{dataSource:e.fileListRef,columns:e.columns,actionColumn:e.actionColumn},null,8,["dataSource","columns","actionColumn"])]),_:1},16,["title","okText","onRegister","onOk","closeFunc","okButtonProps","cancelButtonProps"])}const tt=E(Ye,[["render",et]]),nt=N({components:{BasicModal:Y,FileList:re},props:De,emits:["list-change","register","delete"],setup(e,{emit:t}){const[n,{closeModal:r}]=ne(),{t:o}=B(),p=F([]);W(()=>e.value,a=>{ee(a)||(a=[]),p.value=a.filter(l=>!!l).map(l=>({url:l,type:l.split(".").pop()||"",name:l.split("/").pop()||""}))},{immediate:!0});function i(a){const l=p.value.findIndex(m=>m.url===a.url);if(l!==-1){const m=p.value.splice(l,1);t("delete",m[0].url),t("list-change",p.value.map(h=>h.url))}}function s(a){const{url:l=""}=a;Fe({url:l})}return{t:o,register:n,closeModal:r,fileListRef:p,columns:Je(),actionColumn:Xe({handleRemove:i,handleDownload:s})}}});function ot(e,t,n,r,o,p){const i=y("FileList"),s=y("BasicModal");return $(),O(s,G({width:"800px",title:e.t("component.upload.preview"),wrapClassName:"upload-preview-modal"},e.$attrs,{onRegister:e.register,showOkBtn:!1}),{default:C(()=>[u(i,{dataSource:e.fileListRef,columns:e.columns,actionColumn:e.actionColumn},null,8,["dataSource","columns","actionColumn"])]),_:1},16,["title","onRegister"])}const at=E(nt,[["render",ot]]),lt=N({name:"BasicUpload",components:{UploadModal:tt,UploadPreviewModal:at,Icon:_e,Tooltip:$e},props:Oe,emits:["change","delete","preview-delete","update:value"],setup(e,{emit:t,attrs:n}){const{t:r}=B(),[o,{openModal:p}]=X(),[i,{openModal:s}]=X(),a=F([]),l=_(()=>{const{emptyHidePreview:d}=e;return d&&d?a.value.length>0:!0}),m=_(()=>{const d=k(k({},n),e);return ke(d,"onChange")});W(()=>e.value,(d=[])=>{a.value=ee(d)?d:[]},{immediate:!0});function h(d){a.value=[...S(a),...d||[]],t("update:value",a.value),t("change",a.value)}function M(d){a.value=[...d||[]],t("update:value",a.value),t("change",a.value)}function D(d){t("delete",d)}function z(d){t("preview-delete",d)}return{registerUploadModal:o,openUploadModal:p,handleChange:h,handlePreviewChange:M,registerPreviewModal:i,openPreviewModal:s,fileList:a,showPreview:l,bindValue:m,handleDelete:D,handlePreviewDelete:z,t:r}}});function rt(e,t,n,r,o,p){const i=y("a-button"),s=y("Icon"),a=y("Tooltip"),l=Ie,m=y("UploadModal"),h=y("UploadPreviewModal");return $(),T("div",null,[u(l,null,{default:C(()=>[u(i,{type:"primary",onClick:e.openUploadModal,preIcon:"carbon:cloud-upload"},{default:C(()=>[I(L(e.t("component.upload.upload")),1)]),_:1},8,["onClick"]),e.showPreview?($(),O(a,{key:0,placement:"bottom"},{title:C(()=>[I(L(e.t("component.upload.uploaded"))+" ",1),e.fileList.length?($(),T(J,{key:0},[I(L(e.fileList.length),1)],64)):A("",!0)]),default:C(()=>[u(i,{onClick:e.openPreviewModal},{default:C(()=>[u(s,{icon:"bi:eye"}),e.fileList.length&&e.showPreviewNumber?($(),T(J,{key:0},[I(L(e.fileList.length),1)],64)):A("",!0)]),_:1},8,["onClick"])]),_:1})):A("",!0)]),_:1}),u(m,G(e.bindValue,{previewFileList:e.fileList,onRegister:e.registerUploadModal,onChange:e.handleChange,onDelete:e.handleDelete}),null,16,["previewFileList","onRegister","onChange","onDelete"]),u(h,{value:e.fileList,onRegister:e.registerPreviewModal,onListChange:e.handlePreviewChange,onDelete:e.handlePreviewDelete},null,8,["value","onRegister","onListChange","onDelete"])])}const Dt=E(lt,[["render",rt]]);export{Dt as default};