let form, layer, table, tableIns, laydate, formSelects; let pageNum = 1, limitSize = 10; // 默认第一页,分页数量为10 let user = getUser(), riskLevelList, proStatusList, evaluationStatusList, ballStatusList, bidProList, orgList; let searchList = [ {'titleName': '督查人', 'titleCode': 'inspector', 'isChecked': false, 'isSelect': false}, {'titleName': '评价状态', 'titleCode': 'evaluationStatus', 'isChecked': false, 'isSelect': true}, {'titleName': '建管单位', 'titleCode': 'buildCode', 'isChecked': true, 'count': 2, 'isSelect': true,'isSearch': true}, {'titleName': '风险等级', 'titleCode': 'riskLevel', 'isChecked': true, 'count': 3, 'isSelect': true}, {'titleName': '施工状态', 'titleCode': 'proStatus', 'isChecked': false, 'count': 3, 'isSelect': true}, {'titleName': '工程名称', 'titleCode': 'bidName', 'isChecked': false, 'count': 1, 'isSelect': true, 'isSearch': true}, {'titleName': '班组长', 'titleCode': 'foreman', 'isChecked': false, 'isSelect': false}, {'titleName': '关键字', 'titleCode': 'keyWord', 'isChecked': true, 'isSelect': false}, {'titleName': '球机状态', 'titleCode': 'ballStatus', 'isChecked': false, 'isSelect': true}, {'titleName': '日期', 'titleCode': 'ballStatus', 'isChecked': false, 'isSelect': false,'isTime':true} ]; layui.config({ base: "../../js/layui/", //此处路径请自行处理, 可以使用绝对路径 }).extend({ formSelects: 'formSelects-v4' }).use(['form', 'layer', 'table', 'laydate', 'formSelects'], function () { form = layui.form; layer = layui.layer; table = layui.table; laydate = layui.laydate; formSelects = layui.formSelects; laydate.render({ elem: '#workDay', //指定元素 元素选择器 type: 'date', //选择时间类型 可选值:year(年) month(年月) date(年月日) time(时分秒) datetime(年月日时分秒) trigger: 'click', range: true, format: 'yyyy-MM-dd', //时间格式 常用时间格式:yyyy-MM-dd HH:mm:ss max: Date.parse(new Date()), btns: ['now', 'confirm'], //选择框右下角显示的按钮 清除-现在-确定 }); checkedDate = getNowTime(); $('#workDay').val(getNowTime() + " - " + getNowTime()) riskLevelList = getRiskLevelSelect('risk_level'); proStatusList = getRiskLevelSelect('work_status'); evaluationStatusList = getRiskLevelSelect('evaluate_status'); ballStatusList = getRiskLevelSelect('ball_status'); bidProList = getProSelected('2'); orgList = getOrgNumAndRate(1); setOrg(); setBidPro(); setRiskLevel(); pages(1, 10, 1); }) function pages(pageNum, pageSize, typeNum) { let params = getReqParams(pageNum, pageSize, typeNum); $.ajax({ headers: { "encrypt": sm3(JSON.stringify(params)) }, url: dataUrl + "proteam/pot/todayTask/getTodayTaskList?token=" + token, data: params, type: 'POST', async: false, success: function (result) { if (result.code === 200) { if (result.data) { initTable(result.data, result.limit, result.curr) laypages(result.count, result.curr, result.limit) resetContent() } } else if (result.code === 500) { layer.alert(result.msg, {icon: 2}) } else if (result.code === 401) { logout(1); } }, error: function () { } }); } function laypages(total, page, limit) { layui.use(['laypage'], function () { let laypage = layui.laypage; laypage.render({ elem: 'voi-page', count: total, curr: page, limit: limit, limits: [10,20,50,100,200,500], layout: ['prev', 'page', 'next', 'skip', 'count', 'limit'], groups: 5, jump: function (obj, first) { if (!first) { pageNum = obj.curr, limitSize = obj.limit; pages(obj.curr, obj.limit, null); } } }); }) } /*初始化表格*/ function initTable(dataList, limit, page) { tableIns = table.render({ elem: "#todayTaskTable", height: "full-120", data: dataList, cols: [ [ //表头 { fixed: 'left', title: "序号", width: 100, unresize: true, align: "center", templet: function (d) { return (page - 1) * limit + d.LAY_INDEX; } }, { fixed: 'left', field: "buildCode", title: "建管单位", width: 120, sort: true, unresize: false, align: "center", }, { fixed: 'left', field: "bidName", title: "工程名称", width: 250, unresize: false, sort: true, align: "center", }, { fixed: 'left', title: "工作内容", width: 250, unresize: false, sort: true, align: "center", style: "height:101.5px;", templet: function (d) { if (d.content) { if (d.content.length > 60) { return '' + d.content.substring(0, 60) + '...' } else { return '' + d.content + '' } } else { return ''; } } }, { field: "riskLevel", title: "风险等级", width: 120, unresize: false, sort: true, align: "center", templet: function (d) { let html = ''; if (d.riskLevel === '2') { html += '二级' } else if (d.riskLevel === '3') { html += '三级' } else if (d.riskLevel === '4') { html += '四级' } else if (d.riskLevel === '5') { html += '五级' } return html; } }, { title: "视频监控", width: 120, unresize: false, align: "center", sort: true, templet: function (d) { let html = ''; if (d.ballStatus != null) { if (d.ballStatus === '1' && d.workDay === getDate()) { html += '' } else { html += '' } } return html; } }, { field: "proStatus", title: "施工状态", width: 120, unresize: false, sort: true, align: "center", }, { title: "预警状态", width: 150, unresize: false, sort: true, align: "center", templet: function (d) { let earlyWarningStatus = d.earlyWarningStatus let html = ''; if (earlyWarningStatus) { let earlyWarningStatusArr = earlyWarningStatus.split(','); $.each(earlyWarningStatusArr, function (index, item) { if (item) { html += '' + item + '
'; } }) } else { html = '正常施工' } return html; } }, { title: "班组长", width: 120, unresize: false, sort: true, align: "center", templet: function (d) { return '' + setValue2(d.foreman) + '
' + setValue2(d.foremanPhone) + '' } }, { field: "kgTime", title: "开工时长", width: 150, unresize: false, sort: true, align: "center", }, { field: "kjTime", title: "球机在线时长", width: 200, unresize: false, align: "center", sort: true, templet: function (d) { let html = ''; if (d.kjTime == 0.0 || parseFloat(d.kgTime) - parseFloat(d.kjTime) > 0) { html += '' + d.kjTime + '' } else { html += '' + d.kjTime + '' } return html; } }, { title: "评价状态", width: 200, unresize: false, align: "center", sort: true, templet: function (d) { let html = ''; if (d.evaluationStatus === '0') { html += '未评价' } else if (d.evaluationStatus === '1') { html += '已评价' } return html; } }, { field: "isStop", title: "到岗履职", width: 150, unresize: false, sort: true, align: "center", templet: function (d) { return '业主:' + d.yzDuty + '
监理:' + d.jlDuty + '
施工:' + d.sgDuty + ''; } }, { field: "inspector", title: "督查人", width: 150, unresize: false, sort: true, align: "center", }, { field: "supervisionTime", title: "督查时长(分)", width: 200, unresize: false, sort: true, align: "center", }, { title: "违章记录", width: 140, unresize: false, sort: true, align: "center", templet: function (d) { return ''+d.voiNum+''; } }, ], ], limit: limit, done: function (res, curr, count) { $(".layui-table-main tr").each(function (index, val) { $($(".layui-table-fixed .layui-table-body tbody tr")[index]).height($(val).height()); }); //动态监听表体高度变化,冻结行跟着改变高度 $(".layui-table-body tr").resize(function () { $(".layui-table-body tr").each(function (index, val) { $($(".layui-table-fixed .layui-table-body table tr")[index]).height($(val).height()); }); }); //初始化高度,使得冻结行表体高度一致 $(".layui-table-body tr").each(function (index, val) { $($(".layui-table-fixed .layui-table-body table tr")[index]).height($(val).height()); }); table.resize("todayTaskTable"); count || this.elem.next(".layui-table-view").find(".layui-table-header").css("display", "inline-block"); count || this.elem.next(".layui-table-view").find(".layui-table-box").css("overflow", "auto"); $('#todayTaskTable').next().find('.layui-table-body').find("table").find("tbody").children("tr").on('dblclick', function () { let id = JSON.stringify($('#todayTaskTable').next().find('.layui-table-body').find("table").find("tbody").find(".layui-table-hover").data('index')); let obj = res.data[id]; openRemotePatrol(obj.id, obj.puid, obj.tCode, obj.twCode, obj.tdCode, obj.passWay); }); }, }); table.on('sort(todayTask)',function (obj){ console.log(obj) $(".layui-table-main tr").each(function (index, val) { $($(".layui-table-fixed .layui-table-body tbody tr")[index]).height($(val).height()); }); //动态监听表体高度变化,冻结行跟着改变高度 $(".layui-table-body tr").resize(function () { $(".layui-table-body tr").each(function (index, val) { $($(".layui-table-fixed .layui-table-body table tr")[index]).height($(val).height()); }); }); //初始化高度,使得冻结行表体高度一致 $(".layui-table-body tr").each(function (index, val) { $($(".layui-table-fixed .layui-table-body table tr")[index]).height($(val).height()); }); }) } // 获取参数 function getReqParams(page, limit, type) { let obj = {}; if (!type) { obj = { page: page + "", limit: limit + "", workDay: setValue2($('#workDay').val()), buildCode: setValue2(formSelects.value('buildCode', 'val').toString()), inspector: setValue2($("#inspector").val()), evaluationStatus: setValue2($("#evaluationStatus").val() === '-1' ? '' : $("#evaluationStatus").val()), foreman: setValue2($("#foreman").val()), riskLevel: setValue2(formSelects.value('riskLevel', 'val').toString()), proStatus: setValue2(formSelects.value('proStatus', 'val').toString()), bidName: setValue2(formSelects.value('bidName', 'val').toString()), ballStatus: setValue2($("#ballStatus").val() === '-1' ? '' : $("#ballStatus").val()), keyWord:setValue2($("#keyWord").val()), currentUserId: user.userId + '', isSup: user.isSup, currentUserOrgId: user.orgId }; } else { obj = { page: '1', limit: '10', workDay: getNowTime() + " - " + getNowTime(), buildCode: '', inspector: '', evaluationStatus: '', foreman: '', riskLevel: '', proStatus: '', bidName: '', ballStatus: '', keyWord: '', currentUserId: user.userId + '', isSup: user.isSup, currentUserOrgId: user.orgId }; } return obj; } // 查询/重置 function query(type) { let pattern = new RegExp("[%_<>]"); if (pattern.test($("#foreman").val())) { $("#foreman").val(''); return layer.msg('班组长查询包含特殊字符,请重新输入', { icon: 2, time: 2000 //2秒关闭(如果不配置,默认是3秒) }); } if (pattern.test($("#inspector").val())) { $("#inspector").val(''); return layer.msg('督查人查询包含特殊字符,请重新输入', { icon: 2, time: 2000 //2秒关闭(如果不配置,默认是3秒) }); } pageNum = 1; if (type === 2) { resetForm(); } let buildCode = formSelects.value('buildCode', 'val'); orgList = getOrgNumAndRate(); setOrg(); formSelects.value('buildCode', buildCode) pages(1, limitSize) resetContent(); } /*重置查询条件*/ function resetForm() { $('#workDay').val(getNowTime() + " - " + getNowTime()) formSelects.value('buildCode', []); $("#inspector").val('') $("#evaluationStatus").val('-1') $("#foreman").val('') $("#keyWord").val('') formSelects.value('riskLevel', []); formSelects.value('proStatus', []); formSelects.value('bidName', []); $("#ballStatus").val('-1') layui.form.render() } /*打开远程巡视页面*/ function openRemotePatrol(id, puid, tCode, twCode, tdCode, passWay) { if (user.isSup !== '3') { addSuper(id, "1"); } let layerIndex = layer.open({ id: "remotePatrol", title: false, type: 2, maxmin: false, content: 'remotePatrol/remotePatrol.html', area: ['100%', '100%'], closeBtn: 0, success: function (layero, index) { let iframeWin = window["layui-layer-iframe" + layerIndex]; iframeWin.setParams(id, puid, tCode, twCode, tdCode, passWay); }, end: function () { if (user.isSup !== '3') { addSuper(id, "2"); } } }); } /*添加督查时间*/ function addSuper(classId, type) { let params = { classId: classId, type: type } $.ajax({ headers: { "encrypt": sm3(JSON.stringify(params)) }, url: dataUrl + 'proteam/pot/supervision/insertSupervision?token=' + token, data: params, type: 'POST', async: true, success: function (result) { }, error: function () { } }); } // 违章记录页面 function openVoiRecord(id,bidName,ticketNo,buildCode){ console.log(id + "," + bidName +","+ticketNo + "," +buildCode) let layerIndex = layer.open({ id: "voiRecord", title: false, type: 2, maxmin: false, content: 'remotePatrol/voiRecord.html', area: ['100%', '100%'], closeBtn: 0, success: function (layero, index) { let iframeWin = window["layui-layer-iframe" + layerIndex]; iframeWin.setParams(id, bidName, ticketNo, buildCode); } }); } // 地市站班会数量和占比 function getOrgNumAndRate(type) { let dataList = []; let params = getReqParams(null, null, type); $.ajax({ headers: { "encrypt": sm3(JSON.stringify(params)) }, url: dataUrl + 'proteam/pot/todayTask/getOrgNumAndRate?token=' + token, data: params, type: 'POST', async: false, success: function (result) { let data = result.data; if (result.code === 500) { return layer.alert(data.msg, {icon: 2}) } else if (result.code === 401) { logout(1); } else if (result.code === 200) { if (data && data.length > 0) { $.each(data, function (index, item) { dataList.push(item) }) } } }, error: function () { } }); return dataList; } /*导出*/ function exportData() { let workDay = setValue2($('#workDay').val()), buildCode = setValue2(formSelects.value('buildCode', 'val').toString()), inspector = setValue2($("#inspector").val()), evaluationStatus = setValue2($("#evaluationStatus").val() === '-1' ? '' : $("#evaluationStatus").val()), foreman = setValue2($("#foreman").val()), riskLevel = setValue2(formSelects.value('riskLevel', 'val').toString()), proStatus = setValue2(formSelects.value('proStatus', 'val').toString()), bidName = setValue2(formSelects.value('bidName', 'val').toString()), ballStatus = setValue2($("#ballStatus").val() === '-1' ? '' : $("#ballStatus").val()), keyWord = setValue2($("#keyWord").val()), currentUserId = user.userId + '', isSup = user.isSup, currentUserOrgId = user.orgId; let loadingMsg = layer.msg("数据导出中,请稍候...", {icon: 16, scrollbar: false, time: 0,}); let url = dataUrl + "proteam/pot/todayTask/exportData?workDay=" + workDay + "&buildCode=" + buildCode + "&inspector=" + inspector + "&evaluationStatus=" + evaluationStatus + "&foreman=" + foreman + "&riskLevel=" + riskLevel + "&proStatus=" + proStatus + "&bidName=" + bidName + "&ballStatus=" + ballStatus + "&keyWord=" + keyWord + "¤tUserId=" + currentUserId + "&isSup=" + isSup + "¤tUserOrgId=" + currentUserOrgId + "&token=" + token; let xhr = new XMLHttpRequest(); xhr.open("get", url, true); xhr.responseType = "blob"; // 转换流 xhr.setRequestHeader("encrypt", sm3(JSON.stringify({ workDay: workDay, buildCode: setValue2(formSelects.value('buildCode', 'val').toString()), inspector: setValue2($("#inspector").val()), evaluationStatus: setValue2($("#evaluationStatus").val() === '-1' ? '' : $("#evaluationStatus").val()), foreman: setValue2($("#foreman").val()), riskLevel: setValue2(formSelects.value('riskLevel', 'val').toString()), proStatus: setValue2(formSelects.value('proStatus', 'val').toString()), bidName: setValue2(formSelects.value('bidName', 'val').toString()), ballStatus: setValue2($("#ballStatus").val() === '-1' ? '' : $("#ballStatus").val()), keyWord: setValue2($("#keyWord").val()), currentUserId: user.userId + '', isSup: user.isSup, currentUserOrgId: user.orgId }))); 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 = "今日任务" + getNowDate() + ".xlsx"; // 文件名 } else { layer.msg("数据发生异常,请稍后重试", {icon: 16, scrollbar: false, time: 2000}); } a.click(); window.URL.revokeObjectURL(url); }; xhr.send(); } /*建管单位赋值*/ function setOrg() { let keys = []; $.each(orgList, function (index, item) { let temp = { "name": item.name + "(" + item.num + "," + item.rate + ")", "value": item.code, "titleName": item.name }; keys.push(temp); }) formSelects.data('buildCode', 'local', { arr: keys }); layui.form.render(); } /*工程赋值*/ function setPro() { let keys = []; $.each(signProList, function (index, item) { let temp = { "name": item.name, "value": item.code }; keys.push(temp); }) formSelects.data('proName', 'local', { arr: keys }); layui.form.render(); } /*标段工程赋值*/ function setBidPro() { let keys = []; $.each(bidProList, function (index, item) { let temp = { "name": item.name, "value": item.code }; keys.push(temp); }) formSelects.data('bidName', 'local', { arr: keys }); layui.form.render(); } /* 风险等级赋值 */ function setRiskLevel() { let keys = []; $.each(riskLevelList, function (index, item) { let temp = { "name": item.name, "value": item.code }; keys.push(temp); }) formSelects.data('riskLevel', 'local', { arr: keys }); layui.form.render(); } /* 评价状态赋值 */ function setEvaluationStatu() { let html = ''; $.each(evaluationStatusList, function (index, item) { html += ''; }) $('#evaluationStatus').empty().append(html); layui.form.render(); } /* 球机状态赋值 */ function setBallStauts() { let html = ''; $.each(ballStatusList, function (index, item) { html += ''; }) $('#ballStatus').empty().append(html); layui.form.render(); } /* 施工状态赋值 */ function setProStatus() { let keys = []; $.each(proStatusList, function (index, item) { let temp = { "name": item.name, "value": item.id }; keys.push(temp); }) formSelects.data('proStatus', 'local', { arr: keys }); layui.form.render(); } /*更多选项*/ function openMoreOption() { let width = getMoreWidth().toFixed(0) + "px"; let height = getMoreHeight().toFixed(0) + "px"; let layerIndex = layer.open({ id: "moreOption", title: ['
选择查询条件
', 'font-size:16px;background-color:#f0f0f0;display: flex;align-items: center;'], type: 1, maxmin: false, content: setOptionHtml(), area: [width, height], move: false, shade: 0.1, success: function (layero, index) { layui.form.render(); $(window).resize(function () { if (autoMoreResizeWidth) autoMoreResizeWidth(index); if (autoMoreResizeHeight) autoMoreResizeHeight(index); }); }, }); } /*更多选项赋值*/ function setOptionHtml() { let html = '
'; let cent = '', cent2 = ''; $.each(searchList, function (index, item) { if (index < 5) { if (item.isChecked) { cent += '
' } else { cent += '
' } } else { if (item.isChecked) { cent += '
' } else { cent += '
' } } }) html += '
' + cent + '
' html += '
' + cent2 + '
' html += '
' + '' + '' + '
' return html; } /*确定更多选项*/ function sureOption() { $("#ttTime").css("display","none"); let formList = []; $('input[type=checkbox]').each(function (index) { let html = ''; searchList[index].isChecked = $(this).prop("checked") if ($(this).prop("checked")) { formList.push(setOptionForm(searchList[index])) } }) setFormHtml(formList); layer.closeAll() } /*设置更多选项表单*/ function setOptionForm(item) { let html = ''; if (item.isSelect) { html = '
' + '' + '
' + setSelectSearch(item) + '' + '
' + '
' } else { if(item.isTime){ $("#ttTime").css("display",""); html = '' }else{ html = '
' + '' + '
' + '' + '
' + '
' } } return html; } /* 设置工程/标段工程下拉选带搜索 */ function setSelectSearch(item) { if (item.isSearch) { return '' } } /*给表单内容*/ function setFormHtml(data) { let html = '', cent = '', cent2 = ''; clearBasicForm(); $('.option-form .layui-form-item').eq(0).empty().css('height', '0px') $('.option-form .layui-form-item').eq(1).empty().css('height', '0px') if (data.length > 0 && data.length <= 3) { if (data.length <= 3) { $.each(data, function (index, item) { html += item; }) $(html).appendTo('.workDay'); } } else if (data.length > 3) { $.each(data, function (index, item) { if (index < 3) { html += item; } else if (index >= 3 && index <= 7) { cent += item; } else if (index === 8) { cent2 = item; } }) clearBasicForm(); $(html).appendTo('.workDay'); if (cent != '') { $('.option-form .layui-form-item').eq(0).css('height', '50px') } if (cent2 != '') { $('.option-form .layui-form-item').eq(1).css('height', '50px') } $('.option-form .layui-form-item').eq(0).append(cent); $('.option-form .layui-form-item').eq(1).append(cent2); } layui.form.render(); if (data.length <= 3) { $('.table-box').css('height', 'calc(100% - 60px)') tableIns.getthat().fullHeightGap = '120' } else if (data.length > 3 && data.length <= 8) { $('.table-box').css('height', 'calc(100% - 130px)') tableIns.getthat().fullHeightGap = '170' } else if (data.length === 9) { $('.table-box').css('height', 'calc(100% - 180px)') tableIns.getthat().fullHeightGap = '220' } tableIns.resize(); setRiskLevel(); setOrg(); setBidPro(); setEvaluationStatu(); setBallStauts(); setProStatus(); } /*清空表单的内容*/ function clearBasicForm() { let obj = $('.basic-form .layui-form-item .layui-inline'); $('.basic-form .layui-form-item .layui-inline').each(function () { if ($(this).hasClass('workDay') || $(this).hasClass('btns')) { } else { let classAttr = $(this).attr('class'); obj.remove('.' + classAttr.substring(classAttr.indexOf(' ') + 1, classAttr.length)); } }) } // 重置页面样式 function resetContent() { if ($('.layui-input-inline').length <= 4) { $('.table-box').css('height', 'calc(100% - 60px)') tableIns.getthat().fullHeightGap = '120' } else if ($('.layui-input-inline').length > 4 && $('.layui-input-inline').length <= 9) { $('.table-box').css('height', 'calc(100% - 130px)') tableIns.getthat().fullHeightGap = '170' } else if ($('.layui-input-inline').length === 10) { $('.table-box').css('height', 'calc(100% - 180px)') tableIns.getthat().fullHeightGap = '220' } tableIns.resize(); } function getDate() { let date = new Date(); let year = date.getFullYear(); let month = date.getMonth() + 1; let day = date.getDate(); if (month < 10) { month = "0" + month; } if (day < 10) { day = "0" + day; } return year + "-" + month + "-" + day; }