"use strict";const e=require("../../common/vendor.js"),a=require("../../stores/user.js");if(!Array){(e.resolveComponent("uni-icons")+e.resolveComponent("uni-popup"))()}Math||((()=>"../../node-modules/@dcloudio/uni-ui/lib/uni-icons/uni-icons.js")+(()=>"../../node-modules/@dcloudio/uni-ui/lib/uni-popup/uni-popup.js"))();const t={__name:"index",props:{files:{type:Array,default:()=>[]},gradesFiles:{type:Array,default:()=>[]},readonly:{type:Boolean,default:!1},position:{type:Object,default:()=>({right:"30rpx",bottom:"200rpx"})},bgColor:{type:String,default:"#67AFAB"},maxCount:{type:Number,default:9},showGradeSlip:{type:Boolean,default:!1},isGradeRequired:{type:Boolean,default:!1}},emits:["update:files","update:gradesFiles","upload","preview","upload-grade","upload-base"],setup(t,{expose:l,emit:s}){const i=a.useUserStore(),o=t,r=s,n=e.ref(null),u=e.ref([]),d=e.ref([]),p=e.ref(!0),c=e.ref("#67AFAB"),f=e.ref("base"),g=e.ref([]),h=i.baseUrlHt,v=e.computed(()=>o.showGradeSlip?"base"===f.value?u.value:d.value:u.value),m=e.computed(()=>u.value.length+d.value.length);e.watch(()=>o.files,e=>{u.value=[...e]},{immediate:!0}),e.watch(()=>o.gradesFiles,e=>{d.value=[...e]},{immediate:!0});const y=e=>{if(!e)return"";if(e.startsWith("blob:")||e.startsWith("file://"))return e;if(e.startsWith("http://")||e.startsWith("https://")){const a=e.indexOf("://")+3,t=e.indexOf("/",a);return-1!==t?`${h}${e.substring(t)}`:h}return`${h}${e.startsWith("/")?"":"/"}${e}`},w=["image/jpeg","image/png","image/gif","image/webp","image/bmp","image/svg+xml"],b=e=>{p.value=!e.show},x=e=>e&&w.includes(e)?"image":e&&e.includes("pdf")?"paperclip":e&&e.includes("word")?"file-word":e&&e.includes("excel")?"file-excel":e&&e.includes("powerpoint")?"file-ppt":"file",F=e=>e&&w.includes(e)?c.value:e&&e.includes("pdf")?"#ff4d4f":e&&e.includes("word")?"#2b579a":e&&e.includes("excel")?"#217346":e&&e.includes("powerpoint")?"#b7472a":"#666",z=e=>e?e<1024?`${e}B`:e<1048576?`${(e/1024).toFixed(1)}KB`:`${(e/1048576).toFixed(1)}MB`:"",S=()=>{var e;null==(e=n.value)||e.open()},G=()=>{var e;null==(e=n.value)||e.close()},j=a=>{const t=o.showGradeSlip&&"grade"===f.value;if((t?d.value:u.value).length+a.length>o.maxCount)return e.index.showToast({title:`最多只能上传${o.maxCount}个文件`,icon:"none"}),void a.forEach(e=>{e.url&&e.url.startsWith("blob:")&&URL.revokeObjectURL(e.url)});t?(d.value=[...d.value,...a],r("update:gradesFiles",d.value)):(u.value=[...u.value,...a],r("update:files",u.value))},$=()=>{e.index.showActionSheet({itemList:["拍照/相册","从聊天记录选择文件"],success:a=>{const t=o.maxCount-v.value.length;t<=0?e.index.showToast({title:`最多上传${o.maxCount}个文件`,icon:"none"}):0===a.tapIndex?e.index.chooseImage({count:t,sizeType:["original","compressed"],sourceType:["album","camera"],success:e=>{const a=e.tempFiles.map(e=>({name:e.name||"image.jpg",path:e.path,url:e.path,uploadPath:e.path,type:e.type||"image/jpeg",size:e.size,raw:e,status:"pending"}));j(a)}}):1===a.tapIndex&&e.index.chooseMessageFile({count:t,type:"all",success:e=>{const a=e.tempFiles.map(e=>({name:e.name,path:e.path,url:e.path,uploadPath:e.path,type:e.type,size:e.size,raw:e,status:"pending"}));j(a)}})}})},C=(e,a,t)=>{t&&t.stopPropagation();const l="grade"===e?d.value[a]:u.value[a];if(l.url&&l.url.startsWith("blob:")){URL.revokeObjectURL(l.url);const e=g.value.indexOf(l.url);-1!==e&&g.value.splice(e,1)}"grade"===e?(d.value.splice(a,1),r("update:gradesFiles",d.value)):(u.value.splice(a,1),r("update:files",u.value))},T=a=>{let t=a.url;if(!t||t.startsWith("blob:")||t.startsWith("file://")||t.startsWith("/")||(t=y(t)),a.type&&w.includes(a.type)){const a=[...u.value,...d.value].filter(e=>e.type&&w.includes(e.type)).map(e=>e.url.startsWith("blob:")||e.url.startsWith("file://")||e.url.startsWith("/")?e.url:y(e.url));e.index.previewImage({urls:a,current:t})}else a.type&&a.type.includes("pdf")?e.index.downloadFile({url:t,success:a=>{e.index.openDocument({filePath:a.tempFilePath,fileType:"pdf"})},fail:()=>e.index.showToast({title:"打开PDF失败",icon:"none"})}):r("preview",a)},W=(a,t)=>new Promise((t,l)=>{const s=e.index.getStorageSync("token"),o=a.uploadPath||a.url||a.path;if(!o||"string"!=typeof o)return void l(new Error("无效的文件路径"));const r=`${i.baseUrlHt}/common/upload`;e.index.uploadFile({url:r,filePath:o,name:"file",header:{Authorization:`Bearer ${s}`},success:e=>{if(200===e.statusCode)try{const a=JSON.parse(e.data);200===a.code?t({...a,fileName:a.fileName}):l(new Error(a.msg||"上传失败"))}catch{l(new Error("响应解析失败"))}else l(new Error(`上传失败,状态码: ${e.statusCode}`))},fail:l})}),B=async()=>{if(o.showGradeSlip&&o.isGradeRequired&&0===d.value.length)return e.index.showToast({title:"请上传成绩单附件",icon:"none"}),void(f.value="grade");if(0!==[...u.value,...d.value].filter(e=>!e.url||"pending"===e.status).length){e.index.showLoading({title:"上传中",mask:!0});try{const t=u.value.filter(e=>!e.url||"pending"===e.status),l=d.value.filter(e=>!e.url||"pending"===e.status);for(const s of t)try{s.status="uploading";const e=await W(s);Object.assign(s,{url:e.url,fileName:e.name,newFileName:e.newFileName,originalFilename:e.originalFilename,status:"success",size:e.size}),r("upload-base",s)}catch(a){s.status="error",e.index.showToast({title:`文件 ${s.name} 上传失败`,icon:"none"})}for(const s of l)try{s.status="uploading";const e=await W(s);Object.assign(s,{url:e.fileName,fileName:e.fileName,newFileName:e.newFileName,originalFilename:e.originalFilename,status:"success"}),r("upload-grade",s)}catch(a){s.status="error",e.index.showToast({title:`文件 ${s.name} 上传失败`,icon:"none"})}r("update:files",u.value),r("update:gradesFiles",d.value),e.index.showToast({title:"上传完成",icon:"success"}),G()}catch(t){console.error("上传出错:",t),e.index.showToast({title:"上传出错",icon:"none"})}finally{e.index.hideLoading()}}else e.index.showToast({title:"没有待上传的文件",icon:"none"})};return e.onBeforeUnmount(()=>{g.value.forEach(e=>URL.revokeObjectURL(e)),g.value=[]}),l({getFilesByType:e=>"grade"===e?d.value:u.value,getAllFiles:()=>[...u.value,...d.value]}),(a,l)=>e.e({a:m.value>0},m.value>0?{b:e.t(m.value)}:{},{c:t.position.right,d:t.position.bottom,e:t.bgColor,f:p.value?"flex":"none",g:e.o(S),h:!t.readonly},t.readonly?{}:{i:e.o($),j:e.p({type:"plus",size:"24",color:c.value})},{k:e.o(G),l:e.p({type:"close",size:"24",color:"#999"}),m:t.showGradeSlip},t.showGradeSlip?e.e({n:"base"===f.value?1:"",o:e.o(e=>f.value="base"),p:t.isGradeRequired},(t.isGradeRequired,{}),{q:"grade"===f.value?1:"",r:e.o(e=>f.value="grade")}):{},{s:"base"===f.value||!t.showGradeSlip},"base"!==f.value&&t.showGradeSlip?{}:{t:e.f(u.value,(a,l,s)=>e.e({a:"2d320176-3-"+s+",2d320176-0",b:e.p({type:x(a.type),size:"24",color:F(a.type)}),c:e.o(e=>T(a),"base-"+l),d:e.t(a.originalFilename||a.name),e:e.t(z(a.size)),f:"uploading"===a.status},("uploading"===a.status||a.status,{}),{g:"error"===a.status,h:e.o(e=>T(a),"base-"+l)},t.readonly?{}:{i:e.o(e=>C("base",l,e),"base-"+l),j:"2d320176-4-"+s+",2d320176-0",k:e.p({type:"trash",size:"20",color:"#ff4d4f"})},{l:"base-"+l})),v:!t.readonly},{w:"grade"===f.value&&t.showGradeSlip},"grade"===f.value&&t.showGradeSlip?{x:e.f(d.value,(a,l,s)=>e.e({a:"2d320176-5-"+s+",2d320176-0",b:e.p({type:x(a.type),size:"24",color:F(a.type)}),c:e.o(e=>T(a),"grade-"+l),d:e.t(a.originalFilename||a.name),e:e.t(z(a.size)),f:"uploading"===a.status},("uploading"===a.status||a.status,{}),{g:"error"===a.status,h:e.o(e=>T(a),"grade-"+l)},t.readonly?{}:{i:e.o(e=>C("grade",l,e),"grade-"+l),j:"2d320176-6-"+s+",2d320176-0",k:e.p({type:"trash",size:"20",color:"#ff4d4f"})},{l:"grade-"+l})),y:!t.readonly}:{},{z:0===v.value.length},0===v.value.length?e.e({A:e.p({type:"info",size:"24",color:"#999"}),B:"base"===f.value||!t.showGradeSlip},"base"!==f.value&&t.showGradeSlip?(f.value,{}):{},{C:"grade"===f.value}):{},{D:!t.readonly},t.readonly?{}:{E:e.o($),F:e.o(B)},{G:e.sr(n,"2d320176-0",{k:"popup"}),H:e.o(b),I:e.p({type:"bottom","safe-area":!1}),J:e.gei(a,"")})}};wx.createComponent(t);
|