import html2canvas from 'html2canvas'
import QRCode from 'qrcode'
import { ScreenShot } from './typing'
import { getCWXSignature } from '@/api/common'
import wx from 'weixin-js-sdk'
/**
* @description 屏幕截图
* @param el 需要截图的dom节点
* @returns img img 的标签
*/
export const screenShot: ScreenShot = async (el) => {
const _el = typeof el === 'string' ? document.getElementById(el) : el
const scale = window.devicePixelRatio
// canvas.width = 1000 * scale;
// canvas.height = 1000 * scale;
// ctx.scale(scale, scale);
return new Promise((resolve) => {
html2canvas(_el!, {
useCORS: true,
scale
}).then(canvas => {
const img = document.createElement('img')
img.src = canvas.toDataURL('image/png')
img.style.width = '100vw'
resolve(img)
})
})
}
export const createQrcode = (text: string): Promise => {
console.log('text:', text)
return new Promise((resolve) => {
QRCode.toDataURL(text, { errorCorrectionLevel: 'H' }, function (err, url) {
if (err) {
throw new Error(err.message)
} else {
resolve(url)
}
})
})
}
/**
* @description 注册wx-open-launch-app
*/
export async function registerWxopenButton (request: () => any) {
return new Promise(async resolve => {
const { data } = await request()
console.log('register: wxopenButto:', data)
const { signature, appId, nonceStr, timestamp } = data
wx.config({
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印
appId, // 必填,公众号的唯一标识
timestamp, // 必填,生成签名的时间戳
nonceStr, // 必填,生成签名的随机串
signature, // 必填,签名
jsApiList: ['openLocation', 'getLocation'], // 必填,需要使用的JS接口列表
openTagList: ['wx-open-launch-app'] // 可选,需要使用的开放标签列表,例如['wx-open-launch-app']
})
wx.error((res: any) => {
console.log(res)
})
wx.ready(() => {
resolve(true)
})
})
}