register.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. <template>
  2. <view class="register">
  3. <view class="title">欢迎注册</view>
  4. <view class="form">
  5. <uni-forms ref="form" :modelValue="dataForm" :rules="rules" validate-trigger="bind" label-width="80px">
  6. <uni-forms-item name="userName" label="用户名">
  7. <uni-easyinput type="text" v-model="dataForm.userName" placeholder="用户名" maxlength="20"/>
  8. </uni-forms-item>
  9. <uni-forms-item name="nickName" label="昵称">
  10. <uni-easyinput type="text" v-model="dataForm.nickName" placeholder="昵称" maxlength="20"/>
  11. </uni-forms-item>
  12. <uni-forms-item name="password" label="密码">
  13. <uni-easyinput type="password" v-model="dataForm.password" placeholder="密码" maxlength="20"/>
  14. </uni-forms-item>
  15. <uni-forms-item name="corfirmPassword" label="确认密码">
  16. <uni-easyinput type="password" v-model="dataForm.corfirmPassword" placeholder="确认密码" maxlength="20"/>
  17. </uni-forms-item>
  18. <button class="btn-submit" @click="submit" type="primary">注册并登录</button>
  19. </uni-forms>
  20. </view>
  21. <navigator class="nav-login" url="/pages/login/login">
  22. 返回登录页面
  23. </navigator>
  24. </view>
  25. </template>
  26. <script>
  27. export default {
  28. data() {
  29. return {
  30. dataForm: {
  31. userName: '',
  32. nickName: '',
  33. password: '',
  34. corfirmPassword: ''
  35. },
  36. rules: {
  37. userName: {
  38. rules: [{
  39. required: true,
  40. errorMessage: '请输入用户名',
  41. }]
  42. },
  43. nickName: {
  44. rules: [{
  45. required: true,
  46. errorMessage: '请输入昵称',
  47. }]
  48. },
  49. password: {
  50. rules: [{
  51. required: true,
  52. errorMessage: '请输入密码',
  53. }]
  54. },
  55. corfirmPassword: {
  56. rules: [{
  57. required: true,
  58. errorMessage: '请输入确认密码',
  59. }, {
  60. validateFunction: (rule, value, data, callback) => {
  61. if (data.password != value) {
  62. callback('两次密码输入不一致')
  63. }
  64. return true;
  65. }
  66. }]
  67. }
  68. }
  69. }
  70. },
  71. methods: {
  72. submit() {
  73. this.$refs.form.validate().then(() => {
  74. this.$http({
  75. url: '/register',
  76. data: this.dataForm,
  77. method: 'POST'
  78. }).then(() => {
  79. uni.showToast({
  80. title: "注册成功,您已成为盒子IM的用户",
  81. icon: 'none'
  82. })
  83. this.login();
  84. })
  85. })
  86. },
  87. login() {
  88. const loginForm = {
  89. terminal: this.$enums.TERMINAL_TYPE.APP,
  90. userName: this.dataForm.userName,
  91. password: this.dataForm.password
  92. }
  93. this.$http({
  94. url: '/login',
  95. data: loginForm,
  96. method: 'POST'
  97. }).then((loginInfo) => {
  98. console.log("登录成功,自动跳转到聊天页面...")
  99. uni.setStorageSync("userName", loginForm.userName);
  100. uni.setStorageSync("password", loginForm.password);
  101. uni.setStorageSync("loginInfo", loginInfo);
  102. // 调用App.vue的初始化方法
  103. getApp().init()
  104. // 跳转到聊天页面
  105. uni.switchTab({
  106. url: "/pages/chat/chat"
  107. })
  108. })
  109. }
  110. }
  111. }
  112. </script>
  113. <style lang="scss" scoped>
  114. .register {
  115. .title {
  116. padding-top: 250rpx;
  117. padding-bottom: 50rpx;
  118. color: $im-color-primary;
  119. text-align: center;
  120. font-size: 24px;
  121. font-weight: 600;
  122. }
  123. .form {
  124. padding: 50rpx;
  125. .btn-submit {
  126. margin-top: 80rpx;
  127. border-radius: 50rpx;
  128. }
  129. }
  130. .nav-login {
  131. position: fixed;
  132. width: 100%;
  133. bottom: 100rpx;
  134. color: $im-color-primary;
  135. text-align: center;
  136. font-size: 32rpx;
  137. }
  138. }
  139. </style>