Files
anmo/server/public/mobile/assets/index.4804b941.js
2025-08-21 16:38:20 +08:00

2 lines
11 KiB
JavaScript

import{_ as e}from"./u-icon.a5146a33.js";import{o as t,e as s,w as i,f as l,R as o,n as a,T as r,q as d,F as n,g as u,t as p,i as h,j as c,aM as f,aZ as m,a5 as y,bP as g,a7 as v,aN as b,ay as w,r as x,b as S,v as $,X as C,a4 as k,d as _,U,l as B,az as T,av as F,aA as I}from"./index-d0750414.js";import{_ as N}from"./_plugin-vue_export-helper.1b428a4d.js";const z=N({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(e,f,m,y,g,v){const b=c;return t(),s(b,{class:"u-progress",style:a({borderRadius:m.round?"100rpx":0,height:m.height+"rpx",backgroundColor:m.inactiveColor})},{default:i(()=>[l(b,{class:o([[m.type?`u-type-${m.type}-bg`:"",m.striped?"u-striped":"",m.striped&&m.stripedActive?"u-striped-active":""],"u-active"]),style:a([v.progressStyle])},{default:i(()=>[e.$slots.default||e.$slots.$default?r(e.$slots,"default",{key:0},void 0,!0):m.showPercent?(t(),d(n,{key:1},[u(p(m.percent+"%"),1)],64)):h("",!0)]),_:3},8,["class","style"])]),_:3},8,["style"])}],["__scopeId","data-v-7d20e2be"]]);const O=N({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"},delIconSize:{type:Number,default:20},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=JSON.parse(JSON.stringify(this.lists));e.map(e=>{t.some(t=>t.url==e.url)||t.push({url:e.url,error:!1,progress:100})}),this.lists=JSON.parse(JSON.stringify(t))}},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:d,sourceType:n}=e;let u=null,p=JSON.parse(JSON.stringify(e.lists));const h=s-p.length;u=new Promise((e,t)=>{f({count:i?h>9?9:h:1,sourceType:n,sizeType:o,success:e,fail:t})}),u.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<=p.length)return e.$emit("on-exceed",t,e.lists,e.index),void e.showToast("超出最大允许的文件个数");p.push({url:t.path,progress:0,error:!1,file:t})}}),this.deepClone(p,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)&&m({title:e,icon:"none"})},upload(){this.uploadFile()},retry(e){this.lists[e].progress=0,this.lists[e].error=!1,this.lists[e].response=null,y({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;g({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=>{v(),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){b({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].process<100&&this.lists[e].process>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)},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:()=>{m({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(o,f,m,y,g,v){const b=x(S("u-icon"),e),w=c,_=x(S("u-line-progress"),z),U=k;return m.disabled?h("",!0):(t(),s(w,{key:0,class:"u-upload"},{default:i(()=>[m.showUploadList?(t(!0),d(n,{key:0},$(g.lists,(e,r)=>(t(),s(w,{class:"u-list-item u-preview-wrap",key:r,style:a({width:o.$u.addUnit(m.width),height:o.$u.addUnit(m.height)})},{default:i(()=>[m.deletable?(t(),s(w,{key:0,class:"u-delete-icon",onClick:C(e=>v.deleteItem(r),["stop"]),style:a({background:m.delBgColor})},{default:i(()=>[l(b,{class:"u-icon",name:m.delIcon,size:m.delIconSize,color:m.delColor},null,8,["name","size","color"])]),_:2},1032,["onClick","style"])):h("",!0),m.showProgress&&e.progress>0&&!e.error&&e.progress<100?(t(),s(_,{key:1,"show-percent":!1,height:"16",class:"u-progress",percent:e.progress},null,8,["percent"])):h("",!0),e.error?(t(),s(w,{key:2,onClick:C(e=>v.retry(r),["stop"]),class:"u-error-btn"},{default:i(()=>[u("点击重试")]),_:2},1032,["onClick"])):h("",!0),e.isImage?h("",!0):(t(),s(U,{key:3,onClick:C(t=>v.doPreviewImage(e.url||e.path,r),["stop"]),class:"u-preview-image",src:e.url||e.path,mode:m.imageMode},null,8,["onClick","src","mode"]))]),_:2},1032,["style"]))),128)):h("",!0),r(o.$slots,"file",{file:g.lists},void 0,!0),m.maxCount>g.lists.length?(t(),s(w,{key:1,style:{display:"inline-block"},onClick:v.selectFile},{default:i(()=>[r(o.$slots,"addBtn",{},void 0,!0),m.customBtn?h("",!0):(t(),s(w,{key:0,class:"u-list-item u-add-wrap","hover-class":"u-add-wrap__hover","hover-stay-time":"150",style:a({width:o.$u.addUnit(m.width),height:o.$u.addUnit(m.height)})},{default:i(()=>[l(b,{name:"plus",class:"u-add-btn",size:"40"}),l(w,{class:"u-add-tips"},{default:i(()=>[u(p(m.uploadText),1)]),_:1})]),_:1},8,["style"]))]),_:3},8,["onClick"])):h("",!0)]),_:3}))}],["__scopeId","data-v-7054c399"]]),P=N(_({__name:"index",props:{mutiple:{type:Boolean,default:!1},maxUpload:{default:1},previewSize:{default:"140"},deletable:{default:!0},tips:{default:"上传图片"},showProgress:{type:Boolean,default:!1},isUploaded:{type:Boolean,default:!1}},emits:["update:modelValue","update:isUploaded"],setup(o,{emit:a}){const r=U(),d=B(""),n=B(""),h=B([]),f=e=>{I(JSON.parse(e.data).msg),1==JSON.parse(e.data).code&&(h.value.push(JSON.parse(e.data).data.uri),a("update:modelValue",h.value))},m=e=>{h.value.splice(e,1),a("update:modelValue",h.value)},y=()=>{a("update:isUploaded",!0)},g=(e,t)=>{a("update:isUploaded",!1)};return T(()=>{d.value=`${F.baseUrl}/${F.urlPrefix}/Upload/image`,n.value=r.token}),(a,r)=>{const v=x(S("u-icon"),e),b=c,w=x(S("u-upload"),O);return t(),s(b,{class:"uploader-container flex wrap"},{default:i(()=>[l(w,{onOnChange:f,action:d.value,header:{token:n.value,version:"1.0.0"},deletable:o.deletable,"max-count":o.maxUpload,showProgress:o.showProgress,onOnRemove:m,multiple:o.mutiple,"custom-btn":!0,width:o.previewSize,height:o.previewSize,"del-icon":"close-circle","del-bg-color":"none","del-icon-size":"36","del-color":"#ffffff",ref:"upload",onOnUploaded:y,"before-upload":g},{addBtn:i(()=>[l(b,{class:"uplader-upload","hover-class":"slot-btn__hover","hover-stay-time":"150"},{default:i(()=>[l(v,{size:"48",color:"#dcdee0",name:"camera"}),l(b,{class:"xs mt-[10rpx]"},{default:i(()=>[u(p(h.value.length>=1?h.value.length+"/"+o.maxUpload:o.tips),1)]),_:1})]),_:1})]),_:1},8,["action","header","deletable","max-count","showProgress","multiple","width","height"])]),_:1})}}}),[["__scopeId","data-v-f04eacac"]]);export{P as u};