Browse Source
fix(qrcode): Fix the problem that the QR code cannot be dynamically generated (#974 )
* fix: Fix the problem that the QR code cannot be dynamically generated
* Fix the problem that the size of the QR code is automatically changed when dynamically generated
pull/980/head
江麻妞
5 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
20 additions and
7 deletions
src/components/Qrcode/src/Qrcode.vue
src/components/Qrcode/src/drawCanvas.ts
@ -4,7 +4,7 @@
< / div >
< / div >
< / template >
< / template >
< script lang = "ts" >
< script lang = "ts" >
import { defineComponent , watchEffect , PropType , ref , unref } from 'vue' ;
import { defineComponent , watch , PropType , ref , unref } from 'vue' ;
import { toCanvas , QRCodeRenderersOptions , LogoType } from './qrcodePlus' ;
import { toCanvas , QRCodeRenderersOptions , LogoType } from './qrcodePlus' ;
import { toDataURL } from 'qrcode' ;
import { toDataURL } from 'qrcode' ;
import { downloadByUrl } from '/@/utils/file/download' ;
import { downloadByUrl } from '/@/utils/file/download' ;
@ -93,11 +93,16 @@
} ) ;
} ) ;
}
}
watchEffect ( ( ) => {
/ / 监 听 参 数 变 化 重 新 生 成 二 维 码
setTimeout ( ( ) => {
watch (
createQrcode ( ) ;
props ,
} , 30 ) ;
( ) => {
} ) ;
createQrcode ( )
} ,
{
deep : true ,
}
)
return { wrapRef , download } ;
return { wrapRef , download } ;
} ,
} ,
@ -1,7 +1,15 @@
import { toCanvas } from 'qrcode' ;
import { toCanvas } from 'qrcode' ;
import type { QRCodeRenderersOptions } from 'qrcode' ;
import type { QRCodeRenderersOptions } from 'qrcode' ;
import { RenderQrCodeParams , ContentType } from './typing' ;
import { RenderQrCodeParams , ContentType } from './typing' ;
export const renderQrCode = ( { canvas , content , width = 0 , options = { } } : RenderQrCodeParams ) = > {
import { cloneDeep } from 'lodash-es' ;
export const renderQrCode = ( {
canvas ,
content ,
width = 0 ,
options : params = { }
} : RenderQrCodeParams ) = > {
const options = cloneDeep ( params )
// 容错率,默认对内容少的二维码采用高容错率,内容多的二维码采用低容错率
// 容错率,默认对内容少的二维码采用高容错率,内容多的二维码采用低容错率
options . errorCorrectionLevel = options . errorCorrectionLevel || getErrorCorrectionLevel ( content ) ;
options . errorCorrectionLevel = options . errorCorrectionLevel || getErrorCorrectionLevel ( content ) ;