仿照el-upload 封装自己的上传控件(el-upload 移动端无法吊起相机)

news2024/11/29 14:52:52

input选择图片的那个选择在h5的时候在去年下半年突然无法无法出现唤醒相机的选项  不知道出现的原因 

发现el-upload作为h5的时候无法吊起相机 

又因为需要对服务端地址图片进行回显(处于编辑功能的情况下 非新增 新增el-upload 可以实现回显)  两个功能el-upload都不能很好的支持 所以自己仿照el-upload 做了上传组件的封装

具体代码如下图所示

<template>
    <div style="display: flex; height: 100%;">
        <div v-for="(item,idx) in httpLits" :key="item" class="listitem">
            <div class="inner">
                <img :src="`${item}`">
                <div class="delete" @click="delimg(idx)">
                    <i class="el-icon-delete"></i>
                </div>
            </div>
        </div>
        <div class="inputbox" v-if="httpLits.length !== 5" :class="httpLits.length > 0 ? 'listitem' : ''">
            <i class="ri-camera-fill"></i>
            <span>{{ httpLits.length === 0 ? '添加图片' : `还可添加${5 - httpLits.length}张`
            }}</span>
            <input v-if="inputshow" type="file" name="image" :accept="'image/*'" @change="onchangeImgFun"
                style="position: absolute; width: 100%;height: 100%;opacity: 0;" />
        </div>
    </div>
</template>

<script>
import axios from 'axios'
import _ from "lodash"
export default {
    props: ['value'],
    data() {
        return {
            inputshow: true,
            httpLits: [],
        }
    },
    created() {
        this.httpLits=_.cloneDeep(Array.isArray(this.value) ?this.value:[])
      
       
    },
    methods: {
        onchangeImgFun(e) {
            console.log(e.target.files)
            var file = e.target.files[0];
            this.inputshow = false
            let formData = new FormData()
            formData.append('image', file)
            axios({
                method: 'post',
                url: `xxxx`,
                data: formData
            },

            ).then(res => {
                this.httpLits.push(res.data.data.image)
                this.$emit('input', this.httpLits)
                this.inputshow = true
            }).catch(() => {
                alert('上传失败')
            })
        },
        // 删除图片
        delimg(idx) {
            this.httpLits.splice(idx, 1)
            this.$emit('input', this.httpLits)
        },
    }

}
</script>

<style lang="scss" scoped>
.inputbox {
    height: 4.125rem;
    line-height: unset;
    background-color: #F2F6F8;
    width: calc(100vw - 1.75rem);
    border-radius: 6px;
    border-color: #f2f6f8;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    position: relative;
    box-sizing: border-box;

    i {
        font-size: 24px;
        color: #4E5969;
    }

    span {
        font-weight: 400;
        font-size: 12px;
        color: #86909C;
    }
}

.listitem {
    width: calc(100% / 5);
    height: 100%;
    padding: 1px 4px;
    box-sizing: border-box;

    .inner {
        border-radius: 4px;
        width: 100%;
        height: 100%;
        overflow: hidden;
        position: relative;

        img {
            width: 100%;
            height: 100%;
        }

        .delete {
            position: absolute;
            right: 0;
            bottom: 0;
            width: 20px;
            height: 20px;
            z-index: 9999;
            background-color: #ffffff44;
            border-radius: 12%;
            display: flex;
            align-items: center;
            justify-content: center;

            i {
                color: #f53f3f;
                font-size: 12px;
            }
        }
    }

    span {
        font-weight: 400;
        font-size: 10px;
        color: #86909C;
    }


}
</style>

效果图如下:

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

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

相关文章

【快捷上手】UnrealEngine 的 关卡流 LevelStreaming 的三种加载方式

关键词&#xff1a; Unreal Engine&#xff0c;UE&#xff0c; LevelStreaming&#xff0c;动态&#xff0c;关卡&#xff0c;加载&#xff0c;切换关卡&#xff0c;换地图&#xff0c;子地图&#xff0c;子场景&#xff0c;子关卡&#xff0c;分包加载&#xff0c;动态载入 …

Python知识详解之爬虫

1.1 爬虫概念 爬虫又被称为网页蜘蛛、网络机器人&#xff0c;有时也被称为网页追逐者&#xff0c;是一种按照一定的规则&#xff0c;自动地抓取互联网上网页中相应信息(文本图片等)的程序或脚本&#xff0c;然后把抓取的信息存储到自己的计算机上。简单来说&#xff0c;爬虫就是…

6.99元租H800,部署Llama3,羊毛速来薅!

猛然间&#xff0c;大模型圈掀起一股“降价风潮”。 前脚&#xff0c;智谱、DeepSeek等大模型厂商将API价格一降再降&#xff0c;输入100万tokens仅需1元。 紧接着&#xff0c;GPU租赁的价格也被打了下来。 现在潞晨云官方进行限时大额算力补贴&#xff0c;NVIDIA H800的租用…

如何使用Shortemall自动扫描URL短链接中的隐藏内容

关于Shortemall Shortemall是一款针对URL地址安全与Web内容安全的强大工具&#xff0c;该工具基于纯Python开发&#xff0c;专为Web安全方向设计&#xff0c;可以帮助广大研究人员以自动化的形式扫描URL短链接中的隐藏内容。 Shortemall的全名为ShortEm All&#xff0c;该工具…

Pikachu 靶场 XXE 通关解析

前言 Pikachu靶场是一种常见的网络安全训练平台&#xff0c;用于模拟真实世界中的网络攻击和防御场景。它提供了一系列的实验室环境&#xff0c;供安全专业人士、学生和爱好者练习和测试他们的技能。 Pikachu靶场的目的是帮助用户了解和掌握网络攻击的原理和技术&#xff0c;…

使用ffmpeg将本地摄像头推流至RTSP服务器,支持RTSP和RTMP协议

一、流媒体传输协议&#xff1a;RTSP和RTMP 1、RTSP和RTMP的工作原理 1.1&#xff09;RTSP工作原理 用户设备向视频流平台发送RTSP请求。视频流平台返回可操作的请求列表&#xff0c;如播放、暂停等。用户设备发送具体的请求&#xff0c;如播放。视频流平台解析请求并启动相…

设计公司图纸防泄密|图纸加密软件推荐

随着信息技术的快速发展&#xff0c;设计行业面临着前所未有的挑战和机遇。然而&#xff0c;随着设计图纸的电子化存储和传输越来越普遍&#xff0c;如何确保图纸的安全性、防止泄密成为了一个亟待解决的问题。针对这一问题&#xff0c;设计行业专用图纸加密软件应运而生&#…

2024中国(重庆)机器人展览会8月举办

2024中国(重庆)机器人展览会8月举办 邀请函 主办单位&#xff1a; 中国航空学会 重庆市南岸区人民政府 招商执行单位&#xff1a; 重庆港华展览有限公司 2024中国重庆机器人展会将汇聚机器人全产业链知名企业&#xff0c;世界科技领先的生产制造企业与来自多个国家和地区…

测试人的福音:开源流量回放工具快速上手实践

笔者前段时间在参加测开大会时了解到了一款开源的自动化回归测试工具 AREX。主要是通过复制线上真实流量到测试环境进行回归测试&#xff0c;同时还做到了接口返回值的比对和写接口的验证&#xff0c;回放不会产生真实的数据或者调用&#xff0c;都是基于 Mock 数据的&#xff…

自动驾驶系统中的数据闭环:挑战与前景

目录 自动驾驶概况 1.1自动驾驶分级 1.2自动驾驶国内发展 ​1.3自动驾驶架构模型 数据闭环的意义 2.1 搜集corner case的数据 2.2 提高模型的泛化能力 2.3 驱动算法迭代 数据闭环落地的痛点及对策 3.1 数据采集和使用的合规性问题 3.2 数据确权问题 3.3 数据采集…

Modbus TCP转CAN网关在不同行业中的应用以及其使用上的优势

倍讯科技Modbus TCP转CAN网关通常被用于工业自动化领域&#xff0c;特别是在需要连接现有Modbus TCP网络和CAN总线设备的场景中。以下是该网关在不同行业中的应用以及其使用上的优势&#xff1a; 1. 制造业&#xff1a; - 在制造业中&#xff0c;各种类型的设备和机器通常使用不…

动态NAT

在上一章静态NAT中我们提过了&#xff0c;静态NAT只能一对一映射&#xff0c;无法有效缓解IPV4地址池紧张的问题&#xff0c;那么我们今天来学习一个新的技术——动态NAT&#xff0c;来解决这个问题。 第一章 1.1 动态NAT工作流程 动态NAT基于地址池来实现私有地址和公有地址的…

揭秘奔丰数字化运营管理

奔丰是一家专注于工程机械车辆座椅的生产商。奔丰借助蓝卓制造协同管理系统&#xff0c;进行设备数据采集、监控、预测性维护&#xff0c;全面规范企业资源和生产流程管理等&#xff0c;突破传统管理瓶颈&#xff0c;提升工厂整体效益&#xff0c;实现数字化运营。 在汽车智能化…

C++入门指南(中)

目录 ​编辑 一、C关键字(C98) 二、命名空间 2.1 域 2.2 命名空间域 2.1 命名空间定义 2.2 命名空间使用 三、C输入&输出 四、缺省参数 4.1 缺省参数概念 4.2 缺省参数分类 五、函数重载 5.1 函数重载概念 5.2 C支持函数重载的原理--名字修饰(name Mangling)…

x264 帧类型决策模块 x264_slicetype_analyse 函数原理分析

======================================================================== ======================================================================== x264帧类型决策 x264 的帧类型决策可以参考:

嵌入式学习第三十三天!(二叉树)

1. 树的概念&#xff1a; 1. 树&#xff1a;由n个结点组成的有限集&#xff0c;有且只有一个根结点&#xff08;由根结点可以访问后继结点&#xff09;&#xff0c;其他结点只有一个前驱结点&#xff0c;但可以有多个后继结点&#xff08;一对多&#xff09;。当n 0时&#xf…

ST表(静态RMQ问题)

static Range Max/Min Query ST表 利用的是动态规划的思想 状态&#xff1a; //st[i][j]-->区间长度为1<<j&#xff0c;在区间[i,i1<<j-1]上的最值 状态转移方程&#xff1a; st[i][j]max(st[i][j-1],st[i(1<<j-1)][j-1]);#include <iostream> #inc…

基于51单片机的传送带调速产品计数proteus仿真设计+程序+设计报告+原理图+讲解视频

这里写目录标题 1. 主要功能&#xff1a;2. 讲解视频&#xff1a;3. 仿真4. 程序代码5. 设计报告6. 原理图7. 设计资料内容清单&&下载链接资料下载链接&#xff08;可点击&#xff09;&#xff1a; 基于51单片机传送带计数仿真设计( proteus仿真程序设计报告原理图讲解…

processing完整教程

概述&#xff1a;processing在我眼里就是libgdx的高度封装&#xff0c;如果各位会libgdx&#xff0c;学processing应该可以说是无师自通&#xff0c;当然processing是java语言那边的。 processing是什么&#xff1f; 官网是这样解释的&#xff1a;Processing 是一本灵活的软件…

电脑配置不足的情况下,如何高效运行ANSYS?

ANSYS是一款功能强大的工程仿真软件&#xff0c;它对电脑配置有较高的要求。ANSYS对电脑配置要求高&#xff1f;ansys电脑带不动怎么办&#xff1f;ansys卡住了怎么解决&#xff1f;今天这篇文章一起来看看吧。 当电脑配置不足时&#xff0c;运行ANSYS可能会出现以下情况&…