var myChart = echarts.init(document.getElementById("rateChart"), "dark"); var fisrtIn = true; var clock = new Vue({ el: "#clock", data: { time: "", date: "", weekday: "", }, watch: {}, }); log(); var week = [ "星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", ]; var timerID = setInterval(updateTime, 1000); updateTime(); function updateTime() { var cd = new Date(); clock.time = zeroPadding(cd.getHours(), 2) + ":" + zeroPadding(cd.getMinutes(), 2) + ":" + zeroPadding(cd.getSeconds(), 2); clock.date = zeroPadding(cd.getFullYear(), 4) + "-" + zeroPadding(cd.getMonth() + 1, 2) + "-" + zeroPadding(cd.getDate(), 2); clock.weekday = week[cd.getDay()]; } function zeroPadding(num, digit) { var zero = ""; for (var i = 0; i < digit; i++) { zero += "0"; } return (zero + num).slice(-digit); } // var autoScrollHeight = $(window).height() - 385; var autoScrollBool = false; var autoScrollHeight = "calc(100vh - 13.14rem)"; // if ($(window).height() <= 800) { // autoScrollHeight = $(window).height() - 188; // } var option = { backgroundColor: "", tooltip: { show: false, }, padding: [0, 0, 0, 0], grid: { x: 30, y: 30, x2: 20, y2: 20, }, series: [], }; myChart.setOption(option); var $autoScroll; var searchParams; var factoryId = getQueryStringByName("factoryId") || 8; var plantId = getQueryStringByName("plantId") || 204; var statusId = getQueryStringByName("statusId") || -1; var time = getQueryStringByName("time") || new Date(dateFormat("yyyy-MM-dd", new Date())); var shift = getQueryStringByName("shift") || "1"; var statusArr = []; if (statusId > 0) { statusArr.push(statusId); } var macLines = []; $(function () { layer.load(); refreshToken(); //var factoryId = 8; // initEcharts(); $("#auto-scroll").css("height", autoScrollHeight); var windowWidth = $(window).width(); var containerWidth = $(".table").width(); $("#rightFrame").attr( "src", "../pages/macstatus-right-nav.html?v=" + Date.now() + "&factoryId=" + factoryId + "&plantId=" + plantId + "&statusId=" + statusId ); $(document).delegate(".mac-image", "click", function () { var macCode = $(this).attr("data-code"); window.open( `../pages/machine-detail.html?v=` + Date.now() + `&macCode=${macCode}&date=${clock.date}`, "_blank" ); initChartAndMachines(searchParams); }); $("#auto-scroll").on("mouseover", function (e) { e.stopPropagation(); // $autoScroll.liMarquee('play'); // autoScroll(false); $(this).css("overflow-y", "scroll"); }); $("#auto-scroll").on("mouseout", function (e) { e.stopPropagation(); // $autoScroll.liMarquee('play'); // autoScroll(autoScrollBool); $(this).css("overflow-y", "hidden"); }); $(window).resize(() => { initMachines(macLines); }); }); let connection = null; function createConnection(filter, recipe) { if (connection) { connection.stop(); connection = null; } time = dateFormat("yyyy-MM-dd", new Date(time)); connection = new signalR.HubConnectionBuilder() .withUrl( `${server}/eap/hub/macstatus/last?filter=${filter}&recipe=${recipe}&date=${time}&type=${shift}` ) .build(); connection.serverTimeoutInMilliseconds = 24e4; connection.keepAliveIntervalInMilliseconds = 12e4; connection.on("BeginConnection", function (obj) { layer.closeAll("loading"); if (obj) { if (!obj.data || obj.data.total <= 0) { $("#auto-scroll").empty(); alert("未查询到数据"); return; } initPage( obj.data.factory + " " + obj.data.plant, obj.data.total, obj.data.statusCount ); debugger; initMachines(obj.data.lines); initEcharts(obj.data.processRunRate); macLines = obj.data.lines; var iframe = document.getElementById("rightFrame"); iframe.contentWindow.setRefreshDate(new Date(time)); } else { alert( (!obj.msg || obj.msg) === "" ? "初始化页面失败,请联系管理员" : obj.msg ); } }); connection.on("ReceiveUpdate", function (obj) { layer.closeAll("loading"); if (obj) { if (!obj.data || obj.data.total <= 0) { $("#auto-scroll").empty(); alert("未查询到数据"); return; } initPage( obj.data.factory + " " + obj.data.plant, obj.data.total, obj.data.statusCount ); // updateMachineItem(obj.data.lines); initMachines(obj.data.lines); initEcharts(obj.data.processRunRate); macLines = obj.data.lines; var iframe = document.getElementById("rightFrame"); iframe.contentWindow.setRefreshDate(new Date(time)); } else { alert( (!obj.msg || obj.msg) === "" ? "获取数据失败,请联系管理员" : obj.msg ); } }); connection.on("Error", function (obj) { console.log("检测到连接出现异常"); console.log(new Date()); console.log(obj); setTimeout(() => { startConnection(); }, 5000); }); connection.on("Finished", function (obj) { connection.stop(); console.log("finished"); }); } async function startConnection() { if (connection.state !== signalR.HubConnectionState.Disconnected) return; connection.start({ transport: ["webSockets"] }).catch((err) => { console.log("检测到连接出现异常"); console.error(err); setTimeout(() => { startConnection(); }, 5000); }); } function setUpConnection(filter, recipe) { createConnection(filter, recipe); startConnection(); } var timeInterval = null; //加载echarts和机台列表 function initChartAndMachines(params) { searchParams = params; var filter = ""; if (params) { if (params.factory) { filter += ` and a.factoryId=${params.factory}`; } if (params.plant) { filter += ` and l.id=${params.plant}`; } //#region 工序过滤 if (params.types && params.types.length > 0) { var typeFilter = "("; params.types.forEach((t) => { typeFilter += `'${t.toUpperCase()}',`; }); typeFilter = typeFilter.substr(0, typeFilter.length - 1) + ")"; filter += ` and g.FCode in ${typeFilter}`; } //#endregion //#region 机型过滤 if (params.macModels && params.macModels.length > 0) { var typeFilter = "("; params.macModels.forEach((t) => { typeFilter += `'${t}',`; }); typeFilter = typeFilter.substr(0, typeFilter.length - 1) + ")"; filter += ` and a.MModeId in ${typeFilter}`; } //#endregion // if (params.floor && params.lines.length > 0) { // var typeFilter = '('; // params.lines.forEach(t => { // typeFilter += `'${t}',`; // }); // typeFilter = typeFilter.substr(0, typeFilter.length - 1) + ')'; // filter += ` and a.regionId in ${typeFilter}`; // } //#region 线体过滤 if (params.lines && params.lines.length > 0) { var typeFilter = "("; params.lines.forEach((t) => { typeFilter += `'${t}',`; }); typeFilter = typeFilter.substr(0, typeFilter.length - 1) + ")"; filter += ` and a.regionId in ${typeFilter}`; } //#endregion //#region 状态过滤 if (params.status && params.status.length > 0) { var typeFilter = "("; params.status.forEach((t) => { typeFilter += `'${t}',`; }); typeFilter = typeFilter.substr(0, typeFilter.length - 1) + ")"; filter += ` and b.statusId in ${typeFilter}`; } //#endregion if (params.maccode) { filter += ` and a.fcode='${params.maccode}' `; } if (params.time) { if (params.time instanceof Date) { time = dateFormat("yyyy-MM-dd", params.time); } else { time = params.time; } clock.date = time; if (time != dateFormat("yyyy-MM-dd", new Date())) { clearInterval(timerID); clock.weekday = week[new Date(time).getDay()]; if (params.shift == 1) { clock.time = "白班"; } else if (params.shift == 2) { clock.time = "夜班"; } else { clock.time = "整天"; } } else { if (timerID) { clearInterval(timerID); timerID = setInterval(updateTime, 1000); } } } if (params.shift) { shift = params.shift; } } if (filter === "") { filter = " and a.factoryId=8"; } setUpConnection(filter, params.recipe); // initEcharts(filter, params.recipe); // if (timeInterval) { // clearInterval(timeInterval); // } // timeInterval = setInterval(() => { // initEcharts(filter, params.recipe); // }, 1000 * 60 * 10); } initChartAndMachines({ factory: factoryId, plant: plantId, status: statusArr, recipe: "", time: time, shift: shift, }); function showLoading() { hideNav($(".rightNav"), $(".bgDiv")); layer.load(); } function autoScroll(auto) { if (auto) { $("#auto-scroll ul:first").css("margin-top", "3rem"); $autoScroll = $("#auto-scroll").liMarquee({ direction: "up", runshort: false, /*内容不足时不滚动*/ scrollamount: 40 /*速度*/, behavior: "alternate", }); } else { $("#auto-scroll ul:first").css("margin-top", "0.5rem"); if ($autoScroll) { $autoScroll.liMarquee("destroy"); } } } function initMachines(lines) { $("#auto-scroll").empty(); for (var item in lines) { var line = lines[item]; var $ul = $("