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";