From 4641a877cd6a94e4d35dca7f7f14bc1443e2d2ad Mon Sep 17 00:00:00 2001
From: luobisheng <727299681@qq.com>
Date: 星期二, 29 十一月 2022 17:59:55 +0800
Subject: [PATCH] 上传处置类型修改

---
 src/components/myUpload/index.vue |  246 +++++++++++++++++++++++++++++++-----------------
 1 files changed, 159 insertions(+), 87 deletions(-)

diff --git a/src/components/myUpload/index.vue b/src/components/myUpload/index.vue
index d51b510..2eba7da 100644
--- a/src/components/myUpload/index.vue
+++ b/src/components/myUpload/index.vue
@@ -1,105 +1,177 @@
 <template>
-    <div class="my-upload">
-        <el-upload :file-list="fileList" class="upload-demo" action="/sccg/file/medias" :multiple="multiple"
-            :show-file-list="flag" :before-upload="beforeUpload" :limit="limit" :on-success="handleSuccess"
-            :on-error="handleError" :list-type="listType" :headers="getToken()">
-            <div class="upload-btn" :style="{'height':btnHeight,'width':btnWidth}">
-                <i class="el-icon-plus"></i>
-                <span>涓婁紶鍥剧墖</span>
-            </div>
-        </el-upload>
+  <div class="my-upload">
+    <div v-if="pictureList.length > 0" class="image-box">
+      <div v-for="image in pictureList" class="image-box-item">
+        <i
+          v-if="isShowUpload"
+          @click="handleDeletePicture(image)"
+          class="el-icon-delete image-delete-icon"
+        ></i>
+        <el-image :key="image" class="image-content" :src="image"></el-image>
+      </div>
     </div>
+    <el-upload
+      v-if="isShowUpload"
+      :file-list="fileList"
+      action="/sccg/file/medias"
+      :multiple="multiple"
+      :show-file-list="flag"
+      :before-upload="beforeUpload"
+      :limit="limit"
+      :on-success="handleSuccess"
+      :on-error="handleError"
+      :list-type="listType"
+      :headers="getToken()"
+    >
+      <div class="upload-btn">
+        <i class="el-icon-plus"></i>
+        <span>涓婁紶鍥剧墖</span>
+      </div>
+    </el-upload>
+  </div>
 </template>
 <script>
-
 export default {
-    data() {
-        return {
-            // 鏂囦欢鍒楄〃
-            fileList: [],
-            // 鏄惁鏄剧ず鏂囦欢鍒楄〃
-            flag: true,
-            // 澶氶��
-            multiple: false,
-            // 闄愬埗
-            limit: 50,
-            // 鎸夐挳楂樺害
-            btnHeight: '120px',
-            // 鎸夐挳瀹藉害
-            btnWidth: '120px',
-            // 鏂囦欢鍒楄〃绫诲瀷
-            listType: 'picture-card'
-        };
+  data() {
+    return {
+      // 鏂囦欢鍒楄〃
+      fileList: [],
+      // 鏄惁鏄剧ず鏂囦欢鍒楄〃
+      flag: false,
+      // 澶氶��
+      multiple: false,
+      // 闄愬埗
+      limit: 4,
+      // 鏂囦欢鍒楄〃绫诲瀷
+      listType: "picture-card",
+    };
+  },
+  methods: {
+    // 涓婁紶涔嬪墠鍥炶皟
+    beforeUpload(rawFile) {
+      if (
+        rawFile.type !== "image/png" &&
+        rawFile.type !== "image/svg+xml" &&
+        rawFile.type !== "image/jpg" &&
+        rawFile.type !== "image/jpeg"
+      ) {
+        this.$message.error("鍥剧墖蹇呴』鏄� jpg/svg/jpeg/png 鏍煎紡!");
+        return false;
+      } else if (rawFile.size / 1024 / 1024 > 5) {
+        this.$message.error("涓婁紶鍥剧墖涓嶈兘瓒呰繃 5MB!");
+        return false;
+      }
+      return true;
     },
-    methods: {
-        // 涓婁紶涔嬪墠鍥炶皟
-        beforeUpload(rawFile) {
-            console.log(rawFile);
-            if (rawFile.type !== 'image/png' && rawFile.type !== 'image/svg+xml' && rawFile.type !== 'image/jpg' && rawFile.type !== 'image/jpeg') {
-                this.$message.error('鍥剧墖蹇呴』鏄� jpg/svg/jpeg/png 鏍煎紡!')
-                return false
-            } else if (rawFile.size / 105 / 105 > 2) {
-                this.$message.error('涓婁紶鍥剧墖涓嶈兘瓒呰繃 2MB!')
-                return false
-            }
-            return true
-        },
-        // 涓婁紶鎴愬姛鍥炶皟
-        handleSuccess(res, file, filelist) {
-            console.log(res);
-        },
-        // 涓婁紶澶辫触鍥炶皟
-        handleError(err, file, fileList) {
-            console.log(err);
-        },
-        // 鑾峰彇token
-        getToken() {
-            const token = sessionStorage.getItem('token');
-            const tokenHead = sessionStorage.getItem('tokenHead');
-            if (token && tokenHead) {
-                return { Authorization: tokenHead + token }
-            }
-        }
+    // 涓婁紶鎴愬姛鍥炶皟
+    handleSuccess(res, file, filelist) {
+      if (res.data.url1) {
+        this.$emit("setPictureUrl", { url: res.data.url1 });
+      } else if (res.data.url2) {
+        this.$emit("setPictureUrl", { url: res.data.url2 });
+      } else if (res.data.url3) {
+        this.$emit("setPictureUrl", { url: res.data.url3 });
+      } else {
+        this.$emit("setPictureUrl", { url: res.data.url4 });
+      }
     },
-    props: {
-        
-    }
-}
+    // 涓婁紶澶辫触鍥炶皟
+    handleError(err, file, fileList) {
+      this.$message({
+        type: "error",
+        message: err,
+      });
+    },
+    // 鑾峰彇token
+    getToken() {
+      const token = sessionStorage.getItem("token");
+      const tokenHead = sessionStorage.getItem("tokenHead");
+      if (token && tokenHead) {
+        return { Authorization: tokenHead + token };
+      }
+    },
+
+    handleDeletePicture(imageUrl) {
+      this.$emit("delPictureUrl", { url: imageUrl });
+    },
+  },
+  props: {
+    pictureList: {
+      type: Array,
+      default: () => [],
+    },
+    isShowUpload: {
+      type: Boolean,
+      default: () => true,
+    },
+  },
+};
 </script>
 <style lang="scss" scoped>
 .my-upload {
-    .upload-demo {
-        display: flex;
+  display: flex;
+  flex-wrap: nowrap;
+  justify-content: flex-start;
+  margin-right: 5px;
+
+  .upload-btn {
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+    border-radius: 4px;
+    width: 100px;
+    height: 100px;
+
+    &:hover i {
+      color: #409eff;
     }
 
-    :deep(.el-upload--picture-card) {
-        width: 120px;
-        height: 120px;
+    i {
+      font-size: 30px;
+      font-weight: 650;
     }
-    :deep(.el-upload-list__item){
-        width: 120px;
-        height: 120px;
+
+    span {
+      line-height: 22px;
     }
-    .upload-btn {
-        // background-color: rgba(249, 249, 249, 1);
-        display: flex;
-        flex-direction: column;
-        justify-content: center;
-        align-items: center;
-        border-radius: 4px;
+  }
+  .image-box {
+    display: flex;
+    flex-wrap: wrap;
+    height: 100px;
+    margin: 0 10px;
 
-        &:hover i{
-            color: #409eff;
-        }
-
-        i {
-            font-size: 30px;
-            font-weight: 650;
-        }
-
-        span {
-            line-height: 22px;
-        }
+    .image-content {
+      width: 100px;
+      height: 100px;
     }
+    .image-delete-icon {
+      position: relative;
+      bottom: calc(100% - 50px);
+      left: calc(100% - 50px);
+      opacity: 0;
+    }
+    .image-box-item {
+      padding: 0px 10px;
+    }
+    .image-box-item:hover {
+      color: #ffffff;
+      opacity: 0.5;
+      .image-delete-icon {
+        z-index: 2;
+        opacity: 1;
+      }
+    }
+  }
+
+  :deep(.el-upload--picture-card) {
+    width: 100px;
+    height: 100px;
+  }
+  :deep(.el-upload-list__item) {
+    width: 100px;
+    height: 100px;
+  }
 }
 </style>
\ No newline at end of file

--
Gitblit v1.8.0