From 7a37ee72adb05269def0cbcbd40d492b04f5ba2a Mon Sep 17 00:00:00 2001 From: xy <271556543@qq.com> Date: Tue, 27 Jun 2023 13:22:06 +0800 Subject: [PATCH] 2022.6.27 --- App.vue | 125 +++++++++-------- common/http.api.js | 9 +- manifest.json | 2 +- pages/certificate/certificate.vue | 27 +++- pages/map/map.vue | 215 +++++++++++++++++++++++------- store/index.js | 2 +- 6 files changed, 258 insertions(+), 122 deletions(-) diff --git a/App.vue b/App.vue index 69f1c1c..44f0dcf 100644 --- a/App.vue +++ b/App.vue @@ -2,72 +2,71 @@ const jwx = require('jweixin-module') export default { onLaunch: function() { - // let link = window.location.href; - // if (/code=/.test(link) || link.indexOf("code") > -1) { - // let temp = decodeURIComponent((new RegExp('[?|&]' + 'code' + '=' + '([^&;]+?)(&|#|;|$)').exec(link) || - // [, ''])[1].replace(/\+/g, '%20')) || null - // let lifeData = uni.getStorageSync('lifeData') - // if (!lifeData.vuex_token || !lifeData.vuex_userId) { - // this.$u.api.login({ - // code: temp - // }).then(res => { - // uni.setStorageSync('lifeData', { - // vuex_token: res.token, - // vuex_userId: res.user_id - // }) - // this.$u.vuex('vuex_token', res.token) - // this.$u.vuex('vuex_userId', res.user_id) - // }) - // } - // } else { - // this.$u.api.getAppId().then(res => { - // let redirect = encodeURIComponent(link.replace(/#\//, "")) - // window.location.href = - // `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${res.appid}&redirect_uri=${redirect}&response_type=code&scope=snsapi_base#wechat_redirect` - // }) - // } - this.$nextTick(() => { - let url = location.href.split('#')[0] - this.$u.api.share({ - url - }).then(res => { - jwx.config({ - debug: false, // 开启调试模式,调用的所有 api 的返回值会在客户端 alert 出来,若要查看传入的参数,可以在 pc 端打开,参数信息会通过 log 打出,仅在 pc 端时才会打印。 - appId: res.appId, - jsApiList: res.jsApiList, - nonceStr: res.nonceStr, - signature: res.signature, - timestamp: res.timestamp, - }) - jwx.ready(() => { - jwx.updateAppMessageShareData({ - title: '我是党史记录人-红色少年行 未成年人研学', // 分享标题 - desc: '我是党史记录人-红色少年行 未成年人研学', - link: url, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致 - imgUrl: 'http://h5.ali251.langye.net/res/share-img.jpeg', // 分享图标 - }); - jwx.updateTimelineShareData({ - title: '我是党史记录人-红色少年行 未成年人研学', // 分享标题 - desc: '我是党史记录人-红色少年行 未成年人研学', - link: url, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致 - imgUrl: 'http://h5.ali251.langye.net/res/share-img.jpeg', // 分享图标 - }); - jwx.onMenuShareAppMessage({ - title: '我是党史记录人-红色少年行 未成年人研学', // 分享标题 - desc: '我是党史记录人-红色少年行 未成年人研学', - link: url, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致 - imgUrl: 'http://h5.ali251.langye.net/res/share-img.jpeg', // 分享图标 - }); - jwx.onMenuShareTimeline({ - title: '我是党史记录人-红色少年行 未成年人研学', // 分享标题 - desc: '我是党史记录人-红色少年行 未成年人研学', - link: url, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致 - imgUrl: 'http://h5.ali251.langye.net/res/share-img.jpeg', // 分享图标 - }); + let link = window.location.href; + if (/code=/.test(link) || link.indexOf("code") > -1) { + let temp = decodeURIComponent((new RegExp('[?|&]' + 'code' + '=' + '([^&;]+?)(&|#|;|$)').exec(link) || + [, ''])[1].replace(/\+/g, '%20')) || null + let lifeData = uni.getStorageSync('lifeData') + if (!lifeData.vuex_token || !lifeData.vuex_userId) { + this.$u.api.login({ + code: temp + }).then(res => { + this.$u.api.user().then(res => { + this.$u.vuex('vuex_user', res) + }) + this.$u.vuex('vuex_token', res.token) + + let url = location.href.split('#')[0] + this.$u.api.share({ + url + }).then(res => { + jwx.config({ + debug: false, // 开启调试模式,调用的所有 api 的返回值会在客户端 alert 出来,若要查看传入的参数,可以在 pc 端打开,参数信息会通过 log 打出,仅在 pc 端时才会打印。 + appId: res.appId, + jsApiList: res.jsApiList, + nonceStr: res.nonceStr, + signature: res.signature, + timestamp: res.timestamp, + }) + jwx.ready(() => { + jwx.updateAppMessageShareData({ + title: '我是党史记录人-红色少年行 未成年人研学', // 分享标题 + desc: '我是党史记录人-红色少年行 未成年人研学', + link: url, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致 + imgUrl: 'http://h5.ali251.langye.net/res/share-img.jpeg', // 分享图标 + }); + jwx.updateTimelineShareData({ + title: '我是党史记录人-红色少年行 未成年人研学', // 分享标题 + desc: '我是党史记录人-红色少年行 未成年人研学', + link: url, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致 + imgUrl: 'http://h5.ali251.langye.net/res/share-img.jpeg', // 分享图标 + }); + jwx.onMenuShareAppMessage({ + title: '我是党史记录人-红色少年行 未成年人研学', // 分享标题 + desc: '我是党史记录人-红色少年行 未成年人研学', + link: url, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致 + imgUrl: 'http://h5.ali251.langye.net/res/share-img.jpeg', // 分享图标 + }); + jwx.onMenuShareTimeline({ + title: '我是党史记录人-红色少年行 未成年人研学', // 分享标题 + desc: '我是党史记录人-红色少年行 未成年人研学', + link: url, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致 + imgUrl: 'http://h5.ali251.langye.net/res/share-img.jpeg', // 分享图标 + }); + }) + }) + }) + } + } else { + this.$u.api.getAppId().then(res => { + let redirect = encodeURIComponent(link.replace(/#\//, "")) + window.location.href = + `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${res.appid}&redirect_uri=${redirect}&response_type=code&scope=snsapi_base#wechat_redirect` }) - }) + } }) + }, onShow: function() { console.log('App Show') diff --git a/common/http.api.js b/common/http.api.js index fd98e52..1f2f948 100644 --- a/common/http.api.js +++ b/common/http.api.js @@ -1,6 +1,8 @@ //api集合 let apiApp = { login: '/api/mobile/user/wechat-login', + user: '/api/mobile/user/show', + saveUser: '/api/mobile/user/save', getAppId: '/api/mobile/user/wechat-login-url', getQuestions: '/api/mobile/quiz/get-questions', getPoints: '/api/mobile/map-point/point-list', @@ -19,6 +21,7 @@ const install = (Vue, vm) => { //api方法 let login = (params = {}) => vm.$u.get(apiApp.login, params); + let user = (params = {}) => vm.$u.get(apiApp.user, params); let getAppId = (params = {}) => vm.$u.get(apiApp.getAppId, params); let getQuestions = (params = {}) => vm.$u.get(apiApp.getQuestions, params); let getPoints = (params = {}) => vm.$u.get(apiApp.getPoints, params) @@ -29,9 +32,11 @@ const install = (Vue, vm) => { let saveQuiz = (params = {}) => vm.$u.post(apiApp.saveQuiz, params); let pointDetail = (params = {}) => vm.$u.get(apiApp.pointDetail, params); let share = (params = {}) => vm.$u.get(apiApp.share, params); - const savePoster = (params = {}) => vm.$u.get(apiApp.savePoster, params); + let savePoster = (params = {}) => vm.$u.get(apiApp.savePoster, params); + + let saveUser = (params = {}) => vm.$u.post(apiApp.saveUser, params); // 将各个定义的接口名称,统一放进对象挂载到vm.$u.api(因为vm就是this,也即this.$u.api)下 - vm.$u.api = { login, getAppId, getQuestions, baseFormIndex, baseFormShow, baseFormSave, baseFormDestroy, getPoints, saveQuiz, pointDetail, share, savePoster }; + vm.$u.api = { login, getAppId, getQuestions, baseFormIndex, baseFormShow, baseFormSave, baseFormDestroy, getPoints, saveQuiz, pointDetail, share, savePoster, user, saveUser }; } export default { diff --git a/manifest.json b/manifest.json index fc3d227..26dc3a9 100644 --- a/manifest.json +++ b/manifest.json @@ -71,7 +71,7 @@ "vueVersion" : "2", "h5" : { "router" : { - "base" : "" + "base" : "h5hssnx" } } } diff --git a/pages/certificate/certificate.vue b/pages/certificate/certificate.vue index 50506f6..1196d29 100644 --- a/pages/certificate/certificate.vue +++ b/pages/certificate/certificate.vue @@ -14,13 +14,13 @@