From 69c189a0c97cc6efedae19a4d7d89e18cfd4f4e6 Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: 星期五, 01 三月 2024 20:08:52 +0800
Subject: [PATCH] 代码生成新增创建表结构功能

---
 src/components/ImageUpload/index.vue |   80 ++++++++++++++++++++++++----------------
 1 files changed, 48 insertions(+), 32 deletions(-)

diff --git a/src/components/ImageUpload/index.vue b/src/components/ImageUpload/index.vue
index f30eeab..149524b 100644
--- a/src/components/ImageUpload/index.vue
+++ b/src/components/ImageUpload/index.vue
@@ -1,6 +1,7 @@
 <template>
   <div class="component-upload-image">
     <el-upload
+      multiple
       :action="uploadImgUrl"
       list-type="picture-card"
       :on-success="handleUploadSuccess"
@@ -8,8 +9,8 @@
       :limit="limit"
       :on-error="handleUploadError"
       :on-exceed="handleExceed"
-      name="file"
-      :on-remove="handleRemove"
+      ref="imageUpload"
+      :before-remove="handleDelete"
       :show-file-list="true"
       :headers="headers"
       :file-list="fileList"
@@ -73,6 +74,8 @@
 
 const { proxy } = getCurrentInstance();
 const emit = defineEmits();
+const number = ref(0);
+const uploadList = ref([]);
 const dialogImageUrl = ref("");
 const dialogVisible = ref(false);
 const baseUrl = import.meta.env.VITE_APP_BASE_API;
@@ -102,23 +105,7 @@
     fileList.value = [];
     return [];
   }
-});
-
-// 鍒犻櫎鍥剧墖
-function handleRemove(file, files) {
-  const findex = fileList.value.map(f => f.name).indexOf(file.name);
-  if (findex > -1) {
-    fileList.value.splice(findex, 1);
-    emit("update:modelValue", listToString(fileList.value));
-  }
-}
-
-// 涓婁紶鎴愬姛鍥炶皟
-function handleUploadSuccess(res) {
-  fileList.value.push({ name: res.fileName, url: res.fileName });
-  emit("update:modelValue", listToString(fileList.value));
-  proxy.$modal.closeLoading();
-}
+},{ deep: true, immediate: true });
 
 // 涓婁紶鍓峫oading鍔犺浇
 function handleBeforeUpload(file) {
@@ -149,7 +136,8 @@
       return false;
     }
   }
-  proxy.$modal.loading("涓婁紶涓�");
+  proxy.$modal.loading("姝e湪涓婁紶鍥剧墖锛岃绋嶅��...");
+  number.value++;
 }
 
 // 鏂囦欢涓暟瓒呭嚭
@@ -157,9 +145,44 @@
   proxy.$modal.msgError(`涓婁紶鏂囦欢鏁伴噺涓嶈兘瓒呰繃 ${props.limit} 涓�!`);
 }
 
+// 涓婁紶鎴愬姛鍥炶皟
+function handleUploadSuccess(res, file) {
+  if (res.code === 200) {
+    uploadList.value.push({ name: res.fileName, url: res.fileName });
+    uploadedSuccessfully();
+  } else {
+    number.value--;
+    proxy.$modal.closeLoading();
+    proxy.$modal.msgError(res.msg);
+    proxy.$refs.imageUpload.handleRemove(file);
+    uploadedSuccessfully();
+  }
+}
+
+// 鍒犻櫎鍥剧墖
+function handleDelete(file) {
+  const findex = fileList.value.map(f => f.name).indexOf(file.name);
+  if (findex > -1 && uploadList.value.length === number.value) {
+    fileList.value.splice(findex, 1);
+    emit("update:modelValue", listToString(fileList.value));
+    return false;
+  }
+}
+
+// 涓婁紶缁撴潫澶勭悊
+function uploadedSuccessfully() {
+  if (number.value > 0 && uploadList.value.length === number.value) {
+    fileList.value = fileList.value.filter(f => f.url !== undefined).concat(uploadList.value);
+    uploadList.value = [];
+    number.value = 0;
+    emit("update:modelValue", listToString(fileList.value));
+    proxy.$modal.closeLoading();
+  }
+}
+
 // 涓婁紶澶辫触
 function handleUploadError() {
-  proxy.$modal.msgError("涓婁紶澶辫触");
+  proxy.$modal.msgError("涓婁紶鍥剧墖澶辫触");
   proxy.$modal.closeLoading();
 }
 
@@ -174,7 +197,9 @@
   let strs = "";
   separator = separator || ",";
   for (let i in list) {
-    strs += list[i].url.replace(baseUrl, "") + separator;
+    if (undefined !== list[i].url && list[i].url.indexOf("blob:") !== 0) {
+      strs += list[i].url.replace(baseUrl, "") + separator;
+    }
   }
   return strs != "" ? strs.substr(0, strs.length - 1) : "";
 }
@@ -183,15 +208,6 @@
 <style scoped lang="scss">
 // .el-upload--picture-card 鎺у埗鍔犲彿閮ㄥ垎
 :deep(.hide .el-upload--picture-card) {
-  display: none;
-}
-// 鍘绘帀鍔ㄧ敾鏁堟灉
-:deep(.el-list-enter-active),
-:deep(.el-list-leave-active) {
-  transition: all 0s;
-}
-:deep(.el-list-enter, .el-list-leave-active) {
-  opacity: 0;
-  transform: translateY(0);
+    display: none;
 }
 </style>
\ No newline at end of file

--
Gitblit v1.9.3