IntelligentRecognition/ah-jjsp-web/bns/js/dutyTask/schedulingMge.js

214 lines
7.6 KiB
JavaScript

let form, layer, laydate;
let weekDateArr = ['周一', '周二', '周三', '周四', '周五', '周六', '周日'];
let personTypeArr = ['省公司带班领导', '建设分公司值班主任', '值长', '副值长', '值班员1', '值班员2', '值班员3', '值班员4', '值班员5', '值班员6', '值班员7', '晚班值班员', '晚班(日报)'];
let hasData = false;
let user = getUser();
layui.use(['form', 'laydate', 'layer'], function () {
layer = layui.layer;
form = layui.form;
laydate = layui.laydate;
let dateStr = $('.p-checked').html()
setBtns();
getSchedulingPersonDataAjax(dateStr);
});
function setBtns() {
let html = '';
if (user.nickName === '!jysp' || user.nickName === 'jysp') {
html += '<button type="button" class="layui-btn layui-btn-normal" style="border: none;" onclick="userBanding()">用户绑定值班员</button>'
html += '<button type="button" class="layui-btn layui-btn-normal" style="border: none;" onclick="emptySchedulingAjax()">清空</button>'
$('.right-box .btn-div').append(html);
}
}
// 排班人员数据
function getSchedulingPersonDataAjax(dateStr) {
let param = {
'date': dateStr
}
let loadingMsg = layer.msg('数据加载中,请稍候...', { icon: 16, scrollbar: false, time: 0 });
$.ajax({
headers: {
"encrypt": sm3(JSON.stringify(param))
},
url: dataUrl + 'proteam/pot/duty/getSchedulingPersonData?token=' + token,
type: 'POST',
data: param,
dataType: 'json',
success: function (result) {
layer.close(loadingMsg); // 关闭提示层
if (result.code === 200) {
setTableData(result.data.list, dateStr);
} else if (result.code === 500) {
layer.alert(result.msg, { icon: 2 })
} else if (result.code === 401) {
logout(1)
}
},
error: function (result) {
layer.close(loadingMsg); // 关闭提示层
layer.msg('服务异常,请稍后重试', { icon: 16, scrollbar: false, time: 2000 });
}
});
}
// 下载排班表
function downloadSchedulingData() {
let dateStr = $('.p-checked').html();
let dateArr = dateStr.split('~');
let weekArr = getAllDate(dateArr[0], dateArr[1]);
let loadingMsg = layer.msg("排班表导出中,请稍候...", { icon: 16, scrollbar: false, time: 0 });
let url = dataUrl + 'proteam/pot/duty/downLoadSchedulingWord?token=' + token + "&date=" + dateStr + "&createDay=" + weekArr.toString();
let xhr = new XMLHttpRequest();
xhr.open("get", url, true);
xhr.responseType = "blob"; // 转换流
xhr.setRequestHeader("encrypt",
sm3(JSON.stringify({
date: dateStr,
createDay: weekArr.toString()
})));
xhr.onload = function () {
layer.close(loadingMsg);
if (this.status === 200) {
let blob = this.response;
var a = document.createElement("a");
var url = window.URL.createObjectURL(blob);
a.href = url;
a.download = dateStr + "排班表" + ".docx"; // 文件名
} else {
layer.msg("服务异常,请稍后重试", { icon: 16, scrollbar: false, time: 2000 });
}
a.click();
window.URL.revokeObjectURL(url);
};
xhr.send();
}
// 清空排班表
function emptySchedulingAjax() {
layer.confirm("确定删除排班表", {
move: false
}, function () {
let dateStr = $('.p-checked').html()
let param = {
'date': dateStr
}
let loadingMsg = layer.msg('数据删除中,请稍候...', { icon: 16, scrollbar: false, time: 0 });
$.ajax({
headers: {
"encrypt": sm3(JSON.stringify(param))
},
url: dataUrl + 'proteam/pot/duty/emptyScheduling?token=' + token,
type: 'POST',
data: param,
dataType: 'json',
success: function (result) {
layer.close(loadingMsg); // 关闭提示层
if (result.code === 200) {
reloadData(1);
parent.layer.msg(result.msg, { icon: 1 })
} else if (result.code === 500) {
layer.alert(result.msg, { icon: 2 })
} else if (result.code === 401) {
logout(1)
}
},
error: function (result) {
layer.close(loadingMsg); // 关闭提示层
layer.msg('服务异常,请稍后重试', { icon: 16, scrollbar: false, time: 2000 });
}
});
})
}
// 刷新排班表
function reloadData(type) {
let dateStr = $('.p-checked').html()
getSchedulingPersonDataAjax(dateStr);
if (!type) {
$('.edit-btn').removeClass("layui-btn-disabled").attr("disabled", false);
}
}
// 值班人员表格
function setTableData(dataList, dateStr) {
let html = '<tr><td></td>';
let dateArr = dateStr.split('~');
let weekArr = getAllDate(dateArr[0], dateArr[1]);
$.each(weekArr, function (index, item) {
html += '<td><p>' + setDayDate(setDate(item)) + '</p><p>' + weekDateArr[index] + '</p></td>'
})
html += '</tr>'
if (dataList && dataList.length > 0 && dataList[0].length > 0) {
for (let i = 0; i < 13; i++) {
if (i === 2 || i === 3) {
html += '<tr><td>' + personTypeArr[i] + '</td><td colspan="7">' + dataList[i][0].userName + '</td></tr>'
} else {
html += '<tr><td>' + personTypeArr[i] + '</td>' + setPerson(dataList[i]) + '</tr>'
}
}
hasData = true;
$('.download-btn').removeClass("layui-btn-disabled").attr("disabled", false);
} else {
html += '<tr><td colspan="8">无排班</td></tr>'
hasData = false;
$('.edit-btn').addClass("layui-btn-disabled").attr("disabled", true);
$('.download-btn').addClass("layui-btn-disabled").attr("disabled", true);
}
$('.classTable').empty().append(html)
}
// 切换日期
function checkedDateRange(data, index) {
$('.date-box').find('p').each(function () {
if ($(this).hasClass('p-checked')) {
$(this).removeClass('p-checked');
}
})
$('.date' + index).addClass('p-checked');
let isOut = $('.date' + index).attr('isOut');
let isWeek = $('.date' + index).attr('isWeek');
if (isOut === '0' && isWeek === '0') {
$('#addScheduling').addClass("layui-btn-disabled").attr("disabled", true);
$('.edit-btn').addClass("layui-btn-disabled").attr("disabled", true);
} else {
$('#addScheduling').removeClass("layui-btn-disabled").attr("disabled", false);
$('.edit-btn').removeClass("layui-btn-disabled").attr("disabled", false);
}
checkedDate = data;
getSchedulingPersonDataAjax(checkedDate);
}
// 赋值值班员
function setPerson(personData) {
let html = '';
if (personData && personData.length > 0) {
$.each(personData, function (index, item) {
html += '<td>' + setEarlyData(item) + '</td>'
})
}
return html;
}
// 设置早班值班员样式
function setEarlyData(value) {
if (value.userName) {
if (value.remark) {
if (value.remark.indexOf('早班') >= 0) {
return '' + value.userName + '<span style="color: #FF0000">(早班)</span>'
} else {
return value.userName;
}
} else {
return value.userName;
}
}
return '';
}
function setDayDate(value) {
if (value) {
return value.substring(5, value.length)
}
return '';
}