Browse Source

#311

* Add register function.

* Add register function.

Co-authored-by: Longbao Ye <yelongbao@126.com>
linlinjava 6 years ago
parent
commit
7df32f31c8

+ 7 - 0
litemall-vue/src/api/api.js

@@ -59,6 +59,13 @@ export function authProfile(data) {
   })
 }
 const AuthRegister='wx/auth/register'; //账号注册
+export function authRegister(data) {
+  return request({
+    url: AuthRegister,
+    method: 'post',
+    data
+  });
+}
 const AuthReset='wx/auth/reset'; //账号密码重置
 export function authReset(data) {
   return request({

+ 2 - 1
litemall-vue/src/router/login.js

@@ -10,8 +10,9 @@ export default [
     component: () => import('@/views/login/register-getCode')
   },
   {
-    path: '/login/registerSubmit',
+    path: '/login/registerSubmit/:phone',
     name: 'registerSubmit',
+    props: true,
     component: () => import('@/views/login/register-submit')
   },
   {

+ 16 - 1
litemall-vue/src/views/login/register-getCode/index.vue

@@ -20,6 +20,7 @@
 <script>
 import field from '@/components/field/';
 import fieldGroup from '@/components/field-group/';
+import { mobileReg } from '@/utils/validate';
 
 export default {
   data() {
@@ -30,7 +31,21 @@ export default {
 
   methods: {
     submitCode() {
-      this.$router.push({ name: 'registerSubmit' });
+      if(this.mobile === ''){
+        return
+      }
+      if(!mobileReg.test(this.mobile)){
+        this.mobile = ''
+        return
+      }
+    	try {
+        this.$router.push({
+          name: 'registerSubmit',
+          params: { phone: this.mobile}
+        });
+      } catch (error) {
+        console.log(error.message);
+      }
     }
   },
 

+ 52 - 28
litemall-vue/src/views/login/register-status/index.vue

@@ -5,39 +5,63 @@
 			<div>{{statusText}}</div>
 		</div>
 
-		<div class="status_text"><span class="red">3秒</span>后返回到登录页, 您也可以<router-link to="/login" class="red">点此登录</router-link></div>
+		<div class="status_text">
+			<span class="red">
+				<countdown v-if="counting" :time="3000" @end="countDownEnd">
+					<template slot-scope="props">{{ +props.seconds || 3 }}</template>秒
+				</countdown>
+			</span>
+			后返回到登录页, 您也可以
+			<router-link to="/login" class="red">点此登录</router-link>
+		</div>
 	</div>
 </template>
 
 <script>
+import field from '@/components/field/';
+import fieldGroup from '@/components/field-group/';
+
 export default {
-  name: 'payment-status',
-
-  props: {
-    status: String
-  },
-
-  data() {
-    return {
-      isSuccess: true
-    };
-  },
-
-  computed: {
-    statusText() {
-      return this.isSuccess ? '注册成功' : '注册失败';
-    },
-    statusIcon() {
-      return this.isSuccess ? 'checked' : 'fail';
-    },
-    statusClass() {
-      return this.isSuccess ? 'success_icon' : 'fail_icon';
-    }
-  },
-
-  activated() {
-    this.isSuccess = this.status === 'success';
-  }
+	name: 'payment-status',
+
+	props: {
+		status: String
+	},
+
+	data() {
+		return {
+			counting: true,
+			isSuccess: true
+		};
+	},
+
+	methods:{
+		countDownEnd() {
+			this.counting = false;
+			window.location = '#/login/';
+		}
+	},
+
+	computed: {
+		statusText() {
+			return this.isSuccess ? '注册成功' : '注册失败';
+		},
+		statusIcon() {
+			return this.isSuccess ? 'checked' : 'fail';
+		},
+		statusClass() {
+			return this.isSuccess ? 'success_icon' : 'fail_icon';
+		}
+	},
+
+	activated() {
+		this.isSuccess = this.status === 'success';
+	},
+
+	components: {
+		[field.name]: field,
+		[fieldGroup.name]: fieldGroup
+	}
 };
 </script>
 

+ 68 - 13
litemall-vue/src/views/login/register-submit/index.vue

@@ -2,12 +2,13 @@
 	<md-field-group class="register_submit">
 		<md-field v-model="code" icon="mobile" placeholder="请输入验证码">
 			<div slot="rightIcon" @click="getCode" class="getCode red">
-				<countdown v-if="counting" :time="60000" @end="countdownend">
+				<countdown v-if="counting" :time="60000" @end="countDownEnd">
 				  <template slot-scope="props">{{ +props.seconds || 60 }}秒后获取</template>
 				</countdown>
 				<span v-else>获取验证码</span>
 			</div>
 		</md-field>
+		<md-field v-model="username" icon="username" placeholder="请输入用户名"/>
 		<md-field v-model="password" icon="lock" placeholder="请输入密码"/>
 		<md-field v-model="repeatPassword" icon="lock" placeholder="请再次确认密码"/>
 
@@ -20,29 +21,83 @@
 <script>
 import field from '@/components/field/';
 import fieldGroup from '@/components/field-group/';
+import { authRegisterCaptcha } from '@/api/api';
+import { authRegister } from '@/api/api';
+import {Toast} from "vant";
 
 export default {
-  data() {
-    return {
-      counting: true,
-      code: '',
-      password: '',
-      repeatPassword: ''
-    };
-  },
+	props: {
+		phone: String
+	},
+	data() {
+		return {
+		  counting: true,
+		  code: '',
+		  username: '',
+		  password: '',
+		  repeatPassword: ''
+		};
+	},
+	mounted:function(){
+		this.getCode();
+	},
 
   methods: {
     registerSubmit() {
-      this.$router.push({
-        name: 'registerStatus',
-        params: { status: 'success' }
+      if(this.username === '' || this.code === ''){
+        return
+      }
+      if(this.password === '' || this.repeatPassword === ''){
+        return
+      }
+      if(this.password !== this.repeatPassword){
+        this.password = ''
+        this.repeatPassword = ''
+        return
+      }
+      let data = this.getRegisterData();
+      authRegister(data).then(res => {
+        this.$router.push({
+          name: 'registerStatus',
+          params: { status: 'success' }
+        });
+      }).catch (error => {
+        Toast.fail(error.data.errmsg);
+        if (error.data.errno == 705) {
+          window.location = '#/login/';
+        }
       });
     },
 
     getCode() {
       this.counting = true;
+      let data = {
+        mobile: this.phone
+      };
+      authRegisterCaptcha(data).then(res => {
+        this.counting = true;
+      }).catch(error => {
+        alert(error.data.errmsg);
+        this.counting = true;
+      });
     },
-    countdownend() {
+
+    getRegisterData() {
+      const password = this.password;
+      const code = this.code;
+      const repeatPassword = this.repeatPassword;
+      const mobile = this.phone;
+      const username = this.username;
+      return {
+        code: code,
+        username: username,
+        password: password,
+        repeatPassword: repeatPassword,
+        mobile: mobile
+      };
+    },
+
+    countDownEnd() {
       this.counting = false;
     }
   },

+ 1 - 2
litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxAuthController.java

@@ -318,14 +318,13 @@ public class WxAuthController {
 
         // token
         String token = UserTokenManager.generateToken(user.getId());
-        
+
         Map<Object, Object> result = new HashMap<Object, Object>();
         result.put("token", token);
         result.put("userInfo", userInfo);
         return ResponseUtil.ok(result);
     }
 
-
     /**
      * 请求验证码
      *