金民工程相关设置
This commit is contained in:
93
src/project/jinmin/wxworkKit.js
Normal file
93
src/project/jinmin/wxworkKit.js
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
import http from "axios";
|
||||||
|
|
||||||
|
const timer = {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 企业微信工具类
|
||||||
|
* @param config 应用配置
|
||||||
|
* @param agentSignURL 授权url
|
||||||
|
* @param apiList 授权的接口集合
|
||||||
|
*/
|
||||||
|
class wxworkKit {
|
||||||
|
constructor() {
|
||||||
|
this.agentSignURL = ""
|
||||||
|
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
|
||||||
Reference in New Issue
Block a user