From 2f0fa3545b539e8b6f952ea82a1ca2350c64a0e8 Mon Sep 17 00:00:00 2001
From: web <candymxq888@outlook.com>
Date: 星期二, 22 四月 2025 17:28:48 +0800
Subject: [PATCH] fix:修改报警,添加参数

---
 src/components/UploadIcons/index.vue |  104 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 104 insertions(+), 0 deletions(-)

diff --git a/src/components/UploadIcons/index.vue b/src/components/UploadIcons/index.vue
new file mode 100644
index 0000000..1dd30da
--- /dev/null
+++ b/src/components/UploadIcons/index.vue
@@ -0,0 +1,104 @@
+<template>
+  <el-upload
+    v-model:file-list="fileList"
+    list-type="picture-card"
+    :on-preview="handlePictureCardPreview"
+    :on-remove="handleRemove"
+    :on-exceed="handleExceed"
+    :http-request="uploadImg"
+    :limit="props.limit"
+    :disabled="props.disabled"
+  >
+    <el-icon><Plus /></el-icon>
+  </el-upload>
+
+  <el-dialog v-model="dialogVisible">
+    <img w-full :src="dialogImageUrl" alt="Preview Image" />
+  </el-dialog>
+</template>
+
+<script  setup>
+  import { ref } from 'vue'
+  import { Plus } from '@element-plus/icons-vue'
+  
+  import { ElMessage } from 'element-plus'
+  import { upload } from '@/api/basicApi/index'
+
+  // import type { UploadProps } from 'element-plus'
+  import { getImage, setImage } from '@/utils/validate.js'
+  const props = defineProps({
+      imageList: {
+          type: String,
+          default: '',
+      },
+      limit: {
+          type: Number,
+      },
+      disabled:{
+          type: Boolean,
+          default:false,
+      },
+  })
+  const fileList = ref([])
+  const file = ref([])
+
+  const emit = defineEmits(['uploadData'])
+  //   const imageUrl = ref('')
+
+  const dialogImageUrl = ref('')
+  const dialogVisible = ref(false)
+
+  const handleRemove = (_, uploadFiles) => {
+    file.value = uploadFiles.map((item)=>{return item.url})
+    emit('uploadData', file.value)
+  }
+
+  const handlePictureCardPreview  = (uploadFile) => {
+    dialogImageUrl.value = uploadFile.url
+    dialogVisible.value = true
+  }
+  //超出限制
+  const handleExceed = () => {
+    ElMessage({ message: `只能上传${props.limit}张图片`, type: 'error' })
+  }
+  //上传图片调用接口
+  const uploadImg = async (params) => {
+      //建立表单,请求参数传表单形式
+      let form = new FormData();
+      form.append("file1", params.file);
+      form.append("fileId", params.file.lastModified);
+      form.append("path", 'hydropower');
+        //发出上传文件请求
+      let res = await upload().uploadFile(form)
+      if(res.code == 200){
+          //返回的图片网络地址传给form
+          ElMessage({ message: '上传图片成功', type: 'success' })
+          file.value.push(res.data.newFileName)
+          emit('uploadData', setImage(file.value))
+      }
+  }
+  //监听props.image
+  watch(props, (newvalue)=>{
+    let newList = ''
+    if(newvalue.imageList!='' && newvalue.imageList != null){
+      newList = getImage(newvalue.imageList).join(',')
+    }
+    if( newList != ''){
+      //判断是否加上PREURL前缀
+      if(file.value.join(',') != newList){
+        let list = []
+        newList.split(',').forEach((item)=>{
+          list.push({
+            url: item
+          })
+        })
+        fileList.value = list
+          
+        file.value = newList.split(',')
+      }
+    }else{
+      fileList.value = [] //父组件image从有值到空变化,也要清空一遍组件中的值
+      file.value = []
+    }
+  },{immediate:true})
+</script>
\ No newline at end of file

--
Gitblit v1.9.3