From 9e9e4f8f1cc98a8dc9d0b729d22e55eac2399c4c Mon Sep 17 00:00:00 2001 From: heduo Date: Sun, 31 Mar 2024 18:45:26 +0800 Subject: [PATCH] =?UTF-8?q?fix(hd):=E7=99=BB=E5=BD=95=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/sys/user.ts | 7 +++- .../header/components/user-dropdown/index.vue | 10 +++-- src/store/modules/user.ts | 41 +++++++++++-------- src/views/sys/login/LoginForm.vue | 19 ++++----- 4 files changed, 44 insertions(+), 33 deletions(-) diff --git a/src/api/sys/user.ts b/src/api/sys/user.ts index 39b3121..3f10641 100644 --- a/src/api/sys/user.ts +++ b/src/api/sys/user.ts @@ -1,5 +1,7 @@ import { defHttp, tmallabHttp } from '/@/utils/http/axios'; -import { LoginParams, LoginResultModel, GetUserInfoModel } from './model/userModel'; +import { LoginParams, LoginResultModel } from './model/userModel'; +import { getAuthCache } from '/@/utils/auth'; +import { USER_INFO_KEY } from '/@/enums/cacheEnum'; import { ErrorMessageMode } from '/#/axios'; @@ -30,7 +32,8 @@ export function loginApi(params: LoginParams, mode: ErrorMessageMode = 'modal') * @description: getUserInfo */ export function getUserInfo() { - return defHttp.get({ url: Api.GetUserInfo }, { errorMessageMode: 'none' }); + // return defHttp.get({ url: Api.GetUserInfo }, { errorMessageMode: 'none' }); + return getAuthCache(USER_INFO_KEY) || {}; } export function getPermCode() { diff --git a/src/layouts/default/header/components/user-dropdown/index.vue b/src/layouts/default/header/components/user-dropdown/index.vue index d44a127..d25d34b 100644 --- a/src/layouts/default/header/components/user-dropdown/index.vue +++ b/src/layouts/default/header/components/user-dropdown/index.vue @@ -75,15 +75,19 @@ const { t } = useI18n(); const { getShowDoc, getUseLockPage } = useHeaderSetting(); const userStore = useUserStore(); - const getUserInfo = computed(() => { - console.log('------------', userStore.getUserInfo) + console.log('------------', userStore.getUserInfo); const { userName: realName = '', avatar, desc } = userStore.getUserInfo || {}; return { realName, avatar: avatar || headerImg, desc }; }); const { changeRole } = usePermission(); const roleList = ref([]); - roleList.value = userStore.getUserInfo.roleList; + roleList.value = userStore.getUserInfo.userRoles.map((v) => { + return { + roleNum: v.roleNum, + roleName: v.roleName, + }; + }); // const [register, { openModal }] = useModal(); const [register] = useModal(); diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 5283d73..a16c1af 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -49,7 +49,7 @@ export const useUserStore = defineStore({ }), getters: { getUserInfo(): GetUserInfoModel { - return this.userInfo || getAuthCache(USER_INFO_KEY) || {}; + return getAuthCache(USER_INFO_KEY) || {}; }, getToken(): string { return this.token || getAuthCache(TOKEN_KEY); @@ -119,15 +119,19 @@ export const useUserStore = defineStore({ }, //数据对接模拟登录 async tmallabSimulationLogin(params: { loginName: string; password: string }): Promise { - const data = await tmallabLoginApi(params); - this.setTmallabToken(data.token); - return data; + try { + const data = await tmallabLoginApi(params); + this.setTmallabToken(data.token); + this.setToken(data.token); + return this.afterLoginAction(true, data); + } catch (error) { + return Promise.reject(error); + } }, - async afterLoginAction(goHome?: boolean): Promise { - if (!this.getToken) return null; + async afterLoginAction(goHome?: boolean, data?: any): Promise { + if (!this.getTmallabToken) return null; // get user info - const userInfo = await getUserInfo(); - + const userInfo = await this.getUserInfoAction(data); const sessionTimeout = this.sessionTimeout; if (sessionTimeout) { this.setSessionTimeout(false); @@ -147,19 +151,20 @@ export const useUserStore = defineStore({ this.setUserInfo(userInfo); return userInfo; }, - async getUserInfoAction(): Promise { - if (!this.getToken) return null; - let userInfo: any = this.userInfo; - if (!userInfo.userId) { - userInfo = await getUserInfo(); - } - const { roles = [] } = userInfo; - if (isArray(roles)) { - const role = userInfo.roleNum; + async getUserInfoAction(data): Promise { + if (!this.getTmallabToken) return null; + const userInfo = data; + // if (!userInfo.userId) { + // userInfo = await getUserInfo(); + // } + const { userRoles } = userInfo; + if (isArray(userRoles)) { + const role = userInfo.userRoles[0].roleNum; + //取第一个为默认角色 const roleList = Array.from(RoleEnum[role]); this.setRoleList(roleList as []); } else { - userInfo.roles = []; + userInfo.userRoles = []; this.setRoleList([]); } this.setUserInfo(userInfo); diff --git a/src/views/sys/login/LoginForm.vue b/src/views/sys/login/LoginForm.vue index ec1097d..837c9dd 100644 --- a/src/views/sys/login/LoginForm.vue +++ b/src/views/sys/login/LoginForm.vue @@ -135,8 +135,8 @@ const rememberMe = ref(false); const formData = reactive({ - account: 't1', - password: '123456Aa@', + account: '', + password: '', }); const { validForm } = useFormValid(formRef); @@ -150,18 +150,17 @@ if (!data) return; try { loading.value = true; - let jsEncrypt = new JSEncrypt(); - jsEncrypt.setPublicKey(RSA_PUBLIC_KEY); - const encryptPwd: string = jsEncrypt.encrypt(data.password) as string; - const userInfo = await userStore.login({ - password: encryptPwd, - username: data.account, - mode: 'none', //不要默认的错误提示 + // let jsEncrypt = new JSEncrypt(); + // jsEncrypt.setPublicKey(RSA_PUBLIC_KEY); + // const encryptPwd: string = jsEncrypt.encrypt(data.password) as string; + const userInfo = await userStore.tmallabSimulationLogin({ + password: formData.password, + loginName: formData.account, }); if (userInfo) { notification.success({ message: t('sys.login.loginSuccessTitle'), - description: `${t('sys.login.loginSuccessDesc')}: ${userInfo.userName}`, + description: `${t('sys.login.loginSuccessDesc')}: ${userInfo.name}`, duration: 3, }); } -- 2.24.1