IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue+qrcodejs2 动态生成二维码并下载 -> 正文阅读

[JavaScript知识库]vue+qrcodejs2 动态生成二维码并下载

安装依赖

npm install --save qrcodejs2

vue页面引用

<script>
	import QRCode from 'qrcodejs2'
	import axios from 'axios'
	import JSZip from 'jszip'
	import FileSaver from 'file-saver'
	export default{
	  components:{
	    QRCode
	  },
	}
</sscript>

HTML vue语法循环生成二维码 并动态生成装二维码盒子在这里插入图片描述

用后台抛的数据循环生成二维码

    async returnCode(row){
      this.CodeDialog = true
      this.title = '导出二维码'
      try {
        let res = await this.$operationRequest.operationRequest({parkId:row.ParkinglotID},'GetParkinglotQRCode','GET');
        let jsonData = JSON.parse(res.datas)
        this.CodeList = JSON.parse(jsonData.list)
        this.CodeList.forEach((item,index)=>{
          //在dom加载完成后获取dom
          this.$nextTick(()=>{
            let dom = document.getElementById('qrcode'+index)
            //每次生成前先将二维码盒子里面的二维码清空
            dom.innerHTML = ''
            //将dom 和 二维码连接传过去
            this.qrcode(dom,item)
          })
        })
      } finally {

      }
    },

    //生成二维码
    qrcode (dom,val) {
      let qrcode = new QRCode(dom, {
        width: 200,  // 设置宽度
        height: 200, // 设置高度
        text: 'https://parks.borchaw.com/sp_mb/'+val.QRCode
      })
    },

批量下载(处理为一个压缩包)或当下载二维码


    //获取文件
    getFile(url) {
      return new Promise((resolve, reject) => {
        axios({method: 'get', url, responseType: 'arraybuffer',}).then((data) => {
          resolve(data.data)
        }).catch((error) => {
          reject(error.toString())
        })
      })
    },

//下载二维码
    DownCodeImg(val){
      //判断有val就是单个下载 没有则多个下载
      if(val){
        let dom = document.getElementById(val)
        // 获取dom二维码图片的连接
        let url =  dom.childNodes[1].src  //codeIMG  要下载的路径
        let link = document.createElement('a')
        // 这里是将url转成blob地址,
        fetch(url).then(res => res.blob()).then(blob => { // 将链接地址字符内容转变成blob地址
          link.href = URL.createObjectURL(blob)
          link.download = 'pic'
          document.body.appendChild(link)
          link.click()
        })
      } else {
        const zip = new JSZip();
        const promises = [];
        this.CodeList.forEach((item,index) => {
          let dom = document.getElementById('qrcode'+index)
          // 获取dom二维码图片的连接
          let url =  dom.childNodes[1].src  //codeIMG  要下载的路径
          const promise = this.getFile(url).then((data) => {
            //截取后缀名(注意重命名一定要加上原来图片的后缀,否则下载出来的文件就是错误的)
            let nameList = url.split('.')
            let fileName = item.devName+index+'.png'
            zip.file(fileName, data, { binary: true })//文件名、文件流、是否为二进制
          });
          promises.push(promise)
        });

        //等待所有文件添加完进行打包
        Promise.all(promises).then(() => {
          zip.generateAsync({ type: 'blob' }).then((content) => {
            //利用file-saver保存文件  自定义文件名
            FileSaver.saveAs(content, this.Down_pack_name +'.zip')
          })
        }).catch((err) => {
          this.$message.error(err || '文件压缩失败')
        })
      }
    },
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-24 00:26:06  更:2022-03-24 00:27:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:33:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码