From 7e6e0860989d128dd5d330c6e959c34dbd993200 Mon Sep 17 00:00:00 2001 From: rd <1344903914@qq.com> Date: Thu, 11 Sep 2025 12:04:54 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E7=99=BB=E5=BD=95=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../navbar/components/middle-side/index.vue | 4 +- .../navbar/components/right-side/index.vue | 2 +- src/layouts/components/navbar/index.vue | 16 ++-- src/layouts/components/siderBar/index.vue | 4 +- src/permission/permission.ts | 10 +-- src/stores/modules/enterprise/index.ts | 12 ++- src/stores/modules/user/index.ts | 4 - src/utils/user.ts | 27 ++++-- .../login/components/login-form/index.vue | 27 +++--- .../login/components/register-form/index.vue | 87 ++++++++----------- src/views/trial/index.vue | 14 +-- 11 files changed, 103 insertions(+), 104 deletions(-) diff --git a/src/layouts/components/navbar/components/middle-side/index.vue b/src/layouts/components/navbar/components/middle-side/index.vue index 88cdee1..199c676 100644 --- a/src/layouts/components/navbar/components/middle-side/index.vue +++ b/src/layouts/components/navbar/components/middle-side/index.vue @@ -3,15 +3,17 @@ import { Input } from 'ant-design-vue'; // import { handleUserHome } from '@/utils/user.ts'; import { useChatStore } from '@/stores/modules/chat'; import { useUserStore } from '@/stores'; +import { useEnterpriseStore } from '@/stores/modules/enterprise'; export default { setup(props, { emit, expose }) { const chatStore = useChatStore(); const userStore = useUserStore(); + const enterpriseStore = useEnterpriseStore(); const keyWord = ref(''); - const hasOpenEnterprise = computed(() => userStore.isOpenEnterprise); + const hasOpenEnterprise = computed(() => enterpriseStore.isOpenEnterprise); const handleSearch = () => { chatStore.setSearchValue(keyWord.value); diff --git a/src/layouts/components/navbar/components/right-side/index.vue b/src/layouts/components/navbar/components/right-side/index.vue index cb1b0a1..c2f5d50 100644 --- a/src/layouts/components/navbar/components/right-side/index.vue +++ b/src/layouts/components/navbar/components/right-side/index.vue @@ -98,7 +98,7 @@ const route = useRoute(); const router = useRouter(); const hasUnreadInfo = computed(() => sideBarStore.unreadInfo.length); -const hasOpenEnterprise = computed(() => userStore.isOpenEnterprise); +const hasOpenEnterprise = computed(() => enterpriseStore.isOpenEnterprise); const exitAccountModalRef = ref(null); const downloadCenterModalRef = ref(null); diff --git a/src/layouts/components/navbar/index.vue b/src/layouts/components/navbar/index.vue index d577208..7e672c5 100644 --- a/src/layouts/components/navbar/index.vue +++ b/src/layouts/components/navbar/index.vue @@ -1,16 +1,14 @@ @@ -19,13 +17,15 @@ import MiddleSide from './components/middle-side'; import RightSide from './components/right-side'; import { useUserStore } from '@/stores'; +import { useEnterpriseStore } from '@/stores/modules/enterprise'; import { handleUserHome } from '@/utils/user.ts'; import router from '@/router'; const route = useRoute(); const userStore = useUserStore(); +const enterpriseStore = useEnterpriseStore(); -const hasOpenEnterprise = computed(() => userStore.isOpenEnterprise); +const hasOpenEnterprise = computed(() => enterpriseStore.isOpenEnterprise); const isAgentRoute = computed(() => { return route.meta?.isAgentRoute; }); @@ -39,8 +39,8 @@ const onLogoClick = () => { handleUserHome(); } else { router.push({ - name: 'Trial' - }) + name: 'Trial', + }); } }; diff --git a/src/layouts/components/siderBar/index.vue b/src/layouts/components/siderBar/index.vue index e620e3c..342ae5e 100644 --- a/src/layouts/components/siderBar/index.vue +++ b/src/layouts/components/siderBar/index.vue @@ -8,6 +8,7 @@ import { useSidebarStore } from '@/stores/modules/side-bar'; import type { typeMenuItem } from './menu-list'; import { MENU_LIST } from './menu-list'; import { handleUserHome } from '@/utils/user'; +import { useEnterpriseStore } from '@/stores/modules/enterprise'; import icon1 from '@/assets/img/agent/icon1.png'; @@ -21,6 +22,7 @@ export default defineComponent({ const sidebarStore = useSidebarStore(); const appStore = useAppStore(); const userStore = useUserStore(); + const enterpriseStore = useEnterpriseStore(); // const currentMenuList = ref([]); const currentMenuModInfo = ref({}); @@ -30,7 +32,7 @@ export default defineComponent({ const isHomeRoute = computed(() => currentRouteName.value === 'Home'); const showAiSearch = computed(() => !route.meta?.hideAiSearch); const currentMenuList = computed(() => sidebarStore.currentMenuList); - const hasOpenEnterprise = computed(() => userStore.isOpenEnterprise); + const hasOpenEnterprise = computed(() => enterpriseStore.isOpenEnterprise); const collapsed = computed(() => { return sidebarStore.menuCollapse; diff --git a/src/permission/permission.ts b/src/permission/permission.ts index ab83cab..cfcab97 100644 --- a/src/permission/permission.ts +++ b/src/permission/permission.ts @@ -1,13 +1,13 @@ -import { useUserStore } from '@/stores/modules/user'; +// import { useUserStore } from '@/stores/modules/user'; +import { useEnterpriseStore } from '@/stores/modules/enterprise'; export function checkRoutePermission(routeName: string) { - - const userStore = useUserStore(); + const enterpriseStore = useEnterpriseStore(); if (!routeName) return false; - if (!userStore.isOpenEnterprise) { - return false + if (!enterpriseStore.isOpenEnterprise) { + return false; } return true; diff --git a/src/stores/modules/enterprise/index.ts b/src/stores/modules/enterprise/index.ts index 1517998..44b5477 100644 --- a/src/stores/modules/enterprise/index.ts +++ b/src/stores/modules/enterprise/index.ts @@ -1,7 +1,5 @@ import { fetchEnterpriseInfo } from '@/api/all/login'; -import { useSidebarStore } from '@/stores/modules/side-bar'; -import { useUserStore } from '@/stores/modules/user'; -import { glsWithCatch, slsWithCatch, rlsWithCatch } from '@/utils/stroage'; +import { glsWithCatch, slsWithCatch } from '@/utils/stroage'; interface EnterpriseInfo { id: number | string; @@ -11,6 +9,8 @@ interface EnterpriseInfo { sub_account_quota: number; used_sub_account_count: number; permissions: string[]; + + [key: string]: any; } interface EnterpriseState { @@ -21,6 +21,12 @@ export const useEnterpriseStore = defineStore('enterprise', { state: (): EnterpriseState => ({ enterpriseInfo: (glsWithCatch('enterpriseInfo') && JSON.parse(glsWithCatch('enterpriseInfo') as string)) || null, }), + getters: { + // 企业已开通/试用中 + isOpenEnterprise(): boolean { + return [1, 2].includes(this.enterpriseInfo?.subscribe_status); + }, + }, actions: { setEnterpriseInfo(enterpriseInfo: EnterpriseInfo) { this.enterpriseInfo = enterpriseInfo; diff --git a/src/stores/modules/user/index.ts b/src/stores/modules/user/index.ts index e07c809..96df719 100644 --- a/src/stores/modules/user/index.ts +++ b/src/stores/modules/user/index.ts @@ -39,10 +39,6 @@ export const useUserStore = defineStore('user', { isLogin(): boolean { return !!this.token; }, - // 是否开通企业 - isOpenEnterprise(): boolean { - return [1, 2].includes(this.userInfo?.primary_enterprise?.subscribe_status); - }, }, actions: { // 设置 Token diff --git a/src/utils/user.ts b/src/utils/user.ts index 13542d5..abf8131 100644 --- a/src/utils/user.ts +++ b/src/utils/user.ts @@ -15,6 +15,18 @@ export function goUserLogin(query?: any) { router.push({ name: 'UserLogin', query }); } +// 首页 +export function handleUserHome(params?: any) { + const enterpriseStore = useEnterpriseStore(); + console.log(enterpriseStore.enterpriseInfo); + // 已开通 + if (enterpriseStore.isOpenEnterprise) { + router.push({ name: 'Home', params }); + } else { + router.push({ name: 'Trial' }); + } +} + export const getUserEnterpriseInfo = async () => { const enterpriseStore = useEnterpriseStore(); // const sidebarStore = useSidebarStore(); @@ -29,12 +41,14 @@ export async function initApp() { const userStore = useUserStore(); const chatStore = useChatStore(); const sidebarStore = useSidebarStore(); + const enterpriseStore = useEnterpriseStore(); + await userStore.getUserInfo(); // 初始化用户信息 - if (!userStore.isOpenEnterprise) return; + if (!enterpriseStore.isOpenEnterprise) return; await getUserEnterpriseInfo(); // 初始化企业信息、navbar菜单、允许访问的路由 - await chatStore.getAgentInfo(); // 初始化智能体信息 + // await chatStore.getAgentInfo(); // 初始化智能体信息 sidebarStore.startUnreadInfoPolling(); // 初始化未读信息 } @@ -46,13 +60,10 @@ export async function handleUserLogin() { handleUserHome(); } -// 首页 -export function handleUserHome(params?: any) { - router.push({ name: 'Home', params }); -} - // 登出处理 export function handleUserLogout() { + goUserLogin(); + const userStore = useUserStore(); const enterpriseStore = useEnterpriseStore(); const sidebarStore = useSidebarStore(); @@ -66,6 +77,4 @@ export function handleUserLogout() { sidebarStore.stopUnreadInfoPolling(); // 清除未读消息 sidebarStore.clearActiveMenuKey(); // 清除active菜单id sidebarStore.clearMenuCollapse(); // 清除active菜单id - - goUserLogin(); } diff --git a/src/views/login/components/login-form/index.vue b/src/views/login/components/login-form/index.vue index ea1adb8..f7b3f43 100644 --- a/src/views/login/components/login-form/index.vue +++ b/src/views/login/components/login-form/index.vue @@ -108,7 +108,6 @@ import { computed, onUnmounted, reactive, ref } from 'vue'; import { useUserStore } from '@/stores'; import { useEnterpriseStore } from '@/stores/modules/enterprise'; import { handleUserLogin } from '@/utils/user'; -import router from '@/router'; import { useRoute } from 'vue-router'; import icon1 from '@/assets/img/login/icon-close.png'; @@ -265,24 +264,18 @@ const onTabChange = () => { const getProfileInfo = async () => { const { code, data } = await fetchProfileInfo(); if (code === 200) { - userStore.setUserInfo(data); - // 已开通 - if (userStore.isOpenEnterprise) { - const enterprises = data['enterprises']; - mobileNumber.value = data['mobile']; - accounts.value = enterprises; + const enterprises = data['enterprises']; + mobileNumber.value = data['mobile']; + accounts.value = enterprises; - if (enterprises.length > 0) { - enterpriseStore.setEnterpriseInfo(data.enterprises[0]); - if (enterprises.length === 1) { - handleUserLogin(); - } else { - // 多个企业时候需要弹窗让用户选择企业 - selectAccountModalRef.value.open(); - } + if (enterprises.length > 0) { + enterpriseStore.setEnterpriseInfo(data.enterprises[0]); + if (enterprises.length === 1) { + handleUserLogin(); + } else { + // 多个企业时候需要弹窗让用户选择企业 + selectAccountModalRef.value.open(); } - } else { - router.push({ name: 'Trial' }); } } }; diff --git a/src/views/login/components/register-form/index.vue b/src/views/login/components/register-form/index.vue index f18e86c..dae2294 100644 --- a/src/views/login/components/register-form/index.vue +++ b/src/views/login/components/register-form/index.vue @@ -85,37 +85,30 @@