From 59055982ab5f92c1dbec642332e36cee097c4a39 Mon Sep 17 00:00:00 2001 From: Gaoxs <704041637@qq.com> Date: Tue, 22 Sep 2020 17:32:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96h5=E5=BE=AE=E4=BF=A1=E6=8E=88?= =?UTF-8?q?=E6=9D=83=E9=80=BB=E8=BE=91;=E4=BF=AE=E6=94=B9CountDown?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E6=8A=A5=E9=94=99=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/CountDown.vue | 177 ++++++++++++++++++++------------------- libs/wechat.js | 7 +- main.js | 99 +++++++++++----------- utils/index.js | 21 +++-- 4 files changed, 154 insertions(+), 150 deletions(-) diff --git a/components/CountDown.vue b/components/CountDown.vue index 8ca5cff..1f61135 100644 --- a/components/CountDown.vue +++ b/components/CountDown.vue @@ -1,99 +1,104 @@ diff --git a/libs/wechat.js b/libs/wechat.js index a252815..5cad6b7 100644 --- a/libs/wechat.js +++ b/libs/wechat.js @@ -88,7 +88,7 @@ let wechatObj; let appId let wechatLoading = false -export async function wechat() { +export function wechat() { console.log('初始化微信配置') wechatLoading = false return new Promise((resolve, reject) => { @@ -148,7 +148,7 @@ export async function oAuth() { }) } -export function auth(code) { +export async function auth(code) { console.log('获取微信授权') return new Promise((resolve, reject) => { let loginType = cookie.get(LOGINTYPE); @@ -170,7 +170,7 @@ export function auth(code) { }) } -export function toAuth() { +export async function toAuth() { if (wechatLoading) { return } @@ -187,7 +187,6 @@ function getAuthUrl(appId) { // #ifdef H5 // #endif - debugger cookie.set('redirect', window.location.href) const redirect_uri = encodeURIComponent(`${location.origin}/pages/Loading/index`); // const redirect_uri = encodeURIComponent(`${location.origin}/pages/Loading/index?path=${encodeURIComponent(window.location.href)}`); diff --git a/main.js b/main.js index e88baee..23eb888 100644 --- a/main.js +++ b/main.js @@ -82,6 +82,29 @@ Object.defineProperty(Vue.prototype, '$yroute', { Vue.prototype.$VUE_APP_RESOURCES_URL = VUE_APP_RESOURCES_URL Vue.prototype.$VUE_APP_API_URL = VUE_APP_API_URL Vue.component('cu-custom', cuCustom); + + +// #ifdef APP-PLUS +// App平台编译的代码 +Vue.prototype.$deviceType = 'app' +store.commit('updateDevicetype', 'app') +Vue.prototype.$platform = uni.getSystemInfoSync().platform +// #endif + +// #ifdef MP-WEIXIN +// 微信小程序编译的代码 +Vue.prototype.$deviceType = 'routine' +store.commit('updateDevicetype', 'routine') +// #endif + +// !!! ps 不建议在 template 中使用 $deviceType 去判断当前环境,很有可能出现 $deviceType 为 undefined 导致判断出错的问题,可以在 script 模块中正常使用 +// 建议通过 store 去获取 $deviceType 可以保证 template 中取到的值有效 +// import { mapState, mapMutations, mapActions } from 'vuex'; +// computed: { +// ...mapState(['$deviceType']) +// }, + + // #ifdef H5 // H5编译的代码 @@ -102,8 +125,6 @@ import { } from '@/libs/wechat' import { isWeixin } from '@/utils' - - const CACHE_KEY = "clear_0.0.1"; if (!cookie.has(CACHE_KEY)) { @@ -122,56 +143,36 @@ if (urlSpread !== undefined) { cookie.set("spread", urlSpread || 0); } } +// #endif -Vue.prototype.wechat = wechat -Vue.prototype.clearAuthStatus = clearAuthStatus -Vue.prototype.oAuth = oAuth -Vue.prototype.auth = auth -Vue.prototype.toAuth = toAuth -Vue.prototype.pay = pay -Vue.prototype.openAddress = openAddress -Vue.prototype.openShareAll = openShareAll -Vue.prototype.openShareAppMessage = openShareAppMessage -Vue.prototype.openShareTimeline = openShareTimeline -Vue.prototype.wechatEvevt = wechatEvevt -Vue.prototype.ready = ready -Vue.prototype.wxShowLocation = wxShowLocation - -// 判断是否是微信浏览器 -if (isWeixin()) { - Vue.prototype.$deviceType = 'weixin' - store.commit('updateDevicetype', 'weixin') - let wechat = await wechat() - if (wechat) { - await oAuth() - } -} else { - Vue.prototype.$deviceType = 'weixinh5' - store.commit('updateDevicetype', 'weixinh5') -} + +async function init() { + + // #ifdef H5 + // H5编译的代码 + // 判断是否是微信浏览器 + if (isWeixin()) { + Vue.prototype.$deviceType = 'weixin' + store.commit('updateDevicetype', 'weixin') + let wechatInit = await wechat() + console.log(wechatInit) + if (wechatInit) { + await oAuth() + app.$mount() + } + } else { + Vue.prototype.$deviceType = 'weixinh5' + store.commit('updateDevicetype', 'weixinh5') + app.$mount() + } + // #endif -// #endif + // #ifndef H5 + app.$mount() + // #endif -// #ifdef APP-PLUS -// App平台编译的代码 -Vue.prototype.$deviceType = 'app' -store.commit('updateDevicetype', 'app') -Vue.prototype.$platform = uni.getSystemInfoSync().platform -// #endif - -// #ifdef MP-WEIXIN -// 微信小程序编译的代码 -Vue.prototype.$deviceType = 'routine' -store.commit('updateDevicetype', 'routine') -// #endif - -// !!! ps 不建议在 template 中使用 $deviceType 去判断当前环境,很有可能出现 $deviceType 为 undefined 导致判断出错的问题,可以在 script 模块中正常使用 -// 建议通过 store 去获取 $deviceType 可以保证 template 中取到的值有效 -// import { mapState, mapMutations, mapActions } from 'vuex'; -// computed: { -// ...mapState(['$deviceType']) -// }, +} -app.$mount() +init() diff --git a/utils/index.js b/utils/index.js index 5f738c0..7bc8f02 100644 --- a/utils/index.js +++ b/utils/index.js @@ -204,25 +204,25 @@ export const authorize = (authorizeStr) => { } export const login = () => { - debugger; - console.log(Vue.prototype) return new Promise((resolve, reject) => { if (Vue.prototype.$deviceType == 'weixin') { // 微信授权登录 const { code } = parseQuery() - debugger; if (code) { auth(code) .then(() => { - // location.replace( - // decodeURIComponent(decodeURIComponent(this.$route.params.url)) - // ); let redirect = cookie.get('redirect') console.log(redirect) - debugger; - location.href = decodeURIComponent( - decodeURIComponent(this.$route.params.url) - ); + if (redirect) { + redirect = redirect.split('/pages')[1] + reLaunch({ + path: '/pages' + redirect, + }); + } else { + reLaunch({ + path: '/pages/home/index', + }); + } }) .catch(() => { reject('当前运行环境为微信浏览器') @@ -866,7 +866,6 @@ export const handleLoginFailure = () => { store.commit("updateAuthorization", false); let currentPageUrl = getCurrentPageUrl() - debugger if (store.state.$deviceType == 'weixin') { // 如果不是授权页面, if (!store.getters.isAuthorizationPage) {