| 
					
				 | 
			
			
				@@ -1,113 +1,123 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	<view> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		<u-toast ref="uToast" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	</view> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  <view> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <u-toast ref="uToast" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  </view> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	import getUrlParams from './../../utils/getUrlParams.js'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		data() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				backUrl: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				code: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		onLoad(page) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			let local = location.href; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			let locationLocaturl = location.search; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			// 微信返回的回调地址 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			let backUrl = local.split('backUrl=')[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if (backUrl) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				this.backUrl = decodeURIComponent(backUrl); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			console.log('backUrl', decodeURIComponent(backUrl)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			let code = getUrlParams(locationLocaturl, 'code'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			console.log('code', code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if (code) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				this.code = code; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				let wechatLoginKey = localStorage.getItem('wechatLoginKey') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				if (wechatLoginKey) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					wechatLoginKey = JSON.parse(wechatLoginKey); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					if (code === wechatLoginKey.code) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						this.getToken(wechatLoginKey.openId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						this.handleGetWXInfo(this.code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					this.handleGetWXInfo(this.code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				// location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${this.config.wxAppid}&redirect_uri=${encodeURIComponent( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				//     local 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				//   )}&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${this.config.wxAppid}&redirect_uri=${encodeURIComponent(local)}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		methods: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			// 通过code获取 openId等用户信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			handleGetWXInfo(code) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				uni.showLoading({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					title: '加载中' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				this.$u.api 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					.getWXInfo(code) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					.then((res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						if (res.code === 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							this.$u.vuex('vuex_wxinfo', res.data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							localStorage.setItem('wechatLoginKey', JSON.stringify({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								code, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								openId: res.data.openId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							})) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							this.getToken(res.data.openId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							this.$refs.uToast.show({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								title: res.msg || '获取用户信息失败!', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								type: 'error' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							uni.hideLoading(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					.catch((err) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						uni.hideLoading(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			 * 通过openId获取token 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			 * @param {Object} openId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			getToken(openId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				this.$u.api.codeV2Api.sendSmsCodeV2api({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					openId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				}).then((res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					if (res.code === 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						this.$u.vuex('vuex_token', res.data.accessToken); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						this.$u.vuex('vuex_hasLogin', true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						if (res.data.needVerify) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							localStorage.setItem('backUrl', this.backUrl); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							this.$u.route({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								url: 'pages/center/phoneLogin/phoneLogin' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							this.$u.vuex('vuex_user', res.data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							if (this.backUrl.indexOf('wechatLogin') > (-1)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								location.href = '/' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-								location.href = this.backUrl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						uni.hideLoading(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						this.$refs.uToast.show({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							title: res.msg || '获取用户信息失败!', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-							type: 'error' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-						uni.hideLoading(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-					} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import getUrlParams from '@/utils/getUrlParams.js'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  data() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      backUrl: '', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      code: '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  onLoad(page) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    console.log('page:', page); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const locationLocaturl = location.search; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 微信返回的回调地址 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const backUrl = page?.backUrl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (backUrl) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.backUrl = backUrl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    console.log('backUrl', backUrl); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let code = getUrlParams(locationLocaturl, 'code'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    console.log('code', code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (code) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.code = code; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 判断重复回调问题 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let wechatLoginKey = localStorage.getItem('wechatLoginKey'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (wechatLoginKey) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        wechatLoginKey = JSON.parse(wechatLoginKey); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (code === wechatLoginKey.code) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.getToken(wechatLoginKey.openId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.handleGetWXInfo(this.code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.handleGetWXInfo(this.code); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      const local = location.href; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      location.href = `https://open.weixin.qq.com/connect/oauth2/authorize? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				appid=${this.config.wxAppid}& 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				redirect_uri=${encodeURIComponent(local)}& 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				response_type=code& 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				scope=snsapi_userinfo& 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+				state=STATE#wechat_redirect`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  methods: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 通过code获取 openId等用户信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleGetWXInfo(code) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      uni.showLoading({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        title: '加载中' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$u.api 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .getWXInfo(code) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .then((res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (res.code === 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.$u.vuex('vuex_wxinfo', res.data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            localStorage.setItem( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              'wechatLoginKey', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              JSON.stringify({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                code, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                openId: res.data.openId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.getToken(res.data.openId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.$refs.uToast.show({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              title: res.msg || '获取用户信息失败!', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              type: 'error' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            uni.hideLoading(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .catch((err) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          uni.hideLoading(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 通过openId获取token 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param {Object} openId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    getToken(openId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$u.api.codeV2Api 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .sendSmsCodeV2api({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          openId 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        .then((res) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (res.code === 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.$u.vuex('vuex_token', res.data.accessToken); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.$u.vuex('vuex_hasLogin', true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (res.data.needVerify) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              localStorage.setItem('backUrl', this.backUrl); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.$u.route({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                url: 'pages/center/phoneLogin/phoneLogin', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+								type: 'reLaunch' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.$u.vuex('vuex_user', res.data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              if (this.backUrl.indexOf('wechatLogin') > -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                location.href = '/'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                location.href = this.backUrl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            uni.hideLoading(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.$refs.uToast.show({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              title: res.msg || '获取用户信息失败!', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              type: 'error' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            uni.hideLoading(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <style></style> 
			 |