Merge branch 'main' of http://123.132.248.154:10000/gitY/LinYeFangHuo
commit
055775db14
|
|
@ -17,6 +17,8 @@ enum Api {
|
||||||
getData = '/api/goview/project/getData',
|
getData = '/api/goview/project/getData',
|
||||||
saveData = '/api/goview/project/save/data',
|
saveData = '/api/goview/project/save/data',
|
||||||
projectFile = '/api/goview/project/uploadFile',
|
projectFile = '/api/goview/project/uploadFile',
|
||||||
|
SetMainPage = '/api/goview/project/mainPage/set',
|
||||||
|
GetMainPage = '/api/goview/project/mainPage/get',
|
||||||
}
|
}
|
||||||
// * 项目列表
|
// * 项目列表
|
||||||
export const projectListApi = (params?: ProjectItem) =>
|
export const projectListApi = (params?: ProjectItem) =>
|
||||||
|
|
@ -101,3 +103,14 @@ export function projectUploadFile(
|
||||||
// httpErrorHandle();
|
// httpErrorHandle();
|
||||||
// }
|
// }
|
||||||
// };
|
// };
|
||||||
|
|
||||||
|
// 设置系统主页面
|
||||||
|
export function setMainPage(params) {
|
||||||
|
console.log(params);
|
||||||
|
return defHttp.post({
|
||||||
|
url: Api.SetMainPage,
|
||||||
|
params,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// 获取系统主页面
|
||||||
|
export const getMainPage = () => defHttp.get({ url: Api.GetMainPage });
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,11 @@ import { mainOutRoutes } from './mainOut';
|
||||||
import { PageEnum } from '@/enums/pageEnum';
|
import { PageEnum } from '@/enums/pageEnum';
|
||||||
import { t } from '@/hooks/web/useI18n';
|
import { t } from '@/hooks/web/useI18n';
|
||||||
import { projectRoutes, chartRoutes, previewRoutes, editRoutes } from '@/router/disposition/index';
|
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 { usePermissionStore } from '@/store/modules/permission';
|
||||||
|
import { useUserStore } from '@/store/modules/user';
|
||||||
|
|
||||||
// import.meta.glob() 直接引入所有的模块 Vite 独有的功能
|
// import.meta.glob() 直接引入所有的模块 Vite 独有的功能
|
||||||
const modules = import.meta.glob('./modules/**/*.ts', { eager: true });
|
const modules = import.meta.glob('./modules/**/*.ts', { eager: true });
|
||||||
|
|
@ -34,10 +39,51 @@ export const asyncRoutes = [
|
||||||
export const RootRoute: AppRouteRecordRaw = {
|
export const RootRoute: AppRouteRecordRaw = {
|
||||||
path: '/',
|
path: '/',
|
||||||
name: 'Root',
|
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: {
|
meta: {
|
||||||
title: 'Root',
|
title: 'Root',
|
||||||
},
|
},
|
||||||
|
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 = {
|
export const LoginRoute: AppRouteRecordRaw = {
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ import { PageEnum } from '@/enums/pageEnum';
|
||||||
import { router } from '@/router';
|
import { router } from '@/router';
|
||||||
import { LAYOUT } from '@/router/constant';
|
import { LAYOUT } from '@/router/constant';
|
||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
|
import { getMainPage } from '@/api/path/project.api';
|
||||||
|
|
||||||
interface PermissionState {
|
interface PermissionState {
|
||||||
// Permission code list
|
// Permission code list
|
||||||
|
|
@ -44,6 +45,7 @@ interface PermissionState {
|
||||||
// 菜单列表
|
// 菜单列表
|
||||||
frontMenuList: Menu[];
|
frontMenuList: Menu[];
|
||||||
changeMenu: number;
|
changeMenu: number;
|
||||||
|
homePage: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const usePermissionStore = defineStore({
|
export const usePermissionStore = defineStore({
|
||||||
|
|
@ -64,6 +66,8 @@ export const usePermissionStore = defineStore({
|
||||||
// 菜单列表
|
// 菜单列表
|
||||||
frontMenuList: [],
|
frontMenuList: [],
|
||||||
changeMenu: dayjs().valueOf(),
|
changeMenu: dayjs().valueOf(),
|
||||||
|
// 主页面
|
||||||
|
homePage: '',
|
||||||
}),
|
}),
|
||||||
getters: {
|
getters: {
|
||||||
getChangeMenu(state): number {
|
getChangeMenu(state): number {
|
||||||
|
|
@ -84,8 +88,14 @@ export const usePermissionStore = defineStore({
|
||||||
getIsDynamicAddedRoute(state): boolean {
|
getIsDynamicAddedRoute(state): boolean {
|
||||||
return state.isDynamicAddedRoute;
|
return state.isDynamicAddedRoute;
|
||||||
},
|
},
|
||||||
|
getHomePage(state) {
|
||||||
|
return state.homePage;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
|
async setHomePage() {
|
||||||
|
this.homePage = await getMainPage();
|
||||||
|
},
|
||||||
setPermCodeList(codeList: string[]) {
|
setPermCodeList(codeList: string[]) {
|
||||||
this.permCodeList = codeList;
|
this.permCodeList = codeList;
|
||||||
},
|
},
|
||||||
|
|
@ -360,7 +370,7 @@ export const usePermissionStore = defineStore({
|
||||||
/**
|
/**
|
||||||
* @description 根据设置的首页path,修正routes中的affix标记(固定首页)
|
* @description 根据设置的首页path,修正routes中的affix标记(固定首页)
|
||||||
* */
|
* */
|
||||||
const patchHomeAffix = (routes: AppRouteRecordRaw[]) => {
|
const patchHomeAffix = async (routes: AppRouteRecordRaw[]) => {
|
||||||
if (!routes || routes.length === 0) return;
|
if (!routes || routes.length === 0) return;
|
||||||
let homePath: string = userStore.getUserInfo.homePath || PageEnum.BASE_HOME;
|
let homePath: string = userStore.getUserInfo.homePath || PageEnum.BASE_HOME;
|
||||||
|
|
||||||
|
|
@ -382,7 +392,12 @@ export const usePermissionStore = defineStore({
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
const homePage = await getMainPage();
|
||||||
|
if (hoemPage) {
|
||||||
|
window.open(hoemPage, '_self');
|
||||||
|
} else {
|
||||||
patcher(routes);
|
patcher(routes);
|
||||||
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// 已处理完毕跳出循环
|
// 已处理完毕跳出循环
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@ import { isArray } from '@/utils/is';
|
||||||
import { h } from 'vue';
|
import { h } from 'vue';
|
||||||
import md5 from 'js-md5';
|
import md5 from 'js-md5';
|
||||||
import { useMultipleTabStore } from '@/store/modules/multipleTab';
|
import { useMultipleTabStore } from '@/store/modules/multipleTab';
|
||||||
|
import { getMainPage } from '@/api/path/project.api';
|
||||||
|
|
||||||
interface UserState {
|
interface UserState {
|
||||||
userInfo: Nullable<UserInfo>;
|
userInfo: Nullable<UserInfo>;
|
||||||
|
|
@ -93,6 +94,7 @@ export const useUserStore = defineStore({
|
||||||
setAuthCache(SUBJECT_LOGO_TITLE, logoTitle);
|
setAuthCache(SUBJECT_LOGO_TITLE, logoTitle);
|
||||||
if (subject != undefined) {
|
if (subject != undefined) {
|
||||||
const permissionStore = usePermissionStore();
|
const permissionStore = usePermissionStore();
|
||||||
|
await permissionStore.setHomePage();
|
||||||
await permissionStore.buildRoutesAction();
|
await permissionStore.buildRoutesAction();
|
||||||
const tabStore = useMultipleTabStore();
|
const tabStore = useMultipleTabStore();
|
||||||
tabStore.resetState();
|
tabStore.resetState();
|
||||||
|
|
@ -163,9 +165,15 @@ export const useUserStore = defineStore({
|
||||||
router.addRoute(PAGE_NOT_FOUND_ROUTE as unknown as RouteRecordRaw);
|
router.addRoute(PAGE_NOT_FOUND_ROUTE as unknown as RouteRecordRaw);
|
||||||
permissionStore.setDynamicAddedRoute(true);
|
permissionStore.setDynamicAddedRoute(true);
|
||||||
}
|
}
|
||||||
|
const homePage = await getMainPage();
|
||||||
|
// 配置主页面后,进入主页面
|
||||||
|
if (homePage) {
|
||||||
|
router.replace(homePage.split('#')[1]);
|
||||||
|
} else {
|
||||||
goHome && (await router.replace(userInfo?.homePath || PageEnum.BASE_HOME));
|
goHome && (await router.replace(userInfo?.homePath || PageEnum.BASE_HOME));
|
||||||
// goHome && (await router.replace(userInfo?.homePath || PageEnum.SUBJECT_HOME));
|
// goHome && (await router.replace(userInfo?.homePath || PageEnum.SUBJECT_HOME));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return userInfo;
|
return userInfo;
|
||||||
},
|
},
|
||||||
async getUserInfoAction(): Promise<UserInfo | null> {
|
async getUserInfoAction(): Promise<UserInfo | null> {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,80 @@
|
||||||
|
<template>
|
||||||
|
<PageWrapper contentBackground contentClass="p-4">
|
||||||
|
<a-form ref="formRef" :model="formState" :label-col="labelCol" :wrapper-col="wrapperCol">
|
||||||
|
<a-form-item label="页面">
|
||||||
|
<a-select v-model:value="formState.page" placeholder="请选择页面">
|
||||||
|
<a-select-option v-for="(item, index) in publishOptions" :key="index" :value="item.value">
|
||||||
|
{{ item.label }}</a-select-option
|
||||||
|
>
|
||||||
|
</a-select>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item :wrapper-col="{ span: 14, offset: 4 }">
|
||||||
|
<a-button type="primary" @click="onSubmit">保存</a-button>
|
||||||
|
</a-form-item>
|
||||||
|
</a-form>
|
||||||
|
</PageWrapper>
|
||||||
|
</template>
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { nextTick, onMounted, ref, reactive } from 'vue';
|
||||||
|
import { PageWrapper } from '@/components/Page';
|
||||||
|
import { useMessage } from '@/hooks/web/useMessage';
|
||||||
|
import { BasicForm, useForm } from '@/components/Form';
|
||||||
|
import { projectListApi, setMainPage, getMainPage } from '@/api/path/project.api';
|
||||||
|
import { previewPath } from '@/utils';
|
||||||
|
|
||||||
|
const { createConfirm, createMessage } = useMessage();
|
||||||
|
const labelCol = ref({ span: 4 });
|
||||||
|
const wrapperCol = ref({ span: 14 });
|
||||||
|
const publishOptions = ref([]);
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getPublishedPageList();
|
||||||
|
getPage();
|
||||||
|
});
|
||||||
|
|
||||||
|
const formRef = ref();
|
||||||
|
const formState = reactive({
|
||||||
|
page: '',
|
||||||
|
});
|
||||||
|
const onSubmit = () => {
|
||||||
|
formRef.value
|
||||||
|
.validate()
|
||||||
|
.then(() => {
|
||||||
|
console.log('values', formState.page);
|
||||||
|
setMainPage({ mainPage: formState.page })
|
||||||
|
.then((res) => {
|
||||||
|
createMessage.success('设置成功');
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.log('error', error);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.log('error', error);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
// 获取已发布页面列表
|
||||||
|
const getPublishedPageList = async () => {
|
||||||
|
const data = await projectListApi({
|
||||||
|
state: 1,
|
||||||
|
page: 1,
|
||||||
|
limit: 1000,
|
||||||
|
});
|
||||||
|
publishOptions.value = data.items.map((item) => {
|
||||||
|
return {
|
||||||
|
label: item.projectName,
|
||||||
|
value: previewPath(item.id),
|
||||||
|
};
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const getPage = () => {
|
||||||
|
getMainPage().then((res) => {
|
||||||
|
formState.page = res;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.demo {
|
||||||
|
background-color: @component-background;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -73,7 +73,6 @@
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
console.log(props.groupData);
|
|
||||||
// 单击交互
|
// 单击交互
|
||||||
const clickElementItem = ref([]);
|
const clickElementItem = ref([]);
|
||||||
// 双击交互
|
// 双击交互
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue