From 40c73f37b5779ad36b415f278ce01de21194f06d Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: 星期六, 01 一月 2022 09:46:31 +0800
Subject: [PATCH] 预览组件支持多图显示

---
 src/components/ImagePreview/index.vue |   78 ++++++++++++++++++++++++---------------
 1 files changed, 48 insertions(+), 30 deletions(-)

diff --git a/src/components/ImagePreview/index.vue b/src/components/ImagePreview/index.vue
index e1cd197..c29c065 100644
--- a/src/components/ImagePreview/index.vue
+++ b/src/components/ImagePreview/index.vue
@@ -1,5 +1,10 @@
 <template>
-  <el-image :src="`${realSrc}`" fit="cover" :style="`width:${realWidth};height:${realHeight};`" :preview-src-list="[`${realSrc}`]">
+  <el-image
+    :src="`${realSrc}`"
+    fit="cover"
+    :style="`width:${realWidth};height:${realHeight};`"
+    :preview-src-list="realSrcList"
+  >
     <template #error>
       <div class="image-slot">
         <el-icon><picture-filled /></el-icon>
@@ -9,7 +14,7 @@
 </template>
 
 <script setup>
-import { isExternal } from '@/utils/validate'
+import { isExternal } from "@/utils/validate";
 
 const props = defineProps({
   src: {
@@ -18,50 +23,63 @@
   },
   width: {
     type: [Number, String],
-    default: ''
+    default: ""
   },
   height: {
     type: [Number, String],
-    default: ''
+    default: ""
   }
 });
 
 const realSrc = computed(() => {
-  if (isExternal(props.src)) {
-    return props.src
+  let real_src = props.src.split(",")[0];
+  if (isExternal(real_src)) {
+    return real_src;
   }
-  return import.meta.env.VITE_APP_BASE_API + props.src
-})
+  return import.meta.env.VITE_APP_BASE_API + real_src;
+});
 
-const realWidth = computed(
-  () => typeof props.width == 'string' ? props.width : `${props.width}px`
+const realSrcList = computed(() => {
+  let real_src_list = props.src.split(",");
+  let srcList = [];
+  real_src_list.forEach(item => {
+    if (isExternal(item)) {
+      return srcList.push(item);
+    }
+    return srcList.push(import.meta.env.VITE_APP_BASE_API + item);
+  });
+  return srcList;
+});
+
+const realWidth = computed(() =>
+  typeof props.width == "string" ? props.width : `${props.width}px`
 );
 
-const realHeight = computed(
-  () => typeof props.height == 'string' ? props.height : `${props.height}px`
+const realHeight = computed(() =>
+  typeof props.height == "string" ? props.height : `${props.height}px`
 );
 </script>
 
 <style lang="scss" scoped>
 .el-image {
-    border-radius: 5px;
-    background-color: #ebeef5;
-    box-shadow: 0 0 5px 1px #ccc;
-    :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;
+  :deep(.el-image__inner) {
+    transition: all 0.3s;
+    cursor: pointer;
+    &:hover {
+      transform: scale(1.2);
     }
-    :deep(.image-slot) {
-        display: flex;
-        justify-content: center;
-        align-items: center;
-        width: 100%;
-        height: 100%;
-        color: #909399;
-        font-size: 30px;
-    }
+  }
+  :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