var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import { ProLayout } from '@ant-design/pro-layout';
import React, { Suspense, useState, useContext } from 'react';
import { NavLink, Outlet, useLocation, useNavigate, Link, } from 'react-router-dom';
import { getStorage, logoutOut } from '@component/utils';
import Icon from '@ant-design/icons';
import { compact, last, pick } from 'lodash';
import { UserMenuContext, urlCacheData } from '../utils';
import { Loading } from '../loading';
import theme from 'theme.less';
import { ReactComponent as BackSvg } from 'images/backSvg.svg';
import title from 'images/title.png';
import moment from 'moment';
import 'moment/locale/zh-cn';
import { Button, Dropdown } from 'antd';
import { useToggle } from 'ahooks';
import { MenuFoldOutlined, MenuUnfoldOutlined, SettingOutlined, } from '@ant-design/icons';
import { stringify } from 'query-string';
// import { WaterMark } from '@ant-design/pro-components';
moment.locale('zh-cn');
export default () => {
    const location = useLocation();
    const navigate = useNavigate();
    const [collapsed, { toggle }] = useToggle(false);
    const { menu } = useContext(UserMenuContext);
    return (_jsx("div", Object.assign({ style: {
            height: '100vh',
        } }, { children: _jsx(ProLayout, Object.assign({ logo: () => (_jsxs("div", { children: [_jsx("img", { src: title, alt: "" }), _jsx(Button, { size: "large", type: "primary", style: { boxShadow: 'none' }, icon: collapsed ? (_jsx(MenuUnfoldOutlined, { onClick: () => toggle(), style: { color: '#FFF' } })) : (_jsx(MenuFoldOutlined, { onClick: () => toggle(), style: { color: '#FFF' } })) })] })), title: "\u5927\u5730\u667A\u6167\u5B89\u5168\u670D\u52A1\u5E73\u53F0", siderWidth: 256, fixSiderbar: true, fixedHeader: true, layout: "mix", location: location, collapsed: collapsed, onCollapse: () => toggle(), collapsedButtonRender: false, breadcrumbProps: {
                separator: '>',
            }, siderMenuType: "group", menu: {
                request: () => __awaiter(void 0, void 0, void 0, function* () { return menu; }),
                autoClose: false,
            }, token: {
                pageContainer: {
                    colorBgPageContainer: '#F7F9FC',
                    marginInlinePageContainerContent: 16,
                    marginBlockPageContainerContent: 8,
                },
                sider: {
                    colorMenuBackground: '#2c2e3e',
                    colorTextMenu: '#9b9ca3',
                    colorTextMenuTitle: '#9b9ca3',
                    // colorTextMenuSecondary: '#9b9ca3',
                    // colorBgMenuItemHover: '#FFF',
                    colorTextMenuSelected: '#FFF',
                    colorBgMenuItemCollapsedHover: '#FFF',
                    colorBgMenuItemCollapsedSelected: '#FFF',
                    colorBgMenuItemSelected: '#373848',
                    // colorTextCollapsedButton: '#FFF',
                    // colorTextCollapsedButtonHover: '#FFF',
                    colorMenuItemDivider: 'rgba(255, 255, 255, 0.06)',
                    colorTextMenuActive: '#FFFFFF',
                },
                header: {
                    heightLayoutHeader: 64,
                    colorBgHeader: theme.primaryColor,
                },
            }, menuItemRender: (item, dom) => {
                return _jsx(NavLink, Object.assign({ to: item.path }, { children: dom }));
            }, breadcrumbRender: (route) => {
                const lastName = getBreadcrumbLast(location.pathname);
                const lastRoute = last(route);
                if (lastName) {
                    route.unshift({
                        breadcrumbName: (_jsx(Icon, { title: "\u8FD4\u56DE", component: BackSvg, onClick: () => {
                                if ([
                                    'staging',
                                    'add',
                                    'edit',
                                    'distribution',
                                    'assign',
                                ].includes(lastName.last_name)) {
                                    if (urlCacheData.has(lastRoute.path)) {
                                        const values = urlCacheData.get(lastRoute.path);
                                        urlCacheData.del(lastRoute.path);
                                        navigate(lastRoute.path + '?' + stringify(values));
                                    }
                                    else {
                                        navigate(lastRoute.path);
                                    }
                                    return;
                                }
                                navigate(-1);
                            } })),
                    });
                }
                return compact([...route, lastName]).map((item) => {
                    return pick(item, ['breadcrumbName', 'component']);
                });
            }, avatarProps: {
                icon: null,
                size: 'large',
                title: (_jsx(Dropdown, Object.assign({ menu: {
                        items: [
                            {
                                key: '1',
                                label: (_jsx("a", Object.assign({ onClick: () => logoutOut(navigate, 'logoutOut') }, { children: "\u9000\u51FA\u767B\u5F55" }))),
                            },
                        ],
                    }, placement: "bottom", arrow: true }, { children: _jsx(Button, Object.assign({ type: "link", icon: _jsx(SettingOutlined, {}), style: { border: 'none', color: '#FFF' } }, { children: getStorage('userName') })) }))),
            } }, { children: _jsx("div", Object.assign({ style: { height: '100%' } }, { children: _jsx(Suspense, Object.assign({ fallback: _jsx(Loading, {}) }, { children: _jsx(Outlet, {}) })) })) })) })));
};
const LAST_PATH = {
    staging: '草稿箱',
    add: '添加',
    edit: '编辑',
    detail: '详情',
    review: '审核',
    distribution: '服务分配',
    assign: '指派人员',
    createService: '生成服务',
    servicesReview: '服务审核',
    servicesDetail: '服务详情',
    policyDetail: '保单详情',
    claimDetail: '理赔详情',
    expertDetail: '专家详情',
    hiddenDangerDetail: '隐患详情',
    riskDetail: '风险详情',
    serviceDetail: '服务详情',
    trackDetail: '指定跟进人',
    initiateSettlement: '发起费用结算',
    customerDetail: '客户详情',
    addType: '添加分类',
    backupsDetail: '备份检查表详情',
};
function getBreadcrumbLast(pathname) {
    const paths = pathname.split('/');
    const item = last(paths);
    if (LAST_PATH[item]) {
        return {
            last_name: item,
            breadcrumbName: LAST_PATH[item],
        };
    }
    return null;
}