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

284 lines
10 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, 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);
// 导入排班数据
$('.import-btn').on('click',function(){
$("#import-excel").trigger("click");
});
});
function setBtns() {
let html = '';
if (superUsers.indexOf(user.nickName) > -1) {
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("encryption","encryption");
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);
$('.import-btn').addClass("layui-btn-disabled").attr("disabled", true);
}
}
// 值班人员表格
function setTableData(dataList, dateStr) {
let isWeek = $('.p-checked').attr('isWeek');
let isOut = $('.p-checked').attr('isOut');
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">' + setValueData(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);
if(isWeek === '1' || isOut === '1'){
$('.edit-btn').removeClass("layui-btn-disabled").attr("disabled", false);
$('.import-btn').addClass("layui-btn-disabled").attr("disabled", true);
}
} 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);
if(isWeek === '1' || isOut === '1'){
$('.import-btn').removeClass("layui-btn-disabled").removeAttr('disabled');
}
}
$('.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);
$('.import-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);
$('.import-btn').removeClass("layui-btn-disabled").attr("disabled", true);
}
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 '';
}
// 空值赋值
function setValueData(value) {
if (!value) {
return '';
}
return value;
}
$("#import-excel").change(function () {
if($(this).val()){
let files = $(this)[0].files[0];
let fileType = files.name.substring(
files.name.lastIndexOf(".") + 1,
files.name.length
);
if (fileType === "xlsx" || fileType === "xls") {
let dateStr = $('.p-checked').html()
excelUpload10(this,dateStr,dataUrl + "proteam/pot/duty/importExcel?token=" + token)
} else {
layer.msg("仅支持上传文件格式为xlx、xlsx", {icon: 5,});
$("#import-excel").val("");
}
}
});
// 排班模板下载
function downloadExcelModel(){
let loadingMsg = layer.msg('模板下载中,请稍候...', {icon: 16, scrollbar: false, time: 0});
let url = dataUrl + 'proteam/pot/duty/downLoadExcelModel?token=' + token;
let xhr = new XMLHttpRequest();
xhr.open("get", url, true);
xhr.responseType = "blob"; // 转换流
xhr.setRequestHeader("encryption","encryption");
xhr.setRequestHeader("encrypt",
sm3(JSON.stringify({})));
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 = "排班表-导入模板.xlsx"; // 文件名
} else {
layer.msg('服务异常,请稍后重试', {icon: 16, scrollbar: false, time: 2000});
}
a.click()
window.URL.revokeObjectURL(url)
};
xhr.send();
}