From 9f73ea2d329abd721afd0213fb5803aad723f667 Mon Sep 17 00:00:00 2001
From: gssong <1742057357@qq.com>
Date: 星期六, 06 四月 2024 11:21:17 +0800
Subject: [PATCH] update 优化表单绑定逻辑,移除流程定义配置表单,添加模型复制
---
src/store/modules/permission.ts | 90 ++++++++++++++++++++++++++++-----------------
1 files changed, 56 insertions(+), 34 deletions(-)
diff --git a/src/store/modules/permission.ts b/src/store/modules/permission.ts
index ed64e46..cf12a73 100644
--- a/src/store/modules/permission.ts
+++ b/src/store/modules/permission.ts
@@ -2,35 +2,46 @@
import router, { constantRoutes, dynamicRoutes } from '@/router';
import store from '@/store';
import { getRouters } from '@/api/menu';
+import auth from '@/plugins/auth';
+import { RouteRecordRaw } from 'vue-router';
+
import Layout from '@/layout/index.vue';
import ParentView from '@/components/ParentView/index.vue';
import InnerLink from '@/layout/components/InnerLink/index.vue';
-import auth from '@/plugins/auth';
-import { RouteOption } from 'vue-router';
+
// 鍖归厤views閲岄潰鎵�鏈夌殑.vue鏂囦欢
const modules = import.meta.glob('./../../views/**/*.vue');
-
export const usePermissionStore = defineStore('permission', () => {
- const routes = ref<RouteOption[]>([]);
- const addRoutes = ref<RouteOption[]>([]);
- const defaultRoutes = ref<RouteOption[]>([]);
- const topbarRouters = ref<RouteOption[]>([]);
- const sidebarRouters = ref<RouteOption[]>([]);
+ const routes = ref<RouteRecordRaw[]>([]);
+ const addRoutes = ref<RouteRecordRaw[]>([]);
+ const defaultRoutes = ref<RouteRecordRaw[]>([]);
+ const topbarRouters = ref<RouteRecordRaw[]>([]);
+ const sidebarRouters = ref<RouteRecordRaw[]>([]);
- const setRoutes = (newRoutes: RouteOption[]): void => {
+ const getRoutes = (): RouteRecordRaw[] => {
+ return routes.value;
+ };
+ const getSidebarRoutes = (): RouteRecordRaw[] => {
+ return sidebarRouters.value;
+ };
+ const getTopbarRoutes = (): RouteRecordRaw[] => {
+ return topbarRouters.value;
+ };
+
+ const setRoutes = (newRoutes: RouteRecordRaw[]): void => {
addRoutes.value = newRoutes;
routes.value = constantRoutes.concat(newRoutes);
};
- const setDefaultRoutes = (routes: RouteOption[]): void => {
+ const setDefaultRoutes = (routes: RouteRecordRaw[]): void => {
defaultRoutes.value = constantRoutes.concat(routes);
};
- const setTopbarRoutes = (routes: RouteOption[]): void => {
+ const setTopbarRoutes = (routes: RouteRecordRaw[]): void => {
topbarRouters.value = routes;
};
- const setSidebarRouters = (routes: RouteOption[]): void => {
+ const setSidebarRouters = (routes: RouteRecordRaw[]): void => {
sidebarRouters.value = routes;
};
- const generateRoutes = async (): Promise<RouteOption[]> => {
+ const generateRoutes = async (): Promise<RouteRecordRaw[]> => {
const res = await getRouters();
const { data } = res;
const sdata = JSON.parse(JSON.stringify(data));
@@ -47,7 +58,7 @@
setSidebarRouters(constantRoutes.concat(sidebarRoutes));
setDefaultRoutes(sidebarRoutes);
setTopbarRoutes(defaultRoutes);
- return new Promise<RouteOption[]>((resolve) => resolve(rewriteRoutes));
+ return new Promise<RouteRecordRaw[]>((resolve) => resolve(rewriteRoutes));
};
/**
@@ -56,22 +67,20 @@
* @param lastRouter 涓婁竴绾ц矾鐢�
* @param type 鏄惁鏄噸鍐欒矾鐢�
*/
- const filterAsyncRouter = (asyncRouterMap: RouteOption[], lastRouter?: RouteOption, type = false): RouteOption[] => {
+ const filterAsyncRouter = (asyncRouterMap: RouteRecordRaw[], lastRouter?: RouteRecordRaw, type = false): RouteRecordRaw[] => {
return asyncRouterMap.filter((route) => {
if (type && route.children) {
route.children = filterChildren(route.children, undefined);
}
- if (route.component) {
- // Layout ParentView 缁勪欢鐗规畩澶勭悊
- if (route.component === 'Layout') {
- route.component = Layout;
- } else if (route.component === 'ParentView') {
- route.component = ParentView;
- } else if (route.component === 'InnerLink') {
- route.component = InnerLink;
- } else {
- route.component = loadView(route.component);
- }
+ // Layout ParentView 缁勪欢鐗规畩澶勭悊
+ if (route.component?.toString() === 'Layout') {
+ route.component = Layout;
+ } else if (route.component?.toString() === 'ParentView') {
+ route.component = ParentView;
+ } else if (route.component?.toString() === 'InnerLink') {
+ route.component = InnerLink;
+ } else {
+ route.component = loadView(route.component);
}
if (route.children != null && route.children && route.children.length) {
route.children = filterAsyncRouter(route.children, route, type);
@@ -82,11 +91,11 @@
return true;
});
};
- const filterChildren = (childrenMap: RouteOption[], lastRouter?: RouteOption): RouteOption[] => {
- let children: RouteOption[] = [];
+ const filterChildren = (childrenMap: RouteRecordRaw[], lastRouter?: RouteRecordRaw): RouteRecordRaw[] => {
+ let children: RouteRecordRaw[] = [];
childrenMap.forEach((el) => {
if (el.children && el.children.length) {
- if (el.component === 'ParentView' && !lastRouter) {
+ if (el.component?.toString() === 'ParentView' && !lastRouter) {
el.children.forEach((c) => {
c.path = el.path + '/' + c.path;
if (c.children && c.children.length) {
@@ -101,20 +110,33 @@
if (lastRouter) {
el.path = lastRouter.path + '/' + el.path;
if (el.children && el.children.length) {
- children = children.concat(filterChildren(el.children, el))
- return
+ children = children.concat(filterChildren(el.children, el));
+ return;
}
}
children = children.concat(el);
});
return children;
};
- return { routes, setRoutes, generateRoutes, setSidebarRouters, topbarRouters, sidebarRouters, defaultRoutes };
+ return {
+ routes,
+ topbarRouters,
+ sidebarRouters,
+ defaultRoutes,
+
+ getRoutes,
+ getSidebarRoutes,
+ getTopbarRoutes,
+
+ setRoutes,
+ generateRoutes,
+ setSidebarRouters
+ };
});
// 鍔ㄦ�佽矾鐢遍亶鍘嗭紝楠岃瘉鏄惁鍏峰鏉冮檺
-export const filterDynamicRoutes = (routes: RouteOption[]) => {
- const res: RouteOption[] = [];
+export const filterDynamicRoutes = (routes: RouteRecordRaw[]) => {
+ const res: RouteRecordRaw[] = [];
routes.forEach((route) => {
if (route.permissions) {
if (auth.hasPermiOr(route.permissions)) {
--
Gitblit v1.9.3