From 64d172717748c383a5c88348037354bffd60f966 Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期二, 27 五月 2025 17:52:03 +0800 Subject: [PATCH] 页面样式修改 --- src/components/ImagePreview/index.vue | 92 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 92 insertions(+), 0 deletions(-) diff --git a/src/components/ImagePreview/index.vue b/src/components/ImagePreview/index.vue new file mode 100644 index 0000000..acd05c5 --- /dev/null +++ b/src/components/ImagePreview/index.vue @@ -0,0 +1,92 @@ +<template> + <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> + </div> + </template> + </el-image> +</template> + +<script setup> +import { isExternal } from "@/utils/validate" + +const props = defineProps({ + src: { + type: String, + default: "" + }, + width: { + type: [Number, String], + default: "" + }, + height: { + type: [Number, String], + default: "" + } +}) + +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 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); + } + } + :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