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 += '' html += '' $('.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 = ''; let dateArr = dateStr.split('~'); let weekArr = getAllDate(dateArr[0], dateArr[1]); $.each(weekArr, function (index, item) { html += '

' + setDayDate(setDate(item)) + '

' + weekDateArr[index] + '

' }) html += '' if (dataList && dataList.length > 0 && dataList[0].length > 0) { for (let i = 0; i < 13; i++) { if (i === 2 || i === 3) { html += '' + personTypeArr[i] + '' + dataList[i][0].userName + '' } else { html += '' + personTypeArr[i] + '' + setPerson(dataList[i]) + '' } } hasData = true; $('.download-btn').removeClass("layui-btn-disabled").attr("disabled", false); } else { html += '无排班' 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 += '' + setEarlyData(item) + '' }) } return html; } // 设置早班值班员样式 function setEarlyData(value) { if (value.userName) { if (value.remark) { if (value.remark.indexOf('早班') >= 0) { return '' + value.userName + '(早班)' } else { return value.userName; } } else { return value.userName; } } return ''; } function setDayDate(value) { if (value) { return value.substring(5, value.length) } return ''; }