当前位置: 首页 > news >正文

Element-ui使用上传时弹框选择文件类型

实现效果

1,点击上传,上传文件;
在这里插入图片描述
2,选择文件;
在这里插入图片描述
3,弹框选择文件类型;
在这里插入图片描述
在这里插入图片描述
4,选择类型后确定上传;
在这里插入图片描述

一,上传

跳过;

二,定义弹框+下拉框

1,定义属性

dialogVisible: false, //初始页面关闭弹框

在这里插入图片描述
2,定义弹框

el-autocomplete 组件在 input输入框中,’带输入建议‘;

dialogVisible:属性; @close=“decisionTyoe(false)”:点击×时调用关闭函数传入false,停止上传;
@click=“decisionTyoe(false)”:点击取消时调用关闭函数传入false,停止上传;
@click=“decisionTyoe(true)”:点击取消时调用关闭函数传入false,上传文件;

    <el-dialog title="选择类型" :visible.sync="dialogVisible" @close="decisionTyoe(false)"><el-autocomplete class="feed-word-type" v-model="m_arrWordTypeValue":fetch-suggestions="doWordTypeValue"@select="handleQueryWordType"><template slot="prepend">文件类型</template></el-autocomplete><span slot="footer" class="dialog-footer"><el-button @click="decisionTyoe(false)">取 消</el-button><el-button type="primary" @click="decisionTyoe(true)">确 定</el-button></span></el-dialog>

3,函数定义
注意!!!一定要开启监听,原因是后续的方法需要根据监听来判断是否选择了文件类型(取消,确定)

    decisionTyoe(flag){this.dialogVisible= false;// 开启监听this.$emit('dialog-closed', flag);}

4,下拉框框函数定义

	//下拉框数据doWordTypeValue(queryString, cb) {var results = [{value: 'IOT',file_type: 1,}, {value: 'MCU',file_type: 2,}, {value: '时序',file_type: 3,}]// 调用 callback 返回建议列表的数据cb(results);},//选择下拉框handleQueryWordType(inItem){this.m_arrWordTypeValue = inItem.value;this.extraData.file_type = inItem.file_type;},

三,上传合并弹框

1,弹框选择要在上传后台前,所以要使用到 上传组件的before-upload属性(上传文件之前的钩子,参数为上传的文件,若返回 false 或者返回 Promise 且被 reject,则停止上传。)

              <el-upload:action="m_uploadUrl":auto-upload="true":data="extraData":show-file-list="false":before-upload="doImportBefore":on-success="doImportSuccess"><i class="el-icon-upload2">上传</i></el-upload>

2,定义doImportBefore函数来选择上传文件与打开弹框

    doImportBefore(inFile) {// 打开对话框this.dialogVisible = true;// 需要来进行等待用户弹框选择文件类型;// 使用Promise函数等待监听dialog-closedreturn new Promise((resolve, reject) => {// 当用户点击了确定或取消时触发监听,this.$once('dialog-closed', (confirmed) => {if (confirmed) {console.log('用户点击了确认按钮');///// 文件的逻辑处理let nPos = inFile.name.lastIndexOf('.');if (nPos < 0) {this.$message.error('支持的文件格式 => dat 或 bin');resolve(false);return;}let strExt = inFile.name.substring(nPos + 1);strExt = strExt.toLowerCase();if (strExt !== 'dat' && strExt !== 'bin') {this.$message.error('支持的文件格式 => dat 或 bin');resolve(false);return;}///// 直接设置异步加载状态...this.m_bIsLoading = trueresolve(true);return;} else {this.$message.error('用户取消了上传');reject(false);return;}});});}
http://www.lryc.cn/news/359256.html

相关文章:

  • 原生小程序一键获取手机号
  • ARM虚拟机安装OMV
  • 【协议开发系列】梳理关于TCP和UDP两种协议的区别和使用场景
  • vue blob实现自定义多sheet数据导出到excel文件
  • Python—面向对象小解(3)
  • Nginx超时时间
  • Imgs,GT,Edge,Gradient_all,Gradient_Foreground
  • 自学成才Flutter 弹性布局、线性布局
  • Part 3.1 深度优先搜索
  • 前端Vue小兔鲜儿电商项目实战Day03
  • ORACLE 查询SQL优化
  • Ansible03-Ansible Playbook剧本详解
  • Qt-qrencode生成二维码
  • 长安链使用Golang编写智能合约教程(三)
  • Vercel deploy- Nextjs project error-URL link-env variable
  • Java | Leetcode Java题解之第123题买卖股票的最佳时机III
  • Ubuntu22.04之扩展并挂载4T硬盘(二百三十三)
  • Redis实现延迟队列
  • 如何准确查找论文数据库?
  • 翻译《The Old New Thing》- What a drag: Dragging a virtual file (IStream edition)
  • 【FPGA】Verilog语言从零到精通
  • unity打包的WebGL部署到IIS问题
  • GPT-4o:人工智能的新里程碑
  • 发现一个ai工具网站
  • 第二十五章新增H5基础(以及视频~兼容)
  • [英语单词] production quality
  • windows安装nodeJs,以及常用操作
  • MySql part1 安装和介绍
  • SpringBoot打war包并配置外部Tomcat运行
  • 2024.5.31每日一题