Browse Source

first commit

ln 2 years ago
parent
commit
59449a99f0
100 changed files with 4033 additions and 3900 deletions
  1. 1 1
      .env.development
  2. BIN
      manage/favicon.ico
  3. BIN
      manage/favicon_backup.ico
  4. 0 12
      manage/index.html
  5. BIN
      manage/logo.png
  6. 0 2
      manage/robots.txt
  7. 0 7
      manage/static/css/app.c66a46be.css
  8. 0 6
      manage/static/css/chunk-0e7276a4.97f549c4.css
  9. 0 6
      manage/static/css/chunk-179842ca.850b0139.css
  10. 0 7
      manage/static/css/chunk-31476172.3afb8e42.css
  11. 0 6
      manage/static/css/chunk-34cc96a6.44804637.css
  12. 0 6
      manage/static/css/chunk-3deb75f6.efe0f3ef.css
  13. 0 6
      manage/static/css/chunk-459c9879.e39c5fdd.css
  14. 0 6
      manage/static/css/chunk-53ea833a.a9821aba.css
  15. 0 6
      manage/static/css/chunk-5a3493ef.601fad95.css
  16. 0 31
      manage/static/css/chunk-5b685476.6edec273.css
  17. 0 6
      manage/static/css/chunk-63d40358.0fb94869.css
  18. 0 6
      manage/static/css/chunk-6b208424.3f1439af.css
  19. 0 6
      manage/static/css/chunk-7cbc41e5.8ba8f05b.css
  20. 0 6
      manage/static/css/chunk-9f977eea.a05c48da.css
  21. 0 6
      manage/static/css/chunk-c3c0a24a.93194c77.css
  22. 0 6
      manage/static/css/element-ui.0e3a750b.css
  23. 0 99
      manage/static/css/loading.css
  24. 0 6
      manage/static/css/vab-layouts.12c46285.css
  25. BIN
      manage/static/fonts/element-icons.535877f5.woff
  26. BIN
      manage/static/fonts/element-icons.732389de.ttf
  27. BIN
      manage/static/fonts/fontawesome-webfont.674f50d2.674f50d2.eot
  28. BIN
      manage/static/fonts/fontawesome-webfont.af7ae505.af7ae505.woff2
  29. BIN
      manage/static/fonts/fontawesome-webfont.b06871f2.b06871f2.ttf
  30. BIN
      manage/static/fonts/fontawesome-webfont.fee66e71.fee66e71.woff
  31. BIN
      manage/static/img/401.475d4b80.png
  32. BIN
      manage/static/img/404.36bda403.png
  33. BIN
      manage/static/img/background.c7e07de7.jpg
  34. 0 2671
      manage/static/img/fontawesome-webfont.912ec66d.912ec66d.svg
  35. BIN
      manage/static/img/left.98ce7024.jpg
  36. BIN
      manage/static/img/lqr_logo.bce44563.png
  37. BIN
      manage/static/img/pro.a013cf99.png
  38. BIN
      manage/static/img/right.3d769702.jpg
  39. BIN
      manage/static/img/zfb_100.77bf9cb5.jpg
  40. BIN
      manage/static/img/zfb_699.4eb31240.jpg
  41. BIN
      manage/static/img/zfb_799.bb927378.jpg
  42. BIN
      manage/static/img/zfb_kf.e340e885.jpg
  43. 0 95
      manage/static/js/app.844ffbc4.js
  44. 0 7
      manage/static/js/chunk-0e7276a4.870b8345.js
  45. 0 7
      manage/static/js/chunk-179842ca.8ae29131.js
  46. 0 7
      manage/static/js/chunk-31476172.a128aeb7.js
  47. 0 7
      manage/static/js/chunk-34cc96a6.2432b117.js
  48. 0 7
      manage/static/js/chunk-3deb75f6.e6f32017.js
  49. 0 7
      manage/static/js/chunk-459c9879.27e8e47c.js
  50. 0 7
      manage/static/js/chunk-53ea833a.cf6210ef.js
  51. 0 7
      manage/static/js/chunk-5a3493ef.c788e996.js
  52. 0 51
      manage/static/js/chunk-5b685476.b75a5e67.js
  53. 0 7
      manage/static/js/chunk-63d40358.7cd1d340.js
  54. 0 7
      manage/static/js/chunk-6b208424.c7ef6191.js
  55. 0 7
      manage/static/js/chunk-7cbc41e5.8bdb006c.js
  56. 0 7
      manage/static/js/chunk-9f977eea.beb66505.js
  57. 0 7
      manage/static/js/chunk-c3c0a24a.d3d863e7.js
  58. 0 7
      manage/static/js/element-ui.cfb27695.js
  59. 0 7
      manage/static/js/vab-chunk-024ddcda.9ff5c737.js
  60. 0 7
      manage/static/js/vab-chunk-47eec42d.2ad3f2d5.js
  61. 0 7
      manage/static/js/vab-chunk-d939e436.afa00d83.js
  62. 0 7
      manage/static/js/vab-layouts.7b155346.js
  63. 1 1
      public/index.html
  64. BIN
      public/kb_icon.png
  65. 99 0
      src/api/realtimeDatabaseConfiguration.js
  66. 27 0
      src/api/square.js
  67. 186 62
      src/api/station.js
  68. 61 23
      src/api/table.js
  69. 1 1
      src/config/setting.config.js
  70. 2 0
      src/main.js
  71. 2 0
      src/plugins/element.js
  72. 106 4
      src/router/index.js
  73. 26 0
      src/styles/element-style.scss
  74. 28 0
      src/utils/deepTree.js
  75. 0 5
      src/views/ceshi/ceshi/index.vue
  76. 0 5
      src/views/ceshi/ceshi/shishi.vue
  77. 48 25
      src/views/index/components/TableEdit.vue
  78. 46 25
      src/views/index/index.vue
  79. 29 13
      src/views/indicators/components/TableEdit.vue
  80. 233 207
      src/views/indicators/index.vue
  81. 142 0
      src/views/meterpoint/components/TableEdit.vue
  82. 223 0
      src/views/meterpoint/index.vue
  83. 1 1
      src/views/pointConfiguration/components/TableEdit.vue
  84. 178 0
      src/views/realDatabaseConfig/components/TableEdit.vue
  85. 248 0
      src/views/realDatabaseConfig/index.vue
  86. 150 0
      src/views/square/components/TableEdit.vue
  87. 226 0
      src/views/square/index.vue
  88. 281 0
      src/views/stationConfiguration/admlist/index.vue
  89. 147 51
      src/views/stationConfiguration/area/components/TableEdit.vue
  90. 81 79
      src/views/stationConfiguration/area/index.vue
  91. 207 122
      src/views/stationConfiguration/company/components/TableEdit.vue
  92. 127 68
      src/views/stationConfiguration/company/index.vue
  93. 178 0
      src/views/stationConfiguration/equipmentmodel/components/TableEdit.vue
  94. 250 0
      src/views/stationConfiguration/equipmentmodel/index.vue
  95. 256 0
      src/views/stationConfiguration/group/components/TableEdit.vue
  96. 258 0
      src/views/stationConfiguration/group/index.vue
  97. 21 13
      src/views/stationConfiguration/line/components/TableEdit.vue
  98. 36 9
      src/views/stationConfiguration/line/index.vue
  99. 127 0
      src/views/stationConfiguration/manufacturer/components/TableEdit.vue
  100. 0 0
      src/views/stationConfiguration/manufacturer/index.vue

+ 1 - 1
.env.development

@@ -1 +1 @@
-VUE_APP_API=http://192.168.1.104:7020
+VUE_APP_API=http://192.168.11.250:7020/

BIN
manage/favicon.ico


BIN
manage/favicon_backup.ico


File diff suppressed because it is too large
+ 0 - 12
manage/index.html


BIN
manage/logo.png


+ 0 - 2
manage/robots.txt

@@ -1,2 +0,0 @@
-User-agent: *
-Allow: /

File diff suppressed because it is too large
+ 0 - 7
manage/static/css/app.c66a46be.css


File diff suppressed because it is too large
+ 0 - 6
manage/static/css/chunk-0e7276a4.97f549c4.css


+ 0 - 6
manage/static/css/chunk-179842ca.850b0139.css

@@ -1,6 +0,0 @@
-/*!
- *  build: vue-admin-better 
- *  vue-admin-beautiful.com 
- *  https://gitee.com/chu1204505056/vue-admin-better 
- *  time: 2022-10-9 09:00:18
- */.input-file{display:none}.inputs[data-v-3e9c3492]{width:200px}.lists[data-v-3e9c3492],.title[data-v-124eea45]{justify-content:space-between}.left .left-item[data-v-124eea45],.left[data-v-124eea45],.lists[data-v-3e9c3492],.title[data-v-124eea45]{display:flex;flex-direction:row;align-items:center}.left .left-item[data-v-124eea45]{margin-right:10px}

File diff suppressed because it is too large
+ 0 - 7
manage/static/css/chunk-31476172.3afb8e42.css


+ 0 - 6
manage/static/css/chunk-34cc96a6.44804637.css

@@ -1,6 +0,0 @@
-/*!
- *  build: vue-admin-better 
- *  vue-admin-beautiful.com 
- *  https://gitee.com/chu1204505056/vue-admin-better 
- *  time: 2022-10-9 09:00:18
- */.inputs[data-v-15869e09]{width:200px}.title[data-v-002f0084]{justify-content:space-between}.left .left-item[data-v-002f0084],.left[data-v-002f0084],.title[data-v-002f0084]{display:flex;flex-direction:row;align-items:center}.left .left-item[data-v-002f0084]{margin-right:10px}.cascaders[data-v-002f0084]{width:300px}

+ 0 - 6
manage/static/css/chunk-3deb75f6.efe0f3ef.css

@@ -1,6 +0,0 @@
-/*!
- *  build: vue-admin-better 
- *  vue-admin-beautiful.com 
- *  https://gitee.com/chu1204505056/vue-admin-better 
- *  time: 2022-10-9 09:00:18
- */.input-file{display:none}.inputs[data-v-5b7bc336]{width:200px}.lists[data-v-5b7bc336],.title[data-v-50a60e65]{justify-content:space-between}.left .left-item[data-v-50a60e65],.left[data-v-50a60e65],.lists[data-v-5b7bc336],.title[data-v-50a60e65]{display:flex;flex-direction:row;align-items:center}.left .left-item[data-v-50a60e65]{margin-right:10px}

+ 0 - 6
manage/static/css/chunk-459c9879.e39c5fdd.css

@@ -1,6 +0,0 @@
-/*!
- *  build: vue-admin-better 
- *  vue-admin-beautiful.com 
- *  https://gitee.com/chu1204505056/vue-admin-better 
- *  time: 2022-10-9 09:00:18
- */.input-file{display:none}.inputs[data-v-609f70e9]{width:200px}

+ 0 - 6
manage/static/css/chunk-53ea833a.a9821aba.css

@@ -1,6 +0,0 @@
-/*!
- *  build: vue-admin-better 
- *  vue-admin-beautiful.com 
- *  https://gitee.com/chu1204505056/vue-admin-better 
- *  time: 2022-10-9 09:00:18
- */.input-file{display:none}.inputs[data-v-765d502a]{width:200px}.title[data-v-79c85f6c]{justify-content:space-between}.left .left-item[data-v-79c85f6c],.left[data-v-79c85f6c],.title[data-v-79c85f6c]{display:flex;flex-direction:row;align-items:center}.left .left-item[data-v-79c85f6c]{margin-right:10px}

File diff suppressed because it is too large
+ 0 - 6
manage/static/css/chunk-5a3493ef.601fad95.css


File diff suppressed because it is too large
+ 0 - 31
manage/static/css/chunk-5b685476.6edec273.css


+ 0 - 6
manage/static/css/chunk-63d40358.0fb94869.css

@@ -1,6 +0,0 @@
-/*!
- *  build: vue-admin-better 
- *  vue-admin-beautiful.com 
- *  https://gitee.com/chu1204505056/vue-admin-better 
- *  time: 2022-10-9 09:00:18
- */.input-file{display:none}.inputs[data-v-5ed22276]{width:200px}.lists[data-v-5ed22276],.title[data-v-0e9fe9de]{justify-content:space-between}.left .left-item[data-v-0e9fe9de],.left[data-v-0e9fe9de],.lists[data-v-5ed22276],.title[data-v-0e9fe9de]{display:flex;flex-direction:row;align-items:center}.left .left-item[data-v-0e9fe9de]{margin-right:10px}

File diff suppressed because it is too large
+ 0 - 6
manage/static/css/chunk-6b208424.3f1439af.css


File diff suppressed because it is too large
+ 0 - 6
manage/static/css/chunk-7cbc41e5.8ba8f05b.css


+ 0 - 6
manage/static/css/chunk-9f977eea.a05c48da.css

@@ -1,6 +0,0 @@
-/*!
- *  build: vue-admin-better 
- *  vue-admin-beautiful.com 
- *  https://gitee.com/chu1204505056/vue-admin-better 
- *  time: 2022-10-9 09:00:18
- */.inputs[data-v-237db4f4]{width:200px}.cascaders[data-v-077f1030]{width:300px}

+ 0 - 6
manage/static/css/chunk-c3c0a24a.93194c77.css

@@ -1,6 +0,0 @@
-/*!
- *  build: vue-admin-better 
- *  vue-admin-beautiful.com 
- *  https://gitee.com/chu1204505056/vue-admin-better 
- *  time: 2022-10-9 09:00:18
- */.input-file{display:none}.inputs[data-v-71fa1f50]{width:200px}.lists[data-v-71fa1f50],.title[data-v-02c46410]{justify-content:space-between}.left .left-item[data-v-02c46410],.left[data-v-02c46410],.lists[data-v-71fa1f50],.title[data-v-02c46410]{display:flex;flex-direction:row;align-items:center}.left .left-item[data-v-02c46410]{margin-right:10px}

File diff suppressed because it is too large
+ 0 - 6
manage/static/css/element-ui.0e3a750b.css


+ 0 - 99
manage/static/css/loading.css

@@ -1,99 +0,0 @@
-/**
- * @description 雪花屏代码,基于ant-design修改
- **/
-.first-loading-wrp {
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-  justify-content: center;
-  height: 90vh;
-  min-height: 90vh;
-}
-
-.first-loading-wrp > h1 {
-  font-size: 30px;
-  font-weight: bolder;
-}
-
-.first-loading-wrp .loading-wrp {
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  padding: 98px;
-}
-
-.dot {
-  position: relative;
-  box-sizing: border-box;
-  display: inline-block;
-  width: 64px;
-  height: 64px;
-  font-size: 64px;
-  transform: rotate(45deg);
-  animation: antRotate 1.2s infinite linear;
-}
-
-.dot i {
-  position: absolute;
-  display: block;
-  width: 28px;
-  height: 28px;
-  background-color: #1890ff;
-  border-radius: 100%;
-  opacity: 0.3;
-  transform: scale(0.75);
-  transform-origin: 50% 50%;
-  animation: antSpinMove 1s infinite linear alternate;
-}
-
-.dot i:nth-child(1) {
-  top: 0;
-  left: 0;
-}
-
-.dot i:nth-child(2) {
-  top: 0;
-  right: 0;
-  -webkit-animation-delay: 0.4s;
-  animation-delay: 0.4s;
-}
-
-.dot i:nth-child(3) {
-  right: 0;
-  bottom: 0;
-  -webkit-animation-delay: 0.8s;
-  animation-delay: 0.8s;
-}
-
-.dot i:nth-child(4) {
-  bottom: 0;
-  left: 0;
-  -webkit-animation-delay: 1.2s;
-  animation-delay: 1.2s;
-}
-
-@keyframes antRotate {
-  to {
-    -webkit-transform: rotate(405deg);
-    transform: rotate(405deg);
-  }
-}
-
-@-webkit-keyframes antRotate {
-  to {
-    -webkit-transform: rotate(405deg);
-    transform: rotate(405deg);
-  }
-}
-
-@keyframes antSpinMove {
-  to {
-    opacity: 1;
-  }
-}
-
-@-webkit-keyframes antSpinMove {
-  to {
-    opacity: 1;
-  }
-}

File diff suppressed because it is too large
+ 0 - 6
manage/static/css/vab-layouts.12c46285.css


BIN
manage/static/fonts/element-icons.535877f5.woff


BIN
manage/static/fonts/element-icons.732389de.ttf


BIN
manage/static/fonts/fontawesome-webfont.674f50d2.674f50d2.eot


BIN
manage/static/fonts/fontawesome-webfont.af7ae505.af7ae505.woff2


BIN
manage/static/fonts/fontawesome-webfont.b06871f2.b06871f2.ttf


BIN
manage/static/fonts/fontawesome-webfont.fee66e71.fee66e71.woff


BIN
manage/static/img/401.475d4b80.png


BIN
manage/static/img/404.36bda403.png


BIN
manage/static/img/background.c7e07de7.jpg


File diff suppressed because it is too large
+ 0 - 2671
manage/static/img/fontawesome-webfont.912ec66d.912ec66d.svg


BIN
manage/static/img/left.98ce7024.jpg


BIN
manage/static/img/lqr_logo.bce44563.png


BIN
manage/static/img/pro.a013cf99.png


BIN
manage/static/img/right.3d769702.jpg


BIN
manage/static/img/zfb_100.77bf9cb5.jpg


BIN
manage/static/img/zfb_699.4eb31240.jpg


BIN
manage/static/img/zfb_799.bb927378.jpg


BIN
manage/static/img/zfb_kf.e340e885.jpg


File diff suppressed because it is too large
+ 0 - 95
manage/static/js/app.844ffbc4.js


File diff suppressed because it is too large
+ 0 - 7
manage/static/js/chunk-0e7276a4.870b8345.js


File diff suppressed because it is too large
+ 0 - 7
manage/static/js/chunk-179842ca.8ae29131.js


File diff suppressed because it is too large
+ 0 - 7
manage/static/js/chunk-31476172.a128aeb7.js


File diff suppressed because it is too large
+ 0 - 7
manage/static/js/chunk-34cc96a6.2432b117.js


File diff suppressed because it is too large
+ 0 - 7
manage/static/js/chunk-3deb75f6.e6f32017.js


File diff suppressed because it is too large
+ 0 - 7
manage/static/js/chunk-459c9879.27e8e47c.js


File diff suppressed because it is too large
+ 0 - 7
manage/static/js/chunk-53ea833a.cf6210ef.js


File diff suppressed because it is too large
+ 0 - 7
manage/static/js/chunk-5a3493ef.c788e996.js


File diff suppressed because it is too large
+ 0 - 51
manage/static/js/chunk-5b685476.b75a5e67.js


File diff suppressed because it is too large
+ 0 - 7
manage/static/js/chunk-63d40358.7cd1d340.js


File diff suppressed because it is too large
+ 0 - 7
manage/static/js/chunk-6b208424.c7ef6191.js


File diff suppressed because it is too large
+ 0 - 7
manage/static/js/chunk-7cbc41e5.8bdb006c.js


File diff suppressed because it is too large
+ 0 - 7
manage/static/js/chunk-9f977eea.beb66505.js


File diff suppressed because it is too large
+ 0 - 7
manage/static/js/chunk-c3c0a24a.d3d863e7.js


File diff suppressed because it is too large
+ 0 - 7
manage/static/js/element-ui.cfb27695.js


File diff suppressed because it is too large
+ 0 - 7
manage/static/js/vab-chunk-024ddcda.9ff5c737.js


File diff suppressed because it is too large
+ 0 - 7
manage/static/js/vab-chunk-47eec42d.2ad3f2d5.js


File diff suppressed because it is too large
+ 0 - 7
manage/static/js/vab-chunk-d939e436.afa00d83.js


File diff suppressed because it is too large
+ 0 - 7
manage/static/js/vab-layouts.7b155346.js


+ 1 - 1
public/index.html

@@ -4,7 +4,7 @@
     <meta charset="utf-8" />
     <meta http-equiv="X-UA-Compatible" content="IE=edge" />
     <meta name="viewport" content="width=device-width,initial-scale=1.0" />
-    <link rel="icon" href="<%= BASE_URL %>logo.png" />
+    <link rel="icon" href="<%= BASE_URL %>kb_icon.png" />
     <title>vue-admin-better官网、首页、文档和下载 - 前端开发框架</title>
     <meta
       name="keywords"

BIN
public/kb_icon.png


+ 99 - 0
src/api/realtimeDatabaseConfiguration.js

@@ -0,0 +1,99 @@
+import request from '@/utils/request'
+
+const database =(data)=>{
+  return request({
+      url:`/realtimeDatabaseConfiguration/listByPage?name=${encodeURIComponent(data.name)}&pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
+      method:"get"
+  })
+}
+const addDatabase =(pairs)=>{
+  return request({
+      url:`/realtimeDatabaseConfiguration/save`,
+      method:"post",
+      data: pairs
+  })
+}
+const deleteDatabase =(data)=>{
+  return request({
+      url:`/realtimeDatabaseConfiguration/remove-modelpower?ids=${data.id}`,
+      method:"delete",
+  })
+}
+
+// 设备厂商
+const manufacturer =(data)=>{
+  return request({
+      url:`/manufacturer/listByPage?name=${encodeURIComponent(data.name)}&pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
+      method:"get"
+  })
+}
+const addManufacturer =(pairs)=>{
+  return request({
+      url:`/manufacturer/save`,
+      method:"post",
+      data: pairs
+  })
+}
+const deleteManufacturer =(data)=>{
+  return request({
+      url:`/manufacturer/remove-manufacturer?ids=${data.id}`,
+      method:"delete",
+  })
+}
+
+// 设备类型
+const modelpower =(data)=>{
+  return request({
+      url:`/modelpower/listByPage?modelid=${data.modelid}&pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
+      method:"get"
+  })
+}
+const addModelpower =(pairs)=>{
+  return request({
+      url:`/modelpower/save`,
+      method:"post",
+      data: pairs
+  })
+}
+const deleteModelpower =(data)=>{
+  return request({
+      url:`/modelpower/remove-modelpower/${data.id}`,
+      method:"delete",
+  })
+}
+
+// 变电所
+const windsubstation =(data)=>{
+  return request({
+      url:`/windsubstation/listByPage?name=${encodeURIComponent(data.name)}&pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
+      method:"get"
+  })
+}
+const addWindsubstation =(pairs)=>{
+  return request({
+      url:`/windsubstation/save`,
+      method:"post",
+      data: pairs
+  })
+}
+const deleteWindsubstation =(data)=>{
+  return request({
+      url:`/windsubstation/remove-windsub/${data.id}`,
+      method:"delete",
+  })
+}
+
+export default {
+	database,
+	addDatabase,
+	deleteDatabase,
+	addManufacturer,
+	addModelpower,
+	addWindsubstation,
+	manufacturer,
+	modelpower,
+	windsubstation,
+	deleteManufacturer,
+	deleteModelpower,
+	deleteWindsubstation,
+}

+ 27 - 0
src/api/square.js

@@ -0,0 +1,27 @@
+import request from '@/utils/request'
+
+const square =(data)=>{
+  return request({ 
+      url:`/pro-basic-square/listByPage?id=${data.id}&name=${data.name}&pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
+      method:"get"
+  })
+}
+const addSquare =(pairs)=>{
+  return request({
+      url:`/pro-basic-square/save`,
+      method:"post",
+      data: pairs
+  })
+}
+const deleteSquare =(data)=>{
+  return request({
+      url:`/pro-basic-square/remove-Squares/${data.id}`,
+      method:"delete",
+  })
+}
+
+export default {
+  square,
+  addSquare,
+  deleteSquare,
+};

+ 186 - 62
src/api/station.js

@@ -1,123 +1,235 @@
 import request from '@/utils/request'
 
-const companys=(data)=>{
-  return request({ 
-      url:`/listByPage?id=${data.id}&name=${data.name}&pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
-      method:"get"
+const groupList = (data) => {
+  return request({
+    url: `/pro-basic-energy-group/List?id=${data.id}&name=${data.name}&pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
+    method: 'get',
+  })
+}
+const addGroup = (pairs) => {
+  return request({
+    url: `/pro-basic-energy-group/add-EnergyGroup`,
+    method: 'post',
+    data: pairs,
+  })
+}
+const deleteGroup = (data) => {
+  return request({
+    url: `/pro-basic-energy-group/remove-EnergyGroup/${data.id}`,
+    method: 'delete',
   })
 }
-const addCompanys=(pairs)=>{
+const companys = (data) => {
   return request({
-      url:`/companys`,
-      method:"post",
-      data: pairs
+    url: `/pro-basic-company/listByPage?id=${data.id}&name=${data.name}&pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
+    method: 'get',
   })
 }
-const deleteCompanys =(data)=>{
+const addCompanys = (pairs) => {
   return request({
-      url:`/remove-companys/${data.id}`,
-      method:"delete",
+    url: `/pro-basic-company/add-companys`,
+    method: 'post',
+    data: pairs,
   })
 }
-const lines=(data)=>{
+const deleteCompanys = (data) => {
   return request({
-      url:`/line/listByPage?id=${data.id}&name=${data.name}&pagenum=${data.pageNum}&pagesize=${data.pageSize}`,
-      method:"get"
+    url: `/pro-basic-company/remove-companys/${data.id}`,
+    method: 'delete',
+  })
+}
+const lines = (data) => {
+  return request({
+    url: `/line/listByPage?id=${data.id}&name=${encodeURIComponent(
+      data.name
+    )}&pagenum=${data.pageNum}&pagesize=${data.pageSize}`,
+    method: 'get',
   })
 }
 
-const regionList =(data)=>{
+const regionList = (data) => {
   return request({
-      url:`/region/List?id=${data.id}&name=${data.name}&pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
-      method:"get"
+    url: `/pro-basic-region/List?companyid=${data.companyid}&name=${data.name}&pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
+    method: 'get',
   })
 }
-const addRegion =(pairs)=>{
+const addRegion = (pairs) => {
   return request({
-      url:`/region/save`,
-      method:"post",
-      data: pairs
+    url: `/pro-basic-region/save`,
+    method: 'post',
+    data: pairs,
   })
 }
-const deleteRegion =(data)=>{
+const deleteRegion = (data) => {
   return request({
-      url:`/region/${data.id}`,
-      method:"delete",
+    url: `/pro-basic-region/${data.id}`,
+    method: 'delete',
   })
 }
 
-const windpowerstationList =(data)=>{
+const windpowerstationList = (data) => {
   return request({
-      url:`/windpowerstation/List?id=${data.id}&name=${data.name}&companyid=${data.companyid}&pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
-      method:"get"
+    url: `/pro-basic-powerstation/List?id=${data.id}&name=${data.name}&companyId=${data.companyId}&groupId=${data.groupId}&pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
+    method: 'get',
   })
 }
-const addWindpowerstation =(pairs)=>{
+const addWindpowerstation = (pairs) => {
   return request({
-      url:`/windpowerstation/add`,
-      method:"post",
-      data: pairs
+    url: `/pro-basic-powerstation/add`,
+    method: 'post',
+    data: pairs,
   })
 }
-const deleteWindpowerstation =(data)=>{
+const deleteWindpowerstation = (data) => {
   return request({
-      url:`/windpowerstation/${data.id}`,
-      method:"delete",
+    url: `/pro-basic-powerstation/${data.id}`,
+    method: 'delete',
   })
 }
-const projectList =(data)=>{
+const projectList = (data) => {
   return request({
-      url:`/project/List?windpowerstationid=${data.windpowerstationid}&name=${data.name}&pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
-      method:"get"
+    url: `/pro-basic-project/List?id=${data.id}&windpowerstationId=${data.windpowerstationId}&name=${data.name}&pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
+    method: 'get',
   })
 }
-const addProject =(pairs)=>{
+const addProject = (pairs) => {
   return request({
-      url:`/project/add`,
-      method:"post",
-      data: pairs
+    url: `/pro-basic-project/add`,
+    method: 'post',
+    data: pairs,
   })
 }
-const deleteProject =(data)=>{
+const deleteProject = (data) => {
   return request({
-      url:`/project/${data.id}`,
-      method:"delete",
+    url: `/pro-basic-project/remove-Project/${data.id}`,
+    method: 'delete',
   })
 }
-const addLine =(pairs)=>{
+const addLine = (pairs) => {
   return request({
-      url:`/line/add-Line`,
-      method:"post",
-      data: pairs
+    url: `/line/add-Line`,
+    method: 'post',
+    data: pairs,
   })
 }
-const deleteLine =(data)=>{
+const deleteLine = (data) => {
   return request({
-      url:`/line/remove-lines/${data.id}`,
-      method:"delete",
+    url: `/line/remove-lines/${data.id}`,
+    method: 'delete',
   })
 }
 
-const windturbine =(data)=>{
+const windturbine = (data) => {
+  return request({
+    url: `/windturbine/companys?pageNum=${data.pageNum}&pageSize=${
+      data.pageSize
+    }&name=${encodeURIComponent(data.name)}`,
+    method: 'get',
+  })
+}
+const addWindturbine = (pairs) => {
   return request({
-      url:`/windturbine/companys?name=${data.name}&pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
-      method:"get"
+    url: `/windturbine/add`,
+    method: 'post',
+    data: pairs,
   })
 }
-const addWindturbine =(pairs)=>{
+const deleteWindturbine = (data) => {
   return request({
-      url:`/windturbine/add`,
-      method:"post",
-      data: pairs
+    url: `/windturbine/${data.id}`,
+    method: 'delete',
   })
 }
-const deleteWindturbine =(data)=>{
+const newtreeTreels = (data) => {
+  return request({
+    url: `/newtree/treels?tag=${data.tag}`,
+    method: 'get',
+  })
+}
+const equipmentmodel = (data) => {
+  return request({
+    url: `/equipmentmodel/listByPage?name=${encodeURIComponent(
+      data.name
+    )}&pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
+    method: 'get',
+  })
+}
+const addEquipmentmodel = (pairs) => {
+  return request({
+    url: `/equipmentmodel/save`,
+    method: 'post',
+    data: pairs,
+  })
+}
+const deleteEquipmentmodel = (data) => {
+  return request({
+    url: `/equipmentmodel/remove-manufacturer?ids=${data.id}`,
+    method: 'delete',
+  })
+}
+
+const meterpoint = (data) => {
   return request({
-      url:`/windturbine/${data.id}`,
-      method:"delete",
+    url: `/meterpoint/listByPage?name=${encodeURIComponent(
+      data.name
+    )}&pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
+    method: 'get',
+  })
+}
+const addMeterpoint = (pairs) => {
+  return request({
+    url: `/meterpoint/save`,
+    method: 'post',
+    data: pairs,
+  })
+}
+const deleteMeterpoint = (data) => {
+  return request({
+    url: `/meterpoint/remove-meterpoint/${data.id}`,
+    method: 'delete',
+  })
+}
+
+const getStationPersis = (data) => {
+  return request({
+    url: `/windpowerstation/getStationPersis?station=${data.station}&startdate=${data.startdate}&enddate=${data.enddate}`,
+    method: 'get',
+  })
+}
+const getAdmList = (data) => {
+  return request({
+    url: `/windpowerstation/getAdmList?companyid=${data.companyid}&regionid=${data.regionid}`,
+    method: 'get',
+  })
+}
+// 区域保存 post:http://localhost:7020/region/save2
+// 区域更新 Put:http://localhost:7020/region/editRegions
+const addSave = (pairs) => {
+  return request({
+    url: `/region/save2`,
+    method: 'post',
+    data: [pairs],
+  })
+}
+const editSave = (pairs) => {
+  return request({
+    url: `/region/editRegions`,
+    method: 'put',
+    data: [pairs],
+  })
+}
+const standardpoint = (data) => {
+  return request({
+    url: `/standardpoint/list?pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
+    method: 'get',
   })
 }
 export default {
+  groupList,
+  addGroup,
+  deleteGroup,
+  addSave,
+  editSave,
   companys,
   addCompanys,
   deleteCompanys,
@@ -136,4 +248,16 @@ export default {
   windturbine,
   addWindturbine,
   deleteWindturbine,
-};
+  newtreeTreels,
+  equipmentmodel,
+  addEquipmentmodel,
+
+  deleteEquipmentmodel,
+  meterpoint,
+  addMeterpoint,
+
+  deleteMeterpoint,
+  getStationPersis,
+  getAdmList,
+  standardpoint,
+}

+ 61 - 23
src/api/table.js

@@ -1,48 +1,81 @@
 import request from '@/utils/request'
 
-const projectplan =(data)=>{
+const projectplan = (data) => {
   return request({
-      url:`projectplan/listByPage?pagenum=${data.pagenum}&pagesize=${data.pagesize}`,
-      method:"get"
+    url: `pro-basic-project-plan/List?windpowerstationId=${data.windpowerstationId}&projectId=${data.projectId}&pageNum=${data.pagenum}&pageSize=${data.pagesize}`,
+    method: 'get',
   })
 }
-const addProjectplan =(pairs)=>{
+const addProjectplan = (pairs) => {
   return request({
-      url:`projectplan/add-modify-projectplan`,
-      method:"post",
-      data: pairs
+    url: `pro-basic-project-plan/add`,
+    method: 'post',
+    data: pairs,
   })
 }
-const removeProjectplan =(data)=>{
+const removeProjectplan = (data) => {
   return request({
-      url:`/projectplan/remove-projectplans/${data.id}`,
-      method:"delete",
+    url: `/pro-basic-project-plan/remove-ProjectPlan/${data.id}`,
+    method: 'delete',
   })
 }
-const wtls=(data)=>{
+const wtls = (data) => {
   return request({
-      url:`/back/wtls`,
-      method:"get"
+    url: `/back/wtls`,
+    method: 'get',
   })
 }
 
-const indicators =(data)=>{
+const indicators = (data) => {
+  return request({
+    url: `indicators/List?stationid=${data.windpowerstationid}&stationname=${data.name}&pageNum=${data.pagenum}&pageSize=${data.pagesize}`,
+    method: 'get',
+  })
+}
+const addIndicators = (pairs) => {
   return request({
-      url:`indicators/List?stationid=${data.windpowerstationid}&stationname=${data.name}&pageNum=${data.pagenum}&pageSize=${data.pagesize}`,
+    url: `indicators/add`,
+    method: 'post',
+    data: pairs,
+  })
+}
+const removeIndicators = (data) => {
+  return request({
+    url: `/indicators/${data.id}`,
+    method: 'delete',
+  })
+}
+const newtreeTreels = (data) => {
+  return request({
+    url: `/sttree/energytreels?tag=${data.tag}`,
+    method: 'get',
+  })
+}
+
+// 可研电量
+const projectstudy = (data) => {
+  return request({
+      url:`/projectstudy/List?windpower=${data.windpower}&pageNum=${data.pageNum}&pageSize=${data.pageSize}`,
       method:"get"
   })
 }
-const addIndicators =(pairs)=>{
+const addProjectstudy = (pairs) => {
   return request({
-      url:`indicators/add`,
-      method:"post",
-      data: pairs
+    url: `/projectstudy/add`,
+    method: 'post',
+    data: pairs,
   })
 }
-const removeIndicators =(data)=>{
+const deleteProjectstudy = (data) => {
   return request({
-      url:`/indicators/${data.id}`,
-      method:"delete",
+    url: `/projectstudy/remove-study/${data.id}`,
+    method: 'delete',
+  })
+}
+const treels = (data) => {
+  return request({
+    url: `/newtree/treels`,
+    method: 'get',
   })
 }
 export default {
@@ -50,7 +83,12 @@ export default {
   addProjectplan,
   removeProjectplan,
   wtls,
+  treels,
   indicators,
   addIndicators,
   removeIndicators,
-};
+  newtreeTreels,
+  addProjectstudy,
+  projectstudy,
+  deleteProjectstudy,
+}

+ 1 - 1
src/config/setting.config.js

@@ -5,7 +5,7 @@ const setting = {
   // 开发以及部署时的URL
   publicPath: '',
   // 生产环境构建文件的目录名
-  outputDir: 'dist',
+  outputDir: 'manage',
   // 放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录。
   assetsDir: 'static',
   // 开发环境每次保存时是否输出为eslint编译警告

+ 2 - 0
src/main.js

@@ -4,6 +4,8 @@ import store from './store'
 import router from './router'
 import './plugins'
 import '@/layouts/export'
+import './styles/element-style.scss'
+
 /**
  * @author https://gitee.com/chu1204505056/vue-admin-better (不想保留author可删除)
  * @description 生产环境默认都使用mock,如果正式用于生产环境时,记得去掉

+ 2 - 0
src/plugins/element.js

@@ -4,6 +4,8 @@ import 'element-ui/lib/theme-chalk/display.css'
 
 import '@/styles/element-variables.scss'
 
+ElementUI.Dialog.props.closeOnClickModal.default = false
+
 Vue.use(ElementUI, {
   size: 'small',
 })

+ 106 - 4
src/router/index.js

@@ -74,11 +74,11 @@ export const asyncRoutes = [
     meta: { title: '场站配置', icon: 'tools', permissions: ['admin'] },
     children: [
       {
-        path: 'company',
-        name: 'company',
+        path: 'group',
+        name: 'group',
         component: () =>
-          import('@/views/stationConfiguration/company/index'),
-        meta: { title: '公司管理' },
+          import('@/views/stationConfiguration/group/index'),
+        meta: { title: '集团管理' },
       },
       {
         path: 'area',
@@ -88,6 +88,14 @@ export const asyncRoutes = [
         meta: { title: '区域管理' },
       },
       {
+        path: 'company',
+        name: 'company',
+        component: () =>
+          import('@/views/stationConfiguration/company/index'),
+        meta: { title: '公司管理' },
+      },
+      
+      {
         path: 'station',
         name: 'station',
         component: () =>
@@ -115,6 +123,48 @@ export const asyncRoutes = [
           import('@/views/stationConfiguration/windterbin/index'),
         meta: { title: '风机管理' },
       },
+			{
+        path: 'equipmentmodel',
+        name: 'equipmentmodel',
+        component: () =>
+          import('@/views/stationConfiguration/equipmentmodel/index'),
+        meta: { title: '设备型号' },
+      },
+			{
+        path: 'manufacturer',
+        name: 'manufacturer',
+        component: () =>
+          import('@/views/stationConfiguration/manufacturer/index'),
+        meta: { title: '设备厂商' },
+      },
+			{
+        path: 'modelpower',
+        name: 'modelpower',
+        component: () =>
+          import('@/views/stationConfiguration/modelpower/index'),
+        meta: { title: '设备类型' },
+      },
+			{
+        path: 'windsubstation',
+        name: 'windsubstation',
+        component: () =>
+          import('@/views/stationConfiguration/windsubstation/index'),
+        meta: { title: '变电所' },
+      },
+			{
+        path: 'projectstudy',
+        name: 'projectstudy',
+        component: () =>
+          import('@/views/stationConfiguration/projectstudy/index'),
+        meta: { title: '可研电量' },
+      },
+			{
+        path: 'admlist',
+        name: 'admlist',
+        component: () =>
+          import('@/views/stationConfiguration/admlist/index'),
+        meta: { title: '装机量管理' },
+      },
     ],
   },
   {
@@ -134,6 +184,58 @@ export const asyncRoutes = [
       },
     ],
   },
+	{
+    path: "/meterpoint",
+    component: Layout,
+    redirect: "noRedirect",
+    children: [
+      {
+        path: "meterpoint",
+        name: "meterpoint",
+        component: () => import("@/views/meterpoint/index"),
+        meta: {
+          title: "电计量配置",
+          icon: "allergies",
+          permissions: ["admin"],
+        },
+      },
+    ],
+  },
+	{
+    path: "/realDatabaseConfig",
+    component: Layout,
+    redirect: "noRedirect",
+    children: [
+      {
+        path: "realDatabaseConfig",
+        name: "realDatabaseConfig",
+        component: () => import("@/views/realDatabaseConfig/index"),
+        meta: {
+          title: "实时数据库配置",
+          icon: "allergies",
+          permissions: ["admin"],
+        },
+      },
+    ],
+  },
+
+  // {
+  //   path: "/square",
+  //   component: Layout,
+  //   redirect: "noRedirect",
+  //   children: [
+  //     {
+  //       path: "square",
+  //       name: "square",
+  //       component: () => import("@/views/square/index"),
+  //       meta: {
+  //         title: "方阵管理",
+  //         icon: "wave-square",
+  //         permissions: ["admin"],
+  //       },
+  //     },
+  //   ],
+  // },
   // {
   //   path: "/equipmentAllocation",
   //   component: Layout,

+ 26 - 0
src/styles/element-style.scss

@@ -0,0 +1,26 @@
+// 修改表头样式-加边框
+// ::v-deep .el-table__header-wrapper {
+//   border: solid 1px #04c2ed !important;
+//   // box-sizing: border-box;
+// }
+
+.el-table th.el-table__cell>.cell {
+  font-weight: bold;
+}
+
+.table_header_style {
+  background-color: #f2f3f4 !important;
+}
+
+.el-table .cell.el-tooltip {
+  font-size: 12px !important;
+}
+
+.el-table .caret-wrapper {
+  display: none;
+}
+
+.el-table__empty-text {
+  position: absolute;
+  left: 0;
+}

+ 28 - 0
src/utils/deepTree.js

@@ -0,0 +1,28 @@
+var treeAll = []
+export function recursionTree(data) {
+    for (let i = 0; i < data.length; i++) {
+        treeAll.push(data[i])    
+        if(data[i].children){
+            if (data[i].children.length != 0) {
+                recursionTree(data[i].children)
+            }
+        }
+    }
+    return treeAll
+}
+
+var recursionTreeChildrenData = ""
+export function recursionTreeChildren(id , dataAll) {
+    for (let i = 0; i < dataAll.length; i++) {
+        if(dataAll[i].children){
+            if(dataAll[i].id == id) {
+                recursionTreeChildrenData = dataAll[i].children
+            } else {
+                recursionTreeChildren(id , dataAll[i].children)
+            }
+        }
+    }
+    return recursionTreeChildrenData
+}
+
+

+ 0 - 5
src/views/ceshi/ceshi/index.vue

@@ -1,5 +0,0 @@
-<template>
-  <div>
-    111111111111
-  </div>
-</template>

+ 0 - 5
src/views/ceshi/ceshi/shishi.vue

@@ -1,5 +0,0 @@
-<template>
-  <div>
-    11111111111111
-  </div>
-</template>

+ 48 - 25
src/views/index/components/TableEdit.vue

@@ -1,31 +1,35 @@
 <template>
   <el-dialog :title="title" :visible.sync="dialogFormVisible" width="800px" @close="close">
-    <el-form ref="form" :model="form" :rules="rules">
+    <el-form ref="form" :model="form" :rules="rules" label-width="120px">
       <el-form-item label="场站" prop="cascaderSel" v-if="idAdd">
-        <el-cascader v-model="form.cascaderSel" :options="options"
-          :props="{ checkStrictly: true, label: 'name', value: 'id' }" clearable>
-        </el-cascader>
+        <el-cascader v-model="form.cascaderSel" :options="options" style="width: 240px"
+          :props="{ checkStrictly: true, label: 'name', value: 'id', children: 'children' }" clearable />
       </el-form-item>
-      <el-form-item label="场站" prop="generatingcapacity" v-if="!idAdd">
-        <el-input class="inputs" v-model="form.windpower" disabled></el-input>
+      <el-form-item label="场站" prop="windpowerstationId" v-if="!idAdd">
+        <el-input class="inputs" v-model="chooseStation.name" disabled style="width: 240px"></el-input>
       </el-form-item>
-      <el-form-item label="期次" prop="generatingcapacity" v-if="!idAdd">
-        <el-input class="inputs" v-model="form.projectid" disabled></el-input>
-      </el-form-item>
-      <el-form-item label="计划发电量" prop="generatingcapacity">
-        <el-input class="inputs" v-model="form.generatingcapacity"></el-input>
-      </el-form-item>
-      <el-form-item label="计划停运小时" prop="outagehours">
-        <el-input class="inputs" v-model="form.outagehours"></el-input>
+      <el-form-item label="期次" prop="windpowerstationId" v-if="!idAdd">
+        <el-input class="inputs" v-model="chooseProject.name" disabled style="width: 240px"></el-input>
       </el-form-item>
       <el-form-item label="请选择日期" prop="dateValues">
-        <el-date-picker v-model="form.dateValues" type="month" placeholder="选择月" :disabled="!idAdd?true:false">
+        <el-date-picker v-model="form.dateValues" type="month" placeholder="选择月" :disabled="!idAdd ? true : false"
+          style="width: 240px">
         </el-date-picker>
       </el-form-item>
+      <el-form-item label="期次" prop="projectId" v-if="!idAdd">
+        <el-input class="inputs" v-model="form.projectId" disabled style="width: 240px"></el-input>
+      </el-form-item>
+      <el-form-item label="计划发电量" prop="generatingCapacity">
+        <el-input class="inputs" v-model="form.generatingCapacity" style="width: 240px" placeholder="请输入"></el-input>
+      </el-form-item>
+      <el-form-item label="计划停运小时" prop="outageHours">
+        <el-input class="inputs" v-model="form.outageHours" style="width: 240px" placeholder="请输入"></el-input>
+      </el-form-item>
+
     </el-form>
     <div slot="footer" class="dialog-footer">
       <el-button @click="close">取 消</el-button>
-      <el-button type="primary" @click="handleSave()">确 定</el-button>
+      <el-button type="primary" @click="handleSave">确 定</el-button>
     </div>
   </el-dialog>
 </template>
@@ -42,15 +46,17 @@ export default {
   },
   data() {
     return {
+      chooseStation: {},
+      chooseProject: {},
       form: {
-        generatingcapacity: '',
-        outagehours: '',
+        generatingCapacity: '',
+        outageHours: '',
         cascaderSel: [],
         dateValues: '',
       },
       rules: {
-        generatingcapacity: [{ required: true, trigger: 'blur', message: '请输入发电量' }],
-        outagehours: [{ required: true, trigger: 'blur', message: '请输入停运小时' }],
+        generatingCapacity: [{ required: true, trigger: 'blur', message: '请输入发电量' }],
+        outageHours: [{ required: true, trigger: 'blur', message: '请输入停运小时' }],
         cascaderSel: [{ required: true, trigger: 'blur', message: '请选择场站' }],
         dateValues: [{ required: true, trigger: 'blur', message: '请选择日期' }],
       },
@@ -62,6 +68,7 @@ export default {
   created() { },
   methods: {
     showEdit(row) {
+
       if (!row) {
         this.title = '添加'
         this.idAdd = true
@@ -70,6 +77,8 @@ export default {
         this.idAdd = false
         this.form = Object.assign({}, row)
         this.form.dateValues = this.form.year && this.form.month ? new Date(`${this.form.year}-${this.form.month}-01`).getTime() : ''
+        this.chooseStation = this.stationFind(this.options, this.form.windpowerstationId)
+        this.chooseProject = this.stationFind(this.options, this.form.projectId)
       }
       this.dialogFormVisible = true
     },
@@ -80,17 +89,18 @@ export default {
       this.$emit('fetch-data')
     },
     handleSave() {
+
       this.$refs['form'].validate(async (valid) => {
         if (valid) {
           this.form.year = new Date(this.form.dateValues).getFullYear()
           this.form.month = new Date(this.form.dateValues).getMonth() + 1
-          if (!this.form.projectid) {
-            this.form.projectid = this.form.cascaderSel[2]
+          if (!this.form.projectId) {
+            this.form.projectId = this.form.cascaderSel[2]
           }
-          if (!this.form.windpower) {
-            this.form.windpower = this.form.cascaderSel[1]
+          if (!this.form.windpowerstationId) {
+            this.form.windpowerstationId = this.form.cascaderSel[1]
           }
-
+          console.log(this.form);
           api.addProjectplan(this.form).then(res => {
             if (res.code == 200) {
               this.$message({
@@ -106,6 +116,19 @@ export default {
         }
       })
     },
+    stationFind(data, id) {
+      let res = null
+      for (let i = 0; i < data.length; i++) {
+        if (data[i].id === id) {
+          res = data[i]
+          return data[i]
+        } else if (data[i].children && data[i].children.length > 0) {
+          res = this.stationFind(data[i].children, id)
+        }
+        if (res) break
+      }
+      return res
+    },
   },
 }
 </script>

+ 46 - 25
src/views/index/index.vue

@@ -3,10 +3,13 @@
     <vab-query-form>
       <vab-query-form-left-panel>
         <el-form ref="form" :model="queryForm" :inline="true" @submit.native.prevent>
-          <el-form-item>
-            <el-cascader class="cascaders" v-model="cascaderSel" :options="options"
-              :props="{ checkStrictly: true, label: 'name', value: 'id' }" clearable>
-            </el-cascader>
+          <el-form-item label="风场编号">
+            <!-- <el-cascader class="cascaders" v-model="cascaderSel" :options="options" style="width: 200px"
+              :props="{ checkStrictly: true, label: 'name', value: 'id' , children:'children', expandTrigger: 'hover' }" clearable>
+            </el-cascader> -->
+            <!-- <el-input v-model="fuzzyQuery" placeholder="请输入" clearable /> -->
+            <el-cascader v-model="fuzzyQuery" :options="options" style="width: 240px"
+              :props="{ checkStrictly: true, label: 'name', value: 'id', children: 'children' }" clearable />
           </el-form-item>
           <el-form-item>
             <el-button icon="el-icon-search" type="primary" native-type="submit" @click="handleQuery">
@@ -27,18 +30,18 @@
 
     <el-table ref="tableSort" v-loading="listLoading" :data="list" :element-loading-text="elementLoadingText"
       :height="height" @selection-change="setSelectRows" @sort-change="tableSortChange" show-summary
-      :summary-method="getSummaries">
-      <el-table-column show-overflow-tooltip type="selection" width="65"></el-table-column>
-      <el-table-column show-overflow-tooltip label="风场编号" prop="windpower" width="200" align="center" sortable>
+      header-cell-class-name="table_header_style" border :summary-method="getSummaries">
+      <el-table-column show-overflow-tooltip type="selection" width="55" align="center"></el-table-column>
+      <el-table-column show-overflow-tooltip label="风场编号" prop="windpowerstation" align="center" sortable>
       </el-table-column>
-      <el-table-column show-overflow-tooltip label="工程编号" prop="projectid" align="center" sortable></el-table-column>
-      <el-table-column show-overflow-tooltip label="计划发电量" prop="generatingcapacity" align="center" sortable>
+      <el-table-column show-overflow-tooltip label="工程编号" prop="project" align="center" sortable></el-table-column>
+      <el-table-column show-overflow-tooltip label="计划发电量" prop="generatingCapacity" align="center" sortable>
       </el-table-column>
-      <el-table-column show-overflow-tooltip label="计划停运小时" prop="outagehours" align="center" sortable>
+      <el-table-column show-overflow-tooltip label="计划停运小时" prop="outageHours" align="center" sortable>
       </el-table-column>
       <el-table-column show-overflow-tooltip label="年份" prop="year" align="center" sortable></el-table-column>
       <el-table-column show-overflow-tooltip label="月份" prop="month" align="center" sortable></el-table-column>
-      <el-table-column show-overflow-tooltip label="操作" width="180px">
+      <el-table-column show-overflow-tooltip label="操作" width="180px" fixed="right">
         <template #default="{ row }">
           <el-button type="text" @click="handleEdit(row)">编辑</el-button>
           <el-button type="text" @click="handleDelete(row)">删除</el-button>
@@ -72,9 +75,10 @@ export default {
   },
   data() {
     return {
+      fuzzyQuery: [],
       imgShow: true,
       list: [],
-      cascaderSel: [],
+      cascaderSel: "",
       imageList: [],
       listLoading: true,
       layout: 'total, sizes, prev, pager, next, jumper',
@@ -97,15 +101,29 @@ export default {
   },
   created() {
     this.getStation()
-    this.fetchData()
+
   },
   beforeDestroy() { },
   mounted() { },
   methods: {
+    stationFind(data, id) {
+      let res = null
+      for (let i = 0; i < data.length; i++) {
+        if (data[i].id === id) {
+          res = data[i]
+          return data[i]
+        } else if (data[i].children && data[i].children.length > 0) {
+          res = this.stationFind(data[i].children, id)
+        }
+        if (res) break
+      }
+      return res
+    },
     getStation() {
-      api.wtls().then(res => {
+      api.newtreeTreels({ tag: 3 }).then(res => {
         if (res.data) {
           this.options = res.data
+          this.fetchData()
         }
       })
     },
@@ -165,21 +183,25 @@ export default {
       this.fetchData()
     },
     handleQuery() {
-      // this.queryForm.pageNo = 1
-      // this.fetchData()
-      console.log(1111111111111111111);
-      this.$router.push({
-        path: "/others/statisticAnalysis/form",
-      });
+      this.queryForm.pageNo = 1
+      this.fetchData()
     },
     async fetchData() {
       this.listLoading = true
       api.projectplan({
+        windpowerstationId: this.fuzzyQuery[2] || "",
+        projectId: this.fuzzyQuery[3] || "",
         pagenum: this.queryForm.pageNo,
         pagesize: this.queryForm.pageSize,
       }).then(res => {
         if (res.data) {
           this.total = res.data.total
+          res.data.records.forEach(item => {
+            let obj = this.stationFind(this.options, item.windpowerstationId)
+            let val = this.stationFind(this.options, item.projectId)
+            item.windpowerstation = obj?.name
+            item.project = val?.name
+          })
           this.list = res.data.records
           setTimeout(() => {
             this.listLoading = false
@@ -216,7 +238,6 @@ export default {
       this.$baseNotify('测试消息提示', 'test', 'success', 'bottom-right')
     },
     getSummaries(param) {
-      console.log(11111);
       const { columns, data } = param;
       const sums = [];
       columns.forEach((column, index) => {
@@ -227,16 +248,16 @@ export default {
         else if (index === 3) {
           let totle = 0
           data.forEach(item => {
-            totle = totle + Number(item.generatingcapacity)
+            totle += Number(item.generatingCapacity)
           })
-          sums[index] = totle;
+          sums[index] = totle.toFixed(2);
         }
         else if (index === 4) {
           let totle = 0
           data.forEach(item => {
-            totle = totle + Number(item.outagehours)
+            totle += Number(item.outageHours)
           })
-          sums[index] = totle;
+          sums[index] = totle.toFixed(2);
         } else {
           sums[index] = '--';
         }

+ 29 - 13
src/views/indicators/components/TableEdit.vue

@@ -1,24 +1,24 @@
 <template>
   <el-dialog :title="title" :visible.sync="dialogFormVisible" width="800px" @close="close">
-    <el-form ref="form" :model="form" :rules="rules">
+    <el-form ref="form" :model="form" :rules="rules" label-width="120px">
       <el-form-item label="场站" prop="stationid">
-        <el-select v-model="form.stationid" placeholder="请选择" clearable :disabled="!idAdd?true:false">
-          <el-option v-for="item in stationList" :key="item.id" :label="item.name" :value="item.id">
-          </el-option>
-        </el-select>
+        <el-cascader ref="cascaderRef" @change="cascaderChange" v-model="form.stationid" :options="options"
+          style="width: 200px" :props="{ checkStrictly: true, label: 'name', value: 'id', children: 'children' }"
+          clearable />
+      </el-form-item>
+      <el-form-item label="录入时间" prop="createtime">
+        <el-date-picker style="width: 200px" v-model="form.createtime" type="datetime" placeholder="选择日期时间">
+        </el-date-picker>
       </el-form-item>
       <el-form-item label="指标" prop="kay">
-        <el-select v-model="form.kay" placeholder="请选择" clearable :disabled="!idAdd?true:false">
-          <el-option v-for="item in keyList" :key="item.name" :label="item.name" :value="item.name">
+        <el-select style="width: 200px" v-model="form.kay" placeholder="请选择" clearable
+          :disabled="!idAdd ? true : false">
+          <el-option v-for="item in standardList" :key="item.uniformcode" :label="item.name" :value="item.uniformcode">
           </el-option>
         </el-select>
       </el-form-item>
       <el-form-item label="值" prop="value">
-        <el-input class="inputs" v-model="form.value"></el-input>
-      </el-form-item>
-      <el-form-item label="录入时间" prop="createtime">
-        <el-date-picker v-model="form.createtime" type="datetime" placeholder="选择日期时间">
-        </el-date-picker>
+        <el-input style="width: 200px" class="inputs" v-model="form.value" placeholder="请输入"></el-input>
       </el-form-item>
     </el-form>
     <div slot="footer" class="dialog-footer">
@@ -38,6 +38,14 @@ export default {
       type: Array,
       default: []
     },
+    options: {
+      type: Array,
+      default: []
+    },
+    standardList: {
+      type: Array,
+      default: []
+    },
   },
   data() {
     return {
@@ -47,6 +55,8 @@ export default {
         createtime: '',
         stationid: '',
         stationname: '',
+        stationidArr: '',
+        stationnameArr: '',
         value: '',
       },
       rules: {
@@ -62,6 +72,10 @@ export default {
   },
   created() { },
   methods: {
+    cascaderChange(data) {
+      this.form.stationidArr = data
+      this.form.stationnameArr = this.$refs["cascaderRef"].getCheckedNodes()[0].pathLabels
+    },
     showEdit(row) {
       if (!row) {
         this.title = '添加'
@@ -70,6 +84,7 @@ export default {
         this.title = '编辑'
         this.idAdd = false
         this.form = Object.assign({}, row)
+        this.form.stationid = row.stationid.split(",")
       }
       this.dialogFormVisible = true
     },
@@ -82,7 +97,8 @@ export default {
     handleSave() {
       this.$refs['form'].validate(async (valid) => {
         if (valid) {
-          this.form.stationname = this.stationList.find(val => val.id === this.form.stationid).name
+          this.form.stationid = this.form.stationid.join(",")
+          this.form.stationname = this.form.stationnameArr[this.form.stationnameArr.length - 1]
           this.form.createtime = dayjs(this.form.createtime).format("YYYY-MM-DD HH:mm:ss")
           api.addIndicators(this.form).then(res => {
             if (res.code == 200) {

+ 233 - 207
src/views/indicators/index.vue

@@ -1,57 +1,60 @@
 <template>
-  <div class="table-container">
-    <div class="title">
-      <div class="left">
-        <div class="left-item">
-          <div>场站:</div>
-          <el-select v-model="selectValue" placeholder="请选择" clearable>
-            <el-option v-for="item in stationList" :key="item.id" :label="item.name" :value="item.id">
-            </el-option>
-          </el-select>
-        </div>
-        <div class="left-item">
-          <div style="width: 70px;">名称:</div>
-          <el-input v-model="fuzzyQuery" placeholder="请输入" clearable />
-        </div>
-        <el-button icon="el-icon-search" type="primary" native-type="submit" @click="fetchData">
-          查询
-        </el-button>
-      </div>
-      <div class="right">
-        <el-button icon="el-icon-plus" type="primary" @click="handleAdd">
-          添加
-        </el-button>
-        <el-button icon="el-icon-delete" type="danger" @click="handleDelete">
-          删除
-        </el-button>
-      </div>
-    </div>
-
-    <el-table ref="tableSort" v-loading="listLoading" :data="list" :element-loading-text="elementLoadingText"
-      :height="height" @selection-change="setSelectRows">
-      <!-- show-summary :summary-method="getSummaries" -->
-      <el-table-column show-overflow-tooltip type="selection" width="65"></el-table-column>
-      <el-table-column show-overflow-tooltip label="风场编号" prop="stationid" width="200" align="center" sortable>
-      </el-table-column>
-      <el-table-column show-overflow-tooltip label="风场名称" prop="stationname" align="center" sortable></el-table-column>
-      <el-table-column show-overflow-tooltip label="指标" prop="kay" align="center" sortable>
-      </el-table-column>
-      <el-table-column show-overflow-tooltip label="值" prop="value" align="center" sortable>
-      </el-table-column>
-      <el-table-column show-overflow-tooltip label="录入时间" prop="createtime" align="center" sortable>
-      </el-table-column>
-      <el-table-column show-overflow-tooltip label="操作" width="180px">
-        <template #default="{ row }">
-          <el-button type="text" @click="handleEdit(row)">编辑</el-button>
-          <el-button type="text" @click="handleDelete(row)">删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    <el-pagination :background="background" :current-page="queryForm.pageNo" :layout="layout"
-      :page-size="queryForm.pageSize" :total="total" @current-change="handleCurrentChange"
-      @size-change="handleSizeChange"></el-pagination>
-    <table-edit ref="edit" :stationList="stationList" @handleSuccess="fetchData"></table-edit>
-  </div>
+	<div class="table-container">
+		<div class="title">
+			<div class="left">
+				<!-- <div class="left-item">
+          <div style="width: 70px;">场站:</div>
+          <el-cascader 
+            v-model="selectValue" 
+            :options="options" 
+            style="width: 200px" 
+            :props="{ checkStrictly: true, label: 'name', value: 'id' , children:'children', expandTrigger: 'hover' }" 
+            clearable />
+        </div> -->
+				<div class="left-item">
+					<div style="width: 100px;">风场名称:</div>
+					<el-input v-model="fuzzyQuery" placeholder="请输入" clearable />
+				</div>
+				<el-button icon="el-icon-search" type="primary" native-type="submit" @click="handleQuery">
+					查询
+				</el-button>
+			</div>
+			<div class="right">
+				<el-button icon="el-icon-plus" type="primary" @click="handleAdd">
+					添加
+				</el-button>
+				<el-button icon="el-icon-delete" type="danger" @click="handleDelete">
+					删除
+				</el-button>
+			</div>
+		</div>
+		<el-table ref="tableSort" v-loading="listLoading" :data="list" :element-loading-text="elementLoadingText"
+      header-cell-class-name="table_header_style" border
+			:height="height" @selection-change="setSelectRows">
+			<!-- show-summary :summary-method="getSummaries" -->
+			<el-table-column width="55" align="center" show-overflow-tooltip type="selection"></el-table-column>
+			<el-table-column show-overflow-tooltip label="风场编号" prop="stationid" align="center" sortable>
+			</el-table-column>
+			<el-table-column show-overflow-tooltip label="风场名称" prop="stationname" align="center" sortable></el-table-column>
+			<el-table-column show-overflow-tooltip label="指标" prop="kay" align="center" sortable>
+			</el-table-column>
+			<el-table-column show-overflow-tooltip label="值" prop="value" align="center" sortable>
+			</el-table-column>
+			<el-table-column show-overflow-tooltip label="录入时间" prop="createtime" align="center" sortable>
+			</el-table-column>
+			<el-table-column show-overflow-tooltip label="操作" width="180px" fixed="right">
+				<template #default="{ row }">
+					<el-button type="text" @click="handleEdit(row)">编辑</el-button>
+					<el-button type="text" @click="handleDelete(row)">删除</el-button>
+				</template>
+			</el-table-column>
+		</el-table>
+		<el-pagination :background="background" :current-page="queryForm.pageNo" :layout="layout"
+			:page-size="queryForm.pageSize" :total="total" @current-change="handleCurrentChange"
+			@size-change="handleSizeChange"></el-pagination>
+		<table-edit ref="edit" :options="options" :stationList="stationList" :standardList="standardList"
+			@handleSuccess="fetchData"></table-edit>
+	</div>
 </template>
 
 <script>
@@ -59,170 +62,193 @@ import api from '@/api/table'
 import apis from '@/api/station'
 import TableEdit from './components/TableEdit'
 export default {
-  name: 'ComprehensiveTable',
-  components: {
-    TableEdit
-  },
-  filters: {
-    statusFilter(status) {
-      const statusMap = {
-        published: 'success',
-        draft: 'gray',
-        deleted: 'danger',
-      }
-      return statusMap[status]
-    },
-  },
-  data() {
-    return {
-      imgShow: true,
-      list: [],
-      fuzzyQuery: '',
-      cascaderSel: [],
-      selectValue: '',
-      listLoading: true,
-      layout: 'total, sizes, prev, pager, next, jumper',
-      total: 0,
-      background: true,
-      selectRows: '',
-      elementLoadingText: '正在加载...',
-      queryForm: {
-        pageNo: 1,
-        pageSize: 20,
-        title: '',
-      },
-      stationList: [],
-    }
-  },
-  computed: {
-    height() {
-      return this.$baseTableHeight() + 50
-    },
-  },
-  created() {
-    this.getStation()
-    this.fetchData()
-  },
-  beforeDestroy() { },
-  mounted() { },
-  methods: {
-    getStation() {
-      apis.windpowerstationList({
-        id: '',
-        name: '',
-        companyid: '',
-        pageNum: 1,
-        pageSize: 1000,
-      }).then(res => {
-        if (res.data) {
-          this.listLoading = false
-          this.stationList = res.data.records
-        }
-      })
-    },
-    setSelectRows(val) {
-      this.selectRows = val
-    },
-    handleAdd() {
-      this.$refs['edit'].showEdit()
-    },
-    handleEdit(row) {
-      this.$refs['edit'].showEdit(row)
-    },
-    handleDelete(row) {
-      if (row.id || this.selectRows.length > 0) {
-        this.$baseConfirm('你确定要删除吗', null, async () => {
-          let ids = ''
-          if (this.selectRows.length > 0) {
-            ids = this.selectRows.map((item) => item.id).join()
-          }
-          api.removeIndicators({
-            id: row.id || ids
-          }).then(res => {
-            if (res.data) {
-              this.$baseMessage('删除成功', 'success')
-              this.fetchData()
-            }
-          })
-        })
-      } else {
-        this.$baseMessage('未选中任何行', 'error')
-        return false
-      }
-    },
-    handleSizeChange(val) {
-      this.queryForm.pageSize = val
-      this.fetchData()
-    },
-    handleCurrentChange(val) {
-      this.queryForm.pageNo = val
-      this.fetchData()
-    },
-    handleQuery() {
-      this.queryForm.pageNo = 1
-      this.fetchData()
-    },
-    fetchData() {
-      this.listLoading = true
-      api.indicators({
-        windpowerstationid: this.selectValue,
-        name: this.fuzzyQuery,
-        pagenum: this.queryForm.pageNo,
-        pagesize: this.queryForm.pageSize,
-      }).then(res => {
-        if (res.data) {
-          this.total = res.data.total
-          this.list = res.data.records
-          setTimeout(() => {
-            this.listLoading = false
-          }, 500)
-        }
-      })
-    },
-    getSummaries(param) {
-      const { columns, data } = param;
-      const sums = [];
-      columns.forEach((column, index) => {
-        if (index === 0) {
-          sums[index] = '总计';
-          return;
-        } else if (index === 4) {
-          let totle = 0
-          data.forEach(item => {
-            totle = totle + Number(item.value)
-          })
-          sums[index] = totle;
-        } else {
-          sums[index] = '--';
-        }
-      });
-      return sums;
-    }
-  },
+	name: 'ComprehensiveTable',
+	components: {
+		TableEdit
+	},
+	filters: {
+		statusFilter(status) {
+			const statusMap = {
+				published: 'success',
+				draft: 'gray',
+				deleted: 'danger',
+			}
+			return statusMap[status]
+		},
+	},
+	data() {
+		return {
+			options: [],
+			imgShow: true,
+			list: [],
+			fuzzyQuery: '',
+			cascaderSel: [],
+			selectValue: '',
+			listLoading: true,
+			layout: 'total, sizes, prev, pager, next, jumper',
+			total: 0,
+			background: true,
+			selectRows: '',
+			elementLoadingText: '正在加载...',
+			queryForm: {
+				pageNo: 1,
+				pageSize: 20,
+				title: '',
+			},
+			stationList: [],
+			standardList: [], //指标列表
+		}
+	},
+	computed: {
+		height() {
+			return this.$baseTableHeight() + 50
+		},
+	},
+	created() {
+		this.getStation()
+		this.getStandard()
+		this.fetchData()
+		this.getTree()
+	},
+	beforeDestroy() { },
+	mounted() { },
+	methods: {
+		getTree() {
+			api.newtreeTreels({ tag: 2 }).then(res => {
+				if (res.data) {
+					this.options = res.data
+				}
+			})
+		},
+		getStation() {
+			apis.windpowerstationList({
+				id: '',
+				name: '',
+				companyid: '',
+				pageNum: 1,
+				pageSize: 1000,
+			}).then(res => {
+				if (res.data) {
+					this.listLoading = false
+					this.stationList = res.data.records
+				}
+			})
+		},
+		getStandard() {
+			apis.standardpoint({
+				pageNum: 1,
+				pageSize: 100000,
+			}).then(res => {
+				if (res.data) {
+					this.listLoading = false
+					this.standardList = res.data.records
+				}
+			})
+		},
+		setSelectRows(val) {
+			this.selectRows = val
+		},
+		handleAdd() {
+			this.$refs['edit'].showEdit()
+		},
+		handleEdit(row) {
+			this.$refs['edit'].showEdit(row)
+		},
+		handleDelete(row) {
+			if (row.id || this.selectRows.length > 0) {
+				this.$baseConfirm('你确定要删除吗', null, async () => {
+					let ids = ''
+					if (this.selectRows.length > 0) {
+						ids = this.selectRows.map((item) => item.id).join()
+					}
+					api.removeIndicators({
+						id: row.id || ids
+					}).then(res => {
+						if (res.data) {
+							this.$baseMessage('删除成功', 'success')
+							this.fetchData()
+						}
+					})
+				})
+			} else {
+				this.$baseMessage('未选中任何行', 'error')
+				return false
+			}
+		},
+		handleSizeChange(val) {
+			this.queryForm.pageSize = val
+			this.fetchData()
+		},
+		handleCurrentChange(val) {
+			this.queryForm.pageNo = val
+			this.fetchData()
+		},
+		handleQuery() {
+			this.queryForm.pageNo = 1
+			this.fetchData()
+		},
+		fetchData() {
+			this.listLoading = true
+			api.indicators({
+				windpowerstationid: this.selectValue,
+				name: this.fuzzyQuery,
+				pagenum: this.queryForm.pageNo,
+				pagesize: this.queryForm.pageSize,
+			}).then(res => {
+				if (res.data) {
+					this.total = res.data.total
+					this.list = res.data.records
+					setTimeout(() => {
+						this.listLoading = false
+					}, 500)
+				}
+			})
+		},
+		getSummaries(param) {
+			const { columns, data } = param;
+			const sums = [];
+			columns.forEach((column, index) => {
+				if (index === 0) {
+					sums[index] = '总计';
+					return;
+				} else if (index === 4) {
+					let totle = 0
+					data.forEach(item => {
+						totle = totle + Number(item.value)
+					})
+					sums[index] = totle;
+				} else {
+					sums[index] = '--';
+				}
+			});
+			return sums;
+		}
+	},
 }
 </script>
 <style lang="less" scoped>
 .title {
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-  justify-content: space-between;
+	display: flex;
+	flex-direction: row;
+	align-items: center;
+	justify-content: space-between;
+  margin-bottom: 16px;
 }
 
 .left {
-  display: flex;
-  flex-direction: row;
-  align-items: center;
+	display: flex;
+	flex-direction: row;
+	align-items: center;
 
-  .left-item {
-    display: flex;
-    flex-direction: row;
-    align-items: center;
-    margin-right: 10px;
-  }
+	.left-item {
+		display: flex;
+		flex-direction: row;
+		align-items: center;
+		margin-right: 10px;
+	}
 }
 
 .cascaders {
-  width: 300px;
+	width: 300px;
 }
 </style>

+ 142 - 0
src/views/meterpoint/components/TableEdit.vue

@@ -0,0 +1,142 @@
+<template>
+	<el-dialog :title="title" :visible.sync="dialogFormVisible" width="800px" @close="close">
+		<el-form ref="form" :model="form" :rules="rules" label-width="120px">
+			<div class="lists">
+				<el-form-item label="id" prop="id">
+					<el-input class="inputs" v-model="form.id" autocomplete="off" :disabled="!idAdd?true:false"></el-input>
+				</el-form-item>
+				<el-form-item label="编码" prop="code">
+					<el-input class="inputs" v-model.trim="form.code" autocomplete="off"></el-input>
+				</el-form-item>
+			</div>
+			<div class="lists">
+				<el-form-item label="名称" prop="name">
+					<el-input class="inputs" v-model="form.name" autocomplete="off"></el-input>
+				</el-form-item>
+				<el-form-item label="描述" prop="description">
+					<el-input class="inputs" v-model="form.description" autocomplete="off"></el-input>
+				</el-form-item>
+			</div>
+			<div class="lists">
+				<el-form-item label="风场编号" prop="windpowerstationid">
+					<el-select v-model="form.windpowerstationid" placeholder="请选择" clearable style="width:200px">
+						<el-option v-for="item in stationList" :key="item.id" :label="item.name" :value="item.id">
+						</el-option>
+					</el-select>
+				</el-form-item>
+				<el-form-item label="工程编号" prop="projectid">
+					<el-input class="inputs" v-model.trim="form.projectid" autocomplete="off"></el-input>
+				</el-form-item>
+			</div>
+			<div class="lists">
+				<el-form-item label="线路编号" prop="lineid">
+					<el-input class="inputs" v-model.trim="form.lineid" autocomplete="off"></el-input>
+				</el-form-item>
+			</div>
+		</el-form>
+		<div slot="footer" class="dialog-footer">
+			<el-button @click="close">取 消</el-button>
+			<el-button type="primary" @click="save">确 定</el-button>
+		</div>
+	</el-dialog>
+</template>
+
+<script>
+import api from '@/api/station'
+import dayjs from "dayjs";
+export default {
+	name: 'TableEdit',
+	props: {
+		options: {
+			type: Array,
+			default: []
+		},
+		stationList: {
+			type: Array,
+			default: []
+		},
+	},
+	data() {
+		return {
+			form: {
+				id: '',
+				code: '',
+				name: '',
+				description: '',
+				windpowerstationid: '',
+				projectId: '',
+				lineId: ''
+			},
+			rules: {
+				id: [{ required: true, trigger: 'blur', message: '请输入' }],
+				name: [{ required: true, trigger: 'blur', message: '请输入' }],
+				code: [{ required: true, trigger: 'blur', message: '请输入' }],
+				description: [{ required: true, trigger: 'blur', message: '请输入' }],
+				windpowerstationid: [{ required: true, trigger: 'blur', message: '请输入' }],
+				projectid: [{ required: true, trigger: 'blur', message: '请输入' }],
+				lineid: [{ required: true, trigger: 'blur', message: '请输入' }],
+			},
+			title: '',
+			dialogFormVisible: false,
+			idAdd: true,
+		}
+	},
+	created() { },
+	methods: {
+		showEdit(row) {
+			if (!row) {
+				this.title = '添加'
+				this.idAdd = true
+			} else {
+				this.title = '编辑'
+				this.idAdd = false
+				this.form = Object.assign({}, row)
+			}
+			this.dialogFormVisible = true
+		},
+		close() {
+			this.$refs['form'].resetFields()
+			this.form = this.$options.data().form
+			this.dialogFormVisible = false
+			this.$emit('fetch-data')
+		},
+		save() {
+			this.$refs['form'].validate(async (valid) => {
+				if (valid) {
+					api.addMeterpoint(this.form).then(res => {
+						if (res.data) {
+							this.$message({
+								type: 'success',
+								message: '添加成功!'
+							});
+							this.$emit('save-success');
+							this.dialogFormVisible = false
+						}
+					})
+				} else {
+					return false
+				}
+			})
+		},
+		handleChange() {
+		},
+		onBlur(val, param) {
+			if (typeof (this.form[param]) !== 'number') {
+				this.form[param] = val.replace(/[^0-9]/ig, "")
+			}
+		},
+	},
+}
+</script>
+<style lang="less" scoped>
+.inputs {
+	width: 200px;
+}
+
+.lists {
+	display: flex;
+	flex-direction: row;
+	align-items: center;
+	justify-content: space-between;
+}
+</style>

+ 223 - 0
src/views/meterpoint/index.vue

@@ -0,0 +1,223 @@
+<template>
+	<div class="table-container">
+		<vab-query-form>
+			<div class="title">
+				<div class="left">
+					<div class="left-item">
+						<div style="width: 70px;">名称:</div>
+						<el-input v-model="fuzzyQuery_name" placeholder="请输入" clearable />
+					</div>
+					<el-button icon="el-icon-search" type="primary" native-type="submit" @click="fetchData">
+						查询
+					</el-button>
+				</div>
+				<div class="right">
+					<el-button icon="el-icon-plus" type="primary" @click="handleAdd">
+						添加
+					</el-button>
+					<el-button icon="el-icon-delete" type="danger" @click="handleDelete">
+						删除
+					</el-button>
+					<UploadExcel style="margin-left: 10px;" @getResult="getMyExcelData"></UploadExcel>
+					<ExportExcel :exportList="exportExcel" :useType="'export'" partsName="电计量"></ExportExcel>
+					<ExportExcel :exportList="templateExcel" :useType="'template'" partsName="电计量模板"></ExportExcel>
+				</div>
+			</div>
+			<el-table header-cell-class-name="table_header_style" border ref="tableSort" v-loading="listLoading" :data="list"
+				:element-loading-text="elementLoadingText" :height="height" @selection-change="setSelectRows">
+				<el-table-column show-overflow-tooltip type="selection" align="center" width="40"></el-table-column>
+				<el-table-column show-overflow-tooltip label="id" prop="id" align="center" sortable></el-table-column>
+				<el-table-column show-overflow-tooltip label="编码" prop="code" align="center" sortable></el-table-column>
+				<el-table-column show-overflow-tooltip label="名称" prop="name" align="center" sortable></el-table-column>
+				<el-table-column show-overflow-tooltip label="描述" prop="description" align="center" sortable></el-table-column>
+				<el-table-column show-overflow-tooltip label="风场编号" prop="windpowerstationid" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="工程编号" prop="projectid" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="线路编号" prop="lineid" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="操作" width="100px" fixed="right">
+					<template #default="{ row }">
+						<el-button type="text" @click="handleEdit(row)">编辑</el-button>
+						<el-button type="text" @click="handleDelete(row)">删除</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<el-pagination :background="background" :current-page="queryForm.pageNo" :layout="layout"
+				:page-size="queryForm.pageSize" :total="total" @current-change="handleCurrentChange"
+				@size-change="handleSizeChange"></el-pagination>
+			<table-edit ref="edit" :options="options" :stationList="stationList" @save-success="fetchData"></table-edit>
+		</vab-query-form>
+	</div>
+</template>
+<script>
+import UploadExcel from '@/components/UploadExcel/index'
+import ExportExcel from '@/components/ExportExcel/index'
+import api from '@/api/station'
+import TableEdit from './components/TableEdit'
+export default {
+	components: {
+		UploadExcel,
+		ExportExcel,
+		TableEdit,
+	},
+	data() {
+		return {
+			fuzzyQuery_name: '',
+			listLoading: true,
+			list: [],
+			options: [],
+			exportExcel: [],
+			templateExcel: [],
+			elementLoadingText: '正在加载...',
+			selectRows: '',
+			layout: 'total, sizes, prev, pager, next, jumper',
+			total: 0,
+			background: true,
+			exportList: [],
+			queryForm: {
+				pageNo: 1,
+				pageSize: 20,
+			},
+			stationList: [],
+			selectValue: ''
+		};
+	},
+	computed: {
+		height() {
+			return this.$baseTableHeight() + 50
+		},
+	},
+	created() {
+		this.getStation()
+		this.fetchData()
+	},
+	methods: {
+		getMyExcelData(val) {
+			val.forEach(item => {
+				api.addMeterpoint(item).then(res => {
+					if (res.code == 200) {
+						this.$message({
+							type: 'success',
+							message: '添加成功!'
+						});
+						this.fetchData()
+					}
+				})
+			})
+		},
+		getStation() {
+			api.windpowerstationList({
+				id: '',
+				name: '',
+				companyid: '',
+				pageNum: 1,
+				pageSize: 1000,
+			}).then(res => {
+				if (res.data) {
+					this.listLoading = false
+					this.stationList = res.data.records
+				}
+			})
+		},
+		fetchData() {
+			api.meterpoint({
+				name: this.fuzzyQuery_name,
+				pageNum: this.queryForm.pageNo,
+				pageSize: this.queryForm.pageSize,
+			}).then(res => {
+				if (res.data) {
+					this.listLoading = false
+					this.total = res.data.total
+					this.list = res.data.records
+					this.templateExcel = [
+						{
+							id: '',
+							code: '',
+							name: '',
+							description: '',
+							windpowerstationid: '',
+							projectId: '',
+							lineId: ''
+						}
+					]
+					// 导出
+					let exportExcel = []
+					res.data.records.forEach(item => {
+						exportExcel.push({
+							id: item.id,
+							code: item.code,
+							name: item.name,
+							description: item.description,
+							windpowerstationid: item.windpowerstationid,
+							projectid: item.projectid,
+							lineid: item.lineid,
+						})
+					})
+					this.exportExcel = exportExcel
+				}
+			})
+		},
+		handleSizeChange(val) {
+			this.queryForm.pageSize = val
+			this.fetchData()
+		},
+		handleCurrentChange(val) {
+			this.queryForm.pageNo = val
+			this.fetchData()
+		},
+		handleAdd() {
+			this.$refs['edit'].showEdit()
+		},
+		handleEdit(row) {
+			this.$refs['edit'].showEdit(row)
+		},
+		handleDelete(row) {
+			if (row.id || this.selectRows.length > 0) {
+				this.$baseConfirm('你确定要删除吗', null, async () => {
+					let ids = ''
+					if (this.selectRows.length > 0) {
+						ids = this.selectRows.map((item) => item.id).join()
+					}
+					api.deleteMeterpoint({
+						id: row.id || ids
+					}).then(res => {
+						if (res.data) {
+							this.$baseMessage('删除成功', 'success')
+							this.fetchData()
+						}
+					})
+				})
+			} else {
+				this.$baseMessage('未选中任何行', 'error')
+				return false
+			}
+		},
+		setSelectRows(val) {
+			this.selectRows = val
+		},
+	},
+}
+</script>
+<style lang="less" scoped>
+.title {
+	display: flex;
+	flex-direction: row;
+	align-items: center;
+	justify-content: space-between;
+	margin-bottom: 20px;
+}
+
+.left {
+	display: flex;
+	flex-direction: row;
+	align-items: center;
+
+	.left-item {
+		display: flex;
+		flex-direction: row;
+		align-items: center;
+		margin-right: 10px;
+	}
+}
+</style>

+ 1 - 1
src/views/pointConfiguration/components/TableEdit.vue

@@ -1,6 +1,6 @@
 <template>
   <el-dialog :title="title" :visible.sync="dialogFormVisible" width="800px" @close="close">
-    <el-form ref="form" :model="form" :rules="rules"  label-width="80px">
+    <el-form ref="form" :model="form" :rules="rules" label-width="120px">
       <!-- <el-form-item label="id" prop="id">
         <el-input placeholder="请输入" class="inputs" v-model.trim="form.id" autocomplete="off" :disabled="!idAdd?true:false"></el-input>
       </el-form-item> -->

+ 178 - 0
src/views/realDatabaseConfig/components/TableEdit.vue

@@ -0,0 +1,178 @@
+<template>
+	<el-dialog :title="title" :visible.sync="dialogFormVisible" width="800px" @close="close">
+		<el-form ref="form" :model="form" :rules="rules" label-width="120px">
+			<div class="lists">
+				<el-form-item label="id" prop="id">
+					<el-input class="inputs" v-model="form.id" autocomplete="off" :disabled="!idAdd?true:false"></el-input>
+				</el-form-item>
+				<el-form-item label="服务姓" prop="surname">
+					<el-input class="inputs" v-model.trim="form.surname" autocomplete="off"></el-input>
+				</el-form-item>
+			</div>
+			<div class="lists">
+				<el-form-item label="服务名历史" prop="namehist" width="150">
+					<el-input class="inputs" v-model="form.namehist" autocomplete="off"></el-input>
+				</el-form-item>
+				<el-form-item label="服务名配置" prop="namecmcfg">
+					<el-input class="inputs" v-model="form.namecmcfg" autocomplete="off"></el-input>
+				</el-form-item>
+			</div>
+			<div class="lists">
+				<el-form-item label="服务名实时" prop="namerts">
+					<el-input class="inputs" v-model="form.namerts" autocomplete="off"></el-input>
+				</el-form-item>
+				<el-form-item label="点标签" prop="label">
+					<el-input class="inputs" v-model="form.label" autocomplete="off"></el-input>
+				</el-form-item>
+			</div>
+			<div class="lists">
+				<el-form-item label="风场编号" prop="windpowerstationid">
+					<el-select v-model="form.windpowerstationid" placeholder="请选择" clearable style="width:200px">
+						<el-option v-for="item in stationList" :key="item.id" :label="item.name" :value="item.id">
+						</el-option>
+					</el-select>
+				</el-form-item>
+				<el-form-item label="端口历史" prop="porthist">
+					<el-input class="inputs" v-model.trim="form.porthist" autocomplete="off"></el-input>
+				</el-form-item>
+			</div>
+			<div class="lists">
+				<el-form-item label="端口配置" prop="portcmcfg">
+					<el-input class="inputs" v-model.trim="form.portcmcfg" autocomplete="off"></el-input>
+				</el-form-item>
+				<el-form-item label="端口实时" prop="portrts">
+					<el-input class="inputs" v-model.trim="form.portrts" autocomplete="off"></el-input>
+				</el-form-item>
+			</div>
+			<div class="lists">
+				<el-form-item label="地址历史" prop="iphist">
+					<el-input class="inputs" v-model.trim="form.iphist" autocomplete="off"></el-input>
+				</el-form-item>
+				<el-form-item label="地址配置" prop="ipcmcfg">
+					<el-input class="inputs" v-model.trim="form.ipcmcfg" autocomplete="off"></el-input>
+				</el-form-item>
+			</div>
+			<div class="lists">
+				<el-form-item label="地址实时" prop="iprts">
+					<el-input class="inputs" v-model.trim="form.iprts" autocomplete="off"></el-input>
+				</el-form-item>
+			</div>
+		</el-form>
+		<div slot="footer" class="dialog-footer">
+			<el-button @click="close">取 消</el-button>
+			<el-button type="primary" @click="save">确 定</el-button>
+		</div>
+	</el-dialog>
+</template>
+
+<script>
+import api from '@/api/realtimeDatabaseConfiguration'
+import dayjs from "dayjs";
+export default {
+	name: 'TableEdit',
+	props: {
+		options: {
+			type: Array,
+			default: []
+		},
+		stationList: {
+			type: Array,
+			default: []
+		},
+	},
+	data() {
+		return {
+			form: {
+				id: '',
+				surname: '',
+				namehist: '',
+				namecmcfg: '',
+				namerts: '',
+				label: '',
+				windpowerstationid: '',
+				porthist: '',
+				portcmcfg: '',
+				portrts: '',
+				iphist: '',
+				ipcmcfg: '',
+				iprts: '',
+			},
+			rules: {
+				id: [{ required: true, trigger: 'blur', message: '请输入' }],
+				surname: [{ required: true, trigger: 'blur', message: '请输入' }],
+				namehist: [{ required: true, trigger: 'blur', message: '请输入' }],
+				namecmcfg: [{ required: true, trigger: 'blur', message: '请输入' }],
+				namerts: [{ required: true, trigger: 'blur', message: '请输入' }],
+				label: [{ required: true, trigger: 'blur', message: '请输入' }],
+				windpowerstationid: [{ required: true, trigger: 'blur', message: '请输入' }],
+				porthist: [{ required: true, trigger: 'blur', message: '请输入' }],
+				portcmcfg: [{ required: true, trigger: 'blur', message: '请输入' }],
+				portrts: [{ required: true, trigger: 'blur', message: '请输入' }],
+				iphist: [{ required: true, trigger: 'blur', message: '请输入' }],
+				ipcmcfg: [{ required: true, trigger: 'blur', message: '请输入' }],
+				iprts: [{ required: true, trigger: 'blur', message: '请输入' }],
+			},
+			title: '',
+			dialogFormVisible: false,
+			idAdd: true,
+		}
+	},
+	created() { },
+	methods: {
+		showEdit(row) {
+			if (!row) {
+				this.title = '添加'
+				this.idAdd = true
+			} else {
+				this.title = '编辑'
+				this.idAdd = false
+				this.form = Object.assign({}, row)
+			}
+			this.dialogFormVisible = true
+		},
+		close() {
+			this.$refs['form'].resetFields()
+			this.form = this.$options.data().form
+			this.dialogFormVisible = false
+			this.$emit('fetch-data')
+		},
+		save() {
+			this.$refs['form'].validate(async (valid) => {
+				if (valid) {
+					api.addDatabase(this.form).then(res => {
+						if (res.data) {
+							this.$message({
+								type: 'success',
+								message: '添加成功!'
+							});
+							this.$emit('save-success');
+							this.dialogFormVisible = false
+						}
+					})
+				} else {
+					return false
+				}
+			})
+		},
+		handleChange() {
+		},
+		onBlur(val, param) {
+			if (typeof (this.form[param]) !== 'number') {
+				this.form[param] = val.replace(/[^0-9]/ig, "")
+			}
+		},
+	},
+}
+</script>
+<style lang="less" scoped>
+.inputs {
+	width: 200px;
+}
+
+.lists {
+	display: flex;
+	flex-direction: row;
+	align-items: center;
+	justify-content: space-between;
+}
+</style>

+ 248 - 0
src/views/realDatabaseConfig/index.vue

@@ -0,0 +1,248 @@
+<template>
+	<div class="table-container">
+		<vab-query-form>
+			<div class="title">
+				<div class="left">
+					<div class="left-item">
+						<div style="width: 70px;">名称:</div>
+						<el-input v-model="fuzzyQuery_name" placeholder="请输入" clearable />
+					</div>
+					<el-button icon="el-icon-search" type="primary" native-type="submit" @click="fetchData">
+						查询
+					</el-button>
+				</div>
+				<div class="right">
+					<el-button icon="el-icon-plus" type="primary" @click="handleAdd">
+						添加
+					</el-button>
+					<el-button icon="el-icon-delete" type="danger" @click="handleDelete">
+						删除
+					</el-button>
+					<UploadExcel style="margin-left: 10px;" @getResult="getMyExcelData"></UploadExcel>
+					<ExportExcel :exportList="exportExcel" :useType="'export'" partsName="实时数据库"></ExportExcel>
+					<ExportExcel :exportList="templateExcel" :useType="'template'" partsName="实时数据库模板"></ExportExcel>
+				</div>
+			</div>
+			<el-table header-cell-class-name="table_header_style" border ref="tableSort" v-loading="listLoading" :data="list"
+				:element-loading-text="elementLoadingText" :height="height" @selection-change="setSelectRows">
+				<el-table-column show-overflow-tooltip type="selection" align="center" width="40"></el-table-column>
+				<el-table-column show-overflow-tooltip label="id" prop="id" align="center" sortable></el-table-column>
+				<el-table-column show-overflow-tooltip label="服务名" prop="surname" align="center" sortable></el-table-column>
+				<el-table-column width="120" show-overflow-tooltip label="服务名历史" prop="namehist" align="center" sortable></el-table-column>
+				<el-table-column width="120" show-overflow-tooltip label="服务名配置" prop="namecmcfg" align="center" sortable>
+				</el-table-column>
+				<el-table-column width="120" show-overflow-tooltip label="服务名实时" prop="namerts" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="点标签" prop="label" align="center" sortable></el-table-column>
+				<el-table-column show-overflow-tooltip label="风场编号" prop="windpowerstationid" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="端口历史" prop="porthist" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="端口配置" prop="portcmcfg" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="端口实时" prop="portrts" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="地址历史" prop="iphist" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="地址配置" prop="ipcmcfg" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="地址实时" prop="iprts" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="操作" width="100px" fixed="right">
+					<template #default="{ row }">
+						<el-button type="text" @click="handleEdit(row)">编辑</el-button>
+						<el-button type="text" @click="handleDelete(row)">删除</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<el-pagination :background="background" :current-page="queryForm.pageNo" :layout="layout"
+				:page-size="queryForm.pageSize" :total="total" @current-change="handleCurrentChange"
+				@size-change="handleSizeChange"></el-pagination>
+			<table-edit ref="edit" :options="options" :stationList="stationList" @save-success="fetchData"></table-edit>
+		</vab-query-form>
+	</div>
+</template>
+<script>
+import UploadExcel from '@/components/UploadExcel/index'
+import ExportExcel from '@/components/ExportExcel/index'
+import api from '@/api/realtimeDatabaseConfiguration'
+import stationApi from '@/api/station'
+import TableEdit from './components/TableEdit'
+export default {
+	components: {
+		UploadExcel,
+		ExportExcel,
+		TableEdit,
+	},
+	data() {
+		return {
+			fuzzyQuery_name: '',
+			listLoading: true,
+			list: [],
+			options: [],
+			exportExcel: [],
+			templateExcel: [],
+			elementLoadingText: '正在加载...',
+			selectRows: '',
+			layout: 'total, sizes, prev, pager, next, jumper',
+			total: 0,
+			background: true,
+			exportList: [],
+			queryForm: {
+				pageNo: 1,
+				pageSize: 20,
+			},
+			stationList: [],
+			selectValue: ''
+		};
+	},
+	computed: {
+		height() {
+			return this.$baseTableHeight() + 50
+		},
+	},
+	created() {
+		this.getStation()
+		this.fetchData()
+	},
+	methods: {
+		getMyExcelData(val) {
+			val.forEach(item => {
+				api.addDatabase(item).then(res => {
+					if (res.code == 200) {
+						this.$message({
+							type: 'success',
+							message: '添加成功!'
+						});
+						this.fetchData()
+					}
+				})
+			})
+		},
+		getStation() {
+			stationApi.windpowerstationList({
+				id: '',
+				name: '',
+				companyid: '',
+				pageNum: 1,
+				pageSize: 1000,
+			}).then(res => {
+				if (res.data) {
+					this.listLoading = false
+					this.stationList = res.data.records
+				}
+			})
+		},
+		fetchData() {
+			api.database({
+				name: this.fuzzyQuery_name,
+				pageNum: this.queryForm.pageNo,
+				pageSize: this.queryForm.pageSize,
+			}).then(res => {
+				if (res.data) {
+					this.listLoading = false
+					this.total = res.data.total
+					this.list = res.data.records
+					this.templateExcel = [
+						{
+							id: '',
+							surname: '',
+							namehist: '',
+							namecmcfg: '',
+							namerts: '',
+							label: '',
+							windpowerstationid: '',
+							porthist: '',
+							portcmcfg: '',
+							portrts: '',
+							iphist: '',
+							ipcmcfg: '',
+							iprts: '',
+						}
+					]
+					// 导出
+					let exportExcel = []
+					res.data.records.forEach(item => {
+						exportExcel.push({
+							id: item.id,
+							surname: item.surname,
+							namehist: item.namehist,
+							namecmcfg: item.namecmcfg,
+							namerts: item.namerts,
+							label: item.label,
+							windpowerstationid: item.windpowerstationid,
+							porthist: item.porthist,
+							portcmcfg: item.portcmcfg,
+							portrts: item.portrts,
+							iphist: item.iphist,
+							ipcmcfg: item.ipcmcfg,
+							iprts: item.iprts,
+						})
+					})
+					this.exportExcel = exportExcel
+				}
+			})
+		},
+		handleSizeChange(val) {
+			this.queryForm.pageSize = val
+			this.fetchData()
+		},
+		handleCurrentChange(val) {
+			this.queryForm.pageNo = val
+			this.fetchData()
+		},
+		handleAdd() {
+			this.$refs['edit'].showEdit()
+		},
+		handleEdit(row) {
+			this.$refs['edit'].showEdit(row)
+		},
+		handleDelete(row) {
+			if (row.id || this.selectRows.length > 0) {
+				this.$baseConfirm('你确定要删除吗', null, async () => {
+					let ids = ''
+					if (this.selectRows.length > 0) {
+						ids = this.selectRows.map((item) => item.id).join()
+					}
+					api.deleteDatabase({
+						id: row.id || ids
+					}).then(res => {
+						if (res.data) {
+							this.$baseMessage('删除成功', 'success')
+							this.fetchData()
+						}
+					})
+				})
+			} else {
+				this.$baseMessage('未选中任何行', 'error')
+				return false
+			}
+		},
+		setSelectRows(val) {
+			this.selectRows = val
+		},
+	},
+}
+</script>
+<style lang="less" scoped>
+.title {
+	display: flex;
+	flex-direction: row;
+	align-items: center;
+	justify-content: space-between;
+	margin-bottom: 20px;
+}
+
+.left {
+	display: flex;
+	flex-direction: row;
+	align-items: center;
+
+	.left-item {
+		display: flex;
+		flex-direction: row;
+		align-items: center;
+		margin-right: 10px;
+	}
+}
+</style>

+ 150 - 0
src/views/square/components/TableEdit.vue

@@ -0,0 +1,150 @@
+<template>
+  <el-dialog :title="title" :visible.sync="dialogFormVisible" width="800px" @close="close">
+    <el-form ref="form" :model="form" :rules="rules">
+      <div class="lists">
+        <el-form-item label="编号" prop="id">
+          <el-input class="inputs" v-model="form.id" autocomplete="off" :disabled="!idAdd?true:false"></el-input>
+        </el-form-item>
+        <el-form-item label="编码" prop="code">
+          <el-input class="inputs" v-model.trim="form.code" autocomplete="off"></el-input>
+        </el-form-item>
+      </div>
+      <div class="lists">
+        <el-form-item label="名称" prop="name">
+          <el-input class="inputs" v-model="form.name" autocomplete="off"></el-input>
+        </el-form-item>
+        <el-form-item label="风场编号" prop="windpowerstationId">
+          <el-select v-model="form.windpowerstationId" placeholder="请选择" clearable>
+            <el-option v-for="item in stationList" :key="item.id" :label="item.name" :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+      </div>
+      <div class="lists">
+        <el-form-item label="工程编号" prop="projectId">
+          <el-select v-model="form.projectId" placeholder="请选择" clearable>
+            <el-option v-for="item in stationList" :key="item.id" :label="item.name" :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="风电线编号" prop="lineId">
+          <el-select v-model="form.lineId" placeholder="请选择" clearable>
+            <el-option v-for="item in stationList" :key="item.id" :label="item.name" :value="item.id">
+            </el-option>
+          </el-select>
+        </el-form-item>
+      </div>
+      <div class="lists">
+        <el-form-item label="接入类型" prop="types">
+          <el-input class="inputs" v-model.trim="form.types" autocomplete="off"></el-input>
+        </el-form-item>
+      </div>
+    </el-form>
+    <div slot="footer" class="dialog-footer">
+      <el-button @click="close">取 消</el-button>
+      <el-button type="primary" @click="save">确 定</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+import api from '@/api/station'
+import dayjs from "dayjs";
+export default {
+  name: 'TableEdit',
+  props: {
+    options: {
+      type: Array,
+      default: []
+    },
+    stationList: {
+      type: Array,
+      // 报错
+      // default: []
+      default: function () {
+        return []
+      }
+    },
+  },
+  data() {
+    return {
+      form: {
+        id: '',
+        name: '',
+        code: '',
+      },
+      rules: {
+        id: [{ required: true, trigger: 'blur', message: '请输入' }],
+        name: [{ required: true, trigger: 'blur', message: '请输入' }],
+        code: [{ required: true, trigger: 'blur', message: '请输入' }],
+        aname: [{ required: true, trigger: 'blur', message: '请输入' }],
+        capacity: [{ required: true, trigger: 'blur', message: '请输入' }],
+        capacityunit: [{ required: true, trigger: 'blur', message: '请输入' }],
+        model: [{ required: true, trigger: 'blur', message: '请输入' }],
+        ordernum: [{ required: true, trigger: 'blur', message: '请输入' }],
+        quantity: [{ required: true, trigger: 'blur', message: '请输入' }],
+      },
+      title: '',
+      dialogFormVisible: false,
+      idAdd: true,
+    }
+  },
+  created() { },
+  methods: {
+    showEdit(row) {
+      if (!row) {
+        this.title = '添加'
+        this.idAdd = true
+      } else {
+        this.title = '编辑'
+        this.idAdd = false
+        this.form = Object.assign({}, row)
+      }
+      this.dialogFormVisible = true
+    },
+    close() {
+      this.$refs['form'].resetFields()
+      this.form = this.$options.data().form
+      this.dialogFormVisible = false
+      this.$emit('fetch-data')
+    },
+    save() {
+      this.$refs['form'].validate(async (valid) => {
+        if (valid) {
+          api.addLine(this.form).then(res => {
+            if (res.data) {
+              this.$message({
+                type: 'success',
+                message: '添加成功!'
+              });
+              this.$emit('save-success');
+              this.dialogFormVisible = false
+            }
+          })
+        } else {
+          return false
+        }
+      })
+    },
+    handleChange() {
+    },
+    onBlur(val, param) {
+      if (typeof (this.form[param]) !== 'number') {
+        this.form[param] = val.replace(/[^0-9]/ig, "")
+      }
+    },
+  },
+}
+</script>
+<style lang="less" scoped>
+.inputs {
+  width: 200px;
+}
+
+.lists {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  justify-content: space-between;
+}
+</style>

+ 226 - 0
src/views/square/index.vue

@@ -0,0 +1,226 @@
+<template>
+  <div class="table-container">
+    <vab-query-form>
+      <div class="title">
+        <div class="left">
+          <div class="left-item">
+            <div style="width: 70px;">名称:</div>
+            <el-input v-model="fuzzyQuery" placeholder="请输入" clearable />
+          </div>
+          <el-button icon="el-icon-search" type="primary" native-type="submit" @click="fetchData">
+            查询
+          </el-button>
+        </div>
+        <div class="right">
+          <el-button icon="el-icon-plus" type="primary" @click="handleAdd">
+            添加
+          </el-button>
+          <el-button icon="el-icon-delete" type="danger" @click="handleDelete">
+            删除
+          </el-button>
+          <UploadExcel style="margin-left: 10px;" @getResult="getMyExcelData"></UploadExcel>
+          <ExportExcel :exportList="list" :useType="'export'" partsName="方阵"></ExportExcel>
+          <ExportExcel :exportList="templateExcel" :useType="'template'" partsName="方阵模板"></ExportExcel>
+        </div>
+      </div>
+      <el-table ref="tableSort" v-loading="listLoading" :data="list" :element-loading-text="elementLoadingText"
+        :height="height" @selection-change="setSelectRows">
+        <el-table-column show-overflow-tooltip type="selection" width="55"></el-table-column>
+        <el-table-column width="60" show-overflow-tooltip label="编号" prop="id" align="center" sortable>
+        </el-table-column>
+        <el-table-column width="100" show-overflow-tooltip label="编码" prop="code" align="center" sortable>
+        </el-table-column>
+        <el-table-column width="100" show-overflow-tooltip label="名称" prop="name" align="center" sortable fixed="left">
+        </el-table-column>
+        <el-table-column width="150" show-overflow-tooltip label="风场编号" prop="windpowerstationId" align="center"
+          sortable>
+        </el-table-column>
+        <el-table-column width="150" show-overflow-tooltip label="工程编号" prop="projectId" align="center" sortable>
+        </el-table-column>
+        <el-table-column width="150" show-overflow-tooltip label="风电线编号" prop="lineId" align="center" sortable>
+        </el-table-column>
+        <el-table-column width="150" show-overflow-tooltip label="接入类型" prop="types" align="center" sortable>
+        </el-table-column>
+        <el-table-column show-overflow-tooltip label="操作" width="180px" fixed="right">
+          <template #default="{ row }">
+            <el-button type="text" @click="handleEdit(row)">编辑</el-button>
+            <el-button type="text" @click="handleDelete(row)">删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-pagination :background="background" :current-page="queryForm.pageNo" :layout="layout"
+        :page-size="queryForm.pageSize" :total="total" @current-change="handleCurrentChange"
+        @size-change="handleSizeChange"></el-pagination>
+      <table-edit ref="edit" :options="options" @save-success="fetchData"></table-edit>
+    </vab-query-form>
+  </div>
+</template>
+<script>
+import UploadExcel from '@/components/UploadExcel/index'
+import ExportExcel from '@/components/ExportExcel/index'
+import apis from '@/api/square'
+import api from '@/api/station'
+import TableEdit from './components/TableEdit'
+export default {
+  components: {
+    UploadExcel,
+    ExportExcel,
+    TableEdit,
+  },
+  data() {
+    return {
+      fuzzyQuery: '',
+      listLoading: true,
+      list: [],
+      options: [],
+      exportExcel: [],
+      templateExcel: [],
+      elementLoadingText: '正在加载...',
+      selectRows: '',
+      layout: 'total, sizes, prev, pager, next, jumper',
+      total: 0,
+      background: true,
+      exportList: [],
+      queryForm: {
+        pageNo: 1,
+        pageSize: 20,
+      },
+      stationList: [],
+      selectValue: ''
+    };
+  },
+  computed: {
+    height() {
+      return this.$baseTableHeight() + 50
+    },
+  },
+  created() {
+    this.getStation()
+    this.fetchData()
+  },
+  methods: {
+    getMyExcelData(val) {
+      val.forEach(item => {
+        api.addRegion(item).then(res => {
+          if (res.code == 200) {
+            this.$message({
+              type: 'success',
+              message: '添加成功!'
+            });
+            this.fetchData()
+          }
+        })
+      })
+    },
+    getStation() {
+      api.windpowerstationList({
+        id: '',
+        name: '',
+        pageNum: 1,
+        pageSize: 1000,
+      }).then(res => {
+        if (res.data) {
+          this.listLoading = false
+          this.stationList = res.data.records
+        }
+      })
+    },
+    fetchData() {
+      apis.square({
+        id: '',
+        name: this.fuzzyQuery,
+        pageNum: this.queryForm.pageNo,
+        pageSize: this.queryForm.pageSize,
+      }).then(res => {
+        if (res.data) {
+          this.listLoading = false
+          this.total = res.data.total
+          this.list = res.data.records
+          this.templateExcel = [
+            {
+              id: '',
+              companyid: '',
+              name: '',
+              aname: '',
+              windcapacity: '',
+              windcapacityunit: '',
+              windquantity: '',
+              capacity: '',
+              capacityunit: '',
+              quantityjz: '',
+              quantityzc: '',
+              jrwindcapacity: '',
+              jrwindcapacityunit: '',
+              jrwindquantity: '',
+              jrcapacity: '',
+              jrcapacityunit: '',
+              jrquantityjz: '',
+              jrquantityzc: '',
+            }
+          ]
+        }
+      })
+    },
+    handleSizeChange(val) {
+      this.queryForm.pageSize = val
+      this.fetchData()
+    },
+    handleCurrentChange(val) {
+      this.queryForm.pageNo = val
+      this.fetchData()
+    },
+    handleAdd() {
+      this.$refs['edit'].showEdit()
+    },
+    handleEdit(row) {
+      this.$refs['edit'].showEdit(row)
+    },
+    handleDelete(row) {
+      if (row.id || this.selectRows.length > 0) {
+        this.$baseConfirm('你确定要删除吗', null, async () => {
+          let ids = ''
+          if (this.selectRows.length > 0) {
+            ids = this.selectRows.map((item) => item.id).join()
+          }
+          api.deleteRegion({
+            id: row.id || ids
+          }).then(res => {
+            if (res.data) {
+              this.$baseMessage('删除成功', 'success')
+              this.fetchData()
+            }
+          })
+        })
+      } else {
+        this.$baseMessage('未选中任何行', 'error')
+        return false
+      }
+    },
+    setSelectRows(val) {
+      this.selectRows = val
+    },
+  },
+}
+</script>
+<style lang="less" scoped>
+.title {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  justify-content: space-between;
+  margin-bottom: 20px;
+}
+
+.left {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+
+  .left-item {
+    display: flex;
+    flex-direction: row;
+    align-items: center;
+    margin-right: 10px;
+  }
+}
+</style>

+ 281 - 0
src/views/stationConfiguration/admlist/index.vue

@@ -0,0 +1,281 @@
+<template>
+	<div class="table-container">
+		<vab-query-form>
+			<div class="title">
+				<div class="left">
+					<div class="left-item">
+						<div>公司:</div>
+						<el-select v-model="companyId" placeholder="请选择" clearable @change="getRegionAndStation">
+							<el-option v-for="item in companyList" :key="item.id" :label="item.name" :value="item.id">
+							</el-option>
+						</el-select>
+					</div>
+					<div class="left-item">
+						<div>区域:</div>
+						<el-select v-model="regionId" placeholder="请选择" clearable>
+							<el-option v-for="item in regionList" :key="item.id" :label="item.name" :value="item.id">
+							</el-option>
+						</el-select>
+					</div>
+					<div class="left-item">
+						<div>场站:</div>
+						<el-select v-model="stationId" placeholder="请选择" clearable>
+							<el-option v-for="item in stationList" :key="item.id" :label="item.name" :value="item.id">
+							</el-option>
+						</el-select>
+					</div>
+					<el-button icon="el-icon-search" type="primary" native-type="submit" @click="fetchData">
+						查询
+					</el-button>
+				</div>
+				<div class="right">
+					<!-- <el-button icon="el-icon-plus" type="primary" @click="handleAdd">
+						添加
+					</el-button>
+					<el-button icon="el-icon-delete" type="danger" @click="handleDelete">
+						删除
+					</el-button> -->
+					<!-- <UploadExcel style="margin-left: 10px;" @getResult="getMyExcelData"></UploadExcel> -->
+					<ExportExcel :exportList="exportExcel" :useType="'export'" partsName="装机量"></ExportExcel>
+					<!-- <ExportExcel :exportList="templateExcel" :useType="'template'" partsName="设备类型模板"></ExportExcel> -->
+				</div>
+			</div>
+			<el-table header-cell-class-name="table_header_style" border ref="tableSort" v-loading="listLoading" :data="list"
+				:element-loading-text="elementLoadingText" :height="height" @selection-change="setSelectRows">
+				<!-- <el-table-column show-overflow-tooltip type="selection" width="40"></el-table-column> -->
+				<el-table-column show-overflow-tooltip label="id" prop="id" align="center" sortable></el-table-column>
+				<el-table-column show-overflow-tooltip label="编号" prop="code" align="center" sortable></el-table-column>
+				<el-table-column show-overflow-tooltip label="名称" prop="name" align="center" sortable></el-table-column>
+				<el-table-column show-overflow-tooltip label="装机容量" prop="capacity" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="装机容量单位" prop="capacityunit" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="装机台数" prop="quantity" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="机型" prop="model" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="厂家" prop="systemmanufact" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="地址" prop="address" align="center" sortable>
+				</el-table-column>
+				<!-- <el-table-column show-overflow-tooltip label="操作" width="100px" fixed="right">
+					<template #default="{ row }">
+						<el-button type="text" @click="handleEdit(row)">编辑</el-button>
+						<el-button type="text" @click="handleDelete(row)">删除</el-button>
+					</template>
+				</el-table-column> -->
+			</el-table>
+		</vab-query-form>
+	</div>
+</template>
+<script>
+import UploadExcel from '@/components/UploadExcel/index'
+import ExportExcel from '@/components/ExportExcel/index'
+import api from '@/api/realtimeDatabaseConfiguration'
+import stationApi from '@/api/station'
+export default {
+	components: {
+		UploadExcel,
+		ExportExcel,
+	},
+	data() {
+		return {
+			fuzzyQuery_name: '',
+			listLoading: true,
+			list: [],
+			options: [],
+			exportExcel: [],
+			templateExcel: [],
+			elementLoadingText: '正在加载...',
+			selectRows: '',
+			layout: 'total, sizes, prev, pager, next, jumper',
+			total: 0,
+			background: true,
+			exportList: [],
+			queryForm: {
+				pageNo: 1,
+				pageSize: 20,
+			},
+			companyId: '',
+			regionId: '',
+			stationId: '',
+			companyList: [],
+			regionList: [],
+			stationList: [],
+		};
+	},
+	computed: {
+		height() {
+			return this.$baseTableHeight() + 50
+		},
+	},
+	created() {
+		this.getCompany()
+	},
+	methods: {
+		getMyExcelData(val) {
+			val.forEach(item => {
+				api.addModelpower(item).then(res => {
+					if (res.code == 200) {
+						this.$message({
+							type: 'success',
+							message: '添加成功!'
+						});
+						this.fetchData()
+					}
+				})
+			})
+		},
+		getCompany() {
+			stationApi.companys({
+				id: '',
+				name: '',
+				pageNum: 1,
+				pageSize: 10000,
+			}).then(res => {
+				if (res.data) {
+					this.companyId = ''
+					this.companyList = res.data.records
+					if (this.companyList.length) {
+						this.companyId = this.companyList[0].id
+						this.getRegionAndStation(this.companyId)
+					} else {
+						this.getRegionAndStation('')
+					}
+					this.fetchData()
+				}
+			})
+		},
+		getRegionAndStation(companyId) {
+			stationApi.regionList({
+				companyid: companyId ? companyId : '',
+				name: '',
+				pageNum: 1,
+				pageSize: 10000,
+			}).then(res => {
+				if (res.data) {
+					this.regionId = ''
+					this.regionList = res.data.records
+				}
+			})
+			stationApi.windpowerstationList({
+				id: '',
+				name: '',
+				companyid: companyId ? companyId : '',
+				pageNum: 1,
+				pageSize: 10000,
+			}).then(res => {
+				if (res.data) {
+					this.stationId = ''
+					this.stationList = res.data.records
+				}
+			})
+		},
+		fetchData() {
+			stationApi.getAdmList({
+				companyid: this.companyId,
+				regionid: this.regionId,
+				id: this.stationId,
+				// name: this.fuzzyQuery_name,
+				// pageNum: this.queryForm.pageNo,
+				// pageSize: this.queryForm.pageSize,
+			}).then(res => {
+				if (res.data) {
+					this.listLoading = false
+					// this.total = res.data.total
+					this.list = res.data
+					this.templateExcel = [
+						{
+							id: '',
+							code: '',
+							name: '',
+							capacity: '',
+							capacityunit: '',
+							quantity: '',
+							model: '',
+							systemmanufact: '',
+							address: ''
+						}
+					]
+					// 导出
+					let exportExcel = []
+					res.data.forEach(item => {
+						exportExcel.push({
+							id: item.id,
+							code: item.code,
+							name: item.name,
+							capacity: item.capacity,
+							capacityunit: item.capacityunit,
+							quantity: item.quantity,
+							model: item.model,
+							systemmanufact: item.systemmanufact,
+							address: item.address
+						})
+					})
+					this.exportExcel = exportExcel
+				}
+			})
+		},
+		handleSizeChange(val) {
+			this.queryForm.pageSize = val
+			this.fetchData()
+		},
+		handleCurrentChange(val) {
+			this.queryForm.pageNo = val
+			this.fetchData()
+		},
+		handleAdd() {
+			this.$refs['edit'].showEdit()
+		},
+		handleEdit(row) {
+			this.$refs['edit'].showEdit(row)
+		},
+		handleDelete(row) {
+			if (row.id || this.selectRows.length > 0) {
+				this.$baseConfirm('你确定要删除吗', null, async () => {
+					let ids = ''
+					if (this.selectRows.length > 0) {
+						ids = this.selectRows.map((item) => item.id).join()
+					}
+					api.deleteModelpower({
+						id: row.id || ids
+					}).then(res => {
+						if (res.data) {
+							this.$baseMessage('删除成功', 'success')
+							this.fetchData()
+						}
+					})
+				})
+			} else {
+				this.$baseMessage('未选中任何行', 'error')
+				return false
+			}
+		},
+		setSelectRows(val) {
+			this.selectRows = val
+		},
+	},
+}
+</script>
+<style lang="less" scoped>
+.title {
+	display: flex;
+	flex-direction: row;
+	align-items: center;
+	justify-content: space-between;
+	margin-bottom: 20px;
+}
+
+.left {
+	display: flex;
+	flex-direction: row;
+	align-items: center;
+
+	.left-item {
+		display: flex;
+		flex-direction: row;
+		align-items: center;
+		margin-right: 10px;
+	}
+}
+</style>

+ 147 - 51
src/views/stationConfiguration/area/components/TableEdit.vue

@@ -1,60 +1,140 @@
 <template>
-  <el-dialog :title="title" :visible.sync="dialogFormVisible" width="800px" @close="close">
-    <el-form ref="form" :model="form" :rules="rules">
+  <el-dialog :title="title" :visible.sync="dialogFormVisible" width="800px" @close="close" top="2%">
+    <el-form ref="form" :model="form" :rules="rules" label-width="170px">
       <el-row>
         <el-col :span="12">
-          <el-form-item :disabled="!idAdd?true:false" label="id" prop="id"><el-input class="inputs" v-model.trim="form.id" autocomplete="off"></el-input></el-form-item>
+          <el-form-item label="编码" prop="id">
+            <el-input placeholder="请输入" :disabled="idAdd" class="inputs" v-model.trim="form.id" autocomplete="off">
+            </el-input>
+          </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item   label="公司编号" prop="companyid"><el-input class="inputs" v-model.trim="form.companyid" autocomplete="off"></el-input></el-form-item>
+          <el-form-item label="名称" prop="name">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.name" autocomplete="off"></el-input>
+          </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item   label="名称" prop="name"><el-input class="inputs" v-model.trim="form.name" autocomplete="off"></el-input></el-form-item>
+          <el-form-item label="别名" prop="aname">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.aname" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <!-- 风电 -->
+      <el-divider><span>风电信息</span></el-divider>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="风电装机容量" prop="windCapacity">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.windCapacity" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="风电容量单位" prop="windCapacityUnit">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.windCapacityUnit" autocomplete="off">
+            </el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="风电装机数量海上" prop="windQuantityHs">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.windQuantityHs" autocomplete="off">
+            </el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="风电装机数量陆地" prop="windQuantityLd">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.windQuantityLd" autocomplete="off">
+            </el-input>
+          </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item   label="别名" prop="aname"><el-input class="inputs" v-model.trim="form.aname" autocomplete="off"></el-input></el-form-item>
+          <el-form-item label="风电场站数量" prop="windNumber">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.windNumber" autocomplete="off">
+            </el-input>
+          </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item   label="风电装机容量" prop="windcapacity"><el-input class="inputs" v-model.trim="form.windcapacity" autocomplete="off"></el-input></el-form-item>
+          <el-form-item label="接入风电场站数" prop="jrWindNumber">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrWindNumber" autocomplete="off">
+            </el-input>
+          </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item   label="风电容量单位" prop="windcapacityunit"><el-input class="inputs" v-model.trim="form.windcapacityunit" autocomplete="off"></el-input></el-form-item>
+          <el-form-item label="接入风电装机容量" prop="jrwindCapacity">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrwindCapacity" autocomplete="off"></el-input>
+          </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item   label="风电装机数量" prop="windquantity"><el-input class="inputs" v-model.trim="form.windquantity" autocomplete="off"></el-input></el-form-item>
+          <el-form-item label="接入风电容量单位" prop="jrwindCapacityUnit">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrwindCapacityUnit" autocomplete="off">
+            </el-input>
+          </el-form-item>
+        </el-col>
+
+        <el-col :span="12">
+          <el-form-item label="接入风电装机数量海上" prop="jrwindQuantityHs">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrwindQuantityHs" autocomplete="off">
+            </el-input>
+          </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item   label="光伏装机容量" prop="capacity"><el-input class="inputs" v-model.trim="form.capacity" autocomplete="off"></el-input></el-form-item>
+          <el-form-item label="接入风电装机数量陆地" prop="jrwindQuantityLd">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrwindQuantityLd" autocomplete="off">
+            </el-input>
+          </el-form-item>
         </el-col>
+      </el-row>
+      <!-- 光伏 -->
+      <el-divider><span>光伏信息</span></el-divider>
+      <el-row>
         <el-col :span="12">
-          <el-form-item   label="光伏容量单位" prop="capacityunit"><el-input class="inputs" v-model.trim="form.capacityunit" autocomplete="off"></el-input></el-form-item>
+          <el-form-item label="光伏场站数量" prop="number">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.number" autocomplete="off"></el-input>
+          </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item   label="光伏装机数量集中" prop="quantityjz"><el-input class="inputs" v-model.trim="form.quantityjz" autocomplete="off"></el-input></el-form-item>
+          <el-form-item label="光伏装机容量" prop="capacity">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.capacity" autocomplete="off"></el-input>
+          </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item   label="光伏装机数量组串" prop="quantityzc"><el-input class="inputs" v-model.trim="form.quantityzc" autocomplete="off"></el-input></el-form-item>
+          <el-form-item label="光伏容量单位" prop="capacityUnit">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.capacityUnit" autocomplete="off"></el-input>
+          </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item   label="接入风电装机容量2" prop="jrwindcapacity"><el-input class="inputs" v-model.trim="form.jrwindcapacity" autocomplete="off"></el-input></el-form-item>
+          <el-form-item label="光伏装机数量集中" prop="quantityJz">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.quantityJz" autocomplete="off"></el-input>
+          </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item   label="接入风电容量单位2" prop="jrwindcapacityunit"><el-input class="inputs" v-model.trim="form.jrwindcapacityunit" autocomplete="off"></el-input></el-form-item>
+          <el-form-item label="光伏装机数量组串" prop="quantityZc">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.quantityZc" autocomplete="off"></el-input>
+          </el-form-item>
         </el-col>
+
         <el-col :span="12">
-          <el-form-item   label="接入风电装机数量2" prop="jrwindquantity"><el-input class="inputs" v-model.trim="form.jrwindquantity" autocomplete="off"></el-input></el-form-item>
+          <el-form-item label="接入光伏场站数" prop="jrNumber">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrNumber" autocomplete="off"></el-input>
+          </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item   label="接入光伏装机容量2" prop="jrcapacity"><el-input class="inputs" v-model.trim="form.jrcapacity" autocomplete="off"></el-input></el-form-item>
+          <el-form-item label="接入光伏装机容量" prop="jrCapacity">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrCapacity" autocomplete="off"></el-input>
+          </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item   label="接入光伏容量单位2" prop="jrcapacityunit"><el-input class="inputs" v-model.trim="form.jrcapacityunit" autocomplete="off"></el-input></el-form-item>
+          <el-form-item label="接入光伏容量单位" prop="jrCapacityUnit">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrCapacityUnit" autocomplete="off"></el-input>
+          </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item   label="接入光伏装机数量集中" prop="jrquantityjz"><el-input class="inputs" v-model.trim="form.jrquantityjz" autocomplete="off"></el-input></el-form-item>
+          <el-form-item label="接入光伏装机数量集中" prop="jrquantityJz">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrquantityJz" autocomplete="off"></el-input>
+          </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item   label="接入光伏装机数量组串" prop="jrquantityzc"><el-input class="inputs" v-model.trim="form.jrquantityzc" autocomplete="off"></el-input></el-form-item>
+          <el-form-item label="接入光伏装机数量组串" prop="jrquantityZc">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrquantityZc" autocomplete="off"></el-input>
+          </el-form-item>
         </el-col>
       </el-row>
     </el-form>
@@ -79,43 +159,59 @@ export default {
     return {
       form: {
         id: '',
-        companyid:'',
-        name:'',
-        aname:'',
-        windcapacity:'',
-        windcapacityunit:'',
-        windquantity:'',
-        capacity:'',
-        capacityunit:'',
-        quantityjz:'',
-        quantityzc:'',
-        jrwindcapacity:'',
-        jrwindcapacityunit:'',
-        jrwindquantity:'',
-        jrcapacity:'',
-        jrcapacityunit:'',
-        jrquantityjz:'',
-        jrquantityzc:'',
+        companyid: '',
+        name: '',
+        aname: '',
+        windCapacity: '',
+        windCapacityUnit: '',
+        windQuantityHs: '',
+        windQuantityLd: '',
+        windNumber: '',
+        jrWindNumber: '',
+        number: '',
+        windquantity: '',
+        capacity: '',
+        capacityUnit: '',
+        quantityJz: '',
+        quantityZc: '',
+        jrwindCapacity: '',
+        jrwindCapacityUnit: '',
+        jrwindQuantityHs: '',
+        jrwindQuantityLd: '',
+        jrwindquantity: '',
+        jrNumber: '',
+        jrCapacity: '',
+        jrCapacityUnit: '',
+        jrquantityJz: '',
+        jrquantityZc: '',
       },
       rules: {
         id: [{ required: true, trigger: 'blur', message: '请输入' }],
         companyid: [{ required: true, trigger: 'blur', message: '请输入' }],
         name: [{ required: true, trigger: 'blur', message: '请输入' }],
         aname: [{ required: true, trigger: 'blur', message: '请输入' }],
-        windcapacity: [{ required: true, trigger: 'blur', message: '请输入' }],
-        windcapacityunit: [{ required: true, trigger: 'blur', message: '请输入' }],
+        windCapacity: [{ required: true, trigger: 'blur', message: '请输入' }],
+        windCapacityUnit: [{ required: true, trigger: 'blur', message: '请输入' }],
+        windQuantityHs: [{ required: true, trigger: 'blur', message: '请输入' }],
+        windQuantityLd: [{ required: true, trigger: 'blur', message: '请输入' }],
+        windNumber: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrWindNumber: [{ required: true, trigger: 'blur', message: '请输入' }],
+        number: [{ required: true, trigger: 'blur', message: '请输入' }],
         windquantity: [{ required: true, trigger: 'blur', message: '请输入' }],
         capacity: [{ required: true, trigger: 'blur', message: '请输入' }],
-        capacityunit: [{ required: true, trigger: 'blur', message: '请输入' }],
-        quantityjz: [{ required: true, trigger: 'blur', message: '请输入' }],
-        quantityzc: [{ required: true, trigger: 'blur', message: '请输入' }],
-        jrwindcapacity: [{ required: true, trigger: 'blur', message: '请输入' }],
-        jrwindcapacityunit: [{ required: true, trigger: 'blur', message: '请输入' }],
+        capacityUnit: [{ required: true, trigger: 'blur', message: '请输入' }],
+        quantityJz: [{ required: true, trigger: 'blur', message: '请输入' }],
+        quantityZc: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrwindCapacity: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrwindCapacityUnit: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrwindQuantityHs: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrwindQuantityLd: [{ required: true, trigger: 'blur', message: '请输入' }],
         jrwindquantity: [{ required: true, trigger: 'blur', message: '请输入' }],
-        jrcapacity: [{ required: true, trigger: 'blur', message: '请输入' }],
-        jrcapacityunit: [{ required: true, trigger: 'blur', message: '请输入' }],
-        jrquantityjz: [{ required: true, trigger: 'blur', message: '请输入' }],
-        jrquantityzc: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrNumber: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrCapacity: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrCapacityUnit: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrquantityJz: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrquantityZc: [{ required: true, trigger: 'blur', message: '请输入' }],
       },
       title: '',
       dialogFormVisible: false,
@@ -127,10 +223,10 @@ export default {
     showEdit(row) {
       if (!row) {
         this.title = '添加'
-        this.idAdd = true
+        this.idAdd = false
       } else {
         this.title = '编辑'
-        this.idAdd = false
+        this.idAdd = true
         this.form = Object.assign({}, row)
       }
       this.dialogFormVisible = true
@@ -148,7 +244,7 @@ export default {
             if (res.data) {
               this.$message({
                 type: 'success',
-                message: '添加成功!'
+                message: '操作成功!'
               });
               this.$emit('save-success');
               this.dialogFormVisible = false

+ 81 - 79
src/views/stationConfiguration/area/index.vue

@@ -3,17 +3,17 @@
     <vab-query-form>
       <div class="title">
         <div class="left">
-          <div class="left-item">
-            <div>公司:</div>
+          <!-- <div class="left-item">
+            <div style="width: 70px;">公司编号:</div>
             <el-select v-model="selectValue" placeholder="请选择" clearable>
               <el-option v-for="item in stationList" :key="item.id" :label="item.name" :value="item.id"></el-option>
             </el-select>
-          </div>
+          </div> -->
           <div class="left-item">
             <div style="width: 70px;">名称:</div>
             <el-input v-model="fuzzyQuery" placeholder="请输入" clearable />
           </div>
-          <el-button icon="el-icon-search" type="primary" native-type="submit" @click="fetchData">
+          <el-button icon="el-icon-search" type="primary" native-type="submit" @click="handleQuery">
             查询
           </el-button>
         </div>
@@ -25,31 +25,63 @@
             删除
           </el-button>
           <UploadExcel style="margin-left: 10px;" @getResult="getMyExcelData"></UploadExcel>
-          <ExportExcel :exportList="exportExcel" :useType="'export'" partsName="区域"></ExportExcel>
+          <ExportExcel :exportList="list" :useType="'export'" partsName="区域"></ExportExcel>
           <ExportExcel :exportList="templateExcel" :useType="'template'" partsName="区域模板"></ExportExcel>
         </div>
       </div>
       <el-table ref="tableSort" v-loading="listLoading" :data="list" :element-loading-text="elementLoadingText"
-        :height="height" @selection-change="setSelectRows">
-        <el-table-column show-overflow-tooltip type="selection" width="55"></el-table-column>
-        <el-table-column width="60" show-overflow-tooltip label="id" prop="id" align="center" sortable fixed="left"></el-table-column>
-        <el-table-column width="100" show-overflow-tooltip label="公司编号" prop="companyid" align="center" sortable fixed="left"></el-table-column>
-        <el-table-column width="100" show-overflow-tooltip label="名称" prop="name" align="center" sortable fixed="left"></el-table-column>
-        <el-table-column width="150" show-overflow-tooltip label="别名" prop="aname" align="center" sortable></el-table-column>
-        <el-table-column width="150" show-overflow-tooltip label="风电装机容量" prop="windcapacity" align="center" sortable></el-table-column>
-        <el-table-column width="150" show-overflow-tooltip label="风电容量单位" prop="windcapacityunit" align="center" sortable></el-table-column>
-        <el-table-column width="150" show-overflow-tooltip label="风电装机数量" prop="windquantity" align="center" sortable></el-table-column>
-        <el-table-column width="150" show-overflow-tooltip label="光伏装机容量" prop="capacity" align="center" sortable></el-table-column>
-        <el-table-column width="170" show-overflow-tooltip label="光伏容量单位" prop="capacityunit" align="center" sortable></el-table-column>
-        <el-table-column width="170" show-overflow-tooltip label="光伏装机数量集中" prop="quantityjz" align="center" sortable></el-table-column>
-        <el-table-column width="170" show-overflow-tooltip label="光伏装机数量组串" prop="quantityzc" align="center" sortable></el-table-column>
-        <el-table-column width="170" show-overflow-tooltip label="接入风电装机容量2" prop="jrwindcapacity" align="center" sortable></el-table-column>
-        <el-table-column width="170" show-overflow-tooltip label="接入风电容量单位2" prop="jrwindcapacityunit" align="center" sortable></el-table-column>
-        <el-table-column width="170" show-overflow-tooltip label="接入风电装机数量2" prop="jrwindquantity" align="center" sortable></el-table-column>
-        <el-table-column width="170" show-overflow-tooltip label="接入光伏装机容量2" prop="jrcapacity" align="center" sortable></el-table-column>
-        <el-table-column width="170" show-overflow-tooltip label="接入光伏容量单位2" prop="jrcapacityunit" align="center" sortable></el-table-column>
-        <el-table-column width="190" show-overflow-tooltip label="接入光伏装机数量集中" prop="jrquantityjz" align="center" sortable></el-table-column>
-        <el-table-column width="190" show-overflow-tooltip label="接入光伏装机数量组串" prop="jrquantityzc" align="center" sortable></el-table-column>
+        header-cell-class-name="table_header_style" border :height="height" @selection-change="setSelectRows">
+        <el-table-column show-overflow-tooltip type="selection" width="55" align="center"></el-table-column>
+        <el-table-column width="100" show-overflow-tooltip label="编码" prop="id" align="left" sortable fixed="left">
+        </el-table-column>
+        <el-table-column width="100" show-overflow-tooltip label="名称" prop="name" align="left" sortable fixed="left">
+        </el-table-column>
+        <el-table-column width="150" show-overflow-tooltip label="别名" prop="aname" align="left" sortable>
+        </el-table-column>
+        <el-table-column width="150" show-overflow-tooltip label="风电装机容量" prop="windCapacity" align="center" sortable>
+        </el-table-column>
+        <el-table-column width="150" show-overflow-tooltip label="风电容量单位" prop="windCapacityUnit" align="center"
+          sortable></el-table-column>
+        <el-table-column width="160" show-overflow-tooltip label="风电装机数量海上" prop="windQuantityHs" align="center"
+          sortable>
+        </el-table-column>
+        <el-table-column width="160" show-overflow-tooltip label="风电装机数量陆地" prop="windQuantityLd" align="center"
+          sortable>
+        </el-table-column>
+        <el-table-column width="150" show-overflow-tooltip label="风电场站数量" prop="windNumber" align="center" sortable>
+        </el-table-column>
+        <el-table-column width="150" show-overflow-tooltip label="接入风电场站数" prop="jrWindNumber" align="center" sortable>
+        </el-table-column>
+        <el-table-column width="170" show-overflow-tooltip label="接入风电装机容量" prop="jrwindCapacity" align="center"
+          sortable></el-table-column>
+        <el-table-column width="170" show-overflow-tooltip label="接入风电容量单位" prop="jrwindCapacityUnit" align="center"
+          sortable></el-table-column>
+        <el-table-column width="180" show-overflow-tooltip label="接入风电装机数量海上" prop="jrwindQuantityHs" align="center"
+          sortable>
+        </el-table-column>
+        <el-table-column width="180" show-overflow-tooltip label="接入风电装机数量陆地" prop="jrwindQuantityLd" align="center"
+          sortable>
+        </el-table-column>
+        <el-table-column width="150" show-overflow-tooltip label="光伏场站数量" prop="number" align="center" sortable>
+        </el-table-column>
+        <el-table-column width="150" show-overflow-tooltip label="光伏装机容量" prop="capacity" align="center" sortable>
+        </el-table-column>
+        <el-table-column width="170" show-overflow-tooltip label="光伏容量单位" prop="capacityUnit" align="center" sortable>
+        </el-table-column>
+        <el-table-column width="170" show-overflow-tooltip label="光伏装机数量集中" prop="quantityJz" align="center" sortable>
+        </el-table-column>
+        <el-table-column width="170" show-overflow-tooltip label="光伏装机数量组串" prop="quantityZc" align="center" sortable>
+        </el-table-column>
+        <el-table-column width="150" show-overflow-tooltip label="接入光伏场站数" prop="jrNumber" align="center" sortable>
+        </el-table-column>
+        <el-table-column width="170" show-overflow-tooltip label="接入光伏装机容量" prop="jrCapacity" align="center" sortable>
+        </el-table-column>
+        <el-table-column width="170" show-overflow-tooltip label="接入光伏容量单位" prop="jrCapacityUnit" align="center"
+          sortable></el-table-column>
+        <el-table-column width="190" show-overflow-tooltip label="接入光伏装机数量集中" prop="jrquantityJz" align="center"
+          sortable></el-table-column>
+        <el-table-column width="190" show-overflow-tooltip label="接入光伏装机数量组串" prop="jrquantityZc" align="center"
+          sortable></el-table-column>
         <el-table-column show-overflow-tooltip label="操作" width="180px" fixed="right">
           <template #default="{ row }">
             <el-button type="text" @click="handleEdit(row)">编辑</el-button>
@@ -81,7 +113,6 @@ export default {
       listLoading: true,
       list: [],
       options: [],
-      exportExcel: [],
       templateExcel: [],
       elementLoadingText: '正在加载...',
       selectRows: '',
@@ -103,10 +134,13 @@ export default {
     },
   },
   created() {
-    this.getStation()
     this.fetchData()
   },
   methods: {
+    handleQuery() {
+      this.queryForm.pageNo = 1
+      this.fetchData()
+    },
     getMyExcelData(val) {
       val.forEach(item => {
         api.addRegion(item).then(res => {
@@ -120,22 +154,9 @@ export default {
         })
       })
     },
-    getStation() {
-      api.companys({
-        id: '',
-        name: '',
-        pageNum: 1,
-        pageSize: 1000,
-      }).then(res => {
-        if (res.data) {
-          this.listLoading = false
-          this.stationList = res.data.records
-        }
-      })
-    },
     fetchData() {
       api.regionList({
-        id: this.selectValue,
+        companyid: this.selectValue,
         name: this.fuzzyQuery,
         pageNum: this.queryForm.pageNo,
         pageSize: this.queryForm.pageSize,
@@ -150,47 +171,28 @@ export default {
               companyid: '',
               name: '',
               aname: '',
-              windcapacity: '',
-              windcapacityunit: '',
-              windquantity: '',
+              windCapacity: '',
+              windCapacityUnit: '',
+              windQuantityHs: '',
+              windQuantityLd: '',
+              windNumber: '',
+              jrWindNumber: '',
+              number: '',
               capacity: '',
-              capacityunit: '',
-              quantityjz: '',
-              quantityzc: '',
-              jrwindcapacity: '',
-              jrwindcapacityunit: '',
-              jrwindquantity: '',
-              jrcapacity: '',
-              jrcapacityunit: '',
-              jrquantityjz: '',
-              jrquantityzc: '',
+              capacityUnit: '',
+              quantityJz: '',
+              quantityZc: '',
+              jrNumber: '',
+              jrwindCapacity: '',
+              jrwindCapacityUnit: '',
+              jrwindQuantityHs: '',
+              jrwindQuantityLd: '',
+              jrCapacity: '',
+              jrCapacityUnit: '',
+              jrquantityJz: '',
+              jrquantityZc: '',
             }
           ]
-          // 导出
-          let exportExcel = []
-          res.data.records.forEach(item => {
-            exportExcel.push({
-              id: item.id,
-              companyid: item.companyid,
-              name: item.name,
-              aname: item.aname,
-              windcapacity: item.windcapacity,
-              windcapacityunit: item.windcapacityunit,
-              windquantity: item.windquantity,
-              capacity: item.capacity,
-              capacityunit: item.capacityunit,
-              quantityjz: item.quantityjz,
-              quantityzc: item.quantityzc,
-              jrwindcapacity: item.jrwindcapacity,
-              jrwindcapacityunit: item.jrwindcapacityunit,
-              jrwindquantity: item.jrwindquantity,
-              jrcapacity: item.jrcapacity,
-              jrcapacityunit: item.jrcapacityunit,
-              jrquantityjz: item.jrquantityjz,
-              jrquantityzc: item.jrquantityzc
-            })
-          })
-          this.exportExcel = exportExcel
         }
       })
     },

+ 207 - 122
src/views/stationConfiguration/company/components/TableEdit.vue

@@ -1,94 +1,163 @@
 <template>
-  <el-dialog :title="title" :visible.sync="dialogFormVisible" width="900px" @close="close">
-    <el-form ref="form" :model="form" :rules="rules">
-    <el-row>
-      <el-col :span="12">
-        <el-form-item :disabled="!idAdd?true:false" label="id" prop="id"><el-input class="inputs" v-model.trim="form.id" autocomplete="off"></el-input></el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item   label="公司名称" prop="name"><el-input class="inputs" v-model.trim="form.name" autocomplete="off"></el-input></el-form-item>
-      </el-col>
-    </el-row>
-    <el-row>
-      <el-col :span="12">
-        <el-form-item  label="别名" prop="aname"><el-input class="inputs" v-model.trim="form.aname" autocomplete="off"></el-input></el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item  label="风电装机容量" prop="windcapacity"><el-input class="inputs" v-model.trim="form.windcapacity" autocomplete="off"></el-input></el-form-item>
-      </el-col>
-    </el-row>
-    <el-row>
-      <el-col :span="12">
-        <el-form-item  label="风电容量单位" prop="windcapacityUnit"><el-input class="inputs" v-model.trim="form.windcapacityunit" autocomplete="off"></el-input></el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item  label="风电装机数量" prop="windquantity"><el-input class="inputs" v-model.trim="form.windquantity" autocomplete="off"></el-input></el-form-item>
-      </el-col>
-    </el-row>
-    <el-row>
-      <el-col :span="12">
-        <el-form-item  label="光伏装机容量" prop="capacity"><el-input class="inputs" v-model.trim="form.capacity" autocomplete="off"></el-input></el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item  label="光伏容量单位" prop="capacityUnit"><el-input class="inputs" v-model.trim="form.capacityunit" autocomplete="off"></el-input></el-form-item>
-      </el-col>
-    </el-row>
-    <el-row>
-      <el-col :span="12">
-        <el-form-item  label="光伏装机数量集中" prop="quantityjz"><el-input class="inputs" v-model.trim="form.quantityjz" autocomplete="off"></el-input></el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item  label="光伏装机数量组串" prop="quantityzc"><el-input class="inputs" v-model.trim="form.quantityzc" autocomplete="off"></el-input></el-form-item>
-      </el-col>
-    </el-row>
-    <el-row>
-      <el-col :span="12">
-        <el-form-item  label="接入风电装机容量2" prop="jrwindcapacity"><el-input class="inputs" v-model.trim="form.jrwindcapacity" autocomplete="off"></el-input></el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item  label="接入风电容量单位2" prop="jrwindcapacityUnit"><el-input class="inputs" v-model.trim="form.jrwindcapacityunit" autocomplete="off"></el-input></el-form-item>
-      </el-col>
-    </el-row>
-    <el-row>
-      <el-col :span="12">
-        <el-form-item  label="接入风电装机数量2" prop="jrwindquantity"><el-input class="inputs" v-model.trim="form.jrwindquantity" autocomplete="off"></el-input></el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item  label="接入光伏装机容量2" prop="jrcapacity"><el-input class="inputs" v-model.trim="form.jrcapacity" autocomplete="off"></el-input></el-form-item>
-      </el-col>
-    </el-row>
-    <el-row>
-      <el-col :span="12">
-        <el-form-item  label="接入光伏容量单位2" prop="jrcapacityUnit"><el-input class="inputs" v-model.trim="form.jrcapacityunit" autocomplete="off"></el-input></el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item  label="接入光伏装机数量集中" prop="jrquantityjz"><el-input class="inputs" v-model.trim="form.jrquantityjz" autocomplete="off"></el-input></el-form-item>
-      </el-col>
-    </el-row>
-    <el-row>
-      <el-col :span="12">
-        <el-form-item  label="风电场站数量" prop="windnumber"><el-input class="inputs" v-model.trim="form.windnumber" autocomplete="off"></el-input></el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item  label="光伏场站数量" prop="number"><el-input class="inputs" v-model.trim="form.number" autocomplete="off"></el-input></el-form-item>
-      </el-col>
-    </el-row>
-    <el-row>
-      <el-col :span="12">
-        <el-form-item  label="接入风电场站数" prop="jrwindnumber"><el-input class="inputs" v-model.trim="form.jrwindnumber" autocomplete="off"></el-input></el-form-item>
-      </el-col>
-      <el-col :span="12">
-        <el-form-item  label="接入光伏场站数" prop="jrnumber"><el-input class="inputs" v-model.trim="form.jrnumber" autocomplete="off"></el-input></el-form-item>
-      </el-col>
-    </el-row>
-            <!-- "windnumber": 风电场站数量,
-        "number": 光伏场站数量,
-        "jrwindnumber": 接入风电场站数,
-        "jrnumber": 接入光伏场站数, -->
-    <el-row>
-      <el-col :span="12"><el-form-item  label="接入光伏装机数量组串" prop="jrquantityzc"><el-input class="inputs" v-model.trim="form.jrquantityzc" autocomplete="off"></el-input></el-form-item></el-col>
-      <el-col :span="12"></el-col>
-    </el-row>
+  <el-dialog :title="title" :visible.sync="dialogFormVisible" width="900px" @close="close" top="2%">
+    <el-form ref="form" :model="form" :rules="rules" label-width="170px">
+      <el-row>
+        <el-col :span="12">
+          <el-form-item :disabled="!idAdd ? true : false" label="编码" prop="id">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.id" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="公司名称" prop="name">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.name" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="公司名称" prop="cascaderSel" v-if="idAdd">
+            <el-cascader v-model="form.cascaderSel" :options="options" style="width: 240px"
+              :props="{ checkStrictly: true, label: 'name', value: 'id', children: 'children' }" clearable />
+          </el-form-item>
+        </el-col>
+
+        <el-col :span="12">
+          <el-form-item label="别名" prop="aname">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.aname" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="集团" prop="windpowerstationId" v-if="!idAdd">
+            <el-input class="inputs" v-model="form.group" disabled></el-input>
+          </el-form-item>
+        </el-col>
+
+        <el-col :span="12">
+          <el-form-item label="区域" prop="windpowerstationId" v-if="!idAdd">
+            <el-input class="inputs" v-model="form.region" disabled></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <!-- 风电 -->
+      <el-divider><span>风电信息</span></el-divider>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="风电装机容量" prop="windCapacity">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.windCapacity" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="风电场站数量" prop="windNumber">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.windNumber" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="风电容量单位" prop="windCapacityUnit">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.windCapacityUnit" autocomplete="off">
+            </el-input>
+          </el-form-item>
+        </el-col>
+        <!-- <el-col :span="12">
+          <el-form-item label="风电装机数量" prop="windquantity">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.windquantity" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col> -->
+        <el-col :span="12">
+          <el-form-item label="风电装机数量海上" prop="windQuantityHs">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.windQuantityHs" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="风电装机数量陆地" prop="windQuantityLd">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.windQuantityLd" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="接入风电装机容量" prop="jrwindCapacity">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrwindCapacity" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="接入风电容量单位" prop="jrwindCapacityUnit">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrwindCapacityUnit" autocomplete="off">
+            </el-input>
+          </el-form-item>
+        </el-col>
+        <!-- <el-col :span="12">
+          <el-form-item label="接入风电装机数量" prop="jrwindquantity">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrwindquantity" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col> -->
+        <el-col :span="12">
+          <el-form-item label="接入风电装机数量海上" prop="jrwindQuantityHs">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrwindQuantityHs" autocomplete="off">
+            </el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="接入风电装机数量陆地" prop="jrwindQuantityLd">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrwindQuantityLd" autocomplete="off">
+            </el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="接入风电场站数" prop="jrWindNumber">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrWindNumber" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <!-- 光伏 -->
+      <el-divider><span>光伏信息</span></el-divider>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="光伏容量单位" prop="capacityUnit">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.capacityUnit" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="光伏装机容量" prop="capacity">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.capacity" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="光伏装机数量集中" prop="quantityJz">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.quantityJz" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="光伏装机数量组串" prop="quantityZc">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.quantityZc" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="接入光伏装机容量" prop="jrCapacity">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrCapacity" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="接入光伏容量单位" prop="jrCapacityUnit">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrCapacityUnit" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="接入光伏装机数量集中" prop="jrquantityJz">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrquantityJz" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="光伏场站数量" prop="number">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.number" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="接入光伏场站数" prop="jrNumber">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrNumber" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="接入光伏装机数量组串" prop="jrquantityZc">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrquantityZc" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
     </el-form>
     <div slot="footer" class="dialog-footer">
       <el-button @click="close">取 消</el-button>
@@ -111,50 +180,60 @@ export default {
   data() {
     return {
       form: {
+        cascaderSel: [],
         id: '',
         name: '',
         aname: '',
-        windcapacity: '',
-        windcapacityunit: '',
-        windquantity: '',
+        windCapacity: '',
+        windCapacityUnit: '',
+        // windquantity: '',
+        windQuantityHs: '',
+        windQuantityLd: '',
         capacity: '',
-        capacityunit: '',
-        quantityjz: '',
-        quantityzc: '',
-        jrwindcapacity: '',
-        jrwindcapacityunit: '',
-        jrwindquantity: '',
-        jrcapacity: '',
-        jrcapacityunit: '',
-        jrquantityjz: '',
-        jrquantityzc: '',
-        windnumber: '',
+        capacityUnit: '',
+        quantityJz: '',
+        quantityZc: '',
+        jrwindCapacity: '',
+        jrwindCapacityUnit: '',
+        // jrwindquantity: '',
+        jrwindQuantityHs: '',
+        jrwindQuantityLd: '',
+        jrCapacity: '',
+        jrCapacityUnit: '',
+        jrquantityJz: '',
+        jrquantityZc: '',
+        windNumber: '',
         number: '',
-        jrwindnumber: '',
-        jrnumber: '',
+        jrWindNumber: '',
+        jrNumber: '',
       },
       rules: {
         id: [{ required: true, trigger: 'blur', message: '请输入' }],
         name: [{ required: true, trigger: 'blur', message: '请输入' }],
         aname: [{ required: true, trigger: 'blur', message: '请输入' }],
-        windcapacity: [{ required: true, trigger: 'blur', message: '请输入' }],
-        windcapacityunit: [{ required: true, trigger: 'blur', message: '请输入' }],
-        windquantity: [{ required: true, trigger: 'blur', message: '请输入' }],
+        cascaderSel: [{ required: true, trigger: 'blur', message: '请选择场站' }],
+        windCapacity: [{ required: true, trigger: 'blur', message: '请输入' }],
+        windCapacityUnit: [{ required: true, trigger: 'blur', message: '请输入' }],
+        // windquantity: [{ required: true, trigger: 'blur', message: '请输入' }],
+        windQuantityHs: [{ required: true, trigger: 'blur', message: '请输入' }],
+        windQuantityLd: [{ required: true, trigger: 'blur', message: '请输入' }],
         capacity: [{ required: true, trigger: 'blur', message: '请输入' }],
-        capacityunit: [{ required: true, trigger: 'blur', message: '请输入' }],
-        quantityjz: [{ required: true, trigger: 'blur', message: '请输入' }],
-        quantityzc: [{ required: true, trigger: 'blur', message: '请输入' }],
-        jrwindcapacity: [{ required: true, trigger: 'blur', message: '请输入' }],
-        jrwindcapacityunit: [{ required: true, trigger: 'blur', message: '请输入' }],
-        jrwindquantity: [{ required: true, trigger: 'blur', message: '请输入' }],
-        jrcapacity: [{ required: true, trigger: 'blur', message: '请输入' }],
-        jrcapacityunit: [{ required: true, trigger: 'blur', message: '请输入' }],
-        jrquantityjz: [{ required: true, trigger: 'blur', message: '请输入' }],
-        jrquantityzc: [{ required: true, trigger: 'blur', message: '请输入' }],
-        windnumber: [{ required: true, trigger: 'blur', message: '请输入' }],
+        capacityUnit: [{ required: true, trigger: 'blur', message: '请输入' }],
+        quantityJz: [{ required: true, trigger: 'blur', message: '请输入' }],
+        quantityZc: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrwindCapacity: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrwindCapacityUnit: [{ required: true, trigger: 'blur', message: '请输入' }],
+        // jrwindquantity: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrwindQuantityHs: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrwindQuantityLd: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrCapacity: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrCapacityUnit: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrquantityJz: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrquantityZc: [{ required: true, trigger: 'blur', message: '请输入' }],
+        windNumber: [{ required: true, trigger: 'blur', message: '请输入' }],
         number: [{ required: true, trigger: 'blur', message: '请输入' }],
-        jrwindnumber: [{ required: true, trigger: 'blur', message: '请输入' }],
-        jrnumber: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrWindNumber: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrNumber: [{ required: true, trigger: 'blur', message: '请输入' }],
       },
       title: '',
       dialogFormVisible: false,
@@ -183,6 +262,12 @@ export default {
     save() {
       this.$refs['form'].validate(async (valid) => {
         if (valid) {
+          if (!this.form.groupId) {
+            this.form.groupId = this.form.cascaderSel[0]
+          }
+          if (!this.form.regionId) {
+            this.form.regionId = this.form.cascaderSel[1]
+          }
           api.addCompanys(this.form).then(res => {
             if (res.data) {
               this.$message({

+ 127 - 68
src/views/stationConfiguration/company/index.vue

@@ -3,11 +3,17 @@
     <vab-query-form>
       <vab-query-form-left-panel>
         <el-form ref="form" :model="queryForm" :inline="true" @submit.native.prevent>
-          <el-form-item>
+          <el-form-item label="公司名称">
             <el-input v-model="fuzzyQuery" placeholder="请输入" clearable />
+            <!-- <el-cascader 
+              v-model="fuzzyQuery" 
+              :options="options" 
+              style="width: 240px" 
+              :props="{ checkStrictly: true, label: 'name', value: 'id' , children:'children1' }" 
+              clearable /> -->
           </el-form-item>
           <el-form-item>
-            <el-button icon="el-icon-search" type="primary" native-type="submit" @click="fetchData">
+            <el-button icon="el-icon-search" type="primary" native-type="submit" @click="handleQuery">
               查询
             </el-button>
           </el-form-item>
@@ -21,34 +27,69 @@
           删除
         </el-button>
         <UploadExcel style="margin-left: 10px;" @getResult="getMyExcelData"></UploadExcel>
-        <ExportExcel :exportList="exportExcel" :useType="'export'" partsName="公司"></ExportExcel>
+        <ExportExcel :exportList="list" :useType="'export'" partsName="公司"></ExportExcel>
         <ExportExcel :exportList="templateExcel" :useType="'template'" partsName="公司模板"></ExportExcel>
       </vab-query-form-right-panel>
     </vab-query-form>
     <el-table ref="tableSort" v-loading="listLoading" :data="list" :element-loading-text="elementLoadingText"
-      :height="height" @selection-change="setSelectRows">
-      <el-table-column show-overflow-tooltip type="selection" width="55"></el-table-column>
-      <el-table-column show-overflow-tooltip label="id" prop="id" align="center" sortable fixed="left"></el-table-column>
-      <el-table-column width="120" show-overflow-tooltip label="公司名称" prop="name" align="center" sortable fixed="left"></el-table-column>
-      <el-table-column width="120" show-overflow-tooltip label="别名" prop="aname" align="center" sortable></el-table-column>
-      <el-table-column width="130" show-overflow-tooltip label="风电装机容量" prop="windcapacity" align="center" sortable></el-table-column>
-      <el-table-column width="130" show-overflow-tooltip label="风电容量单位" prop="windcapacityunit" align="center" sortable></el-table-column>
-      <el-table-column width="130" show-overflow-tooltip label="风电装机数量" prop="windquantity" align="center" sortable></el-table-column>
-      <el-table-column width="150" show-overflow-tooltip label="风电场站数量" prop="windnumber" align="center" sortable></el-table-column>
-      <el-table-column width="150" show-overflow-tooltip label="接入风电场站数" prop="jrwindnumber" align="center" sortable></el-table-column>
-      <el-table-column width="150" show-overflow-tooltip label="光伏场站数量" prop="number" align="center" sortable></el-table-column>
-      <el-table-column width="130" show-overflow-tooltip label="光伏装机容量" prop="capacity" align="center" sortable></el-table-column>
-      <el-table-column width="130" show-overflow-tooltip label="光伏容量单位" prop="capacityunit" align="center" sortable></el-table-column>
-      <el-table-column width="170" show-overflow-tooltip label="光伏装机数量集中" prop="quantityjz" align="center" sortable></el-table-column>
-      <el-table-column width="170" show-overflow-tooltip label="光伏装机数量组串" prop="quantityzc" align="center" sortable></el-table-column>
-      <el-table-column width="150" show-overflow-tooltip label="接入光伏场站数" prop="jrnumber" align="center" sortable></el-table-column>
-      <el-table-column width="170" show-overflow-tooltip label="接入风电装机容量2" prop="jrwindcapacity" align="center" sortable></el-table-column>
-      <el-table-column width="170" show-overflow-tooltip label="接入风电容量单位2" prop="jrwindcapacityunit" align="center" sortable></el-table-column>
-      <el-table-column width="170" show-overflow-tooltip label="接入风电装机数量2" prop="jrwindquantity" align="center" sortable></el-table-column>
-      <el-table-column width="170" show-overflow-tooltip label="接入光伏装机容量2" prop="jrcapacity" align="center" sortable></el-table-column>
-      <el-table-column width="170" show-overflow-tooltip label="接入光伏容量单位2" prop="jrcapacityunit" align="center" sortable></el-table-column>
-      <el-table-column width="190" show-overflow-tooltip label="接入光伏装机数量集中" prop="jrquantityjz" align="center" sortable></el-table-column>
-      <el-table-column width="190" show-overflow-tooltip label="接入光伏装机数量组串" prop="jrquantityzc" align="center" sortable></el-table-column>
+      header-cell-class-name="table_header_style" border :height="height" @selection-change="setSelectRows">
+      <el-table-column show-overflow-tooltip type="selection" width="55" align="center"></el-table-column>
+      <el-table-column show-overflow-tooltip label="编码" prop="id" align="center" sortable fixed="left">
+      </el-table-column>
+      <el-table-column width="120" show-overflow-tooltip label="公司名称" prop="name" align="left" sortable fixed="left">
+      </el-table-column>
+      <el-table-column width="120" show-overflow-tooltip label="别名" prop="aname" align="left" sortable>
+      </el-table-column>
+      <el-table-column width="120" show-overflow-tooltip label="集团" prop="group" align="left" sortable>
+      </el-table-column>
+      <el-table-column width="120" show-overflow-tooltip label="区域" prop="region" align="left" sortable>
+      </el-table-column>
+      <el-table-column width="130" show-overflow-tooltip label="风电装机容量" prop="windCapacity" align="center" sortable>
+      </el-table-column>
+      <el-table-column width="130" show-overflow-tooltip label="风电容量单位" prop="windCapacityUnit" align="center" sortable>
+      </el-table-column>
+      <!-- <el-table-column width="130" show-overflow-tooltip label="风电装机数量" prop="windquantity" align="center" sortable>
+      </el-table-column> -->
+      <el-table-column width="160" show-overflow-tooltip label="风电装机数量海上" prop="windQuantityHs" align="center" sortable>
+      </el-table-column>
+      <el-table-column width="160" show-overflow-tooltip label="风电装机数量陆地" prop="windQuantityLd" align="center" sortable>
+      </el-table-column>
+      <el-table-column width="150" show-overflow-tooltip label="风电场站数量" prop="windNumber" align="center" sortable>
+      </el-table-column>
+      <el-table-column width="150" show-overflow-tooltip label="接入风电场站数" prop="jrWindNumber" align="center" sortable>
+      </el-table-column>
+      <el-table-column width="150" show-overflow-tooltip label="光伏场站数量" prop="number" align="center" sortable>
+      </el-table-column>
+      <el-table-column width="130" show-overflow-tooltip label="光伏装机容量" prop="capacity" align="center" sortable>
+      </el-table-column>
+      <el-table-column width="130" show-overflow-tooltip label="光伏容量单位" prop="capacityUnit" align="center" sortable>
+      </el-table-column>
+      <el-table-column width="170" show-overflow-tooltip label="光伏装机数量集中" prop="quantityJz" align="center" sortable>
+      </el-table-column>
+      <el-table-column width="170" show-overflow-tooltip label="光伏装机数量组串" prop="quantityZc" align="center" sortable>
+      </el-table-column>
+      <el-table-column width="150" show-overflow-tooltip label="接入光伏场站数" prop="jrNumber" align="center" sortable>
+      </el-table-column>
+      <el-table-column width="170" show-overflow-tooltip label="接入风电装机容量" prop="jrwindCapacity" align="center" sortable>
+      </el-table-column>
+      <el-table-column width="170" show-overflow-tooltip label="接入风电容量单位" prop="jrwindCapacityUnit" align="center"
+        sortable></el-table-column>
+      <!-- <el-table-column width="170" show-overflow-tooltip label="接入风电装机数量" prop="jrwindquantity" align="center" sortable>
+      </el-table-column> -->
+      <el-table-column width="180" show-overflow-tooltip label="接入风电装机数量海上" prop="jrwindQuantityHs" align="center"
+        sortable>
+      </el-table-column>
+      <el-table-column width="180" show-overflow-tooltip label="接入风电装机数量陆地" prop="jrwindQuantityLd" align="center"
+        sortable>
+      </el-table-column>
+      <el-table-column width="170" show-overflow-tooltip label="接入光伏装机容量" prop="jrCapacity" align="center" sortable>
+      </el-table-column>
+      <el-table-column width="170" show-overflow-tooltip label="接入光伏容量单位" prop="jrCapacityUnit" align="center" sortable>
+      </el-table-column>
+      <el-table-column width="190" show-overflow-tooltip label="接入光伏装机数量集中" prop="jrquantityJz" align="center" sortable>
+      </el-table-column>
+      <el-table-column width="190" show-overflow-tooltip label="接入光伏装机数量组串" prop="jrquantityZc" align="center" sortable>
+      </el-table-column>
       <el-table-column show-overflow-tooltip label="操作" width="100px" fixed="right">
         <template #default="{ row }">
           <el-button type="text" @click="handleEdit(row)">编辑</el-button>
@@ -67,6 +108,7 @@ import UploadExcel from '@/components/UploadExcel/index'
 import ExportExcel from '@/components/ExportExcel/index'
 import TableEdit from './components/TableEdit'
 import api from '@/api/station'
+import apis from '@/api/table'
 export default {
   components: {
     UploadExcel,
@@ -79,7 +121,6 @@ export default {
       listLoading: true,
       list: [],
       options: [],
-      exportExcel: [],
       templateExcel: [],
       elementLoadingText: '正在加载...',
       selectRows: '',
@@ -94,7 +135,7 @@ export default {
     };
   },
   created() {
-    this.fetchData()
+    this.getTree()
   },
   computed: {
     height() {
@@ -102,6 +143,31 @@ export default {
     },
   },
   methods: {
+    handleQuery() {
+      this.queryForm.pageNo = 1
+      this.fetchData()
+    },
+    getTree() {
+      apis.newtreeTreels({ tag: 1 }).then(res => {
+        if (res.data) {
+          this.options = res.data
+          this.fetchData()
+        }
+      })
+    },
+    stationFind(data, id) {
+      let res = null
+      for (let i = 0; i < data.length; i++) {
+        if (data[i].id === id) {
+          res = data[i]
+          return data[i]
+        } else if (data[i].children && data[i].children.length > 0) {
+          res = this.stationFind(data[i].children, id)
+        }
+        if (res) break
+      }
+      return res
+    },
     getMyExcelData(val) {
       val.forEach(item => {
         api.addCompanys(item).then(res => {
@@ -127,51 +193,44 @@ export default {
         if (res.data) {
           this.listLoading = false
           this.total = res.data.total
+          res.data.records.forEach(item => {
+            // console.log(this.options, item.groupId);
+            let obj = this.stationFind(this.options, item.groupId)
+            let val = this.stationFind(this.options, item.regionId)
+            console.log(obj);
+            item.group = obj?.name
+            item.region = val?.name
+          })
           this.list = res.data.records
           this.templateExcel = [
             {
-              id: '',
-              name: '',
-              aname: '',
-              windcapacity: '',
-              windcapacityunit: '',
-              windquantity: '',
-              capacity: '',
-              capacityunit: '',
-              quantityjz: '',
-              quantityzc: '',
-              jrwindcapacity: '',
-              jrwindcapacityunit: '',
-              jrwindquantity: '',
-              jrcapacity: '',
-              jrcapacityunit: '',
-              jrquantityjz: '',
-              jrquantityzc: ''
+              id: "",
+              name: "",
+              aname: "",
+              windCapacity: "",
+              windCapacityUnit: "",
+              // windquantity: "",
+              windQuantityHs: "",
+              windQuantityLd: "",
+              windNumber: "",
+              jrWindNumber: "",
+              number: "",
+              capacity: "",
+              capacityUnit: "",
+              quantityJz: "",
+              quantityZc: "",
+              jrNumber: "",
+              jrwindCapacity: "",
+              jrwindCapacityUnit: "",
+              // jrwindquantity: "",
+              jrwindQuantityHs: "",
+              jrwindQuantityLd: "",
+              jrCapacity: "",
+              jrCapacityUnit: "",
+              jrquantityJz: "",
+              jrquantityZc: ""
             }
           ]
-          let exportExcel = []
-          res.data.records.forEach(item => {
-            exportExcel.push({
-              id: item.id,
-              name: item.name,
-              aname: item.aname,
-              windcapacity: item.windcapacity,
-              windcapacityunit: item.windcapacityunit,
-              windquantity: item.windquantity,
-              capacity: item.capacity,
-              capacityunit: item.capacityunit,
-              quantityjz: item.quantityjz,
-              quantityzc: item.quantityzc,
-              jrwindcapacity: item.jrwindcapacity,
-              jrwindcapacityunit: item.jrwindcapacityunit,
-              jrwindquantity: item.jrwindquantity,
-              jrcapacity: item.jrcapacity,
-              jrcapacityunit: item.jrcapacityunit,
-              jrquantityjz: item.jrquantityjz,
-              jrquantityzc:item.jrquantityzc
-            })
-          })
-          this.exportExcel = exportExcel
         }
       })
 

+ 178 - 0
src/views/stationConfiguration/equipmentmodel/components/TableEdit.vue

@@ -0,0 +1,178 @@
+<template>
+  <el-dialog :title="title" :visible.sync="dialogFormVisible" width="800px" @close="close">
+    <el-form ref="form" :model="form" :rules="rules" label-width="150px">
+      <div class="lists">
+        <el-form-item label="id" prop="id">
+          <el-input class="inputs" v-model="form.id" autocomplete="off" :disabled="!idAdd ? true : false"></el-input>
+        </el-form-item>
+        <el-form-item label="编码" prop="code">
+          <el-input class="inputs" v-model.trim="form.code" autocomplete="off"></el-input>
+        </el-form-item>
+      </div>
+      <div class="lists">
+        <el-form-item label="名称" prop="name">
+          <el-input class="inputs" v-model="form.name" autocomplete="off"></el-input>
+        </el-form-item>
+        <el-form-item label="描述" prop="description">
+          <el-input class="inputs" v-model="form.description" autocomplete="off"></el-input>
+        </el-form-item>
+      </div>
+      <div class="lists">
+        <el-form-item label="容量" prop="powerproduction">
+          <el-input class="inputs" v-model.trim="form.powerproduction" autocomplete="off"></el-input>
+        </el-form-item>
+        <el-form-item label="厂商编号" prop="windturbinemanufacturerid">
+          <el-input class="inputs" v-model.trim="form.windturbinemanufacturerid" autocomplete="off"></el-input>
+        </el-form-item>
+      </div>
+      <div class="lists">
+        <el-form-item label="图片" prop="photo">
+          <el-input class="inputs" v-model="form.photo" autocomplete="off">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="传输总发电量单位" prop="unit">
+          <el-input class="inputs" v-model.trim="form.unit" autocomplete="off"></el-input>
+        </el-form-item>
+      </div>
+      <div class="lists">
+        <el-form-item label="切入风速" prop="cutinwindspeed">
+          <el-input class="inputs" v-model="form.cutinwindspeed" autocomplete="off"></el-input>
+        </el-form-item>
+        <el-form-item label="额定风速" prop="ratedwindspeed">
+          <el-input class="inputs" v-model.trim="form.ratedwindspeed" autocomplete="off"></el-input>
+        </el-form-item>
+      </div>
+      <div class="lists">
+        <el-form-item label="切出风速" prop="cutoutwindspeed">
+          <el-input class="inputs" v-model="form.cutoutwindspeed" autocomplete="off">
+          </el-input>
+        </el-form-item>
+        <el-form-item label="叶片切入面积" prop="sweptarea">
+          <el-input class="inputs" v-model.trim="form.sweptarea" autocomplete="off"></el-input>
+        </el-form-item>
+      </div>
+      <div class="lists">
+        <el-form-item label="设备类别" prop="equipmentcategory">
+          <el-input class="inputs" v-model="form.equipmentcategory" autocomplete="off">
+          </el-input>
+        </el-form-item>
+      </div>
+    </el-form>
+    <div slot="footer" class="dialog-footer">
+      <el-button @click="close">取 消</el-button>
+      <el-button type="primary" @click="save">确 定</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+import api from '@/api/station'
+import dayjs from "dayjs";
+export default {
+  name: 'TableEdit',
+  props: {
+    options: {
+      type: Array,
+      default: []
+    },
+    stationList: {
+      type: Array,
+      default: []
+    },
+  },
+  data() {
+    return {
+      form: {
+        id: '',
+        code: '',
+        name: '',
+        description: '',
+        powerproduction: '',
+        windturbinemanufacturerid: '',
+        photo: '',
+        unit: '',
+        cutinwindspeed: '',
+        ratedwindspeed: '',
+        cutoutwindspeed: '',
+        sweptarea: '',
+        equipmentcategory: '',
+      },
+      rules: {
+        id: [{ required: true, trigger: 'blur', message: '请输入' }],
+        code: [{ required: true, trigger: 'blur', message: '请输入' }],
+        name: [{ required: true, trigger: 'blur', message: '请输入' }],
+        description: [{ required: true, trigger: 'blur', message: '请输入' }],
+        powerproduction: [{ required: true, trigger: 'blur', message: '请输入' }],
+        windturbinemanufacturerid: [{ required: true, trigger: 'blur', message: '请输入' }],
+        photo: [{ required: true, trigger: 'blur', message: '请输入' }],
+        unit: [{ required: true, trigger: 'blur', message: '请输入' }],
+        cutinwindspeed: [{ required: true, trigger: 'blur', message: '请输入' }],
+        ratedwindspeed: [{ required: true, trigger: 'blur', message: '请输入' }],
+        cutoutwindspeed: [{ required: true, trigger: 'blur', message: '请输入' }],
+        sweptarea: [{ required: true, trigger: 'blur', message: '请输入' }],
+        equipmentcategory: [{ required: true, trigger: 'blur', message: '请输入' }],
+      },
+      title: '',
+      dialogFormVisible: false,
+      idAdd: true,
+    }
+  },
+  created() { },
+  methods: {
+    showEdit(row) {
+      if (!row) {
+        this.title = '添加'
+        this.idAdd = true
+      } else {
+        this.title = '编辑'
+        this.idAdd = false
+        this.form = Object.assign({}, row)
+      }
+      this.dialogFormVisible = true
+    },
+    close() {
+      this.$refs['form'].resetFields()
+      this.form = this.$options.data().form
+      this.dialogFormVisible = false
+      this.$emit('fetch-data')
+    },
+    save() {
+      this.$refs['form'].validate(async (valid) => {
+        if (valid) {
+          api.addEquipmentmodel(this.form).then(res => {
+            if (res.data) {
+              this.$message({
+                type: 'success',
+                message: '添加成功!'
+              });
+              this.$emit('save-success');
+              this.dialogFormVisible = false
+            }
+          })
+        } else {
+          return false
+        }
+      })
+    },
+    handleChange() {
+    },
+    onBlur(val, param) {
+      if (typeof (this.form[param]) !== 'number') {
+        this.form[param] = val.replace(/[^0-9]/ig, "")
+      }
+    },
+  },
+}
+</script>
+<style lang="less" scoped>
+.inputs {
+  width: 200px;
+}
+
+.lists {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  justify-content: space-between;
+}
+</style>

+ 250 - 0
src/views/stationConfiguration/equipmentmodel/index.vue

@@ -0,0 +1,250 @@
+<template>
+	<div class="table-container">
+		<vab-query-form>
+			<div class="title">
+				<div class="left">
+					<div class="left-item">
+						<div style="width: 70px;">名称:</div>
+						<el-input v-model="fuzzyQuery_name" placeholder="请输入" clearable />
+					</div>
+					<el-button icon="el-icon-search" type="primary" native-type="submit" @click="handleQuery">
+						查询
+					</el-button>
+				</div>
+				<div class="right">
+					<el-button icon="el-icon-plus" type="primary" @click="handleAdd">
+						添加
+					</el-button>
+					<el-button icon="el-icon-delete" type="danger" @click="handleDelete">
+						删除
+					</el-button>
+					<UploadExcel style="margin-left: 10px;" @getResult="getMyExcelData"></UploadExcel>
+					<ExportExcel :exportList="exportExcel" :useType="'export'" partsName="设备型号"></ExportExcel>
+					<ExportExcel :exportList="templateExcel" :useType="'template'" partsName="设备型号模板"></ExportExcel>
+				</div>
+			</div>
+			<el-table header-cell-class-name="table_header_style" border ref="tableSort" v-loading="listLoading" :data="list"
+				:element-loading-text="elementLoadingText" :height="height" @selection-change="setSelectRows">
+				<el-table-column show-overflow-tooltip type="selection" align="center" width="40"></el-table-column>
+				<el-table-column show-overflow-tooltip label="id" prop="id" align="center" sortable></el-table-column>
+				<el-table-column show-overflow-tooltip label="编码" prop="code" align="center" sortable></el-table-column>
+				<el-table-column show-overflow-tooltip label="名称" prop="name" align="center" sortable></el-table-column>
+				<el-table-column show-overflow-tooltip label="描述" prop="description" align="center" sortable></el-table-column>
+				<el-table-column show-overflow-tooltip label="容量" prop="powerproduction" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="厂商编号" prop="windturbinemanufacturerid" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="图片" prop="photo" align="center" sortable>
+				</el-table-column>
+				<el-table-column width="180" show-overflow-tooltip label="传输总发电量单位" prop="unit" align="center" sortable></el-table-column>
+				<el-table-column show-overflow-tooltip label="切入风速" prop="cutinwindspeed" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="额定风速" prop="ratedwindspeed" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="切出风速" prop="cutoutwindspeed" align="center" sortable>
+				</el-table-column>
+				<el-table-column width="150" show-overflow-tooltip label="叶片切入面积" prop="sweptarea" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="设备类别" prop="equipmentcategory" align="center" sortable>
+				</el-table-column>
+				<el-table-column show-overflow-tooltip label="操作" width="100px" fixed="right">
+					<template #default="{ row }">
+						<el-button type="text" @click="handleEdit(row)">编辑</el-button>
+						<el-button type="text" @click="handleDelete(row)">删除</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<el-pagination :background="background" :current-page="queryForm.pageNo" :layout="layout"
+				:page-size="queryForm.pageSize" :total="total" @current-change="handleCurrentChange"
+				@size-change="handleSizeChange"></el-pagination>
+			<table-edit ref="edit" :options="options" :stationList="stationList" @save-success="fetchData"></table-edit>
+		</vab-query-form>
+	</div>
+</template>
+<script>
+import UploadExcel from '@/components/UploadExcel/index'
+import ExportExcel from '@/components/ExportExcel/index'
+import api from '@/api/station'
+import TableEdit from './components/TableEdit'
+export default {
+	components: {
+		UploadExcel,
+		ExportExcel,
+		TableEdit,
+	},
+	data() {
+		return {
+			fuzzyQuery_name: '',
+			listLoading: true,
+			list: [],
+			options: [],
+			exportExcel: [],
+			templateExcel: [],
+			elementLoadingText: '正在加载...',
+			selectRows: '',
+			layout: 'total, sizes, prev, pager, next, jumper',
+			total: 0,
+			background: true,
+			exportList: [],
+			queryForm: {
+				pageNo: 1,
+				pageSize: 20,
+			},
+			stationList: [],
+			selectValue: ''
+		};
+	},
+	computed: {
+		height() {
+			return this.$baseTableHeight() + 50
+		},
+	},
+	created() {
+		// this.getStation()
+		this.fetchData()
+	},
+	methods: {
+		handleQuery() {
+			this.queryForm.pageNo = 1
+			this.fetchData()
+		},
+		getMyExcelData(val) {
+			val.forEach(item => {
+				api.addEquipmentmodel(item).then(res => {
+					if (res.code == 200) {
+						this.$message({
+							type: 'success',
+							message: '添加成功!'
+						});
+						this.fetchData()
+					}
+				})
+			})
+		},
+		getStation() {
+			api.windpowerstationList({
+				id: '',
+				name: '',
+				companyid: '',
+				pageNum: 1,
+				pageSize: 1000,
+			}).then(res => {
+				if (res.data) {
+					this.listLoading = false
+					this.stationList = res.data.records
+				}
+			})
+		},
+		fetchData() {
+			api.equipmentmodel({
+				name: this.fuzzyQuery_name,
+				pageNum: this.queryForm.pageNo,
+				pageSize: this.queryForm.pageSize,
+			}).then(res => {
+				if (res.data) {
+					this.listLoading = false
+					this.total = res.data.total
+					this.list = res.data.records
+					this.templateExcel = [
+						{
+							id: '',
+							code: '',
+							name: '',
+							description: '',
+							powerproduction: '',
+							windturbinemanufacturerid: '',
+							photo: '',
+							unit: '',
+							cutinwindspeed: '',
+							ratedwindspeed: '',
+							cutoutwindspeed: '',
+							sweptarea: '',
+							equipmentcategory: '',
+						}
+					]
+					// 导出
+					let exportExcel = []
+					res.data.records.forEach(item => {
+						exportExcel.push({
+							id: item.id,
+							code: item.code,
+							name: item.name,
+							description: item.description,
+							powerproduction: item.powerproduction,
+							windturbinemanufacturerid: item.windturbinemanufacturerid,
+							photo: item.photo,
+							unit: item.unit,
+							cutinwindspeed: item.cutinwindspeed,
+							ratedwindspeed: item.ratedwindspeed,
+							cutoutwindspeed: item.cutoutwindspeed,
+							sweptarea: item.sweptarea,
+							equipmentcategory: item.equipmentcategory,
+						})
+					})
+					this.exportExcel = exportExcel
+				}
+			})
+		},
+		handleSizeChange(val) {
+			this.queryForm.pageSize = val
+			this.fetchData()
+		},
+		handleCurrentChange(val) {
+			this.queryForm.pageNo = val
+			this.fetchData()
+		},
+		handleAdd() {
+			this.$refs['edit'].showEdit()
+		},
+		handleEdit(row) {
+			this.$refs['edit'].showEdit(row)
+		},
+		handleDelete(row) {
+			if (row.id || this.selectRows.length > 0) {
+				this.$baseConfirm('你确定要删除吗', null, async () => {
+					let ids = ''
+					if (this.selectRows.length > 0) {
+						ids = this.selectRows.map((item) => item.id).join()
+					}
+					api.deleteEquipmentmodel({
+						id: row.id || ids
+					}).then(res => {
+						if (res.data) {
+							this.$baseMessage('删除成功', 'success')
+							this.fetchData()
+						}
+					})
+				})
+			} else {
+				this.$baseMessage('未选中任何行', 'error')
+				return false
+			}
+		},
+		setSelectRows(val) {
+			this.selectRows = val
+		},
+	},
+}
+</script>
+<style lang="less" scoped>
+.title {
+	display: flex;
+	flex-direction: row;
+	align-items: center;
+	justify-content: space-between;
+	margin-bottom: 20px;
+}
+
+.left {
+	display: flex;
+	flex-direction: row;
+	align-items: center;
+
+	.left-item {
+		display: flex;
+		flex-direction: row;
+		align-items: center;
+		margin-right: 10px;
+	}
+}
+</style>

+ 256 - 0
src/views/stationConfiguration/group/components/TableEdit.vue

@@ -0,0 +1,256 @@
+<template>
+  <el-dialog :title="title" :visible.sync="dialogFormVisible" width="900px" @close="close" top="2%">
+    <el-form ref="form" :model="form" :rules="rules" label-width="170px">
+      <el-row>
+        <el-col :span="12">
+          <el-form-item :disabled="!idAdd ? true : false" label="编码" prop="id">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.id" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="名称" prop="name">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.name" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="别名" prop="aname">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.aname" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <!-- 风电 -->
+      <el-divider><span>风电信息</span></el-divider>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="风电装机容量" prop="windCapacity">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.windCapacity" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="风电场站数量" prop="windNumber">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.windNumber" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="风电容量单位" prop="windCapacityUnit">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.windCapacityUnit" autocomplete="off">
+            </el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="风电装机数量海上" prop="windQuantityHs">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.windQuantityHs" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="风电装机数量陆地" prop="windQuantityLd">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.windQuantityLd" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="接入风电装机容量" prop="jrwindCapacity">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrwindCapacity" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="接入风电容量单位" prop="jrwindCapacityUnit">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrwindCapacityUnit" autocomplete="off">
+            </el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="接入风电装机数量海上" prop="jrwindQuantityHs">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrwindQuantityHs" autocomplete="off">
+            </el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="接入风电装机数量陆地" prop="jrwindQuantityLd">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrwindQuantityLd" autocomplete="off">
+            </el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="接入风电场站数" prop="jrWindNumber">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrWindNumber" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <!-- 光伏 -->
+      <el-divider><span>光伏信息</span></el-divider>
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="光伏装机容量" prop="capacity">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.capacity" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="光伏容量单位" prop="capacityUnit">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.capacityUnit" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+
+        <el-col :span="12">
+          <el-form-item label="光伏装机数量集中" prop="quantityJz">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.quantityJz" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="光伏装机数量组串" prop="quantityZc">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.quantityZc" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="接入光伏装机容量" prop="jrCapacity">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrCapacity" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="接入光伏容量单位" prop="jrCapacityUnit">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrCapacityUnit" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="光伏场站数量" prop="number">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.number" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="接入光伏场站数" prop="jrNumber">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrNumber" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="接入光伏装机数量集中" prop="jrquantityJz">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrquantityJz" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="接入光伏装机数量组串" prop="jrquantityZc">
+            <el-input placeholder="请输入" class="inputs" v-model.trim="form.jrquantityZc" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+    <div slot="footer" class="dialog-footer">
+      <el-button @click="close">取 消</el-button>
+      <el-button type="primary" @click="save">确 定</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+import api from '@/api/station'
+import axios from "axios";
+export default {
+  name: 'TableEdit',
+  props: {
+    options: {
+      type: Array,
+      default: []
+    },
+  },
+  data() {
+    return {
+      form: {
+        id: '',
+        name: '',
+        aname: '',
+        windCapacity: '',
+        windCapacityUnit: '',
+        windQuantityHs: '',
+        windQuantityLd: '',
+        capacity: '',
+        capacityUnit: '',
+        quantityJz: '',
+        quantityZc: '',
+        jrwindCapacity: '',
+        jrwindCapacityUnit: '',
+        jrwindQuantityHs: '',
+        jrwindQuantityLd: '',
+        jrCapacity: '',
+        jrCapacityUnit: '',
+        jrquantityJz: '',
+        jrquantityZc: '',
+        windNumber: '',
+        number: '',
+        jrWindNumber: '',
+        jrNumber: '',
+      },
+      rules: {
+        id: [{ required: true, trigger: 'blur', message: '请输入' }],
+        name: [{ required: true, trigger: 'blur', message: '请输入' }],
+        aname: [{ required: true, trigger: 'blur', message: '请输入' }],
+        windCapacity: [{ required: true, trigger: 'blur', message: '请输入' }],
+        windCapacityUnit: [{ required: true, trigger: 'blur', message: '请输入' }],
+        windQuantityHs: [{ required: true, trigger: 'blur', message: '请输入' }],
+        windQuantityLd: [{ required: true, trigger: 'blur', message: '请输入' }],
+        capacity: [{ required: true, trigger: 'blur', message: '请输入' }],
+        capacityUnit: [{ required: true, trigger: 'blur', message: '请输入' }],
+        quantityJz: [{ required: true, trigger: 'blur', message: '请输入' }],
+        quantityZc: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrwindCapacity: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrwindCapacityUnit: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrwindQuantityHs: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrwindQuantityLd: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrCapacity: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrCapacityUnit: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrquantityJz: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrquantityZc: [{ required: true, trigger: 'blur', message: '请输入' }],
+        windNumber: [{ required: true, trigger: 'blur', message: '请输入' }],
+        number: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrWindNumber: [{ required: true, trigger: 'blur', message: '请输入' }],
+        jrNumber: [{ required: true, trigger: 'blur', message: '请输入' }],
+      },
+      title: '',
+      dialogFormVisible: false,
+      idAdd: true,
+    }
+  },
+  created() { },
+  methods: {
+    showEdit(row) {
+      if (!row) {
+        this.title = '添加'
+        this.idAdd = true
+      } else {
+        this.title = '编辑'
+        this.idAdd = false
+        this.form = Object.assign({}, row)
+      }
+      this.dialogFormVisible = true
+    },
+    close() {
+      this.$refs['form'].resetFields()
+      this.form = this.$options.data().form
+      this.dialogFormVisible = false
+      this.$emit('fetch-data')
+    },
+    save() {
+      this.$refs['form'].validate(async (valid) => {
+        if (valid) {
+          api.addGroup(this.form).then(res => {
+            if (res.data) {
+              this.$message({
+                type: 'success',
+                message: '添加成功!'
+              });
+              this.$emit('save-success');
+              this.dialogFormVisible = false
+            }
+          })
+        } else {
+          return false
+        }
+      })
+    },
+    handleChange() {
+    },
+  },
+}
+</script>
+<style lang="less" scoped>
+.inputs {
+  width: 200px;
+}
+</style>

+ 258 - 0
src/views/stationConfiguration/group/index.vue

@@ -0,0 +1,258 @@
+<template>
+  <div class="table-container">
+    <vab-query-form>
+      <div class="title">
+        <div class="left">
+          <div class="left-item">
+            <div style="width: 70px;">名称:</div>
+            <el-input v-model="fuzzyQuery" placeholder="请输入" clearable />
+          </div>
+          <el-button icon="el-icon-search" type="primary" native-type="submit" @click="handleQuery">
+            查询
+          </el-button>
+        </div>
+        <div class="right">
+          <el-button icon="el-icon-plus" type="primary" @click="handleAdd">
+            添加
+          </el-button>
+          <el-button icon="el-icon-delete" type="danger" @click="handleDelete">
+            删除
+          </el-button>
+          <UploadExcel style="margin-left: 10px;" @getResult="getMyExcelData"></UploadExcel>
+          <ExportExcel :exportList="list" :useType="'export'" partsName="集团"></ExportExcel>
+          <ExportExcel :exportList="templateExcel" :useType="'template'" partsName="集团模板"></ExportExcel>
+        </div>
+      </div>
+      <el-table ref="tableSort" v-loading="listLoading" :data="list" :element-loading-text="elementLoadingText"
+        header-cell-class-name="table_header_style" border :height="height" @selection-change="setSelectRows">
+        <el-table-column show-overflow-tooltip type="selection" width="55" align="center"></el-table-column>
+        <el-table-column width="100" show-overflow-tooltip label="编码" prop="id" align="left" sortable fixed="left">
+        </el-table-column>
+        <el-table-column width="100" show-overflow-tooltip label="名称" prop="name" align="left" sortable fixed="left">
+        </el-table-column>
+        <el-table-column width="150" show-overflow-tooltip label="别名" prop="aname" align="left" sortable>
+        </el-table-column>
+        <!-- <el-table-column width="150" show-overflow-tooltip label="父编号" prop="parentid" align="center" sortable>
+        </el-table-column> -->
+        <el-table-column width="150" show-overflow-tooltip label="风电装机容量" prop="windCapacity" align="center" sortable>
+        </el-table-column>
+        <el-table-column width="150" show-overflow-tooltip label="风电容量单位" prop="windCapacityUnit" align="center"
+          sortable></el-table-column>
+        <el-table-column width="160" show-overflow-tooltip label="风电装机数量海上" prop="windQuantityHs" align="center"
+          sortable>
+        </el-table-column>
+        <el-table-column width="160" show-overflow-tooltip label="风电装机数量陆地" prop="windQuantityLd" align="center"
+          sortable>
+        </el-table-column>
+        <el-table-column width="150" show-overflow-tooltip label="风电场站数量" prop="windNumber" align="center" sortable>
+        </el-table-column>
+        <el-table-column width="150" show-overflow-tooltip label="接入风电场站数" prop="jrWindNumber" align="center" sortable>
+        </el-table-column>
+        <el-table-column width="180" show-overflow-tooltip label="接入风电装机数量海上" prop="jrwindQuantityHs" align="center"
+          sortable>
+        </el-table-column>
+        <el-table-column width="180" show-overflow-tooltip label="接入风电装机数量陆地" prop="jrwindQuantityLd" align="center"
+          sortable>
+        </el-table-column>
+        <el-table-column width="170" show-overflow-tooltip label="接入风电装机容量" prop="jrwindCapacity" align="center"
+          sortable></el-table-column>
+        <el-table-column width="170" show-overflow-tooltip label="接入风电容量单位" prop="jrwindCapacityUnit" align="center"
+          sortable></el-table-column>
+        <el-table-column width="150" show-overflow-tooltip label="光伏场站数量" prop="number" align="center" sortable>
+        </el-table-column>
+        <el-table-column width="150" show-overflow-tooltip label="光伏装机容量" prop="capacity" align="center" sortable>
+        </el-table-column>
+        <el-table-column width="170" show-overflow-tooltip label="光伏容量单位" prop="capacityUnit" align="center" sortable>
+        </el-table-column>
+        <el-table-column width="170" show-overflow-tooltip label="光伏装机数量集中" prop="quantityJz" align="center" sortable>
+        </el-table-column>
+        <el-table-column width="170" show-overflow-tooltip label="光伏装机数量组串" prop="quantityZc" align="center" sortable>
+        </el-table-column>
+        <el-table-column width="150" show-overflow-tooltip label="接入光伏场站数" prop="jrNumber" align="center" sortable>
+        </el-table-column>
+        <el-table-column width="170" show-overflow-tooltip label="接入光伏装机容量" prop="jrCapacity" align="center" sortable>
+        </el-table-column>
+        <el-table-column width="170" show-overflow-tooltip label="接入光伏容量单位" prop="jrCapacityUnit" align="center"
+          sortable></el-table-column>
+        <el-table-column width="190" show-overflow-tooltip label="接入光伏装机数量集中" prop="jrquantityJz" align="center"
+          sortable></el-table-column>
+        <el-table-column width="190" show-overflow-tooltip label="接入光伏装机数量组串" prop="jrquantityZc" align="center"
+          sortable></el-table-column>
+        <el-table-column show-overflow-tooltip label="操作" width="180px" fixed="right">
+          <template #default="{ row }">
+            <el-button type="text" @click="handleEdit(row)">编辑</el-button>
+            <el-button type="text" @click="handleDelete(row)">删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-pagination :background="background" :current-page="queryForm.pageNo" :layout="layout"
+        :page-size="queryForm.pageSize" :total="total" @current-change="handleCurrentChange"
+        @size-change="handleSizeChange"></el-pagination>
+      <table-edit ref="edit" :options="options" @save-success="fetchData"></table-edit>
+    </vab-query-form>
+  </div>
+</template>
+<script>
+import UploadExcel from '@/components/UploadExcel/index'
+import ExportExcel from '@/components/ExportExcel/index'
+import api from '@/api/station'
+import TableEdit from './components/TableEdit'
+export default {
+  components: {
+    UploadExcel,
+    ExportExcel,
+    TableEdit,
+  },
+  data() {
+    return {
+      fuzzyQuery: '',
+      listLoading: true,
+      list: [],
+      options: [],
+      exportExcel: [],
+      templateExcel: [],
+      elementLoadingText: '正在加载...',
+      selectRows: '',
+      layout: 'total, sizes, prev, pager, next, jumper',
+      total: 0,
+      background: true,
+      exportList: [],
+      queryForm: {
+        pageNo: 1,
+        pageSize: 20,
+      },
+      stationList: [],
+    };
+  },
+  computed: {
+    height() {
+      return this.$baseTableHeight() + 50
+    },
+  },
+  created() {
+    this.fetchData()
+  },
+  methods: {
+    handleQuery() {
+      this.queryForm.pageNo = 1
+      this.fetchData()
+    },
+    getMyExcelData(val) {
+      val.forEach(item => {
+        api.addGroup(item).then(res => {
+          if (res.code == 200) {
+            this.$message({
+              type: 'success',
+              message: '添加成功!'
+            });
+            this.fetchData()
+          }
+        })
+      })
+    },
+    fetchData() {
+      api.groupList({
+        id: '',
+        name: this.fuzzyQuery,
+        pageNum: this.queryForm.pageNo,
+        pageSize: this.queryForm.pageSize,
+      }).then(res => {
+        if (res.data) {
+          this.listLoading = false
+          this.total = res.data.total
+          this.list = res.data.records
+          this.templateExcel = [
+            {
+              id: '',
+              companyid: '',
+              parentid: '',
+              name: '',
+              aname: '',
+              windCapacity: '',
+              windCapacityUnit: '',
+              number: '',
+              capacity: '',
+              capacityUnit: '',
+              quantityJz: '',
+              quantityZc: '',
+              windQuantityHs: '',
+              windQuantityLd: '',
+              windNumber: '',
+              jrWindNumber: '',
+              jrwindQuantityHs: '',
+              jrwindQuantityLd: '',
+              jrwindCapacity: '',
+              jrwindCapacityUnit: '',
+              jrcapacity: '',
+              jrCapacityUnit: '',
+              jrquantityJz: '',
+              jrquantityZc: '',
+              jrNumber: '',
+            }
+          ]
+        }
+      })
+    },
+    handleSizeChange(val) {
+      this.queryForm.pageSize = val
+      this.fetchData()
+    },
+    handleCurrentChange(val) {
+      this.queryForm.pageNo = val
+      this.fetchData()
+    },
+    handleAdd() {
+      this.$refs['edit'].showEdit()
+    },
+    handleEdit(row) {
+      this.$refs['edit'].showEdit(row)
+    },
+    handleDelete(row) {
+      if (row.id || this.selectRows.length > 0) {
+        this.$baseConfirm('你确定要删除吗', null, async () => {
+          let ids = ''
+          if (this.selectRows.length > 0) {
+            ids = this.selectRows.map((item) => item.id).join()
+          }
+          api.deleteGroup({
+            id: row.id || ids
+          }).then(res => {
+            if (res.data) {
+              this.$baseMessage('删除成功', 'success')
+              this.fetchData()
+            }
+          })
+        })
+      } else {
+        this.$baseMessage('未选中任何行', 'error')
+        return false
+      }
+    },
+    setSelectRows(val) {
+      this.selectRows = val
+    },
+  },
+}
+</script>
+<style lang="less" scoped>
+.title {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  justify-content: space-between;
+  margin-bottom: 20px;
+}
+
+.left {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+
+  .left-item {
+    display: flex;
+    flex-direction: row;
+    align-items: center;
+    margin-right: 10px;
+  }
+}
+</style>

+ 21 - 13
src/views/stationConfiguration/line/components/TableEdit.vue

@@ -1,44 +1,50 @@
 <template>
   <el-dialog :title="title" :visible.sync="dialogFormVisible" width="800px" @close="close">
-    <el-form ref="form" :model="form" :rules="rules">
+    <el-form ref="form" :model="form" :rules="rules" label-width="120px">
       <div class="lists">
-        <el-form-item label="id" prop="id">
-          <el-input class="inputs" v-model="form.id" autocomplete="off" :disabled="!idAdd?true:false"></el-input>
+        <el-form-item label="编码" prop="id">
+          <el-input placeholder="请输入" class="inputs" v-model="form.id" autocomplete="off" :disabled="!idAdd?true:false"></el-input>
         </el-form-item>
-        <el-form-item label="编" prop="code">
-          <el-input class="inputs" v-model.trim="form.code" autocomplete="off"></el-input>
+        <el-form-item label="编" prop="code">
+          <el-input placeholder="请输入" class="inputs" v-model.trim="form.code" autocomplete="off"></el-input>
         </el-form-item>
       </div>
       <div class="lists">
         <el-form-item label="线路名称" prop="name">
-          <el-input class="inputs" v-model="form.name" autocomplete="off"></el-input>
+          <el-input placeholder="请输入" class="inputs" v-model="form.name" autocomplete="off"></el-input>
         </el-form-item>
         <el-form-item label="别称" prop="aname">
-          <el-input class="inputs" v-model.trim="form.aname" autocomplete="off"></el-input>
+          <el-input placeholder="请输入" class="inputs" v-model.trim="form.aname" autocomplete="off"></el-input>
         </el-form-item>
       </div>
       <div class="lists">
         <el-form-item label="期次" prop="projectid">
-          <el-input class="inputs" v-model.trim="form.projectid" autocomplete="off"></el-input>
+          <!-- <el-input class="inputs" v-model.trim="form.projectid" autocomplete="off"></el-input> -->
+          <el-cascader 
+            v-model="form.projectid" 
+            :options="options" 
+            style="width: 200px" 
+            :props="{ checkStrictly: true, label: 'name', value: 'id' , children:'children',}" 
+            clearable />
         </el-form-item>
         <el-form-item label="装机容量" prop="capacity">
-          <el-input class="inputs" v-model.number="form.capacity" autocomplete="off"
-            @blur="onBlur(form.capacity,'capacity')">
+          <el-input placeholder="请输入" class="inputs" v-model.trim="form.capacity" autocomplete="off"
+            @blur="onBlur(form.capacity,'number')">
           </el-input>
         </el-form-item>
       </div>
       <div class="lists">
         <el-form-item label="容量单位" prop="capacityunit">
-          <el-input class="inputs" v-model.trim="form.capacityunit" autocomplete="off"></el-input>
+          <el-input placeholder="请输入" class="inputs" v-model.trim="form.capacityunit" autocomplete="off"></el-input>
         </el-form-item>
         <el-form-item label="装机数量" prop="quantity">
-          <el-input class="inputs" v-model.number="form.quantity" autocomplete="off"
+          <el-input placeholder="请输入" class="inputs" v-model.number="form.quantity" autocomplete="off"
             @blur="onBlur(form.quantity,'quantity')"></el-input>
         </el-form-item>
       </div>
       <div class="lists">
         <el-form-item label="顺序" prop="ordernum">
-          <el-input class="inputs" v-model.trim="form.ordernum" autocomplete="off"></el-input>
+          <el-input placeholder="请输入" class="inputs" v-model.trim="form.ordernum" autocomplete="off"></el-input>
         </el-form-item>
       </div>
     </el-form>
@@ -85,6 +91,7 @@ export default {
         model: [{ required: true, trigger: 'blur', message: '请输入' }],
         ordernum: [{ required: true, trigger: 'blur', message: '请输入' }],
         quantity: [{ required: true, trigger: 'blur', message: '请输入' }],
+        // projectid: [{ required: true, trigger: 'blur', message: '请输入' }],
       },
       title: '',
       dialogFormVisible: false,
@@ -113,6 +120,7 @@ export default {
     save() {
       this.$refs['form'].validate(async (valid) => {
         if (valid) {
+          this.form.projectid = this.form.projectid[this.form.projectid.length - 1]
           api.addLine(this.form).then(res => {
             if (res.data) {
               this.$message({

+ 36 - 9
src/views/stationConfiguration/line/index.vue

@@ -4,10 +4,10 @@
       <div class="title">
         <div class="left">
           <div class="left-item">
-            <div style="width: 70px;">名称:</div>
+            <div style="width: 100px;">线路名称:</div>
             <el-input v-model="fuzzyQuery" placeholder="请输入" clearable />
           </div>
-          <el-button icon="el-icon-search" type="primary" native-type="submit" @click="fetchData">
+          <el-button icon="el-icon-search" type="primary" native-type="submit" @click="handleQuery">
             查询
           </el-button>
         </div>
@@ -25,20 +25,20 @@
       </div>
 
       <el-table ref="tableSort" v-loading="listLoading" :data="list" :element-loading-text="elementLoadingText"
+        header-cell-class-name="table_header_style" border
         :height="height" @selection-change="setSelectRows">
-        <el-table-column show-overflow-tooltip type="selection" width="55"></el-table-column>
-        <el-table-column show-overflow-tooltip label="id" prop="id" align="center" sortable></el-table-column>
-        <el-table-column show-overflow-tooltip label="编" prop="code" align="center" sortable></el-table-column>
+        <el-table-column show-overflow-tooltip type="selection" width="55" align="center"></el-table-column>
+        <el-table-column show-overflow-tooltip label="编码" prop="id" align="center" sortable></el-table-column>
+        <el-table-column show-overflow-tooltip label="编" prop="code" align="center" sortable></el-table-column>
         <el-table-column show-overflow-tooltip label="线路名称" prop="name" align="center" sortable></el-table-column>
         <el-table-column show-overflow-tooltip label="别称" prop="aname" align="center" sortable></el-table-column>
-        <el-table-column show-overflow-tooltip label="期次" prop="projectid" align="center" sortable></el-table-column>
+        <el-table-column :formatter="nameEcho" show-overflow-tooltip label="期次" prop="projectid" align="center" sortable></el-table-column>
         <el-table-column show-overflow-tooltip label="装机容量" prop="capacity" align="center" sortable></el-table-column>
-        <el-table-column show-overflow-tooltip label="装机单位" prop="capacityunit" align="center" sortable>
-        </el-table-column>
+        <el-table-column show-overflow-tooltip label="装机单位" prop="capacityunit" align="center" sortable></el-table-column>
         <el-table-column show-overflow-tooltip label="装机数量" prop="quantity" align="center" sortable></el-table-column>
         <el-table-column show-overflow-tooltip label="顺序" prop="ordernum" align="center" sortable></el-table-column>
         <el-table-column show-overflow-tooltip label="操作" width="100px" fixed="right">
-          <template #default="{ row }">
+          <template #default="{ row }" fixed="right">
             <el-button type="text" @click="handleEdit(row)">编辑</el-button>
             <el-button type="text" @click="handleDelete(row)">删除</el-button>
           </template>
@@ -56,6 +56,7 @@ import UploadExcel from '@/components/UploadExcel/index'
 import ExportExcel from '@/components/ExportExcel/index'
 import api from '@/api/station'
 import TableEdit from './components/TableEdit'
+import { recursionTree } from '@/utils/deepTree'
 export default {
   components: {
     UploadExcel,
@@ -69,6 +70,7 @@ export default {
   },
   data() {
     return {
+      deepTreeData: '',
       fuzzyQuery: '',
       listLoading: true,
       list: [],
@@ -91,8 +93,33 @@ export default {
   },
   created() {
     this.fetchData()
+    this.getTree()
   },
   methods: {
+    handleQuery() {
+      this.queryForm.pageNo = 1
+      this.fetchData()
+    },
+    nameEcho(row){
+      let arr = row.projectid.split(",")
+      let str = ""
+      if(this.deepTreeData) {
+        this.deepTreeData.forEach(element => {
+          if(arr[arr.length -1] == element.id){
+            str = element.name
+          }
+        });
+      }
+      return str
+    },
+    getTree() {
+      api.newtreeTreels({tag:3}).then(res => {
+        if (res.data) {
+          this.options = res.data
+          this.deepTreeData = recursionTree(res.data)
+        }
+      })
+    },
     getMyExcelData(val) {
       val.forEach(item => {
         api.addLine(item).then(res => {

+ 127 - 0
src/views/stationConfiguration/manufacturer/components/TableEdit.vue

@@ -0,0 +1,127 @@
+<template>
+	<el-dialog :title="title" :visible.sync="dialogFormVisible" width="800px" @close="close">
+		<el-form ref="form" :model="form" :rules="rules" label-width="120px">
+			<div class="lists">
+				<el-form-item label="id" prop="id">
+					<el-input class="inputs" v-model="form.id" autocomplete="off" :disabled="!idAdd?true:false"></el-input>
+				</el-form-item>
+				<el-form-item label="名称" prop="name">
+					<el-input class="inputs" v-model.trim="form.name" autocomplete="off"></el-input>
+				</el-form-item>
+			</div>
+			<div class="lists">
+				<el-form-item label="国家地区" prop="country">
+					<el-input class="inputs" v-model="form.country" autocomplete="off"></el-input>
+				</el-form-item>
+				<el-form-item label="地址" prop="address">
+					<el-input class="inputs" v-model="form.address" autocomplete="off"></el-input>
+				</el-form-item>
+			</div>
+			<div class="lists">
+				<el-form-item label="电话" prop="telephone">
+					<el-input class="inputs" v-model="form.telephone" autocomplete="off"></el-input>
+				</el-form-item>
+			</div>
+		</el-form>
+		<div slot="footer" class="dialog-footer">
+			<el-button @click="close">取 消</el-button>
+			<el-button type="primary" @click="save">确 定</el-button>
+		</div>
+	</el-dialog>
+</template>
+
+<script>
+import api from '@/api/realtimeDatabaseConfiguration'
+import dayjs from "dayjs";
+export default {
+	name: 'TableEdit',
+	props: {
+		options: {
+			type: Array,
+			default: []
+		},
+		stationList: {
+			type: Array,
+			default: []
+		},
+	},
+	data() {
+		return {
+			form: {
+				id: '',
+				name: '',
+				country: '',
+				address: '',
+				telephone: ''
+			},
+			rules: {
+				id: [{ required: true, trigger: 'blur', message: '请输入' }],
+				name: [{ required: true, trigger: 'blur', message: '请输入' }],
+				country: [{ required: true, trigger: 'blur', message: '请输入' }],
+				address: [{ required: true, trigger: 'blur', message: '请输入' }],
+				telephone: [{ required: true, trigger: 'blur', message: '请输入' }],
+			},
+			title: '',
+			dialogFormVisible: false,
+			idAdd: true,
+		}
+	},
+	created() { },
+	methods: {
+		showEdit(row) {
+			if (!row) {
+				this.title = '添加'
+				this.idAdd = true
+			} else {
+				this.title = '编辑'
+				this.idAdd = false
+				this.form = Object.assign({}, row)
+			}
+			this.dialogFormVisible = true
+		},
+		close() {
+			this.$refs['form'].resetFields()
+			this.form = this.$options.data().form
+			this.dialogFormVisible = false
+			this.$emit('fetch-data')
+		},
+		save() {
+			this.$refs['form'].validate(async (valid) => {
+				if (valid) {
+					api.addManufacturer(this.form).then(res => {
+						if (res.data) {
+							this.$message({
+								type: 'success',
+								message: '添加成功!'
+							});
+							this.$emit('save-success');
+							this.dialogFormVisible = false
+						}
+					})
+				} else {
+					return false
+				}
+			})
+		},
+		handleChange() {
+		},
+		onBlur(val, param) {
+			if (typeof (this.form[param]) !== 'number') {
+				this.form[param] = val.replace(/[^0-9]/ig, "")
+			}
+		},
+	},
+}
+</script>
+<style lang="less" scoped>
+.inputs {
+	width: 200px;
+}
+
+.lists {
+	display: flex;
+	flex-direction: row;
+	align-items: center;
+	justify-content: space-between;
+}
+</style>

+ 0 - 0
src/views/stationConfiguration/manufacturer/index.vue


Some files were not shown because too many files changed in this diff