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

网站开发三剑客百度官网推广平台

网站开发三剑客,百度官网推广平台,网站设置字体样式,南宁网站建设搭建Vue开发一个导入数据的组件&#xff0c;以下具体说明整个流程和相关知识点 需求是开发一个数据导入组件&#xff0c;此组件是一个公共组件&#xff0c;而且是个常用组件&#xff0c;在很多功能页面上都会用到。 1.导入文件组件 开发 <template><div class"con…

Vue开发一个导入数据的组件,以下具体说明整个流程和相关知识点

需求是开发一个数据导入组件,此组件是一个公共组件,而且是个常用组件,在很多功能页面上都会用到。

1.导入文件组件 开发

<template><div class="content"><div class="item"><span style="color: red">*</span><span style="padding-right: 10px">选择文件</span><input ref="excel-upload-input" class="excel-upload-input" type="file" accept=".xlsx, .xls"@change="handleClick" /><el-button icon="el-icon-upload2" @click="uploadFile">上传</el-button><div style="padding: 10px 10px 0 60px"><span v-if="rawFile" style="padding-left: 10px; color: #1890ff" @click="openFile">{{ rawFile.name }}</span><span v-if="rawFile" style="padding-left: 5px; cursor: pointer" @click="cancelFile"><iclass="el-icon-delete"></i></span></div></div><div class="item download"><span style="cursor: pointer" @click="downloadMdule">EXCEL模板下载</span></div><div class="item"><p>注意</p><p>1、数据应该严格按照模板样式填写</p><p>2、导入模板中带*号字段均要填写</p></div><div style=" display: flex; justify-content: flex-end; padding-top: 10px;width: 100%;  "><el-button @click="close">取 消</el-button><el-button type="primary" @click="submit" :loading="loading">确 定</el-button></div></div>
</template><script>
export default {name: 'importWork',data() {return {rawFile: null,loading: false};},props: {tempUrl: "",},methods: {downloadMdule() {window.open(this.tempUrl, "_blank");},uploadFile() {this.$refs["excel-upload-input"].click();},// 上传的文件handleClick(e) {console.log(e);const files = e.target.files;const rawFile = files[0]; // only use files[0]const isSizeValid = rawFile.size / 1024 <= 100; // Maximum size: 500kif (!isSizeValid) {this.errorTip("文件过大,不能超过100k");return;}if (!rawFile) return;this.upload(rawFile);},upload(file) {this.rawFile = file;console.log(file);},async submit() {if (!this.rawFile) {this.errorTip("请上传文件");return;}const formData = new FormData();formData.append("file", this.rawFile);this.loading = true;this.$emit("handle", formData, (res) => {this.loading = false;this.successTip(res.message);this.$emit("reload");this.rawFile = null;this.$refs["excel-upload-input"].value = "";});},close() {this.$emit("close");},cancelFile() {this.rawFile = null;this.$refs["excel-upload-input"].value = "";},}
}
</script>
<style lang="scss" scoped>
.content {padding: 0 20px;.excel-upload-input {display: none;z-index: -9999;}.item {padding: 10px 0;}.download {color: #1890ff;display: flex;justify-content: space-between;}
}
</style>

代码分析:

  • template 和 style 部分略过,这就是普通的上传文件Html的结构,如果这一块不会,那就去补习HTML

  • script 里面涉及到几个知识点:

    • props父组件向子组件传递数据的一种机制
      • 通过 props,父组件可以将数据传递给子组件,子组件则可以接收并使用这些数据。
      • 此处我接收的是一个 导入模版的字段,导入模版是啥,不解释
    • this.$refs["excel-upload-input"].click()
      • this.$refs 是一个用于直接访问 DOM 元素或子组件实例的对象。
      • 使用 this.$refs["excel-upload-input"].click() 时,通过 ref 属性获取 隐藏的上传文件输入框 元素,并手动触发它的 click 事件。
    • handleClick 方法 是文件框有变化时触发的,我这里是检测文件大小,实际上可以检测文件格式等等。
      • 方法内,最后将上传文件的对象,赋值给 rawFile 属性,方便后面调用
    • this.$emit("handle", formData, (res) => {...} 很重要, 很重要, 很重要
      • this.$emit子组件向父组件传递事件和数据的一种方式。
      • 通过 $emit,子组件可以触发一个自定义事件,并传递数据给父组件,父组件则可以监听这个事件并做出相应的处理。
        • 由于导入数据的功能肯定是每个父组件独立的功能,很少情况下,所有上传数据会请求到同一接口,但不排除这种情况,此处不做计较
        • 此次导入数据的逻辑就是,上传组件只负责上传,处理数据是父组件自己处理,然后将结果给上传组件,上传组件根据结果,来显示成功和失败。
      • handle 是父组件的定义的事件,后续会说明。
      • formData 是传递的数据
      • (res) => {} 是回调函数,父组件在处理完事件后调用该回调函数并传递结果。父组件使用,会在下面展示。

其他的相关代码,不做解释,都是常规操作

2.调用方,即父组件 调用

  <el-dialog title="批量导入" :visible.sync="importDataDialog.dialogVisible" width="1000px" :close-on-click-modal="false"><importData v-if="importDataDialog.tempUrl" @close="closeImportData" @handle="handleImportData"@reload="reloadImportData" ref="importDataRef" :tempUrl="importDataDialog.tempUrl"></importData></el-dialog><script>//处理批量导入async handleImportData(formData, callback) {console.log(formData)let res = await importOrderData(formData);callback(res);},
</script>

父组件调用就很简单了

  • importDataDialog.tempUrl 是模版url,我用if 判断,如果没值,上传组件不加载,因为需求是必须让用户先下载模版
  • :tempUrl="importDataDialog.tempUrl" 即父组件给子组件传递数据,子组件用props 获取
  • @handle 父组件监听事件,等待子组件的调用
  • handleImportData 是父组件监听后,处理上传数据的方法
    • Vue.js 中,async 和 await 是 JavaScript 中用于处理异步操作的语法糖。可以使用 async 和 await 来处理异步操作,比如 API 请求、定时器等。
    • 上传数据处理完成后,返回结果res 通过 回调函数 callback 传统数据
    • callback 接收到数据,进行相应的判断,提示等等逻辑

上述一个最简单的公用上传组件开发完成,接下来就是调试。然后根据用户需求,继续完善优化组件。


文章转载自:

http://zePVrVrC.ypxyL.cn
http://g39TXm30.ypxyL.cn
http://vAyP5EuX.ypxyL.cn
http://nKfZAXpM.ypxyL.cn
http://ivCFFETc.ypxyL.cn
http://UByoQeKY.ypxyL.cn
http://I8gj20Rj.ypxyL.cn
http://3uG6ZjID.ypxyL.cn
http://Lm1QS5ce.ypxyL.cn
http://n3mONeyj.ypxyL.cn
http://jbM4wrc7.ypxyL.cn
http://xE0gKOmr.ypxyL.cn
http://Gwovj645.ypxyL.cn
http://lKbB7n1U.ypxyL.cn
http://NOD8QEP0.ypxyL.cn
http://dfOvwWAc.ypxyL.cn
http://n3WEl0og.ypxyL.cn
http://H7AvYPR0.ypxyL.cn
http://PR2XoThm.ypxyL.cn
http://RJ51Z3ZX.ypxyL.cn
http://jHwPepIy.ypxyL.cn
http://pgo9QJUW.ypxyL.cn
http://SGmYKpDm.ypxyL.cn
http://KjVPDZdZ.ypxyL.cn
http://htYTb6G9.ypxyL.cn
http://fN82MlG3.ypxyL.cn
http://viePUoFN.ypxyL.cn
http://COeqBcq6.ypxyL.cn
http://T8XJzHz1.ypxyL.cn
http://gJrDjB9S.ypxyL.cn
http://www.dtcms.com/wzjs/688426.html

相关文章:

  • 网站设计摘要 优帮云友情链接实例
  • 经营网站备案信息wordpress主题少儿教育类
  • 有没有做粤菜的网站ppt模板下载免费完整版简约
  • 公众号网站wordpress做成app
  • 用什么来网站开发好湖北工程建设信息网站
  • 如何提高网站访问速度代理网址ip
  • 网站描述作用注册公司需要几个人员
  • 深圳网站设计廊坊公司哪个搜索引擎最好
  • 自建站推广html电影网站模板下载
  • 用asp做网站优势wordpress 附件id
  • 某网站seo诊断分析和优化方案wordpress自定义搜索
  • 做深度的互联网站seo网站建设
  • 如何建设大型电子商务网站网站建设及推广外包
  • 联系方式 响应式网站汽车网站建设论坛
  • 购物网站制作怎么做培训课程设计
  • 网站建设项目的工作分解手机前端开发软件工具
  • 人才网站开发方案建设专业网站运营团队
  • 正品手表网站wordpress导航字体大小
  • 网站建设顾问英语公司 网站 苏州
  • 网站建设公司浙江山东建设厅网站是什么
  • 网站怎么做能赚钱吗电子商城网站建议书
  • 玩具网站建设服务公司如何查注册商标是别人注册过的
  • 怎么在ppt上做网站百度问一问官网
  • 丹阳做网站的yy直播间
  • 昆明网站建设方案外包毕业设计做系统网站好
  • 网站设计考虑因素打开自己的网站是别人的域
  • 上海网站制作培训百度招聘2022年最新招聘
  • 南宁做棋牌网站的公司国内最好的crm软件
  • 做关于车的网站好wordpress自定义json
  • 做本地化的返利网站怎么样网站服务器查询工具