需求开发

This commit is contained in:
liang.chao 2025-10-09 11:29:37 +08:00
parent fc71ed727a
commit 9de98ef70a
2 changed files with 77 additions and 34 deletions

View File

@ -42,6 +42,7 @@
let tableIns = null; let tableIns = null;
let type = 1; let type = 1;
let tableCode = 1; let tableCode = 1;
let evaluateTitle = decodeURIComponent(getUrlParam('evaluateTitle'));
$(function () { $(function () {
layui.use(['layer', 'laydate', 'table', 'excel'], function () { layui.use(['layer', 'laydate', 'table', 'excel'], function () {
@ -137,12 +138,33 @@
var htrs = Array.from(headerHead.querySelectorAll('tr')); var htrs = Array.from(headerHead.querySelectorAll('tr'));
var bodysArr = new Array(); var bodysArr = new Array();
// ========== 新增:添加自定义表头行 ==========
var customHeader = [];
// 创建一个跨越所有列的单元格
for(var i = 0; i < btdslength; i++) {
if(i === 0) {
customHeader.push(evaluateTitle); // 第一列显示标题
} else {
customHeader.push(null); // 其他列为空,用于合并
}
}
bodysArr.push(customHeader);
// 添加合并信息,让自定义表头合并所有列
var customMerge = {
s: {r: 0, c: 0},
e: {r: 0, c: btdslength - 1}
};
// ========== 新增结束 ==========
var point = new Array(); // 行,列 var point = new Array(); // 行,列
for (var pi = 0; pi <= htrs.length + 1; pi++) { for (var pi = 0; pi <= htrs.length + 1; pi++) {
point[pi] = new Array(); point[pi] = new Array();
} }
point[0][0] = "qd"; // 起点 point[0][0] = "qd"; // 起点
var mergeArr = []; var mergeArr = [customMerge]; // 将自定义表头的合并信息加入数组
for (var j = 0; j < htrs.length; j++) { // 遍历tr for (var j = 0; j < htrs.length; j++) { // 遍历tr
var titles = []; var titles = [];
var hths = Array.from(htrs[j].querySelectorAll("th")); var hths = Array.from(htrs[j].querySelectorAll("th"));
@ -170,7 +192,11 @@
for (var temp = 0; temp < colspan - 1; temp++) { for (var temp = 0; temp < colspan - 1; temp++) {
titles.push(null); titles.push(null);
} }
mergeArr.push({s: {r: j, c: pindx}, e: {r: j + rowspan - 1, c: pindx + colspan - 1}}); // 添加合并数据参数 r的差R表示向下扩展R个单元格,c 的差C表示想右扩展C个单元格 // 调整合并信息的行号,因为上面新增了一行
mergeArr.push({
s: {r: j + 1, c: pindx},
e: {r: j + 1 + rowspan - 1, c: pindx + colspan - 1}
});
for (var qdi = 0; qdi < colspan; qdi++) { for (var qdi = 0; qdi < colspan; qdi++) {
point[j + rowspan][pindx + qdi] = "qd"; // 添加完数据 ,添加起点记录 point[j + rowspan][pindx + qdi] = "qd"; // 添加完数据 ,添加起点记录
} }
@ -183,6 +209,7 @@
} }
bodysArr.push(titles); bodysArr.push(titles);
} }
var widthArr = []; //这里改宽 var widthArr = []; //这里改宽
for (var j = 0; j < btrs.length; j++) { for (var j = 0; j < btrs.length; j++) {
var contents = []; var contents = [];
@ -221,6 +248,35 @@
} }
} }
} }
// ========== 新增:顶部标题的特殊样式 ==========
var titleStyleStr = {
alignment: {
vertical: 'center',
horizontal: 'center'
},
font: {
sz: 18, // 大字号
bold: true, // 加粗
color: {rgb: "000000"} // 黑色
},
border: {
top: {
style: 'thin'
},
bottom: {
style: 'thin'
},
left: {
style: 'thin'
},
right: {
style: 'thin'
}
}
};
// ========== 新增结束 ==========
var datas = []; var datas = [];
for (var i = 0; i < bodysArr.length; i++) { for (var i = 0; i < bodysArr.length; i++) {
var map = {}; var map = {};
@ -229,52 +285,39 @@
var dataName = "data_" + n; var dataName = "data_" + n;
var das = thisData[n]; var das = thisData[n];
var styMap = {}; var styMap = {};
styMap['s'] = styleStr;
// ========== 修改:对第一行(顶部标题)应用特殊样式 ==========
if (i === 0) {
// 第一行使用标题样式
styMap['s'] = titleStyleStr;
} else {
// 其他行使用普通样式
styMap['s'] = styleStr;
}
// ========== 修改结束 ==========
styMap['v'] = das; styMap['v'] = das;
map[dataName] = styMap; map[dataName] = styMap;
} }
datas.push(map); datas.push(map);
} }
// var excel = layui.excel;
// // 开始填充单元格背景颜色
// // console.log(datas);
// excel.setExportCellStyle(
// datas, 'D1:Q300', {
// s: {
// fill: {bgColor: {indexed: 64}, fgColor: {rgb: "FFFF00"}},
// alignment: {
// horizontal: 'center',
// vertical: 'center'
// }
// }
// }, function (cell, newCell, row, config, currentRow, currentCol, fieldKey) {
// // 回调参数cell:原有数据newCell:根据批量设置规则自动生成的样式row:所在行数据config:传入的配置,currentRow:当前行索引,currentCol:当前列索引fieldKey:当前字段索引
// // return ((currentRow + currentCol) % 2 === 0) ? newCell : cell;// 隔行隔列上色
// // console.log(cell['v']);
// if (cell['v'] == "疑似故障" || cell['v'] == "超上限值") {
// return newCell;
// } else {
// return cell;
// }
// })
// // console.log(data);
// // 结束填充单元格背景颜色
var filename = tableCode === 1 ? '评价详情.xlsx' : tableCode === 2 ? '得分统计.xlsx' : '汇总统计.xlsx'; var filename = tableCode === 1 ? '评价详情.xlsx' : tableCode === 2 ? '得分统计.xlsx' : '汇总统计.xlsx';
// 第一行行高40其余行默认20 // 调整行高配置,因为新增了一行
var rowConf = excel.makeRowConfig({ var rowConf = excel.makeRowConfig({
1: 40 1: 40, // 自定义表头行高(第一行)
2: 40 // 原第一行行高(第二行)
}, 20) }, 20)
excel.exportExcel({ excel.exportExcel({
sheet: datas sheet: datas
}, filename, 'xlsx', { }, filename, 'xlsx', {
extend: { extend: {
sheet: { sheet: {
'!merges': mergeArr '!merges': mergeArr,
, '!cols': widthArr '!cols': widthArr,
, '!rows': rowConf '!rows': rowConf
} }
} }
}) })

View File

@ -250,7 +250,7 @@
//评价子页面 //评价子页面
function evaluatingSubpages(title, data) { function evaluatingSubpages(title, data) {
openPage(title, './evaluateSummaryForm.html?type=' + title + '&templateId=' + data.templateId + '&id=' + data.id); openPage(title, './evaluateSummaryForm.html?type=' + title + '&templateId=' + data.templateId + '&id=' + data.id + '&evaluateTitle=' + data.evaluateTitle);
} }
function openPage(title, url) { function openPage(title, url) {
//如果是查看页面,不需要弹出层的确定按钮 //如果是查看页面,不需要弹出层的确定按钮