guhongwei 2 年 前
コミット
aa2435ba35
5 ファイル変更191 行追加77 行削除
  1. 3 8
      common/api.js
  2. 20 10
      manifest.json
  3. 3 15
      pages/index/index.vue
  4. 138 37
      pages/login/index.vue
  5. 27 7
      pages/my/index.vue

+ 3 - 8
common/api.js

@@ -1,7 +1,8 @@
 import config from '../config.js';
 const getDomain = (uri, method, type) => {
 	if (type && type == 'file') return config.serverUrl + '/files' + uri;
-	else return config.serverUrl + '/api/live/v1' + uri;
+	if (uri.startsWith('/wechat/api')) return config.serverUrl + uri;
+	else return config.serverUrl + '/point/v1/api' + uri;
 }
 export const requestBase = (uri, method, data, type) => {
 	let baseUrl = getDomain(uri, method, type);
@@ -11,12 +12,6 @@ export const requestBase = (uri, method, data, type) => {
 			method: method || 'GET',
 			data: data || {},
 			success: (res) => {
-				if (res.data.errcode != 0) {
-					return uni.showToast({
-						title: res.data.errmsg,
-						icon: 'error'
-					});
-				}
 				resolve(res.data);
 			},
 			fail: (err) => {
@@ -24,7 +19,7 @@ export const requestBase = (uri, method, data, type) => {
 					title: '请求接口失败',
 					icon: 'fail'
 				})
-				reject(err)
+				reject(err.data)
 			}
 		})
 	})

+ 20 - 10
manifest.json

@@ -18,27 +18,30 @@
         },
         /* 模块配置 */
         "modules" : {
-            "Geolocation" : {}
+            "Geolocation" : {},
+            "OAuth" : {},
+            "Maps" : {}
         },
         /* 应用发布信息 */
         "distribute" : {
             /* android打包配置 */
             "android" : {
                 "permissions" : [
-                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
-                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
-                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
-                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera\"/>",
                     "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
                     "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
                     "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
                     "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+                    "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
+                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
                     "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
-                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
                     "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
-                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
-                    "<uses-feature android:name=\"android.hardware.camera\"/>",
                     "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
                 ]
             },
@@ -53,7 +56,14 @@
                     "system" : {
                         "__platform__" : [ "ios", "android" ]
                     }
-                }
+                },
+                "oauth" : {
+                    "weixin" : {
+                        "appid" : "wx8cdd28824dfcdf19",
+                        "UniversalLinks" : ""
+                    }
+                },
+                "maps" : {}
             },
             "icons" : {
                 "android" : {

+ 3 - 15
pages/index/index.vue

@@ -31,22 +31,10 @@
 					url: `/${e}`
 				});
 			},
-			// 监听用户是否登录
 			watchLogin() {
-				const that = this;
-				uni.getStorage({
-					key: 'token',
-					success: function(res) {
-						// uni.redirectTo({
-						// 	url: `/pagesA/adminHome/index`
-						// })
-					},
-					fail: function(res) {
-						uni.redirectTo({
-							url: `/pages/home/index`
-						})
-					}
-				});
+				uni.redirectTo({
+					url: `/pages/home/index`
+				})
 			},
 		}
 	}

+ 138 - 37
pages/login/index.vue

@@ -1,20 +1,17 @@
 <template>
 	<mobile-frame>
 		<view class="main">
-			<view class="one">
-				<image class="image" :src="logoUrl">
-				</image>
-			</view>
 			<view class="two">
 				<uni-forms ref="form" :rules="rules" :model="form" label-width="auto">
-					<uni-forms-item label="登录账号" name="code_phone">
-						<uni-easyinput type="text" v-model="form.code_phone" placeholder="请输入登录账号" />
+					<uni-forms-item label="账号" name="phone">
+						<uni-easyinput type="text" v-model="form.phone" placeholder="请输入账号" />
 					</uni-forms-item>
-					<uni-forms-item label="登录密码" name="password">
-						<uni-easyinput type="password" v-model="form.password" placeholder="请输入登录密码" />
+					<uni-forms-item label="密码" name="password">
+						<uni-easyinput type="password" v-model="form.password" placeholder="请输入密码" />
 					</uni-forms-item>
 					<view class="btn">
-						<button type="default" size="mini" @click="toSubmit('form')">提交登录</button>
+						<button type="default" size="mini" @click="toSubmit('form')">登录</button>
+						<button type="default" size="mini" @click="wxLogin()">微信信任登录</button>
 					</view>
 				</uni-forms>
 			</view>
@@ -29,21 +26,23 @@
 				logoUrl: this.$config.logoUrl,
 				form: {},
 				rules: {
-					code_phone: {
+					phone: {
 						rules: [{
 								required: true,
-								errorMessage: '请输入登录账号',
+								errorMessage: '请输入账号',
 							},
-
+							{
+								minLength: 11,
+								maxLength: 11,
+								errorMessage: '账号长度在{maxLength}个字符',
+							}
 						]
 					},
 					password: {
 						rules: [{
-								required: true,
-								errorMessage: '请输入登录密码',
-							},
-
-						]
+							required: true,
+							errorMessage: '请输入密码',
+						}, ]
 					},
 				}
 			};
@@ -61,28 +60,142 @@
 			toSubmit(ref) {
 				const that = this;
 				that.$refs[ref].validate().then(async params => {
-					const res = await that.$api(`/admin/login`, 'POST', {
+					const res = await that.$api(`/user/login`, 'POST', {
 						...params
 					})
 					if (res.errcode == '0') {
+						uni.showToast({
+							title: '登录成功',
+							icon: 'success'
+						});
 						uni.setStorage({
 							key: 'token',
 							data: res.data,
 							success: function() {
-								uni.redirectTo({
-									url: `/pagesA/adminHome/index`
+								uni.navigateBack({
+									delta: 1
 								})
 							}
 						});
+					} else {
+						if (res.errcode == '-5') {
+							// 账号无,注册账号
+							that.createUser(params);
+						} else {
+							uni.showToast({
+								title: res.errmsg,
+								icon: 'none'
+							});
+						}
+					}
+				}).catch(err => {
+					console.log('表单错误信息:', err);
+				})
+			},
+			// 注册账号,去登录
+			async createUser(params) {
+				const that = this;
+				const res = await that.$api(`/user`, 'POST', {
+					...params
+				})
+				if (res.errcode == '0') {
+					that.userLogin(params, '1')
+				} else {
+					uni.showToast({
+						title: res.errmsg,
+					});
+				}
+			},
+			// 注册微信账号,去登录
+			async createwxUser(params) {
+				const that = this;
+				const res = await that.$api(`/user`, 'POST', {
+					...params
+				})
+				if (res.errcode == '0') {
+					that.userLogin(params, '2')
+				} else {
+					uni.showToast({
+						title: res.errmsg,
+					});
+				}
+			},
+			// 账号,微信登录
+			async userLogin(params, type) {
+				const that = this;
+				let res;
+				if (type == '1') {
+					res = await that.$api(`/user/login`, 'POST', {
+						...params
+					})
+				} else if (type == '2') {
+					res = await that.$api(`/user/wxLogin`, 'POST', {
+						openid: params.openid
+					})
+				}
+				if (res.errcode == '0') {
+					uni.showToast({
+						title: '登录成功',
+						icon: 'success'
+					});
+					uni.setStorage({
+						key: 'token',
+						data: res.data,
+						success: function() {
+							uni.navigateBack({
+								delta: 1
+							})
+						}
+					});
+				} else {
+					if (res.errcode == '-5') {
+						// 账号无,注册账号
+						that.createwxUser(params);
 					} else {
 						uni.showToast({
 							title: res.errmsg,
-							icon: 'error',
-							duration: 2000
+							icon: 'none'
 						});
 					}
-				}).catch(err => {
-					console.log('表单错误信息:', err);
+				}
+			},
+			// 微信登录
+			wxLogin() {
+				const that = this;
+				uni.login({
+					provider: 'weixin',
+					success: function(res) {
+						// 获取平台信息
+						uni.getSystemInfo({
+							success: async function(arr) {
+								let platForm = arr.uniPlatform;
+								if (platForm == 'app') { //app平台
+									uni.showToast({
+										title: 'app端暂未开通微信登录',
+										icon: 'none'
+									});
+								} else if (platForm == 'mp-weixin') { //微信平台
+									const aee = await that.$api(`/wechat/api/login/app`, 'GET', {
+										js_code: res.code,
+										config: 'pointApp'
+									})
+									if (aee.errcode == '0') {
+										// 微信登录
+										that.userLogin({
+											openid: aee.data.openid
+										}, '2');
+									} else {
+										uni.showToast({
+											title: res.errmsg,
+										});
+									}
+								}
+							}
+						});
+					},
+					fail: function(err) {
+						console.log(err);
+					}
 				})
 			},
 		}
@@ -91,22 +204,10 @@
 
 <style lang="scss">
 	.main {
-		.one {
-			text-align: center;
-			padding: 8vw 0;
-			margin: 0 0 2vw 0;
-			background-image: linear-gradient(#35BD7B, #75E4B1);
 
-			.image {
-				width: 25vw;
-				height: 25vw;
-				border-radius: 50%;
-				box-shadow: 0 0 5px var(--f9Color);
-			}
-		}
 
 		.two {
-			padding: 0 2vw;
+			padding: 2vw;
 
 			.btn {
 				text-align: center;

+ 27 - 7
pages/my/index.vue

@@ -7,9 +7,9 @@
 					<view class="name">未登录</view>
 				</view>
 				<view class="one_1" v-else>
-					<image :src="user.icon"></image>
+					<image class="image" :src="user.icon&&user.icon.length>0?user.icon[0].url:''"></image>
 					<view class="name">
-						<text>{{user.name||'暂无'}}</text>
+						<text>{{user.name||'暂无名称'}}</text>
 						<text>普通会员</text>
 					</view>
 				</view>
@@ -122,8 +122,23 @@
 				],
 			};
 		},
-		onShow: function() {},
+		onShow: function() {
+			const that = this;
+			that.watchLogin();
+		},
 		methods: {
+			watchLogin() {
+				const that = this;
+				uni.getStorage({
+					key: 'token',
+					success: (res) => {
+						let user = that.$jwt(res.data);
+						console.log(user);
+						if (user) that.$set(that, `user`, user);
+					},
+					fail: (err) => {}
+				})
+			},
 			toPath(e) {
 				if (e && e.route) uni.redirectTo({
 					url: `/${e.route}`
@@ -135,6 +150,9 @@
 					key: 'token',
 					success: function(res) {
 						console.log(res);
+						// uni.navigateTo({
+						// 	url: `/${e}`
+						// })
 					},
 					fail: function(err) {
 						uni.navigateTo({
@@ -142,9 +160,7 @@
 						})
 					}
 				});
-				// uni.navigateTo({
-				// 	url: `/${e}`
-				// })
+
 			},
 			// 跳转页面
 			toOrrder(e) {
@@ -167,7 +183,7 @@
 		.one {
 			text-align: center;
 			padding: 4vw 0;
-			background-color: #FB1438;
+			background-color: var(--fFB1Color);
 			color: var(--mainColor);
 
 			.one_1 {
@@ -189,6 +205,10 @@
 					margin: 2vw 0;
 					font-size: var(--font18Szie);
 				}
+
+				.image {
+					border: 1px solid var(--f1Color);
+				}
 			}
 
 			.one_2 {