安装
通过NPM安装
npm install vue-qart --save
插件应用
将vue-qart引入你的应用
import VueQArt from 'vue-qart'
new Vue({
components: {VueQArt}
})
在你的应用中这样使用vue-qart
<vue-q-art :config="config" :downloadButton="downloadButton"></vue-q-art>
data () {
return {
msg: 'Welcome to Your Vue.js App',
config: {
value: 'https://www.baidu.com',
imagePath: './examples/assets/logo.png',
filter: 'color'
},
downloadButton: false
}
}
组件参数
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
value | String | - | QR code表示的数据 |
imagePath | String | - | 合并图片的路径 |
filter | String | threshold | 定义一个图像过滤器,threshold或者color |
size | Number | 195 | 定义图像的大小,单位是px |
version | Number | 10 | QR code版本 (1 <= version <= 40) |
background | String | - | 生成背景色 |
fillType | String | scale_to_fit | 图片放置类型(fill 或者 scale to fit) |
动态生成二维码
cnpm install --save qrcodejs2
<template> <div> <el-table :data="tableData" style=" 100%"> <el-table-column prop="id" label="id" width="180"> </el-table-column> <el-table-column prop="name" label="姓名" width="180"> </el-table-column> <el-table-column prop="address" label="地址"> </el-table-column> <el-table-column fixed="right" label="二维码" width="100"> <template slot-scope="scope"> <el-button @click="checkEwmClick(scope.row)" type="text" size="small">查看</el-button> </template> </el-table-column> </el-table> <el-dialog title="二维码" :visible.sync="dialogQrcodeVisible" width="30%" :before-close="handleDialogQrcodeClose"> <div style="text-align:center; margin-left:auto; margin-right:auto;"> <div id="qrcodeshow" ref="qrCodeUrl"></div> <!-- 创建一个div,并设置id为qrcode --> </div> <span slot="footer" class="dialog-footer"> <el-button type="primary" @click="dialogQrcodeVisible = false">关闭</el-button> </span> </el-dialog> </div> </template> <script> import QRCode from 'qrcodejs2'// 引入qrcode export default { name: 'test', mounted () { // 需要先显示出来,然后再隐藏掉; 否则动态生成的二维码,第一次会报错,对象找不到。可能是跟初始化有关系,没有显示出来的时候并没有初始化HTML this.dialogQrcodeVisible = false }, data () { return { dialogQrcodeVisible: true, tableData: [{ id: '1', name: '百度', address: '上海市普陀区金沙江路 1518 弄', url: 'http://www.baidu.com' }, { id: '2', name: 'QQ', address: '上海市普陀区金沙江路 1517 弄', url: 'http://www.qq.com' }, { id: '3', name: '163.COM', address: '上海市普陀区金沙江路 1519 弄', url: 'http://www.163.com' }, { id: '4', name: '淘宝', address: '上海市普陀区金沙江路 1516 弄', url: 'http://www.taobao.com' }] } }, methods: { checkEwmClick (url) { let vm = this vm.$nextTick(() => { vm.dialogQrcodeVisible = true let obj = document.getElementById('qrcodeshow') obj.innerHTML = '' vm.genarateQrcode(url) }) }, handleDialogQrcodeClose () { this.dialogQrcodeVisible = false }, genarateQrcode (url) { let qrcode = new QRCode(this.$refs.qrCodeUrl, { 50, height: 50, text: url, // 二维码地址 colorDark: '#000', colorLight: '#fff', correctLevel: QRCode.CorrectLevel.H }) console.log('qrcode = ' + JSON.stringify(qrcode)) } } } </script>