register.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  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="用户名" />
  8. </uni-forms-item>
  9. <uni-forms-item name="nickName" label="昵称">
  10. <uni-easyinput type="text" v-model="dataForm.nickName" placeholder="昵称" />
  11. </uni-forms-item>
  12. <uni-forms-item name="password" label="密码">
  13. <uni-easyinput type="password" v-model="dataForm.password" placeholder="密码" />
  14. </uni-forms-item>
  15. <uni-forms-item name="corfirmPassword" label="确认密码">
  16. <uni-easyinput type="password" v-model="dataForm.corfirmPassword" placeholder="确认密码" />
  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. console.log("validateFunction")
  62. if (data.password != value) {
  63. callback('两次密码输入不一致')
  64. }
  65. return true;
  66. }
  67. }]
  68. }
  69. }
  70. }
  71. },
  72. methods: {
  73. submit() {
  74. this.$refs.form.validate().then(() => {
  75. this.$http({
  76. url: '/register',
  77. data: this.dataForm,
  78. method: 'POST'
  79. }).then(() => {
  80. uni.showToast({
  81. title: "注册成功,您已成为盒子IM的用户",
  82. icon: 'none'
  83. })
  84. this.login();
  85. })
  86. })
  87. },
  88. login() {
  89. const loginForm = {
  90. terminal: this.$enums.TERMINAL_TYPE.APP,
  91. userName: this.dataForm.userName,
  92. password: this.dataForm.password
  93. }
  94. this.$http({
  95. url: '/login',
  96. data: loginForm,
  97. method: 'POST'
  98. }).then((loginInfo) => {
  99. console.log("登录成功,自动跳转到聊天页面...")
  100. uni.setStorageSync("userName", loginForm.userName);
  101. uni.setStorageSync("password", loginForm.password);
  102. uni.setStorageSync("loginInfo", loginInfo);
  103. // 调用App.vue的初始化方法
  104. getApp().init()
  105. // 跳转到聊天页面
  106. uni.switchTab({
  107. url: "/pages/chat/chat"
  108. })
  109. })
  110. }
  111. }
  112. }
  113. </script>
  114. <style lang="scss" scoped>
  115. .register {
  116. .title {
  117. padding-top: 250rpx;
  118. padding-bottom: 50rpx;
  119. color: $im-color-primary;
  120. text-align: center;
  121. font-size: 24px;
  122. font-weight: 600;
  123. }
  124. .form {
  125. padding: 50rpx;
  126. .btn-submit {
  127. margin-top: 80rpx;
  128. border-radius: 50rpx;
  129. }
  130. }
  131. .nav-login {
  132. position: fixed;
  133. width: 100%;
  134. bottom: 100rpx;
  135. color: $im-color-primary;
  136. text-align: center;
  137. font-size: 32rpx;
  138. }
  139. }
  140. </style>