dylan %!s(int64=3) %!d(string=hai) anos
pai
achega
db066f9073
Modificáronse 58 ficheiros con 26678 adicións e 3328 borrados
  1. 16917 1
      package-lock.json
  2. BIN=BIN
      public/img/logo_pc.png
  3. BIN=BIN
      public/img/warning.png
  4. 1 1
      public/index.html
  5. 70 0
      src/api/baseinfo/project.js
  6. 61 0
      src/api/baseinfo/rtu.js
  7. 59 0
      src/api/baseinfo/servicePerson.js
  8. 52 0
      src/api/business/inspection/inspection.js
  9. 57 0
      src/api/business/manage/manage.js
  10. 63 0
      src/api/business/order/order.js
  11. 50 0
      src/api/business/order/process.js
  12. 14 0
      src/api/data/dataGround.js
  13. 14 0
      src/api/data/dataRain.js
  14. 14 0
      src/api/data/dataRiver.js
  15. 14 0
      src/api/data/dataRsvr.js
  16. 33 33
      src/api/desk/notice.js
  17. 69 0
      src/api/home/home.js
  18. 57 0
      src/api/project/projectPlan.js
  19. 94 0
      src/api/warning/originalWarnInfo.js
  20. 94 0
      src/api/warning/warning.js
  21. 0 103
      src/api/workbench/monitoring.js
  22. 45 45
      src/config/website.js
  23. 1 1
      src/lang/zh.js
  24. 117 117
      src/page/index/index.vue
  25. 79 52
      src/page/index/logo.vue
  26. 1 0
      src/router/avue-router.js
  27. 473 0
      src/views/baseinfo/project.vue
  28. 481 0
      src/views/baseinfo/rtu.vue
  29. 436 0
      src/views/baseinfo/servicePerson.vue
  30. 271 0
      src/views/business/data/groundDataCache.vue
  31. 235 0
      src/views/business/data/rainDataCache.vue
  32. 235 0
      src/views/business/data/riverDataCache.vue
  33. 235 0
      src/views/business/data/rsvrDataCache.vue
  34. 463 0
      src/views/business/inspection/index.vue
  35. 658 0
      src/views/business/inspection/inspectionRportDetail.vue
  36. 423 0
      src/views/business/manage/index.vue
  37. 333 0
      src/views/business/order/index.vue
  38. 629 0
      src/views/business/order/orderProcessDetail.vue
  39. 190 0
      src/views/business/order/orderProcessList.vue
  40. 213 0
      src/views/business/order/rtuCheckOrder.vue
  41. 585 0
      src/views/business/warning/originalWarnInfoDetail.vue
  42. 196 0
      src/views/business/warning/rtuWarningList.vue
  43. 250 0
      src/views/data/rtuImportProcess.vue
  44. 742 0
      src/views/data/rtuimport copy.vue
  45. 413 0
      src/views/data/rtuimport.vue
  46. 256 273
      src/views/desk/notice.vue
  47. 370 0
      src/views/project/projectPlan.vue
  48. 336 424
      src/views/wel/index.vue
  49. 0 301
      src/views/wel/maintainOrder.vue
  50. 0 277
      src/views/wel/monitoring copy.vue
  51. 0 440
      src/views/wel/monitoring.vue
  52. 0 53
      src/views/wel/recordDetail.vue
  53. 0 261
      src/views/wel/recordList.vue
  54. 0 237
      src/views/wel/recordPicture.vue
  55. 241 0
      src/views/wel/toDo.vue
  56. 0 439
      src/views/wel/warningConfig.vue
  57. 0 232
      src/views/wel/warningInfo.vue
  58. 38 38
      vue.config.js

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 16917 - 1
package-lock.json


BIN=BIN
public/img/logo_pc.png


BIN=BIN
public/img/warning.png


+ 1 - 1
public/index.html

@@ -19,7 +19,7 @@
   <script src="<%= BASE_URL %>cdn/xlsx/FileSaver.min.js"></script>
   <script src="<%= BASE_URL %>cdn/xlsx/xlsx.full.min.js"></script>
   <link rel="icon" href="<%= BASE_URL %>favicon.png">
-  <title>山洪灾害监测预警平台运维系统</title>
+  <title>运维系统</title>
   <style>
     html,
     body,

+ 70 - 0
src/api/baseinfo/project.js

@@ -0,0 +1,70 @@
+import request from '@/router/axios';
+
+export const getPage = (current, size, params) => {
+  return request({
+    url: '/api/galaxy-test/project/base/page',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+
+export const getUserProjectList = () => {
+  return request({
+    url: '/api/galaxy-test/project/base/org/list',
+    method: 'get',
+
+  })
+}
+
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/galaxy-test/project/base/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/galaxy-test/project/base/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/galaxy-test/project/base/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const getDetail = (id) => {
+  return request({
+    url: '/api/galaxy-test/project/base/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+
+export const warnSetting = (params) => {
+    return request({
+      url: '/api/galaxy-test/project/base/setting/warning/submit',
+      method: 'post',
+      params: {
+        ...params,
+      }
+    })
+  }
+

+ 61 - 0
src/api/baseinfo/rtu.js

@@ -0,0 +1,61 @@
+import request from '@/router/axios';
+
+export const getPage = (current, size, params) => {
+  return request({
+    url: '/api/galaxy-test/rtu/base/page',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const getRtuKindList = ( code) => {
+  return request({
+    url: '/api/galaxy-test/rtu/base/dict/list',
+    method: 'get',
+    params: {
+      code,
+    }
+  })
+}
+
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/galaxy-test/rtu/base/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/galaxy-test/rtu/base/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/galaxy-test/rtu/base/submit',
+    method: 'post',
+    data: row
+  })
+}
+
+export const getDetail = (id) => {
+  return request({
+    url: '/api/galaxy-test/rtu/base/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+

+ 59 - 0
src/api/baseinfo/servicePerson.js

@@ -0,0 +1,59 @@
+import request from '@/router/axios';
+
+
+export const getOrgTree = () => {
+    return request({
+        url: '/api/galaxy-test/project/person/org/dict',
+        method: 'get',
+
+    })
+}
+
+export const getServicePersonList = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-test/project/person/org/list',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
+}
+
+export const remove = (ids) => {
+    return request({
+        url: '/api/galaxy-test/project/person/remove',
+        method: 'post',
+        params: {
+            ids,
+        }
+    })
+}
+
+export const add = (row) => {
+    return request({
+        url: '/api/galaxy-test/project/person/save',
+        method: 'post',
+        data: row
+    })
+}
+
+export const update = (row) => {
+    return request({
+        url: '/api/galaxy-test/project/person/update',
+        method: 'post',
+        data: row
+    })
+}
+
+export const getDetail = (id) => {
+    return request({
+        url: '/api/galaxy-test/project/person/detail',
+        method: 'get',
+        params: {
+            id
+        }
+    })
+}
+

+ 52 - 0
src/api/business/inspection/inspection.js

@@ -0,0 +1,52 @@
+import request from '@/router/axios';
+
+export const getPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-test/equipment/inspection/report/page',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
+}
+
+export const remove = (ids) => {
+    return request({
+        url: '/api/galaxy-test/equipment/inspection/report/remove',
+        method: 'post',
+        params: {
+            ids,
+        }
+    })
+}
+
+export const add = (row) => {
+    return request({
+        url: '/api/galaxy-test/equipment/inspection/report/save',
+        method: 'post',
+        data: row
+    })
+}
+
+export const update = (row) => {
+    return request({
+        url: '/api/galaxy-test/equipment/inspection/report/update',
+        method: 'post',
+        data: row
+    })
+}
+
+export const getDetail = (id) => {
+    return request({
+        url: '/api/galaxy-test/equipment/inspection/report/detail',
+        method: 'get',
+        params: {
+            id
+        }
+    })
+}
+
+
+

+ 57 - 0
src/api/business/manage/manage.js

@@ -0,0 +1,57 @@
+import request from '@/router/axios';
+
+export const getList = (current, size, params) => {
+  return request({
+    url: '/api/galaxy-test/rtu/manage/page',
+    method: 'get',
+    params: {
+      ...params,
+      current,
+      size,
+    }
+  })
+}
+
+export const getTree = () => {
+  return request({
+    url: '/api/galaxy-test/rtu/manage/tree',
+    method: 'get',
+  })
+}
+
+export const remove = (ids) => {
+  return request({
+    url: '/api/galaxy-test/rtu/manage/remove',
+    method: 'post',
+    params: {
+      ids,
+    }
+  })
+}
+
+export const add = (row) => {
+  return request({
+    url: '/api/galaxy-test/rtu/manage/save',
+    method: 'post',
+    data: row
+  })
+}
+
+export const update = (row) => {
+  return request({
+    url: '/api/galaxy-test/rtu/manage/update',
+    method: 'post',
+    data: row
+  })
+}
+
+export const getDetail = (id) => {
+  return request({
+    url: '/api/galaxy-test/rtu/manage/detail',
+    method: 'get',
+    params: {
+      id
+    }
+  })
+}
+

+ 63 - 0
src/api/business/order/order.js

@@ -0,0 +1,63 @@
+import request from '@/router/axios';
+
+export const getPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-test/rtu/check/order/page',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
+}
+
+export const remove = (ids) => {
+    return request({
+        url: '/api/galaxy-test/rtu/check/order/remove',
+        method: 'post',
+        params: {
+            ids,
+        }
+    })
+}
+
+export const add = (row) => {
+    return request({
+        url: '/api/galaxy-test/rtu/check/order/save',
+        method: 'post',
+        data: row
+    })
+}
+
+export const update = (row) => {
+    return request({
+        url: '/api/galaxy-test/rtu/check/order/update',
+        method: 'post',
+        data: row
+    })
+}
+
+export const getDetail = (id) => {
+    return request({
+        url: '/api/galaxy-test/rtu/check/order/detail',
+        method: 'get',
+        params: {
+            id
+        }
+    })
+}
+
+
+export const orderClose = (params) => {
+    return request({
+        url: '/api/galaxy-test/rtu/check/order/close',
+        method: 'post',
+        params: {
+            ...params,
+        }
+    })
+}
+
+
+

+ 50 - 0
src/api/business/order/process.js

@@ -0,0 +1,50 @@
+import request from '@/router/axios';
+
+export const getPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-test/rtu/check/order/process/page',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
+}
+
+export const remove = (ids) => {
+    return request({
+        url: '/api/galaxy-test/rtu/check/order/process/remove',
+        method: 'post',
+        params: {
+            ids,
+        }
+    })
+}
+
+export const add = (row) => {
+    return request({
+        url: '/api/galaxy-test/rtu/check/order/process/save',
+        method: 'post',
+        data: row
+    })
+}
+
+export const update = (row) => {
+    return request({
+        url: '/api/galaxy-test/rtu/check/order/process/update',
+        method: 'post',
+        data: row
+    })
+}
+
+export const getDetail = (id) => {
+    return request({
+        url: '/api/galaxy-test/rtu/check/order/process/detail',
+        method: 'get',
+        params: {
+            id
+        }
+    })
+}
+

+ 14 - 0
src/api/data/dataGround.js

@@ -0,0 +1,14 @@
+import request from '@/router/axios';
+
+export const getPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-test/rtu/data/ground/page',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
+}
+

+ 14 - 0
src/api/data/dataRain.js

@@ -0,0 +1,14 @@
+import request from '@/router/axios';
+
+export const getPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-test/rtu/data/rain/page',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
+}
+

+ 14 - 0
src/api/data/dataRiver.js

@@ -0,0 +1,14 @@
+import request from '@/router/axios';
+
+export const getPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-test/rtu/data/river/page',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
+}
+

+ 14 - 0
src/api/data/dataRsvr.js

@@ -0,0 +1,14 @@
+import request from '@/router/axios';
+
+export const getPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-test/rtu/data/rsvr/page',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
+}
+

+ 33 - 33
src/api/desk/notice.js

@@ -1,50 +1,50 @@
 import request from '@/router/axios';
 
 export const getList = (current, size, params) => {
-  return request({
-    url: '/api/galaxy-desk/notice/list',
-    method: 'get',
-    params: {
-      ...params,
-      current,
-      size,
-    }
-  })
+    return request({
+        url: '/api/galaxy-test/notice/list',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
 }
 
 export const remove = (ids) => {
-  return request({
-    url: '/api/galaxy-desk/notice/remove',
-    method: 'post',
-    params: {
-      ids,
-    }
-  })
+    return request({
+        url: '/api/galaxy-test/notice/remove',
+        method: 'post',
+        params: {
+            ids,
+        }
+    })
 }
 
 export const add = (row) => {
-  return request({
-    url: '/api/galaxy-desk/notice/submit',
-    method: 'post',
-    data: row
-  })
+    return request({
+        url: '/api/galaxy-test/notice/submit',
+        method: 'post',
+        data: row
+    })
 }
 
 export const update = (row) => {
-  return request({
-    url: '/api/galaxy-desk/notice/submit',
-    method: 'post',
-    data: row
-  })
+    return request({
+        url: '/api/galaxy-test/notice/submit',
+        method: 'post',
+        data: row
+    })
 }
 
 export const getNotice = (id) => {
-  return request({
-    url: '/api/galaxy-desk/notice/detail',
-    method: 'get',
-    params: {
-      id
-    }
-  })
+    return request({
+        url: '/api/galaxy-test/notice/detail',
+        method: 'get',
+        params: {
+            id
+        }
+    })
 }
 

+ 69 - 0
src/api/home/home.js

@@ -0,0 +1,69 @@
+import request from '@/router/axios';
+
+
+
+export const getList = () => {
+    return request({
+        url: '/api/galaxy-test/equipment/inspection/plan/all/list',
+        method: 'get',
+    })
+}
+
+export const getPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-test/equipment/inspection/plan/page',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
+}
+
+export const remove = (ids) => {
+    return request({
+        url: '/api/galaxy-test/equipment/inspection/plan/remove',
+        method: 'post',
+        params: {
+            ids,
+        }
+    })
+}
+
+export const add = (row) => {
+    return request({
+        url: '/api/galaxy-test/equipment/inspection/plan/save',
+        method: 'post',
+        data: row
+    })
+}
+
+export const update = (row) => {
+    return request({
+        url: '/api/galaxy-test/equipment/inspection/plan/update',
+        method: 'post',
+        data: row
+    })
+}
+
+export const getDetail = (id) => {
+    return request({
+        url: '/api/galaxy-test/equipment/inspection/plan/detail',
+        method: 'get',
+        params: {
+            id
+        }
+    })
+}
+
+export const getRealData = () => {
+
+
+    return request({
+        url: '/api/galaxy-test/real/data/home/info',
+        method: 'get',
+
+    })
+}
+

+ 57 - 0
src/api/project/projectPlan.js

@@ -0,0 +1,57 @@
+import request from '@/router/axios';
+
+export const getList = () => {
+    return request({
+        url: '/api/galaxy-test/equipment/inspection/plan/all/list',
+        method: 'get',
+    })
+}
+
+export const getPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-test/equipment/inspection/plan/page',
+        method: 'get',
+        params: {
+            ...params,
+            current,
+            size,
+        }
+    })
+}
+
+export const remove = (ids) => {
+    return request({
+        url: '/api/galaxy-test/equipment/inspection/plan/remove',
+        method: 'post',
+        params: {
+            ids,
+        }
+    })
+}
+
+export const add = (row) => {
+    return request({
+        url: '/api/galaxy-test/equipment/inspection/plan/save',
+        method: 'post',
+        data: row
+    })
+}
+
+export const update = (row) => {
+    return request({
+        url: '/api/galaxy-test/equipment/inspection/plan/update',
+        method: 'post',
+        data: row
+    })
+}
+
+export const getDetail = (id) => {
+    return request({
+        url: '/api/galaxy-test/equipment/inspection/plan/detail',
+        method: 'get',
+        params: {
+            id
+        }
+    })
+}
+

+ 94 - 0
src/api/warning/originalWarnInfo.js

@@ -0,0 +1,94 @@
+import request from '@/router/axios';
+
+export const getPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-test/rtu/warning/page',
+        method: 'get',
+        params: {
+            current,
+            size,
+            ...params
+        }
+    })
+}
+
+
+export const getDetail = (params) => {
+    return request({
+        url: '/api/galaxy-test/rtu/warning/detail',
+        method: 'get',
+        params: {
+
+            ...params
+        }
+    })
+}
+
+
+
+
+
+
+
+
+// 维修列表
+export const getOrderList = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-test/rtu/check/order/page',
+        method: 'get',
+        params: {
+            current,
+            size,
+            ...params
+        }
+    })
+}
+
+// 维修列表
+export const getProcessList = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-test/rtu/check/order/process/page',
+        method: 'get',
+        params: {
+            current,
+            size,
+            ...params
+        }
+    })
+}
+
+
+// 维修工单关闭
+export const close = (params) => {
+    return request({
+        url: '/api/galaxy-test/rtu/check/order/close',
+        method: 'post',
+        data: {
+            ...params
+        }
+    })
+}
+
+export const remove = (params) => {
+    return request({
+        url: '/api/galaxy-test/rtu/check/order/close',
+        method: 'post',
+        data: {
+            ...params
+        }
+    })
+}
+
+
+// 预警信息
+export const getWrningInfo = (params) => {
+    return request({
+        url: '/api/galaxy-test/rtu/warning/page',
+        method: 'post',
+        data: {
+            ...params
+        }
+    })
+}
+
+

+ 94 - 0
src/api/warning/warning.js

@@ -0,0 +1,94 @@
+import request from '@/router/axios';
+
+export const getPage = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-test/rtu/warning/page',
+        method: 'get',
+        params: {
+            current,
+            size,
+            ...params
+        }
+    })
+}
+
+
+export const getDetail = (params) => {
+    return request({
+        url: '/api/galaxy-test/rtu/warning/detail',
+        method: 'get',
+        params: {
+
+            ...params
+        }
+    })
+}
+
+
+
+
+
+
+
+
+// 维修列表
+export const getOrderList = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-test/rtu/check/order/page',
+        method: 'get',
+        params: {
+            current,
+            size,
+            ...params
+        }
+    })
+}
+
+// 维修列表
+export const getProcessList = (current, size, params) => {
+    return request({
+        url: '/api/galaxy-test/rtu/check/order/process/page',
+        method: 'get',
+        params: {
+            current,
+            size,
+            ...params
+        }
+    })
+}
+
+
+// 维修工单关闭
+export const close = (params) => {
+    return request({
+        url: '/api/galaxy-test/rtu/check/order/close',
+        method: 'post',
+        data: {
+            ...params
+        }
+    })
+}
+
+export const remove = (params) => {
+    return request({
+        url: '/api/galaxy-test/rtu/check/order/close',
+        method: 'post',
+        data: {
+            ...params
+        }
+    })
+}
+
+
+// 预警信息
+export const getWrningInfo = (params) => {
+    return request({
+        url: '/api/galaxy-test/rtu/warning/page',
+        method: 'post',
+        data: {
+            ...params
+        }
+    })
+}
+
+

+ 0 - 103
src/api/workbench/monitoring.js

@@ -1,103 +0,0 @@
-import request from '@/router/axios';
-
-export const getList = (current, size, params) => {
-  return request({
-    url: '/api/galaxy-test/rtu/base/list',
-    method: 'get',
-    params: {
-      current,
-      size,
-      ...params
-    }
-  })
-}
-
-
-export const getDetail = (params) => {
-  return request({
-    url: '/api/galaxy-test/rtu/base/detail',
-    method: 'get',
-    params: {
-
-      ...params
-    }
-  })
-}
-
-export const add = (params) => {
-  return request({
-    url: '/api/galaxy-test/rtu/base/save',
-    method: 'post',
-    data: {
-
-      ...params
-    }
-  })
-}
-
-export const update = (params) => {
-  return request({
-    url: '/api/galaxy-test/rtu/base/update',
-    method: 'post',
-    data: {
-
-      ...params
-    }
-  })
-}
-
-
-
-
-
-// 维修列表
-export const getOrderList = (current, size, params) => {
-  return request({
-    url: '/api/galaxy-test/rtu/check/order/page',
-    method: 'get',
-    params: {
-      current,
-      size,
-      ...params
-    }
-  })
-}
-
-// 维修列表
-export const getProcessList = (current, size, params) => {
-  return request({
-    url: '/api/galaxy-test/rtu/check/order/process/page',
-    method: 'get',
-    params: {
-      current,
-      size,
-      ...params
-    }
-  })
-}
-
-
-// 维修工单关闭
-export const close = (params) => {
-  return request({
-    url: '/api/galaxy-test/rtu/check/order/close',
-    method: 'post',
-    data: {
-      ...params
-    }
-  })
-}
-
-
-// 预警信息
-export const getWrningInfo = (params) => {
-  return request({
-    url: '/api/galaxy-test/rtu/warning/page',
-    method: 'post',
-    data: {
-      ...params
-    }
-  })
-}
-
-

+ 45 - 45
src/config/website.js

@@ -6,52 +6,52 @@
  * 全局配置文件
  */
 export default {
-  title: "山洪灾害监测预警平台运维系统",
-  logo: "S",
-  key: 'galaxy',//配置主键,目前用于存储
-  indexTitle: '山洪灾害监测预警平台运维系统',
-  clientId: 'saber', // 客户端id
-  clientSecret: 'saber_secret', // 客户端密钥
-  tenantMode: false, // 是否开启租户模式
-  tenantId: "000000", // 管理组租户编号
-  captchaMode: false, // 是否开启验证码模式
-  switchMode: false, // 是否开启部门切换模式
-  lockPage: '/lock',
-  tokenTime: 3000,
-  tokenHeader: 'Blade-Auth',
-  //http的status默认放行列表
-  statusWhiteList: [],
-  //配置首页不可关闭
-  isFirstPage: false,
-  fistPage: {
-    label: "首页",
-    value: "/wel/index",
-    params: {},
-    query: {},
-    meta: {
-      i18n: 'dashboard'
+    title: "运维系统",
+    logo: "S",
+    key: 'galaxy',//配置主键,目前用于存储
+    indexTitle: '运维系统',
+    clientId: 'saber', // 客户端id
+    clientSecret: 'saber_secret', // 客户端密钥
+    tenantMode: false, // 是否开启租户模式
+    tenantId: "000000", // 管理组租户编号
+    captchaMode: false, // 是否开启验证码模式
+    switchMode: false, // 是否开启部门切换模式
+    lockPage: '/lock',
+    tokenTime: 3000,
+    tokenHeader: 'Blade-Auth',
+    //http的status默认放行列表
+    statusWhiteList: [],
+    //配置首页不可关闭
+    isFirstPage: false,
+    fistPage: {
+        label: "首页",
+        value: "/wel/index",
+        params: {},
+        query: {},
+        meta: {
+            i18n: 'dashboard'
+        },
+        group: [],
+        close: false
     },
-    group: [],
-    close: false
-  },
-  //配置菜单的属性
-  menu: {
-    iconDefault: 'iconfont icon-caidan',
-    props: {
-      label: 'name',
-      path: 'path',
-      icon: 'source',
-      children: 'children'
-    }
-  },
-  // 第三方系统授权地址
-  authUrl: 'http://localhost:8000/galaxy-auth/oauth/render',
-  // 报表设计器地址(cloud端口为8108,boot端口为80)
-  reportUrl: 'http://localhost:8000/ureport',
+    //配置菜单的属性
+    menu: {
+        iconDefault: 'iconfont icon-caidan',
+        props: {
+            label: 'name',
+            path: 'path',
+            icon: 'source',
+            children: 'children'
+        }
+    },
+    // 第三方系统授权地址
+    authUrl: 'http://localhost:8000/galaxy-auth/oauth/render',
+    // 报表设计器地址(cloud端口为8108,boot端口为80)
+    reportUrl: 'http://localhost:8000/ureport',
 
-  //文件存储服务器地址,末尾必须/
-  ossServer:'http://localhost:9000/galaxy/',
-  //文件预览服务器地址
-  kkfileviewServer: 'http://localhost:8012',
+    //文件存储服务器地址,末尾必须/
+    ossServer: 'http://localhost:9000/galaxy/',
+    //文件预览服务器地址
+    kkfileviewServer: 'http://localhost:8012',
 
 }

+ 1 - 1
src/lang/zh.js

@@ -1,6 +1,6 @@
 export default {
   tip: '提示',
-  title: '山洪灾害监测预警平台运维系统',
+  title: '运维系统',
   logoutTip: '退出系统, 是否继续?',
   submitText: '确定',
   cancelText: '取消',

+ 117 - 117
src/page/index/index.vue

@@ -1,143 +1,143 @@
 <template>
-  <div class="avue-contail" :class="{'avue--collapse':isCollapse}">
-    <div class="avue-header">
-      <!-- 顶部导航栏 -->
-      <top ref="top"/>
-    </div>
-    <div class="avue-layout">
-      <div class="avue-left">
-        <!-- 左侧导航栏 -->
-        <sidebar/>
-      </div>
-      <div class="avue-main">
-        <!-- 顶部标签卡 -->
-        <tags/>
-        <transition name="fade-scale">
-          <search class="avue-view" v-show="isSearch"></search>
-        </transition>
-        <!-- 主体视图层 -->
-        <div style="height:100%;overflow-y:auto;overflow-x:hidden;" id="avue-view" v-show="!isSearch">
-          <keep-alive>
-            <router-view class="avue-view" v-if="$route.meta.keepAlive"/>
-          </keep-alive>
-          <router-view class="avue-view" v-if="!$route.meta.keepAlive"/>
+    <div class="avue-contail" :class="{'avue--collapse':isCollapse}">
+        <div class="avue-header">
+            <!-- 顶部导航栏 -->
+            <top ref="top" />
+        </div>
+        <div class="avue-layout">
+            <div class="avue-left">
+                <!-- 左侧导航栏 -->
+                <sidebar />
+            </div>
+            <div class="avue-main">
+                <!-- 顶部标签卡 -->
+                <tags />
+                <transition name="fade-scale">
+                    <search class="avue-view" v-show="isSearch"></search>
+                </transition>
+                <!-- 主体视图层 -->
+                <div style="height:100%;overflow-y:auto;overflow-x:hidden; " id="avue-view" v-show="!isSearch">
+                    <keep-alive>
+                        <router-view class="avue-view" v-if="$route.meta.keepAlive" />
+                    </keep-alive>
+                    <router-view class="avue-view" v-if="!$route.meta.keepAlive" />
+                </div>
+            </div>
         </div>
-      </div>
+        <div class="avue-shade" @click="showCollapse"></div>
     </div>
-    <div class="avue-shade" @click="showCollapse"></div>
-  </div>
 </template>
 
 <script>
-  import {mapGetters} from "vuex";
-  import tags from "./tags";
-  import search from "./search";
-  import top from "./top/";
-  import sidebar from "./sidebar/";
-  import admin from "@/util/admin";
-  import {validatenull} from "@/util/validate";
-  import {calcDate} from "@/util/date.js";
-  import {getStore} from "@/util/store.js";
+import { mapGetters } from "vuex";
+import tags from "./tags";
+import search from "./search";
+import top from "./top/";
+import sidebar from "./sidebar/";
+import admin from "@/util/admin";
+import { validatenull } from "@/util/validate";
+import { calcDate } from "@/util/date.js";
+import { getStore } from "@/util/store.js";
 
-  export default {
+export default {
     components: {
-      top,
-      tags,
-      search,
-      sidebar
+        top,
+        tags,
+        search,
+        sidebar
     },
     name: "index",
     provide() {
-      return {
-        index: this
-      };
+        return {
+            index: this
+        };
     },
     data() {
-      return {
-        //搜索控制
-        isSearch: false,
-        //刷新token锁
-        refreshLock: false,
-        //刷新token的时间
-        refreshTime: ""
-      };
+        return {
+            //搜索控制
+            isSearch: false,
+            //刷新token锁
+            refreshLock: false,
+            //刷新token的时间
+            refreshTime: ""
+        };
     },
     created() {
-      //实时检测刷新token
-      this.refreshToken();
+        //实时检测刷新token
+        this.refreshToken();
     },
     mounted() {
-      this.init();
+        this.init();
     },
     computed: mapGetters(["isMenu", "isLock", "isCollapse", "website", "menu"]),
     props: [],
     methods: {
-      showCollapse() {
-        this.$store.commit("SET_COLLAPSE");
-      },
-      // 初始化
-      init() {
-        this.$store.commit("SET_SCREEN", admin.getScreen());
-        window.onresize = () => {
-          setTimeout(() => {
+        showCollapse() {
+            this.$store.commit("SET_COLLAPSE");
+        },
+        // 初始化
+        init() {
             this.$store.commit("SET_SCREEN", admin.getScreen());
-          }, 0);
-        };
-        this.$store.dispatch("FlowRoutes").then(() => {
-        });
-      },
-      //打开菜单
-      openMenu(item = {}) {
-        this.$store.dispatch("GetMenu", item.id).then(data => {
-          if (data.length !== 0) {
-            this.$router.$avueRouter.formatRoutes(data, true);
-          }
-          //当点击顶部菜单后默认打开第一个菜单
-          /*if (!this.validatenull(item)) {
-            let itemActive = {},
-              childItemActive = 0;
-            if (item.path) {
-              itemActive = item;
-            } else {
-              if (this.menu[childItemActive].length === 0) {
-                itemActive = this.menu[childItemActive];
-              } else {
-                itemActive = this.menu[childItemActive].children[childItemActive];
-              }
-            }
-            this.$store.commit('SET_MENU_ID', item);
-            this.$router.push({
-              path: this.$router.$avueRouter.getPath({
-                name: (itemActive.label || itemActive.name),
-                src: itemActive.path
-              }, itemActive.meta)
+            window.onresize = () => {
+                setTimeout(() => {
+                    this.$store.commit("SET_SCREEN", admin.getScreen());
+                }, 0);
+            };
+            this.$store.dispatch("FlowRoutes").then(() => {
             });
-          }*/
+        },
+        //打开菜单
+        openMenu(item = {}) {
+            this.$store.dispatch("GetMenu", item.id).then(data => {
+                if (data.length !== 0) {
+                    this.$router.$avueRouter.formatRoutes(data, true);
+                }
+                //当点击顶部菜单后默认打开第一个菜单
+                /*if (!this.validatenull(item)) {
+                  let itemActive = {},
+                    childItemActive = 0;
+                  if (item.path) {
+                    itemActive = item;
+                  } else {
+                    if (this.menu[childItemActive].length === 0) {
+                      itemActive = this.menu[childItemActive];
+                    } else {
+                      itemActive = this.menu[childItemActive].children[childItemActive];
+                    }
+                  }
+                  this.$store.commit('SET_MENU_ID', item);
+                  this.$router.push({
+                    path: this.$router.$avueRouter.getPath({
+                      name: (itemActive.label || itemActive.name),
+                      src: itemActive.path
+                    }, itemActive.meta)
+                  });
+                }*/
 
-        });
-      },
-      // 定时检测token
-      refreshToken() {
-        this.refreshTime = setInterval(() => {
-          const token = getStore({
-            name: "token",
-            debug: true
-          }) || {};
-          const date = calcDate(token.datetime, new Date().getTime());
-          if (validatenull(date)) return;
-          if (date.seconds >= this.website.tokenTime && !this.refreshLock) {
-            this.refreshLock = true;
-            this.$store
-              .dispatch("refreshToken")
-              .then(() => {
-                this.refreshLock = false;
-              })
-              .catch(() => {
-                this.refreshLock = false;
-              });
-          }
-        }, 10000);
-      }
+            });
+        },
+        // 定时检测token
+        refreshToken() {
+            this.refreshTime = setInterval(() => {
+                const token = getStore({
+                    name: "token",
+                    debug: true
+                }) || {};
+                const date = calcDate(token.datetime, new Date().getTime());
+                if (validatenull(date)) return;
+                if (date.seconds >= this.website.tokenTime && !this.refreshLock) {
+                    this.refreshLock = true;
+                    this.$store
+                        .dispatch("refreshToken")
+                        .then(() => {
+                            this.refreshLock = false;
+                        })
+                        .catch(() => {
+                            this.refreshLock = false;
+                        });
+                }
+            }, 10000);
+        }
     }
-  };
+};
 </script>

+ 79 - 52
src/page/index/logo.vue

@@ -1,73 +1,100 @@
 <template>
-  <div class="avue-logo">
-    <transition name="fade">
-      <span v-if="keyCollapse"
-            class="avue-logo_subtitle"
-            key="0">
-        {{website.logo}}
-      </span>
-    </transition>
-    <transition-group name="fade">
-      <template v-if="!keyCollapse">
-        <span class="avue-logo_title"
-              key="1">{{website.indexTitle}} </span>
-      </template>
-    </transition-group>
-  </div>
+
+    <div class="avue-logo">
+
+        <transition name="fade">
+            <span v-if="keyCollapse" class="avue-logo_subtitle" key="0">
+                {{website.logo}}
+            </span>
+        </transition>
+        <transition-group name="fade">
+            <template v-if="!keyCollapse">
+                <div key="1" class="avue-logo_title">
+                    <el-image class="myLogo" :src="logoUrl"></el-image>
+                    <span class="myTitle">{{website.indexTitle}} </span>
+                </div>
+
+            </template>
+        </transition-group>
+    </div>
 </template>
 
 <script>
 import { mapGetters } from "vuex";
 export default {
-  name: "logo",
-  data() {
-    return {};
-  },
-  created() {},
-  computed: {
-    ...mapGetters(["website", "keyCollapse"])
-  },
-  methods: {}
+    name: "logo",
+    data() {
+        return {
+            logoUrl: '/img/logo_pc.png'
+        };
+    },
+    created() { },
+    computed: {
+        ...mapGetters(["website", "keyCollapse"])
+    },
+    methods: {}
 };
 </script>
 
 <style lang="scss">
 .fade-leave-active {
-  transition: opacity 0.2s;
+    transition: opacity 0.2s;
 }
+
 .fade-enter-active {
-  transition: opacity 2.5s;
+    transition: opacity 2.5s;
 }
+
 .fade-enter,
 .fade-leave-to {
-  opacity: 0;
+    opacity: 0;
 }
+
 .avue-logo {
-  position: fixed;
-  top: 0;
-  left: 0;
-  width: 240px;
-  height: 64px;
-  line-height: 64px;
-  background-color: #20222a;
-  font-size: 20px;
-  overflow: hidden;
-  box-sizing: border-box;
-  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15);
-  color: rgba(255, 255, 255, 0.8);
-  z-index: 1024;
-  &_title {
-    display: block;
-    text-align: center;
-    font-weight: 300;
+    position: fixed;
+    top: 0;
+    left: 0;
+    width: 240px;
+    height: 64px;
+    line-height: 64px;
+    background-color: #20222a;
     font-size: 20px;
-  }
-  &_subtitle {
-    display: block;
-    text-align: center;
-    font-size: 18px;
-    font-weight: bold;
-    color: #fff;
-  }
+    overflow: hidden;
+    box-sizing: border-box;
+    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.15);
+    color: rgba(255, 255, 255, 0.8);
+    z-index: 1024;
+
+
+
+    &_subtitle {
+        display: block;
+        text-align: center;
+        font-size: 18px;
+        font-weight: bold;
+        color: #fff;
+    }
+
+    &_title {
+
+        display: flex;
+        align-items: center;
+        justify-content: flex-start;
+
+        .myLogo {
+            width: 40px;
+            height: 40px;
+        }
+
+        .myTitle {
+            display: block;
+            text-align: center;
+            font-weight: 300;
+            font-size: 20px;
+            margin-left: 10px;
+
+        }
+    }
+
 }
 </style>

+ 1 - 0
src/router/avue-router.js

@@ -55,6 +55,7 @@ RouterPlugin.install = function (vue, option = {}) {
     },
     //处理路由
     getPath: function (params) {
+      
       let {src} = params;
       let result = src || '/';
       if (isURL(src)) {

+ 473 - 0
src/views/baseinfo/project.vue

@@ -0,0 +1,473 @@
+<!--
+ * @Title: 
+ * @Description: 
+ * @Author: 893699165@qq.com
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <!-- <el-col :span="5">
+          <div class="box">
+            <el-scrollbar>
+            <basic-container>
+              <avue-tree
+                :option="treeOption"
+                :data="treeData"
+                @node-click="nodeClick"
+              />
+            </basic-container>
+          </el-scrollbar>
+          </div>
+        </el-col> -->
+            <el-col :span="24">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page"
+                        :before-open="beforeOpen" ref="crud" v-model="form" :permission="permissionList"
+                        @row-del="rowDel" @row-update="rowUpdate" @row-save="rowSave" @search-change="searchChange"
+                        @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange"
+                        @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"
+                        @before-open="beforeOpen">
+                        <template slot="state" slot-scope="{ row }">
+                            <el-button type="text" @click="openConfig(row)"> 正常 </el-button>
+                        </template>
+                        <template slot-scope="{ row, index }" slot="menu">
+
+                            <el-button type="text" size="small" @click="warnSetting(row)">预警配置
+                            </el-button>
+
+                            <!-- <el-button type="text" size="small" @click="planManage(row)">巡检计划
+              </el-button> -->
+
+                        </template>
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+        <el-dialog title="预警配置" :visible.sync="warnSettingDialog" v-if="warnSettingDialog" width="600px"
+            :before-close="handleClose" :close-on-click-modal="false" append-to-body>
+            <el-form label-width="120px">
+                <el-form-item label="预警总开关">
+                    <el-switch v-model="warningConfig.configSw" active-color="#13ce66" inactive-color="#ff4949"
+                        active-text="开" inactive-text="关">
+                    </el-switch>
+                </el-form-item>
+                <el-form-item label="延时配置">
+                    <el-input placeholder="请输入延时时长" v-model="warningConfig.delayTime">
+                        <template slot="append">单位分钟</template>
+                    </el-input>
+                </el-form-item>
+                <el-form-item label="">
+                    <label>延时时长用于测站离线预警监测,当超过配置的时长时触发预警,默认2小时</label>
+                </el-form-item>
+            </el-form>
+            <span slot="footer" class="dialog-footer">
+                <el-button @click="warnSettingDialog = false" size="small">取 消</el-button>
+                <el-button type="primary" @click="confirmConfigClick" size="small">确 定</el-button>
+            </span>
+        </el-dialog>
+
+        <!-- <el-dialog title="巡检计划"  :visible.sync="projectPlanDialog" v-if="projectPlanDialog" width="60%" height="60%" :close-on-click-modal="false"
+      append-to-body>
+      <projectPlan :planSetting="planSetting"  
+        ref="projectPlan"></projectPlan>
+    </el-dialog> -->
+
+
+    </div>
+</template>
+  
+<script>
+import { getPage, getDetail, add, update, remove, warnSetting } from "@/api/baseinfo/project";
+
+import {
+    getDeptTree,
+} from "@/api/system/dept.js";
+
+import projectPlan from '@/views/project/projectPlan.vue'
+
+export default {
+    components: {
+        projectPlan,
+    },
+    data() {
+        return {
+
+            projectPlanDialog: false,
+            orderDialog: false,
+            warningConfig: {
+                id: '',
+                configSw: true,
+                delayTime: "120",
+            },
+            planSetting: {
+                orgId: 0,
+                projectId: 0,
+                planTitle: ''
+            },
+            infoDialog: false,
+            warnSettingDialog: false,
+            id: "",
+            editForm: {},
+            editDialog: false,
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            treeOption: {
+                nodeKey: "id",
+                lazy: true,
+                treeLoad: function (node, resolve) {
+                    const parentId = node.level === 0 ? 0 : node.data.id;
+                    console.log(parentId)
+                    console.log(resolve)
+                    // getDeptLazyTree(parentId).then((res) => {
+                    //   resolve(
+                    //     res.data.data.map((item) => {
+                    //       return {
+                    //         ...item,
+                    //         leaf: !item.hasChildren,
+                    //       };
+                    //     })
+                    //   );
+                    // });
+                },
+                addBtn: false,
+                menu: false,
+                size: "small",
+                props: {
+                    labelText: "标题",
+                    label: "title",
+                    value: "value",
+                    children: "children",
+                },
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                height: "auto",
+                // height: 600,
+                calcHeight: 30,
+                align: "center",
+                headerAlign: "center",
+                lazy: true,
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                tree: true,
+                border: true,
+                index: true,
+                selection: true,
+                viewBtn: false,
+                viewTitle: "项目信息",
+                editBtn: true,
+                delBtn: true,
+                menuWidth: 220,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "项目名称",
+                        prop: "projectName",
+                        search: true,
+                        span: 12,
+                    },
+                    {
+                        label: "所属机构",
+                        prop: "orgId",
+                        span: 12,
+                        hide: true,
+                        viewDisplay: false,
+
+
+                        dicData: [],
+                        type: "tree",
+
+                        addDisabled: false,
+                        props: {
+                            label: "title",
+                        },
+                        rules: [
+                            {
+                                required: false,
+                                message: "请选择机构",
+                                trigger: "click",
+                            },
+                        ],
+                    },
+                    {
+                        label: "所属机构",
+                        prop: "orgName",
+                        span: 12,
+                        editDisplay: false,
+                        addDisplay: false,
+                    },
+                    {
+                        label: "开启预警",
+                        prop: "warnActive",
+                        span: 12,
+                        editDisplay: false,
+                        addDisplay: false,
+                        dicData: [{
+                            label: '已启预警',
+                            value: 1,
+                        }, {
+                            label: '关闭',
+                            value: 0,
+                        }],
+                    },
+                    {
+                        label: "管理人",
+                        prop: "manageName",
+                        span: 8,
+
+                    },
+                    {
+                        label: "联系方式",
+                        prop: "contactPhone",
+                        span: 8,
+                    },
+                    {
+                        label: "备注说明",
+                        prop: "remark",
+                        span: 24,
+                        type: "textarea",
+
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        // ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                // addBtn: this.vaildData(this.permission.docCategory_add, false),
+                // viewBtn: this.vaildData(this.permission.docCategory_view, false),
+                // delBtn: this.vaildData(this.permission.docCategory_delete, false),
+                // editBtn: this.vaildData(this.permission.docCategory_edit, false),
+            };
+        },
+        ids() {
+            let ids = [];
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id);
+            });
+            return ids.join(",");
+        },
+    },
+    mounted() { },
+    created() {
+        this.initData();
+    },
+    methods: {
+        initData() {
+            getDeptTree('000000').then((res) => {
+                const column = this.findObject(this.option.column, "orgId");
+                column.dicData = res.data.data;
+            });
+        },
+
+        confirmConfigClick() {
+            var p = {
+                'id': this.warningConfig.id,
+            };
+            if (this.warningConfig.configSw) {
+                p['warnActive'] = 1;
+            } else {
+                p['warnActive'] = 0;
+            }
+            p['delayTime'] = this.warningConfig.delayTime;
+
+            this.warnSettingDialog = false;
+
+            warnSetting(p).then(
+                () => {
+
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+
+                },
+                (error) => {
+                    window.console.log(error);
+
+                }
+            );
+
+        },
+        warnSetting(item) {
+            this.warningConfig.id = item.id;
+            if (item.warnActive == 0) {
+                this.warningConfig.configSw = false;
+                this.warningConfig.delayTime = item.delayTime;
+            } else {
+                this.warningConfig.configSw = true;
+                this.warningConfig.delayTime = item.delayTime;
+            }
+
+            this.warnSettingDialog = true;
+        },
+        planManage(item) {
+            const planDate = new Date();
+            this.planSetting.orgId = item.orgId;
+            this.planSetting.projectId = item.id;
+            const y = planDate.getFullYear();
+            this.planSetting.planTitle = "" + y + "年" + item.orgName + "(" + item.projectName + ")巡检计划";
+            this.projectPlanDialog = true;
+        },
+        // openInfo(item) {
+        //   this.id = item.id;
+        //   this.infoDialog = true;
+        //   this.$nextTick(() => {
+        //     this.$refs["warningInfo"].init();
+        //   });
+        // },
+        // openOrder(item) {
+        //   this.id = item.id;
+        //   this.orderDialog = true;
+        //   this.$nextTick(() => {
+        //     this.$refs["maintainOrder"].init();
+        //   });
+        // },
+
+        rowSave(row, done, loading) {
+            add(row).then(
+                () => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                    done();
+                },
+                (error) => {
+                    window.console.log(error);
+                    loading();
+                }
+            );
+        },
+        rowUpdate(row, index, done, loading) {
+            update(row).then(
+                () => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                    done();
+                },
+                (error) => {
+                    window.console.log(error);
+                    loading();
+                }
+            );
+        },
+        rowDel(row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(row.id);
+                })
+                .then(() => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                });
+        },
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        handleDelete() {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据");
+                return;
+            }
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(this.ids);
+                })
+                .then(() => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                    this.$refs.crud.toggleSelection();
+                });
+        },
+        beforeOpen(done, type) {
+
+
+            // if (["add", "edit"].includes(type)) {
+            //     this.initData();
+            //   }
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+  

+ 481 - 0
src/views/baseinfo/rtu.vue

@@ -0,0 +1,481 @@
+<!--
+ * @Title: 
+ * @Description: 
+ * @Author: 893699165@qq.com
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <!-- <el-col :span="5">
+          <div class="box">
+            <el-scrollbar>
+            <basic-container>
+              <avue-tree
+                :option="treeOption"
+                :data="treeData"
+                @node-click="nodeClick"
+              />
+            </basic-container>
+          </el-scrollbar>
+          </div>
+        </el-col> -->
+            <el-col :span="24">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page"
+                        :before-open="beforeOpen" ref="crud" v-model="form" :permission="permissionList"
+                        @row-del="rowDel" @row-update="rowUpdate" @row-save="rowSave" @search-change="searchChange"
+                        @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange"
+                        @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"
+                        @before-open="beforeOpen" @select-change="selectChange">
+                        <template slot="state" slot-scope="{ row }">
+                            <el-button type="text" @click="openConfig(row)"> 正常 </el-button>
+                        </template>
+                        <template slot-scope="{ row, index }" slot="menu">
+                            <!-- 
+              <el-button type="text" size="small" @click="warnSetting(row)">预警配置
+              </el-button>
+
+              <el-button type="text" size="small" @click="planManage(row)">巡检计划
+              </el-button> -->
+
+                        </template>
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+        <!-- <el-dialog title="预警配置" :visible.sync="configDialog" width="600px" :before-close="handleClose"
+      :close-on-click-modal="false" append-to-body>
+      <el-form label-width="120px">
+        <el-form-item label="预警总开关">
+          <el-switch v-model="warningConfig.configSw" active-color="#13ce66" inactive-color="#ff4949" active-text="开"
+            inactive-text="关">
+          </el-switch>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="configDialog = false" size="small">取 消</el-button>
+        <el-button type="primary" @click="confirmConfig" size="small">确 定</el-button>
+      </span>
+    </el-dialog>
+
+    <el-dialog title="巡检计划"  :visible.sync="projectPlanDialog" v-if="projectPlanDialog" width="60%" height="60%" :close-on-click-modal="false"
+      append-to-body>
+      <projectPlan :planSetting="planSetting"  
+        ref="projectPlan"></projectPlan>
+    </el-dialog> -->
+
+
+    </div>
+</template>
+  
+<script>
+import { getPage, getRtuKindList, getDetail, add, update, remove } from "@/api/baseinfo/rtu.js";
+
+import { getUserProjectList } from "@/api/baseinfo/project.js";
+
+// import {
+//   getList,
+// } from "@/api/system/dictbiz.js";
+
+// import {
+//   getDeptTree,
+// } from "@/api/system/dept.js";
+
+// import projectPlan from '@/views/project/projectPlan.vue'
+
+export default {
+    components: {
+        // projectPlan,
+    },
+    data() {
+        return {
+            rtuKinds: [],
+            projectPlanDialog: false,
+            orderDialog: false,
+            warningConfig: {
+                configSw: false,
+                code: "",
+            },
+            planSetting: {
+                orgId: 0,
+                projectId: 0,
+                planTitle: ''
+            },
+            infoDialog: false,
+            configDialog: false,
+            id: "",
+            editForm: {},
+            editDialog: false,
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            treeOption: {
+                nodeKey: "id",
+                lazy: true,
+                treeLoad: function (node, resolve) {
+                    const parentId = node.level === 0 ? 0 : node.data.id;
+                    console.log(parentId)
+                    console.log(resolve)
+                    // getDeptLazyTree(parentId).then((res) => {
+                    //   resolve(
+                    //     res.data.data.map((item) => {
+                    //       return {
+                    //         ...item,
+                    //         leaf: !item.hasChildren,
+                    //       };
+                    //     })
+                    //   );
+                    // });
+                },
+                addBtn: false,
+                menu: false,
+                size: "small",
+                props: {
+                    labelText: "标题",
+                    label: "title",
+                    value: "value",
+                    children: "children",
+                },
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                // height: "auto",
+                height: 600,
+                calcHeight: 30,
+                align: "center",
+                headerAlign: "center",
+                lazy: true,
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                tree: true,
+                border: true,
+                index: true,
+                selection: true,
+                viewBtn: false,
+                viewTitle: "测站信息",
+                editBtn: true,
+                delBtn: true,
+                menuWidth: 220,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "站点名称",
+                        prop: "rtuName",
+                        search: true,
+                        span: 12,
+                    },
+                    {
+                        label: "站点编码",
+                        prop: "rtuCode",
+                        search: true,
+                        span: 12,
+                    },
+                    // {
+                    //   label: "所属机构",
+                    //   prop: "orgName",
+                    //   span: 12,
+                    //   editDisplay: false,
+                    //   addDisplay: false,
+
+
+                    // },
+                    {
+                        label: "项目",
+                        prop: "projectId",
+                        span: 12,
+                        hide: true,
+                        viewDisplay: false,
+                        dicData: [],
+                        type: "select",
+                        editDisplay: true,
+                        addDisplay: true,
+
+                        props: {
+                            label: "projectName",
+                            value: "id",
+                        },
+                        rules: [
+                            {
+                                required: false,
+                                message: "请选择项目",
+                                trigger: "click",
+                            },
+                        ],
+                    },
+                    {
+                        label: "项目名称",
+                        prop: "projectName",
+                        search: true,
+                        span: 12,
+                        editDisplay: false,
+                        addDisplay: false,
+                    },
+                    {
+                        label: "行政区",
+                        prop: "areaName",
+                        span: 12,
+                        editDisplay: false,
+                        addDisplay: false,
+                    },
+                    {
+                        label: "测站类型",
+                        prop: "rtuKinds",
+                        span: 12,
+                        hide: true,
+                        viewDisplay: false,
+                        dicData: [],
+                        type: "checkbox",
+                        addDisabled: false,
+                        props: {
+                            label: "dictValue",
+                            value: "id",
+                        },
+
+                    },
+                    {
+                        label: "测站类型",
+                        prop: "rtuKindDesc",
+                        span: 8,
+                        editDisplay: false,
+                        addDisplay: false,
+                    },
+                    {
+                        label: "备注说明",
+                        prop: "remark",
+                        span: 12,
+                        type: "textarea",
+
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        // ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                // addBtn: this.vaildData(this.permission.docCategory_add, false),
+                // viewBtn: this.vaildData(this.permission.docCategory_view, false),
+                // delBtn: this.vaildData(this.permission.docCategory_delete, false),
+                // editBtn: this.vaildData(this.permission.docCategory_edit, false),
+            };
+        },
+        ids() {
+            let ids = [];
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id);
+            });
+            return ids.join(",");
+        },
+    },
+    mounted() { },
+    created() {
+        this.initData();
+    },
+
+    methods: {
+        initData() {
+
+            getUserProjectList().then((res) => {
+                const column = this.findObject(this.option.column, "projectId");
+                column.dicData = res.data.data;
+            });
+            //     getDeptTree('000000').then((res) => {
+            //   const column = this.findObject(this.option.column, "projectId");
+            //   column.dicData = res.data.data;
+            // });
+
+
+
+            getRtuKindList('rtu_kind').then((res) => {
+                const column = this.findObject(this.option.column, "rtuKinds");
+                column.dicData = res.data.data;
+                //this.rtuKinds= res.data.data; 
+
+
+                //this.$message.success(this.form)
+            });
+
+
+        },
+
+        confirmConfig() {
+
+        },
+        warnSetting(item) {
+            this.configSw = item.configSw;
+            this.configDialog = true;
+        },
+        planManage(item) {
+            const planDate = new Date();
+            this.planSetting.orgId = item.orgId;
+            this.planSetting.projectId = item.id;
+            const y = planDate.getFullYear();
+            this.planSetting.planTitle = "" + y + "年" + item.orgName + "(" + item.projectName + ")巡检计划";
+            this.projectPlanDialog = true;
+        },
+        // openInfo(item) {
+        //   this.id = item.id;
+        //   this.infoDialog = true;
+        //   this.$nextTick(() => {
+        //     this.$refs["warningInfo"].init();
+        //   });
+        // },
+        // openOrder(item) {
+        //   this.id = item.id;
+        //   this.orderDialog = true;
+        //   this.$nextTick(() => {
+        //     this.$refs["maintainOrder"].init();
+        //   });
+        // },
+
+        rowSave(row, done, loading) {
+            add(row).then(
+                () => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                    done();
+                },
+                (error) => {
+                    window.console.log(error);
+                    loading();
+                }
+            );
+        },
+        rowUpdate(row, index, done, loading) {
+            update(row).then(
+                () => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                    done();
+                },
+                (error) => {
+                    window.console.log(error);
+                    loading();
+                }
+            );
+        },
+        rowDel(row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(row.id);
+                })
+                .then(() => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                });
+        },
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.$message.success("ssssssssssssssssssssssssss")
+            this.selectionList = list;
+        },
+        selectChange(item) {
+            this.$message.success("sssssssssssssssss" + item)
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        handleDelete() {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据");
+                return;
+            }
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(this.ids);
+                })
+                .then(() => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                    this.$refs.crud.toggleSelection();
+                });
+        },
+        beforeOpen(done, type) {
+
+
+            // if (["add", "edit"].includes(type)) {
+            //     this.initData();
+            //   }
+
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                    //   this.from['rtuKinds']=this.rtuKinds;
+                    //this.$message.success(this.form)
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+  

+ 436 - 0
src/views/baseinfo/servicePerson.vue

@@ -0,0 +1,436 @@
+<!--
+ * @Title: 
+ * @Description: 
+ * @Author: 893699165@qq.com
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <!-- <el-col :span="5">
+          <div class="box">
+            <el-scrollbar>
+            <basic-container>
+              <avue-tree
+                :option="treeOption"
+                :data="treeData"
+                @node-click="nodeClick"
+              />
+            </basic-container>
+          </el-scrollbar>
+          </div>
+        </el-col> -->
+            <el-col :span="24">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page"
+                        :before-open="beforeOpen" ref="crud" v-model="form" :permission="permissionList"
+                        @row-del="rowDel" @row-update="rowUpdate" @row-save="rowSave" @search-change="searchChange"
+                        @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange"
+                        @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"
+                        @before-open="beforeOpen" @select-change="selectChange">
+                        <template slot="state" slot-scope="{ row }">
+                            <el-button type="text" @click="openConfig(row)"> 正常 </el-button>
+                        </template>
+                        <template slot-scope="{ row, index }" slot="menu">
+                            <!-- 
+              <el-button type="text" size="small" @click="warnSetting(row)">预警配置
+              </el-button>
+
+              <el-button type="text" size="small" @click="planManage(row)">巡检计划
+              </el-button> -->
+
+                        </template>
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+        <!-- <el-dialog title="预警配置" :visible.sync="configDialog" width="600px" :before-close="handleClose"
+      :close-on-click-modal="false" append-to-body>
+      <el-form label-width="120px">
+        <el-form-item label="预警总开关">
+          <el-switch v-model="warningConfig.configSw" active-color="#13ce66" inactive-color="#ff4949" active-text="开"
+            inactive-text="关">
+          </el-switch>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="configDialog = false" size="small">取 消</el-button>
+        <el-button type="primary" @click="confirmConfig" size="small">确 定</el-button>
+      </span>
+    </el-dialog>
+
+    <el-dialog title="巡检计划"  :visible.sync="projectPlanDialog" v-if="projectPlanDialog" width="60%" height="60%" :close-on-click-modal="false"
+      append-to-body>
+      <projectPlan :planSetting="planSetting"  
+        ref="projectPlan"></projectPlan>
+    </el-dialog> -->
+
+
+    </div>
+</template>
+  
+<script>
+// import { getRtuList, getRtuKindList,getDetail, add, update, remove } from "@/api/baseinfo/rtu.js";
+
+import { getOrgTree, getServicePersonList, getDetail, add, update, remove } from "@/api/baseinfo/servicePerson.js";
+
+// import {
+//   getList,
+// } from "@/api/system/dictbiz.js";
+
+// import {
+//   getDeptTree,
+// } from "@/api/system/dept.js";
+
+// import projectPlan from '@/views/project/projectPlan.vue'
+
+export default {
+    components: {
+        // projectPlan,
+    },
+    data() {
+        return {
+            rtuKinds: [],
+            projectPlanDialog: false,
+            orderDialog: false,
+            warningConfig: {
+                configSw: false,
+                code: "",
+            },
+            planSetting: {
+                orgId: 0,
+                projectId: 0,
+                planTitle: ''
+            },
+            infoDialog: false,
+            configDialog: false,
+            id: "",
+            editForm: {},
+            editDialog: false,
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            treeOption: {
+                nodeKey: "id",
+                lazy: true,
+                treeLoad: function (node, resolve) {
+                    const parentId = node.level === 0 ? 0 : node.data.id;
+                    console.log(parentId)
+                    console.log(resolve)
+                    // getDeptLazyTree(parentId).then((res) => {
+                    //   resolve(
+                    //     res.data.data.map((item) => {
+                    //       return {
+                    //         ...item,
+                    //         leaf: !item.hasChildren,
+                    //       };
+                    //     })
+                    //   );
+                    // });
+                },
+                addBtn: false,
+                menu: false,
+                size: "small",
+                props: {
+                    labelText: "标题",
+                    label: "title",
+                    value: "value",
+                    children: "children",
+                },
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                // height: "auto",
+                height: 500,
+                calcHeight: 30,
+                align: "center",
+                headerAlign: "center",
+                // lazy: true,
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                // tree: true,
+                border: true,
+                index: true,
+                selection: true,
+                viewBtn: false,
+                viewTitle: "运维人员信息",
+                editBtn: true,
+                delBtn: true,
+                menuWidth: 220,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "帐号",
+                        prop: "userAccount",
+                        span: 12,
+                        tip: "密码默认为帐号+@2022",
+                        tipPlacement: 'right-end',
+                        hide: true,
+                        editDisabled: true,
+                    },
+                    {
+                        label: "名称",
+                        prop: "personName",
+                        search: true,
+                        span: 24,
+                    },
+                    {
+                        label: "联系电话",
+                        prop: "contactPhone",
+                        search: true,
+                        span: 12,
+                        editDisplay: true,
+                        addDisplay: true,
+                    },
+                    {
+                        label: "邮箱",
+                        prop: "mail",
+                        span: 12,
+                        editDisplay: true,
+                        addDisplay: true,
+                    },
+                    {
+                        label: "所属机构",
+                        prop: "orgId",
+                        span: 24,
+                        hide: true,
+                        viewDisplay: false,
+
+                        dicData: [],
+                        type: "select",
+
+                        addDisabled: false,
+                        props: {
+                            label: "deptName",
+                            value: "id"
+                        },
+                        rules: [
+                            {
+                                required: false,
+                                message: "请选择机构",
+                                trigger: "click",
+                            },
+                        ],
+                    },
+                    {
+                        label: "备注说明",
+                        prop: "remark",
+                        span: 24,
+                        type: "textarea",
+                        editDisplay: true,
+                        addDisplay: true,
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        // ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                // addBtn: this.vaildData(this.permission.docCategory_add, false),
+                // viewBtn: this.vaildData(this.permission.docCategory_view, false),
+                // delBtn: this.vaildData(this.permission.docCategory_delete, false),
+                // editBtn: this.vaildData(this.permission.docCategory_edit, false),
+            };
+        },
+        ids() {
+            let ids = [];
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id);
+            });
+            return ids.join(",");
+        },
+    },
+    mounted() { },
+    created() {
+        this.initData();
+    },
+
+    methods: {
+        initData() {
+            getOrgTree().then((res) => {
+                const column = this.findObject(this.option.column, "orgId");
+                column.dicData = res.data.data;
+            });
+        },
+
+        confirmConfig() {
+
+        },
+        warnSetting(item) {
+            this.configSw = item.configSw;
+            this.configDialog = true;
+        },
+        planManage(item) {
+            const planDate = new Date();
+            this.planSetting.orgId = item.orgId;
+            this.planSetting.projectId = item.id;
+            const y = planDate.getFullYear();
+            this.planSetting.planTitle = "" + y + "年" + item.orgName + "(" + item.projectName + ")巡检计划";
+            this.projectPlanDialog = true;
+        },
+        // openInfo(item) {
+        //   this.id = item.id;
+        //   this.infoDialog = true;
+        //   this.$nextTick(() => {
+        //     this.$refs["warningInfo"].init();
+        //   });
+        // },
+        // openOrder(item) {
+        //   this.id = item.id;
+        //   this.orderDialog = true;
+        //   this.$nextTick(() => {
+        //     this.$refs["maintainOrder"].init();
+        //   });
+        // },
+
+        rowSave(row, done, loading) {
+            add(row).then(
+                () => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                    done();
+                },
+                (error) => {
+                    window.console.log(error);
+                    loading();
+                }
+            );
+        },
+        rowUpdate(row, index, done, loading) {
+            update(row).then(
+                () => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                    done();
+                },
+                (error) => {
+                    window.console.log(error);
+                    loading();
+                }
+            );
+        },
+        rowDel(row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(row.id);
+                })
+                .then(() => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                });
+        },
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.$message.success("ssssssssssssssssssssssssss")
+            this.selectionList = list;
+        },
+        selectChange(item) {
+            this.$message.success("sssssssssssssssss" + item)
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        handleDelete() {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据");
+                return;
+            }
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(this.ids);
+                })
+                .then(() => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                    this.$refs.crud.toggleSelection();
+                });
+        },
+        beforeOpen(done, type) {
+
+
+            // if (["add", "edit"].includes(type)) {
+            //     this.initData();
+            //   }
+
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                    //   this.from['rtuKinds']=this.rtuKinds;
+                    //this.$message.success(this.form)
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            getServicePersonList(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+  

+ 271 - 0
src/views/business/data/groundDataCache.vue

@@ -0,0 +1,271 @@
+<!--
+ * @Title: 
+ * @Description: 
+ * @Author: 893699165@qq.com
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="5">
+                <div class="box">
+                    <el-scrollbar>
+                        <basic-container>
+                            <avue-tree :option="treeOption" :data="projectTreeData" @node-click="nodeClick">
+                                <span class="el-tree-node__label" slot-scope="{ node, data }">
+                                    <span>
+                                        <i class="el-icon-user-solid"></i>
+                                        {{ (node || {}).label }}
+                                    </span>
+                                </span>
+                                <template slot-scope="scope" slot="menu">
+                                    <div class="avue-tree__item" @click.native="tip(scope.node,scope.data)">自定义按钮</div>
+                                </template>
+                            </avue-tree>
+                        </basic-container>
+                    </el-scrollbar>
+                </div>
+            </el-col>
+            <el-col :span="19">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page"
+                        :before-open="beforeOpen" ref="crud" v-model="form" :permission="permissionList"
+                        @row-del="rowDel" @row-update="rowUpdate" @row-save="rowSave" @search-change="searchChange"
+                        @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange"
+                        @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"
+                        @select-change="selectChange">
+
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+
+    </div>
+</template>
+  
+<script>
+import { getPage, } from "@/api/data/dataGround.js";
+import { getTree } from "@/api/business/manage/manage.js";
+
+export default {
+    components: {
+
+    },
+    data() {
+        return {
+
+            id: "",
+            editForm: {},
+            editDialog: false,
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            treeCache: {
+                orgId: '',
+                projectId: '',
+            },
+            projectTreeData: [
+
+            ],
+            treeOption: {
+                nodeKey: "id",
+                lazy: false,
+                defaultExpandAll: true,
+                addBtn: false,
+                menu: false,
+                size: "small",
+                props: {
+                    labelText: "标题",
+                    label: "title",
+                    value: "value",
+                    children: "children",
+                },
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                height: "auto",
+                //height: 600,
+                calcHeight: 30,
+                align: "center",
+                headerAlign: "center",
+                lazy: false,
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                tree: true,
+                border: true,
+                index: true,
+                selection: true,
+                viewBtn: false,
+                viewTitle: "测站信息",
+                editBtn: false,
+                delBtn: false,
+                addBtn: false,
+                menu: false,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "站点名称",
+                        prop: "rtuName",
+                        search: true,
+                        span: 12,
+                    },
+                    {
+                        label: "站点编码",
+                        prop: "rtuCode",
+
+                        span: 12,
+                    },
+                    {
+                        label: "垂线平均含水量",
+                        prop: "vtavslm",
+                        span: 8,
+                    },
+                    {
+                        label: "表层含水量",
+                        prop: "srlslm",
+                        span: 8,
+                    },
+                    {
+                        label: "10CM深度含水量",
+                        prop: "slm10",
+                        span: 8,
+                    },
+                    {
+                        label: "20CM深度含水量",
+                        prop: "slm20",
+                        span: 8,
+                    },
+                    {
+                        label: "30CM深度含水量",
+                        prop: "slm30",
+                        span: 8,
+                    },
+                    {
+                        label: "40CM深度含水量",
+                        prop: "slm40",
+                        span: 8,
+                    },
+                    {
+                        label: "60CM深度含水量",
+                        prop: "slm60",
+                        span: 8,
+                    },
+                    {
+                        label: "80CM深度含水量",
+                        prop: "slm80",
+                        span: 8,
+                    },
+                    {
+                        label: "100CM深度含水量",
+                        prop: "slm100",
+                        span: 8,
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        // ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                // addBtn: this.vaildData(this.permission.docCategory_add, false),
+                // viewBtn: this.vaildData(this.permission.docCategory_view, false),
+                // delBtn: this.vaildData(this.permission.docCategory_delete, false),
+                // editBtn: this.vaildData(this.permission.docCategory_edit, false),
+            };
+        },
+        ids() {
+            let ids = [];
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id);
+            });
+            return ids.join(",");
+        },
+    },
+    mounted() { },
+    created() {
+        this.initTree();
+    },
+
+    methods: {
+
+        initTree() {
+            getTree(
+            ).then((res) => {
+                const data = res.data.data;
+                this.projectTreeData = data;
+            });
+        },
+        nodeClick(data) {
+            this.treeCache.orgId = data.orgId;
+            this.treeCache.projectId = data.projectId;
+            //this.$message.success(JSON.stringify(data))
+            this.query = {};
+            this.page.currentPage = 1;
+            this.onLoad(this.page);
+        },
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.$message.success("ssssssssssssssssssssssssss")
+            this.selectionList = list;
+        },
+        selectChange(item) {
+            this.$message.success("sssssssssssssssss" + item)
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['orgId'] = this.treeCache.orgId;
+            params['projectId'] = this.treeCache.projectId;
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+  

+ 235 - 0
src/views/business/data/rainDataCache.vue

@@ -0,0 +1,235 @@
+<!--
+ * @Title: 
+ * @Description: 
+ * @Author: 893699165@qq.com
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="5">
+                <div class="box">
+                    <el-scrollbar>
+                        <basic-container>
+                            <avue-tree :option="treeOption" :data="projectTreeData" @node-click="nodeClick">
+                                <span class="el-tree-node__label" slot-scope="{ node, data }">
+                                    <span>
+                                        <i class="el-icon-user-solid"></i>
+                                        {{ (node || {}).label }}
+                                    </span>
+                                </span>
+                                <template slot-scope="scope" slot="menu">
+                                    <div class="avue-tree__item" @click.native="tip(scope.node,scope.data)">自定义按钮</div>
+                                </template>
+                            </avue-tree>
+                        </basic-container>
+                    </el-scrollbar>
+                </div>
+            </el-col>
+            <el-col :span="19">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page"
+                        :before-open="beforeOpen" ref="crud" v-model="form" :permission="permissionList"
+                        @row-del="rowDel" @row-update="rowUpdate" @row-save="rowSave" @search-change="searchChange"
+                        @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange"
+                        @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"
+                        @select-change="selectChange">
+
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+
+    </div>
+</template>
+  
+<script>
+import { getPage, } from "@/api/data/dataRain.js";
+import { getTree } from "@/api/business/manage/manage.js";
+
+export default {
+    components: {
+
+    },
+    data() {
+        return {
+
+            id: "",
+            editForm: {},
+            editDialog: false,
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            treeCache: {
+                orgId: '',
+                projectId: '',
+            },
+            projectTreeData: [
+
+            ],
+            treeOption: {
+                nodeKey: "id",
+                lazy: false,
+                defaultExpandAll: true,
+                addBtn: false,
+                menu: false,
+                size: "small",
+                props: {
+                    labelText: "标题",
+                    label: "title",
+                    value: "value",
+                    children: "children",
+                },
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                height: "auto",
+                //height: 600,
+                calcHeight: 30,
+                align: "center",
+                headerAlign: "center",
+                lazy: false,
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                tree: true,
+                border: true,
+                index: true,
+                selection: true,
+                viewBtn: false,
+                viewTitle: "测站信息",
+                editBtn: false,
+                delBtn: false,
+                addBtn: false,
+                menu: false,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "站点名称",
+                        prop: "rtuName",
+                        search: true,
+                        span: 12,
+                    },
+                    {
+                        label: "站点编码",
+                        prop: "rtuCode",
+                        span: 12,
+                    },
+                    {
+                        label: "时段降水",
+                        prop: "drp",
+                        span: 8,
+                    },
+                    {
+                        label: "上报时间",
+                        prop: "tm",
+                        span: 8,
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        // ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                // addBtn: this.vaildData(this.permission.docCategory_add, false),
+                // viewBtn: this.vaildData(this.permission.docCategory_view, false),
+                // delBtn: this.vaildData(this.permission.docCategory_delete, false),
+                // editBtn: this.vaildData(this.permission.docCategory_edit, false),
+            };
+        },
+        ids() {
+            let ids = [];
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id);
+            });
+            return ids.join(",");
+        },
+    },
+    mounted() { },
+    created() {
+        this.initTree();
+    },
+
+    methods: {
+
+        initTree() {
+            getTree(
+            ).then((res) => {
+                const data = res.data.data;
+                this.projectTreeData = data;
+            });
+        },
+        nodeClick(data) {
+            this.treeCache.orgId = data.orgId;
+            this.treeCache.projectId = data.projectId;
+            //this.$message.success(JSON.stringify(data))
+            this.query = {};
+            this.page.currentPage = 1;
+            this.onLoad(this.page);
+        },
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.$message.success("ssssssssssssssssssssssssss")
+            this.selectionList = list;
+        },
+        selectChange(item) {
+            this.$message.success("sssssssssssssssss" + item)
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['orgId'] = this.treeCache.orgId;
+            params['projectId'] = this.treeCache.projectId;
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+  

+ 235 - 0
src/views/business/data/riverDataCache.vue

@@ -0,0 +1,235 @@
+<!--
+ * @Title: 
+ * @Description: 
+ * @Author: 893699165@qq.com
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="5">
+                <div class="box">
+                    <el-scrollbar>
+                        <basic-container>
+                            <avue-tree :option="treeOption" :data="projectTreeData" @node-click="nodeClick">
+                                <span class="el-tree-node__label" slot-scope="{ node, data }">
+                                    <span>
+                                        <i class="el-icon-user-solid"></i>
+                                        {{ (node || {}).label }}
+                                    </span>
+                                </span>
+                                <template slot-scope="scope" slot="menu">
+                                    <div class="avue-tree__item" @click.native="tip(scope.node,scope.data)">自定义按钮</div>
+                                </template>
+                            </avue-tree>
+                        </basic-container>
+                    </el-scrollbar>
+                </div>
+            </el-col>
+            <el-col :span="19">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page"
+                        :before-open="beforeOpen" ref="crud" v-model="form" :permission="permissionList"
+                        @row-del="rowDel" @row-update="rowUpdate" @row-save="rowSave" @search-change="searchChange"
+                        @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange"
+                        @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"
+                        @select-change="selectChange">
+
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+
+    </div>
+</template>
+  
+<script>
+import { getPage, } from "@/api/data/dataRiver.js";
+import { getTree } from "@/api/business/manage/manage.js";
+
+export default {
+    components: {
+
+    },
+    data() {
+        return {
+
+            id: "",
+            editForm: {},
+            editDialog: false,
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            treeCache: {
+                orgId: '',
+                projectId: '',
+            },
+            projectTreeData: [
+
+            ],
+            treeOption: {
+                nodeKey: "id",
+                lazy: false,
+                defaultExpandAll: true,
+                addBtn: false,
+                menu: false,
+                size: "small",
+                props: {
+                    labelText: "标题",
+                    label: "title",
+                    value: "value",
+                    children: "children",
+                },
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                height: "auto",
+                //height: 600,
+                calcHeight: 30,
+                align: "center",
+                headerAlign: "center",
+                lazy: false,
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                tree: true,
+                border: true,
+                index: true,
+                selection: true,
+                viewBtn: false,
+                viewTitle: "测站信息",
+                editBtn: false,
+                delBtn: false,
+                addBtn: false,
+                menu: false,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "站点名称",
+                        prop: "rtuName",
+                        search: true,
+                        span: 12,
+                    },
+                    {
+                        label: "站点编码",
+                        prop: "rtuCode",
+                        span: 12,
+                    },
+                    {
+                        label: "河道水位",
+                        prop: "z",
+                        span: 8,
+                    },
+                    {
+                        label: "上报时间",
+                        prop: "tm",
+                        span: 8,
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        // ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                // addBtn: this.vaildData(this.permission.docCategory_add, false),
+                // viewBtn: this.vaildData(this.permission.docCategory_view, false),
+                // delBtn: this.vaildData(this.permission.docCategory_delete, false),
+                // editBtn: this.vaildData(this.permission.docCategory_edit, false),
+            };
+        },
+        ids() {
+            let ids = [];
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id);
+            });
+            return ids.join(",");
+        },
+    },
+    mounted() { },
+    created() {
+        this.initTree();
+    },
+
+    methods: {
+
+        initTree() {
+            getTree(
+            ).then((res) => {
+                const data = res.data.data;
+                this.projectTreeData = data;
+            });
+        },
+        nodeClick(data) {
+            this.treeCache.orgId = data.orgId;
+            this.treeCache.projectId = data.projectId;
+            //this.$message.success(JSON.stringify(data))
+            this.query = {};
+            this.page.currentPage = 1;
+            this.onLoad(this.page);
+        },
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.$message.success("ssssssssssssssssssssssssss")
+            this.selectionList = list;
+        },
+        selectChange(item) {
+            this.$message.success("sssssssssssssssss" + item)
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['orgId'] = this.treeCache.orgId;
+            params['projectId'] = this.treeCache.projectId;
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+  

+ 235 - 0
src/views/business/data/rsvrDataCache.vue

@@ -0,0 +1,235 @@
+<!--
+ * @Title: 
+ * @Description: 
+ * @Author: 893699165@qq.com
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="5">
+                <div class="box">
+                    <el-scrollbar>
+                        <basic-container>
+                            <avue-tree :option="treeOption" :data="projectTreeData" @node-click="nodeClick">
+                                <span class="el-tree-node__label" slot-scope="{ node, data }">
+                                    <span>
+                                        <i class="el-icon-user-solid"></i>
+                                        {{ (node || {}).label }}
+                                    </span>
+                                </span>
+                                <template slot-scope="scope" slot="menu">
+                                    <div class="avue-tree__item" @click.native="tip(scope.node,scope.data)">自定义按钮</div>
+                                </template>
+                            </avue-tree>
+                        </basic-container>
+                    </el-scrollbar>
+                </div>
+            </el-col>
+            <el-col :span="19">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page"
+                        :before-open="beforeOpen" ref="crud" v-model="form" :permission="permissionList"
+                        @row-del="rowDel" @row-update="rowUpdate" @row-save="rowSave" @search-change="searchChange"
+                        @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange"
+                        @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"
+                        @select-change="selectChange">
+
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+
+    </div>
+</template>
+  
+<script>
+import { getPage, } from "@/api/data/dataRsvr.js";
+import { getTree } from "@/api/business/manage/manage.js";
+
+export default {
+    components: {
+
+    },
+    data() {
+        return {
+
+            id: "",
+            editForm: {},
+            editDialog: false,
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            treeCache: {
+                orgId: '',
+                projectId: '',
+            },
+            projectTreeData: [
+
+            ],
+            treeOption: {
+                nodeKey: "id",
+                lazy: false,
+                defaultExpandAll: true,
+                addBtn: false,
+                menu: false,
+                size: "small",
+                props: {
+                    labelText: "标题",
+                    label: "title",
+                    value: "value",
+                    children: "children",
+                },
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                height: "auto",
+                //height: 600,
+                calcHeight: 30,
+                align: "center",
+                headerAlign: "center",
+                lazy: false,
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                tree: true,
+                border: true,
+                index: true,
+                selection: true,
+                viewBtn: false,
+                viewTitle: "测站信息",
+                editBtn: false,
+                delBtn: false,
+                addBtn: false,
+                menu: false,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "站点名称",
+                        prop: "rtuName",
+                        search: true,
+                        span: 12,
+                    },
+                    {
+                        label: "站点编码",
+                        prop: "rtuCode",
+                        span: 12,
+                    },
+                    {
+                        label: "库上水位",
+                        prop: "rz",
+                        span: 8,
+                    },
+                    {
+                        label: "上报时间",
+                        prop: "tm",
+                        span: 8,
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        // ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                // addBtn: this.vaildData(this.permission.docCategory_add, false),
+                // viewBtn: this.vaildData(this.permission.docCategory_view, false),
+                // delBtn: this.vaildData(this.permission.docCategory_delete, false),
+                // editBtn: this.vaildData(this.permission.docCategory_edit, false),
+            };
+        },
+        ids() {
+            let ids = [];
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id);
+            });
+            return ids.join(",");
+        },
+    },
+    mounted() { },
+    created() {
+        this.initTree();
+    },
+
+    methods: {
+
+        initTree() {
+            getTree(
+            ).then((res) => {
+                const data = res.data.data;
+                this.projectTreeData = data;
+            });
+        },
+        nodeClick(data) {
+            this.treeCache.orgId = data.orgId;
+            this.treeCache.projectId = data.projectId;
+            //this.$message.success(JSON.stringify(data))
+            this.query = {};
+            this.page.currentPage = 1;
+            this.onLoad(this.page);
+        },
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.$message.success("ssssssssssssssssssssssssss")
+            this.selectionList = list;
+        },
+        selectChange(item) {
+            this.$message.success("sssssssssssssssss" + item)
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['orgId'] = this.treeCache.orgId;
+            params['projectId'] = this.treeCache.projectId;
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+  

+ 463 - 0
src/views/business/inspection/index.vue

@@ -0,0 +1,463 @@
+<!--
+ * @Title: 
+ * @Description: 
+ * @Author: 893699165@qq.com
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row type="flex" justify="center">
+            <el-col :span="19" style="padding-left:8px;">
+                <avue-form :option="planOption" v-model="editForm" ref="editForm"></avue-form>
+            </el-col>
+            <el-col :span="5">
+                <div style="display:flex; justify-content: center;align-items: center;height: 100%;">
+                    <el-button type="primary" @click="openPlanManage()" plain>巡检计划管理
+                    </el-button>
+                </div>
+
+            </el-col>
+        </el-row>
+        <el-row>
+            <el-col :span="5">
+                <div class="box">
+                    <el-scrollbar>
+                        <basic-container>
+                            <avue-tree :option="treeOption" :data="projectTreeData" @node-click="nodeClick">
+                                <span class="el-tree-node__label" slot-scope="{ node, data }">
+                                    <span>
+                                        <i class="el-icon-user-solid"></i>
+                                        {{ (node || {}).label }}
+                                    </span>
+                                </span>
+                                <template slot-scope="scope" slot="menu">
+                                    <div class="avue-tree__item" @click.native="tip(scope.node,scope.data)">自定义按钮</div>
+                                </template>
+                            </avue-tree>
+                        </basic-container>
+                    </el-scrollbar>
+                </div>
+            </el-col>
+            <el-col :span="19">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :page.sync="page" :data="data" ref="crud"
+                        v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate"
+                        @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
+                        @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+                        @refresh-change="refreshChange" @on-load="onLoad">
+                        <template slot-scope="{ row, index }" slot="menu">
+                            <el-button type="text" size="small" @click="openReportDetail(row)">填报详情
+                            </el-button>
+                            <!-- <el-button type="text" size="small" @click="orderOff(row)">人工关闭
+      </el-button> -->
+                        </template>
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+        <!-- <el-dialog
+  title="预警配置"
+  :visible.sync="configDialog"
+  width="600px"
+  :before-close="handleClose"
+  :close-on-click-modal="false"
+  append-to-body
+>
+  <el-form label-width="120px">
+    <el-form-item label="预警总开关">
+      <el-switch
+        v-model="warningConfig.configSw"
+        active-color="#13ce66"
+        inactive-color="#ff4949"
+        active-text="开"
+        inactive-text="关"
+      >
+      </el-switch>
+    </el-form-item>
+  </el-form>
+  <span slot="footer" class="dialog-footer">
+    <el-button @click="configDialog = false" size="small">取 消</el-button>
+    <el-button type="primary" @click="confirmConfig" size="small"
+      >确 定</el-button
+    >
+  </span>
+</el-dialog> -->
+        <!-- <el-dialog title="预警信息" :visible.sync="warnInfoDialog" width="80%" :close-on-click-modal="false" append-to-body>
+  <rtuWarningList :rtuCode="rtuCode" ref="rtuWarningList"></rtuWarningList>
+</el-dialog> -->
+
+        <el-dialog title="巡检填报记录" :visible.sync="reportDialog" v-if="reportDialog" width="80%"
+            :close-on-click-modal="false" append-to-body>
+            <inspectionRportDetail :id="id" ref="inspectionRportDetail"></inspectionRportDetail>
+        </el-dialog>
+
+
+        <el-dialog title="巡检计划" :visible.sync="projectPlanDialog" v-if="projectPlanDialog" width="60%"
+            :close-on-click-modal="false" append-to-body>
+            <ProjectPlan :planSetting="planSetting" rel="planSetting"></ProjectPlan>
+        </el-dialog>
+
+    </div>
+
+</template>
+<script>
+import { getList as getPlanList } from "@/api/project/projectPlan.js";
+import { getTree } from "@/api/business/manage/manage.js";
+import projectPlan from '@/views/project/projectPlan.vue'
+import {
+    getPage,
+    getDetail,
+} from "@/api/business/inspection/inspection";
+// import { mapGetters } from "vuex";
+import inspectionRportDetail from "./inspectionRportDetail";
+import ProjectPlan from "../../project/projectPlan.vue";
+//let baseUrl = 'http://localhost:40004/api/galaxy-test'
+export default {
+    components: {
+        inspectionRportDetail,
+        projectPlan,
+        ProjectPlan
+    },
+    data() {
+        return {
+            id: '',
+            projectPlanDialog: false,
+
+            planSetting: {
+                orgId: 0,
+                projectId: 0,
+                planTitle: ''
+            },
+
+            planOption: {
+                submitBtn: false,
+                emptyBtn: false,
+                column: [{
+                    label: '巡检计划',
+                    prop: 'planId',
+                    type: 'select',
+
+                    dicUrl: `./api/galaxy-test/equipment/inspection/plan/all/list`,
+                    props: {
+                        label: "planTitle",
+                        value: "id",
+                    }
+                }]
+            },
+            planId: '',
+
+            reportDialog: false,
+
+            editForm: {
+
+            },
+            editDialog: false,
+            form: {},
+
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            treeCache: {
+                orgId: '',
+                projectId: '',
+            },
+            projectTreeData: [
+
+            ],
+            treeOption: {
+                nodeKey: "id",
+                lazy: false,
+
+                // treeLoad: function (node, resolve) {
+                // const parentId = node.level === 0 ? 0 : node.data.id;
+                // getDeptLazyTree(parentId).then((res) => {
+                // resolve(
+                // res.data.data.map((item) => {
+                // return {
+                // ...item,
+                // leaf: !item.hasChildren,
+                // };
+                // })
+                // );
+                // });
+                // },
+                defaultExpandAll: true,
+                addBtn: false,
+                menu: false,
+                size: "small",
+                props: {
+                    labelText: "标题",
+                    label: "title",
+                    value: "value",
+                    children: "children",
+                },
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                // height: "auto",
+                calcHeight: 30,
+                align: "center",
+                headerAlign: "center",
+
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                addBtn: false,
+
+                border: true,
+                index: true,
+                height: 500,
+                editBtn: false,
+                delBtn: false,
+                menuWidth: 160,
+                dialogType: "drawer",
+
+                dialogClickModal: false,
+                column: [
+                    //   {
+                    //     label: "计划名称",
+                    // prop: "planId",
+                    // span: 12,
+                    // type: "select",
+                    // hide: true,
+                    // search:true,
+                    // dicUrl:`./api/galaxy-test/equipment/inspection/plan/all/list`,
+                    // props:{
+                    //   label:"planTitle",
+                    //   value:"id",
+                    // }
+                    //   },
+                    {
+
+                        label: "测站名称",
+                        prop: "rtuName",
+                        span: 12,
+                        search: true,
+                    },
+                    {
+                        label: "测站编码",
+                        prop: "rtuCode",
+                        span: 12,
+                        search: true,
+                    },
+                    {
+                        label: "填报总结说明",
+                        prop: "reportDesc",
+                        span: 12,
+                    },
+                    {
+                        label: "填报人",
+                        prop: "createUser",
+                        span: 12,
+                    },
+                    {
+                        label: "填报时间",
+                        prop: "createTime",
+                        span: 12,
+                    },
+
+
+                ],
+            },
+            data: [],
+        };
+    },
+
+    created() {
+        this.init();
+    },
+    watch: {
+        'editForm.planId': {
+            handler(val) {
+                if (val != '' && val != undefined && val != null) {
+                    this.planId = val;
+                    // this.$message.success(this.planId)
+                }
+            },
+            immediate: true
+        }
+    },
+    methods: {
+        openPlanManage() {
+            const planDate = new Date();
+            //  this.planSetting.orgId = item.orgId;
+            //  this.planSetting.projectId = item.id;
+            const y = planDate.getFullYear();
+            this.planSetting.planTitle = "" + y + "年度巡检计划";
+            this.projectPlanDialog = true;
+        },
+        init() {
+            this.initTree();
+            this.initPlan();
+        },
+        initTree() {
+            getTree(
+            ).then((res) => {
+                const data = res.data.data;
+                this.projectTreeData = data;
+            });
+        },
+        initPlan() {
+            getPlanList(
+            ).then((res) => {
+                this.editForm.planId = res.data.data[0].id;
+                this.planId = res.data.data[0].id;
+                this.onLoad(this.page);
+            });
+
+        },
+        nodeClick(data) {
+            this.treeCache.orgId = data.orgId;
+            this.treeCache.projectId = data.projectId;
+            //this.$message.success(JSON.stringify(data))
+            this.query = {};
+            this.page.currentPage = 1;
+            this.onLoad(this.page);
+        },
+        openReportDetail(item) {
+            this.reportDialog = true;
+            this.id = item.id;
+            this.$nextTick(() => {
+                this.$refs["inspectionRportDetail"].init();
+            });
+        },
+        // orderOff(item) {
+        // this.$prompt("请输入处理意见","是否确认关闭此工单?", {
+        // confirmButtonText: "确定",
+        // cancelButtonText: "取消",
+
+        // })
+        // .then(({ value }) => {
+        //   confirm({ id: item.id, orderDesc: value }).then((res) => {
+        // if (res.data.code == 200) {
+        // this.$message({
+        // type: "info",
+        // message: "操作成功",
+        // });
+        // this.refreshChange();
+        // }
+        // });
+        // })
+        // .catch(() => { });
+        // },
+
+
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['planId'] = this.planId;
+            params['orgId'] = this.treeCache.orgId;
+            params['projectId'] = this.treeCache.projectId;
+
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+
+<style  lang="scss" scoped>
+.common-dialog {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    overflow: hidden;
+
+    .el-dialog {
+        margin: 0 auto !important;
+        position: relative;
+
+
+        overflow: hidden;
+
+        .el-dialog__header {
+            position: absolute;
+            left: 0;
+            right: 0;
+            bottom: 0;
+            width: 100%;
+            height: 60px;
+            z-index: 1;
+        }
+
+        .el-dialog__body {
+            position: relative;
+            left: 0;
+            top: 60px;
+            bottom: 0;
+            right: 0;
+            padding: 0;
+            width: 100%;
+            overflow: hidden;
+            overflow-y: auto;
+            max-height: 90vh;
+            padding-top: 80px;
+            padding-bottom: 100px;
+            z-index: 1;
+        }
+
+        .el-dialog__footer {
+            position: absolute;
+            left: 0;
+            right: 0;
+            bottom: 0;
+            width: 100%;
+            height: 80px;
+            z-index: 1;
+        }
+    }
+}
+</style>

+ 658 - 0
src/views/business/inspection/inspectionRportDetail.vue

@@ -0,0 +1,658 @@
+<template>
+    <basic-container>
+        <el-form ref="form" :model="form" label-width="120px">
+
+            <el-card shadow="hover">
+                <div slot="header">
+                    <span>巡检总结情况</span>
+                </div>
+                <el-form-item label="巡检意见:">
+                    <div>
+                        <label>{{form.reportDesc}}</label>
+                    </div>
+                </el-form-item>
+                <el-row>
+                    <el-col :span="12">
+                        <el-form-item label="图片一">
+                            <div class="block">
+                                <!-- <span class="demonstration">默认</span> -->
+                                <el-image :src="form.basePhoto1Url"></el-image>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="图片二">
+                            <div class="block">
+                                <!-- <span class="demonstration">默认</span> -->
+                                <el-image :src="form.basePhoto2Url"></el-image>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+            </el-card>
+            <el-card shadow="hover" style="margin-top: 10px;">
+                <div slot="header">
+                    <span>RTU设备信息</span>
+                </div>
+                <el-row type="flex">
+                    <el-col :span="24">
+                        <el-form-item label="运行状态:">
+                            <div v-if="rtuStatus ==0" class="block">
+                                <div>
+                                    <label>正常</label>
+                                </div>
+                                <el-input :disabled="true" value="正常" />
+                            </div>
+                            <div v-else>
+                                <div>
+                                    <label>故障</label>
+                                </div>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row type="flex">
+                    <el-col :span="6">
+                        <el-form-item label="品牌:">
+                            <div class="block">
+                                <label>{{form.rtuBrand}}</label>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="型号:">
+                            <div class="block">
+
+                                <label>{{form.rtuModel}}</label>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="更换时间:">
+                            <div class="block">
+                                <label>{{form.rtuReplaceDate}}</label>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row type="flex">
+                    <el-col :span="24">
+                        <el-form-item label="上报到县市省:">
+                            <div style="display:flex; justify-content: start;align-items: center;">
+                                <div v-if="form.datagramToLevel1">
+                                    <label>发往县</label>
+                                    <label style="margin-left: 5px;margin-right: 5px;">/</label>
+                                </div>
+                                <div v-if="form.datagramToLevel2">
+                                    <label>发往市</label>
+                                    <label style="margin-left: 5px;margin-right: 5px;">/</label>
+                                </div>
+                                <div v-if="form.datagramToLevel3">
+                                    <label>发往省</label>
+                                    <label style="margin-left: 5px;margin-right: 5px;">/</label>
+                                </div>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row type="flex">
+                    <el-col :span="24">
+                        <el-form-item label="备注说明:">
+                            <label>{{form.rtuDesc}}</label>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row type="flex">
+                    <el-col :span="12">
+                        <el-form-item label="RTU图片">
+                            <div class="block">
+                                <!-- <span class="demonstration">默认</span> -->
+                                <el-image :src="form.rtuPhotoUrl"></el-image>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+            </el-card>
+            <el-card shadow="hover" style="margin-top: 10px;">
+                <div slot="header">
+                    <span>雨量传感器</span>
+                </div>
+                <el-row type="flex">
+                    <el-col :span="24">
+                        <el-form-item label="运行状态:">
+                            <div v-if="rainSensorStatus ==0" class="block">
+                                <div>
+                                    <label>正常</label>
+                                </div>
+                                <el-input :disabled="true" value="正常" />
+                            </div>
+                            <div v-else>
+                                <div>
+                                    <label>故障</label>
+                                </div>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row type="flex">
+                    <el-col :span="6">
+                        <el-form-item label="品牌:">
+                            <div class="block">
+                                <label>{{form.rainSensorBrand}}</label>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="型号:">
+                            <div class="block">
+
+                                <label>{{form.rainSensorModel}}</label>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="更换时间:">
+                            <div class="block">
+                                <label>{{form.rainSensorReplaceDate}}</label>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+
+                <el-row type="flex">
+                    <el-col :span="24">
+                        <el-form-item label="备注说明:">
+                            <label>{{form.rainSensorDesc}}</label>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row type="flex">
+                    <el-col :span="12">
+                        <el-form-item label="雨量传感器图片">
+                            <div class="block">
+                                <!-- <span class="demonstration">默认</span> -->
+                                <el-image :src="form.rainSensorPhotoUrl"></el-image>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+            </el-card>
+
+            <el-card shadow="hover" style="margin-top: 10px;">
+                <div slot="header">
+                    <span>水位传感器</span>
+                </div>
+                <el-row type="flex">
+                    <el-col :span="12">
+                        <el-form-item label="运行状态:">
+                            <div v-if="waterLevelSensorStatus ==0" class="block">
+                                <div>
+                                    <label>正常</label>
+                                </div>
+                                <el-input :disabled="true" value="正常" />
+                            </div>
+                            <div v-else>
+                                <div>
+                                    <label>故障</label>
+                                </div>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="传感器类型:">
+                            <div class="block">
+                                <label>{{form.waterSensorTypeText}}</label>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row type="flex">
+                    <el-col :span="6">
+                        <el-form-item label="品牌:">
+                            <div class="block">
+                                <label>{{form.waterSensorBrand}}</label>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="型号:">
+                            <div class="block">
+
+                                <label>{{form.waterSensorModel}}</label>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="更换时间:">
+                            <div class="block">
+                                <label>{{form.waterSensorReplaceDate}}</label>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+
+                <el-row type="flex">
+                    <el-col :span="24">
+                        <el-form-item label="备注说明:">
+                            <label>{{form.waterSensorDesc}}</label>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row type="flex">
+                    <el-col :span="12">
+                        <el-form-item label="水位传感器图片">
+                            <div class="block">
+                                <!-- <span class="demonstration">默认</span> -->
+                                <el-image :src="form.waterSensorPhotoUrl"></el-image>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+            </el-card>
+
+            <el-card shadow="hover" style="margin-top: 10px;">
+                <div slot="header">
+                    <span>墒情传感器</span>
+                </div>
+                <el-row type="flex">
+                    <el-col :span="12">
+                        <el-form-item label="运行状态:">
+                            <div v-if="groundWaterSensorStatus ==0" class="block">
+                                <div>
+                                    <label>正常</label>
+                                </div>
+                                <el-input :disabled="true" value="正常" />
+                            </div>
+                            <div v-else>
+                                <div>
+                                    <label>故障</label>
+                                </div>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="传感器类型:">
+                            <div class="block">
+                                <label>{{form.groundSensorTypeText}}</label>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row type="flex">
+                    <el-col :span="6">
+                        <el-form-item label="品牌:">
+                            <div class="block">
+                                <label>{{form.groundSensorBrand}}</label>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="型号:">
+                            <div class="block">
+
+                                <label>{{form.groundSensorModel}}</label>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="更换时间:">
+                            <div class="block">
+                                <label>{{form.rtuReplaceDate}}</label>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+
+                <el-row type="flex">
+                    <el-col :span="24">
+                        <el-form-item label="备注说明:">
+                            <label>{{form.groundSensorDesc}}</label>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row type="flex">
+                    <el-col :span="12">
+                        <el-form-item label="墒情传感器图片">
+                            <div class="block">
+                                <!-- <span class="demonstration">默认</span> -->
+                                <el-image :src="form.groundSensorPhotoUrl"></el-image>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+            </el-card>
+
+            <el-card shadow="hover" style="margin-top: 10px;">
+                <div slot="header">
+                    <span>供电系统</span>
+                </div>
+                <el-row type="flex">
+                    <el-col :span="24">
+                        <el-form-item label="运行状态:">
+                            <div v-if="powerStatus ==0" class="block">
+                                <div>
+                                    <label>正常</label>
+                                </div>
+                                <el-input :disabled="true" value="正常" />
+                            </div>
+                            <div v-else>
+                                <div>
+                                    <label>故障</label>
+                                </div>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row type="flex">
+                    <el-col :span="6">
+                        <el-form-item label="蓄电池容量(AH):">
+                            <div class="block">
+                                <label>{{form.batteryModel}}</label>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="蓄电池更换时间:">
+                            <div class="block">
+
+                                <label>{{form.batteryReplaceDate}}</label>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="太阳能板功率(W):">
+                            <div class="block">
+                                <label>{{form.sunPowerModel}}</label>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="太阳能板更换时间:">
+                            <div class="block">
+                                <label>{{form.sunPowerReplaceDate}}</label>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+
+                <el-row type="flex">
+                    <el-col :span="24">
+                        <el-form-item label="备注说明:">
+                            <label>{{form.powerDesc}}</label>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row type="flex">
+                    <el-col :span="12">
+                        <el-form-item label="蓄电池图片">
+                            <div class="block">
+                                <!-- <span class="demonstration">默认</span> -->
+                                <el-image :src="form.batteryPhotoUrl"></el-image>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="太阳能板图片">
+                            <div class="block">
+                                <!-- <span class="demonstration">默认</span> -->
+                                <el-image :src="form.sunPhotoUrl"></el-image>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+            </el-card>
+
+            <el-card shadow="hover" style="margin-top: 10px;">
+                <div slot="header">
+                    <span>4G移动网络</span>
+                </div>
+                <el-row type="flex">
+                    <el-col :span="24">
+                        <el-form-item label="运行状态:">
+                            <div v-if="networkStatus ==0" class="block">
+                                <div>
+                                    <label>正常</label>
+                                </div>
+                                <el-input :disabled="true" value="正常" />
+                            </div>
+                            <div v-else>
+                                <div>
+                                    <label>故障</label>
+                                </div>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row type="flex">
+                    <el-col :span="6">
+                        <el-form-item label="SIM卡号:">
+                            <div class="block">
+                                <label>{{form.simCcid}}</label>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="开卡单位:">
+                            <div class="block">
+                                <label>{{form.simPay}}</label>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="缴费截止时间:">
+                            <div class="block">
+                                <label>{{form.simPayEndDate}}</label>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row type="flex">
+                    <el-col :span="24">
+                        <el-form-item label="备注说明:">
+                            <label>{{form.networkDesc}}</label>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+            </el-card>
+
+            <el-card shadow="hover" style="margin-top: 10px;">
+                <div slot="header">
+                    <span>北斗通讯</span>
+                </div>
+                <el-row type="flex">
+                    <el-col :span="24">
+                        <el-form-item label="运行状态:">
+                            <div v-if="satelliteStatus ==0" class="block">
+                                <div>
+                                    <label>正常</label>
+                                </div>
+                                <el-input :disabled="true" value="正常" />
+                            </div>
+                            <div v-else>
+                                <div>
+                                    <label>故障</label>
+                                </div>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row type="flex">
+                    <el-col :span="12">
+                        <el-form-item label="通讯模式:">
+                            <div class="block">
+                                <label>{{form.satelliteModelText}}</label>
+                            </div>
+                        </el-form-item>
+                    </el-col>
+
+                </el-row>
+
+                <el-row type="flex">
+                    <el-col :span="24">
+                        <el-form-item label="备注说明:">
+                            <label>{{form.satelliteDesc}}</label>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+
+            </el-card>
+
+
+        </el-form>
+    </basic-container>
+</template>
+
+<script>
+
+import {
+    getDetail,
+} from "@/api/business/inspection/inspection";
+export default {
+    components: {
+
+    },
+    props: {
+        id: {
+            type: [Number],
+            required: true
+        },
+    },
+    name: 'inspectionReport',
+    data() {
+        return {
+
+            form: {
+                reportDesc: '',
+                basePhoto1Url: '',
+                basePhoto1Take: true,
+                basePhoto2Url: '',
+                basePhoto2Take: true,
+
+                rtuStatus: 0,
+                rtuDesc: 'RTU巡检意见',
+                rtuBrand: 'RTU品牌',
+                rtuModel: 'RTU型号',
+                rtuReplaceDate: '2022-08-15 12:00:00',
+                datagramToLevel1: 1,
+                datagramToLevel2: 0,
+                datagramToLevel3: 1,
+                rtuPhotoUrl: '',
+                rtuPhotoTake: true,
+
+                rainSensorActive: 1,
+                rainSensorStatus: 0,
+                rainSensorDesc: '雨量巡检意见',
+                rainSensorReplaceDate: '2022-08-15 12:00:00',
+                rainSensorBrand: '雨量品牌',
+                rainSensorModel: '雨量型号',
+                rainSensorPhotoUrl: '',
+                rainSensorPhotoTake: true,
+
+                waterSensorBrand: '水位计品牌',
+                waterSensorModel: '水位计型号',
+                waterSensorTypeText: '雷达',
+                waterSensorReplaceDate: '2022-08-15 12:00:00',
+                waterSensorDesc: '水位计巡检意见',
+                waterSensorPhotoUrl: '',
+                waterSensorPhotoTake: true,
+                waterLevelSensorActive: 1,
+                waterLevelSensorStatus: 1,
+
+                groundSensorBrand: '墒情品牌',
+                groundSensorModel: '墒情型号',
+                groundSensorTypeText: '插针式',
+                groundSensorReplaceDate: '2022-08-15 12:00:00',
+                groundSensorDesc: '墒情巡检意见',
+                groundSensorPhotoUrl: '',
+                groundSensorPhotoTake: true,
+                groundWaterSensorActive: 1,
+                groundWaterSensorStatus: 0,
+
+                batteryModel: '电池型号',
+                batteryReplaceDate: '2022-08-15 12:00:00',
+                sunPowerModel: '太阳能型号',
+                sunPowerReplaceDate: '2022-08-15 12:00:00',
+                batteryPhotoUrl: '',
+                batteryPhotoTake: true,
+                sunPhotoUrl: '',
+                sunPhotoTake: true,
+                powerDesc: '供电巡检意见',
+                powerStatus: 0,
+
+                simCcid: '11111111111',
+                simPay: '开卡单位',
+                simPayEndDate: '2022-08-15 12:00:00',
+                networkDesc: '4G网络巡检意见',
+                networkStatus: 0,
+                networkActive: 1,
+
+                satelliteModelText: '北斗2代',
+                satelliteStatus: 0,
+                satelliteDesc: '卫星巡检意见',
+                satelliteActive: 1,
+            }
+        }
+    },
+    created() {
+        this.init();
+    },
+    methods: {
+        init() {
+
+            getDetail(this.id).then(res => {
+                const data = res.data;
+                if (data.success) {
+                    this.form = data.data;
+                    let url = this.form.basePhoto1Url;
+                    if (url != null) {
+                        url = "http://111.204.228.227:19000/galaxy/" + url;
+                        this.form.basePhoto1Url = url;
+                    }
+                    url = this.form.basePhoto2Url;
+                    if (url != null) {
+                        url = "http://111.204.228.227:19000/galaxy/" + url;
+                        this.form.basePhoto2Url = url;
+                    }
+                    url = this.form.rtuPhotoUrl;
+                    if (url != null) {
+                        url = "http://111.204.228.227:19000/galaxy/" + url;
+                        this.form.rtuPhotoUrl = url;
+                    }
+                    url = this.form.rainSensorPhotoUrl;
+                    if (url != null) {
+                        url = "http://111.204.228.227:19000/galaxy/" + url;
+                        this.form.rainSensorPhotoUrl = url;
+                    }
+                    url = this.form.waterSensorPhotoUrl;
+                    if (url != null) {
+                        url = "http://111.204.228.227:19000/galaxy/" + url;
+                        this.form.waterSensorPhotoUrl = url;
+                    }
+                    url = this.form.groundSensorPhotoUrl;
+                    if (url != null) {
+                        url = "http://111.204.228.227:19000/galaxy/" + url;
+                        this.form.groundSensorPhotoUrl = url;
+                    }
+                    url = this.form.batteryPhotoUrl;
+                    if (url != null) {
+                        url = "http://111.204.228.227:19000/galaxy/" + url;
+                        this.form.batteryPhotoUrl = url;
+                    }
+                    url = this.form.sunPhotoUrl;
+                    if (url != null) {
+                        url = "http://111.204.228.227:19000/galaxy/" + url;
+                        this.form.sunPhotoUrl = url;
+                    }
+
+                }
+            })
+        },
+
+    }
+}
+</script>
+
+<style>
+
+</style>
+

+ 423 - 0
src/views/business/manage/index.vue

@@ -0,0 +1,423 @@
+<!--
+ * @Title: 
+ * @Description: 
+ * @Author: 893699165@qq.com
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="5">
+                <div class="box">
+                    <el-scrollbar>
+                        <basic-container>
+                            <avue-tree :option="treeOption" :data="projectTreeData" @node-click="nodeClick">
+                                <span class="el-tree-node__label" slot-scope="{ node, data }">
+                                    <span>
+                                        <i class="el-icon-user-solid"></i>
+                                        {{ (node || {}).label }}
+                                    </span>
+                                </span>
+                                <template slot-scope="scope" slot="menu">
+                                    <div class="avue-tree__item" @click.native="tip(scope.node,scope.data)">自定义按钮</div>
+                                </template>
+                            </avue-tree>
+                        </basic-container>
+                    </el-scrollbar>
+                </div>
+            </el-col>
+            <el-col :span="19">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :page.sync="page" :data="data" ref="crud"
+                        v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate"
+                        @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
+                        @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+                        @refresh-change="refreshChange" @on-load="onLoad" @before-open="beforeOpen">
+                        <template slot="runStatusId" slot-scope="row">
+                            <div v-if="row.row.runStatusId==0" style="color: blue;">
+                                正常
+                            </div>
+                            <div v-else style="color: orangered;">
+                                预警
+                            </div>
+                        </template>
+                        <template slot-scope="{ row, index }" slot="menu">
+                            <!-- <el-button
+                type="text"
+                size="small"
+                @click="$refs.crud.rowView(row, index)"
+                >预警配置
+              </el-button> -->
+                            <el-button type="text" size="small" @click="openWarnInfo(row)">预警信息
+                            </el-button>
+                            <el-button type="text" size="small" @click="openOrder(row)">维修工单
+                            </el-button>
+                        </template>
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+        <!-- <el-dialog
+      title="预警配置"
+      :visible.sync="configDialog"
+      width="600px"
+      :before-close="handleClose"
+      :close-on-click-modal="false"
+      append-to-body
+    >
+      <el-form label-width="120px">
+        <el-form-item label="预警总开关">
+          <el-switch
+            v-model="warningConfig.configSw"
+            active-color="#13ce66"
+            inactive-color="#ff4949"
+            active-text="开"
+            inactive-text="关"
+          >
+          </el-switch>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="configDialog = false" size="small">取 消</el-button>
+        <el-button type="primary" @click="confirmConfig" size="small"
+          >确 定</el-button
+        >
+      </span>
+    </el-dialog> -->
+        <el-dialog title="预警信息" :visible.sync="warnInfoDialog" v-if="warnInfoDialog" width="80%"
+            :close-on-click-modal="false" append-to-body>
+            <rtuWarningList :rtuCode="rtuCode" ref="rtuWarningList"></rtuWarningList>
+        </el-dialog>
+        <el-dialog title="维修工单" :visible.sync="orderDialog" width="80%" :close-on-click-modal="false" append-to-body>
+            <rtuCheckOrder :rtuCode="rtuCode" ref="rtuCheckOrder"></rtuCheckOrder>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import { getList, getDetail, add, update, remove, getTree } from "@/api/business/manage/manage.js";
+// import { mapGetters } from "vuex";
+import rtuWarningList from "../warning/rtuWarningList.vue";
+import rtuCheckOrder from "../order/rtuCheckOrder.vue";
+export default {
+    components: {
+        rtuWarningList,
+        rtuCheckOrder,
+    },
+    data() {
+        return {
+            orderDialog: false,
+            // warningConfig: {
+            // configSw: false,
+            // code: "",
+            // },
+            warnInfoDialog: false,
+            //configDialog: false,
+            id: "",
+            rtuCode: '',
+            editForm: {},
+            editDialog: false,
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            treeCache: {
+                orgId: '',
+                projectId: '',
+            },
+            projectTreeData: [
+
+            ],
+            treeOption: {
+                nodeKey: "id",
+                lazy: false,
+
+                // treeLoad: function (node, resolve) {
+                // const parentId = node.level === 0 ? 0 : node.data.id;
+                // getDeptLazyTree(parentId).then((res) => {
+                // resolve(
+                // res.data.data.map((item) => {
+                // return {
+                // ...item,
+                // leaf: !item.hasChildren,
+                // };
+                // })
+                // );
+                // });
+                // },
+                defaultExpandAll: true,
+                addBtn: false,
+                menu: false,
+                size: "small",
+                props: {
+                    labelText: "标题",
+                    label: "title",
+                    value: "value",
+                    children: "children",
+                },
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                height: "auto",
+                calcHeight: 30,
+                align: "center",
+                headerAlign: "center",
+                // lazy: true,
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                tree: true,
+                border: true,
+                index: true,
+                selection: true,
+                viewBtn: false,
+                editBtn: false,
+                delBtn: false,
+                addBtn: false,
+                menuWidth: 220,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                column: [
+                    {
+
+                        label: "测站名称",
+                        prop: "rtuName",
+                        search: true,
+                        span: 12,
+                    },
+                    {
+                        label: "测站编码",
+                        prop: "rtuCode",
+                        span: 12,
+                        search: true,
+                    },
+                    {
+                        label: "项目名称",
+                        prop: "projectName",
+                        span: 12,
+                    },
+                    {
+                        label: "测站类型",
+                        prop: "rtuKindDesc",
+                        span: 24,
+                    },
+
+                    {
+                        label: "最后上线时间",
+                        prop: "lastUpTime",
+                        span: 12,
+                    },
+
+                    {
+                        label: "运行状态",
+                        prop: "runStatusId",
+                        span: 12,
+                        slot: true,
+                        //html:true,
+                        // formatter:(val)=>{
+                        //   if(val.runStatusId==0){
+
+                        //     return '<b style="color:blue">正常</b>'
+                        //   }else{
+
+                        //     return '<b style="color:orangered">预警</b>'
+                        //   }    
+                        //    }
+                    },
+
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        // ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                // addBtn: this.vaildData(this.permission.docCategory_add, false),
+                // viewBtn: this.vaildData(this.permission.docCategory_view, false),
+                // delBtn: this.vaildData(this.permission.docCategory_delete, false),
+                // editBtn: this.vaildData(this.permission.docCategory_edit, false),
+            };
+        },
+        ids() {
+            let ids = [];
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id);
+            });
+            return ids.join(",");
+        },
+    },
+    mounted() { },
+    created() {
+        this.initTree();
+    },
+    methods: {
+        initTree() {
+            getTree(
+            ).then((res) => {
+                const data = res.data.data;
+                this.projectTreeData = data;
+            });
+        },
+        nodeClick(data) {
+            this.treeCache.orgId = data.orgId;
+            this.treeCache.projectId = data.projectId;
+            //this.$message.success(JSON.stringify(data))
+            this.query = {};
+            this.page.currentPage = 1;
+            this.onLoad(this.page);
+        },
+        confirmConfig() { },
+        openConfig(item) {
+            this.configSw = item.configSw;
+            this.configDialog = true;
+        },
+        openWarnInfo(item) {
+            this.rtuCode = item.rtuCode;
+            this.warnInfoDialog = true;
+            // this.$nextTick(() => {
+            //     this.$refs["rtuWarningList"].init();
+            // });
+        },
+        openOrder(item) {
+            this.rtuCode = item.rtuCode;
+            this.orderDialog = true;
+            this.$nextTick(() => {
+                this.$refs["rtuCheckOrder"].init();
+            });
+        },
+        rowSave(row, done, loading) {
+            add(row).then(
+                () => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                    done();
+                },
+                (error) => {
+                    window.console.log(error);
+                    loading();
+                }
+            );
+        },
+        rowUpdate(row, index, done, loading) {
+            update(row).then(
+                () => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                    done();
+                },
+                (error) => {
+                    window.console.log(error);
+                    loading();
+                }
+            );
+        },
+        rowDel(row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(row.id);
+                })
+                .then(() => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                });
+        },
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        handleDelete() {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据");
+                return;
+            }
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(this.ids);
+                })
+                .then(() => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                    this.$refs.crud.toggleSelection();
+                });
+        },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['orgId'] = this.treeCache.orgId;
+            params['projectId'] = this.treeCache.projectId;
+            getList(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>

+ 333 - 0
src/views/business/order/index.vue

@@ -0,0 +1,333 @@
+<!--
+ * @Title: 
+ * @Description: 
+ * @Author: 893699165@qq.com
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <el-col :span="5">
+                <div class="box">
+                    <el-scrollbar>
+                        <basic-container>
+                            <avue-tree :option="treeOption" :data="projectTreeData" @node-click="nodeClick">
+                                <span class="el-tree-node__label" slot-scope="{ node, data }">
+                                    <span>
+                                        <i class="el-icon-user-solid"></i>
+                                        {{ (node || {}).label }}
+                                    </span>
+                                </span>
+                                <template slot-scope="scope" slot="menu">
+                                    <div class="avue-tree__item" @click.native="tip(scope.node,scope.data)">自定义按钮</div>
+                                </template>
+                            </avue-tree>
+                        </basic-container>
+                    </el-scrollbar>
+                </div>
+            </el-col>
+            <el-col :span="19">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :page.sync="page" :data="data" ref="crud"
+                        v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate"
+                        @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
+                        @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+                        @refresh-change="refreshChange" @on-load="onLoad">
+                        <template slot-scope="{ row, index }" slot="menu">
+                            <el-button type="text" size="small" @click="openProcessList(row)">工单填报记录
+                            </el-button>
+                            <el-button type="text" size="small" @click="orderOff(row)">人工关闭
+                            </el-button>
+                        </template>
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+        <!-- <el-dialog
+      title="预警配置"
+      :visible.sync="configDialog"
+      width="600px"
+      :before-close="handleClose"
+      :close-on-click-modal="false"
+      append-to-body
+    >
+      <el-form label-width="120px">
+        <el-form-item label="预警总开关">
+          <el-switch
+            v-model="warningConfig.configSw"
+            active-color="#13ce66"
+            inactive-color="#ff4949"
+            active-text="开"
+            inactive-text="关"
+          >
+          </el-switch>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="configDialog = false" size="small">取 消</el-button>
+        <el-button type="primary" @click="confirmConfig" size="small"
+          >确 定</el-button
+        >
+      </span>
+    </el-dialog> -->
+        <!-- <el-dialog title="预警信息" :visible.sync="warnInfoDialog" width="80%" :close-on-click-modal="false" append-to-body>
+      <rtuWarningList :rtuCode="rtuCode" ref="rtuWarningList"></rtuWarningList>
+    </el-dialog> -->
+        <el-dialog title="工单填报记录" :visible.sync="recordDialog" width="80%" :close-on-click-modal="false" append-to-body>
+            <orderProcessList :id="id" ref="orderProcessList"></orderProcessList>
+        </el-dialog>
+    </div>
+
+
+</template>
+
+<script>
+import { getTree } from "@/api/business/manage/manage.js";
+import {
+    getPage,
+    orderClose,
+    getDetail,
+} from "@/api/business/order/order";
+// import { mapGetters } from "vuex";
+import orderProcessList from "./orderProcessList";
+export default {
+    components: {
+        orderProcessList,
+    },
+    data() {
+        return {
+            recordDialog: false,
+            id: "",
+            editForm: {},
+            editDialog: false,
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            treeCache: {
+                orgId: '',
+                projectId: '',
+            },
+            projectTreeData: [
+
+            ],
+            treeOption: {
+                nodeKey: "id",
+                lazy: false,
+
+                // treeLoad: function (node, resolve) {
+                // const parentId = node.level === 0 ? 0 : node.data.id;
+                // getDeptLazyTree(parentId).then((res) => {
+                // resolve(
+                // res.data.data.map((item) => {
+                // return {
+                // ...item,
+                // leaf: !item.hasChildren,
+                // };
+                // })
+                // );
+                // });
+                // },
+                defaultExpandAll: true,
+                addBtn: false,
+                menu: false,
+                size: "small",
+                props: {
+                    labelText: "标题",
+                    label: "title",
+                    value: "value",
+                    children: "children",
+                },
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                height: "auto",
+                calcHeight: 30,
+                align: "center",
+                headerAlign: "center",
+
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                addBtn: false,
+                tree: true,
+                border: true,
+                index: true,
+                //  height: 500,
+                editBtn: false,
+                delBtn: false,
+                menuWidth: 160,
+                dialogType: "drawer",
+
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "测站名称",
+                        prop: "rtuName",
+                        span: 12,
+                        search: true,
+                    },
+                    {
+                        label: "测站编码",
+                        prop: "rtuCode",
+                        span: 12,
+                        search: true,
+                    },
+                    {
+                        label: "工单来源",
+                        prop: "orderFromKey",
+                        span: 12,
+                        props: {
+                            label: 'dictValue',
+                            value: 'id'
+                        },
+                        dicUrl: '/api/galaxy-system/dict-biz/dictionary?code=rtu_check_order_from',
+                    },
+                    {
+                        label: "最新处理状态",
+                        prop: "orderStatusKey",
+                        span: 12,
+                        props: {
+                            label: 'dictValue',
+                            value: 'id'
+                        },
+                        dicUrl: '/api/galaxy-system/dict-biz/dictionary?code=rtu_check_order_status',
+                    },
+                    {
+                        label: "工单说明",
+                        prop: "orderDesc",
+                        span: 12,
+                    },
+                    {
+                        label: "处理人",
+                        prop: "processorName",
+                        span: 12,
+                    },
+                    {
+                        label: "工单更新时间",
+                        prop: "updateTime",
+                        span: 12,
+                    },
+
+
+                ],
+            },
+            data: [],
+        };
+    },
+    prop: {
+        rtuCode: ["String"],
+    },
+    created() {
+        this.init();
+    },
+    methods: {
+        init() {
+            this.initTree();
+        },
+        initTree() {
+            getTree(
+            ).then((res) => {
+                const data = res.data.data;
+                this.projectTreeData = data;
+
+                this.onLoad(this.page);
+            });
+        },
+        nodeClick(data) {
+            this.treeCache.orgId = data.orgId;
+            this.treeCache.projectId = data.projectId;
+            //this.$message.success(JSON.stringify(data))
+            this.query = {};
+            this.page.currentPage = 1;
+            this.onLoad(this.page);
+        },
+        openProcessList(item) {
+            this.recordDialog = true;
+            this.id = item.id;
+            this.$nextTick(() => {
+                this.$refs["orderProcessList"].init();
+            });
+        },
+        orderOff(item) {
+            this.$prompt("请输入处理意见", "是否确认关闭此工单?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+
+            })
+                .then(({ value }) => {
+                    orderClose({ id: item.id, orderDesc: value }).then((res) => {
+                        if (res.data.code == 200) {
+                            this.$message({
+                                type: "info",
+                                message: "操作成功",
+                            });
+                            this.refreshChange();
+                        }
+                    });
+                })
+                .catch(() => { });
+        },
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['orgId'] = this.treeCache.orgId;
+            params['projectId'] = this.treeCache.projectId;
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>

+ 629 - 0
src/views/business/order/orderProcessDetail.vue

@@ -0,0 +1,629 @@
+<template>
+    <basic-container>
+        <el-form ref="form" :model="form" label-width="120px">
+
+            <el-row v-if="form.orderStatusKey==orderStatusCreateKey">
+                <el-card shadow="hover">
+                    <div slot="header">
+                        <span>维修情况</span>
+                    </div>
+                    <el-form-item label="维修意见:">
+                        <div>
+                            <label>{{form.processDesc}}</label>
+                        </div>
+                    </el-form-item>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="工单来源">
+                                <div>
+                                    <label>{{form.orderFromText}}</label>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+
+                    </el-row>
+                </el-card>
+            </el-row>
+            <el-row v-else-if="form.orderStatusKey==orderStatusConfirmKey">
+                <el-card shadow="hover">
+                    <div slot="header">
+                        <span>维修情况</span>
+                    </div>
+                    <el-form-item label="维修意见:">
+                        <div>
+                            <label>{{form.processDesc}}</label>
+                        </div>
+                    </el-form-item>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="工单确认人">
+                                <div>
+                                    <label>{{form.orderConfirmUserName}}</label>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+
+                    </el-row>
+                </el-card>
+            </el-row>
+            <el-row v-else-if="form.orderStatusKey==orderStatusProcessKey">
+
+                <el-card shadow="hover">
+                    <div slot="header">
+                        <span>维修情况</span>
+                    </div>
+                    <el-form-item label="维修意见:">
+                        <div>
+                            <label>{{form.processDesc}}</label>
+                        </div>
+                    </el-form-item>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="图片一">
+                                <div class="block">
+                                    <!-- <span class="demonstration">默认</span> -->
+                                    <el-image :src=toOss(form.basePhoto1Url)></el-image>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="图片二">
+                                <div class="block">
+                                    <!-- <span class="demonstration">默认</span> -->
+                                    <el-image :src=toOss(form.basePhoto2Url)></el-image>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                </el-card>
+                <el-card shadow="hover" style="margin-top: 10px;">
+                    <div slot="header">
+                        <span>RTU设备信息</span>
+                    </div>
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="运行状态:">
+                                <div v-if="form.rtuStatus ==0" class="block">
+                                    <div>
+                                        <label>正常</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>故障</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="是否更换RTU:">
+                                <div v-if="form.rtuReplace ==0" class="block">
+                                    <div>
+                                        <label>否</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>更换</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="备注说明:">
+                                <label>{{form.rtuDesc}}</label>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row type="flex">
+                        <el-col :span="12">
+                            <el-form-item label="RTU图片">
+                                <div class="block">
+                                    <!-- <span class="demonstration">默认</span> -->
+                                    <el-image :src=toOss(form.rtuPhotoUrl)></el-image>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                </el-card>
+                <el-card shadow="hover" style="margin-top: 10px;">
+                    <div slot="header">
+                        <span>雨量传感器</span>
+                    </div>
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="运行状态:">
+                                <div v-if="form.rainSensorStatus ==0" class="block">
+                                    <div>
+                                        <label>正常</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>故障</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="是否更换雨量传感器">
+                                <div v-if="form.rainSensorReplace ==0" class="block">
+                                    <div>
+                                        <label>否</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>更换</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+
+
+
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="备注说明:">
+                                <label>{{form.rainSensorDesc}}</label>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row type="flex">
+                        <el-col :span="12">
+                            <el-form-item label="雨量传感器图片">
+                                <div class="block">
+                                    <!-- <span class="demonstration">默认</span> -->
+                                    <el-image :src=toOss(form.rainSensorPhotoUrl)></el-image>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                </el-card>
+
+                <el-card shadow="hover" style="margin-top: 10px;">
+                    <div slot="header">
+                        <span>水位传感器</span>
+                    </div>
+                    <el-row type="flex">
+                        <el-col :span="12">
+                            <el-form-item label="运行状态:">
+                                <div v-if="form.waterLevelSensorStatus ==0" class="block">
+                                    <div>
+                                        <label>正常</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>故障</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+
+
+                    </el-row>
+
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="是否更换水位传感器">
+                                <div v-if="form.waterSensorReplace ==0" class="block">
+                                    <div>
+                                        <label>否</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>更换</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+
+
+
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="备注说明:">
+                                <label>{{form.waterSensorDesc}}</label>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row type="flex">
+                        <el-col :span="12">
+                            <el-form-item label="水位传感器图片">
+                                <div class="block">
+                                    <!-- <span class="demonstration">默认</span> -->
+                                    <el-image :src=toOss(form.waterSensorPhotoUrl)></el-image>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                </el-card>
+
+                <el-card shadow="hover" style="margin-top: 10px;">
+                    <div slot="header">
+                        <span>墒情传感器</span>
+                    </div>
+                    <el-row type="flex">
+                        <el-col :span="12">
+                            <el-form-item label="运行状态:">
+                                <div v-if="form.groundWaterSensorStatus ==0" class="block">
+                                    <div>
+                                        <label>正常</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>故障</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+
+                    </el-row>
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="是否更换墒情传感器">
+                                <div v-if="form.groundSensorReplace ==0" class="block">
+                                    <div>
+                                        <label>否</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>更换</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+
+
+
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="备注说明:">
+                                <label>{{form.groundSensorDesc}}</label>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row type="flex">
+                        <el-col :span="12">
+                            <el-form-item label="墒情传感器图片">
+                                <div class="block">
+                                    <!-- <span class="demonstration">默认</span> -->
+                                    <el-image :src=toOss(form.groundSensorPhotoUrl)></el-image>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                </el-card>
+
+                <el-card shadow="hover" style="margin-top: 10px;">
+                    <div slot="header">
+                        <span>供电系统</span>
+                    </div>
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="运行状态:">
+                                <div v-if="form.powerStatus ==0" class="block">
+                                    <div>
+                                        <label>正常</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>故障</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row type="flex">
+                        <el-col :span="12">
+                            <el-form-item label="是否更换蓄电池">
+                                <div v-if="form.batteryReplace ==0" class="block">
+                                    <div>
+                                        <label>否</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>更换</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="是否更换太阳能板">
+                                <div v-if="form.sunPowerReplace ==0" class="block">
+                                    <div>
+                                        <label>否</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>更换</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+
+                    </el-row>
+
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="备注说明:">
+                                <label>{{form.powerDesc}}</label>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row type="flex">
+                        <el-col :span="12">
+                            <el-form-item label="蓄电池图片">
+                                <div class="block">
+                                    <!-- <span class="demonstration">默认</span> -->
+                                    <el-image :src=toOss(form.batteryPhotoUrl)></el-image>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="太阳能板图片">
+                                <div class="block">
+                                    <!-- <span class="demonstration">默认</span> -->
+                                    <el-image :src=toOss(form.sunPhotoUrl)></el-image>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                </el-card>
+
+                <el-card shadow="hover" style="margin-top: 10px;">
+                    <div slot="header">
+                        <span>4G移动网络</span>
+                    </div>
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="运行状态:">
+                                <div v-if="form.networkStatus ==0" class="block">
+                                    <div>
+                                        <label>正常</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>故障</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row type="flex">
+                        <el-col :span="12">
+                            <el-form-item label="是否欠费">
+                                <div v-if="form.networkOverdue ==0" class="block">
+                                    <div>
+                                        <label>否</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>欠费</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+
+                    </el-row>
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="备注说明:">
+                                <label>{{form.networkDesc}}</label>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                </el-card>
+
+                <el-card shadow="hover" style="margin-top: 10px;">
+                    <div slot="header">
+                        <span>北斗通讯</span>
+                    </div>
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="运行状态:">
+                                <div v-if="satelliteStatus ==0" class="block">
+                                    <div>
+                                        <label>正常</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>故障</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+
+
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="备注说明:">
+                                <label>{{form.satelliteDesc}}</label>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+
+                </el-card>
+            </el-row>
+            <el-row v-else>
+                <el-card shadow="hover">
+                    <div slot="header">
+                        <span>维修情况</span>
+                    </div>
+                    <el-form-item label="维修意见:">
+                        <div>
+                            <label>{{form.processDesc}}</label>
+                        </div>
+                    </el-form-item>
+
+                </el-card>
+            </el-row>
+
+        </el-form>
+    </basic-container>
+</template>
+
+<script>
+
+
+import { getDetail } from "@/api/business/order/process";
+import { getDictionary } from "@/api/system/dictbiz";
+export default {
+    components: {
+
+    },
+    props: {
+        id: {
+            type: [Number],
+            required: true
+        },
+    },
+    name: 'inspectionReport',
+    data() {
+        return {
+            orderStatusCreateKey: 0,
+            orderStatusConfirmKey: 0,
+            orderStatusProcessKey: 0,
+            orderStatusCloseKey: 0,
+            form: {
+                orderStatusKey: -1,
+                orderConfirmUserName: '',
+                orderFromText: '',
+                processDesc: '处理说明',
+                basePhoto1Url: '',
+                basePhoto1Take: true,
+                basePhoto2Url: '',
+                basePhoto2Take: true,
+
+                rtuStatus: 0,
+                rtuDesc: 'RTU说明',
+                rtuReplace: 1,
+                rtuPhotoUrl: '',
+                rtuPhotoTake: true,
+
+                rainSensorActive: 1,
+                rainSensorStatus: 0,
+                rainSensorDesc: '雨量说明',
+                rainSensorReplace: 0,
+                rainSensorPhotoUrl: '',
+                rainSensorPhotoTake: true,
+
+
+                waterSensorReplace: 0,
+                waterSensorDesc: '水位计说明',
+                waterSensorPhotoUrl: '',
+                waterSensorPhotoTake: true,
+                waterLevelSensorActive: 1,
+                waterLevelSensorStatus: 1,
+
+
+                groundSensorReplace: 0,
+                groundSensorDesc: '墒情说明',
+                groundSensorPhotoUrl: '',
+                groundSensorPhotoTake: true,
+                groundWaterSensorActive: 1,
+                groundWaterSensorStatus: 0,
+
+                batteryReplace: 0,
+                sunPowerReplace: 0,
+                batteryPhotoUrl: '',
+                batteryPhotoTake: true,
+                sunPhotoUrl: '',
+                sunPhotoTake: true,
+                powerDesc: '供电说明',
+                powerStatus: 0,
+
+                networkOverdue: 1,
+                networkDesc: '移动网络说明',
+                networkStatus: 0,
+                networkActive: 1,
+
+                satelliteStatus: 0,
+                satelliteDesc: '卫星说明',
+                satelliteActive: 0,
+            }
+        }
+    },
+    created() {
+        this.getOrderStatus();
+    },
+    methods: {
+        toOss(url) {
+            return 'http://111.204.228.227:19000/galaxy/' + url;
+        },
+        init() {
+            getDetail(this.id).then(res => {
+                const data = res.data;
+                if (data.success) {
+                    this.form = data.data;
+
+                }
+            })
+        },
+        getOrderStatus() {
+            var p = { 'code': "rtu_check_order_status" };
+            getDictionary(p).then(res => {
+                const data = res.data;
+                if (data.success) {
+                    const dictList = data.data;
+                    for (var i = 0; i < dictList.length; i++) {
+                        let dict = dictList[i];
+                        console.log(dict);
+                        if (dict.dictKey === '1') {
+                            this.orderStatusCreateKey = dict.id;
+                        } else if (dict.dictKey === '2') {
+                            this.orderStatusConfirmKey = dict.id;
+                        } else if (dict.dictKey === '3') {
+                            this.orderStatusProcessKey = dict.id;
+                        } else if (dict.dictKey === '4') {
+                            this.orderStatusCloseKey = dict.id;
+                        }
+                    }
+                    this.init();
+                }
+            })
+        }
+
+    }
+}
+</script>
+
+<style>
+
+</style>
+

+ 190 - 0
src/views/business/order/orderProcessList.vue

@@ -0,0 +1,190 @@
+<!--
+ * @Title: 
+ * @Description: 
+ * @Author: 893699165@qq.com
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <basic-container>
+            <avue-crud :option="option" :table-loading="loading" :data="data" ref="crud" v-model="form"
+                :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate" @row-save="rowSave"
+                @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
+                @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange"
+                @on-load="onLoad" @before-open="beforeOpen">
+                <template slot-scope="{ row }" slot="menu">
+                    <el-button type="text" size="small" @click="openDetail(row)">查看填报详情
+                    </el-button>
+                    <!-- <el-button type="text" size="small" @click="openPicture(row)"
+            >图片
+          </el-button> -->
+                </template>
+            </avue-crud>
+        </basic-container>
+        <el-dialog title="工单填报详情" :visible.sync="detailDialog" v-if="detailDialog" width="80%"
+            :close-on-click-modal="false" append-to-body>
+            <orderProcessDetail :id="processId" ref="orderProcessDetail"></orderProcessDetail>
+        </el-dialog>
+        <!-- <el-dialog
+      title="图片"
+      :visible.sync="pictureDialog"
+      width="80%"
+      :close-on-click-modal="false"
+      append-to-body
+    >
+      <record-picture :id="id" ref="recordPicture"></record-picture>
+    </el-dialog> -->
+    </div>
+</template>
+
+<script>
+import { getPage, getDetail } from "@/api/business/order/process";
+
+import orderProcessDetail from "./orderProcessDetail";
+export default {
+    components: { orderProcessDetail },
+    data() {
+        return {
+            pictureDialog: false,
+            detailDialog: false,
+            processId: "",
+            editForm: {},
+            editDialog: false,
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                //  height: "auto",
+                calcHeight: 30,
+                align: "center",
+                headerAlign: "center",
+
+                tip: false,
+                simplePage: true,
+                searchShow: false,
+                searchMenuSpan: 6,
+                addBtn: false,
+
+                border: true,
+                index: true,
+                height: 500,
+                editBtn: false,
+                delBtn: false,
+                menuWidth: 160,
+                dialogType: "drawer",
+
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "填报时间",
+                        prop: "createTime",
+                        span: 12,
+                    },
+                    {
+                        label: "处理人",
+                        prop: "createUser",
+                        span: 12,
+
+                    },
+                    {
+                        label: "处理说明",
+                        prop: "processDesc",
+                        span: 12,
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    props: {
+ 
+        id: {
+            type: [String],
+            required: true
+        },
+    },
+    create() {
+        this.init();
+    },
+    methods: {
+        init() {
+            this.onLoad(this.page);
+            this.$refs.crud.doLayout();
+        },
+        openDetail(item) {
+            this.processId = item.id;
+            this.detailDialog = true;
+            this.$nextTick(() => {
+                this.$refs["orderProcessDetail"].init();
+            });
+        },
+        openPicture() {
+            this.pictureDialog = true;
+            this.$nextTick(() => { });
+        },
+
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['id'] = this.id;
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>

+ 213 - 0
src/views/business/order/rtuCheckOrder.vue

@@ -0,0 +1,213 @@
+<!--
+ * @Title: 
+ * @Description: 
+ * @Author: 893699165@qq.com
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <basic-container>
+            <avue-crud :option="option" :table-loading="loading" :page.sync="page" :data="data" ref="crud"
+                v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate"
+                @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
+                @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+                @refresh-change="refreshChange" @on-load="onLoad">
+                <template slot-scope="{ row, index }" slot="menu">
+                    <el-button type="text" size="small" @click="openProcessList(row)">工单填报记录
+                    </el-button>
+                    <el-button type="text" size="small" @click="orderOff(row)">人工关闭
+                    </el-button>
+                </template>
+            </avue-crud>
+        </basic-container>
+        <el-dialog title="工单填报记录" :visible.sync="recordDialog" v-if="recordDialog" width="80%"
+            :close-on-click-modal="false" append-to-body>
+            <orderProcessList :id="id" ref="orderProcessList"></orderProcessList>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import {
+    getPage,
+    getDetail,
+    orderClose,
+} from "@/api/business/order/order";
+
+// import { mapGetters } from "vuex";
+import orderProcessList from "./orderProcessList";
+export default {
+    components: {
+        orderProcessList,
+    },
+    data() {
+        return {
+            recordDialog: false,
+            id: "",
+            editForm: {},
+            editDialog: false,
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                // height: "auto",
+                calcHeight: 30,
+                align: "center",
+                headerAlign: "center",
+
+                tip: false,
+                simplePage: true,
+                searchShow: false,
+                searchMenuSpan: 6,
+                addBtn: false,
+
+                border: true,
+                index: true,
+                height: 500,
+                editBtn: false,
+                delBtn: false,
+                menuWidth: 160,
+                dialogType: "drawer",
+
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "工单来源",
+                        prop: "orderFromKey",
+                        span: 12,
+                        props: {
+                            label: 'dictValue',
+                            value: 'id'
+                        },
+                        dicUrl: '/api/galaxy-system/dict-biz/dictionary?code=rtu_check_order_from',
+                    },
+                    {
+                        label: "最新处理状态",
+                        prop: "orderStatusKey",
+                        span: 12,
+                        props: {
+                            label: 'dictValue',
+                            value: 'id'
+                        },
+                        dicUrl: '/api/galaxy-system/dict-biz/dictionary?code=rtu_check_order_status',
+                    },
+                    {
+                        label: "工单说明",
+                        prop: "orderDesc",
+                        span: 12,
+                    },
+                    {
+                        label: "处理人",
+                        prop: "processorName",
+                        span: 12,
+                    },
+                    {
+                        label: "工单更新时间",
+                        prop: "updateTime",
+                        span: 12,
+                    },
+
+
+                ],
+            },
+            data: [],
+        };
+    },
+    create() {
+        this.init();
+    },
+    methods: {
+        init() {
+            this.$refs.crud.doLayout();
+        },
+        openProcessList(item) {
+            this.id = item.id;
+            this.recordDialog = true;
+            this.$nextTick(() => {
+                this.$refs["orderProcessList"].init();
+            });
+        },
+        orderOff(item) {
+            this.$prompt("请输入处理意见", "是否确认关闭此工单?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+
+            })
+                .then(({ value }) => {
+                    orderClose({ id: item.id, orderDesc: value }).then((res) => {
+                        if (res.data.code == 200) {
+                            this.$message({
+                                type: "info",
+                                message: "操作成功",
+                            });
+                            this.refreshChange();
+                        }
+                    });
+                })
+                .catch(() => { });
+        },
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['rtuCode'] = this.rtuCode;
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>

+ 585 - 0
src/views/business/warning/originalWarnInfoDetail.vue

@@ -0,0 +1,585 @@
+<template>
+    <basic-container>
+        <el-form ref="form" :model="form" label-width="120px">
+
+            <el-row v-if="form.orderStatusKey==orderStatusCreateKey">
+                <el-card shadow="hover">
+                    <div slot="header">
+                        <span>维修情况</span>
+                    </div>
+                    <el-form-item label="维修意见:">
+                        <div>
+                            <label>{{form.processDesc}}</label>
+                        </div>
+                    </el-form-item>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="工单来源">
+                                <div>
+                                    <label>{{form.orderFromText}}</label>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+
+                    </el-row>
+                </el-card>
+            </el-row>
+            <el-row v-else-if="form.orderStatusKey==orderStatusConfirmKey">
+                <el-card shadow="hover">
+                    <div slot="header">
+                        <span>维修情况</span>
+                    </div>
+                    <el-form-item label="维修意见:">
+                        <div>
+                            <label>{{form.processDesc}}</label>
+                        </div>
+                    </el-form-item>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="工单确认人">
+                                <div>
+                                    <label>{{form.orderConfirmUserName}}</label>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+
+                    </el-row>
+                </el-card>
+            </el-row>
+            <el-row v-else-if="form.orderStatusKey==orderStatusProcessKey">
+
+                <el-card shadow="hover">
+                    <div slot="header">
+                        <span>维修情况</span>
+                    </div>
+                    <el-form-item label="维修意见:">
+                        <div>
+                            <label>{{form.processDesc}}</label>
+                        </div>
+                    </el-form-item>
+                    <el-row>
+                        <el-col :span="12">
+                            <el-form-item label="图片一">
+                                <div class="block">
+                                    <!-- <span class="demonstration">默认</span> -->
+                                    <el-image :src=toOss(form.basePhoto1Url)></el-image>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="图片二">
+                                <div class="block">
+                                    <!-- <span class="demonstration">默认</span> -->
+                                    <el-image :src=toOss(form.basePhoto2Url)></el-image>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                </el-card>
+                <el-card shadow="hover" style="margin-top: 10px;">
+                    <div slot="header">
+                        <span>RTU设备信息</span>
+                    </div>
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="运行状态:">
+                                <div v-if="form.rtuStatus ==0" class="block">
+                                    <div>
+                                        <label>正常</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>故障</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="是否更换RTU:">
+                                <div v-if="form.rtuReplace ==0" class="block">
+                                    <div>
+                                        <label>否</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>更换</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="备注说明:">
+                                <label>{{form.rtuDesc}}</label>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row type="flex">
+                        <el-col :span="12">
+                            <el-form-item label="RTU图片">
+                                <div class="block">
+                                    <!-- <span class="demonstration">默认</span> -->
+                                    <el-image :src=toOss(form.rtuPhotoUrl)></el-image>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                </el-card>
+                <el-card shadow="hover" style="margin-top: 10px;">
+                    <div slot="header">
+                        <span>雨量传感器</span>
+                    </div>
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="运行状态:">
+                                <div v-if="form.rainSensorStatus ==0" class="block">
+                                    <div>
+                                        <label>正常</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>故障</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="是否更换雨量传感器">
+                                <div v-if="form.rainSensorReplace ==0" class="block">
+                                    <div>
+                                        <label>否</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>更换</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+
+
+
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="备注说明:">
+                                <label>{{form.rainSensorDesc}}</label>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row type="flex">
+                        <el-col :span="12">
+                            <el-form-item label="雨量传感器图片">
+                                <div class="block">
+                                    <!-- <span class="demonstration">默认</span> -->
+                                    <el-image :src=toOss(form.rainSensorPhotoUrl)></el-image>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                </el-card>
+
+                <el-card shadow="hover" style="margin-top: 10px;">
+                    <div slot="header">
+                        <span>水位传感器</span>
+                    </div>
+                    <el-row type="flex">
+                        <el-col :span="12">
+                            <el-form-item label="运行状态:">
+                                <div v-if="form.waterLevelSensorStatus ==0" class="block">
+                                    <div>
+                                        <label>正常</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>故障</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+
+
+                    </el-row>
+
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="是否更换水位传感器">
+                                <div v-if="form.waterSensorReplace ==0" class="block">
+                                    <div>
+                                        <label>否</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>更换</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+
+
+
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="备注说明:">
+                                <label>{{form.waterSensorDesc}}</label>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row type="flex">
+                        <el-col :span="12">
+                            <el-form-item label="水位传感器图片">
+                                <div class="block">
+                                    <!-- <span class="demonstration">默认</span> -->
+                                    <el-image :src=toOss(form.waterSensorPhotoUrl)></el-image>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                </el-card>
+
+                <el-card shadow="hover" style="margin-top: 10px;">
+                    <div slot="header">
+                        <span>墒情传感器</span>
+                    </div>
+                    <el-row type="flex">
+                        <el-col :span="12">
+                            <el-form-item label="运行状态:">
+                                <div v-if="form.groundWaterSensorStatus ==0" class="block">
+                                    <div>
+                                        <label>正常</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>故障</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+
+                    </el-row>
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="是否更换墒情传感器">
+                                <div v-if="form.groundSensorReplace ==0" class="block">
+                                    <div>
+                                        <label>否</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>更换</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+
+
+
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="备注说明:">
+                                <label>{{form.groundSensorDesc}}</label>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row type="flex">
+                        <el-col :span="12">
+                            <el-form-item label="墒情传感器图片">
+                                <div class="block">
+                                    <!-- <span class="demonstration">默认</span> -->
+                                    <el-image :src=toOss(form.groundSensorPhotoUrl)></el-image>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                </el-card>
+
+                <el-card shadow="hover" style="margin-top: 10px;">
+                    <div slot="header">
+                        <span>供电系统</span>
+                    </div>
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="运行状态:">
+                                <div v-if="form.powerStatus ==0" class="block">
+                                    <div>
+                                        <label>正常</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>故障</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row type="flex">
+                        <el-col :span="12">
+                            <el-form-item label="是否更换蓄电池">
+                                <div v-if="form.batteryReplace ==0" class="block">
+                                    <div>
+                                        <label>否</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>更换</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="是否更换太阳能板">
+                                <div v-if="form.sunPowerReplace ==0" class="block">
+                                    <div>
+                                        <label>否</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>更换</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+
+                    </el-row>
+
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="备注说明:">
+                                <label>{{form.powerDesc}}</label>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row type="flex">
+                        <el-col :span="12">
+                            <el-form-item label="蓄电池图片">
+                                <div class="block">
+                                    <!-- <span class="demonstration">默认</span> -->
+                                    <el-image :src=toOss(form.batteryPhotoUrl)></el-image>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="太阳能板图片">
+                                <div class="block">
+                                    <!-- <span class="demonstration">默认</span> -->
+                                    <el-image :src=toOss(form.sunPhotoUrl)></el-image>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                </el-card>
+
+                <el-card shadow="hover" style="margin-top: 10px;">
+                    <div slot="header">
+                        <span>4G移动网络</span>
+                    </div>
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="运行状态:">
+                                <div v-if="form.networkStatus ==0" class="block">
+                                    <div>
+                                        <label>正常</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>故障</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row type="flex">
+                        <el-col :span="12">
+                            <el-form-item label="是否欠费">
+                                <div v-if="form.networkOverdue ==0" class="block">
+                                    <div>
+                                        <label>否</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>欠费</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+
+                    </el-row>
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="备注说明:">
+                                <label>{{form.networkDesc}}</label>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                </el-card>
+
+                <el-card shadow="hover" style="margin-top: 10px;">
+                    <div slot="header">
+                        <span>北斗通讯</span>
+                    </div>
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="运行状态:">
+                                <div v-if="satelliteStatus ==0" class="block">
+                                    <div>
+                                        <label>正常</label>
+                                    </div>
+
+                                </div>
+                                <div v-else>
+                                    <div>
+                                        <label>故障</label>
+                                    </div>
+                                </div>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+
+
+                    <el-row type="flex">
+                        <el-col :span="24">
+                            <el-form-item label="备注说明:">
+                                <label>{{form.satelliteDesc}}</label>
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+
+                </el-card>
+            </el-row>
+            <el-row v-else>
+                <el-card shadow="hover">
+                    <div slot="header">
+                        <span>维修情况</span>
+                    </div>
+                    <el-form-item label="维修意见:">
+                        <div>
+                            <label>{{form.processDesc}}</label>
+                        </div>
+                    </el-form-item>
+
+                </el-card>
+            </el-row>
+
+        </el-form>
+    </basic-container>
+</template>
+
+<script>
+
+
+import { getDetail } from "@/api/warning/originalWarnInfo";
+import { getDictionary } from "@/api/system/dictbiz";
+export default {
+    components: {
+
+    },
+    props: {
+        id: {
+            type: [Number],
+            required: true
+        },
+    },
+    name: 'warnInfoDetail',
+    data() {
+        return {
+            orderStatusCreateKey: 0,
+            orderStatusConfirmKey: 0,
+            orderStatusProcessKey: 0,
+            orderStatusCloseKey: 0,
+            form: {
+                warnName: '',
+                warnTime: '',
+                warnInfo: '',
+            }
+        }
+    },
+    created() {
+        // this.init();
+        // this.getOrderStatus();
+    },
+    methods: {
+        toOss(url) {
+            return 'http://111.204.228.227:19000/galaxy/' + url;
+        },
+        init() {
+
+            getDetail(this.id).then(res => {
+                const data = res.data;
+                if (data.success) {
+                    this.form = data.data;
+                }
+            })
+        },
+        getOrderStatus() {
+            var p = { 'code': "rtu_check_order_status" };
+            getDictionary(p).then(res => {
+                const data = res.data;
+                if (data.success) {
+
+                    const dictList = data.data;
+
+
+
+                    for (var i = 0; i < dictList.length; i++) {
+                        let dict = dictList[i];
+                        console.log(dict);
+                        if (dict.dictKey === '1') {
+                            this.orderStatusCreateKey = dict.id;
+                        } else if (dict.dictKey === '2') {
+                            this.orderStatusConfirmKey = dict.id;
+                        } else if (dict.dictKey === '3') {
+                            this.orderStatusProcessKey = dict.id;
+                        } else if (dict.dictKey === '4') {
+                            this.orderStatusCloseKey = dict.id;
+                        }
+
+                    }
+
+                    this.init();
+
+                }
+            })
+        }
+
+    }
+}
+</script>
+
+<style>
+
+</style>
+

+ 196 - 0
src/views/business/warning/rtuWarningList.vue

@@ -0,0 +1,196 @@
+<!--
+ * @Title: 
+ * @Description: 
+ * @Author: 893699165@qq.com
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <basic-container>
+            <avue-crud :option="option" :table-loading="loading" :page.sync="page" :data="data" ref="crud"
+                v-model="form" :permission="permissionList" @row-del="rowDel" @row-update="rowUpdate"
+                @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
+                @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+                @refresh-change="refreshChange" @on-load="onLoad" @before-open="beforeOpen">
+                <template slot="warningStatus" slot-scope="row">
+                    <div v-if="row.row.warningStatus==0" style="color: orangered;">
+                        预警中
+                    </div>
+                    <div v-else style="color: blue;">
+                        关闭
+                    </div>
+                </template>
+                <template slot-scope="{ row, index }" slot="menu">
+
+                    <el-button icon="el-icon-link" type="text" size="small" @click="toWarnInfoDetail(row)">预警详情
+                    </el-button>
+
+                </template>
+            </avue-crud>
+            <el-drawer :visible.sync="drawer" title="预警信息详情" direction="rtl" size="40%" append-to-body="true">
+                <originalWarnInfoDetail :id="dataFromId" ref="originalWarnInfoDetail"></originalWarnInfoDetail>
+            </el-drawer>
+        </basic-container>
+
+    </div>
+
+</template>
+
+<script>
+import { getPage, getDetail } from "@/api/warning/warning";
+// import { mapGetters } from "vuex";
+import originalWarnInfoDetail from "./originalWarnInfoDetail";
+export default {
+    components: { originalWarnInfoDetail },
+    data() {
+        return {
+            dataFromId: '',
+            drawer: false,
+            // rtuCode: "",
+            editForm: {},
+            editDialog: false,
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                //  height: "auto",
+                calcHeight: 30,
+                align: "center",
+                headerAlign: "center",
+
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                menu: true,
+                border: true,
+                index: true,
+                height: 300,
+                editBtn: false,
+                delBtn: false,
+                addBtn: false,
+                viewBtn: false,
+                viewBtnText: "预警详情",
+                menuWidth: 220,
+                dialogType: "drawer",
+
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "预警类型",
+                        prop: "warningKind",
+                        span: 12,
+                    },
+                    {
+                        label: "预警信息",
+                        prop: "warningDesc",
+                        span: 12,
+                    },
+                    {
+                        label: "预警时间",
+                        prop: "warningHappenTime",
+                        span: 12,
+                        search: true,
+                    },
+                    {
+                        label: "恢复时间",
+                        prop: "warningRecoveryTime",
+                        span: 12,
+                        search: true,
+                    },
+                    {
+                        label: "预警状态",
+                        prop: "warningStatus",
+                        span: 12,
+                        solt: true,
+                    },
+                ],
+            },
+            data: [],
+        };
+    },
+    props: {
+        rtuCode: {
+            type: [String],
+            required: true
+        },
+
+    },
+    created() {
+        this.init();
+    },
+    methods: {
+        init() {
+            //this.$message.success(this.rtuCode)
+            this.onLoad(this.page);
+        },
+        toWarnInfoDetail(row) {
+            this.dataFromId = row.dataFromId;
+            this.drawer = true;
+        },
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+
+        beforeOpen(done, type) {
+            if (["view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            params['rtuCode'] = this.rtuCode;
+
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>

+ 250 - 0
src/views/data/rtuImportProcess.vue

@@ -0,0 +1,250 @@
+<!--
+ * @Title: 
+ * @Description: 
+ * @Author: 893699165@qq.com
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <basic-container>
+            <!-- <avue-form :option="option" v-model="form1"  :upload-before="uploadBefore" :upload-after="uploadAfter"  ></avue-form> -->
+
+
+
+            <el-row>
+                <el-col :span="24">
+                    <div>
+                        <label>项目名称:</label>
+                        <label style="margin-left: 20px;">{{projectName}}</label>
+                    </div>
+                </el-col>
+            </el-row>
+            <el-row>
+                <el-col :span="24">
+                    <el-upload ref="upload" :action="uploadUrl" :on-preview="handlePreview" :on-remove="handleRemove"
+                        :before-upload="beforeUpload" :on-error="onError" :on-success="onSuccess" :file-list="fileList"
+                        :auto-upload="false" :multiple="false" limit="1" accept=".xlsx" :data="postData">
+                        <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
+                        <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">提交导入文件
+                        </el-button>
+                        <div slot="tip" class="el-upload__tip">只能上传XLSX 工作表</div>
+                    </el-upload>
+                </el-col>
+            </el-row>
+
+        </basic-container>
+    </div>
+</template>
+
+<script>
+// import { getList, getDetail, add, update } from "@/api/workbench/monitoring";
+// import { mapGetters } from "vuex";
+import { getToken } from "@/util/auth";
+// import { submit } from "../../api/base/region";
+
+
+
+export default {
+    data() {
+        return {
+            fileList: [
+            ]
+            , fileName: '',
+            editForm: {},
+            editDialog: false,
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+
+            form1: {
+                fileList: [
+                    // { "label": "avue@226d5c1a_image.png", "value": "/images/logo-bg.jpg" },
+                    // {"label": "avue@226d5c1a_video.png", "value": 'https://www.w3school.com.cn/i/movie.ogg'}
+                ],
+
+            },
+            // option: {
+            //   labelWidth: 120,
+            //   submitText: '开始导入',
+
+            //   column: [
+
+            //     {
+            //       label: '拖拽上传',
+            //       prop: 'fileList',
+            //       type: 'upload',
+            //       span: 24,
+            //       limit: 1,
+            //       dragFile: true,
+            //       propsHttp: {
+            //         url: 'value',
+            //         name: 'label',
+            //         res: 'data'
+            //       },
+            //       tip: '只能上传XLSX 工作表',
+            //       action: this.uploadUrl(),
+            //     }
+            //   ]
+            // },
+
+
+            // page: {
+            //   pageSize: 5,
+            //   currentPage: 1,
+            //   total: 0,
+            // },
+
+            // option: {
+            //   labelWidth: 120,
+            //   viewLabelWidth: 100,
+            //   searchlabelWidth: 100,
+            //   height: "auto",
+            //   calcHeight: 30,
+            //   align: "center",
+            //   headerAlign: "center",
+
+            //   tip: false,
+            //   simplePage: true,
+            //   searchShow: true,
+            //   searchMenuSpan: 6,
+            //   addBtn: false,
+
+            //   border: true,
+            //   index: true,
+            //   height: 300,
+            //   editBtn: false,
+            //   delBtn: false,
+            //   menuWidth: 220,
+            //   dialogType: "drawer",
+            //   menu: false,
+            //   dialogClickModal: false,
+            //   column: [
+            //     {
+            //       label: "预警信息",
+            //       prop: "rtuName",
+            //       search: true,
+            //       span: 12,
+            //     },
+            //     {
+            //       label: "预警时间",
+            //       prop: "rtuCode",
+            //       span: 12,
+            //       search: true,
+            //     },
+            //     {
+            //       label: "恢复时间",
+            //       prop: "orgId",
+            //       span: 12,
+            //     },
+            //   ],
+            // },
+            postData: {},
+            uploadUrl: '',
+
+        };
+    },
+
+    props: {
+        id: {
+            type: [Number],
+            required: true
+        },
+        projectName: {
+            type: [String],
+            required: true
+        },
+        visible: {
+            tyep: [Boolean],
+            default: false,
+        },
+        importLoading: {
+            tyep: [Boolean],
+            default: false,
+        }
+    },
+    name: 'rtuImportProcess',
+    // onload(){
+    //   this.postData['projectId']=this.id;
+    //   this.postData['projectName']=this.projectName;
+    // },
+    created() {
+        this.init();
+    },
+    methods: {
+        init() {
+            this.postData['projectId'] = this.id;
+            this.uploadUrl = this.getUploadUrl();
+        },
+        submitUpload() {
+
+            this.$refs.upload.submit();
+            this.$message.success('submitUpload')
+
+
+        },
+        handleRemove(file, fileList) {
+            console.log(file, fileList);
+            this.$message.success('handleRemove')
+        },
+        handlePreview(file) {
+            console.log(file);
+            this.$message.success('handlePreview')
+        },
+        beforeUpload(file) {
+
+
+            console.log(file);
+            this.$message.success('beforeUpload')
+            return true;
+        },
+        onProgress(event, file, fileList) {
+            this.$emit("update:importLoading", true);
+        },
+        onError(err, file, fileList) {
+            this.$message.warning("onError");
+        },
+        onSuccess(response, file, fileList) {
+            this.$message.warning("提交成功");
+
+            this.$refs.upload.clearFiles();
+            this.$emit("update:importLoading", false);
+            this.$emit("update:visible", false);
+        },
+        // submit(form) {
+
+        //   console.log(form)
+        //   this.$message.warning("onSubmit");
+        // },
+        getUploadUrl: function () {
+            //  this.$message.success('getUploadUrl')
+            return `/api/galaxy-test/data/manage/import/rtu?${this.website.tokenHeader
+                }=${getToken()}`;
+        },
+        // takeFile() {
+
+        // },
+
+        // uploadBefore(file, done, loading, column) {
+        //   console.log(file, column)
+        //   //如果你想修改file文件,由于上传的file是只读文件,必须复制新的file才可以修改名字,完后赋值到done函数里,如果不修改的话直接写done()即可
+        //   // var newFile = new File([file], '1234', { type: file.type });
+        //   done()
+        //   this.$message.success('上传前的方法')
+        // },
+        // uploadAfter(res, done, loading, column) {
+        //   console.log(res, column)
+        //   done()
+        //   this.$message.success('上传后的方法')
+        // }
+    },
+};
+</script>
+<style>
+.mb0 {
+    margin-top: 10;
+
+}
+</style>

+ 742 - 0
src/views/data/rtuimport copy.vue

@@ -0,0 +1,742 @@
+<!--
+ * @Title: 应急排值班
+ * @Description: 
+ * @Author: 893699165@qq.com
+ * @Date: 2022-04-07 14:59:42
+ * @LastEditors: 
+ * @LastEditTime: 2022-04-07 14:59:42
+-->
+<template>
+  <div class="yjpzb2">
+    <basic-container>
+      <el-row>
+        <el-col :span="8">
+          <div>
+            查询时间:
+            <el-date-picker
+              value-format="yyyy-MM-dd"
+              v-model="date"
+              size="small"
+              @change="changeDate(date)"
+              :clearable="false"
+            ></el-date-picker>
+            <el-button
+              size="small"
+              type="primary"
+              class="ml20"
+              @click="changeDate()"
+              >今日</el-button
+            >
+          </div>
+        </el-col>
+        <!-- <el-col :span="7" class="text-center">
+          <el-radio-group v-model="type" @change="changeType">
+            <el-radio :label="1">实际值班情况</el-radio>
+            <el-radio :label="2">排班表</el-radio>
+          </el-radio-group>
+        </el-col> -->
+        <el-col :span="16">
+          <div class="text-right">
+            <el-upload
+              class="upload-demo"
+              ref="upload"
+              :action="uploadUrl()"
+              :multiple="false"
+              :file-list="fileList"
+              :on-remove="handleRemove"
+              :on-exceed="onExceed"
+              :show-file-list="false"
+              :before-upload="beforeUpload"
+              :limit="1"
+              :on-success="uploadSuccess"
+            >
+              <el-button size="small" type="primary" :loading="loading"
+                >导入</el-button
+              >
+              <div slot="tip" class="el-upload__tip"></div>
+            </el-upload>
+
+            <!-- <el-button
+              v-if="detail.filingStatus"
+              size="small"
+              type="primary"
+              class="ml20"
+              @click="openShift"
+              icon="el-icon-set-up"
+              >调班</el-button
+            > -->
+
+            <!-- <el-button
+              size="small"
+              type="primary"
+              class="ml20"
+              icon="el-icon-date"
+              @click="openCal"
+              >排值班日历</el-button
+            > -->
+          </div>
+        </el-col>
+      </el-row>
+
+
+      <!-- <div class="date">
+        <div v-if="detail.dutyStartTime" class="dateText">
+          {{
+            dateFormat(
+              new Date(detail.dutyStartTime),
+              "yyyy" + "年" + "MM" + "月" + "dd" + "日"
+            )
+          }}
+        </div>
+        <div v-else class="dateText">
+          {{
+            dateFormat(
+              new Date(date),
+              "yyyy" + "年" + "MM" + "月" + "dd" + "日"
+            )
+          }}
+        </div>
+      </div> -->
+      <el-row>
+ 
+            <avue-crud
+              :option="option"
+              :table-loading="loading"
+              :data="data"
+              :page.sync="page"
+              :before-open="beforeOpen"
+              ref="crud"
+              v-model="form"
+              :permission="permissionList"
+              @row-del="rowDel"
+              @row-update="rowUpdate"
+              @row-save="rowSave"
+              @search-change="searchChange"
+              @search-reset="searchReset"
+              @selection-change="selectionChange"
+              @current-change="currentChange"
+              @size-change="sizeChange"
+              @refresh-change="refreshChange"
+              @on-load="onLoad"
+              @before-open="beforeOpen"
+            >
+              <template slot="state" slot-scope="{ row }">
+                <el-button type="text" @click="openConfig(row)"> 正常 </el-button>
+              </template>
+              <template slot-scope="{ row, index }" slot="menu">
+          
+                <el-button type="text" size="small" @click="importRtu"
+                  >导入测站
+                </el-button>
+        
+              </template>
+            </avue-crud>
+       
+      </el-row>
+
+ 
+    </basic-container>
+    <el-dialog
+      :title="title"
+      :visible.sync="orgDialog"
+      width="800px"
+      append-to-body
+    >
+      <el-table
+        border
+        :data="orgTable"
+        style="width: 100%"
+        max-height="500"
+        :header-cell-style="{ background: '#fafafa', color: '#000' }"
+      >
+        <el-table-column fixed prop="postName" label="岗位" align="center">
+        </el-table-column>
+        <el-table-column prop="userName" label="姓名" align="center">
+        </el-table-column>
+        <el-table-column
+          prop="userEmergencyPhone"
+          label="应急电话"
+          align="center"
+        >
+        </el-table-column>
+        <el-table-column prop="userMobile" label="手机" align="center">
+        </el-table-column>
+        <avue-empty :size="50" slot="empty" desc="" image="">
+          <img src="/svg/empty.svg" alt="" />
+          <p>暂无数据</p>
+        </avue-empty>
+      </el-table>
+    </el-dialog>
+
+    <el-drawer
+      :title="dutyTitle"
+      :visible.sync="dialog"
+      direction="rtl"
+      custom-class="demo-drawer"
+      ref="drawer"
+      append-to-body
+      :wrapperClosable="false"
+      size="1200px"
+    >
+      <!-- <div class="demo-drawer__content" style="">
+        <yjpzbAdd
+          ref="yjpzbAdd"
+          @close="closeAdd"
+          @confirm="confirmAdd"
+          :pzbDate="date"
+          @closeShift="closeShift"
+          :dutyStartTime="dutyStartTime"
+        ></yjpzbAdd>
+      </div> -->
+    </el-drawer>
+    <el-drawer
+      title="排值班日历"
+      :visible.sync="calDialog"
+      direction="rtl"
+      custom-class="demo-drawer"
+      ref="drawer"
+      append-to-body
+      :wrapperClosable="false"
+      size="900px"
+    >
+      <!-- <div class="demo-drawer__content" style="">
+        <calendar ref="calendar" @close="closeCal"></calendar>
+      </div> -->
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+// import yjpzbAdd from "./yjpzbAdd.vue";
+// import calendar from "./calendar.vue";
+import { dateFormat } from "@/util/date";
+
+// import {
+//   getDutyDetail,
+//   getDutyUser,
+//   getDutyOrganization,
+//   updateDutyStatus,
+//   getPzbList,
+//   getDcList,
+// } from "@/api/business/yjbz/yjpzb/yjpzb2";
+
+// import {  } from "@/api/business/yjxyzy/yjqd/yjqd";
+// import html2canvas from "html2canvas";
+// import printJS from "print-js";
+import { getToken } from "@/util/auth";
+
+// import request from '@/router/axios';
+
+export default {
+  name: "rtuimport",
+  data() {
+    return {
+      fileList: [],
+      title: "",
+      deptTitle: "",
+      orgDialog: false,
+      orgTable: [],
+      dutyStartTime: "",
+      date: "",
+      detail: {},
+      activeName: "list",
+      dialog: false,
+      calDialog: false,
+
+      tableData: [],
+      treeList: [],
+      shiftForm: {
+        dutyDetailId: "",
+        changeUserId: "",
+        changeTime: "",
+        userEmergencyPhone: "",
+        userMobile: "",
+      },
+      shiftList: [],
+      filterText: "",
+      data: [],
+      defaultProps: {
+        children: "children",
+        label: "deptTitle",
+      },
+      current: 1,
+      size: 10,
+      total: 0,
+      type: 2,
+      array: [],
+      loading: false,
+    };
+  },
+  watch: {
+    filterText(val) {
+      this.$refs.tree.filter(val);
+    },
+  },
+  components: {
+    // yjpzbAdd,
+    // calendar,
+  },
+  onLoad(){
+     console.log("dddddddddddddddddddddddddddddddddddd")
+  },
+  mounted() {},
+  created() {
+    const date = this.$route.query.date;
+
+    this.changeDate(date);
+  },
+  methods: {
+    beforeUpload() {
+      this.loading = true;
+    },
+    // 打印
+    // toImg() {
+    //   if (this.activeName === "list") {
+    //     html2canvas(this.$refs["pzbList"], {
+    //       backgroundColor: null,
+    //       useCORS: true,
+    //       windowHeight: document.body.scrollHeight,
+    //     }).then((canvas) => {
+    //       const url = canvas.toDataURL();
+    //       this.img = url;
+    //       printJS({
+    //         printable: url,
+    //         type: "image",
+    //         documentTitle: "&nbsp",
+    //       });
+    //     });
+    //   }
+    //   if (this.activeName === "tree") {
+    //     html2canvas(this.$refs["pzbTree"], {
+    //       backgroundColor: null,
+    //       useCORS: true,
+    //       windowHeight: document.body.scrollHeight,
+    //     }).then((canvas) => {
+    //       const url = canvas.toDataURL();
+    //       this.img = url;
+    //       printJS({
+    //         printable: url,
+    //         type: "image",
+    //         documentTitle: "&nbsp",
+    //       });
+    //     });
+    //   }
+    // },
+    // closeShift() {
+    //   this.changeType();
+    // },
+    // // 切换 实际与计划排值班 数据
+    // changeType() {
+    //   this.tableData = [];
+    //   this.getDutyOrganization();
+    // },
+    // handleSizeChange(val) {
+    //   this.size = val;
+    //   this.current = 1;
+    //   if (this.type === 1) {
+    //     this.getList();
+    //   } else {
+    //     this.getPzbList();
+    //   }
+    // },
+    // // page 修改
+    // currentChange(val) {
+    //   if (this.type === 1) {
+    //     this.getList(val);
+    //   } else {
+    //     this.getPzbList(val);
+    //   }
+    // },
+    // // 点击左边组织列表
+    // nodeClick(node) {
+    //   this.deptCode = node.deptCode;
+    //   this.deptTitle = node.deptTitle;
+    //   console.log(node);
+    //   if (this.type === 1) {
+    //     this.getList();
+    //   } else {
+    //     this.getPzbList();
+    //   }
+    // },
+    // getPzbList(current = 1) {
+    //   this.tableData = [];
+    //   this.total = 0;
+    //   let params = {
+    //     date: this.date,
+    //     deptCode: this.deptCode,
+    //     current,
+    //     size: this.size,
+    //   };
+    //   getPzbList(params).then((res) => {
+    //     this.tableData = res.data.data.records;
+    //     this.total = res.data.data.total;
+    //     this.current = current;
+    //   });
+    // },
+    // // 获取岗位列表
+    // getList(current = 1) {
+    //   this.tableData = [];
+    //   this.total = 0;
+    //   let params = {
+    //     date: this.date,
+    //     dutyDeptCode: this.deptCode,
+    //     current,
+    //     size: this.size,
+    //   };
+    //   getDcList(params).then((res) => {
+    //     this.tableData = res.data.data.records;
+    //     console.log(res.data);
+    //     this.total = res.data.data.total;
+    //     this.current = current;
+    //   });
+    // },
+    // filterNode(value, data) {
+    //   if (!value) return true;
+    //   return data.deptTitle.indexOf(value) !== -1;
+    // },
+    dateFormat,
+    // // 获取阻止结构
+    // getDutyOrganization() {
+    //   this.treeList = [];
+    //   this.tableData = [];
+    //   this.data = [];
+    //   let params = {
+    //     type: 1,
+    //     date: this.date,
+    //     realType: this.type === 1 ? 1 : "",
+    //   };
+    //   getDutyOrganization(params).then((res) => {
+    //     this.treeList = res.data.data;
+    //     this.data = res.data.data;
+
+    //     this.nodeClick(this.data[0]);
+    //   });
+    // },
+
+    // // 点击 今日
+    changeDate(date) {
+      this.date = date || dateFormat(new Date(), "yyyy-MM-dd");
+      //this.getData();
+
+    //  this.getDutyOrganization();
+    },
+    // // 获取 排值班基本详情
+    // getData() {
+    //   this.detail = {};
+    //   getDutyDetail({
+    //     date: this.date,
+    //     dutyDeptCode: this.deptCode,
+    //   }).then((res) => {
+    //     if (res.data.code === 200) {
+    //       this.detail = res.data.data;
+    //     }
+    //   });
+    // },
+
+    // // 归档
+    // returning() {
+    //   this.$confirm("确定归档该当前时间?", "提示", {
+    //     confirmButtonText: "确定",
+    //     cancelButtonText: "取消",
+    //     type: "warning",
+    //   })
+    //     .then(() => {
+    //       updateDutyStatus({
+    //         id: this.detail.id,
+    //         filingStatus: 1,
+    //       }).then((res) => {
+    //         if (res.data.code === 200) {
+    //           this.$message.success("操作成功");
+    //           this.detail.filingStatus = 1;
+    //           this.getDutyOrganization();
+    //         }
+    //       });
+    //     })
+    //     .catch(() => {});
+    // },
+    // // 打开调班窗口
+    // openShift(item) {
+    //   if (!this.detail.filingStatus) {
+    //     this.$message.warning("当前数据未归档");
+    //     return;
+    //   }
+    //   this.dutyTitle = "调 班";
+    //   this.dialog = true;
+    //   this.dutyStartTime = this.detail.dutyStartTime;
+
+    //   this.$nextTick(() => {
+    //     this.$refs["yjpzbAdd"].shift();
+    //   });
+    // },
+    // // 打开调班窗口
+    // openEdit(item) {
+    //   this.dutyTitle = "编 辑";
+
+    //   this.dialog = true;
+    //   this.dutyStartTime = this.detail.dutyStartTime;
+
+    //   this.$nextTick(() => {
+    //     this.$refs["yjpzbAdd"].edit();
+    //   });
+    // },
+    // // 查看详情
+    // linkDetail(item) {
+    //   this.dialog = true;
+
+    //   this.dutyStartTime = this.detail.dutyStartTime;
+
+    //   this.$nextTick(() => {
+    //     this.$refs["yjpzbAdd"].check();
+    //   });
+    // },
+    // openAdd() {
+    //   this.dutyTitle = "新 增";
+
+    //   this.dialog = true;
+    //   this.dutyStartTime = "";
+
+    //   this.$nextTick(() => {
+    //     this.$refs["yjpzbAdd"].open();
+    //   });
+    // },
+
+    // openCal() {
+    //   this.calDialog = true;
+    //   this.$nextTick(() => {
+    //     this.$refs["calendar"].open();
+    //   });
+    // },
+    // // 关闭排值班日历
+    // closeCal(date) {
+    //   this.calDialog = false;
+
+    //   if (date) {
+    //     this.date = date;
+    //     this.getData();
+
+    //     this.getDutyOrganization();
+    //   }
+    // },
+    // confirmAdd() {
+    //   this.changeDate(this.date);
+    //   this.dialog = false;
+    // },
+    // // 关闭排值班新增
+    // closeAdd() {
+    //   this.dialog = false;
+    // },
+    // //每页条数 改变
+    // handleSizeChange(newSize) {
+    //   this.size = newSize;
+    //   if (this.type === 1) {
+    //     this.getList();
+    //   } else {
+    //     this.getPzbList();
+    //   }
+    // },
+    // //当前页 改变
+    // handleCurrentChange(newPage) {
+    //   this.current = newPage;
+    //   if (this.type === 1) {
+    //     this.getList(newPage);
+    //   } else {
+    //     this.getPzbList(newPage);
+    //   }
+    // },
+    // openOrg(item) {
+    //   this.orgDialog = true;
+    //   this.title = item.deptTitle;
+    //   this.orgTable = item.dutyDetailVOList;
+    // },
+    uploadUrl: function () {
+      return `/api/galaxy-test/data/manage/import/rtu?${
+        this.website.tokenHeader
+      }=${getToken()}`;
+    },
+    // handleRemove(file, fileList) {
+    //   this.ruleForm.attach = "";
+    // },
+    // onExceed(file, fileList) {
+    //   this.$message.warning("超出文件上传数量");
+    // },
+    // uploadSuccess(response, file, fileList) {
+    //   console.log("---response:", response);
+    //   console.log("---file:", file);
+
+    //   console.log("---fileList:", fileList);
+    //   this.fileList = [];
+    //   this.loading = false;
+    //   this.$message.success("导入成功");
+    //   this.changeDate();
+    // },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.yjpzb2 {
+
+  .text-right{
+    text-align:right;
+  }
+   
+  
+
+  .upload-demo {
+    display: inline-block;
+  }
+  .deptTitle {
+    font-size: 16px;
+    font-weight: 700;
+    height: 36px;
+    line-height: 36px;
+  }
+  .ifChangeShift {
+    color: rgb(117, 220, 194);
+  }
+  .fax {
+    font-size: 14px;
+    height: 40px;
+    line-height: 40px;
+    border: 1px solid #eee;
+    border-top: none;
+  }
+  .date {
+    position: relative;
+    height: 20px;
+    .dateText {
+      position: absolute;
+      right: 0;
+      bottom: -30px;
+      z-index: 99;
+    }
+  }
+  .tree {
+    position: relative;
+    height: 800px;
+    .main {
+      position: absolute;
+      left: 50%;
+      top: 40px;
+      transform: translateX(-50%);
+      height: 200px;
+      width: 300px;
+      border: 2px solid #409eff;
+      cursor: pointer;
+      border-radius: 8px;
+
+      &::after {
+        content: "";
+        position: absolute;
+        left: 50%;
+        bottom: -40px;
+        transform: translateX(-50%);
+        width: 2px;
+        height: 40px;
+        background-color: #409eff;
+      }
+    }
+    .main2 {
+      position: absolute;
+      left: 50%;
+      top: 280px;
+      transform: translateX(-50%);
+      height: 200px;
+      width: 300px;
+      border: 2px solid #409eff;
+      cursor: pointer;
+      border-radius: 8px;
+
+      &::after {
+        content: "";
+        position: absolute;
+        left: 50%;
+        bottom: -30px;
+        transform: translateX(-50%);
+        width: 2px;
+        height: 30px;
+        background-color: #409eff;
+      }
+      &::before {
+        content: "";
+        position: absolute;
+        left: 50%;
+        bottom: -30px;
+        transform: translateX(-50%);
+        width: 1028px;
+        height: 2px;
+        background-color: #409eff;
+      }
+    }
+    .title {
+      height: 40px;
+      line-height: 40px;
+      padding: 0 10px;
+      margin: 0;
+      font-size: 14px;
+      font-weight: 500;
+      border-bottom: 2px solid #409eff;
+      color: #333;
+    }
+    .postList {
+      overflow: scroll;
+      height: 158px;
+      flex-grow: 1;
+      padding: 0px 20px;
+      box-sizing: border-box;
+      font-size: 12px;
+      &::-webkit-scrollbar {
+        width: 0 !important;
+      }
+    }
+    .post {
+      padding: 10px 0;
+      color: #666;
+      font-size: 14px;
+      display: flex;
+      flex-direction: row;
+      justify-content: space-between;
+      .postName {
+        flex-grow: 2;
+        text-align: left;
+        white-space: nowrap;
+        overflow: hidden;
+        text-overflow: ellipsis;
+      }
+      .userName {
+        flex-shrink: 0;
+      }
+    }
+    .far {
+      width: 1200px;
+      position: absolute;
+      left: 50%;
+      top: 538px;
+      transform: translateX(-50%);
+      display: flex;
+      flex-direction: row;
+      justify-content: space-between;
+
+      .son {
+        border-radius: 8px;
+
+        width: 260px;
+        position: relative;
+        border: 2px solid #409eff;
+        box-sizing: border-box;
+        cursor: pointer;
+        &::before {
+          content: "";
+          position: absolute;
+          left: 50%;
+          top: -30px;
+          transform: translateX(-50%);
+          width: 2px;
+          height: 30px;
+          background-color: #409eff;
+        }
+      }
+    }
+  }
+}
+</style>

+ 413 - 0
src/views/data/rtuimport.vue

@@ -0,0 +1,413 @@
+<!--
+ * @Title: 
+ * @Description: 
+ * @Author: 893699165@qq.com
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+            <!-- <el-col :span="5">
+        <div class="box">
+          <el-scrollbar>
+          <basic-container>
+            <avue-tree
+              :option="treeOption"
+              :data="treeData"
+              @node-click="nodeClick"
+            />
+          </basic-container>
+        </el-scrollbar>
+        </div>
+      </el-col> -->
+            <el-col :span="24">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page"
+                        :before-open="beforeOpen" ref="crud" v-model="form" :permission="permissionList"
+                        @row-del="rowDel" @row-update="rowUpdate" @row-save="rowSave" @search-change="searchChange"
+                        @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange"
+                        @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"
+                        @before-open="beforeOpen">
+                        <template slot="state" slot-scope="{ row }">
+                            <el-button type="text" @click="openConfig(row)"> 正常 </el-button>
+                        </template>
+                        <template slot-scope="{ row, index }" slot="menu">
+
+                            <el-button type="text" size="small" @click="rtuImport(row)">导入测站
+                            </el-button>
+
+                        </template>
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+
+        <el-dialog title="导入向导" :visible.sync="rtuImportProcessDialog" width="60%" height="60%"
+            :close-on-click-modal="false" append-to-body :v-loading="importLoading" v-if="rtuImportProcessDialog">
+            <rtuImportProcess :id="projectId" :projectName="projectName" :importLoading="importLoading"
+                :visible.sync="rtuImportProcessDialog" ref="rtuImportProcess"></rtuImportProcess>
+        </el-dialog>
+
+    </div>
+</template>
+
+<script>
+import { getPage, getDetail, add, update, remove } from "@/api/baseinfo/project";
+// import { mapGetters } from "vuex";
+//   import warningInfo from "./warningInfo.vue";
+//   import maintainOrder from "./maintainOrder.vue";
+import {
+    getDeptTree,
+} from "@/api/system/dept.js";
+import { getToken } from "@/util/auth";
+// import { dateFormat } from "@/util/date";
+import rtuImportProcess from "./rtuImportProcess.vue";
+export default {
+    components: {
+        rtuImportProcess,
+
+    },
+    data() {
+        return {
+            importLoading: false,
+            loading: false,
+            rtuImportProcessDialog: false,
+            warningConfig: {
+                configSw: false,
+                code: "",
+            },
+            infoDialog: false,
+            rtuImportDialog: false,
+
+            projectId: 0,
+            projectName: '',
+
+            id: "",
+            editForm: {},
+            editDialog: false,
+            form: {},
+            selectionList: [],
+            query: {},
+
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            treeOption: {
+                nodeKey: "id",
+                lazy: true,
+                treeLoad: function (node, resolve) {
+                    const parentId = node.level === 0 ? 0 : node.data.id;
+                    console.log(parentId)
+                    console.log(resolve)
+                    // getDeptLazyTree(parentId).then((res) => {
+                    //   resolve(
+                    //     res.data.data.map((item) => {
+                    //       return {
+                    //         ...item,
+                    //         leaf: !item.hasChildren,
+                    //       };
+                    //     })
+                    //   );
+                    // });
+                },
+                addBtn: false,
+                menu: false,
+                size: "small",
+                props: {
+                    labelText: "标题",
+                    label: "title",
+                    value: "value",
+                    children: "children",
+                },
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                // height: "auto",
+                height: 600,
+                calcHeight: 30,
+                align: "center",
+                headerAlign: "center",
+                lazy: true,
+                tip: false,
+                simplePage: true,
+                searchShow: true,
+                searchMenuSpan: 6,
+                tree: true,
+                border: true,
+                index: true,
+                selection: true,
+                viewBtn: false,
+                viewTitle: "测站导入",
+                editBtn: false,
+                delBtn: false,
+                addBtn: false,
+                menuWidth: 220,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "项目名称",
+                        prop: "projectName",
+                        search: true,
+                        span: 12,
+                    },
+                    {
+                        label: "所属机构",
+                        prop: "orgId",
+                        span: 12,
+                        hide: true,
+                        viewDisplay: false,
+
+
+                        dicData: [],
+                        type: "tree",
+
+                        addDisabled: false,
+                        props: {
+                            label: "title",
+                        },
+                        rules: [
+                            {
+                                required: false,
+                                message: "请选择机构",
+                                trigger: "click",
+                            },
+                        ],
+                    },
+                    {
+                        label: "所属机构",
+                        prop: "orgName",
+                        span: 12,
+                        editDisplay: false,
+                        addDisplay: false,
+                    },
+
+                    {
+                        label: "导入时间",
+                        prop: "importTime",
+                        span: 8,
+
+                    },
+
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        // ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                // addBtn: this.vaildData(this.permission.docCategory_add, false),
+                // viewBtn: this.vaildData(this.permission.docCategory_view, false),
+                // delBtn: this.vaildData(this.permission.docCategory_delete, false),
+                // editBtn: this.vaildData(this.permission.docCategory_edit, false),
+            };
+        },
+        ids() {
+            let ids = [];
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id);
+            });
+            return ids.join(",");
+        },
+    },
+    mounted() { },
+    created() {
+        this.initData();
+    },
+    methods: {
+        handleRemove(file, fileList) {
+            this.$message.warning("超出文件上传数量{}{}", file, fileList);
+            //this.ruleForm.attach = "";
+        },
+        onExceed(file, fileList) {
+            this.$message.warning("超出文件上传数量{}{}", file, fileList);
+
+        },
+        uploadUrl: function () {
+            return `/api/galaxy-test/data/manage/import/rtu?${this.website.tokenHeader
+                }=${getToken()}`;
+        },
+        beforeUpload() {
+            this.loading = true;
+        },
+        uploadSuccess(response, file, fileList) {
+            console.log("---response:", response);
+            console.log("---file:", file);
+
+            console.log("---fileList:", fileList);
+            this.fileList = [];
+            this.loading = false;
+            this.$message.success("导入成功");
+            this.changeDate();
+        },
+        initData() {
+            getDeptTree('000000').then((res) => {
+                const column = this.findObject(this.option.column, "orgId");
+                column.dicData = res.data.data;
+            });
+        },
+
+        rtuImport(item) {
+            //this.$message.de("11111111111"+item.id);
+            // this.$message.log("11111111111"+item.projectName);
+
+            //  this.$message({
+            //           type: "success",
+            //           message: "操作成功!"+item.projectName,
+            //         });
+
+            this.projectName = item.projectName;
+            this.projectId = item.id;
+            this.rtuImportProcessDialog = true;
+        },
+
+        // openInfo(item) {
+        //   this.id = item.id;
+        //   this.infoDialog = true;
+        //   this.$nextTick(() => {
+        //     this.$refs["warningInfo"].init();
+        //   });
+        // },
+        // openOrder(item) {
+        //   this.id = item.id;
+        //   this.orderDialog = true;
+        //   this.$nextTick(() => {
+        //     this.$refs["maintainOrder"].init();
+        //   });
+        // },
+
+        rowSave(row, done, loading) {
+            add(row).then(
+                () => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                    done();
+                },
+                (error) => {
+                    window.console.log(error);
+                    loading();
+                }
+            );
+        },
+        rowUpdate(row, index, done, loading) {
+            update(row).then(
+                () => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                    done();
+                },
+                (error) => {
+                    window.console.log(error);
+                    loading();
+                }
+            );
+        },
+        rowDel(row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(row.id);
+                })
+                .then(() => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                });
+        },
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        handleDelete() {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据");
+                return;
+            }
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(this.ids);
+                })
+                .then(() => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                    this.$refs.crud.toggleSelection();
+                });
+        },
+        beforeOpen(done, type) {
+
+
+            // if (["add", "edit"].includes(type)) {
+            //     this.initData();
+            //   }
+            if (["edit", "view"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            this.loading = true;
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>

+ 256 - 273
src/views/desk/notice.vue

@@ -1,294 +1,277 @@
 <template>
-  <basic-container>
-    <avue-crud :option="option"
-               :table-loading="loading"
-               :data="data"
-               :page.sync="page"
-               ref="crud"
-               @row-del="rowDel"
-               v-model="form"
-               :permission="permissionList"
-               @row-update="rowUpdate"
-               @row-save="rowSave"
-               :before-open="beforeOpen"
-               @search-change="searchChange"
-               @search-reset="searchReset"
-               @selection-change="selectionChange"
-               @current-change="currentChange"
-               @size-change="sizeChange"
-               @refresh-change="refreshChange"
-               @on-load="onLoad">
-      <template slot="menuLeft">
-        <el-button type="danger"
-                   size="small"
-                   icon="el-icon-delete"
-                   plain
-                   v-if="permission.notice_delete"
-                   @click="handleDelete">删 除
-        </el-button>
-      </template>
-      <template slot-scope="{row}"
-                slot="category">
-        <el-tag>{{row.categoryName}}</el-tag>
-      </template>
-    </avue-crud>
-  </basic-container>
+    <basic-container>
+        <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel"
+            v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave"
+            :before-open="beforeOpen" @search-change="searchChange" @search-reset="searchReset"
+            @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+            @refresh-change="refreshChange" @on-load="onLoad">
+            <template slot="menuLeft">
+                <el-button type="danger" size="small" icon="el-icon-delete" plain v-if="permission.notice_delete"
+                    @click="handleDelete">删 除
+                </el-button>
+            </template>
+            <template slot-scope="{row}" slot="category">
+                <el-tag>{{row.categoryName}}</el-tag>
+            </template>
+        </avue-crud>
+    </basic-container>
 </template>
 
 <script>
-  import {getList, remove, update, add, getNotice} from "@/api/desk/notice";
-  import {mapGetters} from "vuex";
+import { getList, remove, update, add, getNotice } from "@/api/desk/notice";
+import { mapGetters } from "vuex";
 
-  export default {
+export default {
     data() {
-      return {
-        form: {},
-        query: {},
-        loading: true,
-        page: {
-          pageSize: 10,
-          currentPage: 1,
-          total: 0
-        },
-        selectionList: [],
-        option: {
-          height: 'auto',
-          calcHeight: 30,
-          dialogWidth: 950,
-          tip: false,
-          searchShow: true,
-          searchMenuSpan: 6,
-          border: true,
-          index: true,
-          viewBtn: true,
-          selection: true,
-          excelBtn: true,
-          dialogClickModal: false,
-          column: [
-            {
-              label: "通知标题",
-              prop: "title",
-              span: 24,
-              row: true,
-              search: true,
-              rules: [{
-                required: true,
-                message: "请输入通知标题",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "通知类型",
-              type: "select",
-              dicUrl: "/api/galaxy-system/dict/dictionary?code=notice",
-              props: {
-                label: "dictValue",
-                value: "dictKey"
-              },
-              dataType: "number",
-              slot: true,
-              prop: "category",
-              search: true,
-              rules: [{
-                required: true,
-                message: "请输入通知类型",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: "通知时间",
-              prop: "releaseTimeRange",
-              type: "datetime",
-              format: "yyyy-MM-dd hh:mm:ss",
-              valueFormat: "yyyy-MM-dd hh:mm:ss",
-              searchRange:true,
-              hide: true,
-              addDisplay: false,
-              editDisplay: false,
-              viewDisplay: false,
-              search: true,
-              rules: [{
-                required: true,
-                message: "请输入通知时间",
-                trigger: "blur"
-              }]
+        return {
+            form: {},
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0
             },
-            {
-              label: "通知日期",
-              prop: "releaseTime",
-              type: "date",
-              format: "yyyy-MM-dd hh:mm:ss",
-              valueFormat: "yyyy-MM-dd hh:mm:ss",
-              rules: [{
-                required: true,
-                message: "请输入通知日期",
-                trigger: "click"
-              }]
+            selectionList: [],
+            option: {
+                height: 'auto',
+                calcHeight: 30,
+                dialogWidth: 950,
+                tip: false,
+                searchShow: true,
+                searchMenuSpan: 6,
+                border: true,
+                index: true,
+                viewBtn: true,
+                selection: true,
+                excelBtn: true,
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "通知标题",
+                        prop: "title",
+                        span: 24,
+                        row: true,
+                        search: true,
+                        rules: [{
+                            required: true,
+                            message: "请输入通知标题",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: "通知类型",
+                        type: "select",
+                        dicUrl: "/api/galaxy-system/dict/dictionary?code=notice",
+                        props: {
+                            label: "dictValue",
+                            value: "dictKey"
+                        },
+                        dataType: "number",
+                        slot: true,
+                        prop: "category",
+                        search: true,
+                        rules: [{
+                            required: true,
+                            message: "请输入通知类型",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: "通知时间",
+                        prop: "releaseTimeRange",
+                        type: "datetime",
+                        format: "yyyy-MM-dd hh:mm:ss",
+                        valueFormat: "yyyy-MM-dd hh:mm:ss",
+                        searchRange: true,
+                        hide: true,
+                        addDisplay: false,
+                        editDisplay: false,
+                        viewDisplay: false,
+                        search: true,
+                        rules: [{
+                            required: true,
+                            message: "请输入通知时间",
+                            trigger: "blur"
+                        }]
+                    },
+                    {
+                        label: "通知日期",
+                        prop: "releaseTime",
+                        type: "date",
+                        format: "yyyy-MM-dd hh:mm:ss",
+                        valueFormat: "yyyy-MM-dd hh:mm:ss",
+                        rules: [{
+                            required: true,
+                            message: "请输入通知日期",
+                            trigger: "click"
+                        }]
+                    },
+                    {
+                        label: "通知内容",
+                        prop: "content",
+                        component: 'AvueUeditor',
+                        options: {
+                            action: '/api/galaxy-resource/oss/endpoint/put-file',
+                            props: {
+                                res: "data",
+                                url: "link",
+                            }
+                        },
+                        hide: true,
+                        minRows: 6,
+                        span: 24,
+                    }
+                ]
             },
-            {
-              label: "通知内容",
-              prop: "content",
-              component: 'AvueUeditor',
-              options: {
-                action: '/api/galaxy-resource/oss/endpoint/put-file',
-                props: {
-                  res: "data",
-                  url: "link",
-                }
-              },
-              hide: true,
-              minRows: 6,
-              span: 24,
-            }
-          ]
-        },
-        data: []
-      };
+            data: []
+        };
     },
     computed: {
-      ...mapGetters(["permission"]),
-      permissionList() {
-        return {
-          addBtn: this.vaildData(this.permission.notice_add, false),
-          viewBtn: this.vaildData(this.permission.notice_view, false),
-          delBtn: this.vaildData(this.permission.notice_delete, false),
-          editBtn: this.vaildData(this.permission.notice_edit, false)
-        };
-      },
-      ids() {
-        let ids = [];
-        this.selectionList.forEach(ele => {
-          ids.push(ele.id);
-        });
-        return ids.join(",");
-      }
+        ...mapGetters(["permission"]),
+        permissionList() {
+            return {
+                addBtn: this.vaildData(this.permission.notice_add, false),
+                viewBtn: this.vaildData(this.permission.notice_view, false),
+                delBtn: this.vaildData(this.permission.notice_delete, false),
+                editBtn: this.vaildData(this.permission.notice_edit, false)
+            };
+        },
+        ids() {
+            let ids = [];
+            this.selectionList.forEach(ele => {
+                ids.push(ele.id);
+            });
+            return ids.join(",");
+        }
     },
     methods: {
-      rowSave(row, done, loading) {
-        add(row).then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!"
-          });
-          done();
-        }, error => {
-          window.console.log(error);
-          loading();
-        });
-      },
-      rowUpdate(row, index, done, loading) {
-        update(row).then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!"
-          });
-          done();
-        }, error => {
-          window.console.log(error);
-          loading();
-        });
-      },
-      rowDel(row) {
-        this.$confirm("确定将选择数据删除?", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        })
-          .then(() => {
-            return remove(row.id);
-          })
-          .then(() => {
-            this.onLoad(this.page);
-            this.$message({
-              type: "success",
-              message: "操作成功!"
+        rowSave(row, done, loading) {
+            add(row).then(() => {
+                this.onLoad(this.page);
+                this.$message({
+                    type: "success",
+                    message: "操作成功!"
+                });
+                done();
+            }, error => {
+                window.console.log(error);
+                loading();
             });
-          });
-      },
-      searchReset() {
-        this.query = {};
-        this.onLoad(this.page);
-      },
-      searchChange(params, done) {
-        this.query = params;
-        this.page.currentPage = 1;
-        this.onLoad(this.page, params);
-        done();
-      },
-      selectionChange(list) {
-        this.selectionList = list;
-      },
-      selectionClear() {
-        this.selectionList = [];
-        this.$refs.crud.toggleSelection();
-      },
-      handleDelete() {
-        if (this.selectionList.length === 0) {
-          this.$message.warning("请选择至少一条数据");
-          return;
-        }
-        this.$confirm("确定将选择数据删除?", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning"
-        })
-          .then(() => {
-            return remove(this.ids);
-          })
-          .then(() => {
-            this.onLoad(this.page);
-            this.$message({
-              type: "success",
-              message: "操作成功!"
+        },
+        rowUpdate(row, index, done, loading) {
+            update(row).then(() => {
+                this.onLoad(this.page);
+                this.$message({
+                    type: "success",
+                    message: "操作成功!"
+                });
+                done();
+            }, error => {
+                window.console.log(error);
+                loading();
             });
+        },
+        rowDel(row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            })
+                .then(() => {
+                    return remove(row.id);
+                })
+                .then(() => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!"
+                    });
+                });
+        },
+        searchReset() {
+            this.query = {};
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
             this.$refs.crud.toggleSelection();
-          });
-      },
-      beforeOpen(done, type) {
-        if (["edit", "view"].includes(type)) {
-          getNotice(this.form.id).then(res => {
-            this.form = res.data.data;
-          });
-        }
-        done();
-      },
-      currentChange(currentPage) {
-        this.page.currentPage = currentPage;
-      },
-      sizeChange(pageSize) {
-        this.page.pageSize = pageSize;
-      },
-      refreshChange() {
-        this.onLoad(this.page, this.query);
-      },
-      onLoad(page, params = {}) {
-        const {releaseTimeRange} = this.query;
-        let values = {
-          ...params,
-          ...this.query
-        };
-        if (releaseTimeRange) {
-          values = {
-            ...values,
-            releaseTime_datege: releaseTimeRange[0],
-            releaseTime_datelt: releaseTimeRange[1],
-          };
-          values.releaseTimeRange = null;
+        },
+        handleDelete() {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据");
+                return;
+            }
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+            })
+                .then(() => {
+                    return remove(this.ids);
+                })
+                .then(() => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!"
+                    });
+                    this.$refs.crud.toggleSelection();
+                });
+        },
+        beforeOpen(done, type) {
+            if (["edit", "view"].includes(type)) {
+                getNotice(this.form.id).then(res => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+            const { releaseTimeRange } = this.query;
+            let values = {
+                ...params,
+                ...this.query
+            };
+            if (releaseTimeRange) {
+                values = {
+                    ...values,
+                    releaseTime_datege: releaseTimeRange[0],
+                    releaseTime_datelt: releaseTimeRange[1],
+                };
+                values.releaseTimeRange = null;
+            }
+            this.loading = true;
+            getList(page.currentPage, page.pageSize, values).then(res => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
         }
-        this.loading = true;
-        getList(page.currentPage, page.pageSize, values).then(res => {
-          const data = res.data.data;
-          this.page.total = data.total;
-          this.data = data.records;
-          this.loading = false;
-          this.selectionClear();
-        });
-      }
     }
-  };
+};
 </script>
 
 <style>
+
 </style>

+ 370 - 0
src/views/project/projectPlan.vue

@@ -0,0 +1,370 @@
+<!--
+ * @Title: 
+ * @Description: 
+ * @Author: 893699165@qq.com
+ * @Date: 2022-08-24 10:49:21
+ * @LastEditors: 
+ * @LastEditTime: 2022-08-24 10:49:21
+-->
+<template>
+    <div>
+        <el-row>
+
+            <el-col :span="24">
+                <basic-container>
+                    <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page"
+                        :before-open="beforeOpen" ref="crud" v-model="form" :permission="permissionList"
+                        @row-del="rowDel" @row-update="rowUpdate" @row-save="rowSave" @search-change="searchChange"
+                        @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange"
+                        @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad"
+                        @before-open="beforeOpen">
+                        <template slot="state" slot-scope="{ row }">
+                            <el-button type="text" @click="openConfig(row)"> 正常 </el-button>
+                        </template>
+                        <!-- <template slot-scope="{ row, index }" slot="menu">
+
+              <el-button type="text" size="small" @click="warnSetting">预警配置
+              </el-button>
+
+            </template> -->
+                    </avue-crud>
+                </basic-container>
+            </el-col>
+        </el-row>
+
+
+    </div>
+</template>
+  
+<script>
+import { getPage, getDetail, add, update, remove } from "@/api/project/projectPlan.js";
+
+// import {
+//   getDeptTree,
+// } from "@/api/system/dept.js";
+
+export default {
+    components: {
+
+    },
+    props: {
+        planSetting: {
+            type: [Object],
+            required: true
+        },
+
+
+    },
+    name: 'projectPlan',
+    data() {
+        return {
+
+            editForm: {},
+            editDialog: false,
+            form: {},
+            selectionList: [],
+            query: {},
+            loading: true,
+            page: {
+                pageSize: 10,
+                currentPage: 1,
+                total: 0,
+            },
+            treeOption: {
+                nodeKey: "id",
+                lazy: true,
+                treeLoad: function (node, resolve) {
+                    const parentId = node.level === 0 ? 0 : node.data.id;
+                    console.log(parentId)
+                    console.log(resolve)
+                    // getDeptLazyTree(parentId).then((res) => {
+                    //   resolve(
+                    //     res.data.data.map((item) => {
+                    //       return {
+                    //         ...item,
+                    //         leaf: !item.hasChildren,
+                    //       };
+                    //     })
+                    //   );
+                    // });
+                },
+                addBtn: false,
+                menu: false,
+                size: "small",
+                props: {
+                    labelText: "标题",
+                    label: "title",
+                    value: "value",
+                    children: "children",
+                },
+            },
+            option: {
+                labelWidth: 120,
+                viewLabelWidth: 100,
+                searchlabelWidth: 100,
+                //height: "auto",
+                height: 400,
+                calcHeight: 30,
+                align: "center",
+                headerAlign: "center",
+                lazy: false,
+                tip: false,
+                simplePage: true,
+                searchShow: false,
+                searchMenuSpan: 6,
+                tree: false,
+                border: true,
+                index: true,
+                selection: true,
+                viewBtn: false,
+                viewTitle: "计划信息",
+                addBtn: true,
+                editBtn: true,
+                delBtn: true,
+                menuWidth: 220,
+                dialogType: "drawer",
+                dialogClickModal: false,
+                column: [
+                    {
+                        label: "计划名称",
+                        prop: "planTitle",
+                        span: 12,
+                    },
+
+                    {
+                        label: "计划开始时间",
+                        prop: "inspectionStartTime",
+                        span: 12,
+                        type: 'date'
+                    },
+
+                    {
+                        label: "计划结束时间",
+                        prop: "inspectionEndTime",
+                        span: 12,
+                        type: 'date'
+                    },
+                    {
+                        label: "备注说明",
+                        prop: "remark",
+                        span: 8,
+                    },
+
+                ],
+            },
+            data: [],
+        };
+    },
+    computed: {
+        // ...mapGetters(["userInfo", "permission"]),
+        permissionList() {
+            return {
+                // addBtn: this.vaildData(this.permission.docCategory_add, false),
+                // viewBtn: this.vaildData(this.permission.docCategory_view, false),
+                // delBtn: this.vaildData(this.permission.docCategory_delete, false),
+                // editBtn: this.vaildData(this.permission.docCategory_edit, false),
+            };
+        },
+        ids() {
+            let ids = [];
+            this.selectionList.forEach((ele) => {
+                ids.push(ele.id);
+            });
+            return ids.join(",");
+        },
+    },
+    mounted() {
+
+
+    },
+    created() {
+
+        // this.query = {
+        //     'orgId': this.planSetting.orgId,
+        //     'projectId': this.planSetting.projectId,
+        // }
+        this.initData();
+    },
+    methods: {
+        initData() {
+
+            const planDate = new Date();
+
+            const y = planDate.getFullYear();
+
+            this.form = {
+                'planTitle': this.planSetting.planTitle,
+                'inspectionStartTime': "" + y + "-01-01",
+                'inspectionEndTime': "" + y + "-12-31",
+            };
+            // this.form['planTitle'] = this.planTitle;
+            // this.from['orgId'] = this.orgId;
+            // this.from['projectId'] = this.projectId;
+            // this.$message.success(this.planTitle)
+            // getDeptTree('000000').then((res) => {
+            //   const column = this.findObject(this.option.column, "orgId");
+            //   column.dicData = res.data.data;
+            // });
+        },
+
+        // confirmConfig() {
+
+        // },
+        // warnSetting(item) {
+        //     this.configSw = item.configSw;
+        //     this.configDialog = true;
+        // },
+        // openInfo(item) {
+        //   this.id = item.id;
+        //   this.infoDialog = true;
+        //   this.$nextTick(() => {
+        //     this.$refs["warningInfo"].init();
+        //   });
+        // },
+        // openOrder(item) {
+        //   this.id = item.id;
+        //   this.orderDialog = true;
+        //   this.$nextTick(() => {
+        //     this.$refs["maintainOrder"].init();
+        //   });
+        // },
+
+        rowSave(row, done, loading) {
+            add(row).then(
+                () => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                    done();
+                },
+                (error) => {
+                    window.console.log(error);
+                    loading();
+                }
+            );
+        },
+        rowUpdate(row, index, done, loading) {
+            update(row).then(
+                () => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                    done();
+                },
+                (error) => {
+                    window.console.log(error);
+                    loading();
+                }
+            );
+        },
+        rowDel(row) {
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(row.id);
+                })
+                .then(() => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                });
+        },
+        searchReset() {
+            this.query = {
+                'orgId': this.planSetting.orgId,
+                'projectId': this.planSetting.projectId,
+            }
+            this.onLoad(this.page);
+        },
+        searchChange(params, done) {
+            this.query = params;
+            this.query['orgId'] = this.planSetting.projectId;
+            this.query['projectId'] = this.planSetting.projectId;
+            this.page.currentPage = 1;
+            this.onLoad(this.page, params);
+            done();
+        },
+        selectionChange(list) {
+            this.selectionList = list;
+        },
+        selectionClear() {
+            this.selectionList = [];
+            this.$refs.crud.toggleSelection();
+        },
+        handleDelete() {
+            if (this.selectionList.length === 0) {
+                this.$message.warning("请选择至少一条数据");
+                return;
+            }
+            this.$confirm("确定将选择数据删除?", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning",
+            })
+                .then(() => {
+                    return remove(this.ids);
+                })
+                .then(() => {
+                    this.onLoad(this.page);
+                    this.$message({
+                        type: "success",
+                        message: "操作成功!",
+                    });
+                    this.$refs.crud.toggleSelection();
+                });
+        },
+        beforeOpen(done, type) {
+
+            //     this.$message.success("beforeOpenbeforeOpenbeforeOpenbeforeOpenbeforeOpenbeforeOpenbeforeOpenbeforeOpen")
+
+            //   this.query={
+            //   'orgId':this.planSetting.orgId,
+            //   'projectId':this.planSetting.projectId,
+            // }
+            //   if (["add", "edit"].includes(type)) {
+            //     this.initData();
+            //   }
+            if (["edit"].includes(type)) {
+                getDetail(this.form.id).then((res) => {
+                    this.form = res.data.data;
+                });
+            }
+            done();
+        },
+        currentChange(currentPage) {
+            this.page.currentPage = currentPage;
+        },
+        sizeChange(pageSize) {
+            this.page.pageSize = pageSize;
+        },
+        refreshChange() {
+            this.onLoad(this.page, this.query);
+        },
+        onLoad(page, params = {}) {
+
+            this.loading = true;
+            getPage(
+                page.currentPage,
+                page.pageSize,
+                Object.assign(params, this.query)
+            ).then((res) => {
+                const data = res.data.data;
+                this.page.total = data.total;
+                this.data = data.records;
+                this.loading = false;
+                this.selectionClear();
+            });
+        },
+    },
+};
+</script>
+  

+ 336 - 424
src/views/wel/index.vue

@@ -1,442 +1,354 @@
-<!--
- * @Title: 
- * @Description: 
- * @Author: 893699165@qq.com
- * @Date: 2022-08-24 10:49:21
- * @LastEditors: 
- * @LastEditTime: 2022-08-24 10:49:21
--->
 <template>
-  <div>
-    <el-row>
-      <el-col :span="5">
-        <div class="box">
-          <!-- <el-scrollbar>
-          <basic-container>
-            <avue-tree
-              :option="treeOption"
-              :data="treeData"
-              @node-click="nodeClick"
-            />
-          </basic-container>
-        </el-scrollbar> -->
-        </div>
-      </el-col>
-      <el-col :span="19">
-        <basic-container>
-          <avue-crud
-            :option="option"
-            :table-loading="loading"
-            :data="data"
-            ref="crud"
-            v-model="form"
-            :permission="permissionList"
-            @row-del="rowDel"
-            @row-update="rowUpdate"
-            @row-save="rowSave"
-            @search-change="searchChange"
-            @search-reset="searchReset"
-            @selection-change="selectionChange"
-            @current-change="currentChange"
-            @size-change="sizeChange"
-            @refresh-change="refreshChange"
-            @on-load="onLoad"
-            @before-open="beforeOpen"
-          >
-            <template slot="state" slot-scope="{ row }">
-              <el-button type="text" @click="openConfig(row)"> 正常 </el-button>
-            </template>
-            <template slot-scope="{ row, index }" slot="menu">
-              <el-button
-                type="text"
-                size="small"
-                @click="$refs.crud.rowView(row, index)"
-                >预警配置
-              </el-button>
-              <el-button type="text" size="small" @click="openInfo"
-                >预警信息
-              </el-button>
-              <el-button type="text" size="small" @click="openOrder"
-                >维修工单
-              </el-button>
-            </template>
-          </avue-crud>
-        </basic-container>
-      </el-col>
-    </el-row>
-    <el-dialog
-      title="预警配置"
-      :visible.sync="configDialog"
-      width="600px"
-      :before-close="handleClose"
-      :close-on-click-modal="false"
-      append-to-body
-    >
-      <el-form label-width="120px">
-        <el-form-item label="预警总开关">
-          <el-switch
-            v-model="warningConfig.configSw"
-            active-color="#13ce66"
-            inactive-color="#ff4949"
-            active-text="开"
-            inactive-text="关"
-          >
-          </el-switch>
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="configDialog = false" size="small">取 消</el-button>
-        <el-button type="primary" @click="confirmConfig" size="small"
-          >确 定</el-button
-        >
-      </span>
-    </el-dialog>
-    <el-dialog
-      title="预警信息"
-      :visible.sync="infoDialog"
-      width="80%"
-      :close-on-click-modal="false"
-      append-to-body
-    >
-      <warningInfo :id="id" ref="warningInfo"></warningInfo>
-    </el-dialog>
-    <el-dialog
-      title="维修工单"
-      :visible.sync="orderDialog"
-      width="80%"
-      :close-on-click-modal="false"
-      append-to-body
-    >
-      <maintainOrder :id="id" ref="maintainOrder"></maintainOrder>
-    </el-dialog>
-  </div>
+    <div>
+        <el-row :gutter="20">
+            <el-col :span="6">
+                <el-card shadow="always">
+                    <div style="display: flex; flex-direction: column; justify-content: center;align-items: center;">
+                        <div style="color:orangered;font-size: large;">
+                            {{realData.rtuCount}}
+                        </div>
+                        <div>
+                            <i class="el-icon-camera"></i><label>测站总数</label>
+                        </div>
+                    </div>
+                </el-card>
+            </el-col>
+            <el-col :span="6">
+                <el-card shadow="always">
+                    <div style="display: flex; flex-direction: column; justify-content: center;align-items: center;">
+                        <div style="color:orangered;font-size: large;">
+                            {{realData.warningRtuCount}}
+                        </div>
+                        <div>
+                            <i class="el-icon-camera"></i><label>设备预警</label>
+                        </div>
+                    </div>
+                </el-card>
+            </el-col>
+            <el-col :span="6">
+                <el-card shadow="always">
+                    <div style="display: flex; flex-direction: column; justify-content: center;align-items: center;">
+                        <div style="color:orangered;font-size: large;">
+                            {{realData.orderDelayProcess}}
+                        </div>
+                        <div>
+                            <i class="el-icon-camera"></i><label>超时工单</label>
+                        </div>
+                    </div>
+                </el-card>
+            </el-col>
+            <el-col :span="6">
+                <el-card shadow="always">
+                    <div style="display: flex; flex-direction: column; justify-content: center;align-items: center;">
+                        <div style="color:orangered;font-size: large;">
+                            {{realData.equipmentinspectionRtu}}
+                        </div>
+                        <div>
+                            <i class="el-icon-camera"></i><label>已巡检测站</label>
+                        </div>
+                    </div>
+                </el-card>
+            </el-col>
+        </el-row>
+        <el-row :gutter="20">
+            <el-col :span="12">
+                <el-card class="box-card">
+                    <div slot="header" class="clearfix">
+                        <span>今日工单动态</span>
+                        <el-button style="float: right; padding: 3px 0" type="text">更多</el-button>
+                    </div>
+                    <div v-for="o in 4" :key="o" class="text item">
+                        {{'列表内容 ' + o }}
+                    </div>
+                </el-card>
+            </el-col>
+            <el-col :span="12">
+                <el-card class="box-card">
+                    <div slot="header" class="clearfix">
+                        <span>今日巡检动态</span>
+                        <el-button style="float: right; padding: 3px 0" type="text">更多</el-button>
+                    </div>
+                    <div v-for="o in 4" :key="o" class="text item">
+                        {{'列表内容 ' + o }}
+                    </div>
+                </el-card>
+            </el-col>
+        </el-row>
+
+        <el-row :gutter="20">
+            <el-col :span="24">
+                <el-card class="box-card">
+                    <div slot="header" class="clearfix">
+                        <span>通知公告</span>
+                        <el-button style="float: right; padding: 3px 0" type="text">更多</el-button>
+                    </div>
+                    <div v-for="o in 4" :key="o" class="text item">
+                        {{'列表内容 ' + o }}
+                    </div>
+                </el-card>
+            </el-col>
+
+        </el-row>
+    </div>
 </template>
 
 <script>
-import { getList, getDetail, add, update } from "@/api/workbench/monitoring";
-import { mapGetters } from "vuex";
-import warningInfo from "./warningInfo.vue";
-import maintainOrder from "./maintainOrder.vue";
-export default {
-  components: {
-    warningInfo,
-    maintainOrder,
-  },
-  data() {
-    return {
-      orderDialog: false,
-      warningConfig: {
-        configSw: false,
-        code: "",
-      },
-      infoDialog: false,
-      configDialog: false,
-      id: "",
-      editForm: {},
-      editDialog: false,
-      form: {},
-      selectionList: [],
-      query: {},
-      loading: true,
-      page: {
-        pageSize: 10,
-        currentPage: 1,
-        total: 0,
-      },
-      treeOption: {
-        nodeKey: "id",
-        lazy: true,
-        treeLoad: function (node, resolve) {
-          const parentId = node.level === 0 ? 0 : node.data.id;
-          getDeptLazyTree(parentId).then((res) => {
-            resolve(
-              res.data.data.map((item) => {
-                return {
-                  ...item,
-                  leaf: !item.hasChildren,
-                };
-              })
-            );
-          });
-        },
-        addBtn: false,
-        menu: false,
-        size: "small",
-        props: {
-          labelText: "标题",
-          label: "title",
-          value: "value",
-          children: "children",
-        },
-      },
-      option: {
-        labelWidth: 120,
-        viewLabelWidth: 100,
-        searchlabelWidth: 100,
-        height: "auto",
-        calcHeight: 30,
-        align: "center",
-        headerAlign: "center",
-        lazy: true,
-        tip: false,
-        simplePage: true,
-        searchShow: true,
-        searchMenuSpan: 6,
-        tree: true,
-        border: true,
-        index: true,
-        selection: true,
-        viewBtn: false,
-        viewTitle: "预警配置",
-        editBtn: false,
-        delBtn: false,
-        menuWidth: 220,
-        dialogType: "drawer",
-        dialogClickModal: false,
-        column: [
-          {
-            label: "测站名称",
-            prop: "rtuName",
-            search: true,
-            span: 12,
-          },
-          {
-            label: "测站编码",
-            prop: "rtuCode",
-            span: 12,
-            search: true,
-          },
-          {
-            label: "所属机构",
-            prop: "orgId",
-            span: 12,
-            hide: true,
-          },
-          {
-            label: "最后上线时间",
-            prop: "orgId",
-            span: 12,
-            addDisplay: false,
-          },
-          {
-            label: "运行状态",
-            prop: "state",
-            span: 12,
-            addDisplay: false,
-          },
-          {
-            label: "项目名称",
-            prop: "projectName",
-
-            span: 12,
-            hide: true,
-          },
-          {
-            label: "SIM卡号",
-            prop: "simId",
+// import { mapGetters } from "vuex";
+//   import VueGridLayout from "vue-grid-layout";
+//   import Navigation from "./component/navigation.vue";
+//   import StateModel from "./component/stateModel.vue";
+//   import ToDo from "./toDo.vue";
+//   import EventModel from "./component/eventModel.vue";
 
-            span: 8,
-            hide: true,
-          },
-          {
-            label: "经度",
-            prop: "lng",
-            span: 8,
-            hide: true,
-          },
-          {
-            label: "纬度",
-            prop: "lat",
-            span: 8,
-            hide: true,
-          },
-          {
-            label: "测站类型",
-            prop: "rtuKinds",
+//   import Dynamic from "./component/dynamic.vue";
+//   import AddressBook from "./component/addressBook.vue";
+//   import Work from "./component/work.vue";
+//   import Yjxy from "./component/yjxy.vue";
+//   import YjxyReport from "./component/yjxyReport.vue";
 
-            span: 24,
+//   import { insertCustom, getLayout, getHomeGuide } from "@/api/home/home";
 
-            type: "input",
-            hide: true,
+// import Stomp from "stompjs";
+// import SockJS from "sockjs-client";
+import { getRealData } from "@/api/home/home.js"
+export default {
+    name: "wel",
+    components: {
+        //   GridLayout: VueGridLayout.GridLayout,
+        //   GridItem: VueGridLayout.GridItem,
+        //   Navigation,
+        //   StateModel,
+        //   ToDo,
+        //   Dynamic,
+        //   EventModel,
+        //   AddressBook,
+        //   Work,
 
-            // dicData: [
-            //   {
-            //     label: 1,
-            //     value: 1,
-            //   },
-            // ],
-          },
-          {
-            label: "备注说明",
-            prop: "remark",
-            span: 24,
-            type: "textarea",
-          },
-        ],
-      },
-      data: [],
-    };
-  },
-  computed: {
-    // ...mapGetters(["userInfo", "permission"]),
-    permissionList() {
-      return {
-        // addBtn: this.vaildData(this.permission.docCategory_add, false),
-        // viewBtn: this.vaildData(this.permission.docCategory_view, false),
-        // delBtn: this.vaildData(this.permission.docCategory_delete, false),
-        // editBtn: this.vaildData(this.permission.docCategory_edit, false),
-      };
-    },
-    ids() {
-      let ids = [];
-      this.selectionList.forEach((ele) => {
-        ids.push(ele.id);
-      });
-      return ids.join(",");
+        //   YjxyReport,
     },
-  },
-  mounted() {},
-  created() {},
-  methods: {
-    confirmConfig() {},
-    openConfig(item) {
-      this.configSw = item.configSw;
-      this.configDialog = true;
+
+    data() {
+        return {
+            realData: {
+                rtuCount: 0,
+                warningRtuCount: 0,
+                orderDelayProcess: 0,
+                equipmentinspectionRtu: 0,
+            },
+            stompClient: null,
+            init: [
+                { x: 0, y: 0, w: 18, h: 5, i: "导航", isShow: 1 },
+                { x: 18, y: 0, w: 6, h: 5, i: "状态", isShow: 1 },
+                { x: 0, y: 8, w: 9, h: 9, i: "待办", isShow: 1 },
+                { x: 9, y: 8, w: 9, h: 9, i: "动态", isShow: 1 },
+                { x: 18, y: 8, w: 6, h: 19, i: "应急大事件", isShow: 1 },
+                { x: 9, y: 17, w: 9, h: 10, i: "应急通讯录", isShow: 1 },
+                { x: 0, y: 17, w: 9, h: 10, i: "应急排班表", isShow: 1 },
+            ],
+            layout: [],
+            cache: [],
+            editSw: false,
+            dialog: false,
+            id: "",
+            guideForm: {},
+            second: 0,
+            timer: null,
+            state: 5,
+        };
     },
-    openInfo(item) {
-      this.id = item.id;
-      this.infoDialog = true;
-      this.$nextTick(() => {
-        this.$refs["warningInfo"].init();
-      });
+    created() {
+        this.getData();
     },
-    openOrder(item) {
-      this.id = item.id;
-      this.orderDialog = true;
-      this.$nextTick(() => {
-        this.$refs["maintainOrder"].init();
-      });
+
+    computed: {
+        // ...mapGetters(["userInfo"]),
     },
+    mounted() { },
 
-    rowSave(row, done, loading) {
-      add(row).then(
-        () => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
+    methods: {
+        close() {
+            this.dialog = false;
         },
-        (error) => {
-          window.console.log(error);
-          loading();
-        }
-      );
-    },
-    rowUpdate(row, index, done, loading) {
-      update(row).then(
-        () => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
+        openReport() {
+            // this.dialog = true;
+            // this.$nextTick(() => {
+            //   this.$refs["YjxyReport"].open();
+            // });
         },
-        (error) => {
-          window.console.log(error);
-          loading();
-        }
-      );
-    },
-    rowDel(row) {
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(row.id);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-        });
-    },
-    searchReset() {
-      this.query = {};
-      this.onLoad(this.page);
-    },
-    searchChange(params, done) {
-      this.query = params;
-      this.page.currentPage = 1;
-      this.onLoad(this.page, params);
-      done();
-    },
-    selectionChange(list) {
-      this.selectionList = list;
-    },
-    selectionClear() {
-      this.selectionList = [];
-      this.$refs.crud.toggleSelection();
-    },
-    handleDelete() {
-      if (this.selectionList.length === 0) {
-        this.$message.warning("请选择至少一条数据");
-        return;
-      }
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(this.ids);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          this.$refs.crud.toggleSelection();
-        });
-    },
-    beforeOpen(done, type) {
-      if (["edit", "view"].includes(type)) {
-        getDetail(this.form.id).then((res) => {
-          this.form = res.data.data;
-        });
-      }
-      done();
-    },
-    currentChange(currentPage) {
-      this.page.currentPage = currentPage;
-    },
-    sizeChange(pageSize) {
-      this.page.pageSize = pageSize;
-    },
-    refreshChange() {
-      this.onLoad(this.page, this.query);
-    },
-    onLoad(page, params = {}) {
-      this.loading = true;
-      getList(
-        page.currentPage,
-        page.pageSize,
-        Object.assign(params, this.query)
-      ).then((res) => {
-        const data = res.data.data;
-        this.page.total = data.total;
-        this.data = data.records;
-        this.loading = false;
-        this.selectionClear();
-      });
+        getData() {
+
+
+            getRealData().then((res) => {
+                if (res.data.code === 200) {
+                    this.realData.rtuCount = res.data.data.rtus;
+                    this.realData.warningRtuCount = res.data.data.warningRtus;
+                    this.realData.orderDelayProcess = res.data.data.delayOrders;
+                    this.realData.equipmentinspectionRtu = res.data.data.equipmentInspectionCount;
+                }
+            });
+
+            // this.layout = [];
+            // getLayout().then((res) => {
+            //   if (res.data.code === 200) {
+            //     if (res.data.data.length) {
+            //       res.data.data.forEach((e) => {
+            //         if (e.type === 1) {
+            //           this.layout.push({
+            //             x: e.x,
+            //             y: e.y,
+            //             w: e.width,
+            //             h: e.height,
+            //             i: e.moduleName,
+            //             isShow: e.isShow,
+            //           });
+            //         }
+            //       });
+            //     }
+
+            //     if (this.layout.length === 0) {
+            //       this.layout = this.init;
+            //     }
+            //   } else {
+            //     this.layout = this.init;
+            //   }
+            // });
+        },
+
+        changeState(state) {
+            this.state = state;
+
+            if (state != 5) {
+                if (this.timer) clearInterval(this.timer);
+                this.timer = setInterval(() => {
+                    this.second++;
+                }, 1000);
+            } else {
+                if (this.timer) {
+                    clearInterval(this.timer);
+                }
+                this.second = 0;
+            }
+        },
+        confirm() {
+            // let arr = this.layout.map((e) => {
+            //   return {
+            //     x: e.x,
+            //     y: e.y,
+            //     width: e.w,
+            //     height: e.h,
+            //     isShow: e.isShow,
+            //     moduleName: e.i,
+            //     moduleCode: e.i,
+            //   };
+            // });
+            // let params = {
+            //   layoutId: "",
+            //   homeLayoutDetailEntityList: arr,
+            // };
+            // insertCustom(params).then((res) => {});
+            // this.cache = [...this.layout];
+            // this.editSw = false;
+        },
+
+        /**
+         * 建立websocket连接
+         */
+        // initWebsocket: function () {
+        //   console.log("WebSocket 准备建立连接");
+        //   const socket = new SockJS("/api/galaxy-yjjcpt/ws");
+        //   this.stompClient = Stomp.over(socket);
+        //   this.stompClient.connect({}, this.onConnected, this.onError);
+        // },
+
+        /**
+         * 连接成功: 订阅服务器的地址。为了浏览器可以接收到消息,必须先订阅服务器的地址
+         */
+        // onConnected: function () {
+        //   console.log("WebSocket 连接成功");
+
+        //   // 设置心跳发送接受频率(ms)默认为10000ms。 heart-beating是利用window.setInterval()去规律地发送heart-beats或者检查服务端的heart-beats。
+        //   this.stompClient.heartbeat.outgoing = 10000;
+        //   this.stompClient.heartbeat.incoming = 0;
+
+        //   // 订阅
+        //   this.stompClient.subscribe("/topic/event", this.onMessageReceived);
+        // },
+
+        /**
+         * 连接失败
+         */
+        // onError: function (error) {
+        //   console.log("WebSocket 连接失败", error);
+        // },
+
+        /**
+         * 接收消息
+         */
+        // onMessageReceived: function (res) {
+        //   console.log(res.body);
+
+        //   console.log("WebSocket 接收消息-----------------------------------");
+        // },
+
+        /**
+         * 发送消息
+         */
+        // sendMessage: function () {
+        //   const chatMessage = {
+        //     sender: "",
+        //     content: "",
+        //     type: "CHAT",
+        //   };
+        //   this.stompClient.send(
+        //     "/app/chat.sendMessage",
+        //     {},
+        //     JSON.stringify(chatMessage)
+        //   );
+        // },
+
+        /**
+         * 关闭websocket连接
+         */
+        // closeSocket: function () {
+        //   if (this.stompClient != null) {
+        //     // this.stompClient.disconnect();
+        //     this.stompClient.disconnect(() => {
+        //       console.log("连接关闭");
+        //     });
+        //   }
+        // },
     },
-  },
 };
 </script>
+  
+<style>
+.el-row {
+    margin-bottom: 20px;
+}
+
+.el-col {
+    border-radius: 4px;
+}
+
+.bg-purple-dark {
+    background: #99a9bf;
+}
+
+.bg-purple {
+    background: #d3dce6;
+}
+
+.bg-purple-light {
+    background: #e5e9f2;
+}
+
+.grid-content {
+    border-radius: 4px;
+    min-height: 36px;
+}
+
+.row-bg {
+    padding: 10px 0;
+    background-color: #f9fafc;
+}
+</style>

+ 0 - 301
src/views/wel/maintainOrder.vue

@@ -1,301 +0,0 @@
-<!--
- * @Title: 
- * @Description: 
- * @Author: 893699165@qq.com
- * @Date: 2022-08-24 10:49:21
- * @LastEditors: 
- * @LastEditTime: 2022-08-24 10:49:21
--->
-<template>
-  <div>
-    <basic-container>
-      <avue-crud
-        :option="option"
-        :table-loading="loading"
-        :data="data"
-        ref="crud"
-        v-model="form"
-        :permission="permissionList"
-        @row-del="rowDel"
-        @row-update="rowUpdate"
-        @row-save="rowSave"
-        @search-change="searchChange"
-        @search-reset="searchReset"
-        @selection-change="selectionChange"
-        @current-change="currentChange"
-        @size-change="sizeChange"
-        @refresh-change="refreshChange"
-        @on-load="onLoad"
-      >
-        <template slot-scope="{ row, index }" slot="menu">
-          <el-button type="text" size="small" @click="openDetail(row)"
-            >工单记录详情
-          </el-button>
-          <el-button type="text" size="small" @click="orderOff(row)"
-            >人工关闭
-          </el-button>
-        </template>
-      </avue-crud>
-    </basic-container>
-    <el-dialog
-      title="工单填报记录列表"
-      :visible.sync="recordDialog"
-      width="80%"
-      :close-on-click-modal="false"
-      append-to-body
-    >
-      <recordList :id="id" ref="recordList"></recordList>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import {
-  getOrderList,
-  close,
-  getProcessList,
-} from "@/api/workbench/monitoring";
-import { mapGetters } from "vuex";
-import recordList from "./recordList";
-export default {
-  components: {
-    recordList,
-  },
-  data() {
-    return {
-      recordDialog: false,
-      id: "",
-      editForm: {},
-      editDialog: false,
-      form: {},
-      selectionList: [],
-      query: {},
-      loading: true,
-      page: {
-        pageSize: 5,
-        currentPage: 1,
-        total: 0,
-      },
-
-      option: {
-        labelWidth: 120,
-        viewLabelWidth: 100,
-        searchlabelWidth: 100,
-        height: "auto",
-        calcHeight: 30,
-        align: "center",
-        headerAlign: "center",
-
-        tip: false,
-        simplePage: true,
-        searchShow: false,
-        searchMenuSpan: 6,
-        addBtn: false,
-
-        border: true,
-        index: true,
-        height: 400,
-        editBtn: false,
-        delBtn: false,
-        menuWidth: 160,
-        dialogType: "drawer",
-
-        dialogClickModal: false,
-        column: [
-          {
-            label: "工单ID",
-            prop: "rtuName",
-            search: true,
-            span: 12,
-          },
-          {
-            label: "工单来源",
-            prop: "rtuCode",
-            span: 12,
-            search: true,
-          },
-          {
-            label: "工单创建时间",
-            prop: "orgId",
-            span: 12,
-          },
-          {
-            label: "工单更新时间",
-            prop: "orgId",
-            span: 12,
-          },
-          {
-            label: "工单说明",
-            prop: "orgId",
-            span: 12,
-          },
-          {
-            label: "处理人",
-            prop: "orgId",
-            span: 12,
-          },
-          {
-            label: "最新处理状态",
-            prop: "orgId",
-            span: 12,
-          },
-        ],
-      },
-      data: [],
-    };
-  },
-  prop: {
-    id: ["String"],
-  },
-
-  methods: {
-    init() {
-      // this.onLoad(this.page);
-    },
-    openDetail(item) {
-      this.recordDialog = true;
-      this.id = item.id;
-      this.$nextTick(() => {
-        this.$refs["recordList"].init();
-      });
-    },
-    orderOff(item) {
-      this.$prompt("备注", "提示", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-      })
-        .then(({ value }) => {
-          close({ id: item.id, orderDesc: value }).then((res) => {
-            if (res.data.code == 200) {
-              this.$message({
-                type: "info",
-                message: "操作成功",
-              });
-              this.refreshChange();
-            }
-          });
-        })
-        .catch(() => {});
-    },
-    rowSave(row, done, loading) {
-      add(row).then(
-        () => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
-        },
-        (error) => {
-          window.console.log(error);
-          loading();
-        }
-      );
-    },
-    rowUpdate(row, index, done, loading) {
-      update(row).then(
-        () => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
-        },
-        (error) => {
-          window.console.log(error);
-          loading();
-        }
-      );
-    },
-    rowDel(row) {
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(row.id);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-        });
-    },
-    searchReset() {
-      this.query = {};
-      this.onLoad(this.page);
-    },
-    searchChange(params, done) {
-      this.query = params;
-      this.page.currentPage = 1;
-      this.onLoad(this.page, params);
-      done();
-    },
-    selectionChange(list) {
-      this.selectionList = list;
-    },
-    selectionClear() {
-      this.selectionList = [];
-      this.$refs.crud.toggleSelection();
-    },
-    handleDelete() {
-      if (this.selectionList.length === 0) {
-        this.$message.warning("请选择至少一条数据");
-        return;
-      }
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(this.ids);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          this.$refs.crud.toggleSelection();
-        });
-    },
-    beforeOpen(done, type) {
-      if (["edit", "view"].includes(type)) {
-        getDetail(this.form.id).then((res) => {
-          this.form = res.data.data;
-        });
-      }
-      done();
-    },
-    currentChange(currentPage) {
-      this.page.currentPage = currentPage;
-    },
-    sizeChange(pageSize) {
-      this.page.pageSize = pageSize;
-    },
-    refreshChange() {
-      this.onLoad(this.page, this.query);
-    },
-    onLoad(page, params = {}) {
-      this.loading = true;
-      getOrderList(
-        page.currentPage,
-        page.pageSize,
-        Object.assign(params, this.query)
-      ).then((res) => {
-        const data = res.data.data;
-        this.page.total = data.total;
-        this.data = data.records;
-        this.loading = false;
-        this.selectionClear();
-      });
-    },
-  },
-};
-</script>

+ 0 - 277
src/views/wel/monitoring copy.vue

@@ -1,277 +0,0 @@
-<!--
- * @Title: 
- * @Description: 
- * @Author: 893699165@qq.com
- * @Date: 2022-08-24 10:49:21
- * @LastEditors: 
- * @LastEditTime: 2022-08-24 10:49:21
--->
-<template>
-  <basic-container>
-    <avue-crud
-      :option="option"
-      :table-loading="loading"
-      :data="data"
-      ref="crud"
-      v-model="form"
-      :permission="permissionList"
-      @row-del="rowDel"
-      @row-update="rowUpdate"
-      @row-save="rowSave"
-      @search-change="searchChange"
-      @search-reset="searchReset"
-      @selection-change="selectionChange"
-      @current-change="currentChange"
-      @size-change="sizeChange"
-      @refresh-change="refreshChange"
-      @on-load="onLoad"
-    >
-    </avue-crud>
-  </basic-container>
-</template>
-
-<script>
-import { getList, getDetail, add, update } from "@/api/workbench/monitoring";
-import { mapGetters } from "vuex";
-export default {
-  data() {
-    return {
-      editForm: {},
-      editDialog: false,
-      form: {},
-      selectionList: [],
-      query: {},
-      loading: true,
-      page: {
-        pageSize: 10,
-        currentPage: 1,
-        total: 0,
-      },
-      option: {
-        labelWidth: 100,
-        searchlabelWidth: 100,
-        height: "auto",
-        calcHeight: 30,
-        align: "center",
-        headerAlign: "center",
-        lazy: true,
-        tip: false,
-        simplePage: true,
-        searchShow: true,
-        searchMenuSpan: 6,
-        tree: true,
-        border: true,
-        index: true,
-        selection: true,
-        viewBtn: true,
-        menuWidth: 300,
-        dialogType: "drawer",
-        dialogClickModal: false,
-        column: [
-          {
-            label: "测站编码",
-            prop: "rtuCode",
-            span: 12,
-          },
-          {
-            label: "测站名称",
-            prop: "rtuName",
-            search: true,
-            span: 12,
-          },
-          {
-            label: "所属机构",
-            prop: "orgId",
-            search: true,
-            span: 12,
-          },
-          {
-            label: "项目名称",
-            prop: "projectName",
-            search: true,
-            span: 12,
-          },
-          {
-            label: "SIM卡号",
-            prop: "simId",
-            search: true,
-            span: 8,
-          },
-          {
-            label: "经度",
-            prop: "lng",
-            span: 8,
-          },
-          {
-            label: "纬度",
-            prop: "lat",
-            span: 8,
-          },
-          {
-            label: "测站类型",
-            prop: "rtuKinds",
-            search: true,
-            span: 24,
-            search: true,
-            type: "input",
-            // dicData: [
-            //   {
-            //     label: 1,
-            //     value: 1,
-            //   },
-            // ],
-          },
-          // {
-          //   label: "备注说明",
-          //   prop: "categoryTitle",
-          //   span: 24,
-          //   type: "textarea",
-          // },
-        ],
-      },
-      data: [],
-    };
-  },
-  computed: {
-    // ...mapGetters(["userInfo", "permission"]),
-    permissionList() {
-      return {
-        // addBtn: this.vaildData(this.permission.docCategory_add, false),
-        // viewBtn: this.vaildData(this.permission.docCategory_view, false),
-        // delBtn: this.vaildData(this.permission.docCategory_delete, false),
-        // editBtn: this.vaildData(this.permission.docCategory_edit, false),
-      };
-    },
-    ids() {
-      let ids = [];
-      this.selectionList.forEach((ele) => {
-        ids.push(ele.id);
-      });
-      return ids.join(",");
-    },
-  },
-  mounted() {},
-  created() {},
-  methods: {
-    rowSave(row, done, loading) {
-      add(row).then(
-        () => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
-        },
-        (error) => {
-          window.console.log(error);
-          loading();
-        }
-      );
-    },
-    rowUpdate(row, index, done, loading) {
-      update(row).then(
-        () => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
-        },
-        (error) => {
-          window.console.log(error);
-          loading();
-        }
-      );
-    },
-    rowDel(row) {
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(row.id);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-        });
-    },
-    searchReset() {
-      this.query = {};
-      this.onLoad(this.page);
-    },
-    searchChange(params, done) {
-      this.query = params;
-      this.page.currentPage = 1;
-      this.onLoad(this.page, params);
-      done();
-    },
-    selectionChange(list) {
-      this.selectionList = list;
-    },
-    selectionClear() {
-      this.selectionList = [];
-      this.$refs.crud.toggleSelection();
-    },
-    handleDelete() {
-      if (this.selectionList.length === 0) {
-        this.$message.warning("请选择至少一条数据");
-        return;
-      }
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(this.ids);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          this.$refs.crud.toggleSelection();
-        });
-    },
-    beforeOpen(done, type) {
-      if (["edit", "view"].includes(type)) {
-        getDetail(this.form.id).then((res) => {
-          this.form = res.data.data;
-        });
-      }
-      done();
-    },
-    currentChange(currentPage) {
-      this.page.currentPage = currentPage;
-    },
-    sizeChange(pageSize) {
-      this.page.pageSize = pageSize;
-    },
-    refreshChange() {
-      this.onLoad(this.page, this.query);
-    },
-    onLoad(page, params = {}) {
-      this.loading = true;
-      getList(
-        page.currentPage,
-        page.pageSize,
-        Object.assign(params, this.query)
-      ).then((res) => {
-        const data = res.data.data;
-        this.page.total = data.total;
-        this.data = data.records;
-        this.loading = false;
-        this.selectionClear();
-      });
-    },
-  },
-};
-</script>

+ 0 - 440
src/views/wel/monitoring.vue

@@ -1,440 +0,0 @@
-<!--
- * @Title: 
- * @Description: 
- * @Author: 893699165@qq.com
- * @Date: 2022-08-24 10:49:21
- * @LastEditors: 
- * @LastEditTime: 2022-08-24 10:49:21
--->
-<template>
-  <div>
-    <el-row>
-      <el-col :span="5">
-        <div class="box">
-          <!-- <el-scrollbar>
-          <basic-container>
-            <avue-tree
-              :option="treeOption"
-              :data="treeData"
-              @node-click="nodeClick"
-            />
-          </basic-container>
-        </el-scrollbar> -->
-        </div>
-      </el-col>
-      <el-col :span="19">
-        <basic-container>
-          <avue-crud
-            :option="option"
-            :table-loading="loading"
-            :data="data"
-            ref="crud"
-            v-model="form"
-            :permission="permissionList"
-            @row-del="rowDel"
-            @row-update="rowUpdate"
-            @row-save="rowSave"
-            @search-change="searchChange"
-            @search-reset="searchReset"
-            @selection-change="selectionChange"
-            @current-change="currentChange"
-            @size-change="sizeChange"
-            @refresh-change="refreshChange"
-            @on-load="onLoad"
-            @before-open="beforeOpen"
-          >
-            <template slot="state" slot-scope="scope">
-              <el-tag @click="openConfig(scope.row)">正常</el-tag>
-            </template>
-            <template slot-scope="{ row, index }" slot="menu">
-              <el-button
-                type="text"
-                size="small"
-                @click="$refs.crud.rowView(row, index)"
-                >预警配置
-              </el-button>
-              <el-button type="text" size="small" @click="openInfo"
-                >预警信息
-              </el-button>
-              <el-button type="text" size="small" @click="openOrder"
-                >维修工单
-              </el-button>
-            </template>
-          </avue-crud>
-        </basic-container>
-      </el-col>
-    </el-row>
-    <el-dialog
-      title="预警配置"
-      :visible.sync="configDialog"
-      width="600px"
-      :before-close="handleClose"
-      :close-on-click-modal="false"
-      append-to-body
-    >
-      <el-form label-width="120px">
-        <el-form-item label="预警总开关">
-          <el-switch
-            v-model="warningConfig.configSw"
-            active-color="#13ce66"
-            inactive-color="#ff4949"
-            active-text="开"
-            inactive-text="关"
-          >
-          </el-switch>
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="configDialog = false" size="small">取 消</el-button>
-        <el-button type="primary" @click="confirmConfig" size="small"
-          >确 定</el-button
-        >
-      </span>
-    </el-dialog>
-    <el-dialog
-      title="预警信息"
-      :visible.sync="infoDialog"
-      width="80%"
-      :close-on-click-modal="false"
-      append-to-body
-    >
-      <warningInfo :id="id" ref="warningInfo"></warningInfo>
-    </el-dialog>
-    <el-dialog
-      title="维修工单"
-      :visible.sync="orderDialog"
-      width="80%"
-      :close-on-click-modal="false"
-      append-to-body
-    >
-      <maintainOrder :id="id" ref="maintainOrder"></maintainOrder>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { getList, getDetail, add, update } from "@/api/workbench/monitoring";
-import { mapGetters } from "vuex";
-import warningInfo from "./warningInfo.vue";
-import maintainOrder from "./maintainOrder.vue";
-export default {
-  components: {
-    warningInfo,
-    maintainOrder,
-  },
-  data() {
-    return {
-      orderDialog:false,
-      warningConfig: {
-        configSw: false,
-        code: "",
-      },
-      infoDialog: false,
-      configDialog: false,
-      id: "",
-      editForm: {},
-      editDialog: false,
-      form: {},
-      selectionList: [],
-      query: {},
-      loading: true,
-      page: {
-        pageSize: 10,
-        currentPage: 1,
-        total: 0,
-      },
-      treeOption: {
-        nodeKey: "id",
-        lazy: true,
-        treeLoad: function (node, resolve) {
-          const parentId = node.level === 0 ? 0 : node.data.id;
-          getDeptLazyTree(parentId).then((res) => {
-            resolve(
-              res.data.data.map((item) => {
-                return {
-                  ...item,
-                  leaf: !item.hasChildren,
-                };
-              })
-            );
-          });
-        },
-        addBtn: false,
-        menu: false,
-        size: "small",
-        props: {
-          labelText: "标题",
-          label: "title",
-          value: "value",
-          children: "children",
-        },
-      },
-      option: {
-        labelWidth: 120,
-        viewLabelWidth: 100,
-        searchlabelWidth: 100,
-        height: "auto",
-        calcHeight: 30,
-        align: "center",
-        headerAlign: "center",
-        lazy: true,
-        tip: false,
-        simplePage: true,
-        searchShow: true,
-        searchMenuSpan: 6,
-        tree: true,
-        border: true,
-        index: true,
-        selection: true,
-        viewBtn: false,
-        viewTitle: "预警配置",
-        editBtn: false,
-        delBtn: false,
-        menuWidth: 220,
-        dialogType: "drawer",
-        dialogClickModal: false,
-        column: [
-          {
-            label: "测站名称",
-            prop: "rtuName",
-            search: true,
-            span: 12,
-          },
-          {
-            label: "测站编码",
-            prop: "rtuCode",
-            span: 12,
-            search: true,
-          },
-          {
-            label: "所属机构",
-            prop: "orgId",
-            span: 12,
-            hide: true,
-          },
-          {
-            label: "最后上线时间",
-            prop: "orgId",
-            span: 12,
-            addDisplay: false,
-          },
-          {
-            label: "运行状态",
-            prop: "state",
-            span: 12,
-            addDisplay: false,
-          },
-          {
-            label: "项目名称",
-            prop: "projectName",
-
-            span: 12,
-            hide: true,
-          },
-          {
-            label: "SIM卡号",
-            prop: "simId",
-
-            span: 8,
-            hide: true,
-          },
-          {
-            label: "经度",
-            prop: "lng",
-            span: 8,
-            hide: true,
-          },
-          {
-            label: "纬度",
-            prop: "lat",
-            span: 8,
-            hide: true,
-          },
-          {
-            label: "测站类型",
-            prop: "rtuKinds",
-
-            span: 24,
-
-            type: "input",
-            hide: true,
-
-            // dicData: [
-            //   {
-            //     label: 1,
-            //     value: 1,
-            //   },
-            // ],
-          },
-          {
-            label: "备注说明",
-            prop: "remark",
-            span: 24,
-            type: "textarea",
-          },
-        ],
-      },
-      data: [],
-    };
-  },
-  computed: {
-    // ...mapGetters(["userInfo", "permission"]),
-    permissionList() {
-      return {
-        // addBtn: this.vaildData(this.permission.docCategory_add, false),
-        // viewBtn: this.vaildData(this.permission.docCategory_view, false),
-        // delBtn: this.vaildData(this.permission.docCategory_delete, false),
-        // editBtn: this.vaildData(this.permission.docCategory_edit, false),
-      };
-    },
-    ids() {
-      let ids = [];
-      this.selectionList.forEach((ele) => {
-        ids.push(ele.id);
-      });
-      return ids.join(",");
-    },
-  },
-  mounted() {},
-  created() {},
-  methods: {
-    confirmConfig() {},
-    openConfig(row, index) {
-      this.configSw = item.configSw;
-      this.configDialog = true;
-    },
-    openInfo(item) {
-      this.id = item.id;
-      this.infoDialog = true;
-      this.$refs.warningInfo.init();
-    },
-    openOrder(item) {
-      this.id = item.id;
-      this.orderDialog = true;
-      this.$nextTick(() => {
-        this.$refs["maintainOrder"].init();
-      });
-    },
-
-    rowSave(row, done, loading) {
-      add(row).then(
-        () => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
-        },
-        (error) => {
-          window.console.log(error);
-          loading();
-        }
-      );
-    },
-    rowUpdate(row, index, done, loading) {
-      update(row).then(
-        () => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
-        },
-        (error) => {
-          window.console.log(error);
-          loading();
-        }
-      );
-    },
-    rowDel(row) {
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(row.id);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-        });
-    },
-    searchReset() {
-      this.query = {};
-      this.onLoad(this.page);
-    },
-    searchChange(params, done) {
-      this.query = params;
-      this.page.currentPage = 1;
-      this.onLoad(this.page, params);
-      done();
-    },
-    selectionChange(list) {
-      this.selectionList = list;
-    },
-    selectionClear() {
-      this.selectionList = [];
-      this.$refs.crud.toggleSelection();
-    },
-    handleDelete() {
-      if (this.selectionList.length === 0) {
-        this.$message.warning("请选择至少一条数据");
-        return;
-      }
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(this.ids);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          this.$refs.crud.toggleSelection();
-        });
-    },
-    beforeOpen(done, type) {
-      if (["edit", "view"].includes(type)) {
-        getDetail(this.form.id).then((res) => {
-          this.form = res.data.data;
-        });
-      }
-      done();
-    },
-    currentChange(currentPage) {
-      this.page.currentPage = currentPage;
-    },
-    sizeChange(pageSize) {
-      this.page.pageSize = pageSize;
-    },
-    refreshChange() {
-      this.onLoad(this.page, this.query);
-    },
-    onLoad(page, params = {}) {
-      this.loading = true;
-      getList(
-        page.currentPage,
-        page.pageSize,
-        Object.assign(params, this.query)
-      ).then((res) => {
-        const data = res.data.data;
-        this.page.total = data.total;
-        this.data = data.records;
-        this.loading = false;
-        this.selectionClear();
-      });
-    },
-  },
-};
-</script>

+ 0 - 53
src/views/wel/recordDetail.vue

@@ -1,53 +0,0 @@
-<!--
- * @Title: 
- * @Description: 
- * @Author: 893699165@qq.com
- * @Date: 2022-08-24 10:49:21
- * @LastEditors: 
- * @LastEditTime: 2022-08-24 10:49:21
--->
-<template>
-  <div>
-    <el-form ref="form" :model="form" label-width="80px">
-      <el-row>
-        <el-col :span="24">
-          <el-form-item label="处理说明" class="mb0"> </el-form-item>
-          <el-form-item label="" label-width="0" class="mb0">
-            <el-input v-model="form.name" type="textarea" :rows="4"></el-input>
-          </el-form-item>
-          <el-form-item label="" label-width="0" class="mb0">
-            <el-image
-              style="width: 100px; height: 100px"
-              src="https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg"
-              fit="contain"
-            ></el-image>
-          </el-form-item>
-        </el-col>
-      </el-row>
-    </el-form>
-  </div>
-</template>
-
-<script>
-import { getList, getDetail, add, update } from "@/api/workbench/monitoring";
-import { mapGetters } from "vuex";
-
-export default {
-  data() {
-    return {
-      id: "",
-      form: {},
-    };
-  },
-  prop: {
-    id: ["String"],
-  },
-
-  methods: {},
-};
-</script>
-<style>
-.mb0 {
-  margin-bottom: 0 !important;
-}
-</style>

+ 0 - 261
src/views/wel/recordList.vue

@@ -1,261 +0,0 @@
-<!--
- * @Title: 
- * @Description: 
- * @Author: 893699165@qq.com
- * @Date: 2022-08-24 10:49:21
- * @LastEditors: 
- * @LastEditTime: 2022-08-24 10:49:21
--->
-<template>
-  <div>
-    <basic-container>
-      <avue-crud
-        :option="option"
-        :table-loading="loading"
-        :data="data"
-        ref="crud"
-        v-model="form"
-        :permission="permissionList"
-        @row-del="rowDel"
-        @row-update="rowUpdate"
-        @row-save="rowSave"
-        @search-change="searchChange"
-        @search-reset="searchReset"
-        @selection-change="selectionChange"
-        @current-change="currentChange"
-        @size-change="sizeChange"
-        @refresh-change="refreshChange"
-        @on-load="onLoad"
-        @before-open="beforeOpen"
-      >
-        <template slot-scope="{ row }" slot="menu">
-          <el-button type="text" size="small" @click="openDetail(row)"
-            >详情
-          </el-button>
-          <el-button type="text" size="small" @click="openPicture(row)"
-            >图片
-          </el-button>
-        </template>
-      </avue-crud>
-    </basic-container>
-    <el-dialog
-      title="工单处理填报详情"
-      :visible.sync="detailDialog"
-      width="80%"
-      :close-on-click-modal="false"
-      append-to-body
-    >
-      <record-detail :id="id" ref="recordDetail"></record-detail>
-    </el-dialog>
-    <el-dialog
-      title="图片"
-      :visible.sync="pictureDialog"
-      width="80%"
-      :close-on-click-modal="false"
-      append-to-body
-    >
-      <record-picture :id="id" ref="recordPicture"></record-picture>
-    </el-dialog>
-  </div>
-</template>
-
-<script>
-import { getProcessList } from "@/api/workbench/monitoring";
-
-import recordDetail from "./recordDetail";
-import recordPicture from "./recordPicture.vue";
-export default {
-  components: { recordDetail, recordPicture },
-  data() {
-    return {
-      pictureDialog: false,
-      detailDialog: false,
-      id: "",
-      editForm: {},
-      editDialog: false,
-      form: {},
-      selectionList: [],
-      query: {},
-      loading: true,
-      page: {
-        pageSize: 5,
-        currentPage: 1,
-        total: 0,
-      },
-
-      option: {
-        labelWidth: 120,
-        viewLabelWidth: 100,
-        searchlabelWidth: 100,
-        height: "auto",
-        calcHeight: 30,
-        align: "center",
-        headerAlign: "center",
-
-        tip: false,
-        simplePage: true,
-        searchShow: false,
-        searchMenuSpan: 6,
-        addBtn: false,
-
-        border: true,
-        index: true,
-        height: 400,
-        editBtn: false,
-        delBtn: false,
-        menuWidth: 160,
-        dialogType: "drawer",
-
-        dialogClickModal: false,
-        column: [
-          {
-            label: "填报时间",
-            prop: "createTime",
-            search: true,
-            span: 12,
-          },
-          {
-            label: "处理人",
-            prop: "rtuCode",
-            span: 12,
-            search: true,
-          },
-          {
-            label: "处理说明",
-            prop: "processDesc",
-            span: 12,
-          },
-          {
-            label: "RTU状态",
-            prop: "processDesc",
-            span: 12,
-          },
-          {
-            label: "雨量传感器",
-            prop: "processDesc",
-            span: 12,
-          },
-          {
-            label: "水位传感器",
-            prop: "processDesc",
-            span: 12,
-          },
-          {
-            label: "墒情传感器",
-            prop: "processDesc",
-            span: 12,
-          },
-          {
-            label: "供电",
-            prop: "processDesc",
-            span: 12,
-          },
-          {
-            label: "SIM卡",
-            prop: "processDesc",
-            span: 12,
-          },
-          {
-            label: "北斗通讯",
-            prop: "processDesc",
-            span: 12,
-          },
-          {
-            label: "处理状态",
-            prop: "status",
-            span: 12,
-          },
-        ],
-      },
-      data: [],
-    };
-  },
-  prop: {
-    id: ["String"],
-  },
-
-  methods: {
-    init() {
-      // this.onLoad(this.page);
-    },
-    openDetail(item) {
-      this.detailDialog = true;
-    },
-    openPicture() {
-      this.pictureDialog = true;
-      this.$nextTick(() => {});
-    },
-
-    searchReset() {
-      this.query = {};
-      this.onLoad(this.page);
-    },
-    searchChange(params, done) {
-      this.query = params;
-      this.page.currentPage = 1;
-      this.onLoad(this.page, params);
-      done();
-    },
-    selectionChange(list) {
-      this.selectionList = list;
-    },
-    selectionClear() {
-      this.selectionList = [];
-      this.$refs.crud.toggleSelection();
-    },
-    handleDelete() {
-      if (this.selectionList.length === 0) {
-        this.$message.warning("请选择至少一条数据");
-        return;
-      }
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(this.ids);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          this.$refs.crud.toggleSelection();
-        });
-    },
-    beforeOpen(done, type) {
-      if (["edit", "view"].includes(type)) {
-        getDetail(this.form.id).then((res) => {
-          this.form = res.data.data;
-        });
-      }
-      done();
-    },
-    currentChange(currentPage) {
-      this.page.currentPage = currentPage;
-    },
-    sizeChange(pageSize) {
-      this.page.pageSize = pageSize;
-    },
-    refreshChange() {
-      this.onLoad(this.page, this.query);
-    },
-    onLoad(page, params = {}) {
-      this.loading = true;
-      getProcessList(
-        page.currentPage,
-        page.pageSize,
-        Object.assign(params, this.query)
-      ).then((res) => {
-        const data = res.data.data;
-        this.page.total = data.total;
-        this.data = data.records;
-        this.loading = false;
-        this.selectionClear();
-      });
-    },
-  },
-};
-</script>

+ 0 - 237
src/views/wel/recordPicture.vue

@@ -1,237 +0,0 @@
-<!--
- * @Title: 
- * @Description: 
- * @Author: 893699165@qq.com
- * @Date: 2022-08-24 10:49:21
- * @LastEditors: 
- * @LastEditTime: 2022-08-24 10:49:21
--->
-<template>
-  <avue-crud
-    :option="option"
-    :table-loading="loading"
-    :data="data"
-    ref="crud"
-    v-model="form"
-    :permission="permissionList"
-    @search-change="searchChange"
-    @search-reset="searchReset"
-    @selection-change="selectionChange"
-    @current-change="currentChange"
-    @size-change="sizeChange"
-    @refresh-change="refreshChange"
-    @on-load="onLoad"
-  >
-    <template slot-scope="{ row }" slot="img">
-      <el-image :src="row.img" :preview-src-list="srcList"> </el-image>
-    </template>
-    <template slot-scope="{ row }" slot="menu">
-      <el-button type="text" size="small" @click="download(row)"
-        >下载
-      </el-button>
-    </template>
-  </avue-crud>
-</template>
-
-<script>
-import { getList, getDetail, add, update } from "@/api/workbench/monitoring";
-import { mapGetters } from "vuex";
-
-export default {
-  data() {
-    return {
-      srcList: [],
-      detailDialog: false,
-      id: "",
-      editForm: {},
-      editDialog: false,
-      form: {},
-      selectionList: [],
-      query: {},
-      loading: true,
-      page: {
-        pageSize: 5,
-        currentPage: 1,
-        total: 0,
-      },
-
-      option: {
-        labelWidth: 120,
-        viewLabelWidth: 100,
-        searchlabelWidth: 100,
-        height: "auto",
-        calcHeight: 30,
-        align: "center",
-        headerAlign: "center",
-
-        tip: false,
-        simplePage: true,
-        searchShow: false,
-        searchMenuSpan: 6,
-        addBtn: false,
-
-        border: true,
-        index: true,
-        height: 400,
-        editBtn: false,
-        delBtn: false,
-        menuWidth: 160,
-        dialogType: "drawer",
-
-        dialogClickModal: false,
-        column: [
-          {
-            label: "拍照时间",
-            prop: "rtuName",
-            search: true,
-            span: 12,
-          },
-          {
-            label: "照片说明",
-            prop: "rtuCode",
-            span: 12,
-            search: true,
-          },
-          {
-            label: "图片缩略图",
-            prop: "orgId",
-            span: 12,
-          },
-        ],
-      },
-      data: [],
-    };
-  },
-  prop: {
-    id: ["String"],
-  },
-
-  methods: {
-    init() {
-      this.onLoad(this.page);
-    },
-    openDetail(item) {
-      this.detailDialog = true;
-    },
-    rowSave(row, done, loading) {
-      add(row).then(
-        () => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
-        },
-        (error) => {
-          window.console.log(error);
-          loading();
-        }
-      );
-    },
-    rowUpdate(row, index, done, loading) {
-      update(row).then(
-        () => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
-        },
-        (error) => {
-          window.console.log(error);
-          loading();
-        }
-      );
-    },
-    rowDel(row) {
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(row.id);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-        });
-    },
-    searchReset() {
-      this.query = {};
-      this.onLoad(this.page);
-    },
-    searchChange(params, done) {
-      this.query = params;
-      this.page.currentPage = 1;
-      this.onLoad(this.page, params);
-      done();
-    },
-    selectionChange(list) {
-      this.selectionList = list;
-    },
-    selectionClear() {
-      this.selectionList = [];
-      this.$refs.crud.toggleSelection();
-    },
-    handleDelete() {
-      if (this.selectionList.length === 0) {
-        this.$message.warning("请选择至少一条数据");
-        return;
-      }
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(this.ids);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          this.$refs.crud.toggleSelection();
-        });
-    },
-    beforeOpen(done, type) {
-      if (["edit", "view"].includes(type)) {
-        getDetail(this.form.id).then((res) => {
-          this.form = res.data.data;
-        });
-      }
-      done();
-    },
-    currentChange(currentPage) {
-      this.page.currentPage = currentPage;
-    },
-    sizeChange(pageSize) {
-      this.page.pageSize = pageSize;
-    },
-    refreshChange() {
-      this.onLoad(this.page, this.query);
-    },
-    onLoad(page, params = {}) {
-      this.loading = true;
-      getList(
-        page.currentPage,
-        page.pageSize,
-        Object.assign(params, this.query)
-      ).then((res) => {
-        const data = res.data.data;
-        this.page.total = data.total;
-        this.data = data.records;
-        this.loading = false;
-        this.selectionClear();
-      });
-    },
-  },
-};
-</script>

+ 241 - 0
src/views/wel/toDo.vue

@@ -0,0 +1,241 @@
+<template>
+    <el-card class="todo">
+        <div class="title">待办</div>
+
+        <el-tabs v-model="activeName" @tab-click="handleClick">
+            <el-tab-pane :label="item.label" :name="item.name" v-for="(item, index) in tabPaneList" :key="index">
+            </el-tab-pane>
+        </el-tabs>
+        <div v-if="tableData.length">
+            <div v-for="(item, index) in tableData" :key="index" class="tableData">
+                <img src="/img/home/todo1.png" alt="" class="icon" v-if="index === 0" />
+                <img src="/img/home/todo2.png" alt="" class="icon" v-if="index === 1" />
+                <div class="table-info">
+                    <div class="table-title">{{ item.title }}</div>
+                    <div class="table-name">{{ item.create }} {{ item.time }}</div>
+                </div>
+                <div class="table-btn">
+                    <el-button type="primary" round size="small" @click="preview(item)" v-if="activeName === 'first'">预览
+                    </el-button>
+                    <el-button type="primary" round size="small" @click="preview2(item)" v-if="activeName === 'second'">
+                        查看</el-button>
+                    <el-button type="primary" round size="small" @click="preview3(item)" v-if="activeName === 'third'">
+                        查看</el-button>
+                </div>
+            </div>
+            <div class="more" @click="linkMore">查看更多></div>
+        </div>
+        <div class="text-center pt20" v-else>
+            <avue-empty :size="50" desc="" image="">
+                <img src="/svg/empty.svg" alt="" />
+                <p>暂无数据</p>
+            </avue-empty>
+        </div>
+        <el-drawer title="查看" :visible.sync="dialog" size="50%" append-to-body wrapperClosable="true">
+            <div class="demo-drawer__content">
+                <report-approval :id="id" :processStatus="processStatus" spDrawerTitle="查看" @closeForm="closeForm"
+                    ref="reportApproval"></report-approval>
+            </div>
+        </el-drawer>
+        <el-drawer title="查看" :visible.sync="dialog2" size="50%" append-to-body wrapperClosable="true">
+            <div class="demo-drawer__content">
+                <reportAdd :id="id" spDrawerTitle="查看" @closeForm="closeForm" ref="reportAdd"></reportAdd>
+            </div>
+        </el-drawer>
+    </el-card>
+</template>
+<script>
+// import { getList } from "@/api/business/yjxyzy/yjtg/yjtg";
+// import { getGzxx } from "@/api/business/yjxyzy/gzxx/kgzxx";
+// import { getYqyd } from "@/api/business/yjxyzy/gzxx/yqyd";
+// import reportApproval from "@/views/business/yjxyzy/gzxx/reportApproval.vue";
+// import reportAdd from "@/views/business/yjxyzy/yqyd/reportAdd.vue";
+
+export default {
+    name: "todo",
+    data() {
+        return {
+            activeName: "first",
+            tabPaneList: [],
+            tableData: [],
+            processStatus: "",
+            id: "",
+            dialog: false,
+            dialog2: false,
+        };
+    },
+    components: {
+        // reportApproval,
+        // reportAdd,
+    },
+    created() {
+        // this.init();
+    },
+    methods: {
+        init() {
+            this.tabPaneList = [
+                {
+                    label: "应急通告",
+                    name: "first",
+                },
+                {
+                    label: "公众信息",
+                    name: "second",
+                },
+                {
+                    label: "舆情应对",
+                    name: "third",
+                },
+                // {
+                //   label: "公众信息",
+                //   name: "fourth",
+                // },
+            ];
+            this.activeName = this.tabPaneList[0].name;
+            this.handleClick();
+        },
+        handleClick() {
+            this.getData();
+        },
+        getData() {
+            //   let params = {
+            //     current: 1,
+            //     size: 2,
+            //   };
+
+            //   if (this.activeName === "first") {
+            //     getList(params).then((res) => {
+            //       this.tableData = res.data.data.records.map((e) => {
+            //         return {
+            //           title: e.reportTitle,
+            //           create: e.createUserName,
+            //           time: e.reportTime,
+            //           reportUrl: e.reportUrl,
+            //         };
+            //       });
+            //     });
+            //   }
+            //   if (this.activeName === "second") {
+            //     getGzxx(params).then((res) => {
+            //       this.tableData = res.data.data.records.map((e) => {
+            //         return {
+            //           title: e.messagesTitle,
+            //           create: e.deptName,
+            //           time: e.messagesTime,
+            //           id: e.id,
+            //           processStatus: e.processStatus,
+            //         };
+            //       });
+            //     });
+            //   }
+            //   if (this.activeName === "third") {
+            //     getYqyd(params).then((res) => {
+            //       this.tableData = res.data.data.records.map((e) => {
+            //         return {
+            //           title: e.reportTitle,
+            //           create: e.deptName,
+            //           time: e.reportTime,
+            //           id: e.id,
+            //         };
+            //       });
+            //     });
+            //   }
+        },
+        linkMore() {
+            //   if (this.activeName === "first") {
+            //     this.$router.push({
+            //       path: "/business/yjxyzy/notice/notice",
+            //     });
+            //   }
+            //   if (this.activeName === "second") {
+            //     this.$router.push({
+            //       path: "/business/yjxyzy/gzxx/kgzxx",
+            //     });
+            //   }
+            //   if (this.activeName === "third") {
+            //     this.$router.push({
+            //       path: "/business/yjxyzy/yqyd/index",
+            //     });
+            //   }
+        },
+        linkAudit(item) {
+            console.log(item);
+        },
+
+    },
+};
+</script>
+<style scoped lang="scss">
+.todo {
+    height: 100%;
+
+    .title {
+        font-size: 18px;
+        color: #272727;
+    }
+
+    .tableData {
+        background-color: #f6f7fd;
+        height: 82px;
+        display: flex;
+        flex-direction: row;
+        padding-left: 100px;
+        position: relative;
+        margin-bottom: 10px;
+
+        .icon {
+            height: 50px;
+            // width: 50px;
+            position: absolute;
+            left: 25px;
+            top: 50%;
+            transform: translateY(-50%);
+        }
+
+        .table-info {
+            flex-grow: 1;
+            width: 100px;
+
+            .table-title {
+                padding-top: 20px;
+                font-size: 16px;
+                color: #272727;
+
+                white-space: nowrap;
+                overflow: hidden;
+                text-overflow: ellipsis;
+            }
+
+            .table-name {
+                font-size: 14px;
+                padding-top: 5px;
+                color: #888;
+                white-space: nowrap;
+                overflow: hidden;
+                text-overflow: ellipsis;
+            }
+        }
+
+        .table-btn {
+            width: 130px;
+
+            vertical-align: middle;
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            cursor: pointer;
+        }
+    }
+
+    .more {
+        height: 44px;
+        line-height: 44px;
+        text-align: center;
+        background-color: #f6f7fd;
+        color: #888;
+        margin-top: 10px;
+        cursor: pointer;
+        font-size: 14px;
+    }
+}
+</style>

+ 0 - 439
src/views/wel/warningConfig.vue

@@ -1,439 +0,0 @@
-<!--
-* Date:
-* Title: 应急资料管理-资料目录
-* Description:对本文件的详细描述,原则上不能少于30字
-* @Author  galaxy
-* @Mender:(文件的修改者,文件创建者之外的人)
-* @Version 1.0
-* Remark:认为有必要的其他信息
--->
-<template>
-  <basic-container>
-    <avue-crud
-      :option="option"
-      :table-loading="loading"
-      :data="data"
-      ref="crud"
-      v-model="form"
-      :permission="permissionList"
-      :before-open="beforeOpen"
-      :before-close="beforeClose"
-      @row-del="rowDel"
-      @row-update="rowUpdate"
-      @row-save="rowSave"
-      @search-change="searchChange"
-      @search-reset="searchReset"
-      @selection-change="selectionChange"
-      @current-change="currentChange"
-      @size-change="sizeChange"
-      @refresh-change="refreshChange"
-      @on-load="onLoad"
-      @tree-load="treeLoad"
-    >
-      <template slot="menuLeft">
-        <el-button
-          type="danger"
-          size="small"
-          icon="el-icon-delete"
-          v-if="permission.docCategory_delete"
-          plain
-          @click="handleDelete"
-          >删 除
-        </el-button>
-      </template>
-      <template slot-scope="scope" slot="menu">
-        <el-button
-          type="text"
-          icon="el-icon-circle-plus-outline"
-          size="small"
-          @click.stop="handleAdd(scope.row, scope.index)"
-          v-if="userInfo.role_name.includes('admin')"
-          >新增子项
-        </el-button>
-      </template>
-    </avue-crud>
-    <el-drawer
-      :title="1"
-      :visible.sync="editDialog"
-      direction="rtl"
-      custom-class="demo-drawer"
-      ref="drawer"
-      append-to-body
-      :wrapperClosable="false"
-      size="65%"
-    >
-      <div class="demo-drawer__content">
-        <docCategoryEdit ref="docCategoryEdit"></docCategoryEdit>
-      </div>
-    </el-drawer>
-  </basic-container>
-</template>
-
-<script>
-// import {
-//   add,
-//   get,
-//   getLazyList,
-//   getTree,
-//   remove,
-//   update,
-// } from "@/api/business/yjbz/yjzlgl/docCategory";
-import { mapGetters } from "vuex";
-export default {
-  data() {
-    //验证规则-排序号
-    const validateNumber = (rule, value, callback) => {
-      console.log(value);
-      if (!value || value <= 0) {
-        return callback(new Error("排序号格式不正确"));
-      } else {
-        callback();
-      }
-    };
-
-    return {
-      editForm: {},
-      editDialog: false,
-      form: {},
-      selectionList: [],
-      query: {},
-      loading: true,
-      parentId: 0,
-      page: {
-        pageSize: 10,
-        currentPage: 1,
-        total: 0,
-      },
-      option: {
-        labelWidth: 120,
-        height: "auto",
-        calcHeight: 30,
-        align: "center",
-        headerAlign: "center",
-        lazy: true,
-        tip: false,
-        simplePage: true,
-        searchShow: true,
-        searchMenuSpan: 6,
-        tree: true,
-        border: true,
-        index: true,
-        selection: true,
-        viewBtn: true,
-        menuWidth: 300,
-        dialogType: "drawer",
-        dialogClickModal: false,
-        column: [
-          {
-            label: "名称",
-            prop: "categoryTitle",
-            search: true,
-            align: "left",
-            span: 24,
-            rules: [
-              {
-                required: true,
-                message: "请输入名称",
-                trigger: "blur",
-              },
-            ],
-          },
-          {
-            label: "上级类别",
-            prop: "parentId",
-            dicData: [],
-            type: "tree",
-            hide: true,
-            addDisabled: false,
-            props: {
-              label: "title",
-            },
-            rules: [
-              {
-                required: false,
-                message: "请选择上级类别",
-                trigger: "click",
-              },
-            ],
-          },
-          {
-            label: "排序号",
-            prop: "sort",
-            type: "number",
-            width: 120,
-            rules: [
-              {
-                required: true,
-                validator: validateNumber,
-                trigger: "blur",
-              },
-            ],
-          },
-          {
-            label: "是否同步到集团",
-            prop: "isShare",
-            type: "radio",
-            dataType: "number",
-            dicUrl: "/api/galaxy-system/dict/dictionary?code=yes_no",
-            props: {
-              label: "dictValue",
-              value: "dictKey",
-            },
-            width: 150,
-            hide: this.system,
-          },
-          {
-            label: "是否有效",
-            prop: "isValid",
-            type: "radio",
-            dataType: "number",
-            dicUrl: "/api/galaxy-system/dict-biz/dictionary?code=isvalid",
-            props: {
-              label: "dictValue",
-              value: "dictKey",
-            },
-            width: 150,
-          },
-          {
-            label: "备注",
-            prop: "categoryDesc",
-            type: "textarea",
-            span: 24,
-            rules: [
-              {
-                required: false,
-                message: "请输入备注",
-                trigger: "blur",
-              },
-            ],
-            hide: true,
-          },
-        ],
-      },
-      data: [],
-    };
-  },
-  computed: {
-    ...mapGetters(["userInfo", "permission"]),
-    system() {
-
-      console.log(this.$store.state.common.system != "JT")
-      return this.$store.state.common.system != "JT";
-    },
-    permissionList() {
-      return {
-        addBtn: this.vaildData(this.permission.docCategory_add, false),
-        viewBtn: this.vaildData(this.permission.docCategory_view, false),
-        delBtn: this.vaildData(this.permission.docCategory_delete, false),
-        editBtn: this.vaildData(this.permission.docCategory_edit, false),
-      };
-    },
-    ids() {
-      let ids = [];
-      this.selectionList.forEach((ele) => {
-        ids.push(ele.id);
-      });
-      return ids.join(",");
-    },
-  },
-  mounted() {
-    // this.editDialog = true;
-  },
-  created() {
-    // if (!this.system) {
-    //   let i = this.option.column.findIndex((e) => {
-    //     return e.label == "是否同步到集团";
-    //   });
-    //   if (i > -1) {
-    //     this.option.column.splice(i, 1);
-    //   }
-    // }
-  },
-  methods: {
-    initData() {
-      getTree().then((res) => {
-        const column = this.findObject(this.option.column, "parentId");
-        column.dicData = res.data.data;
-      });
-    },
-
-    handleAdd(row) {
-      this.parentId = row.id;
-      const column = this.findObject(this.option.column, "parentId");
-      column.value = row.id;
-      column.addDisabled = true;
-      this.$refs.crud.rowAdd();
-    },
-
-    rowSave(row, done, loading) {
-      add(row).then(
-        (res) => {
-          // 获取新增数据的相关字段
-          const data = res.data.data;
-          row.id = data.id;
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          this.data = [];
-          this.parentId = "";
-          this.refreshChange();
-          // 数据回调进行刷新
-          done(row);
-        },
-        (error) => {
-          window.console.log(error);
-          loading();
-        }
-      );
-    },
-
-    rowUpdate(row, index, done, loading) {
-      update(row).then(
-        () => {
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          this.data = [];
-          this.parentId = "";
-          this.refreshChange();
-          // 数据回调进行刷新
-          done(row);
-        },
-        (error) => {
-          window.console.log(error);
-          loading();
-        }
-      );
-    },
-
-    rowDel(row, index, done) {
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(row.id);
-        })
-        .then(() => {
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          // 数据回调进行刷新
-          done(row);
-        });
-    },
-
-    handleDelete() {
-      if (this.selectionList.length === 0) {
-        this.$message.warning("请选择至少一条数据");
-        return;
-      }
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(this.ids);
-        })
-        .then(() => {
-          // 刷新表格数据并重载
-          this.data = [];
-          this.parentId = 0;
-          this.$refs.crud.refreshTable();
-          this.$refs.crud.toggleSelection();
-          // 表格数据重载
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-        });
-    },
-
-    searchReset() {
-      this.query = {};
-      this.parentId = 0;
-      this.onLoad(this.page);
-    },
-
-    searchChange(params, done) {
-      this.query = params;
-      this.parentId = "";
-      this.page.currentPage = 1;
-      this.onLoad(this.page, params);
-      done();
-    },
-
-    selectionChange(list) {
-      this.selectionList = list;
-    },
-
-    selectionClear() {
-      this.selectionList = [];
-      this.$refs.crud.toggleSelection();
-    },
-
-    beforeOpen(done, type) {
-      if (["add"].includes(type)) {
-        this.form.isValid = 2;
-        this.form.isShare = 1;
-      }
-
-      if (["add", "edit"].includes(type)) {
-        this.initData();
-      }
-      if (["edit", "view"].includes(type)) {
-        get(this.form.id).then((res) => {
-          this.form = res.data.data;
-        });
-      }
-      done();
-    },
-
-    beforeClose(done) {
-      this.parentId = "";
-      const column = this.findObject(this.option.column, "parentId");
-      column.value = "";
-      column.addDisabled = false;
-      done();
-    },
-
-    currentChange(currentPage) {
-      this.page.currentPage = currentPage;
-    },
-
-    sizeChange(pageSize) {
-      this.page.pageSize = pageSize;
-    },
-
-    refreshChange() {
-      this.onLoad(this.page, this.query);
-    },
-
-    onLoad(page, params = {}) {
-      this.loading = true;
-      getLazyList(this.parentId, Object.assign(params, this.query)).then(
-        (res) => {
-          this.data = res.data.data;
-          this.loading = false;
-          this.selectionClear();
-        }
-      );
-    },
-
-    treeLoad(tree, treeNode, resolve) {
-      const parentId = tree.id;
-      getLazyList(parentId).then((res) => {
-        resolve(res.data.data);
-      });
-    },
-  },
-};
-</script>
-
-<style></style>

+ 0 - 232
src/views/wel/warningInfo.vue

@@ -1,232 +0,0 @@
-<!--
- * @Title: 
- * @Description: 
- * @Author: 893699165@qq.com
- * @Date: 2022-08-24 10:49:21
- * @LastEditors: 
- * @LastEditTime: 2022-08-24 10:49:21
--->
-<template>
-  <div>
-    <basic-container>
-      <avue-crud
-        :option="option"
-        :table-loading="loading"
-        :data="data"
-        ref="crud"
-        v-model="form"
-        :permission="permissionList"
-        @row-del="rowDel"
-        @row-update="rowUpdate"
-        @row-save="rowSave"
-        @search-change="searchChange"
-        @search-reset="searchReset"
-        @selection-change="selectionChange"
-        @current-change="currentChange"
-        @size-change="sizeChange"
-        @refresh-change="refreshChange"
-        @on-load="onLoad"
-        @before-open="beforeOpen"
-      >
-      </avue-crud>
-    </basic-container>
-  </div>
-</template>
-
-<script>
-import { getList, getDetail, add, update } from "@/api/workbench/monitoring";
-import { mapGetters } from "vuex";
-
-export default {
-  data() {
-    return {
-      id: "",
-      editForm: {},
-      editDialog: false,
-      form: {},
-      selectionList: [],
-      query: {},
-      loading: true,
-      page: {
-        pageSize: 5,
-        currentPage: 1,
-        total: 0,
-      },
-
-      option: {
-        labelWidth: 120,
-        viewLabelWidth: 100,
-        searchlabelWidth: 100,
-        height: "auto",
-        calcHeight: 30,
-        align: "center",
-        headerAlign: "center",
-
-        tip: false,
-        simplePage: true,
-        searchShow: true,
-        searchMenuSpan: 6,
-        addBtn: false,
-
-        border: true,
-        index: true,
-        height: 300,
-        editBtn: false,
-        delBtn: false,
-        menuWidth: 220,
-        dialogType: "drawer",
-        menu: false,
-        dialogClickModal: false,
-        column: [
-          {
-            label: "预警信息",
-            prop: "rtuName",
-            search: true,
-            span: 12,
-          },
-          {
-            label: "预警时间",
-            prop: "rtuCode",
-            span: 12,
-            search: true,
-          },
-          {
-            label: "恢复时间",
-            prop: "orgId",
-            span: 12,
-          },
-        ],
-      },
-      data: [],
-    };
-  },
-  prop: {
-    id: ["String"],
-  },
-
-  methods: {
-    init() {
-      this.onLoad(this.page);
-    },
-    rowSave(row, done, loading) {
-      add(row).then(
-        () => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
-        },
-        (error) => {
-          window.console.log(error);
-          loading();
-        }
-      );
-    },
-    rowUpdate(row, index, done, loading) {
-      update(row).then(
-        () => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          done();
-        },
-        (error) => {
-          window.console.log(error);
-          loading();
-        }
-      );
-    },
-    rowDel(row) {
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(row.id);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-        });
-    },
-    searchReset() {
-      this.query = {};
-      this.onLoad(this.page);
-    },
-    searchChange(params, done) {
-      this.query = params;
-      this.page.currentPage = 1;
-      this.onLoad(this.page, params);
-      done();
-    },
-    selectionChange(list) {
-      this.selectionList = list;
-    },
-    selectionClear() {
-      this.selectionList = [];
-      this.$refs.crud.toggleSelection();
-    },
-    handleDelete() {
-      if (this.selectionList.length === 0) {
-        this.$message.warning("请选择至少一条数据");
-        return;
-      }
-      this.$confirm("确定将选择数据删除?", {
-        confirmButtonText: "确定",
-        cancelButtonText: "取消",
-        type: "warning",
-      })
-        .then(() => {
-          return remove(this.ids);
-        })
-        .then(() => {
-          this.onLoad(this.page);
-          this.$message({
-            type: "success",
-            message: "操作成功!",
-          });
-          this.$refs.crud.toggleSelection();
-        });
-    },
-    beforeOpen(done, type) {
-      if (["edit", "view"].includes(type)) {
-        getDetail(this.form.id).then((res) => {
-          this.form = res.data.data;
-        });
-      }
-      done();
-    },
-    currentChange(currentPage) {
-      this.page.currentPage = currentPage;
-    },
-    sizeChange(pageSize) {
-      this.page.pageSize = pageSize;
-    },
-    refreshChange() {
-      this.onLoad(this.page, this.query);
-    },
-    onLoad(page, params = {}) {
-      this.loading = true;
-      getList(
-        page.currentPage,
-        page.pageSize,
-        Object.assign(params, this.query)
-      ).then((res) => {
-        const data = res.data.data;
-        this.page.total = data.total;
-        this.data = data.records;
-        this.loading = false;
-        this.selectionClear();
-      });
-    },
-  },
-};
-</script>

+ 38 - 38
vue.config.js

@@ -3,45 +3,45 @@
  * @LastEditors: DSH
  */
 module.exports = {
-  //路径前缀
-  publicPath: "/",
-  lintOnSave: true,
-  productionSourceMap: false,
-  chainWebpack: (config) => {
-    //忽略的打包文件
-    config.externals({
-      'vue': 'Vue',
-      'vue-router': 'VueRouter',
-      'vuex': 'Vuex',
-      'axios': 'axios',
-      'element-ui': 'ELEMENT',
-    });
-    const entry = config.entry('app');
-    entry.add('babel-polyfill').end();
-    entry.add('classlist-polyfill').end();
-    entry.add('@/mock').end();
-  },
-  css: {
-    extract: {
-      ignoreOrder: true
-    }
-  },
-  //开发模式反向代理配置,生产模式请使用Nginx部署并配置反向代理
-  devServer: {
-    port: 1888,
-    proxy: {
-      '/api': {
-        //本地服务接口地址
-        // target: 'http://localhost:40004',
-        //远程演示服务地址,可用于直接启动项目
-        // target: 'http://172.1.0.218:40004',
-        target: 'http://111.204.228.227:40004',
+    //路径前缀
+    publicPath: "/",
+    lintOnSave: true,
+    productionSourceMap: false,
+    chainWebpack: (config) => {
+        //忽略的打包文件
+        config.externals({
+            'vue': 'Vue',
+            'vue-router': 'VueRouter',
+            'vuex': 'Vuex',
+            'axios': 'axios',
+            'element-ui': 'ELEMENT',
+        });
+        const entry = config.entry('app');
+        entry.add('babel-polyfill').end();
+        entry.add('classlist-polyfill').end();
+        entry.add('@/mock').end();
+    },
+    css: {
+        extract: {
+            ignoreOrder: true
+        }
+    },
+    //开发模式反向代理配置,生产模式请使用Nginx部署并配置反向代理
+    devServer: {
+        port: 9081,
+        proxy: {
+            '/api': {
+                //本地服务接口地址
+                target: 'http://localhost:40004',
+                //远程演示服务地址,可用于直接启动项目
+                // target: 'http://172.1.0.218:40004',
+                //target: 'http://111.204.228.227:40004',
 
-        ws: true,
-        pathRewrite: {
-          '^/api': '/'
+                ws: true,
+                pathRewrite: {
+                    '^/api': '/'
+                }
+            }
         }
-      }
     }
-  }
 };

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio