upload project source code

This commit is contained in:
2026-04-30 18:49:43 +08:00
commit 9b394ba682
2277 changed files with 660945 additions and 0 deletions

View File

@@ -0,0 +1,37 @@
import{a1 as e,E as a,R as t,i as l}from"./element-plus.BfMFfVUv.js";import{J as s,ey as i,ev as r,m as o,aO as u,S as n,_ as p,$ as d,a0 as c,H as m,T as f,aw as v,a8 as g,aa as y,ez as _,r as w}from"./.pnpm.BudmgPu7.js";import{P as h}from"./index.CCGY9CCJ.js";import{_ as b}from"./_plugin-vue_export-helper.BCo6x5W8.js";const x={class:"single-image-upload"},S={key:0,class:"el-upload__tip"},j=b(s({__name:"SingleImageUpload",props:_({
/**
* 请求携带的额外参数
*/
data:{type:Object,default:()=>({})},
/**
* 上传文件的参数名
*/
name:{type:String,default:"file"},
/**
* 最大文件大小单位M
*/
maxFileSize:{type:Number,default:10},
/**
* 上传图片格式,默认支持所有图片(image/*),指定格式示例:'.png,.jpg,.jpeg,.gif,.bmp'
*/
accept:{type:String,default:"image/*"},
/**
* 自定义样式,用于设置组件的宽度和高度等其他样式
*/
style:{type:Object,default:()=>({width:"150px",height:"150px"})},
/**
* 是否禁用
*/
disabled:{type:Boolean,default:!1},
/**
* 是否显示提示信息
*/
showTip:{type:Boolean,default:!1},
/**
* 提示文本
*/
tipText:{type:String,default:""},
/**
* 是否启用图片预览功能
*/
enablePreview:{type:Boolean,default:!0}},{modelValue:{default:""},modelModifiers:{}}),emits:_(["success","error","input","update:modelValue"],["update:modelValue"]),setup(s,{emit:_}){i(e=>({v4b209376:b.style.width??"150px",b464b91e:b.style.height??"150px"}));const b=s,j=r(s,"modelValue"),k=w([]);o(()=>j.value,e=>{k.value=e?[{name:e.split("/").pop()||"image",url:e}]:[]},{immediate:!0}),o(()=>k.value,e=>{e&&e.length>0&&e[0].url?j.value=e[0].url:j.value=""},{deep:!0});const F=_;function z(e){return b.accept.split(",").map(e=>e.trim()).some(a=>"image/*"===a?e.type.startsWith("image/"):a.startsWith(".")?e.name.toLowerCase().endsWith(a):e.type===a)?!(e.size>1024*b.maxFileSize*1024)||(a.warning(`上传图片不能大于 ${b.maxFileSize}MB`),!1):(a.warning(`上传文件的格式不正确,仅支持:${b.accept}`),!1)}async function P(e){try{const t=e.file,l=new FormData;l.append(b.name,t);for(const[e,a]of Object.entries(b.data))l.append(e,String(a));const s=await h.uploadFile(l);if(0===s.data.code&&s.data){const e=s.data.data;return T(e),e}{const e=s.data.msg||"上传失败";throw a.error(e),new Error(e)}}catch(t){throw V(t instanceof Error?t:new Error(String(t))),t}}function B(){k.value=[]}function C(e){e.stopPropagation(),b.enablePreview&&k.value&&k.value.length>0&&k.value[0].url}const T=e=>{const a=[{name:e.file_name,url:e.file_url}];k.value=a,F("success",e),F("input",e.file_url),F("update:modelValue",e.file_url)},V=e=>{a.error("图片上传失败,请重试"),F("error",e)};return(a,s)=>{const i=t,r=u("CircleCloseFilled"),o=l,_=u("Plus"),w=e;return n(),p("div",x,[d(w,{"file-list":k.value,"onUpdate:fileList":s[0]||(s[0]=e=>k.value=e),class:"single-upload","list-type":"picture-card","show-file-list":!1,accept:b.accept,"before-upload":z,"http-request":P,"on-success":T,"on-error":V,"on-remove":B,disabled:b.disabled},{default:c(()=>[k.value&&k.value.length>0&&k.value[0].url?(n(),p(m,{key:0},[(n(),f(i,{key:k.value[0].url,class:"single-upload__image",src:k.value[0].url,fit:"cover","preview-src-list":b.enablePreview?[k.value[0].url]:[],"preview-teleported":!0,onClick:v(C,["stop"])},null,8,["src","preview-src-list"])),b.disabled?g("",!0):(n(),f(o,{key:0,class:"single-upload__delete-btn",onClick:v(B,["stop"])},{default:c(()=>[d(r)]),_:1}))],64)):(n(),f(o,{key:1,class:"single-upload__add-btn"},{default:c(()=>[d(_)]),_:1}))]),_:1},8,["file-list","accept","disabled"]),b.showTip?(n(),p("div",S,y(b.tipText||`支持 ${b.accept} 格式,文件大小不超过 ${b.maxFileSize}MB`),1)):g("",!0)])}}}),[["__scopeId","data-v-d3fd4602"]]);export{j as S};