var example = null; var pers = null; var form,layer = null; /** * 接收父页面传递的参数(通过函数调用方式) */ function receiveParams(params) { console.log("通过函数接收到的参数:", params) let proId = params.proId; $("#proId").val(proId); let proName= params.proName; $("#proName").text(proName) let contractNum= params.contractNum; $("#contractNum").text(contractNum) let contractAmount= params.contractAmount; $("#contractAmount").text(contractAmount) let teamNum= params.teamNum; $("#teamNum").text(teamNum) let totalNum= params.totalNum; $("#totalNum").text(totalNum) let gxNum= params.gxNum; $("#gxNum").text(gxNum) let attDayNum= params.attDayNum; $("#attDayNum").text(attDayNum) layui.use(['layer', 'form'], function () { layer = layui.layer; form = layui.form; pers = checkPermission(); getGxs(proId,form) //工程信息 getDetailByPro(proId); //小包干协议合同信息 initContractTable(proId); //工序桩位查询 initPositionTable(proId); initStaffTable(proId); $("#searchBt").click(function () { example.ajax.reload(); }); }); } function getDetailByPro(proId) { $.ajax({ type: 'get', url: smz_ht_url + '/dataCount/getDetailByPro', data: { proId: proId }, async: false, success: function (data) { if(data.res==1 || data.res=="1" ){ let l = data.succeed; let workerCost = "技工:" + l.technicianWorkload + "普工:" + l.generalWorkerWorkload; $("#workerCost").text(workerCost); let num = l.technicianWorkload * l.technicianCost + l.generalWorkerWorkload * l.generalWorkerCost; let workload = l.technicianWorkload + "*" + l.technicianCost + "+" + l.generalWorkerWorkload + "*" + l.generalWorkerCost +"=" + num; $("#workload").text(workload); } }, error: function (err) { console.log("获取工程列表出错:", err); } }); } var contractTable, positionTable, staffTable; // 初始化合同信息表格 function initContractTable(proId) { contractTable = $('#contract-table').DataTable({ "searching": false, "processing": true, "serverSide": false, "paging": false, "info": false, "language": { "url": "../../../../js/plugin/datatables/Chinese.lang" }, "ajax": { "url": smz_ht_url + "/dataCount/getDetailByContracts", "type": "get", "data": function (d) { d.proId = proId; }, "dataSrc": function(json) { // 检查响应状态 if (json.res === 1) { return json.obj; // 返回 obj 数组作为数据源 } else { // 处理错误情况 layer.msg(json.resMsg || '数据加载失败'); return []; } }, "error": function (xhr, textStatus, errorThrown) { var msg = xhr.responseText; console.log(msg); var response = JSON.parse(msg); var code = response.code; var message = response.message; if (code == 400) { layer.msg(message); } else if (code == 401) { localStorage.removeItem("token"); layer.msg("token过期,请先登录", {shift: -1, time: 1000}, function () { location.href = smz_ht_url + '/login.html'; }); } else if (code == 403) { console.log("未授权:" + message); layer.msg('未授权'); } else if (code == 500) { console.log('系统错误:' + message); } } }, "drawCallback": function() { var thisDataTable = $('#contract-table').DataTable(); $("#contract-table_wrapper .pagination").append("
  • " + "" + "确认
  • "); $('#dataTable-btn-contract').click(function (e) { if ($("#changePageContract").val() && $("#changePageContract").val() > 0) { var redirectpage = $("#changePageContract").val() - 1; } else { var redirectpage = 0; } thisDataTable.page(redirectpage).draw('page'); }); $("#changePageContract").keypress(function (e) { if(event.keyCode==13){ if ($("#changePageContract").val() && $("#changePageContract").val() > 0) { var redirectpage = $("#changePageContract").val() - 1; } else { var redirectpage = 0; } thisDataTable.page(redirectpage).draw('page'); } }); }, "dom": "<'dt-toolbar'r>t<'dt-toolbar-footer'<'col-sm-4 col-xs-4 hidden-xs'i><'col-xs-8 col-sm-8' p v>><'dt-table-length'>", "columns": [ { "data": "contractCode", "orderable": false, 'width': '200px', "render": function (data, type, row) { var id = row['id']; var proId = row['proId']; var contractCode = row['contractCode']; var html = ''; return html } }, {"data": "subName", "orderable": false, 'width': '150px'}, {"data": "partyUser", "orderable": false, 'width': '80px'}, {"data": "teamName", "orderable": false, 'width': '80px'}, {"data": "contractMoney", "orderable": false, 'width': '100px'}, {"data": "dateRange", "orderable": false, 'width': '150px'}, {"data": "gxNum", "orderable": false, 'width': '80px'}, {"data": "contractDate", "orderable": false, 'width': '100px'}, { "data": "", "orderable": false, 'width': '80px', "render": function (data, type, row) { var contractStatus = row['contractStatus']; if(contractStatus == 1 || contractStatus =="1"){ return '终止'; }else{ return '生效中'; } } }, { "data": "", 'width': '100px', "defaultContent": "", "orderable": false, "render": function (data, type, row) { let contractId = row['id']; let html = ''; return html } } ], "order": [] }); } function downloadContract(contractId) { var loadingIndex = layer.load(2, {shade: [0.3, '#000']}); $.ajax({ type: 'GET', url: smz_ht_url + '/teamSmallBagDryTreaty/downloadContract', data: { contractId: contractId, downloadType: "1" }, xhrFields: { responseType: 'blob' // 关键:设置响应类型为blob }, beforeSend: function(xhr) { var token = localStorage.getItem("smz-token"); if (token) { xhr.setRequestHeader('Authorization', 'Bearer ' + token); } }, success: function(data, textStatus, xhr) { layer.close(loadingIndex); // 获取文件名 var contentDisposition = xhr.getResponseHeader('Content-Disposition'); var filename = 'contract.pdf'; if (contentDisposition) { var filenameMatch = contentDisposition.match(/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/); if (filenameMatch && filenameMatch[1]) { filename = filenameMatch[1].replace(/['"]/g, ''); try { filename = decodeURIComponent(filename); } catch (e) { // 解码失败使用原文件名 } } } // 创建下载链接 var url = window.URL.createObjectURL(data); var a = document.createElement('a'); a.href = url; a.download = filename; document.body.appendChild(a); a.click(); window.URL.revokeObjectURL(url); document.body.removeChild(a); layer.msg('下载成功'); }, error: function(xhr, textStatus, errorThrown) { layer.close(loadingIndex); } }); } /** * 小包干合同详情 * */ function contractView(id,proId) { var height = '85%'; var width = '91%'; var index = parent.layer.open({ title: ['小包干合同详情','color:#3B70A1;background-color:#E8ECEB;font-size:20px'], type: 2, content: 'contractStatView.html', area: [width, height], maxmin: false, btn: ['关闭'], success: function (layero, index) { // 延迟执行,确保 iframe 完全加载 setTimeout(() => { var iframe = layero.find("iframe")[0] if (iframe && iframe.contentWindow && iframe.contentWindow.receiveParamsContract) { iframe.contentWindow.receiveParamsContract({ id: id, proId: proId, }) } }, 100) } }); } // 初始化岗位信息表格 function initPositionTable(proId) { positionTable = $('#position-table').DataTable({ "searching": false, "processing": true, "serverSide": true, "pagingType": "full_numbers", "language": { "url": "../../../../js/plugin/datatables/Chinese.lang" }, "ajax": { "url": smz_ht_url + "/dataCount/getDetailGxList", "type": "post", "data": function (d) { d.proId = proId; d.gxId = $("#gxId").val(); }, "error": function (xhr, textStatus, errorThrown) { var msg = xhr.responseText; console.log(msg); var response = JSON.parse(msg); var code = response.code; var message = response.message; if (code == 400) { layer.msg(message); } else if (code == 401) { localStorage.removeItem("token"); layer.msg("token过期,请先登录", {shift: -1, time: 1000}, function () { location.href = smz_ht_url + '/login.html'; }); } else if (code == 403) { console.log("未授权:" + message); layer.msg('未授权'); } else if (code == 500) { console.log('系统错误:' + message); } } }, "lengthMenu": [[10, 20, 50], [10, 20, 50]], "drawCallback": function() { var thisDataTable = $('#position-table').DataTable(); $("#position-table_wrapper .pagination").append("
  • " + "" + "确认
  • "); $('#dataTable-btn-position').click(function (e) { if ($("#changePagePosition").val() && $("#changePagePosition").val() > 0) { var redirectpage = $("#changePagePosition").val() - 1; } else { var redirectpage = 0; } thisDataTable.page(redirectpage).draw('page'); }); $("#changePagePosition").keypress(function (e) { if(event.keyCode==13){ if ($("#changePagePosition").val() && $("#changePagePosition").val() > 0) { var redirectpage = $("#changePagePosition").val() - 1; } else { var redirectpage = 0; } thisDataTable.page(redirectpage).draw('page'); } }); }, "dom": "<'dt-toolbar'r>t<'dt-toolbar-footer'<'col-sm-4 col-xs-4 hidden-xs'i><'col-xs-8 col-sm-8' p v>><'dt-table-length'l>", "columns": [ { width: '40px', "orderable": false, data: function (row, type, set, meta) { var c = meta.settings._iDisplayStart + meta.row + 1; return c; } }, {"data": "gxName", "orderable": false, 'width': '120px'}, {"data": "gxZw", "orderable": false, 'width': '80px'}, {"data": "attPersonNum", "orderable": false, 'width': '80px'}, {"data": "attDayNum", "orderable": false, 'width': '80px'}, {"data": "attUserName", "orderable": false, 'width': '150px'}, {"data": "contractCode", "orderable": false, 'width': '200px'}, { "data": "", 'width': '80px', "defaultContent": "", "orderable": false, "render": function (data, type, row) { var id = row['gxId']; var html = ''; return html } } ], "order": [] }); } /** * 小包干工序桩位详情 * */ function gxView(id) { var height = '85%'; var width = '91%'; var index = parent.layer.open({ title: ['小包干工序桩位详情','color:#3B70A1;background-color:#E8ECEB;font-size:20px'], type: 2, content: 'gxStatView.html', area: [width, height], maxmin: false, btn: ['关闭'], success: function (layero, index) { // 延迟执行,确保 iframe 完全加载 setTimeout(() => { var iframe = layero.find("iframe")[0] if (iframe && iframe.contentWindow && iframe.contentWindow.receiveParamsGx) { iframe.contentWindow.receiveParamsGx({ id: id, }) } }, 100) } }); } // 初始化人员信息表格 function initStaffTable(proId) { staffTable = $('#staff-table').DataTable({ "searching": false, "processing": true, "serverSide": true, "pagingType": "full_numbers", "language": { "url": "../../../../js/plugin/datatables/Chinese.lang" }, "ajax": { "url": smz_ht_url + "/dataCount/getDetailPersonList", "type": "POST", "data": function (d) { d.proId = proId; d.userName = $("#userName").val(); d.entryAndExitStatus = $("#entryAndExitStatus").val(); }, "error": function (xhr, textStatus, errorThrown) { var msg = xhr.responseText; console.log(msg); var response = JSON.parse(msg); var code = response.code; var message = response.message; if (code == 400) { layer.msg(message); } else if (code == 401) { localStorage.removeItem("token"); layer.msg("token过期,请先登录", {shift: -1, time: 1000}, function () { location.href = smz_ht_url + '/login.html'; }); } else if (code == 403) { console.log("未授权:" + message); layer.msg('未授权'); } else if (code == 500) { console.log('系统错误:' + message); } } }, "lengthMenu": [[10, 20, 50], [10, 20, 50]], "drawCallback": function() { var thisDataTable = $('#staff-table').DataTable(); $("#staff-table_wrapper .pagination").append("
  • " + "" + "确认
  • "); $('#dataTable-btn-staff').click(function (e) { if ($("#changePageStaff").val() && $("#changePageStaff").val() > 0) { var redirectpage = $("#changePageStaff").val() - 1; } else { var redirectpage = 0; } thisDataTable.page(redirectpage).draw('page'); }); $("#changePageStaff").keypress(function (e) { if(event.keyCode==13){ if ($("#changePageStaff").val() && $("#changePageStaff").val() > 0) { var redirectpage = $("#changePageStaff").val() - 1; } else { var redirectpage = 0; } thisDataTable.page(redirectpage).draw('page'); } }); }, "dom": "<'dt-toolbar'r>t<'dt-toolbar-footer'<'col-sm-4 col-xs-4 hidden-xs'i><'col-xs-8 col-sm-8' p v>><'dt-table-length'>", "columns": [ { width: '40px', "orderable": false, data: function (row, type, set, meta) { var c = meta.settings._iDisplayStart + meta.row + 1; return c; } }, {"data": "userName", "orderable": false, 'width': '80px'}, {"data": "phone", "orderable": false, 'width': '120px'}, {"data": "postName", "orderable": false, 'width': '120px'}, {"data": "attDayNum", "orderable": false, 'width': '80px'}, {"data": "gxNum", "orderable": false, 'width': '80px'}, {"data": "contractCode", "orderable": false, 'width': '200px'}, {"data": "entryAndExitStatus", "orderable": false, 'width': '80px'}, { "data": "", 'width': '80px', "defaultContent": "", "orderable": false, "render": function (data, type, row) { // var idCard = row['idCard']; // var html = ''; var html = ""; return html } } ], "order": [] }); } /** * 小包干人员详情 * */ function personnelView(item) { let idCard = item.idCard var height = '85%'; var width = '91%'; var index = parent.layer.open({ title: ['小包干人员详情','color:#3B70A1;background-color:#E8ECEB;font-size:20px'], type: 2, content: 'personnelStatView.html', area: [width, height], maxmin: false, btn: ['关闭'], success: function (layero, index) { // 延迟执行,确保 iframe 完全加载 setTimeout(() => { var iframe = layero.find("iframe")[0] if (iframe && iframe.contentWindow && iframe.contentWindow.receiveParamsPersonnel) { iframe.contentWindow.receiveParamsPersonnel({ idCard: idCard, }) } }, 100) } }); } // 搜索功能 function searchPosition() { positionTable.ajax.reload(); } function resetPosition() { $('#gxId').val(''); // 重新渲染 select 下拉框 layui.form.render("select"); positionTable.ajax.reload(); } function exportPosition() { var proId = $('#proId').val(); var gxId = $('#gxId').val(); var token = localStorage.getItem("smz-token"); var loadingMsg = layer.msg('下载中,请稍候...', {icon: 16, scrollbar: false, time: 0}); var url = smz_ht_url + "/dataCount/downloadDetailGxExcel?proId=" + proId +"&gxId=" + gxId + "&token=" + token; var xhr = new XMLHttpRequest(); xhr.open("get", url, true); xhr.responseType = "blob"; // 转换流 xhr.onload = function () { layer.close(loadingMsg); if (this.status === 200) { var 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(); } function searchStaff() { staffTable.ajax.reload(); } function resetStaff() { $('#userName').val(''); $('#entryAndExitStatus').val(''); // 重新渲染 select 下拉框 layui.form.render("select"); staffTable.ajax.reload(); } function exportStaff() { var proId = $('#proId').val(); var entryAndExitStatus = $('#entryAndExitStatus').val(); var userName = $('#userName').val(); var token = localStorage.getItem("smz-token"); var loadingMsg = layer.msg('下载中,请稍候...', {icon: 16, scrollbar: false, time: 0}); var url = smz_ht_url + "/dataCount/downloadDetailPersonExcel?proId=" + proId +"&entryAndExitStatus=" + entryAndExitStatus +"&userName=" + userName + "&token=" + token; var xhr = new XMLHttpRequest(); xhr.open("get", url, true); xhr.responseType = "blob"; // 转换流 xhr.onload = function () { layer.close(loadingMsg); if (this.status === 200) { var 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(); }