diff --git a/src/views/login.vue b/src/views/login.vue index 73c00ed..8f7db21 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -6,6 +6,8 @@ import type { LoginInfo } from '@/api/system/model' import type { Rule } from 'ant-design-vue/es/form'; import { useAuthStore } from '@/store'; import { storeToRefs } from 'pinia'; +import { getAccount } from '@/utils/auth'; +import { decrypt } from '@/utils/jsencrypt'; const authStore = useAuthStore(); const { loginLoading } = storeToRefs(authStore); @@ -15,13 +17,14 @@ const formData = reactive({ username: '', password: '', uuid: '', - code: '' + code: '', }) // 验证码图片 const captchaImg = ref('') const captchaLoading = ref(false) const loadCaptchaFail = ref(false) +const rememberMe = ref(false) // 表单验证规则 const rules: Record = { @@ -61,16 +64,27 @@ const refreshCaptcha = async () => { } } +// 初始化 +const initLoginForm = () => { + const { username, password, rememberMe: isRememberMe } = getAccount(); + if (isRememberMe && isRememberMe === 'true') { + rememberMe.value = true; + formData.username = username || ''; + formData.password = decrypt(password || '') || ''; + } +} + // 登录处理 const handleLogin = async () => { try { - await authStore.authLogin(formData); + await authStore.authLogin(formData, rememberMe.value); } catch (error: any) { - message.error(error.message || '登录失败'); + message.error(error.message || error.msg || '登录失败'); await refreshCaptcha(); } } +initLoginForm() // 组件挂载时获取验证码 refreshCaptcha() @@ -104,6 +118,7 @@ refreshCaptcha() placeholder="请输入用户名" size="large" class="login-input" + allow-clear >