import React, { lazy, useEffect } from 'react'
import { useDispatch } from 'react-redux'
import { Navigate, useRoutes } from 'react-router'
import DashboardLayout from '../components/DashboardLayout'
import { Dispatch } from '../models/store'
import LoginPage from './Login/index1'
import HomePage from './Home'
import Whfabz from "./Sbwh/Whfabz";
import Ssgcjl from "./Sbwh/Ssgcjl";
import Whxmys from "./Sbwh/Whxmys";
import Cgtzgl from "./Sbwh/Cgtzgl";
import Kchsgl from "./Sbwh/Kchsgl";
import Spbjgl from "./Sbwh/Spbjgl";
import Zhfxkh from './Sbwh/Zhfxkh';
import BasicSituation from "./Gcyx/InformationSearch/BasicSituation";
import RunSituation from "./Gcyx/InformationSearch/RunSituation";
import StaticTable from "./Gcyx/InformationSearch/StaticTable";
import OperateLog from "./Gcyx/InformationSearch/OperateLog";
import Sbgzjl from "./Gcyx/WatchWarn/Sbgzjl";
import Jcsj from './WatchData/Jcsj';
import PoliceRecord from './WatchData/PoliceMangant/PoliceRecord'
import PoliceRuleConfig from './WatchData/PoliceMangant/PoliceRuleConfig'
import UserInfo from './SystemMangant/UserInfo1'
import Dept from './SystemMangant/dept'
import Role from './SystemMangant/role'
import MenuM from './SystemMangant/menuM'
import Bxjc from './SafeWatch/TransformWatch'
import Sljc from './SafeWatch/SlWatch'
import Yjjl from './SafeWatch/WarnRecord'
import Yjgzpz from './SafeWatch/WarnRuleConfig'
import Xjrw from "./Gcyx/xcxj/xjrw"
import Xjwtcl from "./Gcyx/xcxj/xjwtcl"
import Xjxpz from "./Gcyx/xcxj/xjxpz"
import TestLine from './TestLine'
// const HomePage = lazy(() => import('./Home'))

const AppRouters: React.FC = () => {
  const dispatch = useDispatch<Dispatch>()

  useEffect(() => {
    ;(window as any).__dispatch__ = dispatch
    return () => {
      delete (window as any).__dispatch__
    }
  }, [dispatch])

  let element = useRoutes([
    { path: '/', element: <LoginPage /> },
    { path: '/home', element: <HomePage /> },
    {
      path: '/mgr',
      element: <DashboardLayout />,
      children: [
        // { path: 'home', element: <HomePage /> },
        // 监测数据
        { path: 'jcsj/jcsj', element: <Jcsj /> },
        { path: 'jcsj/bjgl/bjjl', element: <PoliceRecord /> },
        { path: 'jcsj/bjgl/bjgzpz', element: <PoliceRuleConfig /> },

        // 安全监测
        { path: 'aqjc/bxjc', element: <Bxjc /> },
        { path: 'aqjc/sljc', element: <Sljc /> },
        { path: 'aqjc/yjjl', element: <Yjjl /> },
        { path: 'aqjc/yjgzpz', element: <Yjgzpz /> },
        // 设备维护
        { path: 'sbwh/wxyhgl/wxfabz', element: <Whfabz /> },
        { path: 'sbwh/wxyhgl/ssgcjl', element: <Ssgcjl /> },
        { path: 'sbwh/wxyhgl/whxmys', element: <Whxmys /> },
        { path: 'sbwh/sbwzgl/cgtzgl', element: <Cgtzgl /> },
        { path: 'sbwh/sbwzgl/kchsgl', element: <Kchsgl /> },
        { path: 'sbwh/sbwzgl/bpbjgl', element: <Spbjgl /> },
        { path: 'sbwh/sbwzgl/zhfxkh', element: <Zhfxkh /> },
        // 工程运行
        { path: 'gcyx/xxcx/jbqk', element: <BasicSituation /> },
        { path: 'gcyx/xxcx/yxqk', element: <RunSituation /> },
        { path: 'gcyx/xxcx/tjbb', element: <StaticTable /> },
        { path: 'gcyx/xxcx/czrz', element: <OperateLog /> },
        { path: 'gcyx/jsyj/sbgzjl', element: <Sbgzjl /> },
        { path: 'gcyx/xcxj/xcrw', element: <Xjrw /> },
        { path: 'gcyx/xcxj/xjwtcl', element: <Xjwtcl /> },
        { path: 'gcyx/xcxj/xjxpz', element: <Xjxpz/> },
        // 系统管理
        { path: 'xtgl/yhxx', element: <UserInfo /> },
        { path: 'xtgl/bmgl', element: <Dept /> },
        { path: 'xtgl/jsgl', element: <Role /> },
        { path: 'xtgl/cdgl', element: <MenuM /> },

        // 测试曲线
        { path: 'testLine/testLine', element: <TestLine /> },

      ],
    },
    { path: '/login', element: <LoginPage /> },
  ])

  return element
}

export default AppRouters
