<!DOCTYPE html> 
 | 
<html lang="en"> 
 | 
<head> 
 | 
    <meta charset="UTF-8"> 
 | 
    <title>四向穿梭车监控管理</title> 
 | 
    <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/layui/css/layui.css"> 
 | 
    <link rel="stylesheet" href="../static/css/shuttle.css"> 
 | 
    <script type="text/javascript" src="../static/js/jquery/jquery-3.3.1.min.js"></script> 
 | 
    <script type="text/javascript" src="../static/js/layer/layer.js"></script> 
 | 
    <script type="text/javascript" src="../static/layui/layui.js"></script> 
 | 
    <script type="text/javascript" src="../static/js/common.js"></script> 
 | 
</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%"> 
 | 
            <!-- 日志监控板 --> 
 | 
            <div class="log-board"> 
 | 
                <div class="command-log" id="commandLogId" style="width: 5%;"> 
 | 
<!--                    <div data-shuttleNo="1" class="shuttle-command-item">--> 
 | 
<!--                        <label>1#</label>--> 
 | 
<!--                        <button class="demoBtn pos-btn">数据维护</button>--> 
 | 
<!--                        <button id="mode-1" class="demoBtn mode-btn" >设备信息</button>--> 
 | 
<!--                    </div>--> 
 | 
                </div> 
 | 
                <!-- 堆垛机状态位信息 --> 
 | 
                <div class="shuttle-state" style="width: 95%;"> 
 | 
                    <table id="shuttle-state-table"> 
 | 
                        <thead> 
 | 
                            <tr> 
 | 
                                <th>四向穿梭车</th> 
 | 
                                <th>任务状态</th> 
 | 
                                <th>小车状态</th> 
 | 
                                <th>当前二维码</th> 
 | 
                                <th>电量</th> 
 | 
                                <th>电池温度</th> 
 | 
                                <th>错误编号</th> 
 | 
                                <th>plc输出状态IO-顶升位</th> 
 | 
                                <th>plc输出状态IO-换向位</th> 
 | 
                                <th>plc输出状态IO-抱闸位</th> 
 | 
                                <th>plc输出状态IO-充电位</th> 
 | 
                                <th>错误信息码</th> 
 | 
                                <th>plc输入状态</th> 
 | 
                                <th>当前或之前二维码</th> 
 | 
                                <th>x偏移量</th> 
 | 
                                <th>y偏移量</th> 
 | 
                                <th>电压</th> 
 | 
                                <th>模拟量</th> 
 | 
                            </tr> 
 | 
                        </thead> 
 | 
                        <tbody> 
 | 
                        </tbody> 
 | 
                    </table> 
 | 
                </div> 
 | 
            </div> 
 | 
            <!-- 穿梭车状态 --> 
 | 
            <div class="shuttle-msg"> 
 | 
                <table id="shuttle-msg-table"> 
 | 
                    <thead> 
 | 
                        <tr> 
 | 
                            <th>四向穿梭车</th> 
 | 
                            <th>工作号</th> 
 | 
                            <th>状态</th> 
 | 
                            <th>源库位</th> 
 | 
                            <th>目标库位</th> 
 | 
                            <th>升降伺服速度</th> 
 | 
                            <th>行走伺服速度</th> 
 | 
                            <th>升降伺服负载</th> 
 | 
                            <th>行走伺服负载</th> 
 | 
                            <th>作业标记</th> 
 | 
                        </tr> 
 | 
                    </thead> 
 | 
                    <tbody> 
 | 
                    </tbody> 
 | 
                </table> 
 | 
            </div> 
 | 
            <!-- 手动操作 --> 
 | 
            <div class="shuttle-operation"> 
 | 
                <!-- 遮罩层 --> 
 | 
                <div class="shuttle-operation-shade"> 
 | 
                    <span class="shuttle-operation-shade-span"> 
 | 
                        WCS 系统运行中,请停止后操作 
 | 
                    </span> 
 | 
                </div> 
 | 
                <!-- 设备任务选择 --> 
 | 
                <div class="task-select"> 
 | 
                    <!-- 选择 --> 
 | 
                    <div id="shuttle-select" class="operator-item"> 
 | 
                        <span class="select-title">四向穿梭车号</span> 
 | 
                        <div class="select-container" id="shuttleRadioBoxId"> 
 | 
<!--                            <label><input type="radio" name="shuttleSelect" value="1" checked> 1号穿梭车</label>--> 
 | 
                        </div> 
 | 
                    </div> 
 | 
                </div> 
 | 
  
 | 
                <!-- 设备任务操作 --> 
 | 
                <div class="task-operator"> 
 | 
                    <div style="display: flex;"> 
 | 
                        <div class="task-operator" style="height: auto;width: 100%;"> 
 | 
                            <div class="operator-item" style="height: auto"> 
 | 
                                <span class="select-title">源库位/目标库位</span> 
 | 
                                <div class="select-container" style="height: auto"> 
 | 
                                    <div class="select-container-item"> 
 | 
                                        <span>源库位</span> 
 | 
                                        <label><input id="sourceLocNo" type="text" name="sourceLocNo" /></label> 
 | 
                                    </div> 
 | 
                                    <div class="select-container-item"> 
 | 
                                        <span>目标库位</span> 
 | 
                                        <label><input id="distLocNo" type="text" name="distLocNo" /></label> 
 | 
                                    </div> 
 | 
                                </div> 
 | 
                            </div> 
 | 
                        </div> 
 | 
                    </div> 
 | 
  
 | 
                    <fieldset style="height: auto;padding-bottom: 20px;"> 
 | 
                        <legend>手动操作</legend> 
 | 
                        <div class="button-group"> 
 | 
                            <button class="item" onclick="shuttleOperator(1)">入库</button> 
 | 
                            <button class="item" onclick="shuttleOperator(2)">出库</button> 
 | 
                            <button class="item" onclick="shuttleOperator(3)">托盘顶升</button> 
 | 
                            <button class="item" onclick="shuttleOperator(4)">托盘下降</button> 
 | 
                            <button class="item" onclick="shuttleOperator(5)">左移</button> 
 | 
                            <button class="item" onclick="shuttleOperator(6)">右移</button> 
 | 
                            <button class="item" onclick="shuttleOperator(7)">后移</button> 
 | 
                            <button class="item" onclick="shuttleOperator(8)">前移</button> 
 | 
                            <button class="item" onclick="shuttleOperator(9)">复位</button> 
 | 
                            <button class="item" onclick="shuttleOperator(10)">正方向(左)寻库位</button> 
 | 
                            <button class="item" onclick="shuttleOperator(11)">负方向(右)寻库位</button> 
 | 
                            <button class="item" onclick="shuttleOperator(12)">正方向(前)寻库位</button> 
 | 
                            <button class="item" onclick="shuttleOperator(13)">负方向(后)寻库位</button> 
 | 
                            <button class="item" onclick="shuttleOperator(14)">移动到目标库位</button> 
 | 
                            <button class="item" onclick="shuttleOperator(15)">充电开关</button> 
 | 
                        </div> 
 | 
                    </fieldset> 
 | 
                </div> 
 | 
  
 | 
            </div> 
 | 
            <!-- 穿梭车日志输出 --> 
 | 
            <div class="shuttle-output-board"> 
 | 
                <textarea id="shuttle-output"></textarea> 
 | 
            </div> 
 | 
        </div> 
 | 
    </div> 
 | 
  
 | 
    <div id="shuttle-detl" style="display: none"> 
 | 
        <div> 
 | 
            <div class="form-item"> 
 | 
                <label class="form-label">四向穿梭车号:</label> 
 | 
                <div class="form-input"> 
 | 
                    <input id="shuttleNo" name="shuttleNo" 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="row" name="row" 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="bay" name="bay" type="number" class="layui-input" autocomplete="off"> 
 | 
                </div> 
 | 
            </div> 
 | 
            <div class="form-item"> 
 | 
                <label class="form-label">层:</label> 
 | 
                <div class="form-input"> 
 | 
                    <input id="lev" name="lev" type="number" class="layui-input" 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 id="shuttle-detl2" style="display: none"> 
 | 
        <div style="width: 1400px"> 
 | 
            <div class="form-item" style="text-align: left"> 
 | 
                <spen style="margin:  20px 10px 10px 10px; padding: 10px 10px 10px 10px;border: black;border-width: 3px;border-style:dotted;"> 
 | 
                    异常:<spen style="color: #FD482C;">✔</spen> 
 | 
                </spen> 
 | 
                <spen style="margin:  20px 10px 10px 10px; padding: 10px 10px 10px 10px;border: black;border-width: 3px;border-style: double;"> 
 | 
                    正常:<spen style="color: #00FF00;">—</spen> 
 | 
                </spen> 
 | 
            </div> 
 | 
            <div style="float:left;margin:  10px 10px 10px 10px; padding: 10px 10px 10px 10px;border: black;border-width: 3px;border-style:dotted;"> 
 | 
                <div class="form-item" style="text-align: center"> 
 | 
                    <label>四向穿梭车异常</label> 
 | 
                </div> 
 | 
                <div class="form-item"> 
 | 
                    <label class="form-label">四向穿梭车号:</label> 
 | 
                    <div class="form-input"> 
 | 
                        <input id="shuttleNo1" name="shuttleNo" class="layui-input" lay-verify="required|number" autocomplete="off" disabled="disabled" readonly> 
 | 
                    </div> 
 | 
                </div> 
 | 
  
 | 
            </div> 
 | 
            <div style="float:left;margin:  10px 10px 10px 10px; padding: 10px 10px 10px 10px;border: black;border-width: 3px;border-style:dotted"> 
 | 
                <div class="form-item" style="text-align: center"> 
 | 
                    <label>四向穿梭车提示信息</label> 
 | 
                </div> 
 | 
  
 | 
            </div> 
 | 
            <div style="float:left;margin:  10px 10px 10px 10px; padding: 10px 10px 10px 10px;border: black;border-width: 3px;border-style:dotted"> 
 | 
                <div class="form-item" style="text-align: center"> 
 | 
                    <label>任务信息</label> 
 | 
                </div> 
 | 
                <div class="form-item"> 
 | 
                    <label class="form-label">入库任务中:</label> 
 | 
                    <div class="form-input"> 
 | 
                        <input id="pakInTask" name="pakInTask" class="layui-input" autocomplete="off" readonly> 
 | 
                    </div> 
 | 
                </div> 
 | 
                <div class="form-item"> 
 | 
                    <label class="form-label">出库任务中:</label> 
 | 
                    <div class="form-input"> 
 | 
                        <input id="pakOutTask" name="pakOutTask" class="layui-input" autocomplete="off" readonly> 
 | 
                    </div> 
 | 
                </div> 
 | 
                <div class="form-item"> 
 | 
                    <label class="form-label">移库任务中:</label> 
 | 
                    <div class="form-input"> 
 | 
                        <input id="pakMoveTask" name="pakMoveTask" class="layui-input" autocomplete="off" readonly> 
 | 
                    </div> 
 | 
                </div> 
 | 
                <div class="form-item"> 
 | 
                    <label class="form-label">回原点任务中:</label> 
 | 
                    <div class="form-input"> 
 | 
                        <input id="goHpTask" name="goHpTask" class="layui-input" autocomplete="off" readonly> 
 | 
                    </div> 
 | 
                </div> 
 | 
                <div class="form-item"> 
 | 
                    <label class="form-label">去反原点任务中:</label> 
 | 
                    <div class="form-input"> 
 | 
                        <input id="goOHpTask" name="goOHpTask" class="layui-input" autocomplete="off" readonly> 
 | 
                    </div> 
 | 
                </div> 
 | 
                <div class="form-item"> 
 | 
                    <label class="form-label">去原点避让位:</label> 
 | 
                    <div class="form-input"> 
 | 
                        <input id="goHpAvoid" name="goHpAvoid" class="layui-input" autocomplete="off" readonly> 
 | 
                    </div> 
 | 
                </div> 
 | 
                <div class="form-item"> 
 | 
                    <label class="form-label">去反原点避让位:</label> 
 | 
                    <div class="form-input"> 
 | 
                        <input id="goOHpAvoid" name="goOHpAvoid" class="layui-input" autocomplete="off" readonly> 
 | 
                    </div> 
 | 
                </div> 
 | 
                <div class="form-item"> 
 | 
                    <label class="form-label">入库取空结束:</label> 
 | 
                    <div class="form-input"> 
 | 
                        <input id="pakInEmpty" name="pakInEmpty" class="layui-input" autocomplete="off" readonly> 
 | 
                    </div> 
 | 
                </div> 
 | 
                <div class="form-item"> 
 | 
                    <label class="form-label">入库正常结束:</label> 
 | 
                    <div class="form-input"> 
 | 
                        <input id="pakInFinish" name="pakInFinish" class="layui-input" autocomplete="off" readonly> 
 | 
                    </div> 
 | 
                </div> 
 | 
                <div class="form-item"> 
 | 
                    <label class="form-label">出库取空结束:</label> 
 | 
                    <div class="form-input"> 
 | 
                        <input id="pakOutEmpty" name="pakOutEmpty" class="layui-input" autocomplete="off" readonly> 
 | 
                    </div> 
 | 
                </div> 
 | 
                <div class="form-item"> 
 | 
                    <label class="form-label">出库正常结束:</label> 
 | 
                    <div class="form-input"> 
 | 
                        <input id="pakOutFinish" name="pakOutFinish" class="layui-input" autocomplete="off" readonly> 
 | 
                    </div> 
 | 
                </div> 
 | 
                <div class="form-item"> 
 | 
                    <label class="form-label">去原点避让完成:</label> 
 | 
                    <div class="form-input"> 
 | 
                        <input id="goHpAvoidFinish" name="goHpAvoidFinish" class="layui-input" autocomplete="off" readonly> 
 | 
                    </div> 
 | 
                </div> 
 | 
                <div class="form-item"> 
 | 
                    <label class="form-label">去反原点避让完成:</label> 
 | 
                    <div class="form-input"> 
 | 
                        <input id="goOHpAvoidFinish" name="goOHpAvoidFinish" class="layui-input" autocomplete="off" readonly> 
 | 
                    </div> 
 | 
                </div> 
 | 
                <div class="form-item"> 
 | 
                    <label class="form-label">去原点避让完成:</label> 
 | 
                    <div class="form-input"> 
 | 
                        <input id="goHpAvoidErr" name="goHpAvoidErr" class="layui-input" autocomplete="off" readonly> 
 | 
                    </div> 
 | 
                </div> 
 | 
                <div class="form-item"> 
 | 
                    <label class="form-label">去反原点避让完成:</label> 
 | 
                    <div class="form-input"> 
 | 
                        <input id="goOHpAvoidErr" name="goOHpAvoidErr" class="layui-input" autocomplete="off" readonly> 
 | 
                    </div> 
 | 
                </div> 
 | 
            </div> 
 | 
            <div style="float:left;margin:  10px 10px 10px 10px; padding: 10px 10px 10px 10px;border: black;border-width: 3px;border-style:dotted"> 
 | 
                <div class="form-item" style="text-align: center"> 
 | 
                    <label>状态信息</label> 
 | 
                </div> 
 | 
<!--                <div class="form-item">--> 
 | 
<!--                    <label class="form-label">联机模式:</label>--> 
 | 
<!--                    <div class="form-input">--> 
 | 
<!--                        <input id="autoMode" name="autoMode" class="layui-input" autocomplete="off" readonly>--> 
 | 
<!--                    </div>--> 
 | 
<!--                </div>--> 
 | 
<!--                <div class="form-item">--> 
 | 
<!--                    <label class="form-label">电压过低:</label>--> 
 | 
<!--                    <div class="form-input">--> 
 | 
<!--                        <input id="voltageLow" name="voltageLow" class="layui-input" autocomplete="off" readonly>--> 
 | 
<!--                    </div>--> 
 | 
<!--                </div>--> 
 | 
            </div> 
 | 
        </div> 
 | 
    </div> 
 | 
</body> 
 | 
</html> 
 | 
<script> 
 | 
    // 空白行数 
 | 
    var shuttleStateTableBlankRows = 0; 
 | 
    var shuttleMsgTableBlankRows = 0; 
 | 
    // 实际行数 
 | 
    var shuttleStateTableFullRows = 0; 
 | 
    var shuttleMsgTableFullRows = 0; 
 | 
    // 初始化 
 | 
    var shuttleOutputDom = document.getElementById("shuttle-output"); 
 | 
    $(document).ready(function() { 
 | 
        initShuttleStateTable(); 
 | 
        getShuttleStateInfo(); 
 | 
        initShuttleMsgTable(); 
 | 
        getShuttleMsgInfo(); 
 | 
        operatorBlockShow(); 
 | 
        setShuttleRadio(); 
 | 
    }); 
 | 
  
 | 
    setInterval(function () { 
 | 
        getShuttleStateInfo() 
 | 
        getShuttleMsgInfo(); 
 | 
    },1000) 
 | 
    setInterval(function () { 
 | 
        getShuttleOutput(); 
 | 
        operatorBlockShow(); 
 | 
    },500); 
 | 
  
 | 
    // 判断手动操作模块是否可用 
 | 
    function operatorBlockShow() { 
 | 
        if (parent.systemRunning) { 
 | 
            $('.shuttle-operation').css("opacity", "0.5"); 
 | 
            $('.shuttle-operation-shade').show(); 
 | 
            $('.shuttle-operation-shade-span').show(); 
 | 
        }  else { 
 | 
            $('.shuttle-operation').css("opacity", "1"); 
 | 
            $('.shuttle-operation-shade').hide(); 
 | 
            $('.shuttle-operation-shade-span').hide(); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    var layerIdx; 
 | 
    $(document).on('click ','.pos-btn', function () { 
 | 
        let shuttleNo = Number($(this).parent().attr("data-shuttleNo")); 
 | 
        layerIdx = layer.open({ 
 | 
            type: 1, 
 | 
            title: false, 
 | 
            shadeClose: true, 
 | 
            offset: [$(this).offset().top + 30 + 'px', $(this).offset().left + 'px'], 
 | 
            anim: 5, 
 | 
            shade: [0], 
 | 
            area: ['310px', '370px'], 
 | 
            closeBtn: 0, 
 | 
            content: $("#shuttle-detl"), 
 | 
            success: function(layero, index){ 
 | 
                http.get(baseUrl+ "/shuttle/detl/"+shuttleNo, null, function (res) { 
 | 
                    $('#shuttleNo').val(shuttleNo); 
 | 
                    $('#workNo').val(res.data.workNo); 
 | 
                    $('#row').val(res.data.row); 
 | 
                    $('#bay').val(res.data.bay); 
 | 
                    $('#lev').val(res.data.lev); 
 | 
                    $('#crnNo').val(res.data.crnNo); 
 | 
                    $('#pakMk').val(res.data.pakMk); 
 | 
                }) 
 | 
            }, 
 | 
            end: function () { 
 | 
                $('#shuttleNo').val(""); 
 | 
                $('#workNo').val(""); 
 | 
                $('#row').val(""); 
 | 
                $('#bay').val(""); 
 | 
                $('#lev').val(""); 
 | 
                $('#crnNo').val(""); 
 | 
                $('#pakMk').val(""); 
 | 
            } 
 | 
        }) 
 | 
    }) 
 | 
  
 | 
    var layerIdx0; 
 | 
    $(document).on('click ','.mode-btn', function () { 
 | 
        let shuttleNo = Number($(this).parent().attr("data-shuttleNo")); 
 | 
        layerIdx0 = layer.open({ 
 | 
            type: 1, 
 | 
            title: false, 
 | 
            shadeClose: true, 
 | 
            offset: [$(this).offset().top + 30 + 'px', $(this).offset().left + 'px'], 
 | 
            anim: 5, 
 | 
            shade: [0], 
 | 
            area: ['70%', '85%'], 
 | 
            closeBtn: 0, 
 | 
            content: $("#shuttle-detl2"), 
 | 
            success: function(layero, index){ 
 | 
                console.log(shuttleNo) 
 | 
                http.get(baseUrl+ "/shuttle/sensor/detl/"+shuttleNo, null, function (res) { 
 | 
                    $('#shuttleNo1').val(res.data.shuttleNo); 
 | 
                    // getColor(res.data.liftErr,'#liftErr'); 
 | 
                    // getColor(res.data.inFetchErr,'#inFetchErr'); 
 | 
                    // getColor(res.data.outFetchErr,'#outFetchErr'); 
 | 
                    // getColor(res.data.antiErr,'#antiErr'); 
 | 
                    // getColor(res.data.liftSwitchErr,'#liftSwitchErr'); 
 | 
                    // getColor(res.data.trackErr,'#trackErr'); 
 | 
                    // getColor(res.data.timeoutErr,'#timeoutErr'); 
 | 
                    // getColor(res.data.connectErr,'#connectErr'); 
 | 
                    // getColor(res.data.emergencyErr,'#emergencyErr'); 
 | 
                    // getColor(res.data.taskTypeErr,'#taskTypeErr'); 
 | 
                    // getColor(res.data.taskNoErr,'#taskNoErr'); 
 | 
                    // getColor(res.data.newTaskErr,'#newTaskErr'); 
 | 
                    // getColor(res.data.errTaskErr,'#errTaskErr'); 
 | 
                    // getColor(res.data.stopErr,'#stopErr'); 
 | 
                    // getColor(res.data.offlineTaskErr,'#offlineTaskErr'); 
 | 
                    // getColor(res.data.startTaskErr,'#startTaskErr'); 
 | 
                    // getColor(res.data.voltageTaskErr,'#voltageTaskErr'); 
 | 
                    // getColor(res.data.devpErr,'#devpErr'); 
 | 
                    // getColor(res.data.online,'#online'); 
 | 
                    // getColor(res.data.notOnTrack,'#notOnTrack'); 
 | 
                    // getColor(res.data.lowVoltage,'#lowVoltage'); 
 | 
                    // getColor(res.data.electricityLoss,'#electricityLoss'); 
 | 
                    // getColor(res.data.forcedTravel,'#forcedTravel'); 
 | 
                    // getColor(res.data.demoMode,'#demoMode'); 
 | 
                    // getColor(res.data.brushConnect,'#brushConnect'); 
 | 
                    // getColor(res.data.taskManualForbid,'#taskManualForbid'); 
 | 
                    // getColor(res.data.onlineManualForbid,'#onlineManualForbid'); 
 | 
                    // getColor(res.data.devpEmergency,'#devpEmergency'); 
 | 
                    // getColor(res.data.taskInterrupt,'#taskInterrupt'); 
 | 
                    // getColor(res.data.taskClear,'#taskClear'); 
 | 
                    // getColor(res.data.taskConfirmTimeout,'#taskConfirmTimeout'); 
 | 
                    // getColor(res.data.taskWithCharge,'#taskWithCharge'); 
 | 
                    getColor(res.data.pakInTask,'#pakInTask'); 
 | 
                    getColor(res.data.pakOutTask,'#pakOutTask'); 
 | 
                    getColor(res.data.pakMoveTask,'#pakMoveTask'); 
 | 
                    getColor(res.data.goHpTask,'#goHpTask'); 
 | 
                    getColor(res.data.goOHpTask,'#goOHpTask'); 
 | 
                    getColor(res.data.goHpAvoid,'#goHpAvoid'); 
 | 
                    getColor(res.data.goOHpAvoid,'#goOHpAvoid'); 
 | 
                    getColor(res.data.pakInEmpty,'#pakInEmpty'); 
 | 
                    getColor(res.data.pakInFinish,'#pakInFinish'); 
 | 
                    getColor(res.data.pakOutEmpty,'#pakOutEmpty'); 
 | 
                    getColor(res.data.pakOutFinish,'#pakOutFinish'); 
 | 
                    getColor(res.data.goHpAvoidFinish,'#goHpAvoidFinish'); 
 | 
                    getColor(res.data.goOHpAvoidFinish,'#goOHpAvoidFinish'); 
 | 
                    getColor(res.data.goHpAvoidErr,'#goHpAvoidErr'); 
 | 
                    getColor(res.data.goOHpAvoidErr,'#goOHpAvoidErr'); 
 | 
                    // getColor(res.data.autoMode,'#autoMode'); 
 | 
                    // getColor(res.data.voltageLow,'#voltageLow'); 
 | 
                }) 
 | 
            }, 
 | 
            end: function () { 
 | 
                $('#shuttleNo').val(""); 
 | 
            } 
 | 
        }) 
 | 
    }) 
 | 
  
 | 
    function getColor(res,e){ 
 | 
        $(e).val(res?"✔":"—"); 
 | 
        if (res){ 
 | 
            $(e).attr("style", "color: #FD482C;"); 
 | 
        }else { 
 | 
            $(e).attr("style", "color: #00FF00;"); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    // $(document).on('click ','.mode-btn', function () { 
 | 
    //     let shuttleNo = Number($(this).parent().attr("data-shuttleNo")); 
 | 
    //     layer.confirm("改变" + shuttleNo + ' 号穿梭车在线状态吗?', function(){ 
 | 
    //         var index = layer.load(1, { 
 | 
    //             shade: [0.1,'#fff'] 
 | 
    //         }); 
 | 
    //         $.ajax({ 
 | 
    //             url: baseUrl+ "/shuttle/mode/switch", 
 | 
    //             headers: {'token': localStorage.getItem('token')}, 
 | 
    //             data: { 
 | 
    //                 shuttleNo: Number(shuttleNo), 
 | 
    //                 password: 'root' 
 | 
    //             }, 
 | 
    //             method: 'POST', 
 | 
    //             success: function (res) { 
 | 
    //                 layer.close(index); 
 | 
    //                 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}); 
 | 
    //                 } 
 | 
    //             } 
 | 
    //         }); 
 | 
    //     }); 
 | 
    // }) 
 | 
  
 | 
  
 | 
  
 | 
    $(document).on('click ','#save', function () { 
 | 
        http.post(baseUrl+ "/shuttle/detl/update", { 
 | 
            shuttleNo: $('#shuttleNo').val(), 
 | 
            workNo: $('#workNo').val(), 
 | 
            row:  $('#row').val(), 
 | 
            bay: $('#bay').val(), 
 | 
            lev:  $('#lev').val(), 
 | 
            crnNo: $('#crnNo').val(), 
 | 
            pakMk: $('#pakMk').val(), 
 | 
        }, function (res) { 
 | 
            layer.msg("修改成功", {icon: 1,}); 
 | 
            layer.close(layerIdx); 
 | 
        }) 
 | 
    }) 
 | 
  
 | 
    $(document).on('click ','#cancel', function () { 
 | 
        layer.close(layerIdx); 
 | 
    }) 
 | 
  
 | 
    function setShuttleRadio() { 
 | 
        $.ajax({ 
 | 
            url: baseUrl+ "/shuttle/table/shuttle/state", 
 | 
            headers: {'token': localStorage.getItem('token')}, 
 | 
            method: 'POST', 
 | 
            success: function (res) { 
 | 
                if (res.code === 200){ 
 | 
                    let table = res.data; 
 | 
                    for (let i=1;i<=table.length;i++){ 
 | 
                        //渲染四向穿梭车选项html 
 | 
                        let shuttleRadioBox = '<label><input type="radio" name="shuttleSelect" '; 
 | 
                        if (i === 1) { 
 | 
                            shuttleRadioBox += 'checked ' 
 | 
                        } 
 | 
                        shuttleRadioBox += 'value="' + table[i - 1].shuttleNo + '"> ' + table[i - 1].shuttleNo + '号穿梭车</label>' 
 | 
                        $("#shuttleRadioBoxId").append(shuttleRadioBox) 
 | 
  
 | 
  
 | 
                        //渲染四向穿梭车数据维护和设备信息html 
 | 
                        let shuttleCommandLogBox = '<div class="shuttle-command-item" data-shuttleNo="' + table[i - 1].shuttleNo + '">\n' + 
 | 
                            '<label>' + table[i - 1].shuttleNo + '#</label>\n' + 
 | 
                            // '<button class="demoBtn pos-btn">数据维护</button>\n' + 
 | 
                            // '<button class="demoBtn mode-btn" id="mode-' + table[i - 1].shuttleNo + '">设备信息</button>\n' + 
 | 
                            '</div>' 
 | 
                        $("#commandLogId").append(shuttleCommandLogBox); 
 | 
                    } 
 | 
                } else if (res.code === 403){ 
 | 
                    window.location.href = baseUrl+"/login"; 
 | 
                }  else { 
 | 
                    console.log(res.msg); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
    } 
 | 
  
 | 
    // 四向穿梭车信息表获取 ---- 表一 
 | 
    function getShuttleStateInfo() { 
 | 
        let tableEl = $('#shuttle-state-table'); 
 | 
        $.ajax({ 
 | 
            url: baseUrl+ "/shuttle/table/shuttle/state", 
 | 
            headers: {'token': localStorage.getItem('token')}, 
 | 
            method: 'POST', 
 | 
            success: function (res) { 
 | 
                if (res.code === 200){ 
 | 
                    let table = res.data; 
 | 
                    if (table.length > shuttleStateTableBlankRows && table.length !== shuttleStateTableFullRows) { 
 | 
                        initShuttleStateTable(table.length-shuttleStateTableBlankRows); 
 | 
                        shuttleStateTableFullRows = table.length; 
 | 
                    } 
 | 
                    for (let i=1;i<=table.length;i++){ 
 | 
                        // $("#mode-"+table[i-1].shuttleNo).html(table[i-1].statusVal===0?'联机':'脱机'); 
 | 
                        let tr = tableEl.find("tr").eq(i); 
 | 
                        setVal(tr.children("td").eq(0), table[i-1].shuttleNo); 
 | 
                        setVal(tr.children("td").eq(1), table[i-1].status); 
 | 
                        setVal(tr.children("td").eq(2), table[i-1].busyStatus); 
 | 
                        setVal(tr.children("td").eq(3), table[i-1].currentCode); 
 | 
                        setVal(tr.children("td").eq(4), table[i-1].batteryPower); 
 | 
                        setVal(tr.children("td").eq(5), table[i-1].batteryTemp); 
 | 
                        setVal(tr.children("td").eq(6), table[i-1].errorCode); 
 | 
                        setVal(tr.children("td").eq(7), table[i-1].plcOutputLift$);//顶升位 
 | 
                        setVal(tr.children("td").eq(8), table[i-1].plcOutputTransfer$);//换向位 
 | 
                        setVal(tr.children("td").eq(9), table[i-1].plcOutputBrake$);//抱闸位 
 | 
                        setVal(tr.children("td").eq(10), table[i-1].plcOutputCharge$);//充电位 
 | 
                        setVal(tr.children("td").eq(11), table[i-1].statusErrorCode); 
 | 
                        setVal(tr.children("td").eq(12), table[i-1].plcInputStatus); 
 | 
                        setVal(tr.children("td").eq(13), table[i-1].currentOrBeforeCode); 
 | 
                        setVal(tr.children("td").eq(14), table[i-1].codeOffsetX); 
 | 
                        setVal(tr.children("td").eq(15), table[i-1].codeOffsetY); 
 | 
                        setVal(tr.children("td").eq(16), table[i-1].currentVoltage); 
 | 
                        setVal(tr.children("td").eq(17), table[i-1].currentAnalogValue); 
 | 
                    } 
 | 
                } else if (res.code === 403){ 
 | 
                    window.location.href = baseUrl+"/login"; 
 | 
                }  else { 
 | 
                    console.log(res.msg); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
    } 
 | 
  
 | 
    // 四向穿梭车数据表获取 ---- 表二 
 | 
    function getShuttleMsgInfo() { 
 | 
        let tableEl = $('#shuttle-msg-table'); 
 | 
        $.ajax({ 
 | 
            url: baseUrl+ "/shuttle/table/shuttle/msg", 
 | 
            headers: {'token': localStorage.getItem('token')}, 
 | 
            method: 'POST', 
 | 
            success: function (res) { 
 | 
                if (res.code === 200){ 
 | 
                    var table = res.data; 
 | 
                    if (table.length > shuttleMsgTableBlankRows && table.length !== shuttleMsgTableFullRows) { 
 | 
                        initShuttleMsgTable(table.length-shuttleMsgTableBlankRows); 
 | 
                        shuttleMsgTableFullRows = 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].shuttleNo); 
 | 
                        setVal(tr.children("td").eq(1), table[i-1].workNo); 
 | 
                        setVal(tr.children("td").eq(2), table[i-1].status); 
 | 
                        setVal(tr.children("td").eq(3), table[i-1].sourceLocNo); 
 | 
                        setVal(tr.children("td").eq(4), table[i-1].distLocNo); 
 | 
                        setVal(tr.children("td").eq(5), table[i-1].currentLiftServoSpeed); 
 | 
                        setVal(tr.children("td").eq(6), table[i-1].currentMoveServoSpeed); 
 | 
                        setVal(tr.children("td").eq(7), table[i-1].currentLiftServoLoad); 
 | 
                        setVal(tr.children("td").eq(8), table[i-1].currentMoveServoLoad); 
 | 
                        setVal(tr.children("td").eq(9), table[i-1].pakMk); 
 | 
                    } 
 | 
                } else if (res.code === 403){ 
 | 
                    window.location.href = baseUrl+"/login"; 
 | 
                }  else { 
 | 
                    console.log(res.msg); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
    } 
 | 
  
 | 
    // 穿梭车日志输出 ----------------------------------------------------------------------- 
 | 
    function getShuttleOutput() { 
 | 
        $.ajax({ 
 | 
            url: baseUrl + "/shuttle/output/shuttle", 
 | 
            headers: {'token': localStorage.getItem('token')}, 
 | 
            method: 'POST', 
 | 
            success: function (res) { 
 | 
                if (res.code === 200) { 
 | 
                    shuttleOutput(res.data); 
 | 
                } else if (res.code === 403) { 
 | 
                    window.location.href = baseUrl + "/login"; 
 | 
                } else { 
 | 
                    console.log(res.msg); 
 | 
                } 
 | 
            } 
 | 
        }) 
 | 
    } 
 | 
  
 | 
    // 任务指令下发 
 | 
    function shuttleOperator(shuttleTaskMode) { 
 | 
        http.post(baseUrl+"/shuttle/operator/shuttle", { 
 | 
            shuttleNo: $('input[name="shuttleSelect"]:checked').val(), 
 | 
            shuttleTaskMode: shuttleTaskMode, 
 | 
            sourceLocNo: $("#sourceLocNo").val(), 
 | 
            distLocNo: $("#distLocNo").val() 
 | 
        }, function (res) { 
 | 
            layer.msg(res.msg, {icon: 1}); 
 | 
        }); 
 | 
    } 
 | 
  
 | 
  
 | 
    // ------------------------------------------------------------------------------------------------ 
 | 
  
 | 
    // 四向穿梭车信息表获取  ----- 表一 
 | 
    function initShuttleStateTable(row) { 
 | 
        let line; 
 | 
        if (row === undefined){ 
 | 
            let one = $('#shuttle-state-table thead').height(); 
 | 
            let total = $('.shuttle-state').height(); 
 | 
            let count = total / one; 
 | 
            count = parseInt(count) - 1; 
 | 
            shuttleStateTableBlankRows = count; 
 | 
            line = count; 
 | 
        } else { 
 | 
            line = row; 
 | 
        } 
 | 
        let html = ""; 
 | 
        for (let 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" + 
 | 
                "       <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"; 
 | 
        } 
 | 
        $('#shuttle-state-table tbody').after(html); 
 | 
    } 
 | 
  
 | 
    // 穿梭车数据表获取  ----- 表二 
 | 
    function initShuttleMsgTable(row) { 
 | 
        let line; 
 | 
        if (row === undefined){ 
 | 
            let one = $('#shuttle-msg-table thead').height(); 
 | 
            let total = $('.shuttle-msg').height(); 
 | 
            let count = total / one; 
 | 
            count = parseInt(count) - 1; 
 | 
            shuttleMsgTableBlankRows = count; 
 | 
            line = count; 
 | 
        } else { 
 | 
            line = row; 
 | 
        } 
 | 
        let html = ""; 
 | 
        for (let 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" + 
 | 
                "       <td></td>\n" + 
 | 
                "       <td></td>\n" + 
 | 
                "       <td></td>\n" + 
 | 
                "       <td></td>\n" + 
 | 
                "       <td></td>\n" + 
 | 
                "       <td></td>\n" + 
 | 
                "     </tr>\n"; 
 | 
        } 
 | 
        $('#shuttle-msg-table tbody').after(html); 
 | 
    } 
 | 
  
 | 
    // 日志输出框 
 | 
    function shuttleOutput(content){ 
 | 
        shuttleOutputDom.value += content; 
 | 
        shuttleOutputDom.scrollTop = shuttleOutputDom.scrollHeight; 
 | 
    } 
 | 
  
 | 
</script> 
 |