ws hace 1 año
padre
commit
5e1b593142

+ 106 - 9
chuanyi_client2/src/utils/luckysheettool.js

@@ -1,4 +1,4 @@
-import {showAlertWin} from "@/utils/cqcy";
+import {showAlertWin, withDateFormatLength} from "@/utils/cqcy";
 import html2canvas from "html2canvas";
 
 function setCellSize(l, e, t, o) {
@@ -150,8 +150,9 @@ export function toLuckySheetJson(luckySheet) {
 
 }
 
-export function setSheetDatas(tableItemList, luckysheet) {
-    let arr = initArrays(tableItemList)
+export function setSheetDatas(tableItemList, luckysheet, type, isGenCountTime, sheData) {
+    console.log(type)
+    let arr = initArrays(tableItemList, type, isGenCountTime, sheData)
 
     console.log("A1:" + toExcelColumn(arr[0].length) + arr.length)
     setTimeout(function () {
@@ -169,9 +170,14 @@ Array.min = function(array) {
 Array.max = function (array) {
     return Math.max.apply(Math, array)
 }
-function initArrays(tableItemList) {
+function initArrays(tableItemList, type, isGenCountTime, sheData) {
     // 纵向 reportTableType = 1
     let arr = {}
+    let yAdd = 0;
+    let xAdd = 0;
+    let valueTimeList = null;
+    let startTimes = [];
+    let endTimes = [];
     for (let i = 0; i < tableItemList.length; i++) {
         let tableItem = tableItemList[i];
         let standby = JSON.parse(tableItem.standby)
@@ -191,8 +197,39 @@ function initArrays(tableItemList) {
                 arr[xAxis + "_" + (yAxis + j)] = valueList[j]
             }
         }
+        if (i == 0 && (type == 2 || type == 4)) {
+            valueTimeList = tableItem.valueTimeList
+                ? tableItem.valueTimeList.split(",")
+                : [];
+            valueTimeList = withDateFormatLength(valueTimeList);
+            yAdd = yAxis2
+        }
+        if (type == 5 || type == 6) {
+            yAdd = yAxis2
+            if (i == 0) {
+                xAdd = xAxis2
+            }
+            let valueTimeList = tableItem.valueTimeList
+                ? tableItem.valueTimeList.split(",")
+                : [];
+            valueTimeList = withDateFormatLength(valueTimeList);
+            if (tableItem.timeItemType == 0) {
+                // 开始时间
+                startTimes = withDateFormatLength(valueTimeList);
+
+            }
+            if (tableItem.timeItemType == 1) {
+                // 结束时间
+                endTimes = withDateFormatLength(valueTimeList);
+            }
+        }
     }
+    console.log(yAdd)
     console.log(arr)
+    console.log(startTimes)
+    console.log(endTimes)
+    console.log(type)
+    console.log(isGenCountTime)
     let x = 0;
     let y = 0;
     for (let key in arr) {
@@ -204,14 +241,48 @@ function initArrays(tableItemList) {
             x = parseInt(str[1])
         }
     }
+    let aIndex = isGenCountTime == 1 ? 1: 0;
     let array = []
-    for (var i = 0; i <= y; i++) {
-        let row = []
-        for (var j = 0; j <= x; j++) {
+    for (var i = 0; i < sheData.length; i++) {
+        let row = sheData[i]
+        for (var j = 0; j < row.length; j++) {
             if (arr[i + "_" + j]) {
-                row.push(arr[i + "_" + j])
+                row[j] = (arr[i + "_" + j])
             } else {
-                row.push("")
+                if (j == yAdd - 1 && (type == 2 || type == 4)) {
+                    if (i >= yAdd) {
+                        console.log(i - yAdd)
+                        console.log(valueTimeList[i - yAdd])
+                        row[j] = (valueTimeList[i - yAdd])
+                    } else {
+                        row[j] = changeValStr(row[j])
+                    }
+                } else if (type == 5 || type == 6) {
+                    if (i >= yAdd) {
+                       if (j == xAdd - 3 - aIndex) {
+                           // 序号列
+                           row[j] = (i - yAdd + 1)
+                       } else if (j == xAdd - 2 - aIndex) {
+                           // 开始时间
+                           row[j] = (i - yAdd < startTimes.length ? startTimes[i - yAdd] : "")
+                       } else if (j == xAdd - 1 - aIndex) {
+                           // 开始时间
+                           row[j] = (i - yAdd < endTimes.length ? endTimes[i - yAdd] : "")
+                       } else if(isGenCountTime == 1 && j == xAdd - 1 && row[j - 2] && row[j - 1]) {
+                           // 计算时间
+                          const time = calculateMinutes(row[j - 2], row[j - 1]);
+                           row[j] = (time)
+                       } else {
+                           row[j] = changeValStr(row[j])
+                       }
+
+                    } else {
+                        row[j] = changeValStr(row[j])
+                    }
+                } else {
+
+                    row[j] = changeValStr(row[j])
+                }
             }
         }
         array.push(row)
@@ -220,4 +291,30 @@ function initArrays(tableItemList) {
     console.log(array)
     return array
 
+}
+
+function calculateMinutes(time1, time2) {
+    // 将时间字符串转换为Date对象
+    let date1 = new Date(time1);
+    let date2 = new Date(time2);
+    // 计算时间差(以毫秒为单位)
+    let diffInMilliseconds = Math.abs(date2.getTime() - date1.getTime());
+    // 将时间差转换为分钟
+    let minutes = Math.floor(diffInMilliseconds / 1000 / 60);
+    return minutes;
+}
+
+function changeValStr(str) {
+    if (str) {
+        if (str.v && str.v.startsWith("${")) {
+            return "";
+        } else  {
+            if (JSON.stringify(str).startsWith("${")) {
+                return "";
+            }
+        }
+        return str;
+    } else {
+        return str;
+    }
 }

+ 57 - 36
chuanyi_client2/src/views/my_report/index.vue

@@ -1279,13 +1279,14 @@ export default {
       })
     },
     /** 绘制表格数据 */
-    drawTableData(tableItemList, type, tableInfo) {
+    drawTableData(tableItemList, type, tableInfo, sheData) {
       if (!tableItemList || tableItemList.length == 0) {
         // this.updateLocalExcelContent()
         return
       }
       // 事件驱动报表
       if (type == 2 || type == 4) {
+          setSheetDatas(tableItemList, luckysheet, type, null, sheData);
         tableItemList.forEach((tableItem, i) => {
           if (i == 0) {
             let valueTimeList = tableItem.valueTimeList ? tableItem.valueTimeList.split(',') : []
@@ -1311,43 +1312,42 @@ export default {
           //   })
           // }
         })
-          setSheetDatas(tableItemList, luckysheet);
         // this.updateLocalExcelContent()
         return
       }
       // 设备报表
       if (type == 5 || type == 6) {
         let startTimeList = [];
-        tableItemList.forEach((tableItem, i) => {
-          let standby = tableItem.standby ? JSON.parse(tableItem.standby) : {}
-          let dataIndex = standby.index != null ? standby.index : -1
-          let valueList = tableItem.valueList ? tableItem.valueList.split(',') : []
-          let xAxis = tableItem.xaxis
-          let yAxis = tableItem.yaxis
-          this.reportTableId = tableInfo.id
-          // 序号、时间处理
-          if (tableItem.timeItemType == 0) { // 序号、开始时间
-            let valueIndexList = tableItem.valueIndexList ? tableItem.valueIndexList.split(',') : []
-            this.deviceReportUpdateData('${index}', valueIndexList, false)
-            let valueTimeList = tableItem.valueTimeList ? tableItem.valueTimeList.split(',') : []
-            valueTimeList = withDateFormatLength(valueTimeList)
-            startTimeList = valueTimeList;
-            this.deviceReportUpdateData('${startTime}', valueTimeList, false)
-          }
-          if (tableItem.timeItemType == 1) { // 结束时间
-            let valueTimeList = tableItem.valueTimeList ? tableItem.valueTimeList.split(',') : []
-            valueTimeList = withDateFormatLength(valueTimeList)
-            this.deviceReportUpdateData('${stopTime}', valueTimeList, tableInfo.isGenCountTime == 1, startTimeList)
-          }
-          // if (valueList.length == 0) {
-          //   luckysheet.setCellValue(xAxis, yAxis, '')
-          // } else {
-          //   valueList.forEach((v, j) => {
-          //     luckysheet.setCellValue(xAxis + j, yAxis, v)
-          //   })
-          // }
-        })
-          setSheetDatas(tableItemList, luckysheet);
+        // tableItemList.forEach((tableItem, i) => {
+        //   let standby = tableItem.standby ? JSON.parse(tableItem.standby) : {}
+        //   let dataIndex = standby.index != null ? standby.index : -1
+        //   let valueList = tableItem.valueList ? tableItem.valueList.split(',') : []
+        //   let xAxis = tableItem.xaxis
+        //   let yAxis = tableItem.yaxis
+        //   this.reportTableId = tableInfo.id
+        //   // 序号、时间处理
+        //   if (tableItem.timeItemType == 0) { // 序号、开始时间
+        //     let valueIndexList = tableItem.valueIndexList ? tableItem.valueIndexList.split(',') : []
+        //     this.deviceReportUpdateData('${index}', valueIndexList, false)
+        //     let valueTimeList = tableItem.valueTimeList ? tableItem.valueTimeList.split(',') : []
+        //     valueTimeList = withDateFormatLength(valueTimeList)
+        //     startTimeList = valueTimeList;
+        //     this.deviceReportUpdateData('${startTime}', valueTimeList, false)
+        //   }
+        //   if (tableItem.timeItemType == 1) { // 结束时间
+        //     let valueTimeList = tableItem.valueTimeList ? tableItem.valueTimeList.split(',') : []
+        //     valueTimeList = withDateFormatLength(valueTimeList)
+        //     this.deviceReportUpdateData('${stopTime}', valueTimeList, tableInfo.isGenCountTime == 1, startTimeList)
+        //   }
+        //   // if (valueList.length == 0) {
+        //   //   luckysheet.setCellValue(xAxis, yAxis, '')
+        //   // } else {
+        //   //   valueList.forEach((v, j) => {
+        //   //     luckysheet.setCellValue(xAxis + j, yAxis, v)
+        //   //   })
+        //   // }
+        // })
+          setSheetDatas(tableItemList, luckysheet, type, tableInfo.isGenCountTime, sheData);
         // this.updateLocalExcelContent()
         return
       }
@@ -1368,7 +1368,7 @@ export default {
       //     })
       //   }
       // })
-        setSheetDatas(tableItemList, luckysheet);
+        setSheetDatas(tableItemList, luckysheet, null, null, sheData);
       // this.updateLocalExcelContent()
     },
     /** 设备报表时间特殊处理 */
@@ -1786,7 +1786,7 @@ export default {
           // 绘制基础数据项
           this.drawBaseInfo(baseItem)
           // 绘制数据值
-          this.drawTableData(reportTableItemList, reportTableType, _data)
+          this.drawTableData(reportTableItemList, reportTableType, _data, luckysheet.getSheet(0).data)
         for (let i in reportChartList) {
           this.insertEChartInfo(reportChartList[i])
         }
@@ -1820,6 +1820,27 @@ export default {
       let option = luckyData.option
       if (!option) option = JSON.parse(JSON.stringify(this.luckysheetOption))
       option.data = luckyData.data
+        if (reportTableItemList) {
+            let tableItem = reportTableItemList[0];
+            let standby = JSON.parse(tableItem.standby)
+            let fieldType = standby.fieldType ? standby.fieldType: 2
+            let valueList = tableItem.valueList ?
+                tableItem.valueList.split(",") : [];
+            if (fieldType == 1) {
+                option.column = reportTableItemList.length + tableItem.xaxis
+                if (option.column < 100) {
+                    option.column = 200;
+                    option.row = 200;
+                }
+            } else {
+                option.row = reportTableItemList.length + tableItem.yaxis
+                if (option.row < 100) {
+                    option.column = 200;
+                    option.row = 200;
+                }
+            }
+        }
+        const sheData = option.data[0].data
       if (isReadOnly) {
         // 设置工作表保护
         option.data[0].config.authority = {
@@ -1860,7 +1881,7 @@ export default {
               // 绘制基础数据项
               _this.drawBaseInfo(baseItem)
               // 绘制数据值
-              _this.drawTableData(reportTableItemList, reportTableType, dataInfo)
+              _this.drawTableData(reportTableItemList, reportTableType, dataInfo, sheData)
             // 图表操作
             for (let i in reportChartList) {
               _this.insertEChartInfo(reportChartList[i])
@@ -1877,7 +1898,7 @@ export default {
               // 绘制基础数据项
               _this.drawBaseInfo(baseItem)
               // 绘制数据值
-              _this.drawTableData(reportTableItemList, reportTableType, dataInfo)
+              _this.drawTableData(reportTableItemList, reportTableType, dataInfo, sheData)
             for (let i in charts) {
               _this.insertEChartInfo(charts[i])
             }

+ 62 - 53
chuanyi_client2/src/views/run_config/index.vue

@@ -1849,7 +1849,7 @@ export default {
       });
     },
     /** 绘制表格数据 */
-    drawTableData(tableItemList, type, tableInfo) {
+    drawTableData(tableItemList, type, tableInfo, sheData) {
         console.log("=============")
       if (!tableItemList || tableItemList.length == 0) {
         // this.updateLocalExcelContent();
@@ -1857,6 +1857,7 @@ export default {
       }
       // 事件驱动报表
       if (type == 2 || type == 4) {
+          setSheetDatas(tableItemList, luckysheet, type, null, sheData);
         tableItemList.forEach((tableItem, i) => {
           if (i == 0) {
             let valueTimeList = tableItem.valueTimeList
@@ -1886,58 +1887,58 @@ export default {
           //   });
           // }
         });
-          setSheetDatas(tableItemList, luckysheet);
         // this.updateLocalExcelContent();
         return;
       }
       // 设备报表
       if (type == 5 || type == 6) {
-        let startTimeList = [];
-        tableItemList.forEach((tableItem, i) => {
-          let standby = tableItem.standby ? JSON.parse(tableItem.standby) : {};
-          let dataIndex = standby.index != null ? standby.index : -1;
-          let valueList = tableItem.valueList
-            ? tableItem.valueList.split(",")
-            : [];
-          let xAxis = tableItem.xaxis;
-          let yAxis = tableItem.yaxis;
-          this.reportTableId = tableInfo.id;
-          // 序号、时间处理
-          if (tableItem.timeItemType == 0) {
-            // 序号、开始时间
-            let valueIndexList = tableItem.valueIndexList
-              ? tableItem.valueIndexList.split(",")
-              : [];
-            this.deviceReportUpdateData("${index}", valueIndexList, false);
-            let valueTimeList = tableItem.valueTimeList
-              ? tableItem.valueTimeList.split(",")
-              : [];
-            valueTimeList = withDateFormatLength(valueTimeList);
-            startTimeList = valueTimeList;
-            this.deviceReportUpdateData("${startTime}", valueTimeList, false);
-          }
-          if (tableItem.timeItemType == 1) {
-            // 结束时间
-            let valueTimeList = tableItem.valueTimeList
-              ? tableItem.valueTimeList.split(",")
-              : [];
-            valueTimeList = withDateFormatLength(valueTimeList);
-            this.deviceReportUpdateData(
-              "${stopTime}",
-              valueTimeList,
-              tableInfo.isGenCountTime == 1,
-              startTimeList
-            );
-          }
-          // if (valueList.length == 0) {
-          //   luckysheet.setCellValue(xAxis, yAxis, "");
-          // } else {
-          //   valueList.forEach((v, j) => {
-          //     luckysheet.setCellValue(xAxis + j, yAxis, v);
-          //   });
-          // }
-        });
-          setSheetDatas(tableItemList, luckysheet);
+          setSheetDatas(tableItemList, luckysheet, type, tableInfo.isGenCountTime, sheData);
+        // let startTimeList = [];
+        // tableItemList.forEach((tableItem, i) => {
+        //   let standby = tableItem.standby ? JSON.parse(tableItem.standby) : {};
+        //   let dataIndex = standby.index != null ? standby.index : -1;
+        //   let valueList = tableItem.valueList
+        //     ? tableItem.valueList.split(",")
+        //     : [];
+        //   let xAxis = tableItem.xaxis;
+        //   let yAxis = tableItem.yaxis;
+        //   this.reportTableId = tableInfo.id;
+        //   // 序号、时间处理
+        //   if (tableItem.timeItemType == 0) {
+        //     // 序号、开始时间
+        //     let valueIndexList = tableItem.valueIndexList
+        //       ? tableItem.valueIndexList.split(",")
+        //       : [];
+        //     this.deviceReportUpdateData("${index}", valueIndexList, false);
+        //     let valueTimeList = tableItem.valueTimeList
+        //       ? tableItem.valueTimeList.split(",")
+        //       : [];
+        //     valueTimeList = withDateFormatLength(valueTimeList);
+        //     startTimeList = valueTimeList;
+        //     this.deviceReportUpdateData("${startTime}", valueTimeList, false);
+        //   }
+        //   if (tableItem.timeItemType == 1) {
+        //     // 结束时间
+        //     let valueTimeList = tableItem.valueTimeList
+        //       ? tableItem.valueTimeList.split(",")
+        //       : [];
+        //     valueTimeList = withDateFormatLength(valueTimeList);
+        //     this.deviceReportUpdateData(
+        //       "${stopTime}",
+        //       valueTimeList,
+        //       tableInfo.isGenCountTime == 1,
+        //       startTimeList
+        //     );
+        //   }
+        //   // if (valueList.length == 0) {
+        //   //   luckysheet.setCellValue(xAxis, yAxis, "");
+        //   // } else {
+        //   //   valueList.forEach((v, j) => {
+        //   //     luckysheet.setCellValue(xAxis + j, yAxis, v);
+        //   //   });
+        //   // }
+        // });
+
         // this.updateLocalExcelContent();
         return;
       }
@@ -1960,7 +1961,7 @@ export default {
       //     });
       //   }
       // });
-        setSheetDatas(tableItemList, luckysheet);
+        setSheetDatas(tableItemList, luckysheet, null, null, sheData);
       // this.updateLocalExcelContent();
     },
     /** 设备报表时间特殊处理 */
@@ -2508,7 +2509,7 @@ export default {
             // 绘制基础数据项
             this.drawBaseInfo(baseItem);
             // 绘制数据值
-            this.drawTableData(reportTableItemList, reportTableType, _data);
+            this.drawTableData(reportTableItemList, reportTableType, _data, luckysheet.getSheet(0).data);
           for (let i in reportChartList) {
             this.insertEChartInfo(reportChartList[i]);
           }
@@ -2553,11 +2554,19 @@ export default {
                 tableItem.valueList.split(",") : [];
             if (fieldType == 1) {
                 option.column = reportTableItemList.length + tableItem.xaxis
+                if (option.column < 100) {
+                    option.column = 200;
+                    option.row = 200;
+                }
             } else {
                 option.row = reportTableItemList.length + tableItem.yaxis
+                if (option.row < 100) {
+                    option.column = 200;
+                    option.row = 200;
+                }
             }
         }
-
+       const sheData = option.data[0].data
       if (isReadOnly) {
         // 设置工作表保护
         option.data[0].config.authority = {
@@ -2598,7 +2607,7 @@ export default {
               // 绘制基础数据项
               _this.drawBaseInfo(baseItem);
               // 绘制数据值
-              _this.drawTableData(reportTableItemList, reportTableType, dataInfo);
+              _this.drawTableData(reportTableItemList, reportTableType, dataInfo, sheData);
             for (let i in reportChartList) {
               _this.insertEChartInfo(reportChartList[i]);
             }
@@ -2614,7 +2623,7 @@ export default {
               // 绘制基础数据项
               _this.drawBaseInfo(baseItem);
               // 绘制数据值
-              _this.drawTableData(reportTableItemList, reportTableType, dataInfo);
+              _this.drawTableData(reportTableItemList, reportTableType, dataInfo, sheData);
             for (let i in charts) {
               _this.insertEChartInfo(charts[i]);
             }