cc-jjsp-web/bns/js/dutyTask/dutySituationStatistics.js

219 lines
6.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

let form, layer, table, laydate, tableIns;
let pageNum = 1, limitSize = 20; // 默认第一页分页数量为20
layui.use(['form', 'layer', 'table', 'laydate'], function () {
form = layui.form;
layer = layui.layer;
table = layui.table;
laydate = layui.laydate;
//日期范围
laydate.render({
elem: '#startTime',
type: 'date',
range: '~',
format: 'yyyy-MM-dd',
value: getCurrentWeekRange()
});
pages(1, 20, 1);
})
function pages(pageNum, pageSize, typeNum) {
let params = getReqParams(pageNum, pageSize, typeNum);
$.ajax({
url: dataUrl + "proteam/pot/todayTask/dutyStatistics?token=" + token,
data: params,
type: 'POST',
async: false,
success: function (result) {
if (result.code === 200) {
if (result.data) {
initTable(result.data, result.limit, result.curr)
laypages(result.count, result.curr, result.limit)
}
} else if (result.code === 500) {
layer.alert(result.msg, { icon: 2 })
} else if (result.code === 401) {
logout(1);
}
}, error: function () {
}
});
}
function laypages(total, page, limit) {
layui.use(['laypage'], function () {
let laypage = layui.laypage;
laypage.render({
elem: 'voi-page',
count: total,
curr: page,
limit: limit,
limits: [20, 50, 100],
layout: ['prev', 'page', 'next', 'skip', 'count', 'limit'],
groups: 5,
jump: function (obj, first) {
if (!first) {
pageNum = obj.curr, limitSize = obj.limit;
pages(obj.curr, obj.limit, null);
}
}
});
})
}
/*初始化表格*/
function initTable(dataList, limit, page) {
let loadingMsg = layer.msg("数据加载中,请稍候...", { icon: 16, scrollbar: false, time: 0, });
tableIns = table.render({
id: 'todayTaskTable',
elem: "#todayTaskTable",
height: "full-150",
data: dataList,
cols: [
[
//表头
{
title: "序号",
width: '5%',
unresize: true,
align: "center",
templet: function (d) {
return (page - 1) * limit + d.LAY_NUM;
}
},
{
field: "userName",
title: "值班员姓名",
width: '10%',
unresize: false,
align: "center",
},
{
field: "totalAllocation",
title: "分配任务总数",
width: '15%',
unresize: false,
align: "center",
},
{
field: "inspectionNumber",
title: "巡视数",
width: '10%',
unresize: false,
align: "center",
},
{
field: "inspectionRate",
title: "巡视完成率",
width: '10%',
unresize: false,
align: "center",
},
{
field: "voiNum",
title: "发现违章数",
width: '10%',
unresize: false,
align: "center",
},
{
field: "warningQuantity",
title: "分配预警数",
width: '10%',
unresize: false,
align: "center",
},
{
field: "warningProcessingQuantity",
title: "预警处理数",
width: '10%',
unresize: false,
align: "center",
},
{
field: "warningRate",
title: "预警处理率",
width: '10%',
unresize: false,
align: "center",
},
{
field: "attendanceDays",
title: "出勤天数",
width: '10%',
unresize: false,
align: "center",
},
],
],
limit: limit,
done: function (res, curr, count) {
layer.close(loadingMsg);
},
});
}
// 获取参数
function getReqParams(page, limit, type) {
let obj = {};
if (!type) {
obj = {
page: page + "",
limit: limit + "",
userName: $('#userName').val(),
workDay: $('#startTime').val()
};
} else {
obj = {
page: 1,
limit: limit,
userName: $('#userName').val(),
workDay: getCurrentWeekRange()
};
}
return obj;
}
// 查询
function query() {
const startTime = $("#startTime").val().split(' ~ ')[0],
endTime = $("#startTime").val().split(' ~ ')[1];
let flag = isOver31Days(startTime,endTime);
if(flag){
return layer.msg('查询的时间间隔不能超过31天', { icon: 2, time: 2000 });
}
pages(1, limitSize);
}
// 导出值班员值班情况统计
function exportData() {
const startTime = $("#startTime").val().split(' ~ ')[0],
endTime = $("#startTime").val().split(' ~ ')[1];
let flag = isOver31Days(startTime,endTime);
if(flag){
return layer.msg('导出的时间间隔不能超过31天', { icon: 2, time: 2000 });
}
let url = dataUrl + 'proteam/pot/todayTask/dutyStatisticsExportData',
params = '?userName=' + $('#userName').val() + '&workDay=' + $('#startTime').val(),
fileName = getCurrentWeekRange().replace(' ~ ','~') + '值班统计情况.xlsx';
commonExportFile(url + params,token,fileName);
}
function isOver31Days(dateStr1, dateStr2) {
// 将字符串日期转换为Date对象
const date1 = new Date(dateStr1);
const date2 = new Date(dateStr2);
// 计算两个日期的时间差(毫秒)
const timeDiff = Math.abs(date2.getTime() - date1.getTime());
// 将毫秒转换为天数1天 = 24 * 60 * 60 * 1000毫秒
const dayDiff = timeDiff / (1000 * 60 * 60 * 24);
// 判断是否超过1天
return dayDiff > 31;
}