图片地址生成二维码、vue-print-nb打印插件

本文介绍了如何在Vue项目中使用npm包`qrcode`生成二维码,并通过`vue-print-nb`实现页面内容的打印功能。展示了如何导入库、创建弹层展示二维码以及设置打印按钮和后端API调用的示例。
摘要由CSDN通过智能技术生成

1.下包

npm i qrcode

2.导包

import QrCode from 'qrcode'

3.制作一个弹层

<el-dialog :visible.sync="showCode" title="二维码">
      <!-- 放置el-row主要是为了布局     -->
      <el-row type="flex" justify="center">
        <canvas ref="canvas" />
      </el-row>
    </el-dialog>

4.js代码

<script>
import QrCode from 'qrcode'
export default {
data() {
    return {
    userId: this.$route.params.id, // 直接将路由中的参数赋值给data中的属性
    showCode: false // 控制显示二维码的弹层
    }
},
methods: {
showQrCode(url) {
      // url存在的情况下才弹出层
      if (url) {
        this.showCode = true // 数据更新了,但是弹层不会立刻出现,页面渲染是异步的
        this.$nextTick(() => {
        // 此时可以确定有ref对象了
          QrCode.toCanvas(this.$refs.canvas, url) // 第一个参数是canvas的dom对象,第二个对象是转化成二维码的信息,转换成二维码
          // 如果转化的二维码信息 是一个地址的话,就会跳转到该地址,如果不是地址就会显示内容
        })
      } else {
        this.$message.warning('该用户还未上传头像')
      }
    }
}

打印

1.下包

npm i vue-print-nb

2.注册插件

import Print from 'vue-print-nb'
Vue.use(Print)

3.打印按钮

<el-row type="flex" justify="end">
          <!--    利用 v-print指令完成页面的打印     -->
          <el-button v-print="printObj" size="small" type="primary">打印</el-button>
        </el-row>

4.js

<script>
import { getPersonalDetail, getJobDetail } from '@/api/employees'
import { getUserDetailById } from '@/api/user'
export default {
  data() {
    return {
      printObj: {
        id: 'myPrint' // 打印区域的id,给打印区域起的id名字是myPrint
      },
      formData: {},
      userId: this.$route.params.id,
      type: this.$route.query.type // 打印类型
    }
  },
  // 创建完毕状态
  created() {
    this.type === 'personal' ? this.getPersonalDetail() : this.getJobDetail()
  },
  // 组件更新
  methods: {
    async getPersonalDetail() {
      this.formData = await getPersonalDetail(this.userId) // 获取个人基本信息
    },
    async getJobDetail() {
      const userInfo = await getUserDetailById(this.userId)
      const jobInfo = await getJobDetail(this.userId) // 获取个人基本信息
      this.formData = { ...userInfo, ...jobInfo }
    }
  }
}
</script>
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高艳艳0216

如果有用可以打赏小仙女噢!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值