From a03bebaf38db15712f2ba17ca4034e6e88f70d30 Mon Sep 17 00:00:00 2001 From: aixianling Date: Tue, 23 Nov 2021 16:07:39 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=89=E6=8B=A9=E4=BA=BA=E5=91=98=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E5=AE=8C=E6=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/addMeeting.vue | 607 +++++++++--------- src/pages/loading.vue | 5 +- src/store/index.js | 56 +- 3 files changed, 356 insertions(+), 312 deletions(-) diff --git a/src/apps/AppMeetingNotice/components/addMeeting.vue b/src/apps/AppMeetingNotice/components/addMeeting.vue index 40173fda..0e675ef1 100644 --- a/src/apps/AppMeetingNotice/components/addMeeting.vue +++ b/src/apps/AppMeetingNotice/components/addMeeting.vue @@ -9,13 +9,17 @@
*起止时间
- {{form.startTime.time}} - {{form.startTime.year}}年{{form.startTime.month}}月{{form.startTime.day}}日 周{{form.startTime.weekday}} + {{ form.startTime.time }} + {{ form.startTime.year }}年{{ form.startTime.month }}月{{ + form.startTime.day + }}日 周{{ form.startTime.weekday }}
- {{form.endTime.time}} - {{form.endTime.year}}年{{form.endTime.month}}月{{form.endTime.day}}日 周{{form.endTime.weekday}} + {{ form.endTime.time }} + {{ form.endTime.year }}年{{ form.endTime.month }}月{{ form.endTime.day }}日 周{{ + form.endTime.weekday + }}
@@ -34,14 +38,16 @@
- +
*参会人
@@ -52,7 +58,9 @@
参会提醒
- {{ form.noticeBefore !=null ? $dict.getDict('meetingNoticeBefore')[form.noticeBefore]["dictName"] : "请选择"}} + {{ + form.noticeBefore != null ? $dict.getDict('meetingNoticeBefore')[form.noticeBefore]["dictName"] : "请选择" + }}
@@ -62,7 +70,9 @@
确认提醒
- {{form.noticeAfter !=null ? $dict.getDict('meetingNoticeAfter')[form.noticeAfter]["dictName"] : "请选择"}} + {{ + form.noticeAfter != null ? $dict.getDict('meetingNoticeAfter')[form.noticeAfter]["dictName"] : "请选择" + }}
@@ -80,321 +90,328 @@ diff --git a/src/pages/loading.vue b/src/pages/loading.vue index 87849e97..02daf34a 100644 --- a/src/pages/loading.vue +++ b/src/pages/loading.vue @@ -33,7 +33,7 @@ export default { } }, methods: { - ...mapActions(['getToken', 'getAccount', 'agentSign', 'getUserInfo', 'getCode', 'closeAgent']), + ...mapActions(['agentSign']), redirectTo(path) { let {query, hash} = this.$route delete query.app @@ -60,6 +60,9 @@ export default { }) } }, + onLoad() { + this.agentSign(this.$route.query) + }, onShow() { this.getApps() this.result = { diff --git a/src/store/index.js b/src/store/index.js index 2a52f0b4..87f9581a 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -5,7 +5,7 @@ import http from '../common/axios' import CryptoJS from '../utils/crypto-js' Vue.use(Vuex) -let agentSignURL = "", apiList = [], agentConfig = {} +let agentSignURL = "", apiList = [] const store = new Vuex.Store({ state: { token: "", @@ -30,7 +30,7 @@ const store = new Vuex.Store({ state.openUser = user }, getConfig(state, params) { - Object.keys(params).map(e => state[e] = params[e]) + state.config = params }, bindAccount(state, params) { //具备解决二次登录,绑定手机,token等问题 @@ -61,7 +61,7 @@ const store = new Vuex.Store({ }, redirectCode(state, url = location.href) { let REDIRECT_URI = encodeURIComponent(url), - corpid = state.corpId || agentConfig?.corpid + corpid = state.corpId const redirectTo = cid => { location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base#wechat_redirect' .replace(/CORPID/g, cid) @@ -71,7 +71,7 @@ const store = new Vuex.Store({ redirectTo(corpid) } else { store.dispatch("agentSign").then(() => { - corpid = state.corpId || agentConfig?.corpid + corpid = state.corpId redirectTo(corpid) }) } @@ -198,7 +198,7 @@ const store = new Vuex.Store({ }) }, getCode(store, url) { - if (agentConfig?.corpid) { + if (store.state.config?.corpid) { store.commit('redirectCode', url) } else { store.dispatch('agentSign').then(() => { @@ -232,17 +232,20 @@ const store = new Vuex.Store({ }) } }, - agentSign(state) { - let url = window.location.href + agentSign(state, params) { + let url = window.location.href, + {corpId, suiteId} = state.state.config if (agentSignURL == url) { return Promise.resolve() } else { agentSignURL = url - return http.post("/app/wxcp/portal/agentSign", null, { - params: {url} + params = params || {corpId, suiteId} + return http.post("/app/wxcptp/portal/agentSign", null, { + params: {...params, url} }).then(res => { if (res?.data) { - let params = { + let config = { + ...params, debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 beta: true,// 必须这么写,否则wx.invoke调用形式的jsapi会有问题 corpid: res.data.corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致 @@ -252,8 +255,8 @@ const store = new Vuex.Store({ signature: res.data.signature,// 必填,签名,见 附录-JS-SDK使用权限签名算法 ...res.data, } - agentConfig = params - state.commit("getConfig", {corpId: params.corpid}) + state.commit("getConfig", config) + return config } }).catch(err => { console.error(err) @@ -261,11 +264,11 @@ const store = new Vuex.Store({ } }, injectJWeixin(state, ops) { - const inject = jsApiList => new Promise((resolve, reject) => { + const inject = (jsApiList, config = state.state.config) => new Promise((resolve, reject) => { setTimeout(() => { let sdk = wx?.agentConfig ? wx : jWeixin sdk?.agentConfig({ - ...agentConfig, jsApiList, + ...config, jsApiList, success: res => resolve(res), fail: err => { console.error(err) @@ -275,7 +278,7 @@ const store = new Vuex.Store({ }, 500) }) return new Promise((resolve, reject) => { - state.dispatch("agentSign").then(() => { + state.dispatch("agentSign").then(config => { if (typeof ops == "object") { ops?.map(api => { if (!apiList?.includes(api)) apiList.push(api) @@ -283,7 +286,7 @@ const store = new Vuex.Store({ } else { if (!apiList?.includes(ops)) apiList.push(ops) } - inject(apiList).then(r => resolve(r)).catch(err => reject(err)) + inject(apiList, config).then(r => resolve(r)).catch(err => reject(err)) }) }) }, @@ -318,6 +321,27 @@ const store = new Vuex.Store({ }, 500) }) }, + selectEnterpriseContact(state) { + return new Promise(resolve => { + state.dispatch("injectJWeixin", "selectEnterpriseContact").then(() => { + setTimeout(() => { + let sdk = typeof wx?.invoke == 'function' ? wx : jWeixin + sdk?.invoke("selectEnterpriseContact", { + fromDepartmentId: -1, + mode: "multi", + type: ["user"] + }, res => { + if (res.err_msg == "selectEnterpriseContact:ok") { + if (typeof res.result == 'string') { + res.result = JSON.parse(res.result) + } + resolve(res.result) + } + }) + }, 500) + }) + }) + }, }, getters: { getDict: state => key => {