214 lines
7.6 KiB
JavaScript
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 '';
|
|
} |