You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							346 lines
						
					
					
						
							8.7 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							346 lines
						
					
					
						
							8.7 KiB
						
					
					
				
								<template>
							 | 
						|
									<view>
							 | 
						|
										<lf-nav title="登录/注册" :showIcon="true" bgColor="#fff"></lf-nav>
							 | 
						|
										<view class="illustration">
							 | 
						|
											<image class="img" src="../../../static/images/empty.png" mode="aspectFill"></image>
							 | 
						|
										</view>
							 | 
						|
										<view class="fixed-btn">
							 | 
						|
											<button class="btn1" hover-class="lf-opacity" @click="toPhoneLogin">手机号登录</button>
							 | 
						|
											<button class="btn2" hover-class="lf-opacity" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">微信授权登录</button>
							 | 
						|
										</view>
							 | 
						|
									</view>
							 | 
						|
								</template>
							 | 
						|
								
							 | 
						|
								<script>
							 | 
						|
									import { config, wechat, GetUrl } from '@/common/js/utils.js';
							 | 
						|
									export default {
							 | 
						|
										data(){
							 | 
						|
											return {
							 | 
						|
												code: '',
							 | 
						|
												url: '',
							 | 
						|
												logo: '',
							 | 
						|
												author: config.PACKAGES.author,
							 | 
						|
												config: '',
							 | 
						|
												showAgreement: false,
							 | 
						|
												agreement: '',
							 | 
						|
												open_id: '',
							 | 
						|
												h5_url: ''
							 | 
						|
											}
							 | 
						|
										},
							 | 
						|
										onShow(){
							 | 
						|
											var token = this.$cookieStorage.get('user_token');
							 | 
						|
											// this.setData({
							 | 
						|
											//   token: token
							 | 
						|
											// });
							 | 
						|
											this.token = token;
							 | 
						|
											
							 | 
						|
											var initInfo = this.$cookieStorage.get('init');
							 | 
						|
											
							 | 
						|
											if (initInfo && initInfo.shop_show_logo) {
							 | 
						|
												this.setData({
							 | 
						|
													logo: initInfo.shop_show_logo
							 | 
						|
												});
							 | 
						|
											}
							 | 
						|
											
							 | 
						|
											if (token) {
							 | 
						|
												// uni.switchTab({
							 | 
						|
												// 	url: '/pages/user/personal/personal'
							 | 
						|
												// });
							 | 
						|
												this.$url('/pages/user/my/center', {type: 'launch'})
							 | 
						|
											} else {
							 | 
						|
												// #ifdef MP-WEIXIN
							 | 
						|
												this.wxLogin();
							 | 
						|
												// #endif
							 | 
						|
											}
							 | 
						|
										},
							 | 
						|
										onLoad(e){
							 | 
						|
											// 第三方平台配置颜色
							 | 
						|
											var bgConfig = this.$cookieStorage.get('globalConfig') || '';
							 | 
						|
											this.setData({
							 | 
						|
												config: bgConfig
							 | 
						|
											});
							 | 
						|
											if (e.url) {
							 | 
						|
												this.url = decodeURIComponent(e.url);
							 | 
						|
												console.log('this.url',this.url)
							 | 
						|
											}
							 | 
						|
											if (e.shop_id) {
							 | 
						|
												this.$cookieStorage.set('shop_id', e.shop_id);
							 | 
						|
											}
							 | 
						|
											
							 | 
						|
											this.getGreementInfo();
							 | 
						|
											
							 | 
						|
										},
							 | 
						|
										methods: {
							 | 
						|
											// 获取用户协议
							 | 
						|
											getGreementInfo() {
							 | 
						|
												console.log("获取协议")
							 | 
						|
											// 	this.$http.get({
							 | 
						|
											// 		api: 'api/user/agreement'
							 | 
						|
											// 	}).then(res => {
							 | 
						|
											// 		if (res.statusCode == 200) {
							 | 
						|
											// 			res = res.data;
							 | 
						|
											
							 | 
						|
											// 			if (res.status) {
							 | 
						|
											// 				this.setData({
							 | 
						|
											// 					agreement: res.data
							 | 
						|
											// 				});
							 | 
						|
											// 			}
							 | 
						|
											// 		}
							 | 
						|
											// 	});
							 | 
						|
											},
							 | 
						|
											// 小程序静默登录
							 | 
						|
											wxLogin(){
							 | 
						|
												uni.showLoading({
							 | 
						|
													title: '正在自动登录',
							 | 
						|
													mask: true
							 | 
						|
												});
							 | 
						|
												uni.login({
							 | 
						|
													success: res => {
							 | 
						|
														console.log(res);
							 | 
						|
														if (res.code) {
							 | 
						|
															this.autoLogin(res.code);
							 | 
						|
														} else {
							 | 
						|
															this.$msg('获取code失败');
							 | 
						|
														}
							 | 
						|
													},
							 | 
						|
												});
							 | 
						|
											},
							 | 
						|
											// 通过code自动登录
							 | 
						|
											autoLogin(code) {
							 | 
						|
												this.$http.post({
							 | 
						|
													api: 'api/oauth/miniprogram/login',
							 | 
						|
													data: {
							 | 
						|
														code: code,
							 | 
						|
														open_type: 'miniprogram',
							 | 
						|
														shop_id: this.$cookieStorage.get('shop_id') || '',
							 | 
						|
														agent_code: this.$cookieStorage.get('coupon_agent_code') || this.$cookieStorage.get('agent_code') || '',
							 | 
						|
														clerk_id: this.$cookieStorage.get('clerk_id') || '',
							 | 
						|
														agent_code_time: this.$cookieStorage.get('agent_code_time') || '',
							 | 
						|
														shop_id_time: this.$cookieStorage.get('shop_id_time') || ''
							 | 
						|
													}
							 | 
						|
												}).then(res => {
							 | 
						|
														res = res.data;
							 | 
						|
														if (res.data && res.data.open_id) {
							 | 
						|
															this.setData({
							 | 
						|
																open_id: res.data.open_id
							 | 
						|
															});
							 | 
						|
														} // 如果接口返回token就直接登录,如果没有则弹出授权
							 | 
						|
											
							 | 
						|
														if (res.data.access_token) {
							 | 
						|
															console.log('已经返回给我了token');
							 | 
						|
															uni.hideLoading();
							 | 
						|
															var access_token = res.data.token_type + ' ' + res.data.access_token;
							 | 
						|
															var expires_in = res.data.expires_in || 315360000;
							 | 
						|
															this.$cookieStorage.set("user_token", access_token, expires_in);
							 | 
						|
															
							 | 
						|
															if (this.url) {
							 | 
						|
																uni.redirectTo({
							 | 
						|
																	url: "/" + this.url,
							 | 
						|
																	// fail: () => {
							 | 
						|
																	// 	uni.switchTab({
							 | 
						|
																	// 		url: "/" + this.url
							 | 
						|
																	// 	});
							 | 
						|
																	// }
							 | 
						|
																})
							 | 
						|
											
							 | 
						|
															} else {
							 | 
						|
																// uni.switchTab({
							 | 
						|
																// 	url: '/pages/user/personal/personal'
							 | 
						|
																// });
							 | 
						|
																this.$url('/pages/user/my/center', {type: 'launch'})
							 | 
						|
															}
							 | 
						|
														} else {
							 | 
						|
															uni.hideLoading();
							 | 
						|
														}
							 | 
						|
												}).catch(rej => {
							 | 
						|
													uni.hideLoading();
							 | 
						|
													uni.showModal({
							 | 
						|
														content: '请求失败,请重试',
							 | 
						|
														showCancel: false,
							 | 
						|
														success: res => {
							 | 
						|
															if (res.confirm || !res.cancel && !res.confirm) {
							 | 
						|
																this.wxLogin();
							 | 
						|
															}
							 | 
						|
														}
							 | 
						|
													});
							 | 
						|
												});
							 | 
						|
											},
							 | 
						|
											// 获取用户手机号
							 | 
						|
											getPhoneNumber(e) {
							 | 
						|
												if (e.detail.encryptedData) {
							 | 
						|
													uni.login({
							 | 
						|
														success: res => {
							 | 
						|
															if (res.code) {
							 | 
						|
																this.setData({
							 | 
						|
																	code: res.code
							 | 
						|
																});
							 | 
						|
																this.phone(e);
							 | 
						|
															} else {
							 | 
						|
																uni.showModal({
							 | 
						|
																	content: " 获取code失败",
							 | 
						|
																	showCancel: false
							 | 
						|
																});
							 | 
						|
															}
							 | 
						|
														}
							 | 
						|
													});
							 | 
						|
													return;
							 | 
						|
												} else {
							 | 
						|
													this.toPhoneLogin();
							 | 
						|
												}
							 | 
						|
											},
							 | 
						|
											// 通过手机号登录注册
							 | 
						|
											phone(e) {
							 | 
						|
												uni.showLoading({
							 | 
						|
													title: '正在登录',
							 | 
						|
													mask: true
							 | 
						|
												});
							 | 
						|
												this.$http.post({
							 | 
						|
													api: 'api/oauth/miniprogram/mobile',
							 | 
						|
													data: {
							 | 
						|
														open_type: 'miniprogram',
							 | 
						|
														code: this.code,
							 | 
						|
														encryptedData: e.detail.encryptedData,
							 | 
						|
														iv: e.detail.iv,
							 | 
						|
														open_id: this.open_id,
							 | 
						|
														shop_id: this.$cookieStorage.get('shop_id') || '',
							 | 
						|
														agent_code: this.$cookieStorage.get('coupon_agent_code') || this.$cookieStorage.get('agent_code') || '',
							 | 
						|
														clerk_id: this.$cookieStorage.get('clerk_id') || '',
							 | 
						|
														agent_code_time: this.$cookieStorage.get('agent_code_time') || '',
							 | 
						|
														shop_id_time: this.$cookieStorage.get('shop_id_time') || ''
							 | 
						|
													}
							 | 
						|
												}).then(res => {
							 | 
						|
													if (res.statusCode == 200) {
							 | 
						|
														res = res.data;
							 | 
						|
											
							 | 
						|
														if (res.data.access_token) {
							 | 
						|
															var access_token = res.data.token_type + ' ' + res.data.access_token;
							 | 
						|
															var expires_in = res.data.expires_in || 315360000; // debugger;
							 | 
						|
											
							 | 
						|
															this.$cookieStorage.set("user_token", access_token, expires_in); // this.$cookieStorage.set("user_token",access_token,expires_in);
							 | 
						|
															// uni.setStorageSync("user_token",access_token);
							 | 
						|
											
							 | 
						|
															if (this.url) {
							 | 
						|
											// 					var path = ['pages/entity/store/store', 'pages/index/index/index',
							 | 
						|
											// 						'pages/index/classification/classification', 'pages/store/tabCart/tabCart', 'pages/user/personal/personal',
							 | 
						|
											// 						'pages/travels/index/index', 'pages/user/collar/collar'
							 | 
						|
											// 					];
							 | 
						|
											// 					var pathIndex = path.indexOf(this.url);
							 | 
						|
											
							 | 
						|
											// 					if (pathIndex == -1) {
							 | 
						|
											// 						uni.redirectTo({
							 | 
						|
											// 							url: "/" + this.url
							 | 
						|
											// 						});
							 | 
						|
											// 					} else {
							 | 
						|
											// 						uni.switchTab({
							 | 
						|
											// 							url: "/" + this.url
							 | 
						|
											// 						});
							 | 
						|
											// 					}
							 | 
						|
																this.$url("/" + this.url, {type: 'redirect'});
							 | 
						|
															} else {
							 | 
						|
																// uni.switchTab({
							 | 
						|
																// 	url: '/pages/user/personal/personal'
							 | 
						|
																// });
							 | 
						|
																this.$url('/pages/user/my/center', {type: 'launch'})
							 | 
						|
															}
							 | 
						|
														} else {
							 | 
						|
															uni.showModal({
							 | 
						|
																content: res.message || '请求失败,请重试',
							 | 
						|
																showCancel: false
							 | 
						|
															});
							 | 
						|
														}
							 | 
						|
													} else {
							 | 
						|
														uni.showModal({
							 | 
						|
															content: '请求失败,请重试',
							 | 
						|
															showCancel: false
							 | 
						|
														});
							 | 
						|
													}
							 | 
						|
											
							 | 
						|
													uni.hideLoading();
							 | 
						|
												}).catch(rej => {
							 | 
						|
													uni.hideLoading();
							 | 
						|
													uni.showModal({
							 | 
						|
														content: '请求失败,请重试',
							 | 
						|
														showCancel: false
							 | 
						|
													});
							 | 
						|
												});
							 | 
						|
											},
							 | 
						|
											// 跳转到手机号验证码登录
							 | 
						|
											toPhoneLogin(){
							 | 
						|
												if (this.url) {
							 | 
						|
													// uni.navigateTo({
							 | 
						|
													// 	url: '/pages/user/loginType/loginType?url=' + encodeURIComponent(this.url) + '&open_id=' + this.open_id
							 | 
						|
													// });
							 | 
						|
													this.$url('/pages/user/loginType/loginType?url=' + encodeURIComponent(this.url) + '&open_id=' + this.open_id);
							 | 
						|
												} else {
							 | 
						|
													// wx.navigateTo({
							 | 
						|
													// 	url: '/pages/user/loginType/loginType?open_id=' + this.open_id
							 | 
						|
													// });
							 | 
						|
													this.$url('/pages/user/loginType/loginType?open_id=' + this.open_id);
							 | 
						|
												}
							 | 
						|
												
							 | 
						|
											},
							 | 
						|
											setData: function(obj) {
							 | 
						|
												let that = this;
							 | 
						|
												let keys = [];
							 | 
						|
												let val, data;
							 | 
						|
												Object.keys(obj).forEach(function(key) {
							 | 
						|
													keys = key.split('.');
							 | 
						|
													val = obj[key];
							 | 
						|
													data = that.$data;
							 | 
						|
													keys.forEach(function(key2, index) {
							 | 
						|
														if (index + 1 == keys.length) {
							 | 
						|
															that.$set(data, key2, val);
							 | 
						|
														} else {
							 | 
						|
															if (!data[key2]) {
							 | 
						|
																that.$set(data, key2, {});
							 | 
						|
															}
							 | 
						|
														}
							 | 
						|
											
							 | 
						|
														data = data[key2];
							 | 
						|
													});
							 | 
						|
												});
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								</script>
							 | 
						|
								
							 | 
						|
								<style lang="scss" scoped>
							 | 
						|
									.illustration{
							 | 
						|
										width: 750rpx;
							 | 
						|
										height: 750rpx;
							 | 
						|
										position: fixed;
							 | 
						|
										top: 44%;
							 | 
						|
										left: 0;
							 | 
						|
										margin-top: -375rpx;
							 | 
						|
										.img{
							 | 
						|
											width: 100%;
							 | 
						|
											height: 100%;
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
									.fixed-btn{
							 | 
						|
										width: 630rpx;
							 | 
						|
										height: max-content;
							 | 
						|
										position: fixed;
							 | 
						|
										left: calc(50% - 315rpx);
							 | 
						|
										top: calc(46% + 375rpx);
							 | 
						|
										display: flex;
							 | 
						|
										justify-content: space-between;
							 | 
						|
										.btn1, .btn2{
							 | 
						|
											width: 300rpx;
							 | 
						|
											height: 100rpx;
							 | 
						|
											border-radius: 60rpx;
							 | 
						|
											border: 1rpx solid #15716E;
							 | 
						|
											box-sizing: border-box;
							 | 
						|
											line-height: 100rpx;
							 | 
						|
											font-size: 32rpx;
							 | 
						|
										}
							 | 
						|
										.btn1{
							 | 
						|
											background-color: #F3F8F8;
							 | 
						|
											color: #15716E;
							 | 
						|
										}
							 | 
						|
										.btn2{
							 | 
						|
											background-color: #15716E;
							 | 
						|
											color: #FFFFFF;
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								</style>
							 |