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

1
  1. import{_ as e,r as a,w as s,M as t,f as l,g as o,i as r,j as i,k as n,C as u,F as c,G as p,H as d,l as f,n as m,t as v,s as y,q as g,ac as h,ap as _,aa as k,a2 as b,a as C,A as w,E as x,v as j,x as F,ad as S}from"./index-DhPBDLGv.js";import{_ as D}from"./liveChat.DpTj_oVP.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;",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:""},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:P}){const X=e,B=P,I=a([]),L=a([]),U=a("array");function E(e){B("update:modelValue",e),B("change",e)}s((()=>X.modelValue),(e=>{const a=function(e){if(!e)return[];if("string"==typeof e)return[{path:e,url:e.startsWith("http")?e:H.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:H.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:H.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:H.Host05+a),name:(null==e?void 0:e.name)||a.split("/").pop(),status:"success"}}})):[]}(e);if(JSON.stringify(I.value)!==JSON.stringify(a)){if(!e)return I.value=[],void(U.value="array");"string"==typeof e?U.value="string":"object"!=typeof e||Array.isArray(e)?U.value="array":U.value="object",I.value=a}}),{immediate:!0,deep:!0}),s(I,(e=>{t((()=>{let a=[];if(!e||0===e.length)return a="string"===U.value?"":"object"===U.value?{}:[],void E(a);const s=e.map((e=>e.path||e.url||""));console.log(U),a=1===X.limit||"string"===U.value?s[0]||"":"object"===U.value?{path:s[0]||""}:s,E(a)}))}),{deep:!0});const N=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)},M=e=>{var a;return e?null==(a=e.split(".").pop())?void 0:a.toUpperCase():""},V=e=>{const a=M(e);return"PDF"===a?"PDF":["DOC","DOCX"].includes(a)?"WORD":["XLS","XLSX"].includes(a)?"EXCEL":W({name:e})?"▶":N({name:e})?"IMG":"FILE"},J=e=>{const a=M(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(X.disablePreview||"uploading"===e.status||"error"===e.status)return;const s=e.url||e.path,t=e.name||"文件";if(N(e)){const a=I.value.filter((e=>N(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(X.disabled||X.readonly)return;const e=X.limit-I.value.length;k({type:X.fileMediatype,count:e,success:e=>{const a=e.tempFiles||e.tempFilePaths.map(((e,a)=>({path:e,name:`file_${a}`})));B("select",{tempFiles:a}),L.value=a,X.autoUpload&&G()}})},G=async()=>{const e=L.value;L.value=[];for(const a of e)await q(a)},q=e=>new Promise((a=>{I.value.push({...e,status:"uploading",progress:0});const s=I.value.length-1,t=X.action||H.Host80+X.uploadUrl;b({url:t,filePath:e.path,name:X.uploadName,header:{"Access-Token":C.value,...X.uploadHeaders},formData:X.uploadData,success:e=>{const t=X.responseHandler(e.data);t.success?(I.value[s].progress=100,I.value[s].status="success",I.value[s].url=H.Host05+t.path,I.value[s].path=t.path,B("success",I.value[s])):(I.value[s].status="error",w({title:t.message,icon:"error"}),B("fail",t.message)),a(t)},fail:()=>{I.value[s].status="error",w({title:"上传失败",icon:"error"}),B("fail","网络异常"),a(null)}}).onProgressUpdate((e=>{I.value[s].progress=e.progress,B("progress",e,s)}))}));return(a,s)=>{const t=x,h=j,_=F,k=S,b=l(o("cwg-icon"),D);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(I.value,((e,a)=>(r(),i(_,{key:a,class:"file-item readonly-item",onClick:a=>R(e)},{default:n((()=>[N(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",J(e.name)])},{default:n((()=>[f(h,{class:"file-icon-text"},{default:n((()=>[m(v(V(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)),I.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(I.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((()=>[N(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",J(a.name)]),onClick:g((e=>R(a)),["stop"])},{default:n((()=>[f(h,{class:"file-big-icon"},{default:n((()=>[m(v(V(a.name)),1)])),_:2},1024),f(h,{class:"file-ext-name"},{default:n((()=>[m(v(M(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=I.value[e];I.value.splice(e,1),B("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=I.value[e];q(a)})(s)),["stop"])},{default:n((()=>[m(" 点击重试 ")])),_:2},1032,["onClick"])):y("",!0)])),_:2},1024)])),_:2},1024)))),128)),I.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-dc9b5498"]]);export{P as _};