From 7bc15245aa48e743ad42fbe5d53582a90cd450cf Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: 星期六, 01 一月 2022 09:46:18 +0800
Subject: [PATCH] 预览组件支持多图显示
---
ruoyi-ui/src/components/ImagePreview/index.vue | 121 +++++++++++++++++++++++-----------------
1 files changed, 69 insertions(+), 52 deletions(-)
diff --git a/ruoyi-ui/src/components/ImagePreview/index.vue b/ruoyi-ui/src/components/ImagePreview/index.vue
index 44e27aa..743d8d5 100644
--- a/ruoyi-ui/src/components/ImagePreview/index.vue
+++ b/ruoyi-ui/src/components/ImagePreview/index.vue
@@ -1,67 +1,84 @@
<template>
- <el-image :src="`${realSrc}`" fit="cover" :style="`width:${realWidth};height:${realHeight};`" :preview-src-list="[`${realSrc}`]">
- <div slot="error" class="image-slot">
- <i class="el-icon-picture-outline"></i>
- </div>
- </el-image>
+ <el-image
+ :src="`${realSrc}`"
+ fit="cover"
+ :style="`width:${realWidth};height:${realHeight};`"
+ :preview-src-list="realSrcList"
+ >
+ <div slot="error" class="image-slot">
+ <i class="el-icon-picture-outline"></i>
+ </div>
+ </el-image>
</template>
<script>
-import { isExternal } from '@/utils/validate'
+import { isExternal } from "@/utils/validate";
export default {
- name: 'ImagePreview',
- props: {
- src: {
- type: String,
- required: true
- },
- width: {
- type: [Number, String],
- default: ''
- },
- height: {
- type: [Number, String],
- default: ''
- }
+ name: "ImagePreview",
+ props: {
+ src: {
+ type: String,
+ required: true
},
- computed: {
- realSrc() {
- if (isExternal(this.src)) {
- return this.src
- }
- return process.env.VUE_APP_BASE_API + this.src
- },
- realWidth() {
- return typeof this.width == 'string' ? this.width : `${this.width}px`
- },
- realHeight() {
- return typeof this.height == 'string' ? this.height : `${this.height}px`
- }
+ width: {
+ type: [Number, String],
+ default: ""
+ },
+ height: {
+ type: [Number, String],
+ default: ""
}
-}
+ },
+ computed: {
+ realSrc() {
+ let real_src = this.src.split(",")[0];
+ if (isExternal(real_src)) {
+ return real_src;
+ }
+ return process.env.VUE_APP_BASE_API + real_src;
+ },
+ realSrcList() {
+ let real_src_list = this.src.split(",");
+ let srcList = [];
+ real_src_list.forEach(item => {
+ if (isExternal(item)) {
+ return srcList.push(item);
+ }
+ return srcList.push(process.env.VUE_APP_BASE_API + item);
+ });
+ return srcList;
+ },
+ realWidth() {
+ return typeof this.width == "string" ? this.width : `${this.width}px`;
+ },
+ realHeight() {
+ return typeof this.height == "string" ? this.height : `${this.height}px`;
+ }
+ },
+};
</script>
<style lang="scss" scoped>
.el-image {
- border-radius: 5px;
- background-color: #ebeef5;
- box-shadow: 0 0 5px 1px #ccc;
- ::v-deep .el-image__inner {
- transition: all 0.3s;
- cursor: pointer;
- &:hover {
- transform: scale(1.2);
- }
+ border-radius: 5px;
+ background-color: #ebeef5;
+ box-shadow: 0 0 5px 1px #ccc;
+ ::v-deep .el-image__inner {
+ transition: all 0.3s;
+ cursor: pointer;
+ &:hover {
+ transform: scale(1.2);
}
- ::v-deep .image-slot {
- display: flex;
- justify-content: center;
- align-items: center;
- width: 100%;
- height: 100%;
- color: #909399;
- font-size: 30px;
- }
+ }
+ ::v-deep .image-slot {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ width: 100%;
+ height: 100%;
+ color: #909399;
+ font-size: 30px;
+ }
}
</style>
--
Gitblit v1.9.3