From e1ac04b42be89ca26ff5f94c17c4e2eebe52a0a2 Mon Sep 17 00:00:00 2001
From: wl <173@qq.com>
Date: 星期二, 03 一月 2023 09:52:39 +0800
Subject: [PATCH] Merge branch 'dev1.0' of ssh://42.193.1.25:29418/sccg_ui into dev1.0
---
src/components/myUpload/index.vue | 116 +++++++++++++++++++++++++++++++---------------------------
1 files changed, 62 insertions(+), 54 deletions(-)
diff --git a/src/components/myUpload/index.vue b/src/components/myUpload/index.vue
index 2eba7da..cae960e 100644
--- a/src/components/myUpload/index.vue
+++ b/src/components/myUpload/index.vue
@@ -1,27 +1,25 @@
<template>
<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 v-for="image in pictureList" :class="{ 'image-box-item': true, 'image-box-item-cover': isShowUpload }">
+ <span v-if="isShowUpload" @click="handleDeletePicture(image)" class="image-delete-icon el-icon-delete"></span>
+ <el-image :key="image" class="image-content" :src="image" :preview-src-list="[image]"></el-image>
</div>
</div>
<el-upload
- v-if="isShowUpload"
+ v-if="isShowUpload && pictureList.length < limit"
:file-list="fileList"
- action="/sccg/file/medias"
+ v-loading="loading"
+ element-loading-spinner="el-icon-loading"
+ element-loading-background="rgba(0, 0, 0, 0.8)"
+ action=""
:multiple="multiple"
:show-file-list="flag"
- :before-upload="beforeUpload"
:limit="limit"
- :on-success="handleSuccess"
- :on-error="handleError"
:list-type="listType"
- :headers="getToken()"
+ :auto-upload="true"
+ :http-request="handleUpload"
+ style="margin-left: 14px;"
>
<div class="upload-btn">
<i class="el-icon-plus"></i>
@@ -31,6 +29,8 @@
</div>
</template>
<script>
+import imageManagement from "@/api/operate/imageManagement";
+
export default {
data() {
return {
@@ -44,51 +44,50 @@
limit: 4,
// 鏂囦欢鍒楄〃绫诲瀷
listType: "picture-card",
+ loading: false
};
},
methods: {
- // 涓婁紶涔嬪墠鍥炶皟
- beforeUpload(rawFile) {
+ // 楠岃瘉涓婁紶鏂囦欢
+ validateFile(file) {
if (
- rawFile.type !== "image/png" &&
- rawFile.type !== "image/svg+xml" &&
- rawFile.type !== "image/jpg" &&
- rawFile.type !== "image/jpeg"
+ file.type !== "image/png" &&
+ file.type !== "image/svg+xml" &&
+ file.type !== "image/jpg" &&
+ file.type !== "image/jpeg"
) {
this.$message.error("鍥剧墖蹇呴』鏄� jpg/svg/jpeg/png 鏍煎紡!");
- return false;
- } else if (rawFile.size / 1024 / 1024 > 5) {
+ this.loading = false;
+ return false;
+ }
+
+ if (file.size / 1024 / 1024 > 5) {
this.$message.error("涓婁紶鍥剧墖涓嶈兘瓒呰繃 5MB!");
+ this.loading = false;
return false;
}
return true;
},
- // 涓婁紶鎴愬姛鍥炶皟
- 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 });
+
+ handleUpload(data) {
+ this.loading = true;
+ const { file } = data;
+ const validate = this.validateFile(file);
+ if (!validate) {
+ return;
}
- },
- // 涓婁紶澶辫触鍥炶皟
- 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 };
- }
+ const formData = new FormData();
+ formData.append('file', file);
+ imageManagement.importImage(formData)
+ .then(({ url1, url2, url3, url4 }) => {
+ const url = url1 ?? url2 ?? url3 ?? url4;
+ this.$emit('setPictureUrl', { url: url });
+ this.loading = false;
+ })
+ .catch(err => {
+ this.loading = false;
+ this.$message.error(err);
+ })
},
handleDeletePicture(imageUrl) {
@@ -140,27 +139,36 @@
display: flex;
flex-wrap: wrap;
height: 100px;
- margin: 0 10px;
.image-content {
width: 100px;
height: 100px;
}
+
.image-delete-icon {
- position: relative;
- bottom: calc(100% - 50px);
- left: calc(100% - 50px);
+ position: absolute;
+ top: 45px;
+ left: 45px;
opacity: 0;
}
+
.image-box-item {
- padding: 0px 10px;
+ position: sticky;
+ margin: 0 10px;
}
- .image-box-item:hover {
- color: #ffffff;
- opacity: 0.5;
+
+ .image-box-item-cover:hover {
+ .image-content {
+ box-shadow: #ffffff;
+ opacity: 0.5;
+ }
+
.image-delete-icon {
+ color: red;
+ font-size: 14px;
z-index: 2;
opacity: 1;
+ cursor: pointer;
}
}
}
--
Gitblit v1.8.0