el-upload上传附件预览只能上传一个,上传玩没有+号

news2024/11/17 8:18:39

el-upload上传附件预览只能上传一个,上传玩没有+号

  • 一、效果图
  • 二、主要代码

一、效果图

在这里插入图片描述

二、主要代码

实现原理是通过控制css显隐hideUpload 字段

<template>
    <div id="uploadOne">
        <!-- 预览附件上传一个 -->
        <el-upload
            :class="{ hide: hideUpload }"
            :action="actionUrl"
            :multiple="false"
            :limit="1"
            list-type="picture-card"
            :on-success="attachUploadSuccess"
            :on-exceed="productImgExceed"
            :on-error="attachError"
            :headers="headers"
            :file-list="fileDataList"
        >
            <i slot="default" class="el-icon-plus"></i>
            <div slot="file" slot-scope="{ file }">
                <img
                    class="el-upload-list__item-thumbnail"
                    :src="file.url"
                    style="border-radius: 6px; width: 148px; height: 148px"
                    alt=""
                />
                <span class="el-upload-list__item-actions">
                    <span
                        class="el-upload-list__item-preview"
                        @click="handlePictureCardPreview(file)"
                    >
                        <i class="el-icon-zoom-in"></i>
                    </span>
                    <span
                        v-if="!disabled"
                        class="el-upload-list__item-delete"
                        @click="handleDownload(file)"
                    >
                        <i class="el-icon-download"></i>
                    </span>
                    <span
                        v-if="!disabled"
                        class="el-upload-list__item-delete"
                        @click="handleRemove(file)"
                    >
                        <i class="el-icon-delete"></i>
                    </span>
                </span>
            </div>
        </el-upload>
        <el-dialog :visible.sync="dialogVisible">
            <img width="100%" :src="dialogImageUrl" alt="" />
        </el-dialog>
    </div>
</template>

<script>
export default {
    name: 'uploadComponentShowOne',
    props: {
        attachFileList: {
            type: Array,
            default() {
                return []
            },
        },
    },
    data() {
        return {
            fileDataList: [],
            dialogImageUrl: '',
            dialogVisible: false,
            disabled: false,
            hideUpload: false,
        }
    },
    computed: {
        actionUrl() {
            return process.env.API_SERVER + '/url'
        },
        headers() {
            return { token: this.$store.state.token }
        },
    },
    watch: {
        attachFileList: {
            //监听的对象
            deep: true, //深度监听设置为 true
            handler: function (newV, oldV) {
                this.fileDataList = JSON.parse(JSON.stringify(newV))
                this.hideUpload = this.fileDataList.length == 1 ? true : false
            },
        },
    },

    methods: {
        productImgExceed(files, fileList) {
            this.$message.warning(`超过上传个数,请删除已上传的!`)
        },
        attachError(err, file, fileList) {},
        handleRemove(file) {
            this.hideUpload = false
            let removeId = file.id
            this.fileDataList.forEach((item, index) => {
                if (item.id == removeId) {
                    this.fileDataList.splice(index, 1)
                    this.$emit('DialogOk', this.fileDataList)
                }
            })
        },
        // 预览
        handlePictureCardPreview(file) {
            this.dialogImageUrl = file.url
            this.dialogVisible = true
        },
        // 下载
        handleDownload(file) {
            let a = document.createElement('a')
            a.href = file.url
            a.download = file.name
            a.click()
        },
        attachUploadSuccess(response, file, fileList) {
            if (response.code == 200) {
                this.hideUpload = true
                this.fileDataList.push({
                    id: response.data.id,
                    name: response.data.fileName,
                    url: response.data.url,
                })
                this.$emit('DialogOk', this.fileDataList)
            } else {
                this.$message.error(response.message)
            }
        },
    },
}
</script>

<style lang="scss">
#uploadOne {
    .hide .el-upload--picture-card {
        display: none;
    }
}
</style>

链接: https://blog.csdn.net/weixin_49203377/article/details/130806855?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-130806855-blog-124610968.235%5Ev38%5Epc_relevant_default_base3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-130806855-blog-124610968.235%5Ev38%5Epc_relevant_default_base3&utm_relevant_index=2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1201775.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TikTok数字艺术:短视频背后的视觉盛宴

在当今数字时代&#xff0c;社交媒体平台已经成为创意表达和文化传播的重要场所之一。其中&#xff0c;以短视频为代表的形式在TikTok这一平台上崭露头角&#xff0c;为创作者和观众提供了一个数字艺术的舞台。 本文将深入探讨TikTok数字艺术的独特之处&#xff0c;剖析短视频…

FAN73832MX 350mA-650mA 高压600V 能驱动MOSFET和IGBT 半桥栅极驱动IC

FAN73832MX是一款半桥、栅极驱动 IC&#xff0c;带关断和可编程死区时间控制功能&#xff0c;能驱动 MOSFET 和 IGBT&#xff0c;工作电压高达 600 V。飞兆的高压工艺和共模噪声消除技术可使高侧驱动器在高 dv/dt 噪声环境下稳定运行。先进的电平转换电路允许高侧驱动器的工作偏…

万界星空科技智能管理系统低代码平台

低代码平台正成为企业数字化基础设施的重要一环&#xff0c;越来越多的企业为了可持续的数字化建设&#xff0c;开始启用低代码平台&#xff0c;其选型除了平台易用性、应用搭建能力外&#xff0c;也关注与第三方平台的集成性&#xff0c;及厂商对行业knowhow的积累、品牌口碑及…

Vatee万腾科技决策力的未来展望:Vatee数字化创新新高度

在当今快速发展的科技时代&#xff0c;Vatee万腾以其卓越的科技决策力&#xff0c;不断开创数字化创新的新高度。 Vatee万腾一直被视为数字化创新的先锋。通过不断拓展科技边界&#xff0c;Vatee万腾致力于引领数字化创新的方向。其科技决策力在预测市场趋势、分析大数据、应用…

后台系统更改主题【el-color-picker】

Element el-color-picker 颜色选择器的使用 设置的页面 <script setup lang"ts"> import { getThemeColor } from "../../utils/colorChange"; import { useUserStore } from "/store/index"; import { reactive } from "vue"…

Java之“数字困境”:资产管理项目中的Bug追踪与启示

目录 1 前言2 问题的发现3 调试的开始4 深入调试5 调试心得与反思6 结语 1 前言 在程序员的日常工作中&#xff0c;我们时常面对各种令人头疼的问题&#xff0c;其中最令人崩溃的瞬间之一&#xff0c;就是当我们花费大量时间追踪一个看似复杂的bug&#xff0c;最终发现问题的根…

未来之光:十八数藏的文化数字化新篇章

在时代的浪潮中&#xff0c;十八数藏显现出文化数字化的新时代光芒。这一数字化的新篇章不仅仅是对传统文化的延续&#xff0c;更是一场对未来的引领。通过数字化&#xff0c;十八数藏打开了文化传承的崭新大门&#xff0c;为传统工艺注入了新的生命力。 数字技术为十八数藏带来…

十年后人工智能会统治人类?2024年人工智能未来趋势,变化将翻天覆地!

原创 | 文 BFT机器人 01 导读 人工智能在全球范围内呈爆发性增长&#xff0c;随着技术的不断创新和社会的积极适应&#xff0c;人工智能有望引领一场社会革命。 02 Gartner发布2024 年十大战略技术趋势 Gartner研究副总裁Bart Willemsen表示&#xff1a;“由于技术变革以及社…

去掉textarea右下角的图标

效果图如下&#xff1a; <textarea placeholder"请输入内容..." cols"20" rows"2"></textarea>重点代码 ::-webkit-resizer {display: none;}

uniapp 小程序 身份证 和人脸视频拍摄

使用前提&#xff1a; 已经在微信公众平台的用户隐私协议&#xff0c;已经选择配置“摄像头&#xff0c;录像”等权限 开发背景&#xff1a;客户需要使用带有拍摄边框的摄像头 &#xff0c;微信小程序的方法无法支持&#xff0c;使用camera修改 身份证正反面&#xff1a; <…

[sd_scripts]之gen_img

https://github.com/kohya-ss/sd-scripts/blob/main/docs/gen_img_README-ja.mdhttps://github.com/kohya-ss/sd-scripts/blob/main/docs/gen_img_README-ja.md1.图像生成 ckpt "/home/image_team/image_team_docker_home/lgd/e_commerce_sd/stable-diffusion-webui/mod…

数据结构-静态查找、二分查找、分块查找

静态查找 在静态查找表中&#xff0c;我们只允许下面两件事&#xff1a; 1.在查找表中查找某个记录是否在表中 2.查找表中记录的各个属性 动态查找 在动态查找表中&#xff0c;我们允许四件事&#xff1a; 1.在查找表中查找某个记录是否在表中 2.查找表中记录的各个属性…

代理模式-静态动态代理-jdk动态代理-cglib动态代理

代理模式 静态代理 动态代理&#xff1a;jdk动态代理 cglib动态代理 注意 &#xff1a;下面的代码截图 要配合文字去看 我对代码的每一步都做了解释 所以需要配合图片观看提取吗1111https://pan.baidu.com/s/1OxQSwbQ--t5Zvmwzjh1T0A?pwd1111 这里直接把项目文件 及代码 …

Linux 使用随记

Linux 使用随记 shell 命令行模式登录后所取得的程序被成为shell&#xff0c;这是因为这个程序负责最外层的跟用户&#xff08;我们&#xff09;通信工作&#xff0c;所以才被戏称为shell。 命令 1、命令格式 command [-options] parameter1 parameter2 … 1、一行命令中第…

FNPLicensingService.exe 总提示要联网

目录预览 一、问题描述二、原因分析三、解决方案&#xff1a;四、参考链接 一、问题描述 FNPLicensingService.exe 总提示要联网 找到路径如下&#xff1a; C:\Program Files (x86)\Common Files\Macrovision Shared\FlexNet Publisher然而从文件目录来看&#xff0c;并没有…

成都优优聚美团代运营:打造高效电商运营的利器

一、引人注目的标题 在繁杂的电商市场中&#xff0c;成都优优聚美团代运营以其专业的服务&#xff0c;为商家提供了一站式的解决方案。那么&#xff0c;这个备受瞩目的代运营平台有何特别之处呢&#xff1f;今天&#xff0c;我们就来一探究竟。 二、平台背景与优势 成都优优聚…

Electronica Samtec展台连接器Demo回顾 | 224Gbps PAM4:令人瞠目的速率

【摘要/前言】 最近&#xff0c;我们正在为大家带来2023慕尼黑上海电子展虎家展台Demo演示回顾系列。 今天虎家工程师团队再次为大家带来系列第一期&#xff1a; 我们邀请到了合作伙伴Keysight&#xff0c;与我们一同带来了Samtec NovaRay高密度、高性能阵列连接器以及Keysig…

微信小程序用户隐私API

用户隐私保护 由于用户隐私保护的政策执行&#xff0c;我们在调用涉及到用户隐私的API时&#xff0c;未更新用户隐私保护协议是无法直接调用的&#xff0c;小程序会默认判断是否更新用户隐私保护 &#xff0c;并根据用户隐私保护中的协议来判断是否可以调用对应的API&#xff…

Generated Key 的功能

Generated Key 简介 一. 前言现场报错原因解决扩展 二. Generated Key简介&#xff1a;作用使用 一. 前言 现场报错 在客户现场遇到如下报错&#xff0c;现象是无法使用调度系统进行数据库的 insert 操作&#xff1a; 原因 数据库版本太老&#xff0c;而 insert 语句是使…