zhanghua
2023-09-28 fa1c7589a74d3f48d74a7a9ee98ac57335b4502a
油烟
2个文件已修改
7个文件已添加
1340 ■■■■ 已修改文件
src/assets/icons/svg/smoke.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 826 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/layout/components/Menu/index.vue 445 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smoke/alarm/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smoke/cockpit/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smoke/index.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smoke/judgment/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smoke/realTime/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/smoke/report/index.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/icons/svg/smoke.svg
New file
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1695708028269" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8683" width="16" style="padding:5px" height="16" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M512 878.933333a366.933333 366.933333 0 1 1 0-733.866666 366.933333 366.933333 0 0 1 0 733.866666z m0 59.733334c235.648 0 426.666667-191.018667 426.666667-426.666667S747.648 85.333333 512 85.333333 85.333333 276.352 85.333333 512s191.018667 426.666667 426.666667 426.666667z" fill="#ffffff" p-id="8684"></path><path d="M584.576 429.994667l98.346667-105.642667a259.84 259.84 0 0 1 84.053333 213.973333h-1.365333l-144.298667-4.138666c-3.413333 18.645333-11.52 35.669333-23.04 49.834666l109.696 94.250667a263.424 263.424 0 0 1-198.656 89.514667l-0.213333 0.213333c-4.821333 0-9.472-0.213333-14.250667-0.426667h-0.682667v-142.762666a113.152 113.152 0 0 1-52.522666-21.674667 12.032 12.032 0 0 1 0.554666 0.554667l0.512 0.554666-101.717333 109.226667a258.688 258.688 0 0 1-84.736-198.997333L256 514.261333v-0.298666c0.256-4.906667 0.469333-9.557333 0.938667-14.464h1.365333l139.008 4.010666a110.933333 110.933333 0 0 1 29.141333-64.853333L318.293333 345.770667a264.533333 264.533333 0 0 1 213.76-89.258667v147.754667c19.925333 3.882667 37.888 13.013333 52.565334 25.770666z m-74.538667 11.349333c-40.661333 0-73.514667 32.469333-73.514666 72.704 0 40.192 32.853333 72.661333 73.514666 72.661333a72.96 72.96 0 0 0 73.472-72.661333c0-40.234667-32.853333-72.704-73.472-72.704z" fill="#ffffff" p-id="8685"></path></svg>
src/router/index.js
@@ -2,436 +2,462 @@
import VueRouter from 'vue-router'
Vue.use(VueRouter)
const routes = [{
  path: "/",
  name: 'index',
  redirect: '/home'
},
{
  path: '/home',
  name: 'home',
  component: () => import('@/views/layout'),
  meta: {
    needLogin: true,
    path: "/",
    name: 'index',
    redirect: '/home'
  },
  children: [{
    path: 'system',
    name: 'system',
    component: () => import('@/views/systemSetting'),
  {
    path: '/home',
    name: 'home',
    component: () => import('@/views/layout'),
    meta: {
      needLogin: true,
    },
    children: [{
      path: 'userSetting',
      name: 'userSetting',
      component: () => import('@/views/systemSetting/baseSetting'),
      children: [{
        path: "user",
        name: "user",
        component: () => import('@/views/systemSetting/baseSetting/user')
        path: 'system',
        name: 'system',
        component: () => import('@/views/systemSetting'),
        children: [{
            path: 'userSetting',
            name: 'userSetting',
            component: () => import('@/views/systemSetting/baseSetting'),
            children: [{
                path: "user",
                name: "user",
                component: () => import('@/views/systemSetting/baseSetting/user')
              },
              {
                path: 'role',
                name: 'role',
                component: () => import('@/views/systemSetting/baseSetting/role')
              },
              {
                path: 'department',
                name: 'department',
                component: () => import('@/views/systemSetting/baseSetting/department')
              },
            ]
          },
          {
            path: 'platform',
            name: 'platform',
            component: () => import('@/views/systemSetting/platform'),
            children: [{
                path: 'portalSetting',
                name: 'portalSetting',
                component: () => import('@/views/systemSetting/platform/portalSetting')
              },
              {
                path: 'otherInterface',
                name: 'otherInterface',
                component: () => import('@/views/systemSetting/platform/otherInterface')
              },
              {
                path: 'mySetting',
                name: 'mySetting',
                component: () => import('@/views/systemSetting/platform/mySetting')
              },
              {
                path: 'cockpitManage',
                name: 'cockpitManage',
                component: () => import('@/views/systemSetting/platform/cockpitManage')
              },
              {
                path: 'externalLinks', //外部链接
                name: 'externalLinks',
                component: () => import('@/views/systemSetting/platform/externalLinks')
              }
            ]
          },
          {
            path: 'device',
            name: 'device',
            component: () => import('@/views/systemSetting/device'),
            children: [{
                path: 'bayonet',
                name: 'bayonet',
                component: () => import('@/views/systemSetting/device/bayonet')
              },
              {
                path: 'grid',
                name: 'grid',
                component: () => import('@/views/systemSetting/device/grid'),
              },
              {
                path: 'point',
                name: 'point',
                component: () => import('@/views/systemSetting/device/point'),
                meta: {
                  keepAlive: false // 不需要被缓存
                }
              },
              {
                path: 'handheldTerminal',
                name: 'handheldTerminal',
                component: () => import('@/views/systemSetting/device/handheldTerminal'),
              },
              {
                path: 'loudspeaker',
                name: 'loudspeaker',
                component: () => import('@/views/systemSetting/device/loudspeaker'),
              }
            ]
          }
        ]
      },
      {
        path: 'role',
        name: 'role',
        component: () => import('@/views/systemSetting/baseSetting/role')
        path: 'smoke',
        name: 'smoke',
        component: () => import('@/views/smoke'),
        children: [{
          path: 'smokeRealTime',
          name: 'smokeRealTime',
          component: () => import('@/views/smoke/realTime')
        }, {
          path: 'smokeJudgment',
          name: 'smokeJudgment',
          component: () => import('@/views/smoke/judgment')
        },{
          path: 'smokeAlarm',
          name: 'smokeAlarm',
          component: () => import('@/views/smoke/alarm')
        },{
          path: 'smokeReport',
          name: 'smokeReport',
          component: () => import('@/views/smoke/report')
        },{
          path: 'smokecCockpit',
          name: 'smokecCockpit',
          component: () => import('@/views/smoke/cockpit')
        }]
      },
      {
        path: 'department',
        name: 'department',
        component: () => import('@/views/systemSetting/baseSetting/department')
        path: "operate",
        name: 'operate',
        component: () => import('@/views/operate'),
        children: [{
            path: 'baseSetting',
            name: 'baseSetting',
            component: () => import('@/views/operate/baseSetting'),
            children: [{
                path: "violation",
                name: 'violation',
                component: () => import('@/views/operate/baseSetting/violation'),
              },
              {
                path: "illegalBuild",
                name: 'illegalBuild',
                component: () => import('@/views/operate/baseSetting/illegalBuild'),
              },
            ]
          },
          {
            path: 'casepool',
            name: 'casepool',
            component: () => import('@/views/operate/disposal'),
            children: [{
                path: 'pool',
                name: 'pool',
                component: () => import('@/views/operate/disposal/casepool/pool'),
              },
              {
                path: 'escalation',
                name: 'escalation',
                component: () => import('@/views/operate/disposal/casepool/escalation'),
              },
              {
                path: 'dispatch',
                name: 'dispatch',
                component: () => import('@/views/operate/disposal/casepool/dispatch'),
              },
              {
                path: 'notDeal',
                name: 'notDeal',
                component: () => import('@/views/operate/disposal/casepool/notDeal'),
              },
              {
                path: 'learn',
                name: 'learn',
                component: () => import('@/views/operate/disposal/casepool/learn'),
              },
            ]
          },
          {
            path: "fivepack",
            name: 'fivepack',
            component: () => import('@/views/operate/fivepack'),
            children: [{
                path: "shop",
                name: 'shop',
                component: () => import('@/views/operate/fivepack/shop'),
              },
              {
                path: "threepackage",
                name: 'threepackage',
                component: () => import('@/views/operate/fivepack/threepack'),
              }
            ]
          },
          {
            path: 'myWait',
            name: 'myWait',
            component: () => import('@/views/operate/myWait'),
          },
          {
            path: 'images',
            name: 'images',
            component: () => import('@/views/operate/images'),
          },
          {
            path: 'viewEvent',
            name: 'viewEvent',
            component: () => import('@/views/operate/viewEvent'),
          },
          {
            path: 'rectification',
            name: 'rectification',
            component: () => import('@/views/operate/rectification'),
            children: [{
                path: "taskList",
                name: 'taskList',
                component: () => import('@/views/operate/rectification/taskList'),
              },
              {
                path: "surveyList",
                name: 'surveyList',
                component: () => import('@/views/operate/rectification/surveyList'),
              },
              {
                path: "renovationList",
                name: 'renovationList',
                component: () => import('@/views/operate/rectification/renovationList'),
              }
            ]
          },
          {
            path: 'lawEnforcement',
            name: 'lawEnforcement',
            component: () => import('@/views/operate/lawEnforcement')
          },
          {
            path: 'management',
            name: 'management',
            component: () => import('@/views/operate/management'),
            redirect: '/home/operate/management/myIndex',
            children: [{
                path: 'myIndex',
                name: 'myIndex',
                component: () => import('@/views/operate/management/myIndex'),
              },
              {
                path: 'managementMessage',
                name: 'managementMessage',
                component: () => import('@/views/operate/management/message'),
              }
            ]
          },
          {
            path: 'car',
            name: 'car',
            component: () => import('@/views/operate/car'),
            children: [{
                path: 'carIndex',
                name: 'carIndex',
                component: () => import('@/views/operate/car/myIndex'),
              },
              {
                path: 'lawTrajectory',
                name: 'lawTrajectory',
                component: () => import('@/views/operate/car/lawCar'),
              },
              {
                path: 'soilTrajectory',
                name: 'soilTrajectory',
                component: () => import('@/views/operate/car/soilCar'),
              }
            ]
          },
          {
            path: 'message',
            name: 'message',
            component: () => import('@/views/operate/message'),
            children: [{
                path: 'messageIndex',
                name: 'messageIndex',
                component: () => import('@/views/operate/message/myIndex'),
              },
              {
                path: 'mycontrol',
                name: 'mycontrol',
                component: () => import('@/views/operate/message/mycontrol'),
              },
            ]
          },
          {
            path: 'log',
            name: 'log',
            component: () => import('@/views/operate/log'),
          },
          {
            path: 'sms',
            name: 'sms',
            component: () => import('@/views/operate/sms'),
            children: [{
                path: 'smsIndex',
                name: 'smsIndex',
                component: () => import('@/views/operate/sms/smsIndex'),
              },
              {
                path: 'smsTemplate',
                name: 'smsTemplate',
                component: () => import('@/views/operate/sms/smsTemplate'),
              },
            ]
          },
          {
            path: "videoControl",
            name: 'videoControl',
            component: () => import('@/views/operate/video')
          },
          {
            path: 'viewEvent',
            name: 'viewEvent',
            component: () => import('@/views/operate/viewEvent'),
          },
          {
            path: 'images',
            name: 'images',
            component: () => import('@/views/operate/images'),
          },
          {
            path: 'writManagement',
            name: 'writManagement',
            component: () => import('@/views/operate/writManager'),
            // redirect: '/home/operate/writManager/writ',
            children: [{
                path: 'writTemplate',
                name: 'writTemplate',
                component: () => import('@/views/operate/writManager/writTemplate'),
              },
              {
                path: 'writ',
                name: 'writ',
                component: () => import('@/views/operate/writManager/writ'),
              }
            ]
          }
        ]
      },
      ]
    },
    {
      path: 'platform',
      name: 'platform',
      component: () => import('@/views/systemSetting/platform'),
      children: [{
        path: 'portalSetting',
        name: 'portalSetting',
        component: () => import('@/views/systemSetting/platform/portalSetting')
      },
      {
        path: 'otherInterface',
        name: 'otherInterface',
        component: () => import('@/views/systemSetting/platform/otherInterface')
      },
      {
        path: 'mySetting',
        name: 'mySetting',
        component: () => import('@/views/systemSetting/platform/mySetting')
      },
      {
        path: 'cockpitManage',
        name: 'cockpitManage',
        component: () => import('@/views/systemSetting/platform/cockpitManage')
      },
          {
              path: 'externalLinks',   //外部链接
              name: 'externalLinks',
              component: () => import('@/views/systemSetting/platform/externalLinks')
          }
      ]
    },
    {
      path: 'device',
      name: 'device',
      component: () => import('@/views/systemSetting/device'),
      children: [{
        path: 'bayonet',
        name: 'bayonet',
        component: () => import('@/views/systemSetting/device/bayonet')
      },
      {
        path: 'grid',
        name: 'grid',
        component: () => import('@/views/systemSetting/device/grid'),
      },
      {
        path: 'point',
        name: 'point',
        component: () => import('@/views/systemSetting/device/point'),
        path: "video",
        name: 'video',
        component: () => import('@/views/video'),
        meta: {
          keepAlive: false // 不需要被缓存
        }
      },
      {
        path: 'handheldTerminal',
        name: 'handheldTerminal',
        component: () => import('@/views/systemSetting/device/handheldTerminal'),
        path: "lampblack",
        name: 'lampblack',
        component: () => import('@/views/lampblack')
      },
      {
        path: 'loudspeaker',
        name: 'loudspeaker',
        component: () => import('@/views/systemSetting/device/loudspeaker'),
        path: "law",
        name: 'law',
        component: () => import('@/views/law')
      },
      {
        path: "intellect",
        name: 'intellect',
        component: () => import('@/views/intellect')
      },
      {
        path: "info",
        name: 'info',
        component: () => import('@/views/info')
      },
      //  智能巡查
      {
        path: 'studyJudge', // 预警研判
        name: 'studyJudge',
        component: () => import('@/views/intelligentPatrol/studyJudge/tablePage'),
      },
      {
        path: 'illegalSearch', // 违规检索
        name: 'illegalSearch',
        component: () => import('@/views/intelligentPatrol/illegalSearch'),
      },
      {
        path: 'trendAnalysis', // 趋势分析
        name: 'trendAnalysis',
        component: () => import('@/views/intelligentPatrol/trendAnalysis'),
      },
      {
        path: 'runReport', // 运行报告
        name: 'runReport',
        component: () => import('@/views/intelligentPatrol/runReport'),
      },
      // 违法统计
      {
        path: 'typeStatistics', // 按违规类型统计
        name: 'typeStatistics',
        component: () => import('@/views/intelligentPatrol/statistics/unlawful/type'),
      },
      {
        path: 'pointStatistics', //按点位统计
        name: 'pointStatistics',
        component: () => import('@/views/intelligentPatrol/statistics/unlawful/point'),
      },
      {
        path: 'timeStatistics', //按时间统计
        name: 'timeStatistics',
        component: () => import('@/views/intelligentPatrol/statistics/unlawful/time'),
      },
      {
        path: 'areaStatistics', //按区域统计
        name: 'areaStatistics',
        component: () => import('@/views/intelligentPatrol/statistics/unlawful/area'),
      },
      {
        path: 'shopStatistics', //门前三包统计
        name: 'shopStatistics',
        component: () => import('@/views/intelligentPatrol/statistics/unlawful/shop'),
      }
      ]
    }
    ]
  },
  {
    path: "operate",
    name: 'operate',
    component: () => import('@/views/operate'),
    children: [{
      path: 'baseSetting',
      name: 'baseSetting',
      component: () => import('@/views/operate/baseSetting'),
      children: [{
        path: "violation",
        name: 'violation',
        component: () => import('@/views/operate/baseSetting/violation'),
      },
      {
        path: "illegalBuild",
        name: 'illegalBuild',
        component: () => import('@/views/operate/baseSetting/illegalBuild'),
      },
      ]
    },
    {
      path: 'casepool',
      name: 'casepool',
      component: () => import('@/views/operate/disposal'),
      children: [{
        path: 'pool',
        name: 'pool',
        component: () => import('@/views/operate/disposal/casepool/pool'),
      },
      {
        path: 'escalation',
        name: 'escalation',
        component: () => import('@/views/operate/disposal/casepool/escalation'),
      },
      {
        path: 'dispatch',
        name: 'dispatch',
        component: () => import('@/views/operate/disposal/casepool/dispatch'),
      },
      {
        path: 'notDeal',
        name: 'notDeal',
        component: () => import('@/views/operate/disposal/casepool/notDeal'),
      },
      {
        path: 'learn',
        name: 'learn',
        component: () => import('@/views/operate/disposal/casepool/learn'),
      },
      ]
    },
    {
      path: "fivepack",
      name: 'fivepack',
      component: () => import('@/views/operate/fivepack'),
      children: [{
        path: "shop",
        name: 'shop',
        component: () => import('@/views/operate/fivepack/shop'),
      },
      {
        path: "threepackage",
        name: 'threepackage',
        component: () => import('@/views/operate/fivepack/threepack'),
      }
      ]
    },
    {
      path: 'myWait',
      name: 'myWait',
      component: () => import('@/views/operate/myWait'),
    },
    {
      path: 'images',
      name: 'images',
      component: () => import('@/views/operate/images'),
    },
    {
      path: 'viewEvent',
      name: 'viewEvent',
      component: () => import('@/views/operate/viewEvent'),
    },
    {
      path: 'rectification',
      name: 'rectification',
      component: () => import('@/views/operate/rectification'),
      children: [{
        path: "taskList",
        name: 'taskList',
        component: () => import('@/views/operate/rectification/taskList'),
      },
      {
        path: "surveyList",
        name: 'surveyList',
        component: () => import('@/views/operate/rectification/surveyList'),
      },
      {
        path: "renovationList",
        name: 'renovationList',
        component: () => import('@/views/operate/rectification/renovationList'),
      }
      ]
    },
    {
      path: 'lawEnforcement',
      name: 'lawEnforcement',
      component: () => import('@/views/operate/lawEnforcement')
    },
    {
      path: 'management',
      name: 'management',
      component: () => import('@/views/operate/management'),
      redirect: '/home/operate/management/myIndex',
      children: [{
        path: 'myIndex',
        name: 'myIndex',
        component: () => import('@/views/operate/management/myIndex'),
      },
      {
        path: 'managementMessage',
        name: 'managementMessage',
        component: () => import('@/views/operate/management/message'),
      }]
    },
    {
      path: 'car',
      name: 'car',
      component: () => import('@/views/operate/car'),
      children: [{
        path: 'carIndex',
        name: 'carIndex',
        component: () => import('@/views/operate/car/myIndex'),
      },
      {
        path: 'lawTrajectory',
        name: 'lawTrajectory',
        component: () => import('@/views/operate/car/lawCar'),
      },
      {
        path: 'soilTrajectory',
        name: 'soilTrajectory',
        component: () => import('@/views/operate/car/soilCar'),
      }
      ]
    },
    {
      path: 'message',
      name: 'message',
      component: () => import('@/views/operate/message'),
      children: [{
        path: 'messageIndex',
        name: 'messageIndex',
        component: () => import('@/views/operate/message/myIndex'),
      },
      {
        path: 'mycontrol',
        name: 'mycontrol',
        component: () => import('@/views/operate/message/mycontrol'),
      },
      ]
    },
    {
      path: 'log',
      name: 'log',
      component: () => import('@/views/operate/log'),
    },
    {
      path: 'sms',
      name: 'sms',
      component: () => import('@/views/operate/sms'),
      children: [
        {
          path: 'smsIndex',
          name: 'smsIndex',
          component: () => import('@/views/operate/sms/smsIndex'),
        },
        {
          path: 'smsTemplate',
          name: 'smsTemplate',
          component: () => import('@/views/operate/sms/smsTemplate'),
        },
      ]
    },
    {
      path: "videoControl",
      name: 'videoControl',
      component: () => import('@/views/operate/video')
    },
    {
      path: 'viewEvent',
      name: 'viewEvent',
      component: () => import('@/views/operate/viewEvent'),
    },
    {
      path: 'images',
      name: 'images',
      component: () => import('@/views/operate/images'),
    },
    {
      path: 'writManagement',
      name: 'writManagement',
      component: () => import('@/views/operate/writManager'),
      // redirect: '/home/operate/writManager/writ',
      children: [
        {
          path: 'writTemplate',
          name: 'writTemplate',
          component: () => import('@/views/operate/writManager/writTemplate'),
        },
        {
          path: 'writ',
          name: 'writ',
          component: () => import('@/views/operate/writManager/writ'),
        }
      ]
    }]
  },
  {
    path: "video",
    name: 'video',
    component: () => import('@/views/video'),
    meta: {
      keepAlive: false // 不需要被缓存
    }
  },
  {
    path: "lampblack",
    name: 'lampblack',
    component: () => import('@/views/lampblack')
    path: '/login',
    name: 'login',
    component: () => import('@/views/login')
  },
  {
    path: "law",
    name: 'law',
    component: () => import('@/views/law')
    path: '/screen',
    name: 'screen',
    component: () => import('@/views/screen')
  },
  {
    path: "intellect",
    name: 'intellect',
    component: () => import('@/views/intellect')
    path: '/404',
    name: "404",
    component: () => import('@/views/info/NotFound'),
  },
  {
    path: "info",
    name: 'info',
    component: () => import('@/views/info')
  },
  //  智能巡查
  {
    path: 'studyJudge', // 预警研判
    name: 'studyJudge',
    component: () => import('@/views/intelligentPatrol/studyJudge/tablePage'),
    path: '/fail',
    name: "/fail",
    component: () => import('@/views/info/Fail'),
  },
  {
    path: 'illegalSearch', // 违规检索
    name: 'illegalSearch',
    component: () => import('@/views/intelligentPatrol/illegalSearch'),
    path: '/success',
    name: "/success",
    component: () => import('@/views/info/Success'),
  },
  {
    path: 'trendAnalysis', // 趋势分析
    name: 'trendAnalysis',
    component: () => import('@/views/intelligentPatrol/trendAnalysis'),
  },
      {
          path: 'runReport', // 运行报告
          name: 'runReport',
          component: () => import('@/views/intelligentPatrol/runReport'),
      },
  // 违法统计
  {
    path: 'typeStatistics', // 按违规类型统计
    name: 'typeStatistics',
    component: () => import('@/views/intelligentPatrol/statistics/unlawful/type'),
  },
  {
    path: 'pointStatistics', //按点位统计
    name: 'pointStatistics',
    component: () => import('@/views/intelligentPatrol/statistics/unlawful/point'),
  },
  {
    path: 'timeStatistics', //按时间统计
    name: 'timeStatistics',
    component: () => import('@/views/intelligentPatrol/statistics/unlawful/time'),
  },
  {
    path: 'areaStatistics', //按区域统计
    name: 'areaStatistics',
    component: () => import('@/views/intelligentPatrol/statistics/unlawful/area'),
  },
  {
    path: 'shopStatistics', //门前三包统计
    name: 'shopStatistics',
    component: () => import('@/views/intelligentPatrol/statistics/unlawful/shop'),
    path: '*',
    redirect: '/404'
  }
  ]
},
{
  path: '/login',
  name: 'login',
  component: () => import('@/views/login')
},
{
  path: '/screen',
  name: 'screen',
  component: () => import('@/views/screen')
},
{
  path: '/404',
  name: "404",
  component: () => import('@/views/info/NotFound'),
},
{
  path: '/fail',
  name: "/fail",
  component: () => import('@/views/info/Fail'),
},
{
  path: '/success',
  name: "/success",
  component: () => import('@/views/info/Success'),
},
{
  path: '*',
  redirect: '/404'
}
]
const router = new VueRouter({
@@ -443,4 +469,4 @@
router.push = function push(location) {
  return originalPush.call(this, location).catch(err => err);
}
export default router
export default router
src/views/layout/components/Menu/index.vue
@@ -1,69 +1,88 @@
<template>
  <div>
    <!-- 侧边导航栏 -->
    <el-aside width="200px">
      <h2 class="siderbar-title" @click="toHome()">遂昌执法平台</h2>
      <el-scrollbar>
        <!-- 路由 -->
        <el-menu router
                 class="el-menu-vertical"
                 :default-active="$route.path.name"
                 @select="handleSelect">
          <el-submenu
            :index="String(menu.id)"
            v-for="menu in menuList"
            :key="menu.id"
            class="firstMenu"
          >
            <template slot="title">
              <span slot="prefix" class="icon-padding fisrtSpan">
                <svg-icon class="icon-title" :icon-class="menu.icon"></svg-icon>
              </span>
              <span class="fisrtSpan">{{ menu.title }}</span>
            </template>
            <template v-if="menu.menuVoArrayList.length > 0">
              <template v-for="secondMenu in menu.menuVoArrayList">
                <el-submenu
                  :key="secondMenu.id"
                  v-if="secondMenu.menuVoArrayList.length > 0"
                  :index="secondMenu.url ? secondMenu.url : secondMenu.id.toString()"
                  class="secondMenu"
                  :class="secondMenu.menuVoArrayList.length > 0?'is-Active':'none-Active'"
    <div>
        <!-- 侧边导航栏 -->
        <el-aside width="200px">
            <h2 class="siderbar-title" @click="toHome()">遂昌执法平台</h2>
            <el-scrollbar>
                <!-- 路由 -->
                <el-menu
                    router
                    class="el-menu-vertical"
                    :default-active="$route.path.name"
                    @select="handleSelect"
                >
                  <template slot="title">
                    <span class="secondSpan">{{ secondMenu.title }}</span>
                  </template>
                  <el-menu-item
                    v-for="thirdMenu in secondMenu.menuVoArrayList"
                    :key="thirdMenu.id"
                    :index="`${thirdMenu.id}`"
                    :route="{ name: thirdMenu.url }"
                    v-if="thirdMenu.id!='65'"
                    <el-submenu
                        :index="String(menu.id)"
                        v-for="menu in menuList"
                        :key="menu.id"
                        class="firstMenu"
                    >
                    <template>
                      {{thirdMenu.title }}
                    </template></el-menu-item
                  >
                </el-submenu>
                <el-menu-item
                  v-else
                  :index="`${secondMenu.id}`"
                  :route="{ name: secondMenu.url }"
                  >{{ secondMenu.title }}</el-menu-item>
              </template>
            </template>
            <el-menu-item
              v-else
              :key="menu.id"
              :index="`${menu.id}`"
              :route="{ name: menu.url }"
              >{{ menu.title }}</el-menu-item
            >
          </el-submenu>
        </el-menu>
      </el-scrollbar>
    </el-aside>
  </div>
                        <template slot="title">
                            <span slot="prefix" class="icon-padding fisrtSpan">
                                <svg-icon
                                    class="icon-title"
                                    v-bind:class="menu.icon"
                                    :icon-class="menu.icon"
                                ></svg-icon>
                            </span>
                            <span class="fisrtSpan">{{ menu.title }}</span>
                        </template>
                        <template v-if="menu.menuVoArrayList.length > 0">
                            <template
                                v-for="secondMenu in menu.menuVoArrayList"
                            >
                                <el-submenu
                                    :key="secondMenu.id"
                                    v-if="secondMenu.menuVoArrayList.length > 0"
                                    :index="
                                        secondMenu.url
                                            ? secondMenu.url
                                            : secondMenu.id.toString()
                                    "
                                    class="secondMenu"
                                    :class="
                                        secondMenu.menuVoArrayList.length > 0
                                            ? 'is-Active'
                                            : 'none-Active'
                                    "
                                >
                                    <template slot="title">
                                        <span class="secondSpan">{{
                                            secondMenu.title
                                        }}</span>
                                    </template>
                                    <el-menu-item
                                        v-for="thirdMenu in secondMenu.menuVoArrayList"
                                        :key="thirdMenu.id"
                                        :index="`${thirdMenu.id}`"
                                        :route="{ name: thirdMenu.url }"
                                        v-if="thirdMenu.id != '65'"
                                    >
                                        <template>
                                            {{ thirdMenu.title }}
                                        </template></el-menu-item
                                    >
                                </el-submenu>
                                <el-menu-item
                                    v-else
                                    :index="`${secondMenu.id}`"
                                    :route="{ name: secondMenu.url }"
                                    >{{ secondMenu.title }}</el-menu-item
                                >
                            </template>
                        </template>
                        <el-menu-item
                            v-else
                            :key="menu.id"
                            :index="`${menu.id}`"
                            :route="{ name: menu.url }"
                            >{{ menu.title }}</el-menu-item
                        >
                    </el-submenu>
                </el-menu>
            </el-scrollbar>
        </el-aside>
    </div>
</template>
<script>
@@ -71,167 +90,169 @@
import router from "@/router";
export default {
  data() {
    return {
      menuList: [],
      isActive:''
    };
  },
  created() {
    this.loadMenu();
  },
  watch: {
    $route(){
      this.handleSelect(this.$route.fullPath)
    }
  },
  methods: {
    handleSelect(path){
      this.isActive = path
    data() {
        return {
            menuList: [],
            isActive: ''
        };
    },
    loadMenu() {
      const userName = sessionStorage.getItem('name');
      users.getMenu({ name: userName })
          .then(res => {
            // console.log(res)
            // debugger
            this.menuList = res.menus;
            sessionStorage.setItem('user', JSON.stringify(res));
          })
          .catch(err => this.$message.error(err))
    created() {
        this.loadMenu();
    },
    toHome(){
      router.push("/home")
    }
  },
    watch: {
        $route() {
            this.handleSelect(this.$route.fullPath)
        }
    },
    methods: {
        handleSelect(path) {
            this.isActive = path
        },
        loadMenu() {
            const userName = sessionStorage.getItem('name');
            users.getMenu({ name: userName })
                .then(res => {
                    // console.log(res)
                    // debugger
                    this.menuList = res.menus;
                    sessionStorage.setItem('user', JSON.stringify(res));
                })
                .catch(err => this.$message.error(err))
        },
        toHome() {
            router.push("/home")
        }
    },
};
</script>
<style lang="scss" scpoed>
.icon-padding {
  padding-right: 10px;
  .icon-title{
    width: 36px;
    height: 36px;
  }
    padding-right: 10px;
    .icon-title {
        width: 36px;
        height: 36px;
    }
}
.smoke {
    padding: 5px;
}
.el-aside {
  background: #313350;
  color: #e9eef3;
  text-align: center;
  box-sizing: border-box;
  position: relative;
  //    固定标题
  .siderbar-title {
    position: fixed;
    background: #313350;
    color: #e9eef3;
    text-align: center;
    margin: 0;
    font-size: 26px;
    width: 200px;
    line-height: 66px;
    top: 0;
    left: 0;
    z-index: 999;
    cursor: pointer;
  }
  .el-scrollbar {
    height: calc(100vh - 66px);
    margin-top: 66px;
    box-sizing: border-box;
    .el-menu {
      background: linear-gradient(#313350, #0f2b56);
      border: 0;
      font-size: 16px;
      .is-opened{
        .fisrtSpan{
          color: #22d3eb;
        }
      }
      .firstMenu {
        background: #313350;
        text-align: left;
        //border-bottom:1px solid #ccc ;
        &:hover > .el-submenu__title {
          background-color: #092c4a;
        }
        &:hover .fisrtSpan {
          color: #22d3eb;
        }
        span,
        span {
          color: #e9eef3;
          font-size: 16px;
        }
        .el-menu{
          .is-active {
            background-color: #409EFF;
            color: #fff;
          }
          .is-Active{
            background-color: #092c4a;
            color: #fff;
          }
        }
        .el-menu-item {
          color: #e9eef3;
          background-color: #313350;
          font-size: 16px;
          // border-bottom: 0.5px solid #7c7979;
        }
        .el-menu-item:hover {
          background-color: #409EFF;
          color: #22d3eb;
        }
        .is-opened{
          .secondSpan{
            color: #22d3eb;
          }
        }
        .secondMenu{
          //border-bottom:1px solid #ccc ;
          .is-active {
            background-color: #409EFF;
            color: #22d3eb;
          }
        }
      }
      .secondMenu {
        &:hover > .el-submenu__title {
          background-color: #092c4a;
        }
          .secondSpan{
          }
        &:hover .secondSpan {
          color: #22d3eb;
        }
        .is-opened{
          .el-submenu__title{
            background-color: #fff;
          }
        }
        .is-active {
          background-color: #409EFF;
          color: #fff;
        }
      }
      .thirdMenu {
        &:hover > .el-submenu__title {
          background-color: #092c4a;
        }
        &:hover .thirdSpan {
          color: #22d3eb;
        }
      }
      .is-active {
        background-color: #092c4a;
      }
    position: relative;
    //    固定标题
    .siderbar-title {
        position: fixed;
        text-align: center;
        margin: 0;
        font-size: 26px;
        width: 200px;
        line-height: 66px;
        top: 0;
        left: 0;
        z-index: 999;
        cursor: pointer;
    }
    .el-scrollbar__wrap {
      overflow-x: hidden;
    .el-scrollbar {
        height: calc(100vh - 66px);
        margin-top: 66px;
        box-sizing: border-box;
        .el-menu {
            background: linear-gradient(#313350, #0f2b56);
            border: 0;
            font-size: 16px;
            .is-opened {
                .fisrtSpan {
                    color: #22d3eb;
                }
            }
            .firstMenu {
                background: #313350;
                text-align: left;
                //border-bottom:1px solid #ccc ;
                &:hover > .el-submenu__title {
                    background-color: #092c4a;
                }
                &:hover .fisrtSpan {
                    color: #22d3eb;
                }
                span,
                span {
                    color: #e9eef3;
                    font-size: 16px;
                }
                .el-menu {
                    .is-active {
                        background-color: #409eff;
                        color: #fff;
                    }
                    .is-Active {
                        background-color: #092c4a;
                        color: #fff;
                    }
                }
                .el-menu-item {
                    color: #e9eef3;
                    background-color: #313350;
                    font-size: 16px;
                    // border-bottom: 0.5px solid #7c7979;
                }
                .el-menu-item:hover {
                    background-color: #409eff;
                    color: #22d3eb;
                }
                .is-opened {
                    .secondSpan {
                        color: #22d3eb;
                    }
                }
                .secondMenu {
                    //border-bottom:1px solid #ccc ;
                    .is-active {
                        background-color: #409eff;
                        color: #22d3eb;
                    }
                }
            }
            .secondMenu {
                &:hover > .el-submenu__title {
                    background-color: #092c4a;
                }
                .secondSpan {
                }
                &:hover .secondSpan {
                    color: #22d3eb;
                }
                .is-opened {
                    .el-submenu__title {
                        background-color: #fff;
                    }
                }
                .is-active {
                    background-color: #409eff;
                    color: #fff;
                }
            }
            .thirdMenu {
                &:hover > .el-submenu__title {
                    background-color: #092c4a;
                }
                &:hover .thirdSpan {
                    color: #22d3eb;
                }
            }
            .is-active {
                background-color: #092c4a;
            }
        }
        .el-scrollbar__wrap {
            overflow-x: hidden;
        }
    }
  }
}
</style>
src/views/smoke/alarm/index.vue
New file
@@ -0,0 +1,13 @@
<template>
  <div>报警消息</div>
</template>
<script>
export default {
}
</script>
<style>
</style>
src/views/smoke/cockpit/index.vue
New file
@@ -0,0 +1,13 @@
<template>
  <div>油烟驾驶舱</div>
</template>
<script>
export default {
}
</script>
<style>
</style>
src/views/smoke/index.vue
New file
@@ -0,0 +1,3 @@
<template>
    <router-view></router-view>
</template>
src/views/smoke/judgment/index.vue
New file
@@ -0,0 +1,13 @@
<template>
  <div>预警研判</div>
</template>
<script>
export default {
}
</script>
<style>
</style>
src/views/smoke/realTime/index.vue
New file
@@ -0,0 +1,13 @@
<template>
  <div>实时管理</div>
</template>
<script>
export default {
}
</script>
<style>
</style>
src/views/smoke/report/index.vue
New file
@@ -0,0 +1,13 @@
<template>
  <div>统计报表</div>
</template>
<script>
export default {
}
</script>
<style>
</style>