From 903b5aebca7951da979d703604c7f54159498157 Mon Sep 17 00:00:00 2001 From: RuoYi <yzz_ivy@163.com> Date: 星期六, 18 十二月 2021 12:23:59 +0800 Subject: [PATCH] 新增图片预览组件 --- ruoyi-ui/src/components/ImagePreview/index.vue | 67 +++++++++++++++++++++++++++++++++ ruoyi-ui/src/main.js | 3 + 2 files changed, 70 insertions(+), 0 deletions(-) diff --git a/ruoyi-ui/src/components/ImagePreview/index.vue b/ruoyi-ui/src/components/ImagePreview/index.vue new file mode 100644 index 0000000..44e27aa --- /dev/null +++ b/ruoyi-ui/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}`]"> + <div slot="error" class="image-slot"> + <i class="el-icon-picture-outline"></i> + </div> + </el-image> +</template> + +<script> +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: '' + } + }, + 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` + } + } +} +</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); + } + } + ::v-deep .image-slot { + display: flex; + justify-content: center; + align-items: center; + width: 100%; + height: 100%; + color: #909399; + font-size: 30px; + } +} +</style> diff --git a/ruoyi-ui/src/main.js b/ruoyi-ui/src/main.js index 729467a..ebd94b9 100644 --- a/ruoyi-ui/src/main.js +++ b/ruoyi-ui/src/main.js @@ -29,6 +29,8 @@ import FileUpload from "@/components/FileUpload" // 鍥剧墖涓婁紶缁勪欢 import ImageUpload from "@/components/ImageUpload" +// 鍥剧墖棰勮缁勪欢 +import ImagePreview from "@/components/ImagePreview" // 瀛楀吀鏍囩缁勪欢 import DictTag from '@/components/DictTag' // 澶撮儴鏍囩缁勪欢 @@ -54,6 +56,7 @@ Vue.component('Editor', Editor) Vue.component('FileUpload', FileUpload) Vue.component('ImageUpload', ImageUpload) +Vue.component('ImagePreview', ImagePreview) Vue.use(directive) Vue.use(plugins) -- Gitblit v1.9.3