From 0605a2b4c9833495f3d29579074ceb6698ffb088 Mon Sep 17 00:00:00 2001 From: Gao xiaosong <704041637@qq.com> Date: Tue, 22 Sep 2020 01:20:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96h5=E7=AB=AF=E6=8E=88=E6=9D=83?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/index.js | 4 +-- libs/wechat.js | 23 ++++++++++++------ main.js | 44 ++++++++++++++++++--------------- pages/Loading/index.vue | 54 ++++++++++++++++++++--------------------- store/index.js | 3 ++- utils/index.js | 24 ++++++++++++------ utils/request.js | 2 +- 7 files changed, 89 insertions(+), 65 deletions(-) diff --git a/config/index.js b/config/index.js index c54667e..d2febdd 100644 --- a/config/index.js +++ b/config/index.js @@ -1,8 +1,8 @@ // export const VUE_APP_API_URL = 'http://natapp.xinxintuan.co/api'; -export const VUE_APP_API_URL = 'https://wxapi.yixiang.co/api'; +// export const VUE_APP_API_URL = 'https://wxapi.yixiang.co/api'; // export const VUE_APP_API_URL = 'http://192.168.31.223:8008/api'; -// export const VUE_APP_API_URL = 'https://h5api.xinxintuan.co/api'; +export const VUE_APP_API_URL = 'https://h5api.xinxintuan.co/api'; // export const VUE_APP_API_URL = 'https://h5api.xinxintuan.co/api'; export const VUE_APP_RESOURCES_URL = 'https://wx.yixiang.co/static'; diff --git a/libs/wechat.js b/libs/wechat.js index 2e5146b..a252815 100644 --- a/libs/wechat.js +++ b/libs/wechat.js @@ -86,9 +86,11 @@ const LOGINTYPE = "loginType"; let instance; let wechatObj; let appId +let wechatLoading = false -export function wechat() { +export async function wechat() { console.log('初始化微信配置') + wechatLoading = false return new Promise((resolve, reject) => { if (instance) return resolve(instance); getWechatConfig() @@ -107,12 +109,12 @@ export function wechat() { }) .catch(error => { console.log(error) - reject(error) + reject() }); }) .catch(err => { console.log(err); - reject(err); + reject(); }); }); } @@ -122,7 +124,7 @@ export function clearAuthStatus() { cookie.remove(STATE_KEY); } -export function oAuth() { +export async function oAuth() { console.log('处理微信授权') console.log('处理微信授权cookie', cookie.get("spread")) console.log(store) @@ -137,6 +139,8 @@ export function oAuth() { if (!code) { toAuth(); return + } else { + auth(code) } resolve() }).catch(error => { @@ -167,6 +171,10 @@ export function auth(code) { } export function toAuth() { + if (wechatLoading) { + return + } + wechatLoading = true wechat().then(wx => { location.href = getAuthUrl(appId); }); @@ -179,9 +187,10 @@ function getAuthUrl(appId) { // #ifdef H5 // #endif - - - const redirect_uri = encodeURIComponent(`${location.origin}/pages/Loading/index?path=${encodeURIComponent(window.location.href)}`); + 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)}`); // const redirect_uri = encodeURIComponent(`${window.location.origin}${window.location.pathname}`) // const redirect_uri = encodeURIComponent(`${location.origin}`) cookie.remove(BACK_URL); diff --git a/main.js b/main.js index 97c5680..e88baee 100644 --- a/main.js +++ b/main.js @@ -107,31 +107,20 @@ import { isWeixin } from '@/utils' const CACHE_KEY = "clear_0.0.1"; if (!cookie.has(CACHE_KEY)) { - cookie.clearAll(); - cookie.set(CACHE_KEY, 1); + cookie.clearAll(); + cookie.set(CACHE_KEY, 1); } var urlSpread = parseQuery()["spread"]; if (urlSpread !== undefined) { - var spread = cookie.get("spread"); - urlSpread = parseInt(urlSpread); - if (!Number.isNaN(urlSpread) && spread !== urlSpread) { - cookie.set("spread", urlSpread || 0); - } else if (spread === 0 || typeof spread !== "number") { - cookie.set("spread", urlSpread || 0); - } -} - - -// 判断是否是微信浏览器 -if (isWeixin()) { - Vue.prototype.$deviceType = 'weixin' - store.commit('updateDevicetype', 'weixin') - wechat().then(() => oAuth()); -} else { - Vue.prototype.$deviceType = 'weixinh5' - store.commit('updateDevicetype', 'weixinh5') + var spread = cookie.get("spread"); + urlSpread = parseInt(urlSpread); + if (!Number.isNaN(urlSpread) && spread !== urlSpread) { + cookie.set("spread", urlSpread || 0); + } else if (spread === 0 || typeof spread !== "number") { + cookie.set("spread", urlSpread || 0); + } } Vue.prototype.wechat = wechat @@ -148,6 +137,21 @@ 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') +} + + + // #endif // #ifdef APP-PLUS diff --git a/pages/Loading/index.vue b/pages/Loading/index.vue index 7dedc8a..4c9d143 100644 --- a/pages/Loading/index.vue +++ b/pages/Loading/index.vue @@ -52,37 +52,37 @@ this.toLaunch(); return; } - // cookie.get("spread"); - // if (this.$deviceType == "weixin") { - // let path = parseQuery().path - // console.log(this) - // if (path) { - // this.$yrouter.push({ - // path - // }); - // } else { - // this.$yrouter.switchTab({ - // path: "/pages/home/index" - // }); - // } + } - // return - // } - // this.toLaunch(); - if (this.$deviceType == "app" || this.$deviceType == "h5") { - // this.toLaunch(); + // cookie.get("spread"); + // if (this.$deviceType == "weixin") { + // let path = parseQuery().path + // console.log(this) + // if (path) { + // this.$yrouter.push({ + // path + // }); + // } else { + // this.$yrouter.switchTab({ + // path: "/pages/home/index" + // }); + // } - this.$yrouter.switchTab({ - path: "/pages/home/index" - }); - return; - } - login().finally(() => { - this.$yrouter.switchTab({ - path: "/pages/home/index" - }); + // return + // } + // this.toLaunch(); + if (this.$deviceType == "app" || this.$deviceType == "weixinh5") { + // this.toLaunch(); + this.$yrouter.switchTab({ + path: "/pages/home/index" }); + return; } + login().finally(() => { + this.$yrouter.switchTab({ + path: "/pages/home/index" + }); + }); }, methods: { ...mapActions(["changeAuthorization", "setUserInfo"]), diff --git a/store/index.js b/store/index.js index 4c244eb..1279a98 100644 --- a/store/index.js +++ b/store/index.js @@ -138,7 +138,7 @@ const vuexStore = new Vuex.Store({ state, commit }, user) { - + commit("updateUserInfo", user); }, changeAuthorizationPage({ @@ -163,6 +163,7 @@ const vuexStore = new Vuex.Store({ location: state => state.location, storeItems: state => state.storeItems, goName: state => state.goName, + $deviceType: state => state.$deviceType, }, strict: debug }); diff --git a/utils/index.js b/utils/index.js index e9cd650..5f738c0 100644 --- a/utils/index.js +++ b/utils/index.js @@ -204,17 +204,22 @@ 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) ); @@ -275,7 +280,7 @@ export const login = () => { console.log('登录接口调用成功') console.log('开始检查用户信息授权') let code = loginRes.code; - cookie.set('wxLoginCode',loginRes.code) + cookie.set('wxLoginCode', loginRes.code) // 检查授权, 检查用户信息授权 authorize('userInfo').then(() => { console.log('授权通过') @@ -857,14 +862,19 @@ export const handleLoginFailure = () => { console.log('————————') store.commit("logout"); + // 改为授权取消 store.commit("updateAuthorization", false); let currentPageUrl = getCurrentPageUrl() - + debugger if (store.state.$deviceType == 'weixin') { - if (store.getters.isAuthorizationPage){ + // 如果不是授权页面, + if (!store.getters.isAuthorizationPage) { + // 标识当前为授权页面 + store.commit("updateAuthorizationPage", true); toAuth() } + return } else { // token 失效 // 判断当前是不是已经在登录页面或者授权页,防止二次跳转 @@ -895,7 +905,7 @@ export const handleLoginFailure = () => { console.log('————————') if (qrCode.pinkId) { path = parseUrl({ - path: `/${currentPageUrl}`, + path: `/ ${currentPageUrl} `, query: { id: qrCode.pinkId, } @@ -917,7 +927,7 @@ export const handleLoginFailure = () => { if (qrCode.bargainId) { path = parseUrl({ - path: `/${currentPageUrl}`, + path: `/ ${currentPageUrl} `, query: { id: qrCode.bargainId, partake: qrCode.uid @@ -939,7 +949,7 @@ export const handleLoginFailure = () => { if (qrCode.productId) { path = parseUrl({ - path: `/${currentPageUrl}`, + path: `/ ${currentPageUrl} `, query: { id: qrCode.productId, } @@ -988,7 +998,7 @@ export function chooseImage(callback) { console.log(image); uni.showLoading({ title: "图片上传中", mask: true }); uni.uploadFile({ - url: `${VUE_APP_API_URL}/api/upload`, + url: `${VUE_APP_API_URL} /api/upload`, file: image, filePath: image.path, header: { diff --git a/utils/request.js b/utils/request.js index 3a732c1..0732c76 100644 --- a/utils/request.js +++ b/utils/request.js @@ -12,7 +12,7 @@ import Fly from "flyio/dist/npm/wx"; import Fly from "flyio/dist/npm/wx"; // #endif -import $store from "../store"; +import store from "../store"; import { handleLoginFailure } from "@/utils"; import { VUE_APP_API_URL } from "@/config"; import cookie from "@/utils/store/cookie";