61 lines
1.6 KiB
TypeScript
61 lines
1.6 KiB
TypeScript
import { MenuDataItem, getMenuData, getPageTitle } from '@ant-design/pro-layout';
|
|
import { Helmet, HelmetProvider } from 'react-helmet-async';
|
|
import { SelectLang, useIntl, ConnectProps, connect } from 'umi';
|
|
import React from 'react';
|
|
import { ConnectState } from '@/models/connect';
|
|
import styles from './UserLayout.less';
|
|
|
|
export interface UserLayoutProps extends Partial<ConnectProps> {
|
|
breadcrumbNameMap: {
|
|
[path: string]: MenuDataItem;
|
|
};
|
|
}
|
|
|
|
const UserLayout: React.FC<UserLayoutProps> = (props) => {
|
|
const {
|
|
route = {
|
|
routes: [],
|
|
},
|
|
} = props;
|
|
const { routes = [] } = route;
|
|
const {
|
|
children,
|
|
location = {
|
|
pathname: '',
|
|
},
|
|
} = props;
|
|
const { formatMessage } = useIntl();
|
|
const { breadcrumb } = getMenuData(routes);
|
|
const title = getPageTitle({
|
|
pathname: location.pathname,
|
|
formatMessage,
|
|
breadcrumb,
|
|
...props,
|
|
});
|
|
return (
|
|
<HelmetProvider>
|
|
<Helmet>
|
|
<title>{title}</title>
|
|
<meta name="description" content={title} />
|
|
</Helmet>
|
|
|
|
<div className={styles.container}>
|
|
<div className={styles.lang}>
|
|
<SelectLang />
|
|
</div>
|
|
<div className={styles.content}>
|
|
{/* <div className={styles.top}>
|
|
<div className={styles.header}>
|
|
<img alt="logo" className={styles.logo} src={logo} />
|
|
<span className={styles.title}>中国联通电子招投标系统-开发</span>
|
|
</div>
|
|
</div> */}
|
|
{children}
|
|
</div>
|
|
</div>
|
|
</HelmetProvider>
|
|
);
|
|
};
|
|
|
|
export default connect(({ settings }: ConnectState) => ({ ...settings }))(UserLayout);
|