jjsp_web/bns/js/dutyTask/ticketInfo.js

269 lines
9.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

function getUrlParam(key) {
var href = window.location.href;
var url = href.split("?");
if (url.length <= 1) {
return "";
}
var params = url[1].split("&");
for (var i = 0; i < params.length; i++) {
var param = params[i].split("=");
if (key == param[0]) {
return param[1];
}
}
}
let objData = null;
let ticketId = getUrlParam('ticketId');
if (ticketId) {
setParams(ticketId);
}
function setParams(params) {
let ticketId = params;
layui.use(['form', 'layer'], function () {
form = layui.form;
layer = layui.layer;
getTicketInfo(ticketId);
})
}
function getTicketInfo(ticketId) {
let param = {
ticketId: ticketId,
};
$.ajax({
headers: {
"encrypt": sm3(JSON.stringify(param))
},
url: dataUrl + 'proteam/pot/ticket/getTicketInfo?token=' + token,
data: param,
type: 'POST',
async: true,
success: function (result) {
console.log(result);
if (result.code === 200) {
setTicketInfo(result.data);
} else if (result.code === 500) {
} else if (result.code === 401) {
logout(1)
}
}, error: function () {
}
});
}
// 赋值作业票信息
function setTicketInfo(obj) {
objData = obj;
$('#titleValue').html(obj.ticketName);
$('#proName').html(obj.proName);
$('#ticketNo').html(obj.ticketNo);
$('#orgName').html(obj.orgName);
$('#jlUnit').html(obj.jlUnit);
$('#sgUnit').html(obj.sgUnit);
$('#teamName').html(obj.teamName);
$('#assessmentRiskLevel').html(setRiskLevel(obj.assessmentRiskLevel));
$('#reAssessmentRiskLevel').html(setRiskLevel(obj.reAssessmentRiskLevel));
$('#content').html(obj.content);
$('#workPosition').html(obj.workPosition);
$('#mainRisk').html(obj.mainRisk);
$('#change').html(obj.change);
$('#control').html(obj.control);
$('#startTime').html(obj.startTime);
$('#endTime').html(obj.endTime);
$('#workNum').html(obj.workNum);
$('#workManager').html(obj.workManager);
$('#safetyManager').html(obj.safetyManager);
$('#technologyManager').html(obj.technologyManager);
$('#issueDate').html(obj.issueDate);
$('#workManager2').html(obj.workManager);
$('#checkUser').html(obj.checkUser);
$('#safetyManager2').html(obj.safetyManager2);
$('#jlUser').html(obj.jlUser);
$('#yzManager').html(obj.yzManager);
$('#remark').html(obj.remark);
// 作业过程风险控制措施
let controlList = obj.controlList;
if (controlList && controlList.length > 0) {
let html = '';
$.each(controlList, function (index, item) {
html += '<p>' + item + '</p>'
})
$('#controlList').html(html);
}
// 施工人员赋值
let workList = obj.workList;
if (workList && workList.length > 0) {
let html = '';
$.each(workList, function (index, item) {
html += '<span style="margin:0 5px;">' + item + '</span>'
})
$('#workList').html(html);
}
// 全员签名
let workList2 = obj.workList2;
if (workList2 && workList2.length > 0) {
let html = setWordUserHtml(workList2);
$('#workList2').after(html);
} else {
$('#workList2').after('<tr><td></td><td></td><td></td><td></td><td></td><td></td></tr>');
}
// 临时人员
let lsWorkList = obj.lsWorkList;
if (lsWorkList && lsWorkList.length > 0) {
let html = setWordUserHtml(lsWorkList);
$('#lsWorkList').after(html);
} else {
$('#lsWorkList').after('<tr><td></td><td></td><td></td><td></td><td></td><td></td></tr>');
}
}
// 设置风险等级颜色
function setRiskLevel(value) {
if (value === '2' || value === '2级' || value === '二级') {
return '二级';
} else if (value === '3' || value === '3级' || value === '三级') {
return '三级';
} else if (value === '4' || value === '4级' || value === '四级') {
return '四级';
} else if (value === '5' || value === '5级' || value === '五级') {
return '五级';
} else {
return '';
}
}
// 全员签名、临时人员
function setWordUserHtml(list) {
let length = list.length;
let zs = Math.floor(length / 6);
let xs = length - (zs * 6);
let html = '';
for (let i = 1; i <= zs; i++) {
html += '<tr>' +
'<td>' + list[((i * 6) - 6)] + '</td>' +
'<td>' + list[((i * 6) - 5)] + '</td>' +
'<td>' + list[((i * 6)) - 4] + '</td>' +
'<td>' + list[((i * 6)) - 3] + '</td>' +
'<td>' + list[((i * 6)) - 2] + '</td>' +
'<td>' + list[((i * 6)) - 1] + '</td>' +
'</tr>'
}
if (xs === 1) {
html += '<tr><td>' + list[(zs * 6)] + '</td><td colspan="5"></td></tr>'
} else if (xs === 2) {
html += '<tr><td>' + list[(zs * 6)] + '</td><td>' + list[(zs * 6) + 1] + '</td><td colspan="4"></td></tr>'
} else if (xs === 3) {
html += '<tr><td>' + list[(zs * 6)] + '</td><td>' + list[(zs * 6) + 1] + '</td><td>' + list[(zs * 6) + 2] + '</td><td colspan="3"></td></tr>'
} else if (xs === 4) {
html += '<tr><td>' + list[(zs * 6)] + '</td><td>' + list[(zs * 6) + 1] + '</td><td>' + list[(zs * 6) + 2] + '</td><td>' + list[(zs * 6) + 3] + '</td><td colspan="2"></td></tr>'
} else if (xs === 5) {
html += '<tr><td>' + list[(zs * 6)] + '</td><td>' + list[(zs * 6) + 1] + '</td><td>' + list[(zs * 6) + 2] + '</td><td>' + list[(zs * 6) + 3] + '</td><td>' + list[(zs * 6) + 4] + '</td><td></td></tr>'
}
return html;
}
// 下载作业票文件
function downLoadTicket() {
// exportPDF('mainBox', '文件标题')
exportPDF('mainBox', objData.ticketNo);
}
//避免分页被截断
const exportPDF = (pdfDom, title) => {
const A4_WIDTH = 592.28;
const A4_HEIGHT = 841.89;
// $myLoading 自定义等待动画组件,实现导出事件的异步等待交互
// dom的id。
let target = document.getElementById(pdfDom);
let pageHeight = target.scrollWidth / A4_WIDTH * A4_HEIGHT;
// 获取分割dom此处为class类名为item的dom
let lableListID = target.getElementsByClassName('item');
// let lableListID = document.getElementsByClassName('item');
// 进行分割操作当dom内容已超出a4的高度则将该dom前插入一个空dom把他挤下去分割
for (let i = 0; i < lableListID.length; i++) {
let multiple = Math.ceil((lableListID[i].offsetTop + lableListID[i].offsetHeight) / pageHeight);
if (isSplit(lableListID, i, multiple * pageHeight)) {
let divParent = lableListID[i].parentNode; // 获取该div的父节点
let newNode = document.createElement('div');
newNode.className = 'emptyDiv';
newNode.style.background = '#01195e';
let _H = multiple * pageHeight - (lableListID[i].offsetTop + lableListID[i].offsetHeight);
newNode.style.height = _H + 30 + 'px';
newNode.style.width = '100%';
let next = lableListID[i].nextSibling; // 获取div的下一个兄弟节点
// 判断兄弟节点是否存在
// console.log(next);
if (next) {
// 存在则将新节点插入到div的下一个兄弟节点之前即div之后
divParent.insertBefore(newNode, next);
} else {
// 不存在则直接添加到最后,appendChild默认添加到divParent的最后
divParent.appendChild(newNode);
}
}
}
pdf(pdfDom, title);
}
// 判断是否需要添加空白div
const isSplit = (nodes, index, pageHeight) => {
// 计算当前这块dom是否跨越了a4大小以此分割
if (nodes[index].offsetTop + nodes[index].offsetHeight < pageHeight && nodes[index + 1] && nodes[index + 1].offsetTop + nodes[index + 1].offsetHeight > pageHeight) {
return true;
}
return false;
}
const pdf = (pdfDom, title) => {
// 避免出现浏览器滚动条导致的内容不全处理
document.body.scrollTop = document.documentElement.scrollTop = 0
//div内部滚动导致内容不全处理
// document.getElementById('app').style.height = 'auto';
setTimeout(() => {
html2canvas(document.getElementById(pdfDom), {
allowTaint: true,
scale: 3,
dpi: 300,
// height: document.getElementById('upload').scrollHeight,
// windowHeight: document.getElementById('upload').scrollHeight
}).then(canvas => {
var contentWidth = canvas.width;
var contentHeight = canvas.height;
//一页pdf显示html页面生成的canvas高度;
var pageHeight = contentWidth / 592.28 * 841.89;
//未生成pdf的html页面高度
var leftHeight = contentHeight;
//页面偏移
var position = 0;
//a4纸的尺寸[595.28,841.89]html页面生成的canvas在pdf中图片的宽高
var imgWidth = 595.28;
var imgHeight = 592.28 / contentWidth * contentHeight;
var pageData = canvas.toDataURL('image/jpeg', 1.0);
var pdf = new jsPDF('', 'pt', 'a4');
//有两个高度需要区分一个是html页面的实际高度和生成pdf的页面高度(841.89)
//当内容未超过pdf一页显示的范围无需分页
if (leftHeight < pageHeight) {
pdf.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight);
} else {
while (leftHeight > 0) {
pdf.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight)
leftHeight -= pageHeight;
position -= 841.89;
//避免添加空白页
if (leftHeight > 0) {
pdf.addPage();
}
}
}
pdf.save(`${title}.pdf`);
})
}, 300)
}