cwg-file-picker-wrapper.Cam0EC4E.js 8.1 KB

1
  1. import{r as e,aO as a,x as t,bo as l,aW as s,aV as i,aG as r,B as o,bp as u,a8 as n,G as c,F as p,aQ as d,ah as f,aw as m,av as g,N as v,aa as y,M as h,b8 as b,E as _,br as k,af as C,aJ as x,at as w,u as H,be as j,bm as W,b4 as S,au as F}from"./index-F6_4Jyh4.js";import{_ as O}from"./liveChat.GIhP_1Cc.js";import{c as D}from"./index.2vaGpUrt.js";const B="border:1px #eee solid;border-radius:5px;",P=e({__name:"cwg-file-picker-wrapper",props:{modelValue:{type:[Array,String,Object],default:()=>[]},readonly:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},limit:{type:Number,default:9},fileMediatype:{type:String,default:"all"},delIcon:{type:Boolean,default:!0},disablePreview:{type:Boolean,default:!1},autoUpload:{type:Boolean,default:!0},action:{type:String,default:""},imageWidth:{type:String,default:""},imageHeight:{type:String,default:""},uploadUrl:{type:String,default:"/custom/bank/upload"},uploadHeaders:{type:Object,default:()=>({})},uploadName:{type:String,default:"file"},uploadData:{type:Object,default:()=>({})},responseHandler:{type:Function,default:e=>{var a;try{const t="string"==typeof e?JSON.parse(e):e;return{success:200===t.code,path:(null==(a=t.data)?void 0:a.path)||t.data,message:t.msg||"上传成功"}}catch(t){return{success:!1,message:"解析失败"}}}}},emits:["update:modelValue","change","delete","success","fail","progress","select"],setup(e,{emit:P}){const X=e,$=P,A=a([]),I=a([]),L=a("array"),U=t(()=>{if(X.imageWidth||X.imageHeight){return{width:"number"==typeof X.imageWidth?`${X.imageWidth}px`:X.imageWidth||"auto",height:"number"==typeof X.imageHeight?`${X.imageHeight}px`:X.imageHeight||"auto"}}return"width:33.3%;height:0;"});function E(e){$("update:modelValue",e),$("change",e)}l(()=>X.modelValue,e=>{const a=function(e){if(!e)return[];if("string"==typeof e)return[{path:e,url:e.startsWith("http")?e:D.Host05+e,name:e.split("/").pop(),status:"success"}];if("object"==typeof e&&!Array.isArray(e)){const a=e.path||e.url||"";return[{...e,path:a,url:e.url||(a.startsWith("http")?a:D.Host05+a),name:e.name||a.split("/").pop(),status:"success"}]}return Array.isArray(e)?e.map(e=>{if("string"==typeof e)return{path:e,url:e.startsWith("http")?e:D.Host05+e,name:e.split("/").pop(),status:"success"};{const a=(null==e?void 0:e.path)||(null==e?void 0:e.url)||"";return{...e,path:a,url:(null==e?void 0:e.url)||(a.startsWith("http")?a:D.Host05+a),name:(null==e?void 0:e.name)||a.split("/").pop(),status:"success"}}}):[]}(e);if(JSON.stringify(A.value)!==JSON.stringify(a)){if(!e)return A.value=[],void(L.value="array");"string"==typeof e?L.value="string":"object"!=typeof e||Array.isArray(e)?L.value="array":L.value="object",A.value=a}},{immediate:!0,deep:!0}),l(A,e=>{F(()=>{let a=[];if(!e||0===e.length)return a="string"===L.value?"":"object"===L.value?{}:[],void E(a);const t=e.map(e=>e.path||e.url||"");console.log(L),a=1===X.limit||"string"===L.value?t[0]||"":"object"===L.value?{path:t[0]||""}:t,E(a)})},{deep:!0});const N=e=>{var a;const t=null==(a=(e.path||e.name||"").split(".").pop())?void 0:a.toLowerCase();return["jpg","jpeg","png","gif","webp","bmp","svg"].includes(t)},V=e=>{var a;const t=null==(a=(e.path||e.name||"").split(".").pop())?void 0:a.toLowerCase();return["mp4","mov","avi","flv","wmv","rmvb"].includes(t)},J=e=>{var a;return e?null==(a=e.split(".").pop())?void 0:a.toUpperCase():""},M=e=>{const a=J(e);return"PDF"===a?"PDF":["DOC","DOCX"].includes(a)?"WORD":["XLS","XLSX"].includes(a)?"EXCEL":V({name:e})?"▶":N({name:e})?"IMG":"FILE"},G=e=>{const a=J(e);return"PDF"===a?"file-pdf":["DOC","DOCX"].includes(a)?"file-word":["XLS","XLSX"].includes(a)?"file-excel":V({name:e})?"file-video":"file-other"},R=(e,a)=>{if(X.disablePreview||"uploading"===e.status||"error"===e.status)return;const t=e.url||e.path,l=e.name||"文件";if(N(e)){const a=A.value.filter(e=>N(e)&&"success"===e.status),t=a.findIndex(a=>a.url===e.url&&a.path===e.path),l=a.map(e=>e.url||e.path);return void x({current:t,urls:l,loop:!0})}w({url:`/pages/common/webview?url=${encodeURIComponent(t)}&title=${encodeURIComponent(l)}`})},T=()=>{if(X.disabled||X.readonly)return;const e=X.limit-A.value.length;H({type:X.fileMediatype,count:e,success:e=>{const a=e.tempFiles||e.tempFilePaths.map((e,a)=>({path:e,name:`file_${a}`}));$("select",{tempFiles:a}),I.value=a,X.autoUpload&&z()}})},z=async()=>{const e=I.value;I.value=[];for(const a of e)await Q(a)},Q=e=>new Promise(a=>{A.value.push({...e,status:"uploading",progress:0});const t=A.value.length-1,l=X.action||D.Host80+X.uploadUrl;j({url:l,filePath:e.path,name:X.uploadName,header:{"Access-Token":W.value,...X.uploadHeaders},formData:X.uploadData,success:e=>{const l=X.responseHandler(e.data);l.success?(A.value[t].progress=100,A.value[t].status="success",A.value[t].url=D.Host05+l.path,A.value[t].path=l.path,$("success",A.value[t])):(A.value[t].status="error",S({title:l.message,icon:"error"}),$("fail",l.message)),a(l)},fail:()=>{A.value[t].status="error",S({title:"上传失败",icon:"error"}),$("fail","网络异常"),a(null)}}).onProgressUpdate(e=>{A.value[t].progress=e.progress,$("progress",e,t)})}),q=t(()=>{let e={};return X.imageWidth&&(e.width="number"==typeof X.imageWidth?`${X.imageWidth}px`:`${X.imageWidth}`),X.imageHeight&&(e.height="number"==typeof X.imageHeight?`${X.imageHeight}px`:`${X.imageHeight}`),console.log(e),e});return(a,t)=>{const l=f,x=y,w=n,H=C,j=s(i("cwg-icon"),O);return r(),o(w,{class:"file-picker-wrapper"},{default:u(()=>[e.readonly?(r(),o(w,{key:0,class:"file-list readonly-list"},{default:u(()=>{var e;return[(r(!0),c(p,null,d(A.value,(e,a)=>(r(),o(w,{key:a,class:"file-item readonly-item",onClick:a=>R(e)},{default:u(()=>[N(e)?(r(),o(l,{key:0,src:e.url||e.path,mode:"aspectFill",class:"file-thumb",style:m(q.value)},null,8,["src","style"])):(r(),o(w,{key:1,class:g(["file-icon",G(e.name)])},{default:u(()=>[v(x,{class:"file-icon-text"},{default:u(()=>[h(b(M(e.name)),1)]),_:2},1024)]),_:2},1032,["class"])),v(x,{class:"file-name"},{default:u(()=>[h(b(e.name),1)]),_:2},1024)]),_:2},1032,["onClick"]))),128)),(null==(e=A.value)?void 0:e.length)?_("",!0):(r(),o(w,{key:0,class:"empty-text"},{default:u(()=>[h("暂无文件")]),_:1}))]}),_:1})):(r(),o(w,{key:1,class:"uni-file-picker__container"},{default:u(()=>{var a;return[(r(!0),c(p,null,d(A.value,(a,t)=>(r(),o(w,{class:"file-picker__box",key:t,style:m("object"==typeof U.value?U.value:{cssText:U.value})},{default:u(()=>[v(w,{class:"file-picker__box-content",style:B},{default:u(()=>[N(a)?(r(),o(l,{key:0,class:"file-image",src:a.url||a.path,mode:"aspectFill",style:m(q.value),onClick:k(e=>R(a),["stop"])},null,8,["src","style","onClick"])):V(a)?(r(),o(w,{key:1,class:"file-cover video-box",onClick:k(e=>R(a),["stop"])},{default:u(()=>[v(l,{src:a.url||a.path,class:"file-image",mode:"aspectFill",style:m(q.value)},null,8,["src","style"]),v(w,{class:"video-play-icon"},{default:u(()=>[h("▶")]),_:1})]),_:2},1032,["onClick"])):(r(),o(w,{key:2,class:g(["file-cover file-box",G(a.name)]),onClick:k(e=>R(a),["stop"])},{default:u(()=>[v(x,{class:"file-big-icon"},{default:u(()=>[h(b(M(a.name)),1)]),_:2},1024),v(x,{class:"file-ext-name"},{default:u(()=>[h(b(J(a.name)),1)]),_:2},1024)]),_:2},1032,["class","onClick"])),e.delIcon?(r(),o(w,{key:3,class:"icon-del-box",onClick:k(e=>(e=>{const a=A.value[e];A.value.splice(e,1),$("delete",a,e)})(t),["stop"])},{default:u(()=>[v(w,{class:"icon-del"}),v(w,{class:"icon-del rotate"})]),_:2},1032,["onClick"])):_("",!0),"uploading"===a.status?(r(),o(w,{key:4,class:"file-picker__progress"},{default:u(()=>[v(H,{class:"file-picker__progress-item",percent:a.progress,"stroke-width":"4",backgroundColor:"#EBEBEB"},null,8,["percent"])]),_:2},1024)):_("",!0),"error"===a.status?(r(),o(w,{key:5,class:"file-picker__mask",onClick:k(e=>(e=>{const a=A.value[e];Q(a)})(t),["stop"])},{default:u(()=>[h(" 点击重试 ")]),_:2},1032,["onClick"])):_("",!0)]),_:2},1024)]),_:2},1032,["style"]))),128)),(null==(a=A.value)?void 0:a.length)<e.limit?(r(),o(w,{key:0,class:"file-picker__box",style:m("object"==typeof U.value?U.value:{cssText:U.value})},{default:u(()=>[v(w,{class:"file-picker__box-content is-add",style:B,onClick:T},{default:u(()=>[v(j,{name:"icon_add",class:"upload-icon",size:24})]),_:1})]),_:1},8,["style"])):_("",!0)]}),_:1}))]),_:1})}}},[["__scopeId","data-v-9c9feeb2"]]);export{P as _};