refactor(Upload): ♻️ 单图片支持点击预览

This commit is contained in:
cshaptx4869
2025-09-18 15:00:39 +08:00
parent 26a7b1a15e
commit fc6537d71b

View File

@@ -12,13 +12,22 @@
:on-error="onError" :on-error="onError"
> >
<template #default> <template #default>
<el-image v-if="modelValue" :src="modelValue" /> <template v-if="modelValue">
<el-icon v-if="modelValue" class="single-upload__delete-btn" @click.stop="handleDelete"> <el-image
<CircleCloseFilled /> class="single-upload__image"
</el-icon> :src="modelValue"
<el-icon v-else class="single-upload__add-btn"> :preview-src-list="[modelValue]"
<Plus /> @click.stop="handlePreview"
</el-icon> />
<el-icon class="single-upload__delete-btn" @click.stop="handleDelete">
<CircleCloseFilled />
</el-icon>
</template>
<template v-else>
<el-icon>
<Plus />
</el-icon>
</template>
</template> </template>
</el-upload> </el-upload>
</template> </template>
@@ -138,6 +147,13 @@ function handleUpload(options: UploadRequestOptions) {
}); });
} }
/**
* 预览图片
*/
function handlePreview() {
console.log("预览图片,停止冒泡");
}
/** /**
* 删除图片 * 删除图片
*/ */
@@ -166,21 +182,14 @@ const onError = (error: any) => {
<style scoped lang="scss"> <style scoped lang="scss">
:deep(.el-upload--picture-card) { :deep(.el-upload--picture-card) {
width: v-bind("props.style.width"); position: relative;
height: v-bind("props.style.height"); width: v-bind("props.style.width ?? '150px'");
height: v-bind("props.style.height ?? '150px'");
} }
.single-upload { .single-upload {
position: relative; &__image {
width: v-bind("props.style.width"); border-radius: 6px;
height: v-bind("props.style.height");
overflow: hidden;
cursor: pointer;
border: 1px var(--el-border-color) solid;
border-radius: 5px;
&:hover {
border-color: var(--el-color-primary);
} }
&__delete-btn { &__delete-btn {