login.vue 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <template>
  2. <div class="header">
  3. <h2>{{ $t('sys.loginh2') }}</h2>
  4. <!-- <p>{{ $t('sys.loginh2') }}</p> -->
  5. </div>
  6. <a-form :model="loginState" class="form" @finish="login">
  7. <a-form-item name="phone" :rules="[phoneRule]">
  8. <a-input
  9. v-model:value="loginState.phone"
  10. style="height: 50px"
  11. :placeholder="$t('sys.phoneRule')"
  12. />
  13. </a-form-item>
  14. <a-form-item name="password" :rules="[passwordRule]">
  15. <a-input-password
  16. v-model:value="loginState.password"
  17. :placeholder="$t('sys.passwordRule')"
  18. style="height: 50px"
  19. />
  20. </a-form-item>
  21. <a-form-item>
  22. <a-form-item name="remember" no-style>
  23. <a-checkbox v-model:checked="loginState.remember">{{
  24. $t('sys.rememberLabel')
  25. }}</a-checkbox>
  26. </a-form-item>
  27. </a-form-item>
  28. <a-form-item>
  29. <a-button
  30. type="primary"
  31. html-type="submit"
  32. block
  33. class="login-form-button"
  34. style="height: 50px"
  35. >
  36. {{ $t('sys.login') }}
  37. </a-button>
  38. </a-form-item>
  39. </a-form>
  40. <div class="footer">
  41. <!-- <a :href="forgetLink">{{ $t('sys.forget') }}</a>
  42. <a :href="registerLink">{{ $t('sys.register') }}</a> -->
  43. <!-- 紧急处理 -->
  44. <a href="//www.4dkankan.jp">{{ $t('sys.forget') }}</a>
  45. <a href="//www.4dkankan.jp">{{ $t('sys.register') }}</a>
  46. </div>
  47. </template>
  48. <script setup lang="ts">
  49. import { useUserStore } from '@/store'
  50. import { router, RoutesName } from '@/router'
  51. import { phoneRule, passwordRule, encodePwd, useCacheState } from './shared'
  52. import { registerLink, forgetLink } from '@/env'
  53. defineOptions({ name: 'Login' })
  54. const [loginState, saveLoginState] = useCacheState()
  55. const userStore = useUserStore()
  56. const login = async () => {
  57. saveLoginState()
  58. await userStore.login({
  59. phone: loginState.value.phone,
  60. password: encodePwd(loginState.value.password)
  61. })
  62. router.push({ name: RoutesName.personal })
  63. }
  64. </script>
  65. <style scoped lang="scss">
  66. @import './shared/style.scss';
  67. </style>