cwg-file-picker-wrapper.DotuiGWl.js 13 KB

1
  1. import{A as e,_ as t,i as a,j as s,x as l,r as o,c as i,w as r,P as n,f as c,g as u,E as p,l as d,k as g,J as m,K as f,L as h,G as y,n as v,t as b,s as _,q as k,a2 as S,a9 as F,av as C,af as w,a as x,a6 as P,aS as L,I as H,v as j,ah as O}from"./index-cgJbsk9Q.js";import{_ as D}from"./liveChat.BUvaIfgQ.js";const U={data:()=>({acceptType:"*"}),mounted(){console.log("cop-chooseFile renderJS mounted")},methods:{onTriggerChange(e,t,a,s){console.log("cop-chooseFile: 触发标记改变",e),e&&e!==t&&this.createFileInputDom(null,a)},acceptChanged(e){this.acceptType=e||"*"},createFileInputDom(e,t){console.log("cop-chooseFile: 开始选择文件");let a=document.createElement("input");a.setAttribute("type","file"),a.setAttribute("accept",this.acceptType),a.style.display="none",document.body.appendChild(a),a.click(),a.addEventListener("change",e=>{let s=e.target.files[0];if(s){console.log("cop-chooseFile: 选择了文件",s.name,s.size);const e=URL.createObjectURL(s);t.callMethod("receiveRenderFile",{name:s.name,filePath:e,size:s.size,type:s.type})}else console.log("cop-chooseFile: 未选择文件");setTimeout(function(){a.parentNode&&(document.body.removeChild(a),console.log("cop-chooseFile: input 已清理"))},100)})}}},N=e=>{e.$renderjs||(e.$renderjs=[]),e.$renderjs.push("renderJS"),e.mixins||(e.mixins=[]),e.mixins.push({beforeCreate(){this.renderJS=this},mounted(){this.$ownerInstance=this.$gcd(this,!0)}}),e.mixins.push(U)},$={props:{trigger:{type:Number,default:0},accept:{type:String,default:"*"}},data:()=>({triggerFlag:0}),watch:{trigger(e){e&&(this.triggerFlag=e)}},onLoad(e){},methods:{parseJSONData(e){console.log("选择的文件base64Str",e);let t=this.convertBase64ToUTF8(e);if(e.includes("application/json")){let e=JSON.parse(t);this.$emit("readJSONFinish",{jsonData:e})}else this.$emit("readJSONFinish",{jsonStr:t})},convertBase64ToUTF8(t){let a=atob(t.split(",")[1]);a=a.split("").map(function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)}).join("");try{return decodeURIComponent(a)}catch(s){console.error("读取失败",s),e({title:"读取失败,不支持此格式文件",icon:"none"})}},async receiveRenderFile(e){console.log("receiveRenderFile 被调用,文件信息:",e),this.$emit("receiveRenderFile",e),this.fileName=e.name,this.filePath=e.filePath},async base64toPath(e,t){console.log("base64开始转化成文件");let a=this;return new Promise(function(s,l){const o=`_doc/yourFilePath/${t}`;plus.io.resolveLocalFileSystemURL("_doc",function(i){i.getDirectory("yourFilePath",{create:!0,exclusive:!1},function(i){i.getFile(t,{create:!0,exclusive:!1},function(t){t.createWriter(function(t){t.onwrite=function(e){console.log("base64转化文件完成");const t={relativePath:o,localAbsolutePath:plus.io.convertLocalFileSystemURL(o)};s(t)},t.onerror=l,t.seek(0),t.writeAsBinary(a.getSymbolAfterString(e,","))},l)},l)},l)},l)})},getSymbolAfterString(e,t){if(null==e||null==e||""==e)return"";const a=(e=e.toString()).indexOf(t);return-1!=a?e=e.substring(a+1,e.length):e}}};N($);const R=t($,[["render",function(e,t,o,i,r,n){const c=l;return a(),s(c,{style:{position:"absolute",left:"-9999px",width:"1px",height:"1px",opacity:"0"},"change:triggerPicker":e.renderJS.onTriggerChange,triggerPicker:r.triggerFlag,"change:acceptProp":e.renderJS.acceptChanged,acceptProp:o.accept},null,8,["change:triggerPicker","triggerPicker","change:acceptProp","acceptProp"])}],["__scopeId","data-v-f858ab1f"]]),A="border:1px #eee solid;border-radius:5px;",T=t({__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,Number],default:""},imageHeight:{type:[String,Number],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 t;try{const a="string"==typeof e?JSON.parse(e):e;return{success:200===a.code,path:(null==(t=a.data)?void 0:t.path)||a.data,message:a.msg||"上传成功"}}catch(a){return{success:!1,message:"解析失败"}}}}},emits:["update:modelValue","change","delete","success","fail","progress","select"],setup(t,{emit:U}){const N=t,$=U,T=o(0),J=o([]),W=o([]),I=o("array"),B=i(()=>{if(N.imageWidth||N.imageHeight){return{width:"number"==typeof N.imageWidth?`${N.imageWidth}px`:N.imageWidth||"auto",height:"number"==typeof N.imageHeight?`${N.imageHeight}px`:N.imageHeight||"auto"}}return"width:33.3%;height:0;"});function E(e){$("update:modelValue",e),$("change",e)}r(()=>N.modelValue,e=>{const t=function(e){if(!e)return[];if("string"==typeof e)return[{path:e,url:e.startsWith("http")?e:S.Host05+e,name:e.split("/").pop(),status:"success"}];if("object"==typeof e&&!Array.isArray(e)){const t=e.path||e.url||"";return[{...e,path:t,url:e.url||(t.startsWith("http")?t:S.Host05+t),name:e.name||t.split("/").pop(),status:"success"}]}return Array.isArray(e)?e.map(e=>{if("string"==typeof e)return{path:e,url:e.startsWith("http")?e:S.Host05+e,name:e.split("/").pop(),status:"success"};{const t=(null==e?void 0:e.path)||(null==e?void 0:e.url)||"";return{...e,path:t,url:(null==e?void 0:e.url)||(t.startsWith("http")?t:S.Host05+t),name:(null==e?void 0:e.name)||t.split("/").pop(),status:"success"}}}):[]}(e);JSON.stringify(J.value)!==JSON.stringify(t)&&e&&("string"==typeof e?I.value="string":"object"!=typeof e||Array.isArray(e)?I.value="array":I.value="object",J.value=t)},{immediate:!0,deep:!0}),r(J,e=>{n(()=>{let t=[];if(!e||0===e.length)return t="string"===I.value?"":"object"===I.value?{}:[],void E(t);const a=e.map(e=>e.path||e.url||"");t=1===N.limit||"string"===I.value?a[0]||"":"object"===I.value?{path:a[0]||""}:a,E(t)})},{deep:!0});const X=e=>{var t;const a=null==(t=(e.path||e.name||"").split(".").pop())?void 0:t.toLowerCase();return["jpg","jpeg","png","gif","webp","bmp","svg"].includes(a)},z=e=>{var t;const a=null==(t=(e.path||e.name||"").split(".").pop())?void 0:t.toLowerCase();return["mp4","mov","avi","flv","wmv","rmvb"].includes(a)},M=e=>{var t;return e?null==(t=e.split(".").pop())?void 0:t.toUpperCase():""},V=e=>{const t=M(e);return"PDF"===t?"PDF":["DOC","DOCX"].includes(t)?"WORD":["XLS","XLSX"].includes(t)?"EXCEL":z({name:e})?"▶":X({name:e})?"IMG":"FILE"},G=e=>{const t=M(e);return"PDF"===t?"file-pdf":["DOC","DOCX"].includes(t)?"file-word":["XLS","XLSX"].includes(t)?"file-excel":z({name:e})?"file-video":"file-other"},q=(e,t)=>{if(N.disablePreview||"uploading"===e.status||"error"===e.status)return;const a=e.url||e.path,s=e.name||"文件";if(X(e)){const t=J.value.filter(e=>X(e)&&"success"===e.status),a=t.findIndex(t=>t.url===e.url&&t.path===e.path),s=t.map(e=>e.url||e.path);return void F({current:a,urls:s,loop:!0})}C({url:`/pages/common/webview?url=${encodeURIComponent(a)}&title=${encodeURIComponent(s)}`})},K=()=>{if(N.disabled||N.readonly)return;const e=N.limit-J.value.length;w({type:N.fileMediatype,count:e,success:e=>{const t=e.tempFiles||e.tempFilePaths.map((e,t)=>({path:e,name:`file_${t}`}));$("select",{tempFiles:t}),W.value=t,N.autoUpload&&Y()}})},Q=async t=>{try{const e=await te(t.filePath,t.name),a={name:t.name,size:t.size,type:t.type,path:e,status:"ready"};console.log(a,121212),W.value=[a],$("select",{tempFiles:[a]}),N.autoUpload&&Y()}catch(a){e({title:"文件处理失败",icon:"none"}),console.error(a)}},Y=async()=>{const e=W.value;W.value=[];for(const t of e)t.base64?await ee(t):await Z(t)},Z=t=>new Promise(a=>{J.value.push({...t,status:"uploading",progress:0}),console.log(J.value,"upload231");const s=J.value.length-1,l=N.action||S.Host80+N.uploadUrl;console.log({url:l,filePath:t.path,name:N.uploadName,header:{"Access-Token":x.value,...N.uploadHeaders},formData:N.uploadData},1e5);P({url:l,filePath:t.path,name:N.uploadName,header:{"Access-Token":x.value,...N.uploadHeaders},formData:N.uploadData,success:t=>{var l,o;const i="function"==typeof N.responseHandler?N.responseHandler(t.data):{success:"string"==typeof t.data?200===JSON.parse(t.data).code:200===t.data.code,path:"string"==typeof t.data?(null==(l=JSON.parse(t.data).data)?void 0:l.path)||JSON.parse(t.data).data:(null==(o=t.data.data)?void 0:o.path)||t.data.data,message:"string"==typeof t.data?JSON.parse(t.data).msg:t.data.msg};console.log(J.value,"file",i),i.success?(J.value[s].progress=100,J.value[s].status="success",J.value[s].url=S.Host05+i.path,J.value[s].path=i.path,$("success",J.value[s])):(J.value[s].status="error",e({title:i.message||"上传失败",icon:"error"}),$("fail",i.message||"上传失败")),a(i)},fail:()=>{J.value[s].status="error",e({title:"上传失败",icon:"error"}),$("fail","网络异常"),a(null)}}).onProgressUpdate(e=>{J.value[s].progress=e.progress,$("progress",e,s)})}),ee=t=>new Promise(a=>{J.value.push({...t,status:"uploading",progress:0});const s=J.value.length-1,l=N.action||S.Host80+N.uploadUrl;L({url:l,method:"POST",header:{"Content-Type":"application/json","Access-Token":x.value,...N.uploadHeaders},data:{file:t.base64,fileName:t.name,fileType:t.type,...N.uploadData},success:t=>{var l;const o="function"==typeof N.responseHandler?N.responseHandler(t.data):{success:200===t.data.code,path:(null==(l=t.data.data)?void 0:l.path)||t.data.data,message:t.data.msg};o.success?(J.value[s].progress=100,J.value[s].status="success",J.value[s].url=S.Host05+o.path,J.value[s].path=o.path,$("success",J.value[s])):(J.value[s].status="error",e({title:o.message||"上传失败",icon:"none"}),$("fail",o.message)),a(o)},fail:()=>{J.value[s].status="error",e({title:"上传失败",icon:"none"}),$("fail","网络异常"),a(null)}})}),te=(e,t="file.png")=>new Promise((a,s)=>{const l=e.match(/^data:(.+);base64,(.+)$/);l?(l[2],plus.io.convertLocalFileSystemURL("_doc/"),Date.now(),plus.io.resolveLocalFileSystemURL("_doc/",l=>{l.getFile(`${Date.now()}_${t}`,{create:!0},t=>{t.createWriter(l=>{l.onwrite=()=>{a(t.toLocalURL())},l.onerror=s;const o=new plus.nativeObj.Bitmap;o.loadBase64Data(e,()=>{o.save(t.toLocalURL(),{},()=>{a(t.toLocalURL())},s)},s)})},s)},s)):s("base64格式错误")}),ae=i(()=>{let e={};return N.imageWidth&&(e.width="number"==typeof N.imageWidth?`${N.imageWidth}px`:`${N.imageWidth}`),N.imageHeight&&(e.height="number"==typeof N.imageHeight?`${N.imageHeight}px`:`${N.imageHeight}`),console.log(e),e});return(e,o)=>{const i=H,r=j,n=l,S=O,F=c(u("cwg-icon"),D);return a(),p(m,null,[d(n,{class:"file-picker-wrapper"},{default:g(()=>[t.readonly?(a(),s(n,{key:0,class:"file-list readonly-list"},{default:g(()=>{var e;return[(a(!0),p(m,null,f(J.value,(e,t)=>(a(),s(n,{key:t,class:"file-item readonly-item",onClick:t=>q(e)},{default:g(()=>[X(e)?(a(),s(i,{key:0,src:e.url||e.path,mode:"aspectFill",class:"file-thumb",style:h(ae.value)},null,8,["src","style"])):(a(),s(n,{key:1,class:y(["file-icon",G(e.name)])},{default:g(()=>[d(r,{class:"file-icon-text"},{default:g(()=>[v(b(V(e.name)),1)]),_:2},1024)]),_:2},1032,["class"])),d(r,{class:"file-name"},{default:g(()=>[v(b(e.name),1)]),_:2},1024)]),_:2},1032,["onClick"]))),128)),(null==(e=J.value)?void 0:e.length)?_("",!0):(a(),s(n,{key:0,class:"empty-text"},{default:g(()=>[v("暂无文件")]),_:1}))]}),_:1})):(a(),s(n,{key:1,class:"uni-file-picker__container"},{default:g(()=>{var e;return[(a(!0),p(m,null,f(J.value,(e,l)=>(a(),s(n,{class:"file-picker__box cursor-pointer",key:l,style:h("object"==typeof B.value?B.value:{cssText:B.value})},{default:g(()=>[d(n,{class:"file-picker__box-content",style:A},{default:g(()=>[X(e)?(a(),s(i,{key:0,class:"file-image",src:e.url||e.path,mode:"aspectFill",style:h(ae.value),onClick:k(t=>q(e),["stop"])},null,8,["src","style","onClick"])):z(e)?(a(),s(n,{key:1,class:"file-cover video-box",onClick:k(t=>q(e),["stop"])},{default:g(()=>[d(i,{src:e.url||e.path,class:"file-image",mode:"aspectFill",style:h(ae.value)},null,8,["src","style"]),d(n,{class:"video-play-icon"},{default:g(()=>[v("▶")]),_:1})]),_:2},1032,["onClick"])):(a(),s(n,{key:2,class:y(["file-cover file-box",G(e.name)]),onClick:k(t=>q(e),["stop"])},{default:g(()=>[d(r,{class:"file-big-icon"},{default:g(()=>[v(b(V(e.name)),1)]),_:2},1024),d(r,{class:"file-ext-name"},{default:g(()=>[v(b(M(e.name)),1)]),_:2},1024)]),_:2},1032,["class","onClick"])),t.delIcon?(a(),s(n,{key:3,class:"icon-del-box",onClick:k(e=>(e=>{const t=J.value[e];J.value.splice(e,1),$("delete",t,e)})(l),["stop"])},{default:g(()=>[d(n,{class:"icon-del"}),d(n,{class:"icon-del rotate"})]),_:2},1032,["onClick"])):_("",!0),"uploading"===e.status?(a(),s(n,{key:4,class:"file-picker__progress"},{default:g(()=>[d(S,{class:"file-picker__progress-item",percent:e.progress,"stroke-width":"4",backgroundColor:"#EBEBEB"},null,8,["percent"])]),_:2},1024)):_("",!0),"error"===e.status?(a(),s(n,{key:5,class:"file-picker__mask",onClick:k(e=>(e=>{const t=J.value[e];Z(t)})(l),["stop"])},{default:g(()=>[v(" 点击重试 ")]),_:2},1032,["onClick"])):_("",!0)]),_:2},1024)]),_:2},1032,["style"]))),128)),(null==(e=J.value)?void 0:e.length)<t.limit?(a(),s(n,{key:0,class:"file-picker__box cursor-pointer",style:h("object"==typeof B.value?B.value:{cssText:B.value})},{default:g(()=>[d(n,{class:"file-picker__box-content is-add",style:A,onClick:K},{default:g(()=>[d(F,{name:"icon_add",class:"upload-icon",size:24})]),_:1})]),_:1},8,["style"])):_("",!0)]}),_:1}))]),_:1}),d(R,{trigger:T.value,accept:"*",onReceiveRenderFile:Q},null,8,["trigger"])],64)}}},[["__scopeId","data-v-d19e714b"]]);export{T as _};