From cda383534e7dd9a32b5f971805184600b0911cea Mon Sep 17 00:00:00 2001 From: RuoYi <yzz_ivy@163.com> Date: 星期四, 30 十二月 2021 10:51:17 +0800 Subject: [PATCH] 新增图片预览组件 --- src/main.js | 3 + src/components/ImagePreview/index.vue | 67 +++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 0 deletions(-) diff --git a/src/components/ImagePreview/index.vue b/src/components/ImagePreview/index.vue new file mode 100644 index 0000000..e1cd197 --- /dev/null +++ b/src/components/ImagePreview/index.vue @@ -0,0 +1,67 @@ +<template> + <el-image :src="`${realSrc}`" fit="cover" :style="`width:${realWidth};height:${realHeight};`" :preview-src-list="[`${realSrc}`]"> + <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, + required: true + }, + width: { + type: [Number, String], + default: '' + }, + height: { + type: [Number, String], + 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 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> diff --git a/src/main.js b/src/main.js index 9398b0c..d6e38bf 100644 --- a/src/main.js +++ b/src/main.js @@ -33,6 +33,8 @@ import RightToolbar from '@/components/RightToolbar' // 鍥剧墖涓婁紶缁勪欢 import ImageUpload from "@/components/ImageUpload" +// 鍥剧墖棰勮缁勪欢 +import ImagePreview from "@/components/ImagePreview" // 鑷畾涔夋爲閫夋嫨缁勪欢 import TreeSelect from '@/components/TreeSelect' // 瀛楀吀鏍囩缁勪欢 @@ -54,6 +56,7 @@ app.component('Pagination', Pagination) app.component('TreeSelect', TreeSelect) app.component('ImageUpload', ImageUpload) +app.component('ImagePreview', ImagePreview) app.component('RightToolbar', RightToolbar) app.use(router) -- Gitblit v1.9.3