284 lines
10 KiB
JavaScript
284 lines
10 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);
|
||
// 导入排班数据
|
||
$('.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();
|
||
} |