|
@@ -272,7 +272,7 @@
|
|
|
drawBaseInfo(baseItem)
|
|
|
// 绘制数据值
|
|
|
drawTableData(reportTableItemList,
|
|
|
- reportTableType)
|
|
|
+ reportTableType, data.data)
|
|
|
luckysheet.setRangeShow('BH1')
|
|
|
convertChart(tableData)
|
|
|
printExcel()
|
|
@@ -540,11 +540,26 @@
|
|
|
}
|
|
|
|
|
|
/** 绘制表格数据 */
|
|
|
- function drawTableData(tableItemList, type) {
|
|
|
- if (!tableItemList || tableItemList.length == 0) return
|
|
|
+ function drawTableData(tableItemList, type, tableInfo) {
|
|
|
+ if (!tableItemList || tableItemList.length == 0) {
|
|
|
+ this.updateLocalExcelContent()
|
|
|
+ return
|
|
|
+ }
|
|
|
// 事件驱动报表
|
|
|
if (type == 2 || type == 4) {
|
|
|
tableItemList.forEach((tableItem, i) => {
|
|
|
+ if (i == 0) {
|
|
|
+ let valueTimeList = tableItem.valueTimeList ? tableItem.valueTimeList.split(',') : []
|
|
|
+ let xAxis = tableItem.xaxis
|
|
|
+ let yAxis = tableItem.yaxis - 1
|
|
|
+ if (valueTimeList.length == 0) {
|
|
|
+ luckysheet.setCellValue(xAxis, yAxis, '')
|
|
|
+ } else {
|
|
|
+ valueTimeList.forEach((v, j) => {
|
|
|
+ luckysheet.setCellValue(xAxis + j, yAxis, v)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
let valueList = tableItem.valueList ? tableItem.valueList
|
|
|
.split(',') : []
|
|
|
let xAxis = tableItem.xaxis
|
|
@@ -558,28 +573,149 @@
|
|
|
})
|
|
|
}
|
|
|
})
|
|
|
+ this.updateLocalExcelContent()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 设备报表
|
|
|
+ if (type == 5 || type == 6) {
|
|
|
+ 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
|
|
|
+ // 序号、时间处理
|
|
|
+ if (tableItem.timeItemType == 0) { // 序号、开始时间
|
|
|
+ let valueIndexList = tableItem.valueIndexList ? tableItem.valueIndexList.split(',') : []
|
|
|
+ this.deviceReportUpdateData('${index}', valueIndexList, false)
|
|
|
+ let valueTimeList = tableItem.valueTimeList ? tableItem.valueTimeList.split(',') : []
|
|
|
+ this.deviceReportUpdateData('${startTime}', valueTimeList, false)
|
|
|
+ }
|
|
|
+ if (tableItem.timeItemType == 1) { // 结束时间
|
|
|
+ let valueTimeList = tableItem.valueTimeList ? tableItem.valueTimeList.split(',') : []
|
|
|
+ this.deviceReportUpdateData('${stopTime}', valueTimeList, tableInfo.isGenCountTime == 1)
|
|
|
+ }
|
|
|
+ if (valueList.length == 0) {
|
|
|
+ luckysheet.setCellValue(xAxis, yAxis, '')
|
|
|
+ } else {
|
|
|
+ valueList.forEach((v, j) => {
|
|
|
+ luckysheet.setCellValue(xAxis + j, yAxis, v)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ this.updateLocalExcelContent()
|
|
|
return
|
|
|
}
|
|
|
// 其余报表信息
|
|
|
tableItemList.forEach((tableItem, i) => {
|
|
|
- let standby = tableItem.standby ? JSON.parse(tableItem.standby) :
|
|
|
- {}
|
|
|
- let dataIndex = standby.index != null ? standby.index : -1
|
|
|
+ // let standby = tableItem.standby ? JSON.parse(tableItem.standby) :
|
|
|
+ // {}
|
|
|
+ // let dataIndex = standby.index != null ? standby.index : -1
|
|
|
let valueList = tableItem.valueList ? tableItem.valueList.split(
|
|
|
',') : []
|
|
|
- let val = (dataIndex == -1 || (dataIndex + 1) > valueList
|
|
|
- .length) ?
|
|
|
- cqcyCode['invalidData'] : valueList[dataIndex]
|
|
|
+ // let val = (dataIndex == -1 || (dataIndex + 1) > valueList
|
|
|
+ // .length) ?
|
|
|
+ // cqcyCode['invalidData'] : valueList[dataIndex]
|
|
|
let xAxis = tableItem.xaxis
|
|
|
let yAxis = tableItem.yaxis
|
|
|
- try {
|
|
|
- luckysheet.setCellValue(xAxis, yAxis, val)
|
|
|
- } catch (e) {
|
|
|
- console.warn(e)
|
|
|
+ if (valueList.length == 0) {
|
|
|
+ luckysheet.setCellValue(xAxis, yAxis, '')
|
|
|
+ } else {
|
|
|
+ valueList.forEach((v, j) => {
|
|
|
+ luckysheet.setCellValue(xAxis + j, yAxis, v)
|
|
|
+ })
|
|
|
}
|
|
|
})
|
|
|
+ this.updateLocalExcelContent()
|
|
|
}
|
|
|
|
|
|
+ /** 设备报表时间特殊处理 */
|
|
|
+ function deviceReportUpdateData(field, dataList, hasCalc) {
|
|
|
+ let indexPos = sessionStorage.getItem(window.sessionName)
|
|
|
+ if (indexPos) {
|
|
|
+ let pos = indexPos.split(',')
|
|
|
+ if (field == '${index}') {
|
|
|
+ let yAxis = parseInt(pos[0])
|
|
|
+ let xAxis = parseInt(pos[1])
|
|
|
+ dataList.forEach((v, j) => {
|
|
|
+ luckysheet.setCellValue(yAxis + j, xAxis, j + 1)
|
|
|
+ })
|
|
|
+ } else if (field == '${startTime}') {
|
|
|
+ let yAxis = parseInt(pos[0])
|
|
|
+ let xAxis = parseInt(pos[1]) + 1
|
|
|
+ dataList.forEach((v, j) => {
|
|
|
+ luckysheet.setCellValue(yAxis + j, xAxis, v)
|
|
|
+ })
|
|
|
+ } else if (field == '${stopTime}') {
|
|
|
+ let yAxis = parseInt(pos[0])
|
|
|
+ let xAxis = parseInt(pos[1]) + 2
|
|
|
+ dataList.forEach((v, j) => {
|
|
|
+ luckysheet.setCellValue(yAxis + j, xAxis, v)
|
|
|
+ if (hasCalc) {
|
|
|
+ let startDate = luckysheet.getCellValue(yAxis + j, xAxis - 1)
|
|
|
+ let minutes = this.calculateMinutes(startDate, v)
|
|
|
+ luckysheet.setCellValue(yAxis + j, xAxis + 1, minutes)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+ let option = luckysheet.getAllSheets()[0]
|
|
|
+ option.celldata.map(item => {
|
|
|
+ if (item.v.v) {
|
|
|
+ item.v.v = String(item.v.v).trim()
|
|
|
+ // 替换${xxx}内部数据
|
|
|
+ if (item.v.v.match(/\${([^}]+)}/g)) {
|
|
|
+ if (item.v.v.indexOf(field) > -1) {
|
|
|
+ let yAxis = item.r
|
|
|
+ let xAxis = item.c
|
|
|
+ if (field == '${index}') {
|
|
|
+ sessionStorage.setItem(window.sessionName, yAxis + ',' + xAxis)
|
|
|
+ dataList.forEach((v, j) => {
|
|
|
+ luckysheet.setCellValue(yAxis + j, xAxis, j + 1)
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ dataList.forEach((v, j) => {
|
|
|
+ luckysheet.setCellValue(yAxis + j, xAxis, v)
|
|
|
+ if (hasCalc) {
|
|
|
+ let startDate = luckysheet.getCellValue(yAxis + j, xAxis - 1)
|
|
|
+ let minutes = this.calculateMinutes(startDate, v)
|
|
|
+ luckysheet.setCellValue(yAxis + j, xAxis + 1, minutes)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ /** 删除不合理数据值 */
|
|
|
+ function updateLocalExcelContent() {
|
|
|
+ let option = luckysheet.getAllSheets()[0]
|
|
|
+ option.celldata.map(item => {
|
|
|
+ if (item.v.v) {
|
|
|
+ item.v.v = String(item.v.v).trim()
|
|
|
+ // 替换${xxx}内部数据
|
|
|
+ if (item.v.v.match(/\${([^}]+)}/g)) {
|
|
|
+ luckysheet.setCellValue(item.r, item.c, '')
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ /** 计算分钟数 */
|
|
|
+ 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 drawBaseInfo(baseData) {
|
|
|
if (!baseData) return
|