3
0
Prechádzať zdrojové kódy

关联分析-提交

lxh 5 mesiacov pred
rodič
commit
03417dd122

+ 1 - 0
package.json

@@ -49,6 +49,7 @@
     "enquire.js": "^2.1.6",
     "intro.js": "^7.2.0",
     "leaflet": "^1.9.4",
+    "lodash": "^4.17.21",
     "lodash-es": "^4.17.21",
     "lodash.get": "^4.4.2",
     "md5": "^2.3.0",

+ 719 - 706
public/js/global.js

@@ -1,730 +1,743 @@
 /** 静态菜单 */
 const __STATIC_ROUTES__ = [
-    {
-        redirect: undefined,
-        path: '/dashboard',
-        component: 'PLAIN_LAYOUT',
-        // component: 'LAYOUT',
-        children: [
-            {
-                path: '/dashboard/sealedgoaf',
-                component: '/dashboard/SealedGoaf',
-                meta: {
-                    keepAlive: true,
-                    internalOrExternal: false,
-                    icon: '',
-                    componentName: 'SealedGoaf',
-                    title: '采空区首页',
-                },
-                name: 'dashboard-sealedgoaf',
-            },
-            // {
-            //     path: '/dashboard/analysis',
-            //     component: 'dashboard/Analysis',
-            //     meta: {
-            //         keepAlive: true,
-            //         internalOrExternal: false,
-            //         icon: '',
-            //         componentName: 'Analysis',
-            //         title: '首页',
-            //     },
-            //     name: 'dashboard-analysis',
-            // },
-            // {
-            //     path: '/portal-view/system',
-            //     component: '1',
-            //     meta: {
-            //         keepAlive: false,
-            //         internalOrExternal: false,
-            //         icon: '',
-            //         componentName: '1',
-            //         title: '主门户',
-            //     },
-            //     name: 'portal-view-system',
-            // },
-            // {
-            //     path: '/portal-view/personal',
-            //     component: '1',
-            //     meta: {
-            //         keepAlive: false,
-            //         internalOrExternal: false,
-            //         icon: '',
-            //         componentName: '1',
-            //         title: '个人工作台',
-            //     },
-            //     name: 'portal-view-personal',
-            // },
-            // {
-            //     path: '/dashboard/workbench',
-            //     component: 'dashboard/workbench/index',
-            //     meta: {
-            //         keepAlive: false,
-            //         internalOrExternal: false,
-            //         icon: '',
-            //         componentName: 'index',
-            //         title: '工作台',
-            //     },
-            //     name: 'dashboard-workbench',
-            // },
-        ],
+  {
+    redirect: undefined,
+    path: '/dashboard',
+    component: 'PLAIN_LAYOUT',
+    // component: 'LAYOUT',
+    children: [
+      {
+        path: '/dashboard/sealedgoaf',
+        component: '/dashboard/SealedGoaf',
         meta: {
-            keepAlive: false,
-            internalOrExternal: false,
-            icon: 'ant-design:home-outlined',
-            componentName: 'index',
-            title: '主页',
-            hideMenu: true,
-            hideBreadcrumb: true,
-            hideTab: true
+          keepAlive: true,
+          internalOrExternal: false,
+          icon: '',
+          componentName: 'SealedGoaf',
+          title: '采空区首页',
         },
-        name: 'dashboard',
+        name: 'dashboard-sealedgoaf',
+      },
+      // {
+      //     path: '/dashboard/analysis',
+      //     component: 'dashboard/Analysis',
+      //     meta: {
+      //         keepAlive: true,
+      //         internalOrExternal: false,
+      //         icon: '',
+      //         componentName: 'Analysis',
+      //         title: '首页',
+      //     },
+      //     name: 'dashboard-analysis',
+      // },
+      // {
+      //     path: '/portal-view/system',
+      //     component: '1',
+      //     meta: {
+      //         keepAlive: false,
+      //         internalOrExternal: false,
+      //         icon: '',
+      //         componentName: '1',
+      //         title: '主门户',
+      //     },
+      //     name: 'portal-view-system',
+      // },
+      // {
+      //     path: '/portal-view/personal',
+      //     component: '1',
+      //     meta: {
+      //         keepAlive: false,
+      //         internalOrExternal: false,
+      //         icon: '',
+      //         componentName: '1',
+      //         title: '个人工作台',
+      //     },
+      //     name: 'portal-view-personal',
+      // },
+      // {
+      //     path: '/dashboard/workbench',
+      //     component: 'dashboard/workbench/index',
+      //     meta: {
+      //         keepAlive: false,
+      //         internalOrExternal: false,
+      //         icon: '',
+      //         componentName: 'index',
+      //         title: '工作台',
+      //     },
+      //     name: 'dashboard-workbench',
+      // },
+    ],
+    meta: {
+      keepAlive: false,
+      internalOrExternal: false,
+      icon: 'ant-design:home-outlined',
+      componentName: 'index',
+      title: '主页',
+      hideMenu: true,
+      hideBreadcrumb: true,
+      hideTab: true
     },
-    {
-        redirect: undefined,
-        path: '/basicinfo',
-        component: 'LAYOUT',
-        children: [
-            {
-                path: '/basicinfo/mines-info',
-                component: 'dashboard/basicInfo/minesInfo',
-                meta: {
-                    keepAlive: true,
-                    internalOrExternal: false,
-                    icon: '',
-                    componentName: 'index',
-                    title: '矿山信息',
-                },
-                name: 'basicinfo-mines-info',
-            },
-            {
-                path: '/basicinfo/access-statistics',
-                component: 'dashboard/basicInfo/accessStatistics',
-                meta: {
-                    keepAlive: true,
-                    internalOrExternal: false,
-                    icon: '',
-                    componentName: 'index',
-                    title: '接入统计',
-                },
-                name: 'basicinfo-access-statistics',
-            },
-            {
-                path: '/basicinfo/data-quality',
-                component: 'dashboard/basicInfo/dataQuality',
-                meta: {
-                    keepAlive: true,
-                    internalOrExternal: false,
-                    icon: '',
-                    componentName: 'index',
-                    title: '数据质量',
-                },
-                name: 'basicinfo-data-quality',
-            },
-            {
-                path: '/basicinfo/closed-statistics',
-                component: 'dashboard/basicInfo/closedStatistics',
-                meta: {
-                    keepAlive: true,
-                    internalOrExternal: false,
-                    icon: '',
-                    componentName: 'index',
-                    title: '密闭统计',
-                },
-                name: 'basicinfo-closed-statistics',
-            },
-        ],
+    name: 'dashboard',
+  },
+  {
+    redirect: undefined,
+    path: '/basicinfo',
+    component: 'LAYOUT',
+    children: [
+      {
+        path: '/basicinfo/mines-info',
+        component: 'dashboard/basicInfo/minesInfo',
         meta: {
-            keepAlive: false,
-            internalOrExternal: false,
-            icon: 'menu-info|svg',
-            componentName: 'index',
-            title: '矿山基础信息',
+          keepAlive: true,
+          internalOrExternal: false,
+          icon: '',
+          componentName: 'index',
+          title: '矿山信息',
         },
-        name: 'basicInfo',
+        name: 'basicinfo-mines-info',
+      },
+      {
+        path: '/basicinfo/access-statistics',
+        component: 'dashboard/basicInfo/accessStatistics',
+        meta: {
+          keepAlive: true,
+          internalOrExternal: false,
+          icon: '',
+          componentName: 'index',
+          title: '接入统计',
+        },
+        name: 'basicinfo-access-statistics',
+      },
+      {
+        path: '/basicinfo/data-quality',
+        component: 'dashboard/basicInfo/dataQuality',
+        meta: {
+          keepAlive: true,
+          internalOrExternal: false,
+          icon: '',
+          componentName: 'index',
+          title: '数据质量',
+        },
+        name: 'basicinfo-data-quality',
+      },
+      {
+        path: '/basicinfo/closed-statistics',
+        component: 'dashboard/basicInfo/closedStatistics',
+        meta: {
+          keepAlive: true,
+          internalOrExternal: false,
+          icon: '',
+          componentName: 'index',
+          title: '密闭统计',
+        },
+        name: 'basicinfo-closed-statistics',
+      },
+    ],
+    meta: {
+      keepAlive: false,
+      internalOrExternal: false,
+      icon: 'menu-info|svg',
+      componentName: 'index',
+      title: '矿山基础信息',
     },
-    {
-        redirect: undefined,
-        path: '/sealed',
-        component: 'LAYOUT',
-        children: [
-            {
-                path: '/sealed/${id}',
-                component: '/monitor/sealedMonitor/index',
-                meta: {
-                    keepAlive: true,
-                    internalOrExternal: false,
-                    icon: '',
-                    componentName: 'index',
-                    title: '${departName}',
-                    hideMenu: true
-                    // orderNo: '${departOrder}',
-                },
-                name: 'sealed-${id}',
-            }
-        ],
+    name: 'basicInfo',
+  },
+  {
+    redirect: undefined,
+    path: '/sealed',
+    component: 'LAYOUT',
+    children: [
+      {
+        path: '/sealed/${id}',
+        component: '/monitor/sealedMonitor/index',
         meta: {
-            keepAlive: false,
-            internalOrExternal: false,
-            icon: 'menu-analysis|svg',
-            componentName: 'index',
-            title: '密闭监测',
-            generation: true,
+          keepAlive: true,
+          internalOrExternal: false,
+          icon: '',
+          componentName: 'index',
+          title: '${departName}',
+          hideMenu: true
+          // orderNo: '${departOrder}',
         },
-        name: 'sealed',
+        name: 'sealed-${id}',
+      }
+    ],
+    meta: {
+      keepAlive: false,
+      internalOrExternal: false,
+      icon: 'menu-analysis|svg',
+      componentName: 'index',
+      title: '密闭监测',
+      generation: true,
     },
-    {
-        redirect: undefined,
-        path: '/warning-analysis',
-        component: 'LAYOUT',
-        children: [
-            {
-                path: '/warning-analysis/air-leak-status',
-                component: '/analysis/warningAnalysis/airLeakStatus/index',
-                meta: {
-                    keepAlive: true,
-                    internalOrExternal: false,
-                    icon: '',
-                    componentName: 'index',
-                    title: '密闭漏风状态判定',
-                },
-                name: 'airLeakStatus',
-            },
-            {
-                path: '/warning-analysis/pressure-diff-analysis',
-                component: '/analysis/warningAnalysis/pressureDiffAnalysis/index',
-                meta: {
-                    keepAlive: true,
-                    internalOrExternal: false,
-                    icon: '',
-                    componentName: 'index',
-                    title: '内外压差变化风险分析',
-                },
-                name: 'pressureDiffAnalysis',
-            },
-            {
-                path: '/warningAnalysis/autoFire-analysis',
-                component: '/analysis/warningAnalysis/autoFireAnalysis/index',
-                meta: {
-                    keepAlive: true,
-                    internalOrExternal: false,
-                    icon: '',
-                    componentName: 'index',
-                    title: '自然发火隐患分级',
-                },
-                name: 'warningAnalysis-autoFire-analysis',
-            },
-            {
-                path: '/warningAnalysis/fireArea-judge',
-                component: '/analysis/warningAnalysis/fireAreaJudgeAnalysis/index',
-                meta: {
-                    keepAlive: true,
-                    internalOrExternal: false,
-                    icon: '',
-                    componentName: 'index',
-                    title: '火区密闭启封判定',
-                },
-                name: 'warningAnalysis-fireArea-judge',
-            },
-            {
-                path: '/warningAnalysis/sealRisk-judge',
-                component: '/analysis/warningAnalysis/sealRiskJudgeAnalysis/index',
-                meta: {
-                    keepAlive: true,
-                    internalOrExternal: false,
-                    icon: '',
-                    componentName: 'index',
-                    title: '密闭爆炸危险性判定',
-                },
-                name: 'warningAnalysis-sealRisk-judge',
-            },
-            {
-                path: '/warningAnalysis/overlimit-alarm',
-                component: '/analysis/warningAnalysis/overlimitAlarm/index',
-                meta: {
-                    keepAlive: true,
-                    internalOrExternal: false,
-                    icon: '',
-                    componentName: 'index',
-                    title: '超限报警',
-                },
-                name: 'warningAnalysis-overlimit-alarm',
-            },
-        ],
+    name: 'sealed',
+  },
+  {
+    redirect: undefined,
+    path: '/warning-analysis',
+    component: 'LAYOUT',
+    children: [
+      {
+        path: '/warning-analysis/air-leak-status',
+        component: '/analysis/warningAnalysis/airLeakStatus/index',
+        meta: {
+          keepAlive: true,
+          internalOrExternal: false,
+          icon: '',
+          componentName: 'index',
+          title: '密闭漏风状态判定',
+        },
+        name: 'airLeakStatus',
+      },
+      {
+        path: '/warning-analysis/pressure-diff-analysis',
+        component: '/analysis/warningAnalysis/pressureDiffAnalysis/index',
+        meta: {
+          keepAlive: true,
+          internalOrExternal: false,
+          icon: '',
+          componentName: 'index',
+          title: '内外压差变化风险分析',
+        },
+        name: 'pressureDiffAnalysis',
+      },
+      {
+        path: '/warningAnalysis/autoFire-analysis',
+        component: '/analysis/warningAnalysis/autoFireAnalysis/index',
+        meta: {
+          keepAlive: true,
+          internalOrExternal: false,
+          icon: '',
+          componentName: 'index',
+          title: '自然发火隐患分级',
+        },
+        name: 'warningAnalysis-autoFire-analysis',
+      },
+      {
+        path: '/warningAnalysis/fireArea-judge',
+        component: '/analysis/warningAnalysis/fireAreaJudgeAnalysis/index',
+        meta: {
+          keepAlive: true,
+          internalOrExternal: false,
+          icon: '',
+          componentName: 'index',
+          title: '火区密闭启封判定',
+        },
+        name: 'warningAnalysis-fireArea-judge',
+      },
+      {
+        path: '/warningAnalysis/sealRisk-judge',
+        component: '/analysis/warningAnalysis/sealRiskJudgeAnalysis/index',
+        meta: {
+          keepAlive: true,
+          internalOrExternal: false,
+          icon: '',
+          componentName: 'index',
+          title: '密闭爆炸危险性判定',
+        },
+        name: 'warningAnalysis-sealRisk-judge',
+      },
+      {
+        path: '/warningAnalysis/overlimit-alarm',
+        component: '/analysis/warningAnalysis/overlimitAlarm/index',
         meta: {
-            keepAlive: false,
-            internalOrExternal: false,
-            icon: 'menu-warning|svg',
-            componentName: 'index',
-            title: '预警分析',
+          keepAlive: true,
+          internalOrExternal: false,
+          icon: '',
+          componentName: 'index',
+          title: '超限报警',
         },
-        name: 'warningAnalysis',
+        name: 'warningAnalysis-overlimit-alarm',
+      },
+     
+    ],
+    meta: {
+      keepAlive: false,
+      internalOrExternal: false,
+      icon: 'menu-warning|svg',
+      componentName: 'index',
+      title: '预警分析',
     },
-    {
-        redirect: undefined,
-        path: '/smart-analysis',
-        component: 'LAYOUT',
-        children: [
-            {
-                path: '/smart-analysis/association',
-                component: '/demo/table/Basic',
-                meta: {
-                    keepAlive: true,
-                    internalOrExternal: false,
-                    icon: '',
-                    componentName: 'index',
-                    title: '关联分析',
-                },
-                name: 'association',
-            },
-        ],
+    name: 'warningAnalysis',
+  },
+  {
+    redirect: undefined,
+    path: '/smart-analysis',
+    component: 'LAYOUT',
+    children: [
+      // {
+      //   path: '/smart-analysis/association',
+      //   component: '/demo/table/Basic',
+      //   meta: {
+      //     keepAlive: true,
+      //     internalOrExternal: false,
+      //     icon: '',
+      //     componentName: 'index',
+      //     title: '关联分析',
+      //   },
+      //   name: 'association',
+      // },
+       {
+        path: '/warningAnalysis/connectAnalysis',
+        component: '/analysis/warningAnalysis/connectAnalysis/index',
         meta: {
-            keepAlive: false,
-            internalOrExternal: false,
-            icon: 'menu-smart|svg',
-            componentName: 'index',
-            title: '智能分析',
+          keepAlive: true,
+          internalOrExternal: false,
+          icon: '',
+          componentName: 'index',
+          title: '关联分析',
         },
-        name: 'smartAnalysis',
+        name: 'warningAnalysis-connect',
+      },
+    ],
+    meta: {
+      keepAlive: false,
+      internalOrExternal: false,
+      icon: 'menu-smart|svg',
+      componentName: 'index',
+      title: '智能分析',
     },
-    {
-        redirect: undefined,
-        path: '/manage',
-        component: 'LAYOUT',
-        children: [
-            {
-                path: '/manage/map',
-                component: '/demo/table/Basic',
-                meta: {
-                    keepAlive: true,
-                    internalOrExternal: false,
-                    icon: '',
-                    componentName: 'index',
-                    title: '地图管理',
-                },
-                name: 'association',
-            },
-            {
-                path: '/manage/model',
-                component: '/system/algorithm/index',
-                meta: {
-                    keepAlive: true,
-                    internalOrExternal: false,
-                    icon: '',
-                    componentName: 'index',
-                    title: '模型管理',
-                },
-                name: 'association',
-            },
-        ],
+    name: 'smartAnalysis',
+  },
+  {
+    redirect: undefined,
+    path: '/manage',
+    component: 'LAYOUT',
+    children: [
+      {
+        path: '/manage/map',
+        component: '/demo/table/Basic',
+        meta: {
+          keepAlive: true,
+          internalOrExternal: false,
+          icon: '',
+          componentName: 'index',
+          title: '地图管理',
+        },
+        name: 'association',
+      },
+      {
+        path: '/manage/model',
+        component: '/system/algorithm/index',
         meta: {
-            keepAlive: false,
-            internalOrExternal: false,
-            icon: 'menu-model|svg',
-            componentName: 'index',
-            title: '模型与地图管理',
+          keepAlive: true,
+          internalOrExternal: false,
+          icon: '',
+          componentName: 'index',
+          title: '模型管理',
         },
-        name: 'manage',
+        name: 'association',
+      },
+    ],
+    meta: {
+      keepAlive: false,
+      internalOrExternal: false,
+      icon: 'menu-model|svg',
+      componentName: 'index',
+      title: '模型与地图管理',
     },
-    {
-        redirect: undefined,
-        path: '/system',
-        component: 'LAYOUT',
-        children: [
-            // {
-            //     path: '/system/menu',
-            //     component: 'system/menu/index',
-            //     meta: {
-            //         keepAlive: false,
-            //         internalOrExternal: false,
-            //         icon: '',
-            //         componentName: 'index',
-            //         title: '系统菜单',
-            //     },
-            //     name: 'system-menu',
-            // },
-            {
-                path: '/system/user',
-                component: 'system/user/index',
-                meta: {
-                    keepAlive: true,
-                    internalOrExternal: false,
-                    icon: '',
-                    componentName: 'index',
-                    title: '系统用户',
-                },
-                name: 'system-user',
-            },
-            // {
-            //     path: '/system/home-config',
-            //     component: 'system/homeConfig/index',
-            //     meta: {
-            //         keepAlive: false,
-            //         internalOrExternal: false,
-            //         icon: '',
-            //         componentName: 'index',
-            //         title: '首页配置',
-            //     },
-            //     name: 'system-home-config',
-            // },
-            {
-                path: '/system/role',
-                component: 'system/role/index',
-                meta: {
-                    keepAlive: true,
-                    internalOrExternal: false,
-                    icon: '',
-                    componentName: 'index',
-                    title: '系统角色',
-                },
-                name: 'system-role',
-            },
-            {
-                path: '/system/dict',
-                component: 'system/dict/index',
-                meta: {
-                    keepAlive: false,
-                    internalOrExternal: false,
-                    icon: '',
-                    componentName: 'index',
-                    title: '数据字典',
-                },
-                name: 'system-dict',
-            },
-            // {
-            //     path: '/system/depart',
-            //     component: 'system/depart/index',
-            //     meta: {
-            //         keepAlive: false,
-            //         internalOrExternal: false,
-            //         icon: '',
-            //         componentName: 'index',
-            //         title: '部门管理',
-            //     },
-            //     name: 'system-depart',
-            // },
-            // {
-            //     path: '/system/tenant',
-            //     component: 'system/tenant/index',
-            //     meta: {
-            //         keepAlive: false,
-            //         internalOrExternal: false,
-            //         icon: '',
-            //         componentName: 'index',
-            //         title: '多租户管理',
-            //     },
-            //     name: 'system-tenant',
-            // },
-            // {
-            //     path: '/tenant/TenantDefaultPack',
-            //     component: 'system/tenant/pack/TenantDefaultPackList',
-            //     meta: {
-            //         keepAlive: false,
-            //         internalOrExternal: false,
-            //         icon: '',
-            //         componentName: 'TenantDefaultPackList',
-            //         title: '租户默认套餐',
-            //     },
-            //     name: 'tenant-TenantDefaultPack',
-            // },
-            // {
-            //     path: '/system/position',
-            //     component: 'system/position/index',
-            //     meta: {
-            //         keepAlive: false,
-            //         internalOrExternal: false,
-            //         icon: '',
-            //         componentName: 'index',
-            //         title: '职务级别',
-            //     },
-            //     name: 'system-position',
-            // },
-            // {
-            //     path: '/system/category',
-            //     component: 'system/category/index',
-            //     meta: {
-            //         keepAlive: false,
-            //         internalOrExternal: false,
-            //         icon: '',
-            //         componentName: 'index',
-            //         title: '分类字典',
-            //     },
-            //     name: 'system-category',
-            // },
-            {
-                path: '/system/notice',
-                component: 'system/notice/index',
-                meta: {
-                    keepAlive: false,
-                    internalOrExternal: false,
-                    icon: '',
-                    componentName: 'index',
-                    title: '通知公告',
-                },
-                name: 'system-notice',
-            },
-            // {
-            //     path: '/system/depart-user',
-            //     component: 'system/departUser/index',
-            //     meta: {
-            //         keepAlive: false,
-            //         internalOrExternal: false,
-            //         icon: '',
-            //         componentName: 'index',
-            //         title: '我的部门',
-            //     },
-            //     name: 'system-depart-user',
-            // },
-            {
-                path: '/system/usersetting',
-                component: 'system/usersetting/UserSetting',
-                meta: {
-                    hideMenu: true,
-                    keepAlive: false,
-                    internalOrExternal: false,
-                    icon: '',
-                    componentName: 'UserSetting',
-                    title: '用户设置',
-                },
-                name: 'system-usersetting',
-            },
-            // {
-            //     path: '/monitor/datalog',
-            //     component: 'monitor/datalog/index',
-            //     meta: {
-            //         keepAlive: false,
-            //         internalOrExternal: false,
-            //         icon: '',
-            //         componentName: 'index',
-            //         title: '数据日志',
-            //     },
-            //     name: 'monitor-datalog',
-            // },
-            {
-                path: '/monitor/log',
-                component: 'monitor/log/index',
-                meta: {
-                    keepAlive: false,
-                    internalOrExternal: false,
-                    icon: '',
-                    componentName: 'index',
-                    title: '日志管理',
-                },
-                name: 'monitor-log',
-            },
-            // {
-            //     path: '/third/app',
-            //     component: 'system/appconfig/ThirdAppConfigList',
-            //     meta: {
-            //         keepAlive: false,
-            //         internalOrExternal: false,
-            //         icon: '',
-            //         componentName: 'ThirdAppConfigList',
-            //         title: '第三方配置',
-            //     },
-            //     name: 'third-app',
-            // },
-            {
-                path: '/system/configurable',
-                component: 'system/configurable/index',
-                meta: {
-                    keepAlive: false,
-                    internalOrExternal: false,
-                    icon: '',
-                    componentName: 'index',
-                    title: '可配置模块管理',
-                },
-                name: 'configurable-manage',
-            },
-        ],
+    name: 'manage',
+  },
+  {
+    redirect: undefined,
+    path: '/system',
+    component: 'LAYOUT',
+    children: [
+      // {
+      //     path: '/system/menu',
+      //     component: 'system/menu/index',
+      //     meta: {
+      //         keepAlive: false,
+      //         internalOrExternal: false,
+      //         icon: '',
+      //         componentName: 'index',
+      //         title: '系统菜单',
+      //     },
+      //     name: 'system-menu',
+      // },
+      {
+        path: '/system/user',
+        component: 'system/user/index',
+        meta: {
+          keepAlive: true,
+          internalOrExternal: false,
+          icon: '',
+          componentName: 'index',
+          title: '系统用户',
+        },
+        name: 'system-user',
+      },
+      // {
+      //     path: '/system/home-config',
+      //     component: 'system/homeConfig/index',
+      //     meta: {
+      //         keepAlive: false,
+      //         internalOrExternal: false,
+      //         icon: '',
+      //         componentName: 'index',
+      //         title: '首页配置',
+      //     },
+      //     name: 'system-home-config',
+      // },
+      {
+        path: '/system/role',
+        component: 'system/role/index',
+        meta: {
+          keepAlive: true,
+          internalOrExternal: false,
+          icon: '',
+          componentName: 'index',
+          title: '系统角色',
+        },
+        name: 'system-role',
+      },
+      {
+        path: '/system/dict',
+        component: 'system/dict/index',
+        meta: {
+          keepAlive: false,
+          internalOrExternal: false,
+          icon: '',
+          componentName: 'index',
+          title: '数据字典',
+        },
+        name: 'system-dict',
+      },
+      // {
+      //     path: '/system/depart',
+      //     component: 'system/depart/index',
+      //     meta: {
+      //         keepAlive: false,
+      //         internalOrExternal: false,
+      //         icon: '',
+      //         componentName: 'index',
+      //         title: '部门管理',
+      //     },
+      //     name: 'system-depart',
+      // },
+      // {
+      //     path: '/system/tenant',
+      //     component: 'system/tenant/index',
+      //     meta: {
+      //         keepAlive: false,
+      //         internalOrExternal: false,
+      //         icon: '',
+      //         componentName: 'index',
+      //         title: '多租户管理',
+      //     },
+      //     name: 'system-tenant',
+      // },
+      // {
+      //     path: '/tenant/TenantDefaultPack',
+      //     component: 'system/tenant/pack/TenantDefaultPackList',
+      //     meta: {
+      //         keepAlive: false,
+      //         internalOrExternal: false,
+      //         icon: '',
+      //         componentName: 'TenantDefaultPackList',
+      //         title: '租户默认套餐',
+      //     },
+      //     name: 'tenant-TenantDefaultPack',
+      // },
+      // {
+      //     path: '/system/position',
+      //     component: 'system/position/index',
+      //     meta: {
+      //         keepAlive: false,
+      //         internalOrExternal: false,
+      //         icon: '',
+      //         componentName: 'index',
+      //         title: '职务级别',
+      //     },
+      //     name: 'system-position',
+      // },
+      // {
+      //     path: '/system/category',
+      //     component: 'system/category/index',
+      //     meta: {
+      //         keepAlive: false,
+      //         internalOrExternal: false,
+      //         icon: '',
+      //         componentName: 'index',
+      //         title: '分类字典',
+      //     },
+      //     name: 'system-category',
+      // },
+      {
+        path: '/system/notice',
+        component: 'system/notice/index',
+        meta: {
+          keepAlive: false,
+          internalOrExternal: false,
+          icon: '',
+          componentName: 'index',
+          title: '通知公告',
+        },
+        name: 'system-notice',
+      },
+      // {
+      //     path: '/system/depart-user',
+      //     component: 'system/departUser/index',
+      //     meta: {
+      //         keepAlive: false,
+      //         internalOrExternal: false,
+      //         icon: '',
+      //         componentName: 'index',
+      //         title: '我的部门',
+      //     },
+      //     name: 'system-depart-user',
+      // },
+      {
+        path: '/system/usersetting',
+        component: 'system/usersetting/UserSetting',
+        meta: {
+          hideMenu: true,
+          keepAlive: false,
+          internalOrExternal: false,
+          icon: '',
+          componentName: 'UserSetting',
+          title: '用户设置',
+        },
+        name: 'system-usersetting',
+      },
+      // {
+      //     path: '/monitor/datalog',
+      //     component: 'monitor/datalog/index',
+      //     meta: {
+      //         keepAlive: false,
+      //         internalOrExternal: false,
+      //         icon: '',
+      //         componentName: 'index',
+      //         title: '数据日志',
+      //     },
+      //     name: 'monitor-datalog',
+      // },
+      {
+        path: '/monitor/log',
+        component: 'monitor/log/index',
+        meta: {
+          keepAlive: false,
+          internalOrExternal: false,
+          icon: '',
+          componentName: 'index',
+          title: '日志管理',
+        },
+        name: 'monitor-log',
+      },
+      // {
+      //     path: '/third/app',
+      //     component: 'system/appconfig/ThirdAppConfigList',
+      //     meta: {
+      //         keepAlive: false,
+      //         internalOrExternal: false,
+      //         icon: '',
+      //         componentName: 'ThirdAppConfigList',
+      //         title: '第三方配置',
+      //     },
+      //     name: 'third-app',
+      // },
+      {
+        path: '/system/configurable',
+        component: 'system/configurable/index',
         meta: {
-            keepAlive: false,
-            internalOrExternal: false,
-            icon: 'menu-manage|svg',
-            componentName: 'index',
-            title: '系统管理',
+          keepAlive: false,
+          internalOrExternal: false,
+          icon: '',
+          componentName: 'index',
+          title: '可配置模块管理',
         },
-        name: 'isystem',
+        name: 'configurable-manage',
+      },
+    ],
+    meta: {
+      keepAlive: false,
+      internalOrExternal: false,
+      icon: 'menu-manage|svg',
+      componentName: 'index',
+      title: '系统管理',
     },
-    // {
-    //     redirect: undefined,
-    //     path: '/monitor',
-    //     component: 'LAYOUT',
-    //     children: [
-    //         {
-    //             path: '/monitor/route',
-    //             component: 'monitor/route/index',
-    //             meta: {
-    //                 keepAlive: false,
-    //                 internalOrExternal: false,
-    //                 icon: '',
-    //                 componentName: 'index',
-    //                 title: '网关路由',
-    //             },
-    //             name: 'monitor-route',
-    //         },
-    //         {
-    //             path: '/monitor/quartz',
-    //             component: 'monitor/quartz/index',
-    //             meta: {
-    //                 keepAlive: false,
-    //                 internalOrExternal: false,
-    //                 icon: '',
-    //                 componentName: 'index',
-    //                 title: '定时任务',
-    //             },
-    //             name: 'monitor-quartz',
-    //         },
-    //         {
-    //             path: '/monitor/datasource',
-    //             component: 'monitor/datasource/index',
-    //             meta: {
-    //                 keepAlive: false,
-    //                 internalOrExternal: false,
-    //                 icon: '',
-    //                 componentName: 'index',
-    //                 title: '数据源管理',
-    //             },
-    //             name: 'monitor-datasource',
-    //         },
-    //         {
-    //             path: '/monitor/datalog',
-    //             component: 'monitor/datalog/index',
-    //             meta: {
-    //                 keepAlive: false,
-    //                 internalOrExternal: false,
-    //                 icon: '',
-    //                 componentName: 'index',
-    //                 title: '数据日志',
-    //             },
-    //             name: 'monitor-datalog',
-    //         },
-    //         {
-    //             path: '/monitor/log',
-    //             component: 'monitor/log/index',
-    //             meta: {
-    //                 keepAlive: false,
-    //                 internalOrExternal: false,
-    //                 icon: '',
-    //                 componentName: 'index',
-    //                 title: '日志管理',
-    //             },
-    //             name: 'monitor-log',
-    //         },
-    //         {
-    //             path: '/monitor/druid',
-    //             component: "{{ window._CONFIG['domianURL'] }}/druid",
-    //             meta: {
-    //                 keepAlive: false,
-    //                 internalOrExternal: true,
-    //                 icon: '',
-    //                 componentName: 'druid',
-    //                 title: 'SQL监控',
-    //             },
-    //             name: 'monitor-druid',
-    //         },
-    //         {
-    //             path: '/monitor/server',
-    //             component: 'monitor/server/index',
-    //             meta: {
-    //                 keepAlive: false,
-    //                 internalOrExternal: false,
-    //                 icon: '',
-    //                 componentName: 'index',
-    //                 title: '性能监控',
-    //             },
-    //             name: 'monitor-server',
-    //         },
-    //         {
-    //             path: '/monitor/redis',
-    //             component: 'monitor/redis/index',
-    //             meta: {
-    //                 keepAlive: false,
-    //                 internalOrExternal: false,
-    //                 icon: '',
-    //                 componentName: 'index',
-    //                 title: 'Redis监控',
-    //             },
-    //             name: 'monitor-redis',
-    //         },
-    //         {
-    //             path: '/monitor/trace',
-    //             component: 'monitor/trace/index',
-    //             meta: {
-    //                 keepAlive: false,
-    //                 internalOrExternal: false,
-    //                 icon: '',
-    //                 componentName: 'index',
-    //                 title: '请求追踪',
-    //             },
-    //             name: 'monitor-trace',
-    //         },
-    //         {
-    //             path: '/system/onlineuser',
-    //             component: 'system/onlineuser/OnlineUserList',
-    //             meta: {
-    //                 keepAlive: false,
-    //                 internalOrExternal: false,
-    //                 icon: '',
-    //                 componentName: 'OnlineUserList',
-    //                 title: '在线用户',
-    //             },
-    //             name: 'system-onlineuser',
-    //         },
-    //         {
-    //             path: '/openapi',
-    //             component: 'layouts/RouteView',
-    //             children: [
-    //                 {
-    //                     path: '/openapi/openApiAuthList',
-    //                     component: 'openapi/OpenApiAuthList',
-    //                     meta: {
-    //                         keepAlive: false,
-    //                         internalOrExternal: false,
-    //                         componentName: 'OpenApiAuthList',
-    //                         title: '授权管理',
-    //                     },
-    //                     name: 'openapi-openApiAuthList',
-    //                 },
-    //                 {
-    //                     path: '/openapi/openApiList',
-    //                     component: 'openapi/OpenApiList',
-    //                     meta: {
-    //                         keepAlive: false,
-    //                         internalOrExternal: false,
-    //                         componentName: 'OpenApiList',
-    //                         title: '接口管理',
-    //                     },
-    //                     name: 'openapi-openApiList',
-    //                 },
-    //                 {
-    //                     path: '/openapi/SwaggerUI',
-    //                     component: 'openapi/SwaggerUI',
-    //                     meta: {
-    //                         keepAlive: false,
-    //                         internalOrExternal: false,
-    //                         componentName: 'SwaggerUI',
-    //                         title: '接口文档',
-    //                     },
-    //                     name: 'openapi-SwaggerUI',
-    //                 },
-    //             ],
-    //             meta: {
-    //                 keepAlive: false,
-    //                 internalOrExternal: false,
-    //                 icon: '',
-    //                 componentName: 'RouteView',
-    //                 title: 'OpenAPI',
-    //             },
-    //             name: 'openapi',
-    //         },
-    //     ],
-    //     meta: {
-    //         keepAlive: false,
-    //         internalOrExternal: false,
-    //         icon: '',
-    //         componentName: 'index',
-    //         title: '系统监控',
-    //     },
-    //     name: 'monitor',
-    // },
+    name: 'isystem',
+  },
+  // {
+  //     redirect: undefined,
+  //     path: '/monitor',
+  //     component: 'LAYOUT',
+  //     children: [
+  //         {
+  //             path: '/monitor/route',
+  //             component: 'monitor/route/index',
+  //             meta: {
+  //                 keepAlive: false,
+  //                 internalOrExternal: false,
+  //                 icon: '',
+  //                 componentName: 'index',
+  //                 title: '网关路由',
+  //             },
+  //             name: 'monitor-route',
+  //         },
+  //         {
+  //             path: '/monitor/quartz',
+  //             component: 'monitor/quartz/index',
+  //             meta: {
+  //                 keepAlive: false,
+  //                 internalOrExternal: false,
+  //                 icon: '',
+  //                 componentName: 'index',
+  //                 title: '定时任务',
+  //             },
+  //             name: 'monitor-quartz',
+  //         },
+  //         {
+  //             path: '/monitor/datasource',
+  //             component: 'monitor/datasource/index',
+  //             meta: {
+  //                 keepAlive: false,
+  //                 internalOrExternal: false,
+  //                 icon: '',
+  //                 componentName: 'index',
+  //                 title: '数据源管理',
+  //             },
+  //             name: 'monitor-datasource',
+  //         },
+  //         {
+  //             path: '/monitor/datalog',
+  //             component: 'monitor/datalog/index',
+  //             meta: {
+  //                 keepAlive: false,
+  //                 internalOrExternal: false,
+  //                 icon: '',
+  //                 componentName: 'index',
+  //                 title: '数据日志',
+  //             },
+  //             name: 'monitor-datalog',
+  //         },
+  //         {
+  //             path: '/monitor/log',
+  //             component: 'monitor/log/index',
+  //             meta: {
+  //                 keepAlive: false,
+  //                 internalOrExternal: false,
+  //                 icon: '',
+  //                 componentName: 'index',
+  //                 title: '日志管理',
+  //             },
+  //             name: 'monitor-log',
+  //         },
+  //         {
+  //             path: '/monitor/druid',
+  //             component: "{{ window._CONFIG['domianURL'] }}/druid",
+  //             meta: {
+  //                 keepAlive: false,
+  //                 internalOrExternal: true,
+  //                 icon: '',
+  //                 componentName: 'druid',
+  //                 title: 'SQL监控',
+  //             },
+  //             name: 'monitor-druid',
+  //         },
+  //         {
+  //             path: '/monitor/server',
+  //             component: 'monitor/server/index',
+  //             meta: {
+  //                 keepAlive: false,
+  //                 internalOrExternal: false,
+  //                 icon: '',
+  //                 componentName: 'index',
+  //                 title: '性能监控',
+  //             },
+  //             name: 'monitor-server',
+  //         },
+  //         {
+  //             path: '/monitor/redis',
+  //             component: 'monitor/redis/index',
+  //             meta: {
+  //                 keepAlive: false,
+  //                 internalOrExternal: false,
+  //                 icon: '',
+  //                 componentName: 'index',
+  //                 title: 'Redis监控',
+  //             },
+  //             name: 'monitor-redis',
+  //         },
+  //         {
+  //             path: '/monitor/trace',
+  //             component: 'monitor/trace/index',
+  //             meta: {
+  //                 keepAlive: false,
+  //                 internalOrExternal: false,
+  //                 icon: '',
+  //                 componentName: 'index',
+  //                 title: '请求追踪',
+  //             },
+  //             name: 'monitor-trace',
+  //         },
+  //         {
+  //             path: '/system/onlineuser',
+  //             component: 'system/onlineuser/OnlineUserList',
+  //             meta: {
+  //                 keepAlive: false,
+  //                 internalOrExternal: false,
+  //                 icon: '',
+  //                 componentName: 'OnlineUserList',
+  //                 title: '在线用户',
+  //             },
+  //             name: 'system-onlineuser',
+  //         },
+  //         {
+  //             path: '/openapi',
+  //             component: 'layouts/RouteView',
+  //             children: [
+  //                 {
+  //                     path: '/openapi/openApiAuthList',
+  //                     component: 'openapi/OpenApiAuthList',
+  //                     meta: {
+  //                         keepAlive: false,
+  //                         internalOrExternal: false,
+  //                         componentName: 'OpenApiAuthList',
+  //                         title: '授权管理',
+  //                     },
+  //                     name: 'openapi-openApiAuthList',
+  //                 },
+  //                 {
+  //                     path: '/openapi/openApiList',
+  //                     component: 'openapi/OpenApiList',
+  //                     meta: {
+  //                         keepAlive: false,
+  //                         internalOrExternal: false,
+  //                         componentName: 'OpenApiList',
+  //                         title: '接口管理',
+  //                     },
+  //                     name: 'openapi-openApiList',
+  //                 },
+  //                 {
+  //                     path: '/openapi/SwaggerUI',
+  //                     component: 'openapi/SwaggerUI',
+  //                     meta: {
+  //                         keepAlive: false,
+  //                         internalOrExternal: false,
+  //                         componentName: 'SwaggerUI',
+  //                         title: '接口文档',
+  //                     },
+  //                     name: 'openapi-SwaggerUI',
+  //                 },
+  //             ],
+  //             meta: {
+  //                 keepAlive: false,
+  //                 internalOrExternal: false,
+  //                 icon: '',
+  //                 componentName: 'RouteView',
+  //                 title: 'OpenAPI',
+  //             },
+  //             name: 'openapi',
+  //         },
+  //     ],
+  //     meta: {
+  //         keepAlive: false,
+  //         internalOrExternal: false,
+  //         icon: '',
+  //         componentName: 'index',
+  //         title: '系统监控',
+  //     },
+  //     name: 'monitor',
+  // },
 ]

+ 57 - 0
src/views/analysis/warningAnalysis/connectAnalysis/connectAnalysis.data.ts

@@ -0,0 +1,57 @@
+import { TreeItem } from "/@/components/Tree";
+
+export const treeData: TreeItem[] = [
+  {
+    title: '气体参数 ',
+    key: '0-0',
+    children: [
+      { title: 'CO', key: '0-0-0' },
+      { title: 'CH4', key: '0-0-1' },
+      { title: 'C2H4', key: '0-0-2' },
+      { title: 'C2H2', key: '0-0-3' },
+      { title: 'CO2', key: '0-0-4' },
+      { title: 'O2', key: '0-0-5' },
+    ],
+  },
+  {
+    title: '内外压力及压差',
+    key: '1-1',
+    children: [
+      { title: '内压力', key: '1-1-0' },
+      { title: '外压力', key: '1-1-1' },
+      { title: '压差', key: '1-1-2' },
+    ],
+  },
+  {
+    title: '温度',
+    key: '2-2',
+  },
+];
+
+export const historicalMockChartData = [
+  { time: '2025-12-22 00:00:00', CO: 22.3, CH4: 0.12, C2H4: 0.35, C2H2: 0.10, CO2: 0.85, O2: 19.5, innerPressure: 101.32, outerPressure: 101.10, pressureDiff: 0.22, temperature: 33.2 },
+  { time: '2025-12-22 01:00:00', CO: 23.1, CH4: 0.15, C2H4: 0.42, C2H2: 0.12, CO2: 0.92, O2: 19.7, innerPressure: 101.38, outerPressure: 101.15, pressureDiff: 0.23, temperature: 33.5 },
+  { time: '2025-12-22 02:00:00', CO: 22.8, CH4: 0.13, C2H4: 0.38, C2H2: 0.09, CO2: 0.88, O2: 19.6, innerPressure: 101.41, outerPressure: 101.18, pressureDiff: 0.23, temperature: 33.3 },
+  { time: '2025-12-22 03:00:00', CO: 21.9, CH4: 0.11, C2H4: 0.31, C2H2: 0.08, CO2: 0.81, O2: 19.4, innerPressure: 101.35, outerPressure: 101.12, pressureDiff: 0.21, temperature: 33.1 },
+  { time: '2025-12-22 04:00:00', CO: 22.5, CH4: 0.14, C2H4: 0.36, C2H2: 0.11, CO2: 0.86, O2: 19.5, innerPressure: 101.39, outerPressure: 101.16, pressureDiff: 0.22, temperature: 33.4 },
+  { time: '2025-12-22 05:00:00', CO: 23.4, CH4: 0.16, C2H4: 0.45, C2H2: 0.13, CO2: 0.95, O2: 19.8, innerPressure: 101.43, outerPressure: 101.20, pressureDiff: 0.24, temperature: 33.7 },
+  { time: '2025-12-22 06:00:00', CO: 24.2, CH4: 0.18, C2H4: 0.51, C2H2: 0.15, CO2: 1.02, O2: 20.0, innerPressure: 101.47, outerPressure: 101.23, pressureDiff: 0.25, temperature: 34.0 },
+  { time: '2025-12-22 07:00:00', CO: 25.3, CH4: 0.21, C2H4: 0.58, C2H2: 0.17, CO2: 1.08, O2: 20.2, innerPressure: 101.52, outerPressure: 101.27, pressureDiff: 0.26, temperature: 34.3 },
+  { time: '2025-12-22 08:00:00', CO: 26.1, CH4: 0.23, C2H4: 0.65, C2H2: 0.19, CO2: 1.15, O2: 20.4, innerPressure: 101.56, outerPressure: 101.30, pressureDiff: 0.27, temperature: 34.6 },
+  { time: '2025-12-22 09:00:00', CO: 27.4, CH4: 0.25, C2H4: 0.72, C2H2: 0.22, CO2: 1.23, O2: 20.6, innerPressure: 101.60, outerPressure: 101.33, pressureDiff: 0.28, temperature: 35.0 },
+  { time: '2025-12-22 10:00:00', CO: 28.2, CH4: 0.27, C2H4: 0.78, C2H2: 0.24, CO2: 1.29, O2: 20.8, innerPressure: 101.63, outerPressure: 101.35, pressureDiff: 0.29, temperature: 35.3 },
+  { time: '2025-12-22 11:00:00', CO: 27.8, CH4: 0.26, C2H4: 0.75, C2H2: 0.23, CO2: 1.26, O2: 20.7, innerPressure: 101.61, outerPressure: 101.34, pressureDiff: 0.28, temperature: 35.2 },
+  { time: '2025-12-22 12:00:00', CO: 26.9, CH4: 0.24, C2H4: 0.69, C2H2: 0.21, CO2: 1.19, O2: 20.5, innerPressure: 101.58, outerPressure: 101.32, pressureDiff: 0.27, temperature: 34.9 },
+  { time: '2025-12-22 13:00:00', CO: 26.3, CH4: 0.22, C2H4: 0.64, C2H2: 0.19, CO2: 1.14, O2: 20.3, innerPressure: 101.55, outerPressure: 101.30, pressureDiff: 0.26, temperature: 34.7 },
+  { time: '2025-12-22 14:00:00', CO: 25.7, CH4: 0.20, C2H4: 0.59, C2H2: 0.18, CO2: 1.09, O2: 20.1, innerPressure: 101.53, outerPressure: 101.28, pressureDiff: 0.25, temperature: 34.5 },
+  { time: '2025-12-22 15:00:00', CO: 24.9, CH4: 0.18, C2H4: 0.53, C2H2: 0.16, CO2: 1.03, O2: 19.9, innerPressure: 101.49, outerPressure: 101.25, pressureDiff: 0.24, temperature: 34.2 },
+  { time: '2025-12-22 16:00:00', CO: 24.3, CH4: 0.17, C2H4: 0.49, C2H2: 0.15, CO2: 0.98, O2: 19.8, innerPressure: 101.46, outerPressure: 101.22, pressureDiff: 0.23, temperature: 34.0 },
+  { time: '2025-12-22 17:00:00', CO: 23.8, CH4: 0.16, C2H4: 0.46, C2H2: 0.14, CO2: 0.94, O2: 19.7, innerPressure: 101.44, outerPressure: 101.21, pressureDiff: 0.23, temperature: 33.8 },
+  { time: '2025-12-22 18:00:00', CO: 23.5, CH4: 0.15, C2H4: 0.43, C2H2: 0.13, CO2: 0.91, O2: 19.6, innerPressure: 101.42, outerPressure: 101.19, pressureDiff: 0.22, temperature: 33.7 },
+  { time: '2025-12-22 19:00:00', CO: 24.1, CH4: 0.17, C2H4: 0.48, C2H2: 0.15, CO2: 0.97, O2: 19.8, innerPressure: 101.45, outerPressure: 101.22, pressureDiff: 0.24, temperature: 33.9 },
+  { time: '2025-12-22 20:00:00', CO: 24.7, CH4: 0.19, C2H4: 0.52, C2H2: 0.16, CO2: 1.01, O2: 20.0, innerPressure: 101.48, outerPressure: 101.24, pressureDiff: 0.25, temperature: 34.1 },
+  { time: '2025-12-22 21:00:00', CO: 25.2, CH4: 0.20, C2H4: 0.56, C2H2: 0.18, CO2: 1.05, O2: 20.1, innerPressure: 101.51, outerPressure: 101.26, pressureDiff: 0.26, temperature: 34.3 },
+  { time: '2025-12-22 22:00:00', CO: 24.5, CH4: 0.18, C2H4: 0.50, C2H2: 0.16, CO2: 0.99, O2: 19.9, innerPressure: 101.47, outerPressure: 101.23, pressureDiff: 0.24, temperature: 34.0 },
+  { time: '2025-12-22 23:00:00', CO: 23.7, CH4: 0.16, C2H4: 0.45, C2H2: 0.14, CO2: 0.93, O2: 19.7, innerPressure: 101.43, outerPressure: 101.20, pressureDiff: 0.23, temperature: 33.8 },
+  { time: '2025-11-18 00:00:00', CO: 22.9, CH4: 0.14, C2H4: 0.39, C2H2: 0.11, CO2: 0.89, O2: 19.6, innerPressure: 101.37, outerPressure: 101.17, pressureDiff: 0.22, temperature: 33.4 },
+];

+ 314 - 0
src/views/analysis/warningAnalysis/connectAnalysis/index.vue

@@ -0,0 +1,314 @@
+<template>
+  <div class="connectAnalysis">
+    <div class="filter-area">
+      <!-- 时间选择 -->
+      <div class="filter-section">
+        <span class="filter-label">时间选择:</span>
+        <RangePicker v-model="dateRange" format="YYYY-MM-DD HH:mm:ss" :placeholder="['开始时间', '结束时间']"
+          style="width: 320px" :show-time="{ format: 'HH:mm:ss' }" />
+      </div>
+      <!-- 参数选择 -->
+      <div class="filter-section param-section">
+        <span class="filter-label">参数选择:</span>
+        <div class="param-selector">
+          <Input v-model="selectedParamsText" placeholder="请选择监测参数" readonly style="width: 300px" />
+          <Button type="primary" @click="showTree = !showTree">+</Button>
+          <div class="tree-popup" v-if="showTree">
+            <BasicTree :treeData="treeData" :checkable="true" defaultExpandAll @check="handleTreeCheck"
+              :checkedKeys="checkedTreeKeys" />
+          </div>
+        </div>
+      </div>
+      <!-- 生成按钮 -->
+      <div class="filter-section">
+        <Button type="primary" @click="generateChart">生成</Button>
+      </div>
+    </div>
+    <!-- 动态图表区域-->
+    <div class="chart-area">
+      <div class="chart-item" style="flex: 1 1 100%;">
+        <div class="chart-placeholder">
+          <template v-if="generatedChartData.length">
+            <CustomChart :chart-data="generatedChartData" :chart-config="generatedChartConfig"
+              style="height: 100%; width: 100%" />
+          </template>
+          <template v-else-if="isChartGenerated">
+            <div class="empty-chart">暂无匹配数据,请调整筛选条件</div>
+          </template>
+          <template v-else>
+            <div class="empty-chart">请选择时间范围和参数,点击"生成"查看数据</div>
+          </template>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { computed, ref } from 'vue';
+import dayjs from 'dayjs';
+import isBetween from 'dayjs/plugin/isBetween'; // 引入 isBetween 插件
+import { treeData, historicalMockChartData} from './connectAnalysis.data'; // 引入模拟数据
+import {  DatePicker, Button, message, Input } from 'ant-design-vue';
+import { BasicTree } from '/@/components/Tree/index';
+import CustomChart from '/@/components/Configurable/detail/CustomChart.vue';
+
+// 关键:使用 dayjs 插件
+dayjs.extend(isBetween);
+// 组件注册
+const RangePicker = DatePicker.RangePicker;
+// 筛选相关响应式数据
+const dateRange = ref([dayjs().subtract(1, 'day').toDate(), dayjs().toDate()]); // 默认时间范围(近1天)
+const selectedParamsText = ref(''); // 参数选择框显示文本
+const showTree = ref(false); // 控制树形选择器显示/隐藏
+const checkedTreeKeys = ref([]); // 树形选中的key
+const selectedParams = ref([]); // 选中的参数(实际用于图表)
+const generatedChartData = ref<any[]>([]); // 生成的图表数据
+const generatedChartConfig = ref({}); // 生成的图表配置
+const isChartGenerated = ref(false); // 是否已点击生成
+
+// Tree Key 与参数名映射(关键:关联树形节点和实际参数)
+const treeKeyToParamMap = computed(() => ({
+  '0-0-0': 'CO',
+  '0-0-1': 'CH4',
+  '0-0-2': 'C2H4',
+  '0-0-3': 'C2H2',
+  '0-0-4': 'CO2',
+  '0-0-5': 'O2',
+  '1-1-0': 'innerPressure',
+  '1-1-1': 'outerPressure',
+  '1-1-2': 'pressureDiff',
+  '2-2': 'temperature',
+}));
+// 参数标签映射(图表系列名称)
+const paramLabelMap = computed(() => ({
+  'CO': 'CO浓度(ppm)',
+  'CH4': 'CH4浓度(%)',
+  'C2H4': 'C2H4浓度(ppm)',
+  'C2H2': 'C2H2浓度(ppm)',
+  'CO2': 'CO2浓度(%)',
+  'O2': 'O2浓度(%)',
+  'innerPressure': '内压力(kPa)',
+  'outerPressure': '外压力(kPa)',
+  'pressureDiff': '压差(kPa)',
+  'temperature': '温度(℃)',
+}));
+// 参数颜色映射
+const paramColorMap = computed(() => ({
+  'CO': '#f5222d',    // 红色
+  'CH4': '#1890ff',   // 蓝色
+  'C2H4': '#faad14',  // 橙色
+  'C2H2': '#52c41a',  // 绿色
+  'CO2': '#722ed1',   // 紫色
+  'O2': '#13c2c2',    // 青色
+  'innerPressure': '#ff4d4f', // 浅红
+  'outerPressure': '#40a9ff',// 浅蓝
+  'pressureDiff': '#fa8c16', // 浅橙
+  'temperature': '#9254de',  // 浅紫
+}));
+
+// 树形选择事件处理
+const handleTreeCheck = (checkedKeys) => {
+  checkedTreeKeys.value = checkedKeys;
+  // 转换为实际参数名
+  const params = checkedKeys
+    .map(key => treeKeyToParamMap.value[key])
+    .filter(param => param); // 过滤无效参数
+  selectedParams.value = params;
+
+  // 更新输入框显示文本
+  const paramLabels = params.map(param => paramLabelMap.value[param]);
+  selectedParamsText.value = paramLabels.join('、');
+};
+
+// 生成折线图核心逻辑
+const generateChart = () => {
+  // 校验筛选条件
+  if (!dateRange.value[0] || !dateRange.value[1]) {
+    message.warning('请选择完整的时间范围');
+    return;
+  }
+  if (selectedParams.value.length === 0) {
+    message.warning('请至少选择一个监测参数');
+    return;
+  }
+
+  isChartGenerated.value = true;
+  const start = dayjs(dateRange.value[0]); // 转为 dayjs 实例
+  const end = dayjs(dateRange.value[1]);   // 转为 dayjs 实例
+
+  // 1. 筛选时间范围内的模拟数据(修复核心漏洞)
+  const filteredData = historicalMockChartData.filter(item => {
+    const itemTime = dayjs(item.time); // 解析 item.time 为 dayjs 实例
+    // 修复 isBetween 用法:明确指定 unit 为 'second',包容性为 '[]'
+    return itemTime.isBetween(start, end, 'second', '[]');
+  });
+
+  // 2. 构建图表数据结构(适配 CustomChart 的 line 类型)
+  const timeMap = new Map();
+  // 修复变量名:filteredRawData → filteredData(之前未定义)
+  filteredData.forEach((item) => {
+    const timeStr = dayjs(item.time).format('YYYY-MM-DD HH:mm:ss');
+    if (!timeMap.has(timeStr)) {
+      timeMap.set(timeStr, { time: timeStr });
+    }
+    // 只保留选中的参数数据
+    selectedParams.value.forEach(param => {
+      if (item[param] !== undefined) {
+        timeMap.get(timeStr)[param] = item[param];
+      }
+    });
+  });
+
+  // 转换为数组并按时间排序
+  const chartData = Array.from(timeMap.values()).sort((a, b) => {
+    return dayjs(a.time).valueOf() - dayjs(b.time).valueOf();
+  });
+  generatedChartData.value = chartData;
+
+   // 3. 构建图表配置(折线图类型,完善适配逻辑)
+  generatedChartConfig.value = {
+    type: 'line', // 折线图
+    clear: true, // 每次生成清空之前的图表
+    legend: { show: true, top: 10, right: 10 },
+    xAxis: [
+      {
+        type: 'category',
+        axisLabel: {
+          rotate: 30,
+          formatter: (value) => dayjs(value).format('HH:mm:ss'),
+          interval: Math.max(1, Math.floor(chartData.length / 10)) // 控制x轴标签密度
+        }
+      }
+    ],
+    yAxis: selectedParams.value.map(param => ({
+      type: 'value',
+      name: paramLabelMap.value[param].split('(')[1].replace(')', ''), // 显示单位
+      nameTextStyle: { color: paramColorMap.value[param] },
+      axisLine: { lineStyle: { color: paramColorMap.value[param] } },
+      splitLine: { lineStyle: { opacity: 0.1 } }
+    })),
+    series: selectedParams.value.map((param, index) => ({
+      name: paramLabelMap.value[param],
+      type: 'line',
+      readFrom: '', // 适配 CustomChart 的 baseSeries 读取逻辑
+      label: paramLabelMap.value[param],
+      xprop: 'time', // 对应图表数据的 x 字段(时间)
+      yprop: param, // 对应图表数据的 y 字段(参数值)
+      color: paramColorMap.value[param],
+      smooth: true,
+      symbol: 'circle',
+      symbolSize: 4,
+      yAxisIndex: index,
+    })),
+    tooltip: {
+      trigger: 'axis',
+      axisPointer: { type: 'cross' },
+      formatter: (params) => {
+        let tooltipHtml = `<div>${dayjs(params[0].axisValue).format('YYYY-MM-DD HH:mm:ss')}</div>`;
+        params.forEach(param => {
+          tooltipHtml += `<div style="color: ${param.color}">${param.seriesName}: ${param.value[1]} ${param.seriesName.split('(')[1].replace(')', '')}</div>`;
+        });
+        return tooltipHtml;
+      }
+    },
+    grid: { left: 60, top: 40, right: 60, bottom: 60 }
+  };
+
+  // 无数据提示
+  if (chartData.length === 0) {
+    message.info('当前筛选条件下无数据');
+  }
+};
+
+</script>
+
+<style lang="less" scoped>
+.connectAnalysis {
+  padding: 16px;
+
+  .filter-area {
+    display: flex;
+    flex-wrap: wrap;
+    gap: 16px;
+    margin-bottom: 20px;
+    padding: 20px;
+    border: 1px solid #f0f0f0;
+    border-radius: 10px;
+    background: #f8f9fc;
+    align-items: center;
+  }
+
+  .filter-section {
+    display: flex;
+    align-items: center;
+    gap: 8px;
+  }
+
+  .filter-label {
+    color: #666;
+    min-width: 80px;
+    flex-shrink: 0;
+    font-weight: 500;
+  }
+
+  .param-section {
+    flex: 1;
+    min-width: 300px;
+  }
+
+  .param-selector {
+    display: flex;
+    align-items: center;
+    gap: 8px;
+    position: relative;
+  }
+
+  .tree-popup {
+    position: absolute;
+    top: 100%;
+    left: 0;
+    margin-top: 8px;
+    width: 300px;
+    max-height: 300px;
+    overflow-y: auto;
+    background: #fff;
+    border: 1px solid #e8e8e8;
+    border-radius: 4px;
+    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
+    z-index: 100;
+    padding: 8px;
+  }
+
+  .chart-area {
+    display: flex;
+    flex-wrap: wrap;
+    gap: 16px;
+    padding: 20px;
+    border: 1px solid #f0f0f0;
+    border-radius: 10px;
+    background: #f8f9fc;
+  }
+  .chart-item {
+  flex: 1;
+  min-width: 200px;
+}
+.chart-placeholder {
+  width: 100%;
+  height: 300px;
+  border-radius: 4px;
+  overflow: hidden;
+  background: #333;
+  border: 1px solid #eee;
+}
+.empty-chart {
+  width: 100%;
+  height: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  color: #999;
+  font-size: 14px;
+}
+}
+</style>