269 lines
9.9 KiB
JavaScript
269 lines
9.9 KiB
JavaScript
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)
|
||
} |