Procházet zdrojové kódy

2022-12-05 update

1. 调整table组件  新增merge合并行  调整条件切换后, 排序重置功能
2. 新增光伏负荷率页loadRate的 合并行, 并切换后重置排序
moccus před 2 roky
rodič
revize
0acc45d371

+ 37 - 3
src/components/coms/table/table.vue

@@ -37,6 +37,27 @@
             </component>
           </td>
         </tr>
+        <tr v-if="(showMerge && tableData.length)">
+          <td
+            v-for="(col, i) of data.column"
+            :key="i"
+            :style="{ width: col.width }"
+            :class="{
+              light: hoverRow == mergeRow || hoverCol == col,
+              num: col.is_num,
+              'always-light': col.is_light || mergeRow.is_light,
+            }"
+            @mouseenter="hover(mergeRow, col)"
+            @mouseleave="leave()"
+          >
+            <component
+              :is="col.type ? col.type : 'span'"
+              v-bind="col.props"
+              v-html="template(col, mergeRow[col.field])"
+            >
+            </component>
+          </td>
+        </tr>
       </tbody>
     </el-scrollbar>
     <el-pagination
@@ -115,6 +136,15 @@ export default {
       type: String,
       default: "",
     },
+    // 是否显示合并行
+    showMerge: {
+      type: Boolean,
+      default: false
+    },
+    mergeRow: { //合并行
+      type: Object,
+      default: () => {}
+    },
     // 新增 支持 pagging 组件
     elPaggingProps: {
       type: Object,
@@ -140,7 +170,7 @@ export default {
       sortType: "",
       currentPage: 1,
     };
-  },
+  }, 
   computed: {
     tableData() {
       let that = this;
@@ -148,7 +178,9 @@ export default {
         return this.data.data;
       } else {
         let data = this.data.data;
-
+        if(that.sortType === ''){
+          return data
+        }
         data.sort((a, b) => {
           let rev = 1;
           if (that.sortType == "ASC") rev = 1;
@@ -266,7 +298,9 @@ export default {
     // 渲染后
   },
   beforeUpdate() {},
-  updated() {},
+  updated() {
+    this.sortType = ''
+  },
 };
 </script>
 

+ 46 - 1
src/views/report/loadRate.vue

@@ -49,6 +49,8 @@
 			<ComTable
 			  ref="curRef"
 			  :data="tableData"
+				:mergeRow="mergeRow"
+				showMerge
 			  :pageSize="-1"
 			  height="85vh"
 			  v-loading="tableLoading"
@@ -90,6 +92,17 @@ import { ElMessage } from 'element-plus';
 					column: [],
 					data: [],
 					currentPageTotal: 0
+				},
+				mergeRow: {
+					branchcount: '',
+					generatedenergy: '',
+					id: '合计',
+					loadfactor: '',
+					platecapacity: '',
+					platecount: '',
+					power: '',
+					time: '',
+					utilizationhour: '',
 				}
 			};
 		},
@@ -220,7 +233,19 @@ import { ElMessage } from 'element-plus';
 					success(res) {
 						var dataTab = [];
 						if (res.data) {
-						  res.data.forEach(item => {
+							let mergeRow = {
+								branchcount: 0,
+								generatedenergy: 0,
+								id: '合计',
+								loadfactor: 0,
+								platecapacity: 0,
+								platecount: 0,
+								power: 0,
+								time: '',
+								utilizationhour: 0,
+							}
+							let loadfactor = 0
+						  res.data.forEach((item,index) => {
 						  	dataTab.push({ //表格
 						  		branchcount: item.branchcount,
 									generatedenergy: item.generatedenergy,
@@ -232,7 +257,27 @@ import { ElMessage } from 'element-plus';
 									time: item.time,
 									utilizationhour: Number(item.utilizationhour),
 						  	})
+								mergeRow.branchcount += Number(item.branchcount)
+								mergeRow.generatedenergy += Number(item.generatedenergy)
+								loadfactor += Number(item.loadfactor)
+								mergeRow.platecapacity += Number(item.platecapacity)
+								mergeRow.platecount += Number(item.platecount)
+								mergeRow.power += Number(item.power)
+								mergeRow.time = item.time
+								mergeRow.utilizationhour += Number(item.utilizationhour)
 						  })
+							mergeRow.loadfactor = loadfactor / res.data.length
+							that.mergeRow = {
+								branchcount: mergeRow.branchcount.toFixed(1),
+								generatedenergy: mergeRow.generatedenergy.toFixed(2),
+								id: '合计',
+								loadfactor: mergeRow.loadfactor.toFixed(2),
+								platecapacity: mergeRow.platecapacity.toFixed(1),
+								platecount: mergeRow.platecount.toFixed(1),
+								power: mergeRow.power.toFixed(1),
+								time: mergeRow.time,
+								utilizationhour: mergeRow.utilizationhour.toFixed(2),
+							}
 						  that.tableData.data = dataTab;
 						  that.tableData.total = 0;
 						} else {