From ece2dfeb926d728b10db38038e4d12e9e9851c24 Mon Sep 17 00:00:00 2001
From: chenrui <1187576398@qq.com>
Date: 星期五, 06 六月 2025 17:38:10 +0800
Subject: [PATCH] 分页修改

---
 src/components/ImagePreview/index.vue |   97 ++++++++++++++++++++++++++++++------------------
 1 files changed, 61 insertions(+), 36 deletions(-)

diff --git a/src/components/ImagePreview/index.vue b/src/components/ImagePreview/index.vue
index e1cd197..00212c5 100644
--- a/src/components/ImagePreview/index.vue
+++ b/src/components/ImagePreview/index.vue
@@ -1,5 +1,11 @@
 <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"
+    preview-teleported
+  >
     <template #error>
       <div class="image-slot">
         <el-icon><picture-filled /></el-icon>
@@ -9,59 +15,78 @@
 </template>
 
 <script setup>
-import { isExternal } from '@/utils/validate'
+import { isExternal } from "@/utils/validate"
 
 const props = defineProps({
   src: {
     type: String,
-    required: true
+    default: ""
   },
   width: {
     type: [Number, String],
-    default: ''
+    default: ""
   },
   height: {
     type: [Number, String],
-    default: ''
+    default: ""
   }
-});
-
-const realSrc = computed(() => {
-  if (isExternal(props.src)) {
-    return props.src
-  }
-  return import.meta.env.VITE_APP_BASE_API + props.src
 })
 
-const realWidth = computed(
-  () => typeof props.width == 'string' ? props.width : `${props.width}px`
-);
+const realSrc = computed(() => {
+  if (!props.src) {
+    return
+  }
+  let real_src = props.src.split(",")[0]
+  if (isExternal(real_src)) {
+    return real_src
+  }
+  return import.meta.env.VITE_APP_BASE_API + real_src
+})
 
-const realHeight = computed(
-  () => typeof props.height == 'string' ? props.height : `${props.height}px`
-);
+const realSrcList = computed(() => {
+  if (!props.src) {
+    return
+  }
+  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`
+)
 </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