<!DOCTYPE html> 
 | 
<html lang="en"> 
 | 
<head> 
 | 
    <meta charset="UTF-8"> 
 | 
    <title>WCS输送设备管理</title> 
 | 
    <meta name="renderer" content="webkit"> 
 | 
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 
 | 
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0"> 
 | 
    <link rel="stylesheet" type="text/css" href="../static/css/normalize.css"> 
 | 
    <link rel="stylesheet" type="text/css" href="../static/css/common.css"> 
 | 
    <link rel="stylesheet" type="text/css" href="../static/css/pipeline.css"> 
 | 
    <script type="text/javascript" src="../static/js/jquery/jquery-3.3.1.min.js"></script> 
 | 
    <script type="text/javascript" src="../static/js/common.js"></script> 
 | 
    <script type="text/javascript" src="../static/js/layer/layer.js"></script> 
 | 
    <style> 
 | 
        .io-mode-box { 
 | 
            float: left; 
 | 
            /*width: 25%;*/ 
 | 
            text-align: center; 
 | 
        } 
 | 
        .io-mode-box label { 
 | 
            font-weight: bolder; 
 | 
        } 
 | 
        .ioModeBtn { 
 | 
            vertical-align: middle; 
 | 
            width: 25%; 
 | 
            height: 30px; 
 | 
            left: 0; 
 | 
            top: 0; 
 | 
            text-shadow: inherit; 
 | 
            font-size: 15px; 
 | 
            margin-left: 5px; 
 | 
            margin-right: 5px; 
 | 
            display: inline-block; 
 | 
            background-color: #FF5722; 
 | 
            border: none; 
 | 
            color: #FFF; 
 | 
            box-shadow: 1px 1px 5px #B6B6B6; 
 | 
            border-radius: 3px; 
 | 
            cursor: pointer; 
 | 
        } 
 | 
    </style> 
 | 
</head> 
 | 
<body> 
 | 
<div style="padding: 10px;height: 100%;float: left;width: 6%"> 
 | 
    <div class="button-window"></div> 
 | 
</div> 
 | 
  
 | 
<div style="height: 100%;padding-left: 6%"> 
 | 
    <div style="padding: 10px;height: 100%"> 
 | 
        <main> 
 | 
  
 | 
            <!-- plc异常日志监控版 --> 
 | 
            <div id="plc-error" class="main-board" style="padding-left: 10px"> 
 | 
                <!-- 头部 --> 
 | 
                <div class="plc-log-header"> 
 | 
  
 | 
                    <!-- 设备任务操作 --> 
 | 
                    <div class="io-mode-oper"> 
 | 
                        <fieldset> 
 | 
                            <legend>充电控制(Charge-Mode)</legend> 
 | 
                            <div class="io-mode-box"> 
 | 
                                <label>1#</label> 
 | 
                                <button id="io-mode-1" class="ioModeBtn" onclick="ioModeSwitch(this.id)"> - </button> 
 | 
                            </div> 
 | 
                        </fieldset> 
 | 
                    </div> 
 | 
                </div> 
 | 
                <!-- 主体 --> 
 | 
                <div class="plc-log-body"> 
 | 
                    <div> 
 | 
                        <span style="color: #1E9FFF">PLC异常信息表:</span> 
 | 
                    </div> 
 | 
                    <table id="plc-error-table"> 
 | 
                        <thead> 
 | 
                        <tr> 
 | 
                            <th style="width: 200px">序号</th> 
 | 
                            <th style="width: 400px">PLC错误描述</th> 
 | 
                            <th style="width: 400px">异常</th> 
 | 
                        </tr> 
 | 
                        </thead> 
 | 
                        <tbody> 
 | 
  
 | 
                        </tbody> 
 | 
                    </table> 
 | 
                </div> 
 | 
            </div> 
 | 
  
 | 
            <!-- 站点状态数据监控版 --> 
 | 
            <div id="site-monitor" class="main-board"> 
 | 
                <!-- 表格 --> 
 | 
                <table id="site-table"> 
 | 
                    <!-- 表头 --> 
 | 
                    <thead> 
 | 
                    <tr> 
 | 
                        <th>站号</th> 
 | 
                        <th>工作号</th> 
 | 
                        <th>自动</th> 
 | 
                        <th>有物</th> 
 | 
                        <th>可入</th> 
 | 
                        <th>可出</th> 
 | 
                        <th>入库标记</th> 
 | 
                        <th>空板信号</th> 
 | 
                        <th>目标站</th> 
 | 
                    </tr> 
 | 
                    </thead> 
 | 
                    <!-- 表格内容 --> 
 | 
                    <tbody></tbody> 
 | 
                </table> 
 | 
            </div> 
 | 
        </main> 
 | 
        <footer> 
 | 
            <textarea id="output"></textarea> 
 | 
        </footer> 
 | 
  
 | 
        <div id="site-detl" style="display: none"> 
 | 
            <div> 
 | 
                <div class="form-item"> 
 | 
                    <label class="form-label">站号:</label> 
 | 
                    <div class="form-input"> 
 | 
                        <input id="siteId" name="siteId" class="layui-input" lay-verify="required|number" autocomplete="off" disabled="disabled"> 
 | 
                    </div> 
 | 
                </div> 
 | 
                <div class="form-item"> 
 | 
                    <label class="form-label">工作号:</label> 
 | 
                    <div class="form-input"> 
 | 
                        <input id="workNo" name="workNo" type="number" class="layui-input" lay-verify="number" autocomplete="off"> 
 | 
                    </div> 
 | 
                </div> 
 | 
                <div class="form-item"> 
 | 
                    <label class="form-label">目标站:</label> 
 | 
                    <div class="form-input"> 
 | 
                        <input id="staNo" name="staNo" type="number" class="layui-input" lay-verify="number" autocomplete="off"> 
 | 
                    </div> 
 | 
                </div> 
 | 
                <div class="form-item"> 
 | 
                    <label class="form-label">入库标记:</label> 
 | 
                    <div class="form-input"> 
 | 
                        <input id="pakMk" name="pakMk" type="text" class="layui-input" autocomplete="off"> 
 | 
                    </div> 
 | 
                </div> 
 | 
                <div class="form-item form-button-container"> 
 | 
                    <button class="form-button" id="save">保存</button> 
 | 
                    <button class="form-button" id="cancel" style="background-color: #D0D0D0">取消</button> 
 | 
                </div> 
 | 
            </div> 
 | 
        </div> 
 | 
    </div> 
 | 
  
 | 
</div> 
 | 
  
 | 
  
 | 
</body> 
 | 
<script> 
 | 
    // 初始化 
 | 
    // 空白行数 
 | 
    var plcErrorTableBlankRows = 0; 
 | 
    var siteTableBlankRows = 0; 
 | 
    // 实际行数 
 | 
    var plcErrorTableFullRows = 0; 
 | 
    var siteTableFullRows = 0; 
 | 
    var outputDom = document.getElementById("output"); 
 | 
    $(document).ready(function() { 
 | 
        getIoModeInfo(); 
 | 
        initPlcErrorTable(); 
 | 
        getPlcError(); 
 | 
        initSiteTable(); 
 | 
        getSite(); 
 | 
    }); 
 | 
    // 实时访问 
 | 
    setInterval(function () { 
 | 
        getPlcError(); 
 | 
        getSite(); 
 | 
        getIoModeInfo(); 
 | 
    }, 1000); 
 | 
    setInterval(function () { 
 | 
        getSiteOutput(); 
 | 
    },500); 
 | 
  
 | 
    var ioModeData; 
 | 
    function getIoModeInfo() { 
 | 
        $.ajax({ 
 | 
            url: baseUrl+ "/site/io/mode/info/site", 
 | 
            headers: {'token': localStorage.getItem('token')}, 
 | 
            method: 'GET', 
 | 
            success: function (res) { 
 | 
                if (res.code === 200){ 
 | 
                    ioModeData = res.data; 
 | 
                    ioModeData.forEach(function (e) { 
 | 
                        $("#io-mode-"+e.floor).html(e.modeDesc); 
 | 
                    }) 
 | 
                } else if (res.code === 403){ 
 | 
                    window.location.href = baseUrl+"/login"; 
 | 
                }  else { 
 | 
                    console.log(res.msg); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 强制切换入出库模式 
 | 
     */ 
 | 
    function ioModeSwitch(el) { 
 | 
        var floor = el.split("-")[2]; 
 | 
        if (ioModeData != null && ioModeData.length > 1) { 
 | 
            ioModeData.forEach(function(e) { 
 | 
                if (e.floor === Number(floor)) { 
 | 
                    if (e.modeVal) { 
 | 
                        layer.confirm('确定断开充电并复位吗?',function () { 
 | 
                            $.ajax({ 
 | 
                                url: baseUrl+ "/site/io/mode/action/site", 
 | 
                                headers: {'token': localStorage.getItem('token')}, 
 | 
                                data: { 
 | 
                                    floor: e.floor, 
 | 
                                    charge: !e.modeVal 
 | 
                                }, 
 | 
                                method: 'POST', 
 | 
                                success: function (res) { 
 | 
                                    if (res.code === 200){ 
 | 
                                        layer.msg(res.msg, {icon: 1}) 
 | 
                                    } else if (res.code === 403){ 
 | 
                                        window.location.href = baseUrl+"/login"; 
 | 
                                    }  else { 
 | 
                                        layer.msg(res.msg, {icon: 2}) 
 | 
                                    } 
 | 
                                } 
 | 
                            }); 
 | 
                            layer.closeAll(); 
 | 
                        }) 
 | 
                    } 
 | 
                } 
 | 
            }); 
 | 
        } 
 | 
  
 | 
  
 | 
    } 
 | 
  
 | 
    // plc异常信息表获取 
 | 
    function getPlcError() { 
 | 
        var tableEl = $('#plc-error-table'); 
 | 
        tableEl.children("tr").children("td").html(""); 
 | 
        $.ajax({ 
 | 
            url: baseUrl+ "/site/table/plc/errors", 
 | 
            headers: {'token': localStorage.getItem('token')}, 
 | 
            method: 'POST', 
 | 
            success: function (res) { 
 | 
                if (res.code === 200){ 
 | 
                    var table = res.data; 
 | 
                    for (var i=1;i<=table.length;i++){ 
 | 
                        var tr = tableEl.find("tr").eq(i); 
 | 
                        tr.children("td").eq(0).html(table[i-1].no); 
 | 
                        tr.children("td").eq(1).html(table[i-1].plcDesc); 
 | 
                        tr.children("td").eq(2).html(table[i-1].error); 
 | 
                    } 
 | 
                } else if (res.code === 403){ 
 | 
                    window.location.href = baseUrl+"/login"; 
 | 
                }  else { 
 | 
                    console.log(res.msg); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
    } 
 | 
  
 | 
    // 站点信息表获取 
 | 
    function getSite() { 
 | 
        var tableEl = $('#site-table'); 
 | 
        $.ajax({ 
 | 
            url: baseUrl+ "/site/table/site", 
 | 
            headers: {'token': localStorage.getItem('token')}, 
 | 
            method: 'POST', 
 | 
            success: function (res) { 
 | 
                if (res.code === 200){ 
 | 
                    var table = res.data; 
 | 
                    if (table.length > siteTableBlankRows && table.length !== siteTableFullRows) { 
 | 
                        initSiteTable(table.length-siteTableBlankRows); 
 | 
                        siteTableFullRows = table.length; 
 | 
                    } 
 | 
                    for (var i=1;i<=table.length;i++){ 
 | 
                        var tr = tableEl.find("tr").eq(i); 
 | 
                        setVal(tr.children("td").eq(0), table[i-1].devNo); 
 | 
                        setVal(tr.children("td").eq(1), table[i-1].workNo); 
 | 
                        setVal(tr.children("td").eq(2), table[i-1].autoing); 
 | 
                        setVal(tr.children("td").eq(3), table[i-1].loading); 
 | 
                        setVal(tr.children("td").eq(4), table[i-1].inEnable); 
 | 
                        setVal(tr.children("td").eq(5), table[i-1].outEnable); 
 | 
                        setVal(tr.children("td").eq(6), table[i-1].pakMk); 
 | 
                        setVal(tr.children("td").eq(7), table[i-1].emptyMk); 
 | 
                        setVal(tr.children("td").eq(8), table[i-1].staNo); 
 | 
                    } 
 | 
                } else if (res.code === 403){ 
 | 
                    window.location.href = baseUrl+"/login"; 
 | 
                }  else { 
 | 
                    console.log(res.msg); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
    } 
 | 
  
 | 
    // 输送设备日志输出 
 | 
    function getSiteOutput() { 
 | 
        $.ajax({ 
 | 
            url: baseUrl + "/site/output/site", 
 | 
            headers: {'token': localStorage.getItem('token')}, 
 | 
            method: 'POST', 
 | 
            success: function (res) { 
 | 
                if (res.code === 200) { 
 | 
                    output(res.data); 
 | 
                } else if (res.code === 403) { 
 | 
                    window.location.href = baseUrl + "/login"; 
 | 
                } else { 
 | 
                    alert(res.msg); 
 | 
                } 
 | 
            } 
 | 
        }) 
 | 
    } 
 | 
  
 | 
    // 日志输出框 
 | 
    function output(content){ 
 | 
        outputDom.value += content; 
 | 
        outputDom.scrollTop = outputDom.scrollHeight; 
 | 
    } 
 | 
  
 | 
    // ------------------------------------------------------------------------------------------------ 
 | 
  
 | 
    // plc异常空白表格渲染 
 | 
    function initPlcErrorTable(row) { 
 | 
        var line; 
 | 
        if (row === undefined){ 
 | 
            var one = $('#plc-error-table thead').height(); 
 | 
            var total = $('.plc-log-body').height(); 
 | 
            var count = total / one; 
 | 
            count = parseInt(count) - 1; 
 | 
            plcErrorTableBlankRows = count; 
 | 
            line = count; 
 | 
        } else { 
 | 
            line = row; 
 | 
        } 
 | 
        var html = ""; 
 | 
        for (var i = 0; i < line; i ++){ 
 | 
            html += " <tr>\n" + 
 | 
                "       <td></td>\n" + 
 | 
                "       <td></td>\n" + 
 | 
                "       <td></td>\n" + 
 | 
                "     </tr>\n"; 
 | 
        } 
 | 
        $('#plc-error-table tbody').after(html); 
 | 
    } 
 | 
  
 | 
    // 站点空白表格渲染 
 | 
    function initSiteTable(row) { 
 | 
        var line; 
 | 
        if (row === undefined){ 
 | 
            var one = $('#site-table thead').height(); 
 | 
            var total = $('#site-monitor').height(); 
 | 
            var count = total / one; 
 | 
            count = parseInt(count) - 1; 
 | 
            siteTableBlankRows = count; 
 | 
            line = count; 
 | 
        } else { 
 | 
            line = row; 
 | 
        } 
 | 
        var html = ""; 
 | 
        for (var i = 0; i < line; i ++){ 
 | 
            html += " <tr>\n" + 
 | 
                "       <td></td>\n" + 
 | 
                "       <td></td>\n" + 
 | 
                "       <td></td>\n" + 
 | 
                "       <td></td>\n" + 
 | 
                "       <td></td>\n" + 
 | 
                "       <td></td>\n" + 
 | 
                "       <td></td>\n" + 
 | 
                "       <td></td>\n" + 
 | 
                "       <td></td>\n" + 
 | 
                "     </tr>\n"; 
 | 
        } 
 | 
        $('#site-table tbody').after(html); 
 | 
    } 
 | 
  
 | 
    // 详情操作 ------------------------------------------------------------------------- 
 | 
    var layerDetl; 
 | 
    $(document).on('dblclick ','#site-table tr', function () { 
 | 
        var siteId = $(this).children("td").eq(0).html(); 
 | 
        if (siteId !== null && siteId !== "") { 
 | 
            layerDetl = layer.open({ 
 | 
                type: 1, 
 | 
                title: false, 
 | 
                shadeClose: true, 
 | 
                offset: 'rt', 
 | 
                anim: 5, 
 | 
                shade: [0], 
 | 
                area: ['340px', '255px'], 
 | 
                closeBtn: 0, 
 | 
                content: $("#site-detl"), 
 | 
                success: function(layero, index){ 
 | 
                    http.get(baseUrl+ "/site/detl/"+siteId, null, function (res) { 
 | 
                        $('#siteId').val(siteId); 
 | 
                        $('#workNo').val(res.data.workNo); 
 | 
                        $('#staNo').val(res.data.staNo); 
 | 
                        $('#pakMk').val(res.data.pakMk); 
 | 
                    }) 
 | 
                }, 
 | 
                end: function () { 
 | 
                    $('#siteId').val(""); 
 | 
                    $('#workNo').val(""); 
 | 
                    $('#staNo').val(""); 
 | 
                    $('#pakMk').val(""); 
 | 
                } 
 | 
            }) 
 | 
        } 
 | 
    }); 
 | 
  
 | 
    $(document).on('click ','#save', function () { 
 | 
        http.post(baseUrl+ "/site//detl/update", { 
 | 
            siteId: $('#siteId').val(), 
 | 
            workNo: $('#workNo').val(), 
 | 
            staNo:  $('#staNo').val(), 
 | 
            pakMk: $('#pakMk').val() 
 | 
        }, function (res) { 
 | 
            layer.close(layerDetl); 
 | 
            layer.msg("修改成功",{icon: 1,}); 
 | 
        }) 
 | 
    }) 
 | 
    $(document).on('click ','#cancel', function () { 
 | 
        $('#siteId').val(""); 
 | 
        $('#workNo').val(""); 
 | 
        $('#staNo').val(""); 
 | 
        $('#pakMk').val(""); 
 | 
        layer.close(layerDetl); 
 | 
    }) 
 | 
  
 | 
</script> 
 | 
</html> 
 |