// 站班会id、设备puid,督查角色类型,不同页面跳转类型,标段工程id let idParam, puidParam, isSupParam, pageTypeParam, bidNoParam,teamId; let form, layer, table, laydate; // 作业票文件、标段工程名称、作业票编号、建管单位、班组负责人身份证号、班组名称、风险等级、标段编码、单项编码 let filePath, bidName, ticketNo, org, workManagerNum, teamName = null, riskLevel = null, bidCode = null, signCode = null; // 统一视频编码18位、统一视频前端编码、统一设备协议编码、视频通道 let tCode, twCode, tdCode, passWay; //班组长 let bzgg = ['52', '55', '4123', '0900102', '49', '0900101', '46', '50', '4116', '4103', '27']; //特种作业 let tzzy = ['445', '4117', '4120', '0900106', '54']; let warnInfo; // 告警信息 let lon, lat,jwd; // 球机经纬度 // 杆塔最大、最小距离单位m let distanceList = getRiskLevelSelect('distance'); let content; // 定义数组存储页面索引 let indexArr = []; // 图片预览 let viewer, isViewer = false; let viewer2, isViewer2 = false; function setParams(id, puid, tCodeParam, twCodeParam, tdCodeParam, passWayParam, isSup, pageType, bidNo) { // 页面加载自动获取焦点 $('#startTime').focus(); console.log(distanceList) idParam = id; puidParam = puid; isSupParam = isSup; pageTypeParam = pageType; bidNoParam = bidNo; setBtns(); console.log("classId:" + id + "puid:" + puid) localStorage.setItem("esc", 'esc') layui.use(['form', 'layer', 'table', 'laydate', 'util'], function () { form = layui.form; layer = layui.layer; table = layui.table; laydate = layui.laydate; util = layui.util; laydate.render({ elem: '#startTime', //指定元素 元素选择器 type: 'date', //选择时间类型 可选值:year(年) month(年月) date(年月日) time(时分秒) datetime(年月日时分秒) trigger: 'click', max: Date.parse(new Date()), format: 'yyyy-MM-dd', //时间格式 常用时间格式:yyyy-MM-dd HH:mm:ss btns: ['clear', 'now', 'confirm'], //选择框右下角显示的按钮 清除-现在-确定 done: function (value, date) { //时间回调 } }); $('#startTime').val(getNowTime()) video(id, puid, tCodeParam, twCodeParam, tdCodeParam, passWayParam); getZbhWarnAjax(); pages(); getZbhDetailAjax(); getZbhPeopleAjax(); getClassMettingSignAjax(); getZbhImageAjax(); getExceptionReportListAjax(); getSgProgramAjax(); //按钮点击事件 util.event('lay-active', { photoLocal: function () { screenshot(); } }); }) } // 控制按钮展示 function setBtns() { let html = '', cent = ''; if ((isSupParam === '1' || isSupParam === '2') && pageTypeParam === 1) { html = '
' + '' + '' + '' + // '' + '
' + '
' + '' + '

重点巡查

' + '
'; } else if ((isSupParam === '1' || isSupParam === '2') && pageTypeParam === 2) { html = '
' + '' + '' + // '' + '
' + '
' + '' + '

重点巡查

' + '
'; } else if (isSupParam === '3') { html = '
' + '' + // '' + '' + '
'; } if (isSupParam !== '3') { cent += ''; } cent += ''; cent += ''; cent += ''; $('.btn-box').append(html); $('.btn-box2').append(cent); // $('#warn-info').after(cent); } function video(id, puid, tCodeParam, twCodeParam, tdCodeParam, passWayParam) { let passWay = localStorage.getItem("passWay"); if (passWay == null || passWay == '') { passWay = 'to-2'; } try { initVideo(); setTimeout(function () { videoObject.devCode = passWay === "to-1" ? tCodeParam : puid; videoObject.videoType = passWay; playVideo(1, videoObject.devCode, '', videoObject.videoType) }, 1000); } catch (e) { } } /*更新是否重点关注班组*/ function updateImportTeam() { let focusTeam = $('#focusTeam').prop('checked') if (focusTeam) { updateImportTeamAjax('1', workManagerNum) } else { updateImportTeamAjax('0', workManagerNum) } } function set3DisTrue() { let is3D = $('#3dset').prop('checked') if (is3D) { layer.msg('已开启3D云台', { icon: 1 }) } else { layer.msg('已关闭3D云台', { icon: 1 }) } localStorage.setItem("threeD", is3D); } /*查询球机当日上线记录*/ function queryBallOnlineRecord() { pages(); } // 球机当日上线记录 function pages() { let params = { createDay: $('#startTime').val(), classId: idParam } $.ajax({ headers: { "encrypt": sm3(JSON.stringify(params)) }, url: dataUrl + "proteam/pot/todayTask/getBallTimeList?token=" + token, data: params, type: 'POST', async: false, success: function (result) { if (result.code === 200) { if (result.data) { initBallOnlineRecordTable(result.data) } } else if (result.code === 500) { layer.alert(result.msg, { icon: 2 }) } else if (result.code === 401) { logout(1); } }, error: function () { } }); } /*初始化球机当日上线记录表格*/ function initBallOnlineRecordTable(dataList) { table.render({ elem: "#ballOnlineRecordTable", id: "ballOnlineRecordTable", height: "full-485", data: dataList, cols: [ [ { field: "upTime", title: "开机时间", unresize: true, width: 120, align: "center", }, { field: "downTime", title: "关机时间", unresize: true, width: 120, align: "center", }, { field: "hours", title: "在线时长", unresize: true, width: 120, align: "center", } ], ], done: function (res, curr, count) { table.resize("ballOnlineRecordTable"); 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"); }, }); } /*站班会预警信息赋值*/ function setClassWarnInfo(result) { let html = ''; if (result) { warnInfo = result; let data = result.split(","); if (data.length) { $.each(data, function (index, item) { if (item) { var items = item.split("@"); if (items.length > 1) { html += '

' + items[0] + '

'; } else { html += '

' + item + '

'; } } }) } } else { html += '

正常施工

' } $('.early-waring-info').empty().append(html); } /*站班会详情赋值*/ function setClassDetailData(result) { if (result) { let data = JSON.parse(result); console.log(data) console.log(typeof (data.ztList) == 'undefined'); console.log(data.ztList); if (typeof (data.ztList) != 'undefined') { let ztList = data.ztList; let p = ""; for (var i = 0; i < ztList.length; i++) { let ztdata = ztList[i]; if (ztdata.ztsj != '' && ztdata.ztsj != null) { p = p + "

暂停时间:" + ztdata.ztsj + "

" } if (ztdata.ztyy != '' && ztdata.ztyy != null) { p = p + "

暂停原因:" + ztdata.ztyy + "

"; } if (ztdata.xhzt != '' && ztdata.xhzt != null) { p = p + "

信号状态:" + ztdata.xhzt + "

"; } } $("#ztList").append(p); } let sgStatus = ''; if (data.sgStatus === '1') { sgStatus = '开工' } else if (data.sgStatus === '2') { sgStatus = '暂停' } else if (data.sgStatus === '3') { sgStatus = '完工' } $('#sgStatus').html('(' + data.proStatus + ')') $('#ticketNo').html(data.ticketNo) $('#bidName').html(data.bidName) $('#sgdw').html(data.sgdw) $('#jldw').html(data.jldw) $('#mainRisk').html(data.mainRisk) $('#workDay').html(data.workDay) $('#workingTime').html(data.startTime) $('#stopTime').html(data.ztsj) if (data.ztsj != null && data.ztsj != '' && typeof (data.ztsj) != 'undefined') { $('#stopTimep').css("display", "") } $('#content').html(setValue2(data.workType) + '' + setValue2(data.workGx) + '' + setValue2(data.workContent)) $('#workManager').html(data.workManager) $('#workManagePhone').html(data.workManagePhone) $(safetyManagers(data.safetyManager)).appendTo('#addPostion') $('#controll').html(setValue(data.controll)) $('#changes').html(setValue(data.changes)) filePath = data.filePath; bidName = data.bidName; ticketNo = data.ticketNo; org = data.org; workManagerNum = data.workManagerNum; teamName = data.teamName; teamId=data.teamId; riskLevel = data.riskLevel; bidCode = data.bidCode; signCode = data.signCode; lon = data.lat; lat = data.lon; jwd=data.jwd; content = setValue2(data.workType) + '' + setValue2(data.workGx) + '' + setValue2(data.workContent); console.log(lon + ',' + lat); if (data.bidName.indexOf("线路") == '-1') { // $("#gt_id").css("display","none"); $("#ai-box-1").css("display", "none"); } // 获取距离球机最近的杆塔坐标 if (lon && lat && signCode) { getBidTowerListAjax(signCode); } else { $('#towerName').html('无匹配杆塔'); } if (data.importTeam === '1') { $('#focusTeam').prop('checked', true) } setTeamLabelData(data.teamLabels); } } // 班组标签 function setTeamLabelData(list) { let html = ''; if (list && list.length > 0) { $.each(list, function (index, item) { let itemArr = item.split('@'); if (parseInt(itemArr[1]) > 1) { html += '

' + itemArr[0] + '' + itemArr[1] + '

' } else { html += '

' + itemArr[0] + '

' } }) } else { html = '

无班组标签

' } $('.teamLabelContent').empty().append(html); } // 获取安全监护人 function safetyManagers(value) { let numArr = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十']; let html = ''; if (value) { let valueArr = value.split(","); valueArr.forEach((o, index) => { html += '

第' + numArr[index] + '作业面安全监护:' + o + '

'; }); return html; } else { return html; } } function getSex(idCard) { let sexStr = ''; if (parseInt(idCard.slice(-2, -1)) % 2 === 1) { sexStr = '0' } else { sexStr = '1' } return sexStr; } /*参与施工人员签名、临时人员赋值*/ function setWorkerPersonData(result) { let cent = '', cent2 = ''; if (result) { let data = JSON.parse(result); if (data.sgPeople.length) { var bzz = '', tszyry = '', bzcy = '', wsg = ''; $.each(data.sgPeople, function (index, item) { let lsryCode=item.lsry;//新增人员/临时人员标志 if('02'==lsryCode){ cent2 += setWorkPhoto("../../../img/remotePatrol/people-3.png", '#2F82FB', item) }else{ if (bzgg.indexOf(item.peopleType) > -1) { if (getSex(item.idNumber) === '0') { bzz += setWorkPhoto("../../../img/remotePatrol/people-1-0.png", '#e90606', item); } else { bzz += setWorkPhoto("../../../img/remotePatrol/people-1-1.png", '#e90606', item); } } else if (tzzy.indexOf(item.peopleType) > -1) { if (getSex(item.idNumber) === '0') { tszyry += setWorkPhoto("../../../img/remotePatrol/people-2-3.png", '#70E180', item); } else { tszyry += setWorkPhoto("../../../img/remotePatrol/people-2-4.png", '#70E180', item); } } else if (item.peopleType === '未施工') { if (getSex(item.idNumber) === '0') { wsg += setWorkPhoto("../../../img/remotePatrol/people-4-0.png", '#BFBFBF', item); } else { wsg += setWorkPhoto("../../../img/remotePatrol/people-4-1.png", '#BFBFBF', item); } } else { if (getSex(item.idNumber) === '0') { bzcy += setWorkPhoto("../../../img/remotePatrol/people-3-0.png", '#2F82FB', item); } else { bzcy += setWorkPhoto("../../../img/remotePatrol/people-3-1.png", '#2F82FB', item); } } } }) cent = bzz + tszyry + bzcy + wsg; } else { cent += '

暂无数据

'; $('.work-people-sign').css('justify-content', 'center') } if (!cent2.length) { cent2 += '

暂无数据

'; $('.temporary-people-photo').css('justify-content', 'center') } } else { cent += '

暂无数据

'; $('.work-people-sign').css('justify-content', 'center') cent2 += '

暂无数据

'; $('.temporary-people-photo').css('justify-content', 'center') } $('.work-people-sign').empty().append(cent); $('.temporary-people-photo').empty().append(cent2); } /*施工人员签名*/ function setWorkPhoto(imgPath, color, item) { return '
' + '' + '

' + item.userName + '

' + '
' } /*到岗到位签到表赋值*/ function setDutyTableData(result) { let html = '职务姓名手机号签到时间'; if (result.data.length) { $.each(result.data, function (index, item) { html += '' + '' + item.peopleType + '' + '' + item.userName + '' + '' + item.phone + '' + '' + item.inTime + '' + ''; }) } else { html += '暂无数据'; } $('#onDutyTable').empty().append(html); } /*关键点措施赋值*/ function setKeyPointPhoto(result) { // 站班会交底拍照、现场勘查、地脚螺栓、跨越架、有限空间、地锚 let photoList = [], photoList2 = [], photoList3 = [], photoList4 = [], photoList5 = [], photoList6 = [], photoList7 = [], photoList8 = [], photoList9 = []; if (result) { let data = JSON.parse(result); let prefix = 'data:image/Jpeg;base64,'; if (data.length) { $.each(data, function (index, item) { let base64Path = prefix + item.imagePath; if (item.imageType === '1') { photoList.push('') } else if (item.imageType === '2') { photoList2.push('') } else if (item.imageType === '3') { photoList3.push('') } else if (item.imageType === '4') { photoList4.push('') } else if (item.imageType === '5') { photoList5.push('') } else if (item.imageType === '6') { photoList6.push('') } else if (item.imageType === '7') { photoList7.push('') } else if (item.imageType === '8') { photoList8.push('') } else if (item.imageType === '9') { photoList9.push('') } }) } } setPhoto(photoList, 0); setPhoto(photoList2, 1); setPhoto(photoList3, 2); setPhoto(photoList4, 3); setPhoto(photoList5, 4); setPhoto(photoList6, 5); setPhoto(photoList7, 6); setPhoto(photoList8, 7); setPhoto(photoList9, 8); viewer = new Viewer(document.getElementById('key-point'), { url: 'data-original', toolbar: true, show: function () { viewer.update(); }, shown: function () { isViewer = true; }, hidden: function () { isViewer = false; } }); } /*关键点措施照片*/ function setPhoto(data, index) { if (data.length) { let html = ''; $.each(data, function (index, item) { html += item }) $('.key-point-photo-type').eq(index).empty().append(html) } else { $('.key-point-photo-type').eq(index).empty().append('

暂无数据

').css('justify-content', 'center') $('.key-point-photo-type').eq(index).find('p').eq(0).css('margin-top', '10px'); } } /*作业票文件下载*/ function downLoadTicketFile() { if (filePath) { showPdf('data:application/pdf;base64,' + filePath) } else { layer.msg('无作业票文件', { icon: 5 }) } } /*异常上报赋值*/ function setExceptionReport(result) { let html = ''; if (result && result.length) { $.each(result, function (index, item) { html += '
' + '

' + (index + 1) + '

' + '
' + '

上报时间:

' + item.uploadTime + '

' + '

异常内容:

' + item.content + '

' + '

异常图片:

' + setExceptionImg(item.imgPath) + // setExceptionImg(item.base64List) + '
' + '
' + '
'; }) } else { html += '

暂无数据

' } $('.exceptionReporting-detail').empty().append(html); viewer2 = new Viewer(document.getElementById('exceptionReporting'), { url: 'data-original', toolbar: true, show: function () { viewer2.update(); }, shown: function () { isViewer2 = true; }, hidden: function () { isViewer2 = false; } }); } function setExceptionImg(data) { let html = ''; if (data) { let imgArr = data.split(','); $.each(imgArr, function (index, item) { let path = photoUrl + item + "?token=" + token html += '' }) } /* if (data.length > 0) { $.each(data, function (index, item) { let base64Path = item; html += '' // html += '' }) } */ return html; } /*刷新异常上报*/ function reloadExceptReport() { getExceptionReportListAjax(); } // 刷新预警信息 function reloadWarnInfo() { getZbhWarnAjax(); } // 施工方案赋值 function setSgProgramData(result) { let html = '' if (result && result !== 'null') { let data = JSON.parse(result); if (data.length) { $.each(data, function (index, item) { let obj = { 'fileId': item.fileId, 'bidNo': bidNoParam, 'fileName': item.fileName } if (item.fileName.indexOf("pdf") > 0) { html += "
" + "
" + "" + "" + "
" + "

" + item.fileName + "

" + "
" } else if (item.fileName.indexOf("doc") > 0 || item.fileName.indexOf("docx") > 0) { html += "
" + "
" + "" + "" + "
" + "

" + item.fileName + "

" + "
" } }) if (!html) { html = '

暂无数据

' } } else { html = '

暂无数据

' $('.sg-program-box').css('justify-content', 'center') } } else { html = '

暂无数据

' $('.sg-program-box').css('justify-content', 'center') } $('.sg-program-box').append(html) } // 赋值距离球机最近的杆塔 function setTowerData(data) { let value = '无匹配杆塔'; let obj1,obj2; console.log(jwd.split(",")[1], jwd.split(",")[0]); if (data && data.length > 0) { let list = []; $.each(data, function (index, item) { if (item.lon && item.lat) { let objData = getDistances(lon, lat, item.lat, item.lon); item.distance = objData.distance_m; list.push(item); } }) let obj = getShortTower(list); // 比较杆塔是否在设置的最大范围和最小范围之内 if (distanceList && distanceList.length > 0) { let min, max; $.each(distanceList, function (index, item) { if (item.id === 'min_distance') { min = item.name; } else { max = item.name; } }) let flag = compareDistance(parseFloat(max), parseFloat(min), parseFloat(obj.distance)); if (flag) { if (content && content.indexOf(obj.towerName) >= 0) {//施工内容包含杆塔 value = obj.towerName; } else {//施工内容不包含杆塔 value = "杆塔坐标不准确"; } } } } else { value = "杆塔坐标未维护"; } $('#towerName').html(value); } // 更新重点关注班组请求异常后,重置复选框的值 function resetFocusTeam(focusTeam) { if (focusTeam === "1") { $('#focusTeam').prop('checked', false) } else { $('#focusTeam').prop('checked', true) } } // 方法定义 lat,lng function GetDistance( lat1, lng1, lat2, lng2){ var radLat1 = lat1*Math.PI / 180.0; var radLat2 = lat2*Math.PI / 180.0; var a = radLat1 - radLat2; var b = lng1*Math.PI / 180.0 - lng2*Math.PI / 180.0; var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) + Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2))); s = s *6378.137 ;// EARTH_RADIUS; s = Math.round(s * 10000) / 10000; return s; } // 下载施工方案 function downLoadSgFile(obj) { let loadingMsg = layer.msg('文件下载中,请稍候...', { icon: 16, scrollbar: false, time: 0 }); let url = dataUrl + 'proteam/pot/todayTask/downLoadSgFile?fileId=' + obj.fileId + "&fileName=" + obj.fileName + "&token=" + token; let xhr = new XMLHttpRequest(); xhr.open("get", url, true); xhr.responseType = "blob"; // 转换流 xhr.setRequestHeader("encrypt", sm3(JSON.stringify({ fileId: obj.fileId, fileName: obj.fileName }))); 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 = obj.fileName; // 文件名 } else { layer.msg('服务异常,请稍后重试', { icon: 16, scrollbar: false, time: 2000 }); } a.click() window.URL.revokeObjectURL(url) }; xhr.send(); } // 预览施工方案 function openSgProgram(obj) { sessionStorage.setItem("fileId", obj.fileId); sessionStorage.setItem("fileType", '1'); sessionStorage.setItem("bidNo", obj.bidNo); let href = '../../../pdfjs/web/viewer.html' // window.open(href, '_blank'); let layerIndex = layui.layer.open({ title: '文件预览', type: 2, area: ['100%', '100%'], // 弹出框的宽高 fixed: false, // 是否固定 maxmin: true, // 是否允许最大化 shade: 0, // 隐藏弹框的遮罩层 content: href, // pdf的地址 success: function (layero, index) { indexArr.push({ 'type': 'child', 'index': layerIndex }); }, end: function () { if (indexArr && indexArr.length > 0) { indexArr.forEach(function (item, index) { if (item.index === layerIndex) indexArr.splice(index, 1); }) } $('#startTime').focus(); } }) } // 预览pdf function showPdf(base64String) { let pdfResult = base64String; let layerIndex = layui.layer.open({ title: '文件预览', type: 2, area: ['100%', '100%'], // 弹出框的宽高 fixed: false, // 是否固定 maxmin: true, // 是否允许最大化 shade: 0, // 隐藏弹框的遮罩层 content: pdfResult, // pdf的地址 success: function (layero, index) { indexArr.push({ 'type': 'child', 'index': layerIndex }); }, end: function () { if (indexArr && indexArr.length > 0) { indexArr.forEach(function (item, index) { if (item.index === layerIndex) indexArr.splice(index, 1); }) } $('#startTime').focus(); } }) // let pdfResult = base64String; // let pdfWindow = window.open(""); // pdfWindow.document.write(""); // pdfWindow.document.title = "附件" // pdfWindow.document.close(); } function switchDiv() { if ($('#switchBtn').val() === '打开') { $('.left').css('width', '0%'); $("#switchBtn").css('transform', 'rotate(0deg)'); $('.center').css('width', '67.4%'); $('#switchBtn').val("关闭"); } else { $(".left").css('width', '20%'); $("#switchBtn").css('transform', 'rotate(180deg)'); $('.center').css('width', '47.5%'); $('#switchBtn').val("打开"); init3D(); } } // 关闭页面 function closePage(type) { // indexArr 不为空esc 逐层关闭页面,为空直接关闭页面 if (!type) { if (isViewer) { viewer.hide(); isViewer = false; return; } if (isViewer2) { viewer2.hide(); isViewer2 = false; return; } if (indexArr && indexArr.length === 0) { destoryPage(); } else { let pageIndex = indexArr[indexArr.length - 1].index, pageType = indexArr[indexArr.length - 1].type; if (pageType === 'parent') { parent.layer.close(pageIndex); indexArr.splice(indexArr.length - 1, 1); } else { layer.close(pageIndex); indexArr.splice(indexArr.length - 1, 1); } } } else { destoryPage(); } } // 销毁页面 function destoryPage() { // 关闭远程督查页面清空esc localStorage.removeItem('esc'); let index = parent.layer.getFrameIndex(window.name); //先得到当前 iframe层的索引 parent.layer.close(index); //再执行关闭 }