register.vue 3.2 KB

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