Files
zyt/server/public/admin/assets/picker-BcHBtTtK.js
T
2026-06-16 16:16:31 +08:00

2 lines
7.4 KiB
JavaScript

import{_ as j}from"./index-DM_QrFIq.js";import{s as le}from"./element-plus-Bolc0EfP.js";import{_ as se,a as J,F as ue}from"./index-DGrT4ZqH.js";import{e as de,i as O,_ as pe,c as me}from"./index-c-1_4g8M.js";import{_ as fe}from"./index-DDKGupmD.js";import{D as ge}from"./vuedraggable-5bKFmC7X.js";import{a as ve}from"./file-DRHFTsFX.js";import{f as ce,w as he,am as q,A as T,n as ye,ar as F,ak as we,I as De,a as f,M as Ce,aN as S,J as d,O as be,aP as Te,aq as Se}from"./@vue/runtime-core-C6bnekPw.js";import{K as Pe,n as s}from"./@vue/reactivity-DiY1c2vO.js";import{h as ke}from"./@vueuse/shared-Cl3lVqjz.js";import{s as h,q as $e}from"./@vue/runtime-dom-DDAG46FW.js";import{o as E,p as ze}from"./@vue/shared-mAAVTE9n.js";const Ve=ce({components:{Popup:j,Draggable:ge,FileItem:ue,Material:J,Preview:se},props:{modelValue:{type:[String,Array],default:()=>[]},type:{type:String,default:"image"},size:{type:String,default:"100px"},width:{type:String,default:""},height:{type:String,default:""},fileSize:{type:String,default:"100px"},limit:{type:Number,default:1},disabled:{type:Boolean,default:!1},hiddenUpload:{type:Boolean,default:!1},uploadClass:{type:String,default:""},excludeDomain:{type:Boolean,default:!1},uploadCid:{type:[Number,String],default:0}},emits:["change","update:modelValue"],setup(e,{emit:a}){const z=s(),V=s(),A=s(""),I=s(!1),o=s([]),P=s([]),c=s(!0),k=s(-1),g=s(0),y=s(!1),{disabled:v,limit:p,modelValue:i}=Pe(e),w=de(),D=t=>w.getImageUrl(t),C=T(()=>!e.hiddenUpload&&(e.type==="image"||e.type==="video"||e.type==="file")),K=T(()=>g.value>0);function R(t){if(!t)return!1;const n=Array.from(t.types);return n.includes("Files")||n.includes("application/x-moz-file")}function B(t,n){var l;if(n==="file")return!0;const r=t.includes(".")&&((l=t.split(".").pop())==null?void 0:l.toLowerCase())||"";return n==="image"?r?["jpg","jpeg","png","gif","ico"].includes(r):!0:n==="video"&&r?["wmv","avi","mpg","mpeg","3gp","mov","mp4","flv","rmvb","mkv"].includes(r):!0}function _(t){var l;if(!t||!t.startsWith("http"))return t;const n=String(((l=w.config)==null?void 0:l.oss_domain)||"").trim().replace(/\/$/,"");if(n&&t.startsWith(n))return t.slice(n.length).replace(/^\//,"");const r=typeof window<"u"?window.location.origin.replace(/\/$/,""):"";if(r&&t.startsWith(r))return t.slice(r.length).replace(/^\//,"");try{return new URL(t).pathname.replace(/^\//,"")}catch{return t}}function G(t){var b,$;const n=e.type,r=Array.from(((b=t.clipboardData)==null?void 0:b.files)||[]).filter(m=>B(m.name,n));if(r.length)return r;if(n!=="image")return[];const l=($=t.clipboardData)==null?void 0:$.items;if(!l)return[];const u=[];for(let m=0;m<l.length;m++){const L=l[m];if(L.kind==="file"&&L.type.startsWith("image/")){const W=L.getAsFile();W&&u.push(W)}}return u}async function M(t){if(y.value)return;const n=p.value===-1?1/0:Math.max(0,p.value-o.value.length);if(!n){O.msgWarning("已达到上传数量上限");return}const r=t.slice(0,n);if(!r.length)return;const l=e.type==="video"?"video":e.type==="file"?"file":"image";y.value=!0;try{const u=[];for(const $ of r){const m=await ve($,l,e.uploadCid);u.push(e.excludeDomain?_(m.url):m.url)}o.value=[...o.value,...u];const b=p.value!=1?o.value:o.value[0]||"";a("update:modelValue",b),a("change",b),U()}catch(u){O.msgError((u==null?void 0:u.message)||"上传失败")}finally{y.value=!1}}const H=t=>{!C.value||v.value||R(t.dataTransfer)&&g.value++},Q=()=>{C.value&&(g.value=Math.max(0,g.value-1))},X=t=>{!C.value||v.value||R(t.dataTransfer)&&t.preventDefault()},Y=async t=>{var r;if(g.value=0,!C.value||v.value)return;const n=Array.from(((r=t.dataTransfer)==null?void 0:r.files)||[]).filter(l=>B(l.name,e.type));n.length&&await M(n)},Z=async t=>{if(!C.value||v.value)return;const n=G(t);n.length&&(t.preventDefault(),await M(n))},x=T(()=>{switch(e.type){case"image":return"图片";case"video":return"视频";default:return""}}),ee=T(()=>e.limit-o.value.length>0),te=T(()=>c.value?p.value==-1?null:p.value-o.value.length:1),ae=ke(()=>{const t=P.value.map(n=>e.excludeDomain?n.uri:n.url);c.value?o.value=[...o.value,...t]:o.value.splice(k.value,1,t.shift()),N()},1e3,!1),ne=t=>{var n;v.value||(t>=0?(c.value=!1,k.value=t):c.value=!0,(n=z.value)==null||n.open())},ie=t=>{P.value=t},N=()=>{const t=p.value!=1?o.value:o.value[0]||"";a("update:modelValue",t),a("change",t),U()},oe=t=>{o.value.splice(t,1),N()},re=t=>{A.value=e.excludeDomain?D(t):t,I.value=!0},U=()=>{ye(()=>{var t;e.hiddenUpload&&(o.value=[]),(t=V.value)==null||t.clearSelect()})};return he(i,t=>{o.value=Array.isArray(t)?t:t==""?[]:[t]},{immediate:!0}),q("limit",e.limit),q("hiddenUpload",e.hiddenUpload),{popupRef:z,materialRef:V,fileList:o,tipsText:x,handleConfirm:ae,meterialLimit:te,showUpload:ee,showPopup:ne,selectChange:ie,deleteImg:oe,previewUrl:A,showPreview:I,handlePreview:re,handleClose:U,getImageUrl:D,dropActive:K,onTriggerDragEnter:H,onTriggerDragLeave:Q,onTriggerDragOver:X,onTriggerDrop:Y,onTriggerPaste:Z}}}),Ae={class:"material-select"},Ie=["onClick"],Ue={class:"operation-btns text-xs text-center"},Le=["onClick"],Fe={class:"material-wrap"};function Ee(e,a,z,V,A,I){const o=F("file-item"),P=fe,c=F("draggable"),k=me,g=J,y=le,v=j,p=F("preview");return we(),De("div",Ae,[f(v,{ref:"popupRef",width:"1050px","custom-class":"body-padding",title:`选择${e.tipsText}`,onConfirm:e.handleConfirm,onClose:e.handleClose},Ce({default:S(()=>[f(y,null,{default:S(()=>[d("div",Fe,[f(g,{ref:"materialRef",type:e.type,"file-size":e.fileSize,limit:e.meterialLimit,onChange:e.selectChange},null,8,["type","file-size","limit","onChange"])])]),_:1})]),_:2},[e.hiddenUpload?void 0:{name:"trigger",fn:S(()=>[d("div",{class:E(["material-select__trigger clearfix",{"is-drop-hover":e.dropActive}]),tabindex:"0",onClick:a[2]||(a[2]=h(()=>{},["stop"])),onDragenter:a[3]||(a[3]=h((...i)=>e.onTriggerDragEnter&&e.onTriggerDragEnter(...i),["prevent","stop"])),onDragleave:a[4]||(a[4]=h((...i)=>e.onTriggerDragLeave&&e.onTriggerDragLeave(...i),["prevent","stop"])),onDragover:a[5]||(a[5]=h((...i)=>e.onTriggerDragOver&&e.onTriggerDragOver(...i),["prevent","stop"])),onDrop:a[6]||(a[6]=h((...i)=>e.onTriggerDrop&&e.onTriggerDrop(...i),["prevent","stop"])),onPaste:a[7]||(a[7]=(...i)=>e.onTriggerPaste&&e.onTriggerPaste(...i))},[f(c,{class:"draggable",modelValue:e.fileList,"onUpdate:modelValue":a[0]||(a[0]=i=>e.fileList=i),animation:"300","item-key":"id"},{item:S(({element:i,index:w})=>[d("div",{class:E(["material-preview",{"is-disabled":e.disabled,"is-one":e.limit==1}]),onClick:D=>e.showPopup(w)},[f(P,{onClose:D=>e.deleteImg(w)},{default:S(()=>[f(o,{uri:e.excludeDomain?e.getImageUrl(i):i,"file-size":e.size,width:e.width,height:e.height,type:e.type},null,8,["uri","file-size","width","height","type"])]),_:2},1032,["onClose"]),d("div",Ue,[a[9]||(a[9]=d("span",null,"修改",-1)),a[10]||(a[10]=be(" | ",-1)),d("span",{onClick:h(D=>e.handlePreview(i),["stop"])},"查看",8,Le)])],10,Ie)]),_:1},8,["modelValue"]),Te(d("div",{class:E(["material-upload",{"is-disabled":e.disabled,"is-one":e.limit==1,[e.uploadClass]:!0}]),onClick:a[1]||(a[1]=i=>e.showPopup(-1))},[Se(e.$slots,"upload",{},()=>[d("div",{class:"upload-btn",style:ze({width:e.width||e.size,height:e.height||e.size})},[f(k,{size:25,name:"el-icon-Plus"}),a[11]||(a[11]=d("span",null,"添加",-1))],4)],!0)],2),[[$e,e.showUpload]])],34)]),key:"0"}]),1032,["title","onConfirm","onClose"]),f(p,{modelValue:e.showPreview,"onUpdate:modelValue":a[8]||(a[8]=i=>e.showPreview=i),url:e.previewUrl,type:e.type},null,8,["modelValue","url","type"])])}const He=pe(Ve,[["render",Ee],["__scopeId","data-v-27e7e4cc"]]);export{He as _};