安裝
通過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="width: 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, {
width: 50,
height: 50,
text: url, // 二維碼地址
colorDark: '#000',
colorLight: '#fff',
correctLevel: QRCode.CorrectLevel.H
})
console.log('qrcode = ' + JSON.stringify(qrcode))
}
}
}
</script>
