From 697c405ac874da346e74df40266763370355154d Mon Sep 17 00:00:00 2001 From: Ben Lin <maobin001@msn.com> Date: 星期六, 08 三月 2025 15:40:25 +0800 Subject: [PATCH] ASN单 --- src/store/modules/user.ts | 123 +++++++++++++++++++++++++--------------- 1 files changed, 77 insertions(+), 46 deletions(-) diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index c68d796..d5c91f3 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -1,28 +1,32 @@ -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 { useGlobSetting } from '/@/hooks/setting'; +import { getSysParam } from '/@/api/tigerapi/system'; +import { ApiAction } from '/@/api/model/baseModel'; -const globSetting = useGlobSetting(); interface UserState { userInfo: Nullable<UserInfo>; token?: string; @@ -122,19 +126,22 @@ 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); @@ -143,11 +150,24 @@ changepwd: changepwd, username: data.USER_NAME, realName: data.USER_NAME, - orgCode: globSetting.useOrg == 'true' ? data.ORG_CODE : '', - prodCode: globSetting.useOrg == 'false' ? 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[]; @@ -159,7 +179,34 @@ this.setUserInfo(userInfo); return userInfo; }, - async getTgUserInfoAction(changepwd: boolean, orgCode?: string): Promise<UserInfo | null> { + /** + * @description: logout + */ + async logout(goLogin = false) { + if (this.getToken) { + try { + await doLogout({ Data: this.getToken } as unknown as ApiAction<string>); + } catch { + console.log('娉ㄩ攢Token澶辫触'); + } + } + this.setToken(undefined); + this.setSessionTimeout(false); + this.setUserInfo(null); + 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); @@ -168,32 +215,15 @@ username: data.USER_NAME, changepwd: changepwd, realName: data.USER_NAME, - orgCode: globSetting.useOrg == 'true' ? data.ORG_CODE : '', - prodCode: globSetting.useOrg == 'false' ? data.FTY_CODE : '', + 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: logout - */ - async logout(goLogin = false) { - if (this.getToken) { - try { - await doLogout({ Data: this.getToken }); - } catch { - console.log('娉ㄩ攢Token澶辫触'); - } - } - this.setToken(undefined); - this.setSessionTimeout(false); - this.setUserInfo(null); - goLogin && router.push(PageEnum.BASE_LOGIN); - }, - /** * @description: Confirm before logging out */ @@ -205,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