<template> <el-image :src="`${realSrc}`" fit="cover" :style="`width:${realWidth};height:${realHeight};`" :preview-src-list="realSrcList" append-to-body="true" > <template #error> <div class="image-slot"> <el-icon><picture-filled /></el-icon> </div> </template> </el-image> </template> <script setup> 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]; return real_src; }); const realSrcList = computed(() => { if (!props.src) { return; } let real_src_list = props.src.split(","); let srcList = []; real_src_list.forEach(item => { return srcList.push(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>