浏览代码

去掉h5标题、补充注册页面

xsx 1 年之前
父节点
当前提交
75c9a0744f

+ 1 - 1
im-platform/src/main/java/com/bx/implatform/controller/LoginController.java

@@ -22,7 +22,7 @@ public class LoginController {
 
     @PostMapping("/login")
     @Operation(summary = "用户登陆", description = "用户登陆")
-    public Result login(@Valid @RequestBody LoginDTO dto) {
+    public Result<LoginVO> login(@Valid @RequestBody LoginDTO dto) {
         LoginVO vo = userService.login(dto);
         return ResultUtils.success(vo);
     }

+ 1 - 1
im-platform/src/main/java/com/bx/implatform/service/impl/UserServiceImpl.java

@@ -108,7 +108,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     @Override
     public void register(RegisterDTO dto) {
         User user = this.findUserByUserName(dto.getUserName());
-        if (null != user) {
+        if (Objects.isNull(user)) {
             throw new GlobalException(ResultCode.USERNAME_ALREADY_REGISTER);
         }
         user = BeanUtils.copyProperties(dto, User.class);

+ 8 - 7
im-uniapp/App.vue

@@ -353,10 +353,16 @@
 <style lang="scss">
 	@import "@/uni_modules/uview-plus/index.scss";
 	@import url('./static/icon/iconfont.css');
-	
+
+	// #ifdef H5 
+	uni-page-head {
+		display: none; // h5浏览器本身就有标题
+	}
+	// #endif
+
 	.tab-page {
 		// #ifdef H5
-		height: calc(100vh - 46px - 50px); // h5平台100vh是包含了顶部和底部,需要减去
+		height: calc(100vh  - 50px); // h5平台100vh是包含了底部高度,需要减去
 		// #endif
 		// #ifndef H5
 		height: calc(100vh);
@@ -365,12 +371,7 @@
 	}
 
 	.page {
-		// #ifdef H5
-		height: calc(100vh - 45px); // h5平台100vh是包含了顶部,需要减去
-		// #endif
-		// #ifndef H5
 		height: calc(100vh);
-		// #endif
 		background-color: #f8f8f8;
 	}
 </style>

+ 2 - 0
im-uniapp/pages.json

@@ -10,6 +10,8 @@
 	"pages": [{
 		"path": "pages/login/login"
 	}, {
+		"path" : "pages/register/register"
+	},{
 		"path": "pages/chat/chat"
 	}, {
 		"path": "pages/friend/friend"

+ 1 - 1
im-uniapp/pages/group/group-member.vue

@@ -15,7 +15,7 @@
 						<view class="member-name">{{ member.aliasName}}</view>
 						
 						<view class="member-kick">
-							<button type="warn" v-show="isOwner && !isSelf(member.userId)" size="mini"
+							<button type="warn" plain v-show="isOwner && !isSelf(member.userId)" size="mini"
 								@click.stop="onKickOut(member,idx)">移出群聊</button>
 						</view>
 					</view>

+ 34 - 12
im-uniapp/pages/login/login.vue

@@ -1,15 +1,19 @@
 <template>
-	<view class="login-form">
-		<view class="login-title">欢迎登录</view>
-		<uni-forms style="margin-top: 100px;" :modelValue="loginForm" :rules="rules" validate-trigger="bind">
+	<view class="page login">
+		<view class="title">欢迎登录</view>
+		<uni-forms class="form" :modelValue="loginForm" :rules="rules" validate-trigger="bind">
 			<uni-forms-item name="userName">
-				<uni-easyinput type="text" v-model="loginForm.userName" prefix-icon="person"  placeholder="用户名" />
+				<uni-easyinput type="text" v-model="loginForm.userName" prefix-icon="person" placeholder="用户名" />
 			</uni-forms-item>
 			<uni-forms-item name="password">
 				<uni-easyinput type="password" v-model="loginForm.password" prefix-icon="locked" placeholder="密码" />
 			</uni-forms-item>
-			<button @click="submit" type="primary">登录</button>
+			<button class="btn-submit" @click="submit" type="primary">登录</button>
 		</uni-forms>
+		<navigator class="nav-register" url="/pages/register/register" render-link="true"
+			hover-class="other-navigator-hover">
+			没有账号,前往注册
+		</navigator>
 
 	</view>
 </template>
@@ -49,7 +53,7 @@
 					console.log("登录成功,自动跳转到聊天页面...")
 					uni.setStorageSync("userName", this.loginForm.userName);
 					uni.setStorageSync("password", this.loginForm.password);
-					loginInfo.expireTime = new Date().getTime() + loginInfo.refreshTokenExpiresIn*1000;
+					loginInfo.expireTime = new Date().getTime() + loginInfo.refreshTokenExpiresIn * 1000;
 					uni.setStorageSync("loginInfo", loginInfo);
 					// 调用App.vue的初始化方法
 					getApp().init()
@@ -60,7 +64,7 @@
 				})
 			}
 		},
-		
+
 		onLoad() {
 			this.loginForm.userName = uni.getStorageSync("userName");
 			this.loginForm.password = uni.getStorageSync("password");
@@ -69,16 +73,34 @@
 </script>
 
 <style lang="scss" scoped>
-	.login-form {
-		margin: 50rpx;
+	.login {
+
 
-		.login-title {
-			margin-top: 100rpx;
-			margin-bottom: 100rpx;
+		.title {
+			padding-top: 150rpx;
+			padding-bottom: 100rpx;
 			color: royalblue;
 			text-align: center;
 			font-size: 60rpx;
 			font-weight: 600;
 		}
+
+		.form {
+			padding: 50rpx;
+
+			.btn-submit {
+				margin-top: 80rpx;
+				border-radius: 50rpx;
+			}
+		}
+
+		.nav-register {
+			position: fixed;
+			width: 100%;
+			bottom: 100rpx;
+			color: royalblue;
+			text-align: center;
+			font-size: 32rpx;
+		}
 	}
 </style>

+ 142 - 0
im-uniapp/pages/register/register.vue

@@ -0,0 +1,142 @@
+<template>
+	<view class="register">
+		<view class="title">用户注册</view>
+		<uni-forms class="form" :modelValue="dataForm" :rules="rules" validate-trigger="bind" label-width="80px">
+			<uni-forms-item name="userName" label="用户名">
+				<uni-easyinput type="text" v-model="dataForm.userName" placeholder="用户名" />
+			</uni-forms-item>
+			<uni-forms-item name="nickName" label="昵称">
+				<uni-easyinput type="text" v-model="dataForm.nickName" placeholder="昵称" />
+			</uni-forms-item>
+			<uni-forms-item name="password" label="密码">
+				<uni-easyinput type="password" v-model="dataForm.password" placeholder="密码" />
+			</uni-forms-item>
+			<uni-forms-item name="corfirmPassword" label="确认密码">
+				<uni-easyinput type="password" v-model="dataForm.corfirmPassword" placeholder="确认密码" />
+			</uni-forms-item>
+			<button class="btn-submit" @click="submit" type="warn">注册并登陆</button>
+		</uni-forms>
+		<navigator class="nav-login" url="/pages/login/login" render-link="true" hover-class="other-navigator-hover">
+			返回登陆页面
+		</navigator>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				dataForm: {
+					userName: '',
+					nickName: '',
+					password: '',
+					corfirmPassword: ''
+				},
+				rules: {
+					userName: {
+						rules: [{
+							required: true,
+							errorMessage: '请输入用户名',
+						}]
+					},
+					nickName: {
+						rules: [{
+							required: true,
+							errorMessage: '请输入昵称',
+						}]
+					},
+					password: {
+						rules: [{
+							required: true,
+							errorMessage: '请输入密码',
+						}]
+					},
+					corfirmPassword: {
+						rules: [{
+							required: true,
+							errorMessage: '请输入确认密码',
+						}, {
+							validateFunction: (rule, value, data, callback) => {
+								console.log("validateFunction")
+								if (data.password != value) {
+									callback('两次密码输入不一致')
+								}
+								return true;
+							}
+						}]
+					}
+				}
+			}
+		},
+		methods: {
+			submit() {
+				this.$http({
+					url: '/register',
+					data: this.dataForm,
+					method: 'POST'
+				}).then(() => {
+					uni.showToast({
+						title: "注册成功",
+						icon: 'none'
+					})
+					this.login();
+				})
+			},
+			login() {
+				const loginForm = {
+					terminal: this.$enums.TERMINAL_TYPE.APP,
+					userName: this.dataForm.userName,
+					password: this.dataForm.password
+				}
+				this.$http({
+					url: '/login',
+					data: loginForm,
+					method: 'POST'
+				}).then((loginInfo) => {
+					console.log("登录成功,自动跳转到聊天页面...")
+					uni.setStorageSync("userName", loginForm.userName);
+					uni.setStorageSync("password", loginForm.password);
+					loginInfo.expireTime = new Date().getTime() + loginInfo.refreshTokenExpiresIn * 1000;
+					uni.setStorageSync("loginInfo", loginInfo);
+					// 调用App.vue的初始化方法
+					getApp().init()
+					// 跳转到聊天页面   
+					uni.switchTab({
+						url: "/pages/chat/chat"
+					})
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.register {
+		.title {
+			padding-top: 150rpx;
+			padding-bottom: 100rpx;
+			color: royalblue;
+			text-align: center;
+			font-size: 60rpx;
+			font-weight: 600;
+		}
+
+		.form {
+			padding: 50rpx;
+
+			.btn-submit {
+				margin-top: 80rpx;
+				border-radius: 50rpx;
+			}
+		}
+
+		.nav-login {
+			position: fixed;
+			width: 100%;
+			bottom: 100rpx;
+			color: royalblue;
+			text-align: center;
+			font-size: 32rpx;
+		}
+	}
+</style>