Pārlūkot izejas kodu

Merge branch 'master' of http://47.111.81.118:3000/xf15575941817/admin-fiveFollowing

ming 3 gadi atpakaļ
vecāks
revīzija
c82c4749d4

+ 52 - 46
public/index.html

@@ -1,51 +1,57 @@
 <!DOCTYPE html>
 <html lang="en">
-  <head>
-    <meta charset="utf-8" />
-    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
-    <meta name="viewport" content="width=device-width,initial-scale=1.0" />
-    <link rel="icon" href="<%= BASE_URL %>favicon.ico" />
-    <title><%= htmlWebpackPlugin.options.title %></title>
-    <meta
-      content="vab,vab官网,后台管理框架,vue后台管理框架,vue-admin-beautiful,vue-admin-beautiful-pro,vue-admin-beautiful官网,vue-admin-beautiful文档,vue-element-admin,vue-element-admin官网,vue-element-admin文档,vue-admin,vue-admin官网,vue-admin文档"
-      name="keywords"
-    />
-    <meta
-      content="<%= VUE_APP_TITLE %>官网与文档基于vue-admin-beautiful-pro构建,简称vab(是一款超棒的vue+element中后台前端快速开发框架),QQ群972435319,作者:<%= VUE_APP_AUTHOR %>"
-      name="description"
-    />
-    <meta content="<%= VUE_APP_AUTHOR %>" name="author" />
-    <link href="<%= BASE_URL %>static/css/loading.css" rel="stylesheet" />
-    <script>
-      var _hmt = _hmt || [];
-      (function () {
-        var hm = document.createElement("script");
-        hm.src = "https://hm.baidu.com/hm.js?7174bade1219f9cc272e7978f9523fc8";
-        var s = document.getElementsByTagName("script")[0];
-        s.parentNode.insertBefore(hm, s);
-      })();
-    </script>
-  </head>
-  <body>
-    <noscript>
-      <strong>
-        We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work
+
+<head>
+  <meta charset="utf-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+  <meta name="viewport" content="width=device-width,initial-scale=1.0" />
+  <link rel="icon" href="<%= BASE_URL %>favicon.ico" />
+  <title>
+    <%= htmlWebpackPlugin.options.title %>
+  </title>
+  <meta
+    content="vab,vab官网,后台管理框架,vue后台管理框架,vue-admin-beautiful,vue-admin-beautiful-pro,vue-admin-beautiful官网,vue-admin-beautiful文档,vue-element-admin,vue-element-admin官网,vue-element-admin文档,vue-admin,vue-admin官网,vue-admin文档"
+    name="keywords" />
+  <meta
+    content="<%= VUE_APP_TITLE %>官网与文档基于vue-admin-beautiful-pro构建,简称vab(是一款超棒的vue+element中后台前端快速开发框架),QQ群972435319,作者:<%= VUE_APP_AUTHOR %>"
+    name="description" />
+  <meta content="<%= VUE_APP_AUTHOR %>" name="author" />
+  <link href="<%= BASE_URL %>static/css/loading.css" rel="stylesheet" />
+  <script>
+    var _hmt = _hmt || [];
+    (function () {
+      var hm = document.createElement("script");
+      hm.src = "https://hm.baidu.com/hm.js?7174bade1219f9cc272e7978f9523fc8";
+      var s = document.getElementsByTagName("script")[0];
+      s.parentNode.insertBefore(hm, s);
+    })();
+  </script>
+</head>
+
+<body>
+  <noscript>
+    <strong>
+      We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work
         properly without JavaScript enabled. Please enable it to continue.
-      </strong>
-    </noscript>
-    <div id="app">
-      <div class="first-loading-wrp">
-        <div class="loading-wrp">
-          <span class="dot dot-spin">
-            <i></i>
-            <i></i>
-            <i></i>
-            <i></i>
-          </span>
-        </div>
-        <h1><%= VUE_APP_TITLE %></h1>
+    </strong>
+  </noscript>
+  <div id="app">
+    <div class="first-loading-wrp">
+      <div class="loading-wrp">
+        <span class="dot dot-spin">
+          <i></i>
+          <i></i>
+          <i></i>
+          <i></i>
+        </span>
       </div>
+      <h1>
+        <%= VUE_APP_TITLE %>
+      </h1>
     </div>
-    <!-- built files will be auto injected -->
-  </body>
-</html>
+  </div>
+  <!-- built files will be auto injected -->
+  <script src="./static/config.js"></script>
+</body>
+
+</html>

+ 29 - 0
public/static/config.js

@@ -0,0 +1,29 @@
+// api 请求路径
+var PLATFROM_CONFIG = {};
+// PLATFROM_CONFIG.baseUrl = "http://172.16.120.229:8010/" //杨强本地
+// PLATFROM_CONFIG.baseUrl = "http://172.16.1.196:8010/"  //超博本地
+
+PLATFROM_CONFIG.baseUrl = "https://wx.ewoogi.com/api" //线上
+PLATFROM_CONFIG.fileUrl = "https://wx.ewoogi.com/file/" //xlsx文件访问路径
+
+// 本地json文件请求路径
+PLATFROM_CONFIG.Interface = "/vuefiv/InterfaceReturn.json"
+PLATFROM_CONFIG.ione = "/vuefiv/1.json"
+
+
+
+// 当前站点 siteId 信息存储
+// var PLATFROM_SITEID = {};
+// PLATFROM_SITEID.id = 0;
+
+
+//alarming WEBSOCKET
+// let userInfo = window.localStorage.getItem("key");
+// var PLATFROM_WEBSOCKET = {};
+// PLATFROM_WEBSOCKET.wsUrl = `ws://172.16.120.246:8081/uskyWS?${userInfo}`
+
+
+//iframe 请求路径
+//http://www.thingjs.com/s/ef7ee6a73896c01bda77e679?params=105b0f77fd24654d4eebc434e9 初始路径http://172.16.120.246:9000/
+// var PLATFROM_IFRAME = {};
+// PLATFROM_IFRAME.iframeUrl = `http://www.thingjs.com/s/ef7ee6a73896c01bda77e679?params=105b0f77fd24654d4eebc434e9`

+ 6 - 0
src/config/default/setting.config.js

@@ -1,6 +1,12 @@
 /**
  * @description 导出默认通用配置
  */
+// let baseURL = window.PLATFROM_CONFIG.baseUrl
+// baseURL
+// setTimeout(() => {
+//   console.log(process.env.NODE_ENV,(window))
+// }, 1000);
+
 const setting = {
   //开发以及部署时的URL,hash模式时在不确定二级目录名称的情况下建议使用""代表相对路径或者"/二级目录/",history模式默认使用"/"或者"/二级目录/"
   publicPath: '',

+ 15 - 0
src/icons/svgIcon/line.svg

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 23.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#007FFF;}
+</style>
+<rect x="6.5" y="6.39" class="st0" width="23" height="1"/>
+<rect x="12.46" y="4.55" class="st0" width="12.13" height="4.79"/>
+<rect x="0.5" y="15.39" class="st0" width="29" height="1"/>
+<rect x="12.46" y="13.55" class="st0" width="12.13" height="4.79"/>
+<rect x="6.5" y="24.39" class="st0" width="23" height="1"/>
+<rect x="12.46" y="22.55" class="st0" width="12.13" height="4.79"/>
+<rect x="6.5" y="6.6" class="st0" width="1.17" height="18.58"/>
+</svg>

+ 17 - 0
src/icons/svgIcon/transformer.svg

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 23.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 32 32" style="enable-background:new 0 0 32 32;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#008AFF;}
+	.st1{fill:#007AFF;}
+</style>
+<rect x="5" y="7" class="st0" width="7" height="1"/>
+<rect x="19" y="7" class="st0" width="7" height="1"/>
+<rect x="5" y="5" class="st0" width="7" height="1"/>
+<rect x="19" y="5" class="st0" width="7" height="1"/>
+<rect x="4" y="26" class="st0" width="23" height="1"/>
+<path class="st1" d="M4,9.5v15h23v-15H4z M19.82,14.93l-4.28,7.47c-0.09,0.15-0.26,0.04-0.24-0.15L16,17.6l-3.72,0.07
+	c-0.1,0-0.17-0.16-0.12-0.28l2.46-5.78c0.02-0.06,0.07-0.09,0.12-0.09h3.83c0.11,0,0.17,0.17,0.11,0.29l-1.38,2.82h2.41
+	C19.83,14.63,19.89,14.81,19.82,14.93z"/>
+</svg>

+ 235 - 236
src/router/index.js

@@ -2,25 +2,25 @@ import { createRouter, createWebHashHistory } from 'vue-router'
 import Layout from '@/layout'
 
 export const constantRoutes = [{
-        path: '/login',
-        component: () =>
-            import ('@/views/login'),
-        hidden: true,
-    },
-    {
-        path: '/403',
-        name: '403',
-        component: () =>
-            import ('@/views/403'),
-        hidden: true,
-    },
-    {
-        path: '/404',
-        name: '404',
-        component: () =>
-            import ('@/views/404'),
-        hidden: true,
-    },
+    path: '/login',
+    component: () =>
+        import('@/views/login'),
+    hidden: true,
+},
+{
+    path: '/403',
+    name: '403',
+    component: () =>
+        import('@/views/403'),
+    hidden: true,
+},
+{
+    path: '/404',
+    name: '404',
+    component: () =>
+        import('@/views/404'),
+    hidden: true,
+},
 ]
 export const asyncRoutes = [
 
@@ -55,16 +55,16 @@ export const asyncRoutes = [
         },
         component: Layout,
         children: [{
-                meta: {
-                    title: '告警管理',
-                    icon: 'alarmManage',
-                    affix: true,
-                },
-                path: 'index',
-                component: () =>
-                    import ('@/views/alarmManage/index'),
-
+            meta: {
+                title: '告警管理',
+                icon: 'alarmManage',
+                affix: true,
             },
+            path: 'index',
+            component: () =>
+                import('@/views/alarmManage/index'),
+
+        },
 
         ]
     },
@@ -83,7 +83,7 @@ export const asyncRoutes = [
             },
             path: '/siteManage',
             component: () =>
-                import ('@/views/siteManage/index'),
+                import('@/views/siteManage/index'),
             selectLeftMenu: '/alarmManage',
             hidden: true
         }]
@@ -99,27 +99,27 @@ export const asyncRoutes = [
         redirect: '/stationManage/index',
         component: Layout,
         children: [{
-                meta: {
-                    icon: 'stationManage',
-                    title: '站点列表',
-                    activeMenu: '/stationManage/index'
-                },
-                path: 'siteList',
-                component: () =>
-                    import ('@/views/stationManage/siteList.vue'),
-                hidden: true,
+            meta: {
+                icon: 'stationManage',
+                title: '站点列表',
+                activeMenu: '/stationManage/index'
+            },
+            path: 'siteList',
+            component: () =>
+                import('@/views/stationManage/siteList.vue'),
+            hidden: true,
+        },
+        {
+            meta: {
+                icon: 'stationManage',
+                title: '所有台区',
+                activeMenu: '/stationManage/index'
             },
-            {
-                meta: {
-                    icon: 'stationManage',
-                    title: '所有台区',
-                    activeMenu: '/stationManage/index'
-                },
-                path: 'index',
-                component: () =>
-                    import ('@/views/stationManage/index.vue'),
-                hidden: true,
-            }
+            path: 'index',
+            component: () =>
+                import('@/views/stationManage/index.vue'),
+            hidden: true,
+        }
         ]
     },
 
@@ -137,32 +137,32 @@ export const asyncRoutes = [
         component: Layout,
         redirect: '/deviceManage/powerEquip',
         children: [{
-                meta: { icon: 'powerEquip', title: '设备管理', },
-                path: 'powerEquip',
-                component: () =>
-                    import ('@/views/deviceManage/powerEquip/index.vue'),
-            },
-            // {
-            //   title: 'index-layout.menu.deviceManage.videoEquip',
-            //   path: 'videoEquip',
-            //   component: () => import('@/views/deviceManage/videoEquip/index.vue'),
-            // },
-            // {
-            //   title: 'index-layout.menu.deviceManage.communicateEquip',
-            //   path: 'communicateEquip',
-            //   component: () => import('@/views/deviceManage/communicateEquip/index.vue'),
-            // },
-            // {
-            //   title: 'index-layout.menu.deviceManage.channelList',
-            //   path: 'channelList',
-            //   component: () => import('@/views/deviceManage/channelList/index.vue'),
-            // },
-            {
-                meta: { icon: 'attribTemplate', title: '属性模板', },
-                path: 'attribTemplate',
-                component: () =>
-                    import ('@/views/deviceManage/attribTemplate/index.vue'),
-            }
+            meta: { icon: 'powerEquip', title: '设备管理', },
+            path: 'powerEquip',
+            component: () =>
+                import('@/views/deviceManage/powerEquip/index.vue'),
+        },
+        // {
+        //   title: 'index-layout.menu.deviceManage.videoEquip',
+        //   path: 'videoEquip',
+        //   component: () => import('@/views/deviceManage/videoEquip/index.vue'),
+        // },
+        // {
+        //   title: 'index-layout.menu.deviceManage.communicateEquip',
+        //   path: 'communicateEquip',
+        //   component: () => import('@/views/deviceManage/communicateEquip/index.vue'),
+        // },
+        // {
+        //   title: 'index-layout.menu.deviceManage.channelList',
+        //   path: 'channelList',
+        //   component: () => import('@/views/deviceManage/channelList/index.vue'),
+        // },
+        {
+            meta: { icon: 'attribTemplate', title: '属性模板', },
+            path: 'attribTemplate',
+            component: () =>
+                import('@/views/deviceManage/attribTemplate/index.vue'),
+        }
         ]
     },
 
@@ -181,45 +181,45 @@ export const asyncRoutes = [
         component: Layout,
         redirect: '/dataManage/sameAnalysis',
         children: [{
-                meta: { icon: 'sameAnalysis', title: '同比分析报表', },
-                path: 'sameAnalysis',
-                component: () =>
-                    import ('@/views/dataManage/sameAnalysis/index.vue'),
-            },
-            {
-                meta: { icon: 'chainAnalysis', title: '环比分析报表', },
-                path: 'chainAnalysis',
-                component: () =>
-                    import ('@/views/dataManage/chainAnalysis/index.vue'),
-            },
-            {
-                meta: { icon: 'handOpera', title: '手动抄表', },
-                title: 'index-layout.menu.dataManage.handOpera',
-                path: 'handOpera',
-                component: () =>
-                    import ('@/views/dataManage/handOpera/index.vue'),
-            },
-            {
-                meta: { icon: 'energyReport', title: '用能月报', },
-                title: 'index-layout.menu.dataManage.energyReport',
-                path: 'energyReport',
-                component: () =>
-                    import ('@/views/dataManage/energyReport/index.vue'),
-            },
-            {
-                meta: { icon: 'demandAnalysis', title: '需量分析', },
-                title: 'index-layout.menu.dataManage.demandAnalysis',
-                path: 'demandAnalysis',
-                component: () =>
-                    import ('@/views/dataManage/demandAnalysis/index.vue'),
-            },
-            {
-                meta: { icon: 'consumConfig', title: '能耗分析配置', },
-                title: 'index-layout.menu.dataManage.consumConfig',
-                path: 'consumConfig',
-                component: () =>
-                    import ('@/views/dataManage/consumConfig/index.vue'),
-            }
+            meta: { icon: 'sameAnalysis', title: '同比分析报表', },
+            path: 'sameAnalysis',
+            component: () =>
+                import('@/views/dataManage/sameAnalysis/index.vue'),
+        },
+        {
+            meta: { icon: 'chainAnalysis', title: '环比分析报表', },
+            path: 'chainAnalysis',
+            component: () =>
+                import('@/views/dataManage/chainAnalysis/index.vue'),
+        },
+        {
+            meta: { icon: 'handOpera', title: '手动抄表', },
+            title: 'index-layout.menu.dataManage.handOpera',
+            path: 'handOpera',
+            component: () =>
+                import('@/views/dataManage/handOpera/index.vue'),
+        },
+        {
+            meta: { icon: 'energyReport', title: '用能月报', },
+            title: 'index-layout.menu.dataManage.energyReport',
+            path: 'energyReport',
+            component: () =>
+                import('@/views/dataManage/energyReport/index.vue'),
+        },
+        {
+            meta: { icon: 'demandAnalysis', title: '需量分析', },
+            title: 'index-layout.menu.dataManage.demandAnalysis',
+            path: 'demandAnalysis',
+            component: () =>
+                import('@/views/dataManage/demandAnalysis/index.vue'),
+        },
+        {
+            meta: { icon: 'consumConfig', title: '能耗分析配置', },
+            title: 'index-layout.menu.dataManage.consumConfig',
+            path: 'consumConfig',
+            component: () =>
+                import('@/views/dataManage/consumConfig/index.vue'),
+        }
         ]
     },
 
@@ -236,29 +236,29 @@ export const asyncRoutes = [
         component: Layout,
         redirect: '/powerQuality/harmonicReport',
         children: [{
-                meta: { icon: 'harmonicReport', title: '谐波报表', },
-                path: 'harmonicReport',
-                component: () =>
-                    import ('@/views/powerQuality/harmonicReport/index.vue'),
-            },
-            {
-                meta: { icon: 'realTimeMonitoring', title: '实时监测', },
-                path: 'realTimeMonitoring',
-                component: () =>
-                    import ('@/views/powerQuality/realTimeMonitoring/index.vue'),
-            },
-            {
-                meta: { icon: 'asseReport', title: '评估报告', },
-                path: 'asseReport',
-                component: () =>
-                    import ('@/views/powerQuality/asseReport/index.vue'),
-            },
-            {
-                meta: { icon: 'unbalanceAnalysis', title: '三相不平衡分析', },
-                path: 'unbalanceAnalysis',
-                component: () =>
-                    import ('@/views/powerQuality/unbalanceAnalysis/index.vue'),
-            },
+            meta: { icon: 'harmonicReport', title: '谐波报表', },
+            path: 'harmonicReport',
+            component: () =>
+                import('@/views/powerQuality/harmonicReport/index.vue'),
+        },
+        {
+            meta: { icon: 'realTimeMonitoring', title: '实时监测', },
+            path: 'realTimeMonitoring',
+            component: () =>
+                import('@/views/powerQuality/realTimeMonitoring/index.vue'),
+        },
+        {
+            meta: { icon: 'asseReport', title: '评估报告', },
+            path: 'asseReport',
+            component: () =>
+                import('@/views/powerQuality/asseReport/index.vue'),
+        },
+        {
+            meta: { icon: 'unbalanceAnalysis', title: '三相不平衡分析', },
+            path: 'unbalanceAnalysis',
+            component: () =>
+                import('@/views/powerQuality/unbalanceAnalysis/index.vue'),
+        },
 
         ]
     },
@@ -273,19 +273,19 @@ export const asyncRoutes = [
         meta: { title: '月度报告', icon: 'monthReport', },
         component: Layout,
         children: [{
-                meta: { title: '月度报告', icon: 'monthReport', },
-                path: '/monthReport',
-                component: () =>
-                    import ('@/views/monthReport/index'),
-                hidden: true
-            },
-            {
-                meta: { title: '月报模板', icon: 'reportModel', },
-                path: '/reportModel',
-                component: () =>
-                    import ('@/views/monthReport/reportModel'),
-                hidden: true
-            }
+            meta: { title: '月度报告', icon: 'monthReport', },
+            path: '/monthReport',
+            component: () =>
+                import('@/views/monthReport/index'),
+            hidden: true
+        },
+        {
+            meta: { title: '月报模板', icon: 'reportModel', },
+            path: '/reportModel',
+            component: () =>
+                import('@/views/monthReport/reportModel'),
+            hidden: true
+        }
         ]
     },
 
@@ -299,7 +299,7 @@ export const asyncRoutes = [
             meta: { title: '计划停电', icon: 'planOutage', },
             path: '/planOutage',
             component: () =>
-                import ('@/views/planOutage/index'),
+                import('@/views/planOutage/index'),
             hidden: true
         }],
     },
@@ -319,33 +319,33 @@ export const asyncRoutes = [
         redirect: '/patrolManage/patrolPlan',
         name: 'patrolManage',
         children: [{
-                meta: { title: '巡检计划' },
-                path: 'patrolPlan',
-                name: 'patrolPlan',
-                component: () =>
-                    import ('@/views/patrolManage/patrolPlan/index.vue'),
-            },
-            {
-                meta: { title: '巡检记录' },
-                path: 'patrolRecord',
-                name: 'patrolRecord',
-                component: () =>
-                    import ('@/views/patrolManage/patrolRecord/index.vue'),
-            },
-            {
-                meta: { title: '巡检内容' },
-                path: 'patrolContent',
-                name: 'patrolContent',
-                component: () =>
-                    import ('@/views/patrolManage/patrolContent/index.vue'),
-            },
-            {
-                meta: { title: '检查条目' },
-                path: 'checkEntries',
-                name: 'checkEntries',
-                component: () =>
-                    import ('@/views/patrolManage/checkEntries/index.vue'),
-            },
+            meta: { title: '巡检计划', icon: 'patrolPlan' },
+            path: 'patrolPlan',
+            name: 'patrolPlan',
+            component: () =>
+                import('@/views/patrolManage/patrolPlan/index.vue'),
+        },
+        {
+            meta: { title: '巡检记录', icon: 'patrolRecord' },
+            path: 'patrolRecord',
+            name: 'patrolRecord',
+            component: () =>
+                import('@/views/patrolManage/patrolRecord/index.vue'),
+        },
+        {
+            meta: { title: '巡检内容', icon: '巡检内容' },
+            path: 'patrolContent',
+            name: 'patrolContent',
+            component: () =>
+                import('@/views/patrolManage/patrolContent/index.vue'),
+        },
+        {
+            meta: { title: '检查条目', icon: '检查条目' },
+            path: 'checkEntries',
+            name: 'checkEntries',
+            component: () =>
+                import('@/views/patrolManage/checkEntries/index.vue'),
+        },
         ]
     },
 
@@ -365,35 +365,35 @@ export const asyncRoutes = [
         redirect: '/operManage/siteAchives',
         name: 'operManage',
         children: [{
-                meta: { title: '现场档案' },
-                path: 'siteAchives',
-                component: () =>
-                    import ('@/views/operManage/siteAchives/index.vue'),
-            },
-            {
-                meta: { title: '缺陷管理' },
-                path: 'defectManage',
-                component: () =>
-                    import ('@/views/operManage/defectManage/index.vue'),
-            },
-            {
-                meta: { title: '工单管理' },
-                path: 'workManage',
-                component: () =>
-                    import ('@/views/operManage/workManage/index.vue'),
-            },
-            {
-                meta: { title: '运维统计' },
-                path: 'operStatistics',
-                component: () =>
-                    import ('@/views/operManage/operStatistics/index.vue'),
-            },
-            {
-                meta: { title: '工作量统计' },
-                path: 'workStatistics',
-                component: () =>
-                    import ('@/views/operManage/workStatistics/index.vue'),
-            },
+            meta: { title: '现场档案', icon: 'siteAchives', },
+            path: 'siteAchives',
+            component: () =>
+                import('@/views/operManage/siteAchives/index.vue'),
+        },
+        {
+            meta: { title: '缺陷管理', icon: 'defectManage', },
+            path: 'defectManage',
+            component: () =>
+                import('@/views/operManage/defectManage/index.vue'),
+        },
+        {
+            meta: { title: '工单管理', icon: 'workManage', },
+            path: 'workManage',
+            component: () =>
+                import('@/views/operManage/workManage/index.vue'),
+        },
+        {
+            meta: { title: '运维统计', icon: 'operStatistics', },
+            path: 'operStatistics',
+            component: () =>
+                import('@/views/operManage/operStatistics/index.vue'),
+        },
+        {
+            meta: { title: '工作量统计', icon: 'workStatistics', },
+            path: 'workStatistics',
+            component: () =>
+                import('@/views/operManage/workStatistics/index.vue'),
+        },
 
         ]
     },
@@ -409,23 +409,22 @@ export const asyncRoutes = [
         component: Layout,
         redirect: '/systemManage/userManage',
         children: [{
-                meta: { title: '用户管理' },
-                path: 'userManage',
-                component: () =>
-                    import ('@/views/systemManage/userManage/index.vue'),
-            },
-            {
-                meta: { title: '权限管理' },
-                path: 'rolePermission',
-                component: () =>
-                    import ('@/views/systemManage/rolePermission/index.vue'),
-            },
+            meta: { title: '用户管理', icon: 'userManage', },
+            path: 'userManage',
+            component: () =>
+                import('@/views/systemManage/userManage/index.vue'),
+        },
+        {
+            meta: { title: '权限管理', icon: 'rolePermission', },
+            path: 'rolePermission',
+            component: () =>
+                import('@/views/systemManage/rolePermission/index.vue'),
+        },
         ]
     },
 
 
 
-
     {
         path: '/vab',
         component: Layout,
@@ -436,25 +435,25 @@ export const asyncRoutes = [
             icon: 'apps-line',
         },
         children: [{
-                path: 'table',
-                name: 'Table',
-                component: () =>
-                    import ('@/views/vab/table'),
-                meta: {
-                    title: '表格',
-                    icon: 'table-2',
-                },
+            path: 'table',
+            name: 'Table',
+            component: () =>
+                import('@/views/vab/table'),
+            meta: {
+                title: '表格',
+                icon: 'table-2',
             },
-            {
-                path: 'icon',
-                name: 'Icon',
-                component: () =>
-                    import ('@/views/vab/icon'),
-                meta: {
-                    title: '图标',
-                    icon: 'remixicon-line',
-                },
+        },
+        {
+            path: 'icon',
+            name: 'Icon',
+            component: () =>
+                import('@/views/vab/icon'),
+            meta: {
+                title: '图标',
+                icon: 'remixicon-line',
             },
+        },
         ],
     },
 

+ 21 - 7
src/views/monthReport/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="monthReport">
-    <div class="monthContent1">
+    <div class="monthContent1" v-if="modleBool">
       <div style="display: flex">
         <el-input
           placeholder="输入站点名称或关键字"
@@ -23,7 +23,7 @@
         />
       </div>
     </div>
-    <div class="monthContent2">
+    <div class="monthContent2" v-if="modleBool">
       <el-tabs
         v-model="activeName"
         type="card"
@@ -35,21 +35,28 @@
           <baseic-Table></baseic-Table>
         </el-tab-pane>
         <el-tab-pane label="月报模板" name="monthModel">
-          <deviation-Table></deviation-Table>
+          <deviation-Table @modle="modleAll"></deviation-Table>
         </el-tab-pane>
       </el-tabs>
     </div>
+
+    <report-Model
+      v-if="!modleBool"
+      style="width: 100%"
+      @modle="modleAll"
+    ></report-Model>
   </div>
 </template>
 <script>
 import { useStore } from 'vuex'
 import { defineComponent, ref } from 'vue'
-import baseicTable from "./tables/basicTable.vue";
-import deviationTable from "./tables/deviationTable.vue";
+import baseicTable from './tables/basicTable.vue'
+import deviationTable from './tables/deviationTable.vue'
+import reportModel from './reportModel.vue'
 
 export default defineComponent({
   name: 'monthReport',
-  components: { baseicTable, deviationTable },
+  components: { baseicTable, deviationTable, reportModel },
   props: {},
   setup() {
     const store = useStore()
@@ -64,9 +71,16 @@ export default defineComponent({
       return 'background:#FAFAFA !important;color: black;'
     }
 
+    const modleBool = ref(true)
+    const modleAll = (value) => {
+      modleBool.value = value.modleBool
+    }
+
     return {
       headClass,
-      filterText:ref(""),
+      modleAll,
+      modleBool,
+      filterText: ref(''),
       activeName: ref('monthList'),
       handleClick, //tabs切换事件
       data: [

+ 455 - 0
src/views/monthReport/reportModel.vue

@@ -0,0 +1,455 @@
+<template>
+  <div class="powerEquip">
+    <div class="model">
+      <div class="modelHeader" ref="modelHeader">
+        <div class="headerTitle">
+          <span class="span">模板编辑</span>
+          <el-button class="goBack" @click="goBack">返回</el-button>
+        </div>
+        <div class="headerContent">
+          <span style="margin-left: 10px">
+            <span style="color: red">*</span>
+            模板名称:
+          </span>
+          <el-input class="headerInput" v-model="modelName" placeholder="" />
+          <span style="margin-right: 10px">报告生成日期 :</span>
+          <el-radio v-model="headerRadio" label="1">
+            同电费结算日
+            <span>
+              <el-tooltip
+                class="item"
+                effect="dark"
+                content="电费结算日 : 未配置"
+                placement="top"
+              >
+                <i class="el-icon-info"></i>
+              </el-tooltip>
+            </span>
+          </el-radio>
+          <el-radio v-model="headerRadio" label="2">自定义</el-radio>
+          <div class="headerSelect" v-if="headerRadio == 2">
+            <span>每月</span>
+            <el-select
+              v-model="headerValue"
+              placeholder="Select"
+              style="width: 70px"
+            >
+              <el-option
+                v-for="item in headerOptions"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              ></el-option>
+            </el-select>
+          </div>
+          <div style="display: initial">
+            <el-checkbox
+              v-model="checked1"
+              label="是否自动发送邮件"
+            ></el-checkbox>
+            <el-checkbox v-model="checked2" label="模板是否生效"></el-checkbox>
+          </div>
+          <div class="headerButton">
+            <el-button type="success">预览</el-button>
+            <el-button type="primary">保存</el-button>
+          </div>
+        </div>
+      </div>
+
+      <div class="modelContent">
+        <div class="contentLeft">
+          <div class="detail-top">报告内容</div>
+          <el-tree
+            :data="data"
+            show-checkbox
+            node-key="id"
+            :default-expanded-keys="[2, 3]"
+            :default-checked-keys="[5]"
+            :props="defaultProps"
+          />
+        </div>
+        <div class="contentCenter"></div>
+        <div class="contentRight">
+          <div class="setting-header">安全用电</div>
+          <div class="setting-borderError">
+            <div class="setting-title">
+              <svg-icon class="setting-icon" iconClass="transformer"></svg-icon>
+              <span style="margin-left: 25px">变压器分析</span>
+              <a class="setting-textBtn">
+                添加 变压器设备(多选)
+                <span class="setting-required">*</span>
+              </a>
+            </div>
+            <div class="setting-error">请至少选择一个 变压器设备</div>
+            <div class="setting-formItem" style="padding: 10px 0px 0px 22px">
+              <span class="setting-title">功率因数:</span>
+              <div class="ant-radio-group ant-radio-group-outline">
+                <el-radio v-model="transformer" label="1">原始数据</el-radio>
+                <el-radio v-model="transformer" label="2">
+                  平均功率因数
+                </el-radio>
+              </div>
+            </div>
+          </div>
+          <div class="setting-borderError">
+            <div class="setting-title">
+              <svg-icon class="setting-icon" iconClass="line"></svg-icon>
+              <span style="margin-left: 25px">线路分析</span>
+              <a class="setting-textBtn">
+                添加 线路设备(多选)
+                <span class="setting-required">*</span>
+              </a>
+            </div>
+            <div class="setting-error">请至少选择一个 线路设备</div>
+            <div class="setting-formItem" style="padding: 10px 0px 0px 22px">
+              <span class="setting-title">功率因数:</span>
+              <div class="ant-radio-group ant-radio-group-outline">
+                <el-radio v-model="line" label="1">原始数据</el-radio>
+                <el-radio v-model="line" label="2">平均功率因数</el-radio>
+              </div>
+            </div>
+          </div>
+
+          <div class="setting-header">经济用电</div>
+          <div class="setting-card">
+            <div class="setting-formItem">
+              <span class="setting-title">优化建议:</span>
+              <div class="ant-radio-group ant-radio-group-outline">
+                <el-radio v-model="optimization" label="1">原始数据</el-radio>
+                <el-radio v-model="optimization" label="2">
+                  平均功率因数
+                </el-radio>
+              </div>
+            </div>
+          </div>
+
+          <div class="setting-header">设备状态分析</div>
+          <div class="setting-card">
+            <div style="display: flex">
+              <div style="line-height: 30px">重要缺陷设备列表:</div>
+              <div class="ant-input-group-addon">最多显示</div>
+              <el-input-number
+                v-model="defects"
+                :min="0"
+                :max="10"
+                controls-position="right"
+                @change="handleChange"
+              />
+              <div class="ant-input-group-addon">个</div>
+            </div>
+          </div>
+
+          <div class="setting-header">告警分析</div>
+          <div class="setting-card">
+            <div style="display: flex">
+              <div style="line-height: 30px">重要告警列表:</div>
+              <div class="ant-input-group-addon">最多显示</div>
+              <el-input-number
+                v-model="alarm"
+                :min="0"
+                :max="10"
+                controls-position="right"
+                @change="handleChange"
+              />
+              <div class="ant-input-group-addon">个</div>
+            </div>
+            <div style="display: flex; margin-top: 10px">
+              <div style="line-height: 30px">告警最多的设备列表:</div>
+              <div class="ant-input-group-addon">最多显示</div>
+              <el-input-number
+                v-model="most"
+                :min="0"
+                :max="10"
+                controls-position="right"
+                @change="handleChange"
+              />
+              <div class="ant-input-group-addon">个</div>
+            </div>
+          </div>
+
+          <div class="setting-header">更多设置</div>
+          <div class="setting-card">
+            <div>
+              <span>报告名称:</span>
+              <el-select v-model="reportName" placeholder="" class="select">
+                <el-option
+                  v-for="item in reportOption"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                ></el-option>
+              </el-select>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import { defineComponent, ref } from 'vue'
+
+export default defineComponent({
+  name: 'powerEquip',
+  components: {},
+  props: {},
+  setup(props, { emit }) {
+    props
+
+    const goBack = () => {
+      const params = {
+        modleBool: true,
+      }
+      emit('modle', params)
+    }
+
+    return {
+      goBack,
+      headerRadio: ref('1'),
+      modelName: ref(''),
+      headerOptions: ref([
+        {
+          value: 1,
+          label: '1日',
+        },
+        {
+          value: 2,
+          label: '2日',
+        },
+        {
+          value: 3,
+          label: '3日',
+        },
+        {
+          value: 4,
+          label: '4日',
+        },
+        {
+          value: 5,
+          label: '5日',
+        },
+      ]),
+      headerValue: ref(1),
+      checked1: ref(true),
+      checked2: ref(true),
+      data: ref([
+        {
+          id: 1,
+          label: 'Level one 1',
+          children: [
+            {
+              id: 4,
+              label: 'Level two 1-1',
+              children: [
+                {
+                  id: 9,
+                  label: 'Level three 1-1-1',
+                },
+                {
+                  id: 10,
+                  label: 'Level three 1-1-2',
+                },
+              ],
+            },
+          ],
+        },
+        {
+          id: 2,
+          label: 'Level one 2',
+          children: [
+            {
+              id: 5,
+              label: 'Level two 2-1',
+            },
+            {
+              id: 6,
+              label: 'Level two 2-2',
+            },
+          ],
+        },
+        {
+          id: 3,
+          label: 'Level one 3',
+          children: [
+            {
+              id: 7,
+              label: 'Level two 3-1',
+            },
+            {
+              id: 8,
+              label: 'Level two 3-2',
+            },
+          ],
+        },
+      ]),
+      defaultProps: {
+        children: 'children',
+        label: 'label',
+      },
+      transformer: ref('1'),
+      line: ref('1'),
+      optimization: ref('1'),
+      defects: ref(0),
+      alarm: ref(0),
+      most: ref(0),
+      reportOption: [
+        {
+          value: 1,
+          label: '站点名称+模拟名称',
+        },
+        {
+          value: 2,
+          label: '模板名称',
+        },
+        {
+          value: 3,
+          label: '自定义',
+        },
+      ],
+      reportName: 1,
+    }
+  },
+})
+</script>
+
+<style lang="scss">
+.powerEquip {
+  height: calc(100vh - 130px);
+  min-width: 810px;
+  .model {
+    background-color: #fff;
+    height: 100%;
+    padding: 15px;
+    .modelHeader {
+      height: 140px;
+      overflow-y: auto;
+      border-bottom: 4px solid #e8e8e8;
+      .headerTitle {
+        .span {
+          border-left: 3px red solid;
+          padding-left: 5px;
+          margin-right: 15px;
+          font-size: 17px;
+        }
+        .goBack {
+          min-height: 24px;
+          padding: 0px 5px;
+        }
+      }
+
+      .headerContent {
+        padding: 8px 10px;
+        margin-top: 10px;
+        .headerInput {
+          width: 220px;
+          flex-wrap: nowrap;
+          margin-right: 30px;
+        }
+        .headerSelect {
+          display: initial;
+          margin-right: 15px;
+        }
+        .headerButton {
+          margin-top: 15px;
+        }
+      }
+    }
+    .modelHeader::-webkit-scrollbar {
+      display: none;
+    }
+
+    .modelContent {
+      height: calc(100vh - 285px);
+      display: flex;
+      .contentLeft {
+        padding-top: 5px;
+        width: 30%;
+        .detail-top {
+          text-align: center;
+          color: #000;
+          height: 44px;
+          font-size: 16px;
+          line-height: 44px;
+          border-bottom: 1px solid #e8e8e8;
+          position: relative;
+        }
+      }
+      .contentCenter {
+        width: 20px;
+        background-color: #f0f2f5;
+      }
+      .contentRight {
+        padding-left: 15px;
+        padding-top: 5px;
+        width: 70%;
+        overflow-y: auto;
+        .setting-header {
+          height: 44px;
+          line-height: 44px;
+          color: #000;
+          font-size: 16px;
+          font-weight: 500;
+          position: relative;
+        }
+        .setting-borderError {
+          border: 1px solid #f5222d;
+          margin-bottom: 8px;
+          padding: 8px 12px;
+          width: 100%;
+          font-size: 14px;
+          .setting-title {
+            color: #000;
+            position: relative;
+            .setting-icon {
+              font-size: 22px;
+              color: #1890ff;
+              position: absolute;
+            }
+            .setting-textBtn {
+              color: #1890ff;
+              margin-left: 12px;
+              text-decoration: underline;
+              .setting-required {
+                color: #f5222d;
+                margin-left: 2px;
+              }
+            }
+          }
+          .setting-error {
+            color: #f5222d;
+            margin: 10px 0 0 20px;
+          }
+          .setting-formItem {
+            display: flex;
+            .setting-title {
+              height: 32px;
+              line-height: 32px;
+              display: block;
+            }
+          }
+        }
+        .setting-card {
+          padding: 0px 12px;
+          width: 100%;
+          font-size: 14px;
+          .ant-input-group-addon {
+            line-height: 30px;
+            padding: 0 11px;
+            border: 1px solid #d9d9d9;
+            background-color: #fafafa;
+            text-align: center;
+            display: inline-table;
+          }
+          .select {
+            width: 260px;
+          }
+        }
+      }
+
+      .contentRight::-webkit-scrollbar {
+        display: none;
+      }
+    }
+  }
+}
+</style>

+ 13 - 2
src/views/monthReport/tables/deviationTable.vue

@@ -1,7 +1,9 @@
 <template>
   <div>
     <div class="basicHeader">
-      <el-button icon="el-icon-download" type="primary">新建模板</el-button>
+      <el-button icon="el-icon-download" type="primary" @click="addModle">
+        新建模板
+      </el-button>
     </div>
     <div style="margin: 0 15px">
       <el-table
@@ -60,11 +62,19 @@ export default defineComponent({
   name: 'deviationTable',
   components: {},
   props: {},
-  setup() {
+  setup(props, { emit }) {
+    props
     const Update = (row) => {
       console.log('', row)
     }
 
+    const addModle = () => {
+      const params = {
+        modleBool: false,
+      }
+      emit('modle', params)
+    }
+
     // 表头样式设置
     const headClass = () => {
       return 'background:#FAFAFA !important;color: black;'
@@ -73,6 +83,7 @@ export default defineComponent({
     return {
       headClass,
       Update, //修改偏差配置事件
+      addModle, //新增模板事件
       tableData: [
         {
           reportName: '05-01',

+ 73 - 2
src/views/patrolManage/patrolPlan/index.vue

@@ -1,5 +1,76 @@
 <template>
-  <div style="padding:30px;">
-   巡检计划
+  <div class="patolPlan">
+    <div class="patolContent">
+      <div class="patolDivOne">
+        <el-button
+          style="float: right; margin-right: 15px"
+          icon="el-icon-plus"
+          type="success"
+          @click="addPlan()"
+        >
+          新建巡检计划
+        </el-button>
+        <el-radio-group
+          v-model="listTabPosition"
+          @change="listTabsChange(listTabPosition)"
+          style="display: flex"
+        >
+          <el-radio-button label="inspePlan">巡检计划</el-radio-button>
+          <el-radio-button label="inspeCalendar">计划日历</el-radio-button>
+          <el-radio-button label="inspeSite">站点巡检日历</el-radio-button>
+        </el-radio-group>
+      </div>
+      <div class="patolDivTwo">
+        <inspe-Plan v-if="inspeBoll"></inspe-Plan>
+      </div>
+    </div>
   </div>
 </template>
+<script>
+import { defineComponent, ref } from 'vue'
+import inspePlan from './tables/inspePlan.vue'
+
+export default defineComponent({
+  name: 'patolPlan',
+  components: { inspePlan },
+  props: {},
+  setup() {
+    const inspeBoll = ref(true)
+
+    const listTabsChange = (value) => {
+      value == 'inspePlan'
+        ? (inspeBoll.value = true)
+        : (inspeBoll.value = false)
+
+      console.log(value)
+    }
+
+    const addPlan = () => {
+      console.log()
+    }
+
+    return {
+      addPlan,
+      inspeBoll,
+      listTabPosition: ref('inspePlan'),
+      listTabsChange,
+    }
+  },
+})
+</script>
+
+<style lang="scss" scoped>
+.patolPlan {
+  display: flex;
+  height: calc(100vh - 130px);
+  .patolContent {
+    background-color: #fff;
+    width: 100%;
+    min-width: 845px;
+    height: 100%;
+    .patolDivOne {
+      margin: 15px 0px 15px 15px;
+    }
+  }
+}
+</style>

+ 144 - 0
src/views/patrolManage/patrolPlan/tables/inspePlan.vue

@@ -0,0 +1,144 @@
+<template>
+  <div style="margin: 0px 15px">
+    <div class="patolDivTwo">
+      <el-input
+        class="inspePlanInput"
+        v-model="inspePlanInput"
+        placeholder="按名称或编号搜索"
+      />
+      <span class="inspePlanSpan">状态:</span>
+      <div>
+        <el-radio v-model="radio" label="1">所有</el-radio>
+        <el-radio v-model="radio" label="2">进行中</el-radio>
+        <el-radio v-model="radio" label="3">已完成</el-radio>
+      </div>
+    </div>
+    <div>
+      <el-table
+        :data="tableData"
+        border
+        stripe
+        :header-cell-style="headClass"
+        style="max-height: 42.5rem"
+      >
+        <el-table-column
+          prop="reportName"
+          label="计划编号"
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="reportDate"
+          label="计划名称"
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="proposal"
+          label="周期"
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="mailbox"
+          label="巡检周期"
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="state"
+          label="巡检班组"
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="state"
+          label="已执行次数"
+          width=""
+        ></el-table-column>
+        <el-table-column prop="state" label="状态" width=""></el-table-column>
+        <el-table-column label="操作" width="100">
+          <template #default="scope">
+            <el-button
+              type="text"
+              size="small"
+              style="color: #409eff"
+              @click.prevent="Update(scope.row)"
+            >
+              编辑
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="listPagination">
+        <el-pagination
+          v-model:currentPage="currentPage"
+          :page-sizes="[15, 20, 25, 30]"
+          :page-size="15"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="tableData.length"
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          background
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import { defineComponent, ref } from 'vue'
+
+export default defineComponent({
+  name: 'patolPlan',
+  components: {},
+  props: {},
+  setup() {
+    const Update = (row) => {
+      console.log('', row)
+    }
+    // 表头样式设置
+    const headClass = () => {
+      return 'background:#FAFAFA !important;color: black;'
+    }
+
+    const handleSizeChange = (val) => {
+      console.log(`${val} items per page`)
+    }
+    const handleCurrentChange = (val) => {
+      console.log(`current page: ${val}`)
+    }
+    return {
+      inspePlanInput: ref(''),
+      currentPage: ref(1),
+      handleSizeChange,
+      handleCurrentChange,
+      headClass,
+      Update, //修改事件
+      input: ref(''),
+      radio: ref('1'),
+      tableData: [
+        {
+          reportName: '05-01',
+          reportDate: 'Tom',
+          proposal: '',
+          mailbox: '',
+          state: '',
+        },
+      ],
+    }
+  },
+})
+</script>
+
+<style lang="scss" scoped>
+.patolDivTwo {
+  display: flex;
+  margin-bottom: 15px;
+  .inspePlanInput {
+    width: 250px;
+  }
+  .inspePlanSpan {
+    margin-left: 12px;
+    line-height: 32px;
+  }
+  .listPagination {
+    float: right;
+    margin-top: 10px;
+  }
+}
+</style>

+ 16 - 0
src/views/patrolManage/patrolRecord/dialog/select.vue

@@ -0,0 +1,16 @@
+<template>
+  <div style="margin: 0px 15px"></div>
+</template>
+<script>
+import { defineComponent, ref } from 'vue'
+
+export default defineComponent({
+  name: 'patolPlan',
+  components: {},
+  props: {},
+  setup() {
+    ref
+    return {}
+  },
+})
+</script>

+ 61 - 2
src/views/patrolManage/patrolRecord/index.vue

@@ -1,5 +1,64 @@
 <template>
-  <div style="padding:30px;">
-   巡检记录
+  <div class="patolPlan">
+    <div class="patolContent">
+      <div class="patolDivOne">
+        <el-radio-group
+          v-model="listTabPosition"
+          @change="listTabsChange(listTabPosition)"
+          style="display: flex"
+        >
+          <el-radio-button label="planSelect">按计划查看</el-radio-button>
+          <el-radio-button label="siteSelect">按站点查看</el-radio-button>
+        </el-radio-group>
+      </div>
+      <div class="patolDivTwo">
+        <plan-Select v-if="inspeBoll"></plan-Select>
+        <site-Select v-if="!inspeBoll"></site-Select>
+      </div>
+    </div>
   </div>
 </template>
+<script>
+import { defineComponent, ref } from 'vue'
+import planSelect from './tables/planSelect.vue'
+import siteSelect from './tables/siteSelect.vue'
+
+export default defineComponent({
+  name: 'patolPlan',
+  components: { planSelect, siteSelect },
+  props: {},
+  setup() {
+    const inspeBoll = ref(true)
+
+    const listTabsChange = (value) => {
+      value == 'planSelect'
+        ? (inspeBoll.value = true)
+        : (inspeBoll.value = false)
+
+      console.log(value)
+    }
+
+    return {
+      inspeBoll,
+      listTabPosition: ref('planSelect'),
+      listTabsChange,
+    }
+  },
+})
+</script>
+
+<style lang="scss" scoped>
+.patolPlan {
+  display: flex;
+  height: calc(100vh - 130px);
+  .patolContent {
+    background-color: #fff;
+    width: 100%;
+    min-width: 845px;
+    height: 100%;
+    .patolDivOne {
+      margin: 15px 0px 15px 15px;
+    }
+  }
+}
+</style>

+ 154 - 0
src/views/patrolManage/patrolRecord/tables/planSelect.vue

@@ -0,0 +1,154 @@
+<template>
+  <div style="margin: 0px 15px">
+    <div class="patolDivTwo">
+      <span class="inspePlanSpan">巡检计划:</span>
+      <el-select
+        v-model="selectValue"
+        clearable
+        placeholder=""
+        class="inspePlanSelect"
+      >
+        <el-option
+          v-for="item in selectOptions"
+          :key="item.value"
+          :label="item.label"
+          :value="item.value"
+        ></el-option>
+      </el-select>
+    </div>
+    <div>
+      <el-table
+        :data="tableData"
+        border
+        stripe
+        :header-cell-style="headClass"
+        style="max-height: 42.5rem"
+      >
+        <el-table-column
+          prop="reportName"
+          label="巡检计划"
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="reportDate"
+          label="第几次"
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="proposal"
+          label="启动时间"
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="mailbox"
+          label="巡检班组"
+          width=""
+        ></el-table-column>
+        <el-table-column prop="state" label="站点数" width=""></el-table-column>
+        <el-table-column prop="state" label="进度" width="">
+          <template #default="scope">
+            <div class="demo-progress">
+              <el-progress :percentage="scope.row.state" />
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="state"
+          label="完成时间"
+          width=""
+        ></el-table-column>
+        <el-table-column prop="state" label="结果" width=""></el-table-column>
+        <el-table-column prop="state" label="状态" width=""></el-table-column>
+        <el-table-column label="操作" width="100">
+          <template #default="scope">
+            <el-button
+              type="text"
+              size="small"
+              style="color: #409eff"
+              @click.prevent="select(scope.row)"
+            >
+              查看
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="listPagination">
+        <el-pagination
+          v-model:currentPage="currentPage"
+          :page-sizes="[15, 20, 25, 30]"
+          :page-size="15"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="tableData.length"
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          background
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import { defineComponent, ref } from 'vue'
+
+export default defineComponent({
+  name: 'patolPlan',
+  components: {},
+  props: {},
+  setup() {
+    const select = (row) => {
+      console.log('', row)
+    }
+    // 表头样式设置
+    const headClass = () => {
+      return 'background:#FAFAFA !important;color: black;'
+    }
+
+    const handleSizeChange = (val) => {
+      console.log(`${val} items per page`)
+    }
+    const handleCurrentChange = (val) => {
+      console.log(`current page: ${val}`)
+    }
+    return {
+      currentPage: ref(1),
+      handleSizeChange,
+      handleCurrentChange,
+      headClass,
+      select, //查看事件
+      tableData: [
+        {
+          reportName: '05-01',
+          reportDate: 'Tom',
+          proposal: '',
+          mailbox: '',
+          state: 50,
+        },
+      ],
+      selectValue: ref(1),
+      selectOptions: ref([
+        {
+          value: 1,
+          label: '所有',
+        },
+      ]),
+    }
+  },
+})
+</script>
+
+<style lang="scss" scoped>
+.patolDivTwo {
+  display: flex;
+  margin-bottom: 15px;
+  .inspePlanSelect {
+    width: 300px;
+  }
+  .inspePlanSpan {
+    line-height: 32px;
+  }
+  .listPagination {
+    float: right;
+    margin-top: 10px;
+  }
+}
+</style>

+ 141 - 0
src/views/patrolManage/patrolRecord/tables/siteSelect.vue

@@ -0,0 +1,141 @@
+<template>
+  <div style="margin: 0px 15px">
+    <div class="patolDivTwo">
+      <span class="inspePlanSpan">站点:</span>
+      <el-select
+        v-model="selectValue"
+        clearable
+        placeholder=""
+        class="inspePlanSelect"
+      >
+        <el-option
+          v-for="item in selectOptions"
+          :key="item.value"
+          :label="item.label"
+          :value="item.value"
+        ></el-option>
+      </el-select>
+    </div>
+    <div>
+      <el-table
+        :data="tableData"
+        border
+        stripe
+        :header-cell-style="headClass"
+        style="max-height: 42.5rem"
+      >
+        <el-table-column
+          prop="reportName"
+          label="站点"
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="reportDate"
+          label="巡检计划"
+          width=""
+        ></el-table-column>
+        <el-table-column
+          prop="proposal"
+          label="启动时间"
+          width=""
+        ></el-table-column>
+        <el-table-column prop="mailbox" label="状态" width=""></el-table-column>
+        <el-table-column
+          prop="state"
+          label="完成时间"
+          width=""
+        ></el-table-column>
+        <el-table-column prop="state" label="结果" width=""></el-table-column>
+        <el-table-column label="操作" width="100">
+          <template #default="scope">
+            <el-button
+              type="text"
+              size="small"
+              style="color: #409eff"
+              @click.prevent="select(scope.row)"
+            >
+              查看
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="listPagination">
+        <el-pagination
+          v-model:currentPage="currentPage"
+          :page-sizes="[15, 20, 25, 30]"
+          :page-size="15"
+          layout="total, sizes, prev, pager, next, jumper"
+          :total="tableData.length"
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          background
+        ></el-pagination>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import { defineComponent, ref } from 'vue'
+
+export default defineComponent({
+  name: 'patolPlan',
+  components: {},
+  props: {},
+  setup() {
+    const select = (row) => {
+      console.log('', row)
+    }
+    // 表头样式设置
+    const headClass = () => {
+      return 'background:#FAFAFA !important;color: black;'
+    }
+
+    const handleSizeChange = (val) => {
+      console.log(`${val} items per page`)
+    }
+    const handleCurrentChange = (val) => {
+      console.log(`current page: ${val}`)
+    }
+    return {
+      currentPage: ref(1),
+      handleSizeChange,
+      handleCurrentChange,
+      headClass,
+      select, //查看事件
+      tableData: [
+        {
+          reportName: '05-01',
+          reportDate: 'Tom',
+          proposal: '',
+          mailbox: '',
+          state: '',
+        },
+      ],
+      selectValue: ref(1),
+      selectOptions: ref([
+        {
+          value: 1,
+          label: '所有',
+        },
+      ]),
+    }
+  },
+})
+</script>
+
+<style lang="scss" scoped>
+.patolDivTwo {
+  display: flex;
+  margin-bottom: 15px;
+  .inspePlanSelect {
+    width: 300px;
+  }
+  .inspePlanSpan {
+    line-height: 32px;
+  }
+  .listPagination {
+    float: right;
+    margin-top: 10px;
+  }
+}
+</style>