|
@@ -18,92 +18,57 @@ import encodeStr from "@/utils/pass";
|
|
import { passWordEditAPI } from "@/store/action/layout";
|
|
import { passWordEditAPI } from "@/store/action/layout";
|
|
import { getTokenInfo, removeTokenInfo } from "@/utils/storage";
|
|
import { getTokenInfo, removeTokenInfo } from "@/utils/storage";
|
|
import { MessageFu } from "@/utils/message";
|
|
import { MessageFu } from "@/utils/message";
|
|
-import { RouterType } from "@/types";
|
|
|
|
import logoImg from "@/assets/img/logo.png";
|
|
import logoImg from "@/assets/img/logo.png";
|
|
-import { useDispatch } from "react-redux";
|
|
|
|
|
|
+import { useDispatch, useSelector } from "react-redux";
|
|
import { A5_APIgetList } from "@/store/action/A5Section";
|
|
import { A5_APIgetList } from "@/store/action/A5Section";
|
|
import { A4_APIgetRoleAll } from "@/store/action/A4Role";
|
|
import { A4_APIgetRoleAll } from "@/store/action/A4Role";
|
|
import { A2_APIgetListFile } from "@/store/action/A2Dict";
|
|
import { A2_APIgetListFile } from "@/store/action/A2Dict";
|
|
import { A3_APIgetRole } from "@/store/action/A3User";
|
|
import { A3_APIgetRole } from "@/store/action/A3User";
|
|
-
|
|
|
|
-const NotFound = React.lazy(() => import("@/components/NotFound"));
|
|
|
|
|
|
+import NotFound from "@/components/NotFound";
|
|
|
|
+import tabLeftArr from "./data";
|
|
|
|
+import { RootState } from "@/store";
|
|
|
|
+import { RouterType } from "@/types";
|
|
|
|
|
|
function Layout() {
|
|
function Layout() {
|
|
|
|
+ const dispatch = useDispatch();
|
|
|
|
|
|
- const dispatch =useDispatch()
|
|
|
|
-
|
|
|
|
- useEffect(()=>{
|
|
|
|
|
|
+ useEffect(() => {
|
|
// 进页面获取 部门 列表 信息(给 用户管理、字段管理、项目管理 页面使用)
|
|
// 进页面获取 部门 列表 信息(给 用户管理、字段管理、项目管理 页面使用)
|
|
- dispatch(A5_APIgetList())
|
|
|
|
|
|
+ dispatch(A5_APIgetList());
|
|
|
|
|
|
// 获取角色 列表 信息(给 用户管理、项目管理 页面使用)
|
|
// 获取角色 列表 信息(给 用户管理、项目管理 页面使用)
|
|
dispatch(A3_APIgetRole());
|
|
dispatch(A3_APIgetRole());
|
|
|
|
|
|
// 获取权限信息(整个项目的关于权限的信息)
|
|
// 获取权限信息(整个项目的关于权限的信息)
|
|
- dispatch(A4_APIgetRoleAll())
|
|
|
|
|
|
+ dispatch(A4_APIgetRoleAll());
|
|
|
|
|
|
- // 获取字典的 -内控文件属性(角色管理等页面使用)
|
|
|
|
|
|
+ // 获取字典的 -内控文件属性 列表(角色管理等页面使用)
|
|
dispatch(A2_APIgetListFile());
|
|
dispatch(A2_APIgetListFile());
|
|
|
|
+ }, [dispatch]);
|
|
|
|
|
|
- },[dispatch])
|
|
|
|
|
|
+ // 左侧菜单 和 路由 信息
|
|
|
|
+ const [list, setList] = useState([] as RouterType);
|
|
|
|
|
|
|
|
+ //获取权限信息(id数组,已过滤)
|
|
|
|
+ const A4RoleAll = useSelector((state: RootState) => state.A4Role.A4RoleAll);
|
|
|
|
|
|
- const listTemp = useMemo(() => {
|
|
|
|
- const arr: RouterType = [
|
|
|
|
- {
|
|
|
|
- id: 1,
|
|
|
|
- name: "项目管理",
|
|
|
|
- path: "/",
|
|
|
|
- Com: React.lazy(() => import("../A1Project")),
|
|
|
|
- done: true,
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- id: 2,
|
|
|
|
- name: "字典管理",
|
|
|
|
- path: "/dict",
|
|
|
|
- Com: React.lazy(() => import("../A2Dict")),
|
|
|
|
- done: true,
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- id: 3,
|
|
|
|
- name: "用户管理",
|
|
|
|
- path: "/user",
|
|
|
|
- Com: React.lazy(() => import("../A3User")),
|
|
|
|
- done: true,
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- id: 4,
|
|
|
|
- name: "角色管理",
|
|
|
|
- path: "/role",
|
|
|
|
- Com: React.lazy(() => import("../A4Role")),
|
|
|
|
- done: true,
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- id: 5,
|
|
|
|
- name: "部门管理",
|
|
|
|
- path: "/section",
|
|
|
|
- Com: React.lazy(() => import("../A5Section")),
|
|
|
|
- done: true,
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- id: 6,
|
|
|
|
- name: "系统日志",
|
|
|
|
- path: "/log",
|
|
|
|
- Com: React.lazy(() => import("../A6Log")),
|
|
|
|
- done: true,
|
|
|
|
- },
|
|
|
|
- {
|
|
|
|
- id: 7,
|
|
|
|
- name: "回收站",
|
|
|
|
- path: "/recycled",
|
|
|
|
- Com: React.lazy(() => import("../A7Recycled")),
|
|
|
|
- done: true,
|
|
|
|
- },
|
|
|
|
- ];
|
|
|
|
- return arr;
|
|
|
|
- }, []);
|
|
|
|
|
|
+ // 通过权限信息 动态 显示 侧边栏
|
|
|
|
+ useEffect(() => {
|
|
|
|
+ const arr = [...tabLeftArr];
|
|
|
|
+
|
|
|
|
+ arr.forEach((v) => {
|
|
|
|
+ if (A4RoleAll.includes(v.id)) v.done = true;
|
|
|
|
+ else v.done = false;
|
|
|
|
+ });
|
|
|
|
+ setList(arr.filter((v) => v.done));
|
|
|
|
+ }, [A4RoleAll]);
|
|
|
|
|
|
- const [list, setList] = useState(listTemp.filter((v) => v.done));
|
|
|
|
|
|
+ // 第一个页面不是 项目 管理 的时候 动态 跳转
|
|
|
|
+ useEffect(() => {
|
|
|
|
+ if (list && list[0] && list[0].id !== "1000") {
|
|
|
|
+ history.replace(list[0].path);
|
|
|
|
+ }
|
|
|
|
+ }, [list]);
|
|
|
|
|
|
// 点击跳转
|
|
// 点击跳转
|
|
const pathCutFu = useCallback((path: string) => {
|
|
const pathCutFu = useCallback((path: string) => {
|