"use strict";const e=require("../../../../../common/vendor.js"),t={name:"uniFilePicker",components:{uploadImage:()=>"./upload-image.js",uploadFile:()=>"./upload-file.js"},options:{virtualHost:!0},emits:["select","success","fail","progress","delete","update:modelValue","input"],props:{modelValue:{type:[Array,Object],default:()=>[]},value:{type:[Array,Object],default:()=>[]},disabled:{type:Boolean,default:!1},disablePreview:{type:Boolean,default:!1},delIcon:{type:Boolean,default:!0},autoUpload:{type:Boolean,default:!0},limit:{type:[Number,String],default:9},mode:{type:String,default:"grid"},fileMediatype:{type:String,default:"image"},fileExtname:{type:[Array,String],default:()=>[]},title:{type:String,default:""},listStyles:{type:Object,default:()=>({border:!0,dividline:!0,borderStyle:{}})},imageStyles:{type:Object,default:()=>({width:"auto",height:"auto"})},readonly:{type:Boolean,default:!1},returnType:{type:String,default:"array"},sizeType:{type:Array,default:()=>["original","compressed"]},sourceType:{type:Array,default:()=>["album","camera"]},provider:{type:String,default:""},dir:{type:String,default:""}},data:()=>({files:[],localValue:[],dirPath:""}),watch:{value:{handler(e,t){this.setValue(e,t)},immediate:!0},modelValue:{handler(e,t){this.setValue(e,t)},immediate:!0},dir:{handler(e){this.dirPath=e},immediate:!0}},computed:{filesList(){let e=[];return this.files.forEach(t=>{e.push(t)}),e},showType(){return"image"===this.fileMediatype?this.mode:"list"},limitLength(){return"object"===this.returnType?1:this.limit?this.limit>=9?9:this.limit:1}},created(){e.tr.config&&e.tr.config.provider||(this.noSpace=!0,e.tr.chooseAndUploadFile=e.chooseAndUploadFile),this.form=this.getForm("uniForms"),this.formItem=this.getForm("uniFormsItem"),this.form&&this.formItem&&this.formItem.name&&(this.rename=this.formItem.name,this.form.inputChildrens.push(this))},methods:{clearFiles(e){0===e||e?this.files.splice(e,1):(this.files=[],this.$nextTick(()=>{this.setEmit()})),this.$nextTick(()=>{this.setEmit()})},upload(){let e=[];return this.files.forEach((t,i)=>{"ready"!==t.status&&"error"!==t.status||e.push(Object.assign({},t))}),this.uploadFiles(e)},async setValue(e,t){const i=async e=>{let t="";return t=e.fileID?e.fileID:e.url,/cloud:\/\/([\w.]+\/?)\S*/.test(t)&&(e.fileID=t,e.url=await this.getTempFileURL(t)),e.url&&(e.path=e.url),e};if("object"===this.returnType)e?await i(e):e={};else{e||(e=[]);for(let t=0;t<e.length;t++){let s=e[t];await i(s)}}this.localValue=e,this.form&&this.formItem&&!this.is_reset&&(this.is_reset=!1,this.formItem.setValue(this.localValue));let s=Object.keys(e).length>0?e:[];this.files=[].concat(s)},choose(){this.disabled||(this.files.length>=Number(this.limitLength)&&"grid"!==this.showType&&"array"===this.returnType?e.index.showToast({title:`您最多选择 ${this.limitLength} 个文件`,icon:"none"}):this.chooseFiles())},chooseFiles(){const t=e.get_extname(this.fileExtname);e.tr.chooseAndUploadFile({type:this.fileMediatype,compressed:!1,sizeType:this.sizeType,sourceType:this.sourceType,extension:t.length>0?t:void 0,count:this.limitLength-this.files.length,onChooseFile:this.chooseFileCallback,onUploadProgress:e=>{this.setProgress(e,e.index)}}).then(e=>{this.setSuccessAndError(e.tempFiles)}).catch(e=>{console.log("选择失败",e)})},async chooseFileCallback(t){const i=e.get_extname(this.fileExtname);(1===Number(this.limitLength)&&this.disablePreview&&!this.disabled||"object"===this.returnType)&&(this.files=[]);let{filePaths:s,files:l}=e.get_files_and_is_max(t,i);i&&i.length>0||(s=t.tempFilePaths,l=t.tempFiles);let a=[];for(let r=0;r<l.length&&!(this.limitLength-this.files.length<=0);r++){l[r].uuid=Date.now();let t=await e.get_file_data(l[r],this.fileMediatype);t.progress=0,t.status="ready";let i={...t,file:l[r]};this.files.push(i),a.push(i)}return this.$emit("select",{tempFiles:a,tempFilePaths:s}),t.tempFiles=l,this.autoUpload&&!this.noSpace||(t.tempFiles=[]),t.tempFiles.map((e,t)=>{this.provider&&(e.provider=this.provider);const i=e.name.split("."),s=i.pop(),l=i.join(".").replace(/[\s\/\?<>\\:\*\|":]/g,"_");let a=this.dirPath||"";return a&&"/"!==a[a.length-1]&&(a+="/"),e.cloudPath=a+l+"_"+Date.now()+"_"+t+"."+s,e.cloudPathAsRealPath=!0,e}),t},uploadFiles(t){return t=[].concat(t),e.uploadCloudFiles.call(this,t,5,e=>{this.setProgress(e,e.index,!0)}).then(e=>(this.setSuccessAndError(e),e)).catch(e=>{console.log(e)})},async setSuccessAndError(e,t){let i=[],s=[],l=[],a=[];for(let r=0;r<e.length;r++){const t=e[r],o=t.uuid?this.files.findIndex(e=>e.uuid===t.uuid):t.index;if(-1===o||!this.files)break;if("request:fail"===t.errMsg)this.files[o].url=t.path,this.files[o].status="error",this.files[o].errMsg=t.errMsg,s.push(this.files[o]),a.push(this.files[o].url);else{this.files[o].errMsg="",this.files[o].fileID=t.url;/cloud:\/\/([\w.]+\/?)\S*/.test(t.url)?this.files[o].url=await this.getTempFileURL(t.url):this.files[o].url=t.url,this.files[o].status="success",this.files[o].progress+=1,i.push(this.files[o]),l.push(this.files[o].fileID)}}i.length>0&&(this.setEmit(),this.$emit("success",{tempFiles:this.backObject(i),tempFilePaths:l})),s.length>0&&this.$emit("fail",{tempFiles:this.backObject(s),tempFilePaths:a})},setProgress(e,t,i){this.files.length;const s=Math.round(100*e.loaded/e.total);let l=t;i||(l=this.files.findIndex(t=>t.uuid===e.tempFile.uuid)),-1!==l&&this.files[l]&&(this.files[l].progress=s-1,this.$emit("progress",{index:l,progress:parseInt(s),tempFile:this.files[l]}))},delFile(e){this.$emit("delete",{index:e,tempFile:this.files[e],tempFilePath:this.files[e].url}),this.files.splice(e,1),this.$nextTick(()=>{this.setEmit()})},getFileExt(e){const t=e.lastIndexOf("."),i=e.length;return{name:e.substring(0,t),ext:e.substring(t+1,i)}},setEmit(){let e=[];"object"===this.returnType?(e=this.backObject(this.files)[0],this.localValue=e||null):(e=this.backObject(this.files),this.localValue||(this.localValue=[]),this.localValue=[...e]),this.$emit("update:modelValue",this.localValue)},backObject(e){let t=[];return e.forEach(e=>{t.push({extname:e.extname,fileType:e.fileType,image:e.image,name:e.name,path:e.path,size:e.size,fileID:e.fileID,url:e.url,uuid:e.uuid,status:e.status,cloudPath:e.cloudPath})}),t},async getTempFileURL(t){t={fileList:[].concat(t)};return(await e.tr.getTempFileURL(t)).fileList[0].tempFileURL||""},getForm(e="uniForms"){let t=this.$parent,i=t.$options.name;for(;i!==e;){if(t=t.$parent,!t)return!1;i=t.$options.name}return t}}};if(!Array){(e.resolveComponent("upload-image")+e.resolveComponent("upload-file"))()}const i=e._export_sfc(t,[["render",function(t,i,s,l,a,r){return e.e({a:s.title},s.title?{b:e.t(s.title),c:e.t(r.filesList.length),d:e.t(r.limitLength)}:{},{e:"image"===s.fileMediatype&&"grid"===r.showType},"image"===s.fileMediatype&&"grid"===r.showType?{f:e.o(r.uploadFiles),g:e.o(r.choose),h:e.o(r.delFile),i:e.p({readonly:s.readonly,"image-styles":s.imageStyles,"files-list":r.filesList,limit:r.limitLength,disablePreview:s.disablePreview,delIcon:s.delIcon})}:{},{j:"image"!==s.fileMediatype||"grid"!==r.showType},"image"!==s.fileMediatype||"grid"!==r.showType?{k:e.o(r.uploadFiles),l:e.o(r.choose),m:e.o(r.delFile),n:e.p({readonly:s.readonly,"list-styles":s.listStyles,"files-list":r.filesList,showType:r.showType,delIcon:s.delIcon})}:{},{o:e.gei(t,"")})}]]);wx.createComponent(i);
|