login.vue 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <template>
  2. <div class="login">
  3. <div>
  4. <div class="avatar-box">
  5. <img src="../assets/img/icon/u44.png" alt="" />
  6. </div>
  7. <van-form @submit="onSubmit">
  8. <van-field
  9. border
  10. v-model="formData.username"
  11. name="用户名"
  12. placeholder="请输入用户名"
  13. :rules="[{ required: true, message: '请输入用户名' }]"
  14. />
  15. <van-field
  16. border
  17. v-model="formData.password"
  18. type="password"
  19. name="密码"
  20. placeholder="请输入密码"
  21. :rules="[{ required: true, message: '请输入密码' }]"
  22. />
  23. <van-cell value="忘记密码">
  24. <!-- 使用 title 插槽来自定义标题 -->
  25. <template #title>
  26. <van-checkbox class="custom-title" icon-size="15" v-model="checked" shape="square">记住密码</van-checkbox>
  27. </template>
  28. </van-cell>
  29. <!-- <div>-->
  30. <!-- <van-checkbox v-model="checked" shape="square">记住密码</van-checkbox>-->
  31. <!-- <a href=""> 忘记密码 </a>-->
  32. <!-- </div>-->
  33. <div style="margin: 16px;">
  34. <van-button block type="info" native-type="submit">登录</van-button>
  35. </div>
  36. </van-form>
  37. </div>
  38. </div>
  39. </template>
  40. <script>2
  41. // 请求接口
  42. import {login} from '@/api/public.js'
  43. import { mapGetters } from 'vuex'
  44. export default {
  45. data() {
  46. return {
  47. wechat: `${this.$cdn}/wx/640.gif`,
  48. formData:{
  49. username:'admin',
  50. password:'Admin1234',
  51. },
  52. pattern: /\d{6}/,
  53. checked:false
  54. }
  55. },
  56. computed: {
  57. ...mapGetters(['userName'])
  58. },
  59. mounted() {
  60. },
  61. methods: {
  62. onSubmit(){
  63. login(this.formData).then(res => {
  64. console.log(res,'res')
  65. sessionStorage.setItem('access_token',res.data.access_token);
  66. this.$router.replace('/home');
  67. })
  68. },
  69. }
  70. }
  71. </script>
  72. <style lang="scss">
  73. //.van-cell__title{
  74. // align-items: center;
  75. //}
  76. //.custom-title{
  77. // align-self: center;
  78. //}
  79. </style>
  80. <style scoped lang="scss">
  81. .login {
  82. height: 100vh;
  83. background: url("../assets/img/login-background.png") top left no-repeat #edfcff;
  84. background-size: 100%;
  85. display: flex;
  86. justify-content: center;
  87. align-items: center;
  88. > div {
  89. width: 450px;
  90. padding: 30px 0;
  91. display: flex;
  92. flex-direction: column;
  93. align-items: center;
  94. background-color: #fff;
  95. border-radius: 10px;
  96. .avatar-box {
  97. display: flex;
  98. justify-content: center;
  99. align-items: center;
  100. width: 150px;
  101. height: 150px;
  102. border-radius: 100%;
  103. border: 1px solid #ccc;
  104. }
  105. }
  106. h2 {
  107. letter-spacing: 10px;
  108. text-align: center;
  109. }
  110. .custom-title {
  111. align-self: center;
  112. vertical-align: middle;
  113. }
  114. }
  115. </style>