<template> <div class="app-preset-qrcode"> <template v-if="QRCodeConfig.url"> <vue-qr class="app-vue-qr" :size="QRCodeConfig.size" :text="QRCodeConfig.url" :bgSrc="QRCodeConfig.bgSrc" :margin="QRCodeConfig.margin" :backgroundColor="QRCodeConfig.backgroundColor" :logoSrc="QRCodeConfig.logoSrc" :logoMargin="QRCodeConfig.logoMargin" :logoBackgroundColor="QRCodeConfig.logoBgColor" :logoCornerRadius="QRCodeConfig.logoRadius" :whiteMargin="QRCodeConfig.whiteMargin" :callback="callback" > </vue-qr> </template> </div> </template> <script lang="ts"> import { Vue, Component, Prop } from 'vue-property-decorator'; import vueQr from 'vue-qr'; @Component({ components: { vueQr }, }) export default class AppPresetQrcode extends Vue { /** * 内容 value数据格式:对象类型的JSON字符串,参数类型与QRCodeConfig一致:"{ "url": "http://www.baidu.com" }" * * @type {string} * @memberof AppRawItem */ @Prop() public value?: any; /** * ibiz-qr-code组件可传参数 * @param {number} size 二维码大小,包含边框 * @param {string} url 二维码内容 * @param {string} bgSrc 背景图片 * @param {number} margin 二维码外边距 * @param {string} backgroundColor 背景颜色 * @param {string} logoSrc 中央图标logo地址 * @param {number} logoMargin logo周围的空白边框 * @param {string} logoBgColor logo边框的背景色 * @param {number} logoRadius logo边框圆角半径 * @param {boolean} whiteMargin 背景图外是否设置白色边框 * @type {*} * @memberof AppQRCode */ public QRCodeConfig: { size?: number; url?: string; bgSrc?: string; margin?: number; backgroundColor?: string; logoSrc?: string; logoMargin?: number; logoBgColor?: string; logoRadius?: number; whiteMargin?: boolean; } = {}; /** * 二维码生成的回调函数 * @type {*} * @memberof AppQRCode */ public callback(event: any) { // TODO } /** * 获取二维码数据 * @type {*} * @memberof AppQRCode */ public created() { this.getQRCodeData(); } /** * 获取二维码绘制数据 * * @type {*} * @memberof AppQRCode */ public getQRCodeData() { if (this.value && typeof this.value == 'string') { const value = JSON.parse(this.value); const { size, url, bgSrc, margin, backgroundColor, logoSrc, logoMargin, logoBgColor, logoRadius, whiteMargin } = value; this.QRCodeConfig = { size, url, bgSrc, margin, backgroundColor, logoSrc, logoMargin, logoBgColor, logoRadius, whiteMargin, }; // TODO } } } </script> <style lang='less'> @import './app-preset-qrcode.less'; </style>