var e=(e,a,l)=>new Promise(((t,s)=>{var u=e=>{try{o(l.next(e))}catch(a){s(a)}},n=e=>{try{o(l.throw(e))}catch(a){s(a)}},o=e=>e.done?t(e.value):Promise.resolve(e.value).then(u,n);o((l=l.apply(e,a)).next())}));import{Z as a,a2 as l,_ as t,z as s,r as u,O as n,a3 as o,D as i,j as d,h as r,o as c,w as m,e as p,c as f,I as v,J as h,f as g,m as b,B as y,i as _,a4 as N}from"./index-C-c3zR6K.js";function k(e){return a({url:"/file/info/list",method:"get",params:e})}function w(e){return a({url:"/file/info/"+e,method:"delete"})}function z({storageType:e,clientName:t,filePath:s}){return a({url:`/file/${e}/${t}/download`,method:"get",params:{filePath:s},responseType:"blob",headers:{Authorization:"Bearer "+l()}})}function C(){return a({url:"/file/client-list",method:"get"})}function x(e,l,t,s){const u=new FormData;return u.append("chunk",s),a({url:"/file/uploadChunk",method:"post",params:{uploadId:e,filePath:l,chunkIndex:t},data:u,headers:{"Content-Type":"multipart/form-data",repeatSubmit:!1}})}const V={class:"card-header"},$={class:"file-name"},P={class:"file-details"},T={class:"detail-item"},S={class:"detail-value"},I={class:"detail-item"},M={class:"detail-value"},B={class:"progress-info"},U={class:"progress-text"},j={key:0,class:"el-icon-loading progress-icon"},E={class:"progress-message"},F={class:"progress-text"},O={class:"dialog-footer"},D={key:0,class:"el-icon-upload2"},A={key:1,class:"el-icon-loading"},J=t({__name:"ChunkUpload",props:{modelValue:{type:Boolean,default:!1}},emits:["update:modelValue","upload-success"],setup(l,{emit:t}){const k=l,w=t,z=s({get:()=>k.modelValue,set(e){w("update:modelValue",e)}}),J=u(null),Z=n({clientName:""}),q=n({fileName:"",fileSize:0,totalChunks:0}),G=u(10),H=u(0),K=u(""),L=n({currentChunk:0,message:""}),Q=u(!1),R=u(""),W=u(""),X=u([]),Y=u([]),ee=u(!1);function ae(){return e(this,null,(function*(){ee.value=!0;try{const e=yield C();200===e.code&&e.data&&(Y.value=Object.entries(e.data).flatMap((([e,a])=>a.map((a=>({value:e,label:`${e} - ${a}`,clientName:a}))))),Y.value.length>0&&(Z.clientName=Y.value[0].value))}catch(e){}finally{ee.value=!1}}))}function le(e){return J.value=e,q.fileName=e.name,q.fileSize=(e.size/1048576).toFixed(2),te(),!1}function te(){if(!J.value)return;const e=J.value.size,a=1024*G.value*1024;q.totalChunks=Math.ceil(e/a)}function se(){return e(this,null,(function*(){var e;if(J.value)if(Z.clientName)try{Q.value=!0,K.value="",L.message="开始初始化上传...",X.value=[];const t=1024*G.value*1024,s=[];let u=0;for(;usetTimeout(e,100)))}catch(l){throw new Error(`分片 ${e+1} 上传失败: ${l.message}`)}}L.message="正在合并分片...",X.value.sort(((e,a)=>e.partNumber-a.partNumber));const{data:d}=yield function(e){const{uploadId:l,filePath:t,partETags:s}=e;return a({url:"/file/completeUpload",method:"post",params:{uploadId:l,filePath:t},data:s})}({uploadId:R.value,filePath:W.value,partETags:X.value,clientName:Z.clientName});K.value="success",L.message="上传完成",N.success("文件上传成功"),w("upload-success",d),ne()}catch(l){K.value="exception",L.message=`上传失败: ${l.message}`,N.error(`文件上传失败: ${l.message}`)}finally{Q.value=!1}else N.warning("请选择存储桶");else N.warning("请先选择文件")}))}function ue(){J.value=null,q.fileName="",q.fileSize=0,q.totalChunks=0,H.value=0,K.value="",L.currentChunk=0,L.message="",R.value="",W.value="",X.value=[]}function ne(){ue(),z.value=!1}return o(z,(e=>{e?0===Y.value.length&&ae():ue()})),i((()=>{ae()})),(e,a)=>{const l=d("el-option"),t=d("el-select"),s=d("el-form-item"),u=d("el-upload"),n=d("el-input-number"),o=d("el-col"),i=d("el-row"),N=d("el-card"),k=d("el-progress"),w=d("el-form"),C=d("el-button"),x=d("el-dialog");return c(),r(x,{modelValue:z.value,"onUpdate:modelValue":a[2]||(a[2]=e=>z.value=e),title:"分片上传",width:"600px","append-to-body":"",class:"custom-upload-dialog"},{footer:m((()=>[g("div",O,[p(C,{onClick:ne,size:"medium",class:"btn-cancel"},{default:m((()=>a[8]||(a[8]=[g("i",{class:"el-icon-close"},null,-1),b(" 取消 ")]))),_:1}),p(C,{type:"primary",disabled:!J.value||Q.value||!Z.clientName,onClick:se,size:"medium",class:"btn-upload"},{default:m((()=>[Q.value?(c(),f("i",A)):(c(),f("i",D)),b(" "+y(Q.value?"上传中...":"开始上传"),1)])),_:1},8,["disabled"])])])),default:m((()=>[p(w,{model:Z,"label-width":"120px",class:"upload-form"},{default:m((()=>[p(s,{label:"存储桶",prop:"clientName"},{default:m((()=>[p(t,{modelValue:Z.clientName,"onUpdate:modelValue":a[0]||(a[0]=e=>Z.clientName=e),placeholder:"请选择存储桶",clearable:"",loading:ee.value,class:"el-select-custom"},{default:m((()=>[(c(!0),f(v,null,h(Y.value,(e=>(c(),r(l,{key:e.value,label:e.label,value:e.value},null,8,["label","value"])))),128))])),_:1},8,["modelValue","loading"])])),_:1}),p(s,{label:"选择文件"},{default:m((()=>[p(u,{class:"custom-upload-area",drag:"","show-file-list":!1,"before-upload":le},{default:m((()=>a[3]||(a[3]=[g("div",{class:"upload-content"},[g("i",{class:"el-icon-upload el-icon--primary upload-icon"}),g("div",{class:"upload-text"},[b("将文件拖到此处,或"),g("em",{class:"upload-link"},"点击上传")]),g("div",{class:"upload-tip"},"支持拖拽上传,最大文件500MB")],-1)]))),_:1})])),_:1}),p(s,{label:"分片大小"},{default:m((()=>[p(n,{modelValue:G.value,"onUpdate:modelValue":a[1]||(a[1]=e=>G.value=e),min:1,max:100,step:1,size:"small","controls-position":"right",onChange:te,class:"el-input-number-custom"},null,8,["modelValue"]),a[4]||(a[4]=g("span",{class:"unit"},"MB",-1))])),_:1}),p(s,{label:"文件信息"},{default:m((()=>[p(N,{class:"custom-file-info-card"},{header:m((()=>[g("div",V,[a[5]||(a[5]=g("i",{class:"el-icon-document file-icon"},null,-1)),g("span",$,y(q.fileName||"未选择文件"),1)])])),default:m((()=>[g("div",P,[p(i,{gutter:20},{default:m((()=>[p(o,{span:12},{default:m((()=>[g("div",T,[a[6]||(a[6]=g("span",{class:"detail-label"},"文件大小:",-1)),g("span",S,y(q.fileSize||"0")+" MB",1)])])),_:1}),p(o,{span:12},{default:m((()=>[g("div",I,[a[7]||(a[7]=g("span",{class:"detail-label"},"总分片数:",-1)),g("span",M,y(q.totalChunks||"0"),1)])])),_:1})])),_:1})])])),_:1})])),_:1}),p(s,{label:"上传进度"},{default:m((()=>[p(k,{percentage:H.value,status:K.value,"stroke-width":18,"show-text":!1,class:"custom-progress"},null,8,["percentage","status"]),g("div",B,[p(i,{gutter:20},{default:m((()=>[p(o,{span:12},{default:m((()=>[g("div",U,[Q.value?(c(),f("i",j)):_("",!0),g("span",E,y(L.message||"等待上传..."),1)])])),_:1}),p(o,{span:12,class:"text-right"},{default:m((()=>[g("div",F,[g("span",null,"分片: "+y(L.currentChunk+1)+" / "+y(q.totalChunks||"0"),1)])])),_:1})])),_:1})])])),_:1})])),_:1},8,["model"])])),_:1},8,["modelValue"])}}},[["__scopeId","data-v-0569b3d1"]]),Z=Object.freeze(Object.defineProperty({__proto__:null,default:J},Symbol.toStringTag,{value:"Module"}));export{J as C,z as a,Z as b,w as d,C as g,k as l};