From 59dac3bb133a76e1548132f843666c9f08ae847f Mon Sep 17 00:00:00 2001 From: renxiaodong <1344903914@qq.com> Date: Mon, 23 Jun 2025 22:03:57 -0400 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=85=A8=E5=B1=80=E8=8E=B7=E5=8F=96use?= =?UTF-8?q?rinfo=E3=80=81=E6=95=B0=E6=8D=AE=E6=8C=81=E4=B9=85=E5=8C=96?= =?UTF-8?q?=E3=80=81store=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.vue | 24 ++++++--- src/components/_base/menu/index.vue | 51 ++++++++++--------- src/router/index.ts | 27 ++++------ src/stores/modules/enterprise/index.ts | 18 ++++++- src/stores/modules/user/index.ts | 22 +++----- src/utils/user.ts | 4 ++ src/views/components/login/index.vue | 2 +- .../components/management/account/index.vue | 10 ++-- .../management/enterprise/index.vue | 11 ++-- .../components/management/person/index.vue | 10 ++-- 10 files changed, 104 insertions(+), 75 deletions(-) diff --git a/src/App.vue b/src/App.vue index 6e5c982..7cc6e89 100644 --- a/src/App.vue +++ b/src/App.vue @@ -6,8 +6,26 @@ diff --git a/src/components/_base/menu/index.vue b/src/components/_base/menu/index.vue index aa51f66..13c344e 100644 --- a/src/components/_base/menu/index.vue +++ b/src/components/_base/menu/index.vue @@ -77,30 +77,33 @@ export default defineComponent({ if (appStore.device === 'desktop') appStore.updateSettings({ menuCollapse: val }); }; const renderSubMenu = () => { - function travel(_route: RouteRecordRaw[], nodes = []) { - if (Array.isArray(_route)) { - _route.forEach((element) => { - // This is demo, modify nodes as needed - const icon = element?.meta?.icon ? () => h(element?.meta?.icon as object) : null; - const node = - element?.children && element?.children.length !== 0 ? ( - element?.meta?.locale || '', - }} - > - {travel(element?.children)} - - ) : ( - goto(element)}> - {element?.meta?.locale || ''} - - ); - nodes.push(node as never); - }); - } + function travel(_route: RouteRecordRaw[] = [], nodes: any[] = []) { + if (!Array.isArray(_route)) return nodes; + _route.forEach((element) => { + // 跳过没有 name 的菜单项,防止 key 报错 + if (!element?.name) return; + + const icon = element?.meta?.icon ? () => h(element.meta.icon as object) : null; + if (element.children && element.children.length > 0) { + nodes.push( + element.meta?.locale || '', + }} + > + {travel(element.children)} + , + ); + } else { + nodes.push( + goto(element)}> + {element.meta?.locale || ''} + , + ); + } + }); return nodes; } return travel(menuTree.value ?? []); diff --git a/src/router/index.ts b/src/router/index.ts index a7a1da2..3df1196 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -32,24 +32,6 @@ const router = createRouter({ requiresAuth: true, }, }, - { - path: '/', - name: 'Home', - redirect: '/dataEngine/hotTranslation', - children: [...appRoutes, REDIRECT_MAIN, NOT_FOUND_ROUTE], - meta: { - requiresAuth: true, - }, - }, - // { - // path: '/dataEngine', - // name: 'dataEngine', - // redirect: '/dataEngine/hotTranslation', - // children: [...appRoutes, REDIRECT_MAIN, NOT_FOUND_ROUTE], - // meta: { - // requiresAuth: 1, - // }, - // }, { path: '/permission', name: 'permission', @@ -66,6 +48,15 @@ const router = createRouter({ requiresAuth: false, }, }, + { + path: '/', + name: 'Home', + redirect: '/dataEngine/hotTranslation', + children: [...appRoutes, REDIRECT_MAIN, NOT_FOUND_ROUTE], + meta: { + requiresAuth: true, + }, + }, ], scrollBehavior() { return { top: 0 }; diff --git a/src/stores/modules/enterprise/index.ts b/src/stores/modules/enterprise/index.ts index b3717c2..9257e2d 100644 --- a/src/stores/modules/enterprise/index.ts +++ b/src/stores/modules/enterprise/index.ts @@ -15,12 +15,26 @@ interface EnterpriseState { export const useEnterpriseStore = defineStore('enterprise', { state: (): EnterpriseState => ({ - enterpriseInfo: null, + enterpriseInfo: (() => { + const stored = localStorage.getItem('enterpriseInfo'); + if (stored) { + try { + return JSON.parse(stored) as EnterpriseInfo; + } catch { + return null; + } + } + return null; + })(), }), actions: { setEnterpriseInfo(enterpriseInfo: EnterpriseInfo) { - console.log('setEnterpriseInfo', enterpriseInfo); this.enterpriseInfo = enterpriseInfo; + localStorage.setItem('enterpriseInfo', JSON.stringify(enterpriseInfo)); + }, + clearEnterpriseInfo() { + this.enterpriseInfo = null; + localStorage.removeItem('enterpriseInfo'); }, setEnterpriseName(name: string) { if (this.enterpriseInfo) { diff --git a/src/stores/modules/user/index.ts b/src/stores/modules/user/index.ts index 7f97f4a..c605776 100644 --- a/src/stores/modules/user/index.ts +++ b/src/stores/modules/user/index.ts @@ -1,4 +1,5 @@ import { defineStore } from 'pinia'; +import { fetchProfileInfo } from '@/api/all/login'; interface UserInfo { id: number; @@ -19,7 +20,7 @@ interface UserState { token: string; userInfo: UserInfo | null; companyInfo: CompanyInfo | null; - isLogin: boolean; + // isLogin: boolean; } interface UserInfo { @@ -33,7 +34,6 @@ export const useUserStore = defineStore('user', { token: localStorage.getItem('accessToken') || '', userInfo: null, companyInfo: null, - isLogin: false, }), getters: { isLogin(): boolean { @@ -46,6 +46,7 @@ export const useUserStore = defineStore('user', { this.token = `Bearer ${token}`; localStorage.setItem('accessToken', this.token); }, + deleteToken() { this.token = ''; localStorage.removeItem('accessToken'); @@ -62,18 +63,11 @@ export const useUserStore = defineStore('user', { }, // 获取用户信息 - getUserInfo(): UserInfo | null { - return this.userInfo; - }, - - // 设置公司信息 - setCompanyInfo(companyInfo: CompanyInfo | null) { - this.companyInfo = companyInfo; - }, - - // 获取公司信息 - getCompanyInfo(): CompanyInfo | null { - return this.companyInfo; + async fetchUserInfo() { + const { code, data } = await fetchProfileInfo(); + if (code === 200) { + this.setUserInfo(data); + } }, }, }); diff --git a/src/utils/user.ts b/src/utils/user.ts index 89a97c5..31478cf 100644 --- a/src/utils/user.ts +++ b/src/utils/user.ts @@ -5,6 +5,7 @@ import router from '@/router'; import { useUserStore } from '@/stores'; +import { useEnterpriseStore } from '@/stores/modules/enterprise'; // 登录 export function goUserLogin(query?: any) { @@ -23,7 +24,10 @@ export function handleUserHome() { export function handleUserLogout() { const userStore = useUserStore(); + const store = useEnterpriseStore(); + userStore.deleteToken(); + store.clearEnterpriseInfo(); goUserLogin(); } diff --git a/src/views/components/login/index.vue b/src/views/components/login/index.vue index c213797..ddd2363 100644 --- a/src/views/components/login/index.vue +++ b/src/views/components/login/index.vue @@ -275,9 +275,9 @@ const getProfileInfo = async () => { let enterprises = data['enterprises']; mobileNumber.value = data['mobile']; accounts.value = enterprises; - enterpriseStore.setEnterpriseInfo(data); userStore.setUserInfo(data); + if (enterprises.length > 0) { if (enterprises.length === 1) { await enterpriseStore.updateEnterpriseInfo(); diff --git a/src/views/components/management/account/index.vue b/src/views/components/management/account/index.vue index 2bae778..95423e0 100644 --- a/src/views/components/management/account/index.vue +++ b/src/views/components/management/account/index.vue @@ -105,6 +105,8 @@ const okText = computed(() => { }); const customerServiceVisible = ref(false); const canAddAccount = computed(() => { + if (!enterpriseInfo) return false; + return enterpriseInfo.sub_account_quota > enterpriseInfo.used_sub_account_count; }); @@ -124,9 +126,11 @@ function handlePageSizeChange(pageSize: number) { async function getSubAccount() { const res = await fetchSubAccountPage(params); - const { data, total } = res.data; - pagination.total = total; - data.value = data; + const { data, total, code } = res.data; + if (code === 200) { + pagination.total = total; + data.value = data; + } } async function handleAddAccount() { if (canAddAccount.value) { diff --git a/src/views/components/management/enterprise/index.vue b/src/views/components/management/enterprise/index.vue index cf22bb6..9224306 100644 --- a/src/views/components/management/enterprise/index.vue +++ b/src/views/components/management/enterprise/index.vue @@ -1,6 +1,6 @@