From 39edd84023109a84683c21ea33e41bd024756520 Mon Sep 17 00:00:00 2001 From: kailong321200875 <321200875@qq.com> Date: Sat, 25 Jun 2022 20:04:58 +0800 Subject: [PATCH] perf: perf axios config --- src/api-types/user.ts | 4 +- src/api/login/index.ts | 8 ++-- src/api/register/index.ts | 10 +++-- src/views/Login/components/LoginForm.vue | 44 ++++++++++++--------- src/views/Login/components/RegisterForm.vue | 18 +++++---- 5 files changed, 51 insertions(+), 33 deletions(-) diff --git a/src/api-types/user.ts b/src/api-types/user.ts index 7ffab0a79..05073ab7e 100644 --- a/src/api-types/user.ts +++ b/src/api-types/user.ts @@ -3,5 +3,7 @@ export interface IUserModel { password: string check_password: string is_admin: number - code: string | number + code?: string | number + token?: string + refreshToken?: string } diff --git a/src/api/login/index.ts b/src/api/login/index.ts index a27213582..3763ac2c3 100644 --- a/src/api/login/index.ts +++ b/src/api/login/index.ts @@ -1,13 +1,15 @@ import { useAxios } from '@/hooks/web/useAxios' -import type { UserLoginType, UserType } from './types' +import type { UserType } from './types' +import { IUserModel } from '@/api-types/user' const request = useAxios() -export const loginApi = (data: UserLoginType) => { - return request.post({ +export const loginApi = async (data: Pick) => { + const res = await request.post>({ url: '/user/login', data }) + return res && res.data } export const loginOutApi = () => { diff --git a/src/api/register/index.ts b/src/api/register/index.ts index bc5f2dd7a..6e2092431 100644 --- a/src/api/register/index.ts +++ b/src/api/register/index.ts @@ -8,12 +8,14 @@ interface ICodeModel { uuid: string } -export const getCodeApi = async () => { - const res = await request.get>({ url: 'user/captcha' }) +export const getCodeApi = async (): Promise> => { + const res = await request.get({ url: 'user/captcha' }) return res && res.data } -export const registerApi = async (data: Omit) => { - const res = await request.post>({ url: 'user/register', data }) +export const registerApi = async ( + data: Omit +): Promise> => { + const res = await request.post({ url: 'user/register', data }) return res && res.data } diff --git a/src/views/Login/components/LoginForm.vue b/src/views/Login/components/LoginForm.vue index b8e08ceca..5238d722d 100644 --- a/src/views/Login/components/LoginForm.vue +++ b/src/views/Login/components/LoginForm.vue @@ -6,12 +6,14 @@ import { ElButton, ElCheckbox, ElLink } from 'element-plus' import { required } from '@/utils/formRules' import { useForm } from '@/hooks/web/useForm' import { loginApi, getTestRoleApi, getAdminRoleApi } from '@/api/login' -import type { UserLoginType } from '@/api/login/types' import { useCache } from '@/hooks/web/useCache' import { useAppStore } from '@/store/modules/app' import { usePermissionStore } from '@/store/modules/permission' import { useRouter } from 'vue-router' import type { RouteLocationNormalizedLoaded, RouteRecordRaw } from 'vue-router' +import { IUserModel } from '@/api-types/user' +import md5 from 'js-md5' +import { cloneDeep } from 'lodash-es' const emit = defineEmits(['to-register']) @@ -21,10 +23,12 @@ const permissionStore = usePermissionStore() const { currentRoute, addRoute, push } = useRouter() +const { wsCache } = useCache() + const { t } = useI18n() const rules = { - username: [required], + user_name: [required], password: [required] } @@ -36,7 +40,7 @@ const schema = reactive([ } }, { - field: 'username', + field: 'user_name', label: t('login.username'), value: 'admin', component: 'Input', @@ -119,17 +123,21 @@ const signIn = async () => { if (isValid) { loading.value = true const { getFormData } = methods - const formData = await getFormData() - - const res = await loginApi(formData) - .catch(() => {}) - .finally(() => (loading.value = false)) - - if (res) { - const { wsCache } = useCache() - wsCache.set(appStore.getUserInfo, res.data) - - getRole() + const formData = await getFormData() + + try { + const { result } = await loginApi( + Object.assign(cloneDeep(formData), { + password: md5(formData.password) + }) + ) + + if (result) { + wsCache.set(appStore.getUserInfo, result) + getRole() + } + } finally { + loading.value = false } } }) @@ -138,14 +146,14 @@ const signIn = async () => { // 获取角色信息 const getRole = async () => { const { getFormData } = methods - const formData = await getFormData() + const formData = await getFormData() const params = { - roleName: formData.username + roleName: formData.user_name } // admin - 模拟后端过滤菜单 // test - 模拟前端过滤菜单 const res = - formData.username === 'admin' + formData.user_name === 'admin' ? await getAdminRoleApi({ params }) : await getTestRoleApi({ params }) if (res) { @@ -153,7 +161,7 @@ const getRole = async () => { const routers = res.data.list || [] wsCache.set('roleRouters', routers) - formData.username === 'admin' + formData.user_name === 'admin' ? await permissionStore.generateRoutes('admin', routers).catch(() => {}) : await permissionStore.generateRoutes('test', routers).catch(() => {}) diff --git a/src/views/Login/components/RegisterForm.vue b/src/views/Login/components/RegisterForm.vue index aab9069f7..c8657e6fb 100644 --- a/src/views/Login/components/RegisterForm.vue +++ b/src/views/Login/components/RegisterForm.vue @@ -134,9 +134,9 @@ const toLogin = () => { const codeUrl = ref('') const codeUuid = ref('') const getCode = async () => { - const res = await getCodeApi() - if (res) { - const { url, uuid } = res.result + const { result } = await getCodeApi() + if (result) { + const { url, uuid } = result codeUrl.value = url codeUuid.value = uuid } @@ -152,14 +152,14 @@ const loginRegister = async () => { try { loading.value = true const formData = await getFormData>() - const res = await registerApi( + const { result } = await registerApi( Object.assign(cloneDeep(formData), { uuid: codeUuid.value, password: md5(formData.password), check_password: md5(formData.check_password) }) ) - if (res) { + if (result) { ElMessage.success('注册成功') toLogin() } @@ -187,8 +187,12 @@ const loginRegister = async () => {