import{o as e,c as t,w as s,t as i,G as l,R as o,a2 as a,C as r,F as n,v as d,x as p,A as u,i as h,a7 as c,e as f,b as m,ag as y,h as g,ac as v,aU as w,q as b,D as $,a0 as x,E as C}from"./index-v_Wqmvb-.js";import{_ as k}from"./u-icon.gMSDOAx_.js";import{r as S}from"./uni-app.es.CBJqksiz.js";import{_ as T}from"./_plugin-vue_export-helper.BCo6x5W8.js";const _=T({name:"u-line-progress",props:{round:{type:Boolean,default:!0},type:{type:String,default:""},activeColor:{type:String,default:"#19be6b"},inactiveColor:{type:String,default:"#ececec"},percent:{type:Number,default:0},showPercent:{type:Boolean,default:!0},height:{type:[Number,String],default:28},striped:{type:Boolean,default:!1},stripedActive:{type:Boolean,default:!1}},data:()=>({}),computed:{progressStyle(){let e={};return e.width=this.percent+"%",this.activeColor&&(e.backgroundColor=this.activeColor),e}},methods:{}},[["render",function(c,f,m,y,g,v){const w=h;return e(),t(w,{class:"u-progress",style:o({borderRadius:m.round?"100rpx":0,height:m.height+"rpx",backgroundColor:m.inactiveColor})},{default:s((()=>[i(w,{class:l([[m.type?`u-type-${m.type}-bg`:"",m.striped?"u-striped":"",m.striped&&m.stripedActive?"u-striped-active":""],"u-active"]),style:o([v.progressStyle])},{default:s((()=>[c.$slots.default||c.$slots.$default?a(c.$slots,"default",{key:0},void 0,!0):m.showPercent?(e(),r(n,{key:1},[d(p(m.percent+"%"),1)],64)):u("",!0)])),_:3},8,["class","style"])])),_:3},8,["style"])}],["__scopeId","data-v-7da934da"]]);const F=T({name:"u-upload",emits:["update:file-list","on-oversize","on-list-change","on-preview","on-remove","on-success","on-change","on-error","on-progress","on-uploaded","on-choose-complete","on-choose-fail"],props:{showUploadList:{type:Boolean,default:!0},action:{type:String,default:""},maxCount:{type:[String,Number],default:52},showProgress:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},imageMode:{type:String,default:"aspectFill"},header:{type:Object,default:()=>({})},formData:{type:Object,default:()=>({})},name:{type:String,default:"file"},sizeType:{type:Array,default:()=>["original","compressed"]},sourceType:{type:Array,default:()=>["album","camera"]},previewFullImage:{type:Boolean,default:!0},multiple:{type:Boolean,default:!0},deletable:{type:Boolean,default:!0},maxSize:{type:[String,Number],default:Number.MAX_VALUE},fileList:{type:Array,default:()=>[]},uploadText:{type:String,default:"选择图片"},autoUpload:{type:Boolean,default:!0},showTips:{type:Boolean,default:!0},customBtn:{type:Boolean,default:!1},width:{type:[String,Number],default:200},height:{type:[String,Number],default:200},delBgColor:{type:String,default:"#fa3534"},delColor:{type:String,default:"#ffffff"},delIcon:{type:String,default:"close"},successIcon:{type:String,default:"checkbox-mark"},successColor:{type:String,default:"#ffffff"},toJson:{type:Boolean,default:!0},beforeUpload:{type:Function,default:null},beforeRemove:{type:Function,default:null},limitType:{type:Array,default:()=>["png","jpg","jpeg","webp","gif","image"]},index:{type:[Number,String],default:""}},mounted(){},data:()=>({lists:[],isInCount:!0,uploading:!1}),watch:{fileList:{immediate:!0,handler(e){let t=this;e.map((e=>{t.lists.some((t=>t.url==e.url))||t.lists.push({url:e.url,error:!1,progress:100})}))}},lists:{deep:!0,handler(e){this.$emit("update:file-list",e),this.$emit("on-list-change",e,this.index)}}},methods:{clear(){this.lists=[]},reUpload(){this.uploadFile()},selectFile(){let e=this;if(e.disabled)return;const{name:t="",maxCount:s,multiple:i,maxSize:l,sizeType:o,camera:a,compressed:r,maxDuration:n,sourceType:d}=e;let p=null,u=JSON.parse(JSON.stringify(e.lists));const h=s-u.length;p=new Promise(((e,t)=>{c({count:i?h>9?9:h:1,sourceType:d,sizeType:o,success:e,fail:t})})),p.then((t=>{let o=e.lists.length;t.tempFiles.map(((t,o)=>{if(e.checkFileExt(t)&&(i||!(o>=1)))if(t.size>l)e.$emit("on-oversize",t,e.lists,e.index),e.showToast("超出允许的文件大小");else{if(s<=u.length)return e.$emit("on-exceed",t,e.lists,e.index),void e.showToast("超出最大允许的文件个数");u.push({url:t.path,progress:0,error:!1,file:t})}})),this.deepClone(u,e.lists),e.$emit("on-choose-complete",e.lists,e.index),e.autoUpload&&e.uploadFile(o)})).catch((t=>{e.$emit("on-choose-fail",t)}))},showToast(e,t=!1){(this.showTips||t)&&f({title:e,icon:"none"})},upload(){this.uploadFile()},retry(e){this.lists[e].progress=0,this.lists[e].error=!1,this.lists[e].response=null,m({title:"重新上传"}),this.uploadFile(e)},async uploadFile(e=0){if(this.disabled)return;if(this.uploading)return;if(e>=this.lists.length)return void this.$emit("on-uploaded",this.lists,this.index);if(100==this.lists[e].progress)return void(0==this.autoUpload&&this.uploadFile(e+1));if(this.beforeUpload&&"function"==typeof this.beforeUpload){let t=this.beforeUpload.bind(this.$u.$parent.call(this))(e,this.lists);if(t&&"function"==typeof t.then)await t.then((e=>{})).catch((t=>this.uploadFile(e+1)));else if(!1===t)return this.uploadFile(e+1)}if(!this.action)return void this.showToast("请配置上传地址",!0);this.lists[e].error=!1,this.uploading=!0;y({url:this.action,filePath:this.lists[e].url,name:this.name,formData:this.formData,header:this.header,success:t=>{let s=this.toJson&&this.$u.test.jsonString(t.data)?JSON.parse(t.data):t.data;[200,201,204].includes(t.statusCode)?(this.lists[e].response=s,this.lists[e].progress=100,this.lists[e].error=!1,this.$emit("on-success",s,e,this.lists,this.index)):this.uploadError(e,s)},fail:t=>{this.uploadError(e,t)},complete:t=>{g(),this.uploading=!1,this.uploadFile(e+1),this.$emit("on-change",t,e,this.lists,this.index)}}).onProgressUpdate((t=>{t.progress>0&&(this.lists[e].progress=t.progress,this.$emit("on-progress",t,e,this.lists,this.index))}))},uploadError(e,t){this.lists[e].progress=0,this.lists[e].error=!0,this.lists[e].response=null,this.$emit("on-error",t,e,this.lists,this.index),this.showToast("上传失败,请重试")},deleteItem(e){v({title:"提示",content:"您确定要删除此项吗?",success:async t=>{if(t.confirm)if(this.beforeRemove&&"function"==typeof this.beforeRemove){let t=this.beforeRemove.bind(this.$u.$parent.call(this))(e,this.lists);t&&"function"==typeof t.then?await t.then((t=>{this.handlerDeleteItem(e)})).catch((e=>{this.showToast("已终止移除")})):!1===t?this.showToast("已终止移除"):this.handlerDeleteItem(e)}else this.handlerDeleteItem(e)}})},handlerDeleteItem(e){this.lists[e].progress<100&&this.lists[e].progress>0&&void 0!==this.lists[e].uploadTask&&this.lists[e].uploadTask.abort(),this.lists.splice(e,1),this.$forceUpdate(),this.$emit("on-remove",e,this.lists,this.index)},remove(e){e>=0&&e<this.lists.length&&(this.lists.splice(e,1),this.$emit("on-list-change",this.lists,this.index))},doPreviewImage(e,t){if(!this.previewFullImage)return void this.$emit("on-preview",e,this.lists,this.index);const s=this.lists.map((e=>e.url||e.path));w({urls:s,current:e,success:()=>{this.$emit("on-preview",e,this.lists,this.index)},fail:()=>{f({title:"预览图片失败",icon:"none"})}})},checkFileExt(e){let t=!1,s="";return s=e.name.replace(/.+\./,"").toLowerCase(),t=this.limitType.some((e=>e.toLowerCase()===s)),t||this.showToast(`不允许选择${s}格式的文件`),t},deepClone(e,t){for(let s in e){const i=e[s];Array.isArray(i)?(t[s]=[],this.deepClone(i,t[s])):null!==i&&"object"==typeof i?(t[s]={},this.deepClone(i,t[s])):t[s]=i}}}},[["render",function(l,c,f,m,y,g){const v=S(b("u-icon"),k),w=h,T=S(b("u-line-progress"),_),F=C;return e(),t(w,{class:"u-upload"},{default:s((()=>[f.showUploadList?(e(!0),r(n,{key:0},$(y.lists,((a,r)=>(e(),t(w,{class:"u-list-item u-preview-wrap",key:r,style:o({width:l.$u.addUnit(f.width),height:l.$u.addUnit(f.height)})},{default:s((()=>[f.deletable?(e(),t(w,{key:0,class:"u-delete-icon",onClick:x((e=>g.deleteItem(r)),["stop"]),style:o({background:f.delBgColor})},{default:s((()=>[i(v,{class:"u-icon",name:f.delIcon,size:"20",color:f.delColor},null,8,["name","color"])])),_:2},1032,["onClick","style"])):u("",!0),f.showProgress&&a.progress>0&&100!=a.progress&&!a.error?(e(),t(T,{key:1,"show-percent":!1,height:"16",class:"u-progress",percent:a.progress},null,8,["percent"])):u("",!0),a.error?(e(),t(w,{key:2,onClick:x((e=>g.retry(r)),["stop"]),class:"u-error-btn"},{default:s((()=>[d("点击重试")])),_:2},1032,["onClick"])):u("",!0),a.isImage?u("",!0):(e(),t(F,{key:3,onClick:x((e=>g.doPreviewImage(a.url||a.path,r)),["stop"]),class:"u-preview-image",src:a.url||a.path,mode:f.imageMode},null,8,["onClick","src","mode"]))])),_:2},1032,["style"])))),128)):u("",!0),a(l.$slots,"file",{file:y.lists},void 0,!0),f.maxCount>y.lists.length?(e(),t(w,{key:1,style:{display:"inline-block"},onClick:g.selectFile},{default:s((()=>[a(l.$slots,"addBtn",{},void 0,!0),f.customBtn?u("",!0):(e(),t(w,{key:0,class:"u-list-item u-add-wrap","hover-class":"u-add-wrap__hover","hover-stay-time":"150",style:o({width:l.$u.addUnit(f.width),height:l.$u.addUnit(f.height)})},{default:s((()=>[i(v,{name:"plus",class:"u-add-btn",size:"40"}),i(w,{class:"u-add-tips"},{default:s((()=>[d(p(f.uploadText),1)])),_:1})])),_:1},8,["style"]))])),_:3},8,["onClick"])):u("",!0)])),_:3})}],["__scopeId","data-v-0728a86c"]]);export{F as _};