WXL
21 小时以前 05c363fdd7ab04e3bd9a753e2c5d5bfff04d681c
1
"use strict";const e=require("../../common/vendor.js"),a=require("../../stores/user.js");if(!Array){(e.resolveComponent("uni-icons")+e.resolveComponent("uni-popup")+e.resolveComponent("uni-file-picker"))()}Math||((()=>"../../node-modules/@dcloudio/uni-ui/lib/uni-icons/uni-icons.js")+(()=>"../../node-modules/@dcloudio/uni-ui/lib/uni-popup/uni-popup.js")+(()=>"../../node-modules/@dcloudio/uni-ui/lib/uni-file-picker/uni-file-picker.js"))();const l={__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(l,{expose:i,emit:o}){const t=a.useUserStore(),s=l,n=o,r=e.ref(null),u=e.ref(null),d=e.ref([]),p=e.ref([]),c=e.ref(!0),g=e.ref("#67AFAB"),m=t.baseUrlHt,f=e.ref("base"),v=e.computed(()=>s.showGradeSlip?"base"===f.value?d.value:p.value:d.value),h=e.computed(()=>d.value.length+p.value.length);e.watch(()=>s.files,e=>{d.value=[...e]},{immediate:!0}),e.watch(()=>s.gradesFiles,e=>{p.value=[...e]},{immediate:!0});const y=e=>e?e.startsWith("http://")||e.startsWith("https://")?e:`${m}${e.startsWith("/")?"":"/"}${e}`:"",w={width:120,height:120,border:!1},b=["image/jpeg","image/png","image/gif","image/webp","image/bmp","image/svg+xml"],x=e=>{c.value=!e.show},F=e=>e&&b.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",j=e=>e&&b.includes(e)?g.value:e&&e.includes("pdf")?"#ff4d4f":e&&e.includes("word")?"#2b579a":e&&e.includes("excel")?"#217346":e&&e.includes("powerpoint")?"#b7472a":"#666",G=e=>e?e<1024?`${e}B`:e<1048576?`${(e/1024).toFixed(1)}KB`:`${(e/1048576).toFixed(1)}MB`:"",S=()=>{r.value&&r.value.open()},z=()=>{r.value&&r.value.close()},C=()=>{var e;null==(e=u.value)||e.choose()},N=e=>{if(!e)return"application/octet-stream";return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",gif:"image/gif",webp:"image/webp",bmp:"image/bmp",SVG:"image/svg+xml",pdf:"application/pdf"}[e.split(".").pop().toLowerCase()]||"application/octet-stream"},T=a=>{const l=s.showGradeSlip&&"grade"===f.value,i=l?p.value:d.value,o=a.tempFiles.filter(e=>{const a=e.name?e.name.split(".").pop().toLowerCase():"",l=b.includes(e.type)||["jpg","jpeg","png","gif","webp","bmp","svg"].includes(a),i=e.type&&e.type.includes("pdf")||"pdf"===a;return l||i}).map(e=>({name:e.name,url:e.path||e.url,type:e.type||N(e.name),size:e.size,file:e,status:"pending",attachmentType:l?"grade":"base"}));i.length+o.length>s.maxCount?e.index.showToast({title:`最多只能上传${s.maxCount}个文件`,icon:"none"}):l?(p.value=[...p.value,...o],n("update:gradesFiles",p.value)):(d.value=[...d.value,...o],n("update:files",d.value))},k=()=>[...d.value,...p.value],B=(e,a,l)=>{l&&l.stopPropagation(),"grade"===e?(p.value.splice(a,1),n("update:gradesFiles",p.value)):(d.value.splice(a,1),n("update:files",d.value))},P=a=>{const l=y(a.url);if(a.type&&b.includes(a.type)){const a=k();e.index.previewImage({urls:a.filter(e=>e.type&&b.includes(e.type)).map(e=>y(e.url)),current:l})}else a.type&&a.type.includes("pdf")?e.index.downloadFile({url:l,success:a=>{const l=a.tempFilePath;e.index.openDocument({filePath:l,fileType:"pdf",success:()=>console.log("打开PDF成功"),fail:a=>{console.error("打开PDF失败",a),e.index.showToast({title:"打开PDF失败",icon:"none"})}})},fail:a=>{console.error("下载PDF失败",a),e.index.showToast({title:"下载PDF失败",icon:"none"})}}):n("preview",a)},$=(a,l)=>new Promise((l,i)=>{const o=e.index.getStorageSync("token");e.index.uploadFile({url:"/api/common/upload",filePath:a.path||a.url,name:"file",header:{Authorization:`Bearer ${o}`},success:e=>{if(200===e.statusCode){const a=JSON.parse(e.data);console.log(a,"文件"),200===a.code?l({...a,fileName:a.fileName}):i(new Error(a.msg||"上传失败"))}else i(new Error(`上传失败,状态码: ${e.statusCode}`))},fail:e=>{i(e)}})}),A=async()=>{if(s.showGradeSlip&&s.isGradeRequired&&0===p.value.length)return e.index.showToast({title:"请上传成绩单附件",icon:"none"}),void(f.value="grade");if(0!==k().length){e.index.showLoading({title:"上传中",mask:!0});try{const l=d.value.filter(e=>!e.url||"pending"===e.status),i=p.value.filter(e=>!e.url||"pending"===e.status);for(const o of l)try{o.status="uploading";const e=await $(o.file);Object.assign(o,{url:e.url,fileName:e.name,newFileName:e.newFileName,originalFilename:e.originalFilename,status:"success",size:e.size}),n("upload-base",o)}catch(a){console.error("上传失败:",a),o.status="error",e.index.showToast({title:`文件 ${o.name} 上传失败`,icon:"none"})}for(const o of i)try{o.status="uploading";const e=await $(o.file);Object.assign(o,{url:e.fileName,fileName:e.fileName,newFileName:e.newFileName,originalFilename:e.originalFilename,status:"success"}),n("upload-grade",o)}catch(a){console.error("成绩单附件上传失败:",a),o.status="error",e.index.showToast({title:`文件 ${o.name} 上传失败`,icon:"none"})}console.log(d.value,"1"),console.log(p.value,"2"),n("update:files",d.value),n("update:gradesFiles",p.value),e.index.showToast({title:"上传完成",icon:"success"}),z()}catch(a){console.error("上传出错:",a),e.index.showToast({title:"上传出错",icon:"none"})}finally{e.index.hideLoading()}}else e.index.showToast({title:"请先添加附件",icon:"none"})};return i({getFilesByType:e=>"grade"===e?p.value:d.value,getAllFiles:k}),(a,i)=>e.e({a:h.value>0},h.value>0?{b:e.t(h.value)}:{},{c:l.position.right,d:l.position.bottom,e:l.bgColor,f:c.value?"flex":"none",g:e.o(S),h:!l.readonly},l.readonly?{}:{i:e.o(C),j:e.p({type:"plus",size:"24",color:g.value})},{k:e.o(z),l:e.p({type:"close",size:"24",color:"#999"}),m:l.showGradeSlip},l.showGradeSlip?e.e({n:"base"===f.value?1:"",o:e.o(e=>f.value="base"),p:l.isGradeRequired},(l.isGradeRequired,{}),{q:"grade"===f.value?1:"",r:e.o(e=>f.value="grade")}):{},{s:"base"===f.value||!l.showGradeSlip},"base"!==f.value&&l.showGradeSlip?{}:{t:e.f(d.value,(a,i,o)=>e.e({a:"2d320176-3-"+o+",2d320176-0",b:e.p({type:F(a.type),size:"24",color:j(a.type)}),c:e.o(e=>P(a),"base-"+i),d:e.t(a.originalFilename||a.name),e:e.t(G(a.size)),f:"uploading"===a.status},("uploading"===a.status||a.status,{}),{g:"error"===a.status,h:e.o(e=>P(a),"base-"+i)},l.readonly?{}:{i:e.o(e=>B("base",i,e),"base-"+i),j:"2d320176-4-"+o+",2d320176-0",k:e.p({type:"trash",size:"20",color:"#ff4d4f"})},{l:"base-"+i})),v:!l.readonly},{w:"grade"===f.value&&l.showGradeSlip},"grade"===f.value&&l.showGradeSlip?{x:e.f(p.value,(a,i,o)=>e.e({a:"2d320176-5-"+o+",2d320176-0",b:e.p({type:F(a.type),size:"24",color:j(a.type)}),c:e.o(e=>P(a),"grade-"+i),d:e.t(a.originalFilename||a.name),e:e.t(G(a.size)),f:"uploading"===a.status},("uploading"===a.status||a.status,{}),{g:"error"===a.status,h:e.o(e=>P(a),"grade-"+i)},l.readonly?{}:{i:e.o(e=>B("grade",i,e),"grade-"+i),j:"2d320176-6-"+o+",2d320176-0",k:e.p({type:"trash",size:"20",color:"#ff4d4f"})},{l:"grade-"+i})),y:!l.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||!l.showGradeSlip},"base"!==f.value&&l.showGradeSlip?(f.value,{}):{},{C:"grade"===f.value}):{},{D:!l.readonly},l.readonly?{}:{E:e.o(C),F:e.o(A)},{G:e.sr(r,"2d320176-0",{k:"popup"}),H:e.o(x),I:e.p({type:"bottom","safe-area":!1}),J:!l.readonly},l.readonly?{}:{K:e.sr(u,"2d320176-8",{k:"filePicker"}),L:e.o(T),M:e.o(a.onFileDelete),N:e.p({"auto-upload":!1,"file-mediatype":"all",limit:l.maxCount-v.value.length,"image-styles":w})},{O:e.gei(a,"")})}};wx.createComponent(l);