Files
dvcp_v2_wxcp_app/library/project/hljmz/wxworkKit.js
2024-10-31 14:34:57 +08:00

94 lines
3.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import http from "axios";
const timer = {}
/**
* 企业微信工具类
* @param config 应用配置
* @param agentSignURL 授权url
* @param apiList 授权的接口集合
*/
class wxworkKit {
constructor() {
this.agentSignURL = ""
window.wx = window.jWeixin || window.wx
this.agentSign()
}
/**
* 授权jssdk在url上使用,并获取当前的企业微信应用配置
* @param params
* @returns {Promise<void>}
*/
agentSign(params = {}) {
//授权jssdk在url上使用,并获取corpId
const url = window.location.href
if (this.agentSignURL == url && this.config.corpId) {
return Promise.resolve()
} else {
this.agentSignURL = url
this.apiList = []
return http.post("https://mzt.hlj.gov.cn/mztweb/app/wxcp/portal/agentSign", null, {
params: {...params, url}
}).then(res => {
if (res?.data?.data) {
const config = {
...params,
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来若要查看传入的参数可以在pc端打开参数信息会通过log打出仅在pc端时才会打印。
beta: true,// 必须这么写否则wx.invoke调用形式的jsapi会有问题
corpId: res.data.corpid, // 必填企业微信的corpid必须与当前登录的企业一致
agentId: res.data.agentid, // 必填企业微信的应用id e.g. 1000247
timestamp: Number(res.data.timestamp), // 必填,生成签名的时间戳
nonceStr: res.data.nonceStr, // 必填,生成签名的随机串
signature: res.data.signature,// 必填,签名,见 附录-JS-SDK使用权限签名算法
...res.data.data
}
this.config = config
return config
}
}).catch(err => {
console.error(err)
})
}
}
/**
* 授权jssdk的使用
* @param apis 可以为数组或者单字符串
* @returns {Promise<unknown>}
*/
injectJWeixin(apis) {
const inject = (jsApiList) => new Promise((resolve, reject) => {
jsApiList = jsApiList || []
if (timer.injectJWeixin) {//节流设置,500ms内的多次请求合并到一处
clearTimeout(timer.injectJWeixin)
jsApiList = [...new Set([...this.apiList, ...jsApiList])]
this.apiList = jsApiList
}
timer.injectJWeixin = setTimeout(() => {
const sdk = wx?.agentConfig ? wx : jWeixin
console.log("agentConfig配置:")
console.log({...this.config, jsApiList})
sdk.agentConfig({
...this.config, jsApiList,
success: res => resolve(res),
fail: err => {
console.error(err)
reject(err)
}
})
}, 500)
})
return inject([apis].flat().filter(Boolean))
}
/**
* 判断是否为企业微信环境
* @returns {boolean}
*/
static isWxwork() {
return /wxwork/i.test(navigator.userAgent)
}
}
export default wxworkKit