login.vue 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <template>
  2. <div style="background-color: white">
  3. <van-row>
  4. <van-col span="24">
  5. <van-swipe :autoplay="3000" :width="'100%'">
  6. <van-swipe-item v-for="(image, index) in images" :key="index">
  7. <img width="100%" height="100%" :src="image" />
  8. </van-swipe-item>
  9. </van-swipe>
  10. </van-col>
  11. </van-row>
  12. <van-row>
  13. <van-col span="18" offset="3">
  14. <van-cell-group>
  15. <br />
  16. <van-field
  17. v-model="loginForm.username"
  18. input-align="center"
  19. center
  20. placeholder="请输入用户名"
  21. clearable
  22. style="border-bottom: 1px solid #b2568c"
  23. >
  24. <template slot="left-icon">
  25. <van-icon name="manager" color="#B2568C" size="20" />
  26. </template>
  27. </van-field>
  28. <br />
  29. <van-field
  30. v-model="loginForm.password"
  31. input-align="center"
  32. center
  33. type="password"
  34. placeholder="请输入密码"
  35. clearable
  36. style="border-bottom: 1px solid #b2568c"
  37. >
  38. <template slot="left-icon">
  39. <van-icon name="eye" color="#B2568C" size="20" />
  40. </template>
  41. </van-field>
  42. <!-- <van-field v-model="loginForm.validateCode" clearable label="验证码" placeholder="请输入验证码">-->
  43. <!-- <template #button>-->
  44. <img
  45. id="codeImg"
  46. style="height: 0px; position: absolute"
  47. alt="点击更换"
  48. title="点击更换"
  49. :src="loginForm.captchaImage"
  50. @click="captchaImageRefresh(loginForm)"
  51. />
  52. <!-- </template>-->
  53. <!-- </van-field>-->
  54. <br />
  55. <van-cell>
  56. <template #right-icon>
  57. <van-checkbox
  58. checked-color="#B2568C"
  59. v-model="loginForm.checked"
  60. icon-size="16px"
  61. >
  62. 记住密码
  63. </van-checkbox>
  64. </template>
  65. </van-cell>
  66. <br />
  67. <van-button
  68. color="#B2568C"
  69. :loading="loading"
  70. round
  71. type="info"
  72. block
  73. @click="loginClick"
  74. >
  75. 登录
  76. </van-button>
  77. </van-cell-group>
  78. </van-col>
  79. </van-row>
  80. </div>
  81. </template>
  82. <script>
  83. import { Toast } from 'vant'
  84. import img from '../static/img.jpg'
  85. export default {
  86. name: 'Login',
  87. data() {
  88. return {
  89. loginForm: {
  90. username: 'admin',
  91. password: '',
  92. validateCode: '',
  93. captchaId: '',
  94. captchaImage: '',
  95. url: 'login',
  96. checked: true
  97. },
  98. loading: false,
  99. images: [img]
  100. }
  101. },
  102. watch: {},
  103. created() {
  104. this.loginForm.checked = localStorage.getItem('remember') === '1'
  105. if (this.loginForm.checked) {
  106. this.loginForm.username = localStorage.getItem('username')
  107. this.loginForm.password = localStorage.getItem('password')
  108. }
  109. },
  110. mounted() {
  111. this.$store.dispatch('user/cleanCache')
  112. this.captchaImageRefresh(this.loginForm)
  113. },
  114. methods: {
  115. loginClick: function () {
  116. this.loading = true
  117. localStorage.setItem('remember', this.loginForm.checked ? '1' : '0')
  118. localStorage.setItem('username', this.loginForm.username)
  119. localStorage.setItem('password', this.loginForm.password)
  120. this.$store
  121. .dispatch('user/login', this.loginForm)
  122. .then(res => {
  123. if (res.result) {
  124. this.$router.push('/')
  125. this.loading = false
  126. Toast('登录成功')
  127. } else {
  128. Toast(res.msg)
  129. this.loading = false
  130. }
  131. })
  132. .catch(err => {
  133. Toast(err)
  134. this.loading = false
  135. })
  136. },
  137. captchaImageRefresh: function (_form) {
  138. _form.captchaId = this.$common.uuid(8)
  139. _form.captchaImage =
  140. this.$constant.BASE_URI +
  141. '/captcha/captchaImage?type=math&captchaId=' +
  142. _form.captchaId +
  143. '&s=' +
  144. Math.random()
  145. }
  146. }
  147. }
  148. </script>