Blame view

src/layouts/BasicLayout.tsx 3.77 KB
cc26d1fc   张志伟   🎉 重新构建项目,解决项目过大的问题
1
2
3
4
5
6
  import ProLayout, { MenuDataItem, BasicLayoutProps as ProLayoutProps, WaterMark } from "@ant-design/pro-layout";
  import React, { useState, useEffect } from "react";
  import { useIntl, Link, history } from "umi";
  import cookie from "js-cookie";
  import RightContent from "@/components/GlobalHeader/RightContent";
  import { Dispatch } from "@/models/connect";
0326d2f7   张志伟   根据环境区分主题色
7
  import settings from "../../config/defaultSettings";
cc26d1fc   张志伟   🎉 重新构建项目,解决项目过大的问题
8
9
10
  import logo from "./images/logo.png";
  import GlobalFooter from "@/components/GlobalFooter";
  import { userMenuApi, MenuItem } from "./api";
06df4562   张志伟   添加报表电脑端入口
11
  import { getUserInfo, UserInfo } from "@/pages/Login/api";
cc26d1fc   张志伟   🎉 重新构建项目,解决项目过大的问题
12
13
  import { formatMenus } from "./entity";
  import zhCN from "antd/lib/locale-provider/zh_CN";
eba26b6e   Kurisu   新增调试代码
14
  import * as wasm from '@feewee/helper-wasm';
cc26d1fc   张志伟   🎉 重新构建项目,解决项目过大的问题
15
16
  import { ConfigProvider } from "antd";
  import "braft-editor/dist/index.css";
824d03a4   王强   优化 人事、工作系统,表格表头展示;
17
  import "./common.less";
cc26d1fc   张志伟   🎉 重新构建项目,解决项目过大的问题
18
19
20
21
22
  
  export interface BasicLayoutProps extends ProLayoutProps {
    breadcrumbNameMap: {
      [path: string]: MenuDataItem;
    };
cc26d1fc   张志伟   🎉 重新构建项目,解决项目过大的问题
23
24
25
26
27
28
29
30
31
32
    dispatch: Dispatch;
  }
  export type BasicLayoutContext = { [K in "location"]: BasicLayoutProps[K] } & {
    breadcrumbNameMap: {
      [path: string]: MenuDataItem;
    };
  };
  
  const BasicLayout: React.FC<BasicLayoutProps> = ({ dispatch, children, ...other }) => {
    const { formatMessage } = useIntl();
06df4562   张志伟   添加报表电脑端入口
33
34
    const [currentUser, setCurrentUser] = useState<UserInfo>({});
    const [avatarLoading, setAvatarLoading] = useState<boolean>(true);
cc26d1fc   张志伟   🎉 重新构建项目,解决项目过大的问题
35
36
37
38
39
40
41
42
43
44
    const [collapsed, setCollapsed] = useState(false);
    const [menuData, setMenuData] = useState<MenuItem[]>([]);
  
    const token = cookie.get("fw-erp");
  
    if (!token) {
      history.replace("/user/login");
    }
  
    useEffect(() => {
eba26b6e   Kurisu   新增调试代码
45
      wasm.check_update();
cc26d1fc   张志伟   🎉 重新构建项目,解决项目过大的问题
46
47
48
49
50
51
52
53
54
      userMenuApi()
        .then((res) => {
          setMenuData(formatMenus(res.data!));
        })
        .catch((e) => {
          history.push("/user/login");
        });
    }, []);
  
06df4562   张志伟   添加报表电脑端入口
55
56
57
58
59
60
61
62
63
64
65
66
67
    useEffect(() => {
      setAvatarLoading(true);
      getUserInfo()
        .then((infoRes) => {
          setCurrentUser(infoRes.data!);
          setAvatarLoading(false);
        })
        .catch((e) => {
          console.debug(e);
          setAvatarLoading(false);
        });
    }, []);
  
cc26d1fc   张志伟   🎉 重新构建项目,解决项目过大的问题
68
69
70
71
72
73
74
75
76
    return (
      <ConfigProvider locale={zhCN}>
        <ProLayout
          logo={logo}
          onCollapse={(playload) => setCollapsed(playload)}
          menuItemRender={(menuItemProps, defaultDom) => {
            if (menuItemProps.isUrl) {
              return defaultDom;
            }
06df4562   张志伟   添加报表电脑端入口
77
78
79
80
81
            return (
              <Link to={menuItemProps.path ? `${menuItemProps.path}?fp_code=${menuItemProps.code}` : ""}>
                {defaultDom}
              </Link>
            );
cc26d1fc   张志伟   🎉 重新构建项目,解决项目过大的问题
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
          }}
          breadcrumbRender={(routers = []) => [
            {
              path: "/",
              breadcrumbName: formatMessage({
                id: "menu.home",
                defaultMessage: "Home",
              }),
            },
            ...routers,
          ]}
          itemRender={(route, params, routes, paths) => {
            const first = routes.indexOf(route) === 0;
            return first ? <Link to={paths.join("/")}>{route.breadcrumbName}</Link> : <span>{route.breadcrumbName}</span>;
          }}
          footerRender={() => <GlobalFooter />}
          menuDataRender={() => menuData as MenuDataItem[]}
          formatMessage={formatMessage}
06df4562   张志伟   添加报表电脑端入口
100
101
102
103
104
105
106
107
          rightContentRender={(rightProps) => (
            <RightContent
              user={currentUser}
              loading={avatarLoading}
              theme={rightProps.navTheme}
              layout={rightProps.layout}
            />
          )}
cc26d1fc   张志伟   🎉 重新构建项目,解决项目过大的问题
108
109
110
          collapsed={collapsed}
          {...other}
          {...settings}
0326d2f7   张志伟   根据环境区分主题色
111
          navTheme={PROD_APP_ENV ? "dark" : "light"}
cc26d1fc   张志伟   🎉 重新构建项目,解决项目过大的问题
112
        >
84cc2822   张志伟   优化水印显示
113
114
115
116
          <WaterMark
            content={currentUser?.name ? `${currentUser.name} ${(currentUser?.mobile ?? "").slice(-4)}` : ""}
            fontSize={18}
          >
0326d2f7   张志伟   根据环境区分主题色
117
118
            {children}
          </WaterMark>
cc26d1fc   张志伟   🎉 重新构建项目,解决项目过大的问题
119
120
121
122
123
124
        </ProLayout>
      </ConfigProvider>
    );
  };
  
  export default BasicLayout;