cwg-file-picker-wrapper.B4feingu.js 7.4 KB

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