Files
SIPAIIS_WMS_JSSW/WebRoot/JS/report.js

434 lines
16 KiB
JavaScript
Raw Permalink Normal View History

2026-01-16 14:13:44 +08:00
/**
* 报表生成
* @param id
* @param layerType
*/
function onlineExcel4minio(id, layerType) {
var sheetName = '';
//获取该excel的所有sheet 默认加载第一个sheet
$.post(ext.contextPath + '/report/rptCreate/getSheet.do', {id: id}, function (data) {
var datastr = eval('(' + data + ')');
if (datastr.code == 1) {
var msg = datastr.msg;
var arr = msg.split(",");
var sheetstr = '<div class="btn-group">';
var btnClass = "";
var sheetName = "";
//循环sheet
for (var i = 0; i < arr.length - 1; i++) {
if (i == 0) {
btnClass = "btn-primary";
} else {
btnClass = "btn-default";
}
if (arr[i] != null && arr[i] != '') {
sheetName = arr[i];
} else {
sheetName = "sheet" + i;
}
sheetstr += '<div class="btn ' + btnClass + '" onclick="viewFile(\'' + id + '\',\'' + sheetName + '\',\'' + layerType + '\',this);">' + sheetName + '</div>';
}
sheetstr += '</div>';
$('#viewFile_top').html(sheetstr);
// console.log(arr);
//获取excel数据前端渲染
sheetName = arr[0];
viewFile_open(id, sheetName, layerType);
}
});
}
//赋值并打开页面
function viewFile_open(id, sheetName, layerType) {
//先清空excel div
$('#viewFile_bottom').html('');
//等待
top.layer.load(1);
//sheet赋值
$('#sheet').val(sheetName);
//creatId赋值
$('#creatId').val(id);
$.post(ext.contextPath + '/report/rptCreate/viewFile.do', {
id: id,
sheetName: sheetName,
layerType: layerType
}, function (data) {
var end = data;
$('#viewFile_bottom').html(end);
$('#viewFile_bottom td').addClass("viewFile-td");
//获取并加载日志
getLog('cal');
//关闭等待
top.layer.closeAll('loading');
//前端后端 XY转化
setCellsInfo();
});
layer.open({
type: 1,
title: '报表预览',
area: '95%',
skin: 'bgfff', //没有背景色
maxmin: true,
shadeClose: true,
closeBtn: '1',
content: $('#viewFile'),
success: function (layero, index) { //弹出层加载成功后执行
}
});
}
//仅赋值---切换sheet
function viewFile(id, sheetName, layerType, ele) {
if (ele != null && ele != undefined) {
$(ele).siblings().removeClass("btn-primary");
$(ele).siblings().removeClass("btn-default");
$(ele).siblings().addClass("btn-default");
$(ele).removeClass("btn-default");
$(ele).addClass("btn-primary");
}
//先清空excel div
$('#viewFile_bottom').html('');
//等待
top.layer.load(1);
//给sheet赋值
$('#sheet').val(sheetName);
$.post(ext.contextPath + '/report/rptCreate/viewFile.do', {
id: id,
sheetName: sheetName,
layerType: layerType
}, function (data) {
var end = data;
$('#viewFile_bottom').html(end);
$('#viewFile_bottom td').addClass("viewFile-td");
//获取并加载日志
getLog('cal');
//关闭等待
top.layer.closeAll('loading');
//前端后端 XY转化
setCellsInfo();
});
}
//渲染后的table 右键事件
function tabClickRight() {
var td = event.srcElement; // 通过event.srcElement 获取激活事件的对象 td
if (td.parentElement.rowIndex != 'undefined' && td.parentElement.rowIndex != undefined && td.cellIndex != 'undefined' && td.cellIndex != undefined) {
// var posx = td.cellIndex;
// var posy = td.parentElement.rowIndex;
var posx = td.cellIndex;
var posy = td.parentElement.rowIndex;
// alert(posx + '------' + posy);
$('#tableLog').bootstrapTable('destroy');
$("#tableLog").bootstrapTable({ // 对应table标签的id
url: ext.contextPath + '/report/rptLog/getList.do', // 获取表格数据的url
cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true
striped: true, //表格显示条纹默认为false
pagination: true, // 在表格底部显示分页组件默认false
pageList: [200], // 设置页面可以显示的数据条数
pageSize: 200, // 页面数据条数
pageNumber: 1, // 首页页码
paginationDetailHAlign: ' hidden',//去除分页的显示
sidePagination: 'server', // 设置为服务器端分页
queryParams: function (params) { // 请求服务器数据时发送的参数可以在这里添加额外的查询参数返回false则终止请求
return {
rows: params.limit, // 每页要显示的数据条数
page: params.offset / params.limit + 1, // 每页显示数据的开始页码
sort: params.sort, // 要排序的字段
order: params.order,
createId: $('#creatId').val(),
posx: posx,
posy: posy
}
},
sortName: 'insdt', // 要排序的字段
sortOrder: 'desc', // 排序规则
columns: [
{
field: '', // 返回json数据中的name
title: '修订前值', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle', // 上下居中
width: '25%',
formatter: function (value, row, index) {
return row.beforeValue;
}
},
{
field: '', // 返回json数据中的name
title: '修订值', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle', // 上下居中
width: '25%',
formatter: function (value, row, index) {
return row.afterValue;
}
},
{
field: '', // 返回json数据中的name
title: '修订人', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle', // 上下居中
width: '25%',
formatter: function (value, row, index) {
if (row.user != null && row.user != '') {
return row.user.caption;
}
}
},
{
field: '', // 返回json数据中的name
title: '修订时间', // 表格表头显示文字
align: 'center', // 左右居中
valign: 'middle', // 上下居中
width: '25%',
formatter: function (value, row, index) {
return row.insdt.substring(0, 19);
}
}
],
onLoadSuccess: function (data) { //加载成功时执行
adjustBootstrapTableView("tableLog");
if (data.total > 0) {
layer.open({
type: 1,
title: false,
area: '50%',
skin: 'bgfff', //没有背景色
maxmin: false,
content: $('#viewHis'),
cancel: function () {//获取右上角关闭事件
//无
}
});
}
},
onLoadError: function () { //加载失败时执行
console.info("加载数据失败");
}
});
}
}
/**
* 转换前端和excel XY公式
*/
function setCellsInfo() {
var rowSpanAll = [];
var objTab = document.getElementById('t1')
// 遍历表格
for (var i = 0; i < objTab.rows.length; i++) {
var posTempX = 1
// var rowSpanAll_row =[]
for (var j = 0; j < objTab.rows[i].cells.length; j++) {
var cellItem = objTab.rows[i].cells[j]
cellItem.id = 'cell-' + Math.floor(Math.random() * 1000000)
if (j > 0) {
posTempX += objTab.rows[i].cells[j - 1].colSpan
}
var realRow = i + 1 // 行
var realCol = posTempX
// console.log("默认第"+realRow+"行初始列", realCol)
if (rowSpanAll.length > 0) {
rowSpanAll.forEach(function (rowSpanObj) {
if (rowSpanObj.row < realRow && rowSpanObj.rowSpanNum > 0 && realCol >= rowSpanObj.col) {
// console.log("默认第"+realRow+"行加", rowSpanObj)
realCol += rowSpanObj.colSpanNum
}
// else{
// console.log("默认第"+realRow+"行未加", rowSpanObj)
// }
})
}
cellItem.setAttribute('posx', realCol)
cellItem.setAttribute('posy', realRow)
if (cellItem.rowSpan > 1) {
var obj = {}
obj['rowSpanNum'] = cellItem.rowSpan
obj['colSpanNum'] = cellItem.colSpan
obj['row'] = realRow
obj['col'] = realCol
rowSpanAll.push(obj)
rowSpanAll.sort(function (a, b) {
return a.col - b.col
})
}
}
// rowSpanAll= rowSpanAll_row.concat(rowSpanAll)
if (rowSpanAll.length > 0) {
rowSpanAll.forEach(function (rowSpanObj) {
rowSpanObj.rowSpanNum--
})
}
}
}
//渲染后的table 左键事件
function tabClickLeft(type, cellId) {
var box = document.getElementById(cellId);
//excel中的X
var posx_e = box.getAttribute("posx");
//excel中的Y
var posy_e = box.getAttribute("posy");
var td = event.srcElement; // 通过event.srcElement 获取激活事件的对象 td
if (td.parentElement.rowIndex != 'undefined' && td.parentElement.rowIndex != undefined && td.cellIndex != 'undefined' && td.cellIndex != undefined) {
var str = td.innerHTML;
var reg = RegExp(/button/);
//如果包含button则为有事件的单元格 不参与修改值
if (str.match(reg)) {
//if (str.match('确认区域')) {
layer.confirm("是否确认该时间段内数据?", {icon: 3, title: '提示'},
function (index) {//确认
var sheet = $('#sheet').val();
var creatId = $('#creatId').val();
// var type = type;
var posx = td.cellIndex;
var posy = td.parentElement.rowIndex;
var userId = '${userId}';
$.post(ext.contextPath + '/report/rptLog/doupdate.do', {
sheet: sheet,
creatId: creatId,
type: type,
posx: posx,
posy: posy,
userId: userId,
val: 0
}, function (data) {
//
});
td.innerHTML = '${userName}';
layer.close(index);
},
function (index) {//取消
layer.close(index);
});
} else {
layer.prompt({value: str},
function (val, index) {
td.innerHTML = val;//设置单击单元格的值
var sheet = $('#sheet').val();
var creatId = $('#creatId').val();
// var type = type;
var posx = td.cellIndex;
var posy = td.parentElement.rowIndex;
if (str == null || str == '' || str == '&nbsp;') {
str = 0;
}
//去除输入过程中的空格 不然无法识别
val = val.replace(/\s*/g, "");
if (val != null && val != '') {
//正常的
$.post(ext.contextPath + '/report/rptLog/dosave.do', {
sheet: sheet,
creatId: creatId,
type: type,
posx: posx,//table中的x
posy: posy,//table中的y
posx_e: posx_e,//excel中的x
posy_e: posy_e,//excel中的y
beforeValue: str,//修改前的值
afterValue: val //修改后的值
}, function (data) {
});
} else {
//空格
$.post(ext.contextPath + '/report/rptLog/dosave4Space.do', {
sheet: sheet,
creatId: creatId,
type: type,
posx: posx,//table中的x
posy: posy,//table中的y
posx_e: posx_e,//excel中的x
posy_e: posy_e,//excel中的y
beforeValue: str,//修改前的值
afterValue: '' //修改后的值
}, function (data) {
});
}
layer.close(index);
});
}
}
}
//获取数据修改日志
function getLog(type) {
var sheet = $('#sheet').val();
var creatId = $('#creatId').val();
$.post(ext.contextPath + '/report/rptCreate/getCreateById.do', {
id: creatId
}, function (data) {
var create_json = $.parseJSON(data);
$.post(ext.contextPath + '/report/rptLog/getJson.do', {
sheet: sheet,
creatId: creatId,
type: type
}, function (data) {
var json = $.parseJSON(data);
if (json != null && json.length > 0) {
for (let i = 0; i < json.length; i++) {
if (json[i].type == 'cal') {
var y = parseInt(json[i].posy);
var x = $("tr:eq(" + y + ")");
if (json[i].afterValue != null && json[i].afterValue != '') {
x.find("td").eq(json[i].posx).text(json[i].afterValue);//afterValue
if (create_json.status != 'finish') {
x.find("td").eq(json[i].posx).css('background-color', '#33CCCC');
}
} else {
// x.find("td").eq(json[i].posx).text('');//afterValue
}
}
}
}
});
});
}
//确认数据方法
function confirmData() {
var td = event.srcElement; // 通过event.srcElement 获取激活事件的对象 td
layer.confirm("是否确认该时间段内数据?", {icon: 3, title: '提示'},
function (index) {//确认
var sheet = $('#sheet').val();
var creatId = $('#creatId').val();
var type = '${RptSpSet_Type_Confirm}';
var posx = td.cellIndex;
var posy = td.parentElement.rowIndex;
var userId = '${userId}';
$.post(ext.contextPath + '/report/rptLog/doupdate.do', {
sheet: sheet,
creatId: creatId,
type: type,
posx: posx,
posy: posy,
beforeValue: '',//修改前的值
afterValue: '' //修改后的值
}, function (data) {
//
});
td.innerHTML = '${userName}';
layer.close(index);
},
function (index) {//取消
layer.close(index);
});
}