新增营销系统、分销系统、会员功能、门店、提现功能
This commit is contained in:
98
hooks/useQrCodeScan.js
Normal file
98
hooks/useQrCodeScan.js
Normal file
@ -0,0 +1,98 @@
|
||||
/**
|
||||
* @name: useQrCodeScan
|
||||
* @author: kahu4
|
||||
* @date: 2024-01-22 14:01
|
||||
* @description:useQrCodeScan
|
||||
* @update: 2024-01-22 14:01
|
||||
* */
|
||||
// #ifdef H5
|
||||
import { Html5Qrcode } from "html5-qrcode"
|
||||
// #endif
|
||||
export const useQrCodeScan = () => {
|
||||
let html5QrCode
|
||||
|
||||
const qrCodeScan = (options = {}) => {
|
||||
let res
|
||||
// #ifdef H5
|
||||
res = _qrInH5(options)
|
||||
// #endif
|
||||
// #ifndef H5
|
||||
res = _qrInNonH5(options)
|
||||
// #endif
|
||||
return res
|
||||
}
|
||||
|
||||
/**
|
||||
* 非h5环境扫码
|
||||
* @param options
|
||||
* @return {Promise<unknown>}
|
||||
* @private
|
||||
*/
|
||||
const _qrInNonH5 = (options = {}) => {
|
||||
// #ifndef H5
|
||||
return new Promise((resolve, reject) => {
|
||||
const defaultOptions = {
|
||||
onlyFromCamera: false,
|
||||
scanType: ['barCode', 'qrCode', 'datamatrix', 'pdf417'],
|
||||
hideAlbum: false
|
||||
}
|
||||
uni.scanCode({
|
||||
...defaultOptions,
|
||||
...options,
|
||||
success: (res) => {
|
||||
resolve(res.result)
|
||||
},
|
||||
fail: (err) => {
|
||||
reject(err)
|
||||
}
|
||||
})
|
||||
})
|
||||
// #endif
|
||||
}
|
||||
|
||||
/**
|
||||
* H5环境扫码
|
||||
* @param options
|
||||
* @return {Promise<unknown>}
|
||||
* @private
|
||||
*/
|
||||
const _qrInH5 = async (options) => {
|
||||
// #ifdef H5
|
||||
return new Promise(async (resolve, reject) => {
|
||||
try { // 获取屏幕宽度
|
||||
const windowWith = window.innerWidth || document.documentElement.offsetWidth
|
||||
const windowHeight = window.innerHeight || document.documentElement.offsetHeight
|
||||
html5QrCode = new Html5Qrcode("reader");
|
||||
const cameras = await Html5Qrcode.getCameras();
|
||||
await html5QrCode.start(
|
||||
cameras[cameras.length - 1].id,
|
||||
{
|
||||
fps: 1,
|
||||
aspectRatio: windowHeight / windowWith
|
||||
},
|
||||
(decodedText, decodedResult) => {
|
||||
// do something when code is read
|
||||
resolve(decodedText)
|
||||
html5QrCode.stop()
|
||||
}
|
||||
)
|
||||
uni.hideLoading()
|
||||
} catch (e) {
|
||||
reject(e)
|
||||
}
|
||||
})
|
||||
// #endif
|
||||
}
|
||||
|
||||
/**
|
||||
* 取消扫描
|
||||
*/
|
||||
const cancelScan = () => {
|
||||
html5QrCode && html5QrCode.stop()
|
||||
}
|
||||
|
||||
return {
|
||||
qrCodeScan,
|
||||
cancelScan
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user