mirror of
https://gitee.com/xiangheng/x_admin.git
synced 2025-10-07 00:52:57 +08:00
73 lines
1.9 KiB
Vue
73 lines
1.9 KiB
Vue
<template>
|
|
<div>
|
|
<div class="file-item relative" :style="{ height: fileSize, width: fileSize }">
|
|
<el-image class="image" v-if="type == 'image'" fit="contain" lazy :src="uri"></el-image>
|
|
<video class="video" v-else-if="type == 'video'" :src="uri"></video>
|
|
<div
|
|
v-if="type == 'video'"
|
|
class="absolute left-1/2 top-1/2 translate-x-[-50%] translate-y-[-50%] rounded-full w-5 h-5 flex justify-center items-center bg-[rgba(0,0,0,0.3)]"
|
|
>
|
|
<icon name="el-icon-CaretRight" :size="18" color="#fff" />
|
|
</div>
|
|
<slot></slot>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script lang="ts">
|
|
import { defineComponent } from 'vue'
|
|
export default defineComponent({
|
|
props: {
|
|
// 图片地址
|
|
uri: {
|
|
type: String
|
|
},
|
|
// 图片尺寸
|
|
fileSize: {
|
|
type: String,
|
|
default: '100px'
|
|
},
|
|
// 文件类型
|
|
ext: {
|
|
type: String,
|
|
default: ''
|
|
}
|
|
},
|
|
emits: ['close'],
|
|
computed: {
|
|
type() {
|
|
const imageExt = ['jpg', 'jpeg', 'png', 'gif', 'bmp']
|
|
const videoExt = ['mp4', 'avi', 'mov']
|
|
if (imageExt.includes(this.ext)) {
|
|
return 'image'
|
|
}
|
|
if (videoExt.includes(this.ext)) {
|
|
return 'video'
|
|
}
|
|
return 'file'
|
|
}
|
|
}
|
|
})
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.file-item {
|
|
box-sizing: border-box;
|
|
position: relative;
|
|
border-radius: 4px;
|
|
overflow: hidden;
|
|
|
|
background-color: var(--el-border-color-extra-light);
|
|
border-width: 1px;
|
|
border-color: var(--el-border-color-extra-light);
|
|
|
|
.image,
|
|
.video {
|
|
display: block;
|
|
box-sizing: border-box;
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
}
|
|
</style>
|