moc变更管理系统框架

This commit is contained in:
2026-08-13 12:31:16 +08:00
commit 3e5157909c
291 changed files with 39930 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
/* eslint-disable */
/* prettier-ignore */
// Generated by elegant-router
// Read more: https://github.com/soybeanjs/elegant-router
import type { RouteComponent } from "vue-router";
import type { LastLevelRouteKey, RouteLayout } from "@elegant-router/types";
import BaseLayout from "@/layouts/base-layout/index.vue";
import BlankLayout from "@/layouts/blank-layout/index.vue";
export const layouts: Record<RouteLayout, RouteComponent | (() => Promise<RouteComponent>)> = {
base: BaseLayout,
blank: BlankLayout,
};
export const views: Record<LastLevelRouteKey, RouteComponent | (() => Promise<RouteComponent>)> = {
403: () => import("@/views/_builtin/403/index.vue"),
404: () => import("@/views/_builtin/404/index.vue"),
500: () => import("@/views/_builtin/500/index.vue"),
changeledger_mychanges: () => import("@/views/changeLedger/myChanges/index.vue"),
changeledger_workshopchanges: () => import("@/views/changeLedger/workshopChanges/index.vue"),
changestatistics: () => import("@/views/changeStatistics/index.vue"),
home_index: () => import("@/views/home/index/index.vue"),
home_initiatechange: () => import("@/views/home/initiateChange/index.vue"),
home_mydraft: () => import("@/views/home/myDraft/index.vue"),
home_pending: () => import("@/views/home/pending/index.vue"),
home_process: () => import("@/views/home/process/index.vue"),
home_processdetail: () => import("@/views/home/processDetail/index.vue"),
login: () => import("@/views/login/index.vue"),
"user-center": () => import("@/views/user-center/index.vue"),
};
+183
View File
@@ -0,0 +1,183 @@
/* eslint-disable */
/* prettier-ignore */
// Generated by elegant-router
// Read more: https://github.com/soybeanjs/elegant-router
import type { GeneratedRoute } from '@elegant-router/types';
export const generatedRoutes: GeneratedRoute[] = [
{
name: '403',
path: '/403',
component: 'layout.blank$view.403',
meta: {
title: '403',
i18nKey: 'route.403',
constant: true,
hideInMenu: true
}
},
{
name: '404',
path: '/404',
component: 'layout.blank$view.404',
meta: {
title: '404',
i18nKey: 'route.404',
constant: true,
hideInMenu: true
}
},
{
name: '500',
path: '/500',
component: 'layout.blank$view.500',
meta: {
title: '500',
i18nKey: 'route.500',
constant: true,
hideInMenu: true
}
},
{
name: 'changeledger',
path: '/changeledger',
component: 'layout.base',
meta: {
title: 'changeledger',
i18nKey: 'route.changeledger',
icon: 'tabler:table',
order: 2
},
children: [
{
name: 'changeledger_mychanges',
path: '/changeledger/mychanges',
component: 'view.changeledger_mychanges',
meta: {
title: 'changeledger_mychanges',
i18nKey: 'route.changeledger_mychanges',
icon: ''
}
},
{
name: 'changeledger_workshopchanges',
path: '/changeledger/workshopchanges',
component: 'view.changeledger_workshopchanges',
meta: {
title: 'changeledger_workshopchanges',
i18nKey: 'route.changeledger_workshopchanges',
icon: ''
}
}
]
},
{
name: 'changestatistics',
path: '/changestatistics',
component: 'layout.base$view.changestatistics',
meta: {
title: 'changestatistics',
i18nKey: 'route.changestatistics',
icon: 'ix:barchart',
order: 3
}
},
{
name: 'home',
path: '/home',
component: 'layout.base',
meta: {
title: 'home',
i18nKey: 'route.home',
icon: 'lucide:home',
order: 1
},
children: [
{
name: 'home_index',
path: '/home/index',
component: 'view.home_index',
meta: {
title: 'home_index',
i18nKey: 'route.home_index',
icon: ''
}
},
{
name: 'home_initiatechange',
path: '/home/initiatechange',
component: 'view.home_initiatechange',
meta: {
title: 'home_initiatechange',
i18nKey: 'route.home_initiatechange',
icon: ''
}
},
{
name: 'home_mydraft',
path: '/home/mydraft',
component: 'view.home_mydraft',
meta: {
title: 'home_mydraft',
i18nKey: 'route.home_mydraft',
icon: ''
}
},
{
name: 'home_pending',
path: '/home/pending',
component: 'view.home_pending',
meta: {
title: 'home_pending',
i18nKey: 'route.home_pending',
icon: ''
}
},
{
name: 'home_process',
path: '/home/process',
component: 'view.home_process',
meta: {
title: 'home_process',
i18nKey: 'route.home_process',
icon: ''
}
},
{
name: 'home_processdetail',
path: '/home/processdetail',
component: 'view.home_processdetail',
meta: {
title: 'home_processdetail',
i18nKey: 'route.home_processdetail',
activeMenu: 'home_process',
hideInMenu: true,
icon: ''
}
}
]
},
{
name: 'login',
path: '/login/:module(pwd-login)?',
component: 'layout.blank$view.login',
props: true,
meta: {
title: 'login',
i18nKey: 'route.login',
constant: true,
hideInMenu: true
}
},
{
name: 'user-center',
path: '/user-center',
component: 'layout.base$view.user-center',
meta: {
title: 'user-center',
i18nKey: 'route.user-center',
hideInMenu: true
}
}
];
+202
View File
@@ -0,0 +1,202 @@
/* eslint-disable */
/* prettier-ignore */
// Generated by elegant-router
// Read more: https://github.com/soybeanjs/elegant-router
import type { RouteRecordRaw, RouteComponent } from 'vue-router';
import type { ElegantConstRoute } from '@elegant-router/vue';
import type { RouteMap, RouteKey, RoutePath } from '@elegant-router/types';
/**
* transform elegant const routes to vue routes
* @param routes elegant const routes
* @param layouts layout components
* @param views view components
*/
export function transformElegantRoutesToVueRoutes(
routes: ElegantConstRoute[],
layouts: Record<string, RouteComponent | (() => Promise<RouteComponent>)>,
views: Record<string, RouteComponent | (() => Promise<RouteComponent>)>
) {
return routes.flatMap(route => transformElegantRouteToVueRoute(route, layouts, views));
}
/**
* transform elegant route to vue route
* @param route elegant const route
* @param layouts layout components
* @param views view components
*/
function transformElegantRouteToVueRoute(
route: ElegantConstRoute,
layouts: Record<string, RouteComponent | (() => Promise<RouteComponent>)>,
views: Record<string, RouteComponent | (() => Promise<RouteComponent>)>
) {
const LAYOUT_PREFIX = 'layout.';
const VIEW_PREFIX = 'view.';
const ROUTE_DEGREE_SPLITTER = '_';
const FIRST_LEVEL_ROUTE_COMPONENT_SPLIT = '$';
function isLayout(component: string) {
return component.startsWith(LAYOUT_PREFIX);
}
function getLayoutName(component: string) {
const layout = component.replace(LAYOUT_PREFIX, '');
if(!layouts[layout]) {
throw new Error(`Layout component "${layout}" not found`);
}
return layout;
}
function isView(component: string) {
return component.startsWith(VIEW_PREFIX);
}
function getViewName(component: string) {
const view = component.replace(VIEW_PREFIX, '');
if(!views[view]) {
throw new Error(`View component "${view}" not found`);
}
return view;
}
function isFirstLevelRoute(item: ElegantConstRoute) {
return !item.name.includes(ROUTE_DEGREE_SPLITTER);
}
function isSingleLevelRoute(item: ElegantConstRoute) {
return isFirstLevelRoute(item) && !item.children?.length;
}
function getSingleLevelRouteComponent(component: string) {
const [layout, view] = component.split(FIRST_LEVEL_ROUTE_COMPONENT_SPLIT);
return {
layout: getLayoutName(layout),
view: getViewName(view)
};
}
const vueRoutes: RouteRecordRaw[] = [];
// add props: true to route
if (route.path.includes(':') && !route.props) {
route.props = true;
}
const { name, path, component, children, ...rest } = route;
const vueRoute = { name, path, ...rest } as RouteRecordRaw;
try {
if (component) {
if (isSingleLevelRoute(route)) {
const { layout, view } = getSingleLevelRouteComponent(component);
const singleLevelRoute: RouteRecordRaw = {
path,
component: layouts[layout],
meta: {
title: route.meta?.title || ''
},
children: [
{
name,
path: '',
component: views[view],
...rest
} as RouteRecordRaw
]
};
return [singleLevelRoute];
}
if (isLayout(component)) {
const layoutName = getLayoutName(component);
vueRoute.component = layouts[layoutName];
}
if (isView(component)) {
const viewName = getViewName(component);
vueRoute.component = views[viewName];
}
}
} catch (error: any) {
console.error(`Error transforming route "${route.name}": ${error.toString()}`);
return [];
}
// add redirect to child
if (children?.length && !vueRoute.redirect) {
vueRoute.redirect = {
name: children[0].name
};
}
if (children?.length) {
const childRoutes = children.flatMap(child => transformElegantRouteToVueRoute(child, layouts, views));
if(isFirstLevelRoute(route)) {
vueRoute.children = childRoutes;
} else {
vueRoutes.push(...childRoutes);
}
}
vueRoutes.unshift(vueRoute);
return vueRoutes;
}
/**
* map of route name and route path
*/
const routeMap: RouteMap = {
"root": "/",
"not-found": "/:pathMatch(.*)*",
"403": "/403",
"404": "/404",
"500": "/500",
"changeledger": "/changeledger",
"changeledger_mychanges": "/changeledger/mychanges",
"changeledger_workshopchanges": "/changeledger/workshopchanges",
"changestatistics": "/changestatistics",
"home": "/home",
"home_index": "/home/index",
"home_initiatechange": "/home/initiatechange",
"home_mydraft": "/home/mydraft",
"home_pending": "/home/pending",
"home_process": "/home/process",
"home_processdetail": "/home/processdetail",
"login": "/login/:module(pwd-login)?",
"user-center": "/user-center"
};
/**
* get route path by route name
* @param name route name
*/
export function getRoutePath<T extends RouteKey>(name: T) {
return routeMap[name];
}
/**
* get route name by route path
* @param path route path
*/
export function getRouteName(path: RoutePath) {
const routeEntries = Object.entries(routeMap) as [RouteKey, RoutePath][];
const routeName: RouteKey | null = routeEntries.find(([, routePath]) => routePath === path)?.[0] || null;
return routeName;
}