From 1bb09615ff2716d01a01e95bf6aa7fb8736b691f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=A6=8D?= <1455167345@qq.com> Date: Fri, 21 Feb 2025 17:15:39 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=BB=E9=A1=B5=E9=85=8D=E7=BD=AE=EF=BC=8C?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E5=90=8E=E8=B7=B3=E8=BD=AC=E5=88=B0=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E7=9A=84=E4=B8=BB=E9=A1=B5=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/path/project.api.ts | 13 +++ src/router/routes/index.ts | 27 +++++++ src/store/modules/permission.ts | 21 ++++- src/store/modules/user.ts | 12 ++- src/views/demo/system/homepage/index.vue | 80 +++++++++++++++++++ .../components/PreviewRenderGroup/index.vue | 1 - 6 files changed, 149 insertions(+), 5 deletions(-) create mode 100644 src/views/demo/system/homepage/index.vue diff --git a/src/api/path/project.api.ts b/src/api/path/project.api.ts index 4602895..e151974 100644 --- a/src/api/path/project.api.ts +++ b/src/api/path/project.api.ts @@ -17,6 +17,8 @@ enum Api { getData = '/api/goview/project/getData', saveData = '/api/goview/project/save/data', projectFile = '/api/goview/project/uploadFile', + SetMainPage = '/api/goview/project/mainPage/set', + GetMainPage = '/api/goview/project/mainPage/get', } // * 项目列表 export const projectListApi = (params?: ProjectItem) => @@ -101,3 +103,14 @@ export function projectUploadFile( // httpErrorHandle(); // } // }; + +// 设置系统主页面 +export function setMainPage(params) { + console.log(params); + return defHttp.post({ + url: Api.SetMainPage, + params, + }); +} +// 获取系统主页面 +export const getMainPage = () => defHttp.get({ url: Api.GetMainPage }); diff --git a/src/router/routes/index.ts b/src/router/routes/index.ts index a74ad24..a1b3693 100644 --- a/src/router/routes/index.ts +++ b/src/router/routes/index.ts @@ -7,6 +7,9 @@ import { mainOutRoutes } from './mainOut'; import { PageEnum } from '@/enums/pageEnum'; import { t } from '@/hooks/web/useI18n'; import { projectRoutes, chartRoutes, previewRoutes, editRoutes } from '@/router/disposition/index'; +import { router } from '@/router'; +import { usePermissionStore } from '@/store/modules/permission'; +import { getMainPage } from '@/api/path/project.api'; // import.meta.glob() 直接引入所有的模块 Vite 独有的功能 const modules = import.meta.glob('./modules/**/*.ts', { eager: true }); @@ -38,6 +41,30 @@ export const RootRoute: AppRouteRecordRaw = { meta: { title: 'Root', }, + // beforeEnter: async (to, from, next) => { + // const mainPage = await getMainPage(); + // console.log('to', to); + // console.log('from', from); + // if (to.fullPath == '/') { + // console.log('进入重定向'); + // if (mainPage) { + // console.log('设置了主页'); + // console.log('mainPage', mainPage); + // // window.open( + // // 'http://192.168.10.120:5173/#/chart/preview/f0adeb4b-8f11-4cbb-84e3-7e03de472a7b', + // // '_self', + // // ); + // window.location.replace( + // 'http://192.168.10.120:5173/#/chart/preview/f0adeb4b-8f11-4cbb-84e3-7e03de472a7b', + // ); + // // window.location.href = mainPage; + // } else { + // next(); + // } + // } else { + // next(); + // } + // }, }; export const LoginRoute: AppRouteRecordRaw = { diff --git a/src/store/modules/permission.ts b/src/store/modules/permission.ts index 97c0807..dfb2e7d 100644 --- a/src/store/modules/permission.ts +++ b/src/store/modules/permission.ts @@ -27,6 +27,7 @@ import { PageEnum } from '@/enums/pageEnum'; import { router } from '@/router'; import { LAYOUT } from '@/router/constant'; import dayjs from 'dayjs'; +import { getMainPage } from '@/api/path/project.api'; interface PermissionState { // Permission code list @@ -44,6 +45,7 @@ interface PermissionState { // 菜单列表 frontMenuList: Menu[]; changeMenu: number; + homePage: string; } export const usePermissionStore = defineStore({ @@ -64,6 +66,8 @@ export const usePermissionStore = defineStore({ // 菜单列表 frontMenuList: [], changeMenu: dayjs().valueOf(), + // 主页面 + homePage: '', }), getters: { getChangeMenu(state): number { @@ -84,8 +88,14 @@ export const usePermissionStore = defineStore({ getIsDynamicAddedRoute(state): boolean { return state.isDynamicAddedRoute; }, + getHomePage(state) { + return state.homePage; + }, }, actions: { + async setHomePage() { + this.homePage = await getMainPage(); + }, setPermCodeList(codeList: string[]) { this.permCodeList = codeList; }, @@ -360,7 +370,8 @@ export const usePermissionStore = defineStore({ /** * @description 根据设置的首页path,修正routes中的affix标记(固定首页) * */ - const patchHomeAffix = (routes: AppRouteRecordRaw[]) => { + const patchHomeAffix = async (routes: AppRouteRecordRaw[]) => { + console.log('patchHomeAffix') if (!routes || routes.length === 0) return; let homePath: string = userStore.getUserInfo.homePath || PageEnum.BASE_HOME; @@ -382,7 +393,13 @@ export const usePermissionStore = defineStore({ } try { - patcher(routes); + const homePage = await getMainPage(); + console.log(homePage); + if (hoemPage) { + window.open(hoemPage, '_self'); + } else { + patcher(routes); + } } catch (e) { // 已处理完毕跳出循环 } diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 618fe53..2a6da14 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -25,6 +25,7 @@ import { isArray } from '@/utils/is'; import { h } from 'vue'; import md5 from 'js-md5'; import { useMultipleTabStore } from '@/store/modules/multipleTab'; +import { getMainPage } from '@/api/path/project.api'; interface UserState { userInfo: Nullable; @@ -93,6 +94,7 @@ export const useUserStore = defineStore({ setAuthCache(SUBJECT_LOGO_TITLE, logoTitle); if (subject != undefined) { const permissionStore = usePermissionStore(); + await permissionStore.setHomePage(); await permissionStore.buildRoutesAction(); const tabStore = useMultipleTabStore(); tabStore.resetState(); @@ -163,8 +165,14 @@ export const useUserStore = defineStore({ router.addRoute(PAGE_NOT_FOUND_ROUTE as unknown as RouteRecordRaw); permissionStore.setDynamicAddedRoute(true); } - goHome && (await router.replace(userInfo?.homePath || PageEnum.BASE_HOME)); - // goHome && (await router.replace(userInfo?.homePath || PageEnum.SUBJECT_HOME)); + const homePage = await getMainPage(); + // 配置主页面后,进入主页面 + if (homePage) { + window.open(homePage, '_self'); + } else { + goHome && (await router.replace(userInfo?.homePath || PageEnum.BASE_HOME)); + // goHome && (await router.replace(userInfo?.homePath || PageEnum.SUBJECT_HOME)); + } } return userInfo; }, diff --git a/src/views/demo/system/homepage/index.vue b/src/views/demo/system/homepage/index.vue new file mode 100644 index 0000000..1161313 --- /dev/null +++ b/src/views/demo/system/homepage/index.vue @@ -0,0 +1,80 @@ + + + diff --git a/src/views/preview/components/PreviewRenderGroup/index.vue b/src/views/preview/components/PreviewRenderGroup/index.vue index 95b115d..f382480 100644 --- a/src/views/preview/components/PreviewRenderGroup/index.vue +++ b/src/views/preview/components/PreviewRenderGroup/index.vue @@ -73,7 +73,6 @@ required: true, }, }); - console.log(props.groupData); // 单击交互 const clickElementItem = ref([]); // 双击交互 From ea03bbcd174a379fdf61b38120bb05a320753e07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=A6=8D?= <1455167345@qq.com> Date: Sat, 22 Feb 2025 09:39:32 +0800 Subject: [PATCH 2/2] =?UTF-8?q?/=E5=8A=A8=E6=80=81=E9=87=8D=E5=AE=9A?= =?UTF-8?q?=E5=90=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/routes/index.ts | 69 +++++++++++++++++++++------------ src/store/modules/permission.ts | 2 - src/store/modules/user.ts | 2 +- 3 files changed, 45 insertions(+), 28 deletions(-) diff --git a/src/router/routes/index.ts b/src/router/routes/index.ts index a1b3693..783ad0b 100644 --- a/src/router/routes/index.ts +++ b/src/router/routes/index.ts @@ -10,6 +10,8 @@ import { projectRoutes, chartRoutes, previewRoutes, editRoutes } from '@/router/ import { router } from '@/router'; import { usePermissionStore } from '@/store/modules/permission'; import { getMainPage } from '@/api/path/project.api'; +import { usePermissionStore } from '@/store/modules/permission'; +import { useUserStore } from '@/store/modules/user'; // import.meta.glob() 直接引入所有的模块 Vite 独有的功能 const modules = import.meta.glob('./modules/**/*.ts', { eager: true }); @@ -37,34 +39,51 @@ export const asyncRoutes = [ export const RootRoute: AppRouteRecordRaw = { path: '/', name: 'Root', - redirect: PageEnum.BASE_HOME, + // redirect: PageEnum.BASE_HOME, + // redirect: (to) => { + // const permissionStore = usePermissionStore(); + // console.log(permissionStore.homePage); + // const userStore = useUserStore(); + // console.log(userStore.userInfo); + // // const page = getMainPage().then((res) => { + // // console.log(res); + // // if (res) { + // // return res.split('#')[1]; + // // } else { + // // return PageEnum.BASE_HOME; + // // } + // // }); + // // console.log(page); + // // return page; + // return '/chart/preview/f0adeb4b-8f11-4cbb-84e3-7e03de472a7b'; + + // // const permissionStore = usePermissionStore(); + // // console.log(permissionStore.getHomePage); + // // const mainPage = getMainPage(); + // // console.log(mainPage); + // // console.log(mainPage.split('#')); + // // if (mainPage) { + // // return mainPage.split('#')[1]; + // // return '/chart/preview/f0adeb4b-8f11-4cbb-84e3-7e03de472a7b'; + // // } else { + // // return PageEnum.BASE_HOME; + // // } + // }, meta: { title: 'Root', }, - // beforeEnter: async (to, from, next) => { - // const mainPage = await getMainPage(); - // console.log('to', to); - // console.log('from', from); - // if (to.fullPath == '/') { - // console.log('进入重定向'); - // if (mainPage) { - // console.log('设置了主页'); - // console.log('mainPage', mainPage); - // // window.open( - // // 'http://192.168.10.120:5173/#/chart/preview/f0adeb4b-8f11-4cbb-84e3-7e03de472a7b', - // // '_self', - // // ); - // window.location.replace( - // 'http://192.168.10.120:5173/#/chart/preview/f0adeb4b-8f11-4cbb-84e3-7e03de472a7b', - // ); - // // window.location.href = mainPage; - // } else { - // next(); - // } - // } else { - // next(); - // } - // }, + beforeEnter: async (to, from, next) => { + const mainPage = await getMainPage(); + if (to.fullPath == '/') { + if (mainPage) { + next(mainPage.split('#')[1]); + } else { + next(); + } + } else { + next(); + } + }, }; export const LoginRoute: AppRouteRecordRaw = { diff --git a/src/store/modules/permission.ts b/src/store/modules/permission.ts index dfb2e7d..6c87e1b 100644 --- a/src/store/modules/permission.ts +++ b/src/store/modules/permission.ts @@ -371,7 +371,6 @@ export const usePermissionStore = defineStore({ * @description 根据设置的首页path,修正routes中的affix标记(固定首页) * */ const patchHomeAffix = async (routes: AppRouteRecordRaw[]) => { - console.log('patchHomeAffix') if (!routes || routes.length === 0) return; let homePath: string = userStore.getUserInfo.homePath || PageEnum.BASE_HOME; @@ -394,7 +393,6 @@ export const usePermissionStore = defineStore({ try { const homePage = await getMainPage(); - console.log(homePage); if (hoemPage) { window.open(hoemPage, '_self'); } else { diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index 2a6da14..fcff9d2 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -168,7 +168,7 @@ export const useUserStore = defineStore({ const homePage = await getMainPage(); // 配置主页面后,进入主页面 if (homePage) { - window.open(homePage, '_self'); + router.replace(homePage.split('#')[1]); } else { goHome && (await router.replace(userInfo?.homePath || PageEnum.BASE_HOME)); // goHome && (await router.replace(userInfo?.homePath || PageEnum.SUBJECT_HOME));