login.vue 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <template>
  2. <view class="login-form">
  3. <view class="login-title">欢迎登录</view>
  4. <uni-forms style="margin-top: 100px;" :modelValue="loginForm" :rules="rules" validate-trigger="bind">
  5. <uni-forms-item name="userName">
  6. <uni-easyinput type="text" v-model="loginForm.userName" prefix-icon="person" focus placeholder="用户名" />
  7. </uni-forms-item>
  8. <uni-forms-item name="password">
  9. <uni-easyinput type="password" v-model="loginForm.password" prefix-icon="locked" placeholder="密码" />
  10. </uni-forms-item>
  11. <button @click="submit" type="primary">登录</button>
  12. </uni-forms>
  13. </view>
  14. </template>
  15. <script>
  16. export default {
  17. data() {
  18. return {
  19. loginForm: {
  20. terminal: 1, // APP终端
  21. userName: '',
  22. password: ''
  23. },
  24. rules: {
  25. userName: {
  26. rules: [{
  27. required: true,
  28. errorMessage: '请输入用户名',
  29. }]
  30. },
  31. password: {
  32. rules: [{
  33. required: true,
  34. errorMessage: '请输入密码',
  35. }]
  36. }
  37. }
  38. }
  39. },
  40. methods: {
  41. submit() {
  42. this.$http({
  43. url: '/login',
  44. data: this.loginForm,
  45. method: 'POST'
  46. }).then(data => {
  47. console.log("登录成功,自动跳转到聊天页面...")
  48. uni.setStorageSync("loginInfo", data);
  49. uni.setStorageSync("userName", this.loginForm.userName);
  50. uni.setStorageSync("password", this.loginForm.password);
  51. // 调用App.vue的初始化方法
  52. getApp().init()
  53. // 跳转到聊天页面
  54. uni.switchTab({
  55. url: "/pages/chat/chat"
  56. })
  57. })
  58. }
  59. },
  60. onLoad() {
  61. this.loginForm.userName = uni.getStorageSync("userName");
  62. this.loginForm.password = uni.getStorageSync("password");
  63. let loginInfo = uni.getStorageSync("loginInfo");
  64. if (loginInfo) {
  65. // 跳转到聊天页面
  66. uni.switchTab({
  67. url: "/pages/chat/chat"
  68. })
  69. }
  70. }
  71. }
  72. </script>
  73. <style lang="scss" scoped>
  74. .login-form {
  75. margin: 50rpx;
  76. .login-title {
  77. margin-top: 100rpx;
  78. margin-bottom: 100rpx;
  79. color: royalblue;
  80. text-align: center;
  81. font-size: 60rpx;
  82. font-weight: 600;
  83. }
  84. }
  85. </style>