From a42c6f16bbb177dfcc754d53d925afddead38eba Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期二, 12 十一月 2024 22:51:26 +0800 Subject: [PATCH] 包装规则中查询更新,判断存在更新 --- src/store/modules/user.ts | 131 ++++++++++++++++++++++++++++--------------- 1 files changed, 84 insertions(+), 47 deletions(-) diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index b3f1328..d5c91f3 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -1,25 +1,31 @@ -import type { UserInfo } from '/#/store'; -import type { ErrorMessageMode } from '/#/axios'; +/* + * @Description: file content + * @Author: Ben Lin + * @version: + * @Date: 2024-06-18 15:09:47 + * @LastEditors: Ben Lin + * @LastEditTime: 2024-10-07 17:01:32 + */ +import type { UserInfo } from '#/store'; +import type { ErrorMessageMode } from '#/axios'; import { defineStore } from 'pinia'; -import { store } from '/@/store'; -import { RoleEnum } from '/@/enums/roleEnum'; -import { PageEnum } from '/@/enums/pageEnum'; -import { ROLES_KEY, TOKEN_KEY, USER_INFO_KEY } from '/@/enums/cacheEnum'; -import { getAuthCache, setAuthCache } from '/@/utils/auth'; -import { GetUserInfoModel, LoginParams } from '/@/api/sys/model/userModel'; -import { doLogout, getTgUserInfo, getUserInfo, loginApi } from '/@/api/sys/user'; -import { useI18n } from '/@/hooks/web/useI18n'; -import { useMessage } from '/@/hooks/web/useMessage'; -import { router } from '/@/router'; -import { usePermissionStore } from '/@/store/modules/permission'; -import { RouteRecordRaw } from 'vue-router'; -import { PAGE_NOT_FOUND_ROUTE } from '/@/router/routes/basic'; -import { isArray, isEmpty } from '/@/utils/is'; -import { AccountInfo } from '/@/api/tigerapi/model/systemModel'; - +import { store } from '@/store'; +import { RoleEnum } from '@/enums/roleEnum'; +import { PageEnum } from '@/enums/pageEnum'; +import { ROLES_KEY, TOKEN_KEY, USER_INFO_KEY } from '@/enums/cacheEnum'; +import { getAuthCache, setAuthCache } from '@/utils/auth'; +import { GetUserInfoModel } from '@/api/sys/model/userModel'; +import { doLogout, getTgUserInfo, loginApi } from '@/api/sys/user'; +import { useI18n } from '@/hooks/web/useI18n'; +import { useMessage } from '@/hooks/web/useMessage'; +import { router } from '@/router'; +import { isArray } from '@/utils/is'; import { h } from 'vue'; +import { AccountInfo } from '/@/api/tigerapi/model/systemModel'; import { getMenuAuthList } from '/@/api/sys/menu'; import { iV_USER_MENU } from '/@/api/tigerapi/model/vModel'; +import { getSysParam } from '/@/api/tigerapi/system'; +import { ApiAction } from '/@/api/model/baseModel'; interface UserState { userInfo: Nullable<UserInfo>; @@ -90,7 +96,6 @@ params: AccountInfo & { goHome?: boolean; mode?: ErrorMessageMode; - }, ): Promise<GetUserInfoModel | null> { try { @@ -100,15 +105,18 @@ if (!data.IsSuccessed) { return Promise.reject(data.LocaleMsg); } - + // save token this.setToken(data.Data?.TOKEN); - return this.afterLoginAction(goHome,loginParams.data.password==='000000'); + return this.afterLoginAction(goHome, loginParams.data.password === '000000'); } catch (error) { return Promise.reject(error); } }, - async afterLoginAction(goHome?: boolean,changepwd?:boolean): Promise<GetUserInfoModel | null> { + async afterLoginAction( + goHome?: boolean, + changepwd?: boolean, + ): Promise<GetUserInfoModel | null> { if (!this.getToken) return null; // get user info const userInfo = await this.getTgUserInfoAction(changepwd); @@ -118,31 +126,48 @@ this.setSessionTimeout(false); } else { // const permissionStore = usePermissionStore(); + + // // 鍔ㄦ�佽矾鐢卞姞杞斤紙棣栨锛� // if (!permissionStore.isDynamicAddedRoute) { // const routes = await permissionStore.buildRoutesAction(); - // routes.forEach((route) => { + // [...routes, PAGE_NOT_FOUND_ROUTE].forEach((route) => { // router.addRoute(route as unknown as RouteRecordRaw); // }); - // router.addRoute(PAGE_NOT_FOUND_ROUTE as unknown as RouteRecordRaw); + // // 璁板綍鍔ㄦ�佽矾鐢卞姞杞藉畬鎴� // permissionStore.setDynamicAddedRoute(true); // } + goHome && (await router.replace(userInfo?.homePath || PageEnum.BASE_HOME)); } return userInfo; }, - async getUserInfoAction(changepwd:boolean): Promise<UserInfo | null> { + async getUserInfoAction(changepwd?: boolean): Promise<UserInfo | null> { if (!this.getToken) return null; const data = await getTgUserInfo(); const vUserMenu = await getMenuAuthList(data.USER_ID); const userInfo: UserInfo = { userId: data.USER_ID, - changepwd:changepwd, + changepwd: changepwd, username: data.USER_NAME, realName: data.USER_NAME, - orgCode: data.ORG_CODE, + orgCode: data.ORG_CODE, //globSetting.useOrg == 'Y' ? data.ORG_CODE : '', + prodCode: data.FTY_CODE, //globSetting.useOrg == 'N' ? data.ORG_CODE : '', avatar: '', roles: vUserMenu.Data.Items as unknown as iV_USER_MENU[], + byOrg: false, + byProd: false, + byWh: false, }; + /* 浠庣郴缁熷弬鏁拌幏鍙栧惎鐢ㄥ摢绉嶆潈闄� */ + var action = await getSysParam({ group: 'ByAuthActive' }); + if (action.IsSuccessed) { + userInfo.byOrg = + action.Data.filter((x) => x.PARAM_CODE == 'ByOrgActive')[0].PARAM_VALUE == 'Y'; + userInfo.byProd = + action.Data.filter((x) => x.PARAM_CODE == 'ByProdActive')[0].PARAM_VALUE == 'Y'; + userInfo.byWh = + action.Data.filter((x) => x.PARAM_CODE == 'ByWhActive')[0].PARAM_VALUE == 'Y'; + } const { roles = [] } = userInfo; if (isArray(roles)) { const roleList = roles.map((item) => item.value) as RoleEnum[]; @@ -154,30 +179,13 @@ this.setUserInfo(userInfo); return userInfo; }, - async getTgUserInfoAction(changepwd:boolean,orgCode?: string): Promise<UserInfo | null> { - if (!this.getToken) return null; - const data = await getTgUserInfo(); - const vUserMenu = await getMenuAuthList(data.USER_ID); - const userInfo: UserInfo = { - userId: data.USER_ID, - username: data.USER_NAME, - changepwd:changepwd, - realName: data.USER_NAME, - orgCode: data.ORG_CODE, - avatar: '', - roles: vUserMenu.Data.Items as unknown as iV_USER_MENU[], - }; - this.setUserInfo(userInfo); - //console.log(data[0].LOGINNAME); - return userInfo; - }, /** * @description: logout */ async logout(goLogin = false) { if (this.getToken) { try { - await doLogout({ Data: this.getToken }); + await doLogout({ Data: this.getToken } as unknown as ApiAction<string>); } catch { console.log('娉ㄩ攢Token澶辫触'); } @@ -185,9 +193,37 @@ this.setToken(undefined); this.setSessionTimeout(false); this.setUserInfo(null); - goLogin && router.push(PageEnum.BASE_LOGIN); + if (goLogin) { + // 鐩存帴鍥炵櫥闄嗛〉 + router.replace(PageEnum.BASE_LOGIN); + } else { + // 鍥炵櫥闄嗛〉甯︿笂褰撳墠璺敱鍦板潃 + router.replace({ + path: PageEnum.BASE_LOGIN, + query: { + redirect: encodeURIComponent(router.currentRoute.value.fullPath), + }, + }); + } }, - + async getTgUserInfoAction(changepwd?: boolean, orgCode?: string): Promise<UserInfo | null> { + if (!this.getToken) return null; + const data = await getTgUserInfo(); + const vUserMenu = await getMenuAuthList(data.USER_ID); + const userInfo: UserInfo = { + userId: data.USER_ID, + username: data.USER_NAME, + changepwd: changepwd, + realName: data.USER_NAME, + orgCode: data.ORG_CODE, //globSetting.useOrg == 'Y' ? data.ORG_CODE : '', + prodCode: data.FTY_CODE, //globSetting.useOrg == 'N' ? data.FTY_CODE : '', + avatar: '', + roles: vUserMenu.Data.Items as unknown as iV_USER_MENU[], + } as unknown as UserInfo; + this.setUserInfo(userInfo); + //console.log(data[0].LOGINNAME); + return userInfo; + }, /** * @description: Confirm before logging out */ @@ -199,6 +235,7 @@ title: () => h('span', t('sys.app.logoutTip')), content: () => h('span', t('sys.app.logoutMessage')), onOk: async () => { + // 涓诲姩鐧诲嚭锛屼笉甯edirect鍦板潃 await this.logout(true); }, }); -- Gitblit v1.9.3