| <!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/ste.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"> | 
|                     <div data-steNo="1" class="ste-command-item"> | 
|                         <label>1#</label> | 
|                         <button class="demoBtn pos-btn">数据维护</button> | 
|                         <button id="mode-1" class="demoBtn mode-btn" >设备信息</button> | 
|                     </div> | 
|                 </div> | 
|                 <!-- 堆垛机状态位信息 --> | 
|                 <div class="ste-state"> | 
|                     <table id="ste-state-table"> | 
|                         <thead> | 
|                             <tr> | 
|                                 <th>穿梭车</th> | 
|                                 <th>模式</th> | 
|                                 <th>状态</th> | 
|                                 <th>有物</th> | 
|                                 <th>在轨</th> | 
|                                 <th>电量</th> | 
|                                 <th>排</th> | 
|                                 <th>列</th> | 
|                                 <th>层</th> | 
|                                 <th>等待WCS确认</th> | 
|                                 <th>定位</th> | 
|                                 <th>充电状态</th> | 
|                                 <th>报警信息1</th> | 
|                                 <th>报警信息2</th> | 
|                             </tr> | 
|                         </thead> | 
|                         <tbody> | 
|                         </tbody> | 
|                     </table> | 
|                 </div> | 
|             </div> | 
|             <!-- 穿梭车状态 --> | 
|             <div class="ste-msg"> | 
|                 <table id="ste-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="ste-operation"> | 
|                 <!-- 遮罩层 --> | 
|                 <div class="ste-operation-shade"> | 
|                     <span class="ste-operation-shade-span"> | 
|                         WCS 系统运行中,请停止后操作 | 
|                     </span> | 
|                 </div> | 
|                 <!-- 设备任务选择 --> | 
|                 <div class="task-select"> | 
|                     <!-- 选择 --> | 
|                     <div id="ste-select" class="operator-item"> | 
|                         <span class="select-title">穿梭车号</span> | 
|                         <div class="select-container"> | 
|                             <label><input type="radio" name="steSelect" value="1" checked> 1号穿梭车</label> | 
|                         </div> | 
|                     </div> | 
|                 </div> | 
|                 <!-- 设备任务操作 --> | 
|                 <div class="task-operator"> | 
|                     <fieldset> | 
|                         <legend>手动操作</legend> | 
|                         <div class="button-group"> | 
|                             <button class="item" onclick="steOperator(99)">联机</button> | 
|                             <button class="item" onclick="steOperator(100)">脱机</button> | 
|                             <button class="item" onclick="steOperator(1)">向右出库</button> | 
|                             <button class="item" onclick="steOperator(2)">向左出库</button> | 
|                             <button class="item" onclick="steOperator(3)">从右入库</button> | 
|                             <button class="item" onclick="steOperator(4)">从左入库</button> | 
|                             <button class="item" onclick="steOperator(5)">左移库</button> | 
|                             <button class="item" onclick="steOperator(6)">右移库</button> | 
|                             <button class="item" onclick="steOperator(7)">去右端</button> | 
|                             <button class="item" onclick="steOperator(8)">去左端</button> | 
|                             <button class="item" onclick="steOperator(9)">右待机</button> | 
|                             <button class="item" onclick="steOperator(10)">左待机</button> | 
| <!--                            <button class="item" onclick="steOperator(11)">左搬移</button>--> | 
| <!--                            <button class="item" onclick="steOperator(12)">右搬移</button>--> | 
| <!--                            <button class="item" onclick="steOperator(13)">左充电</button>--> | 
| <!--                            <button class="item" onclick="steOperator(14)">右充电</button>--> | 
| <!--                            <button class="item" onclick="steOperator(17)">断开充电</button>--> | 
| <!--                            <button class="item" onclick="steOperator(14)">左盘点</button>--> | 
| <!--                            <button class="item" onclick="steOperator(15)">右盘点</button>--> | 
|                             <button class="item" onclick="steOperator(16)">任务完成</button> | 
|   | 
|                         </div> | 
|                     </fieldset> | 
|                 </div> | 
|   | 
|             </div> | 
|             <!-- 穿梭车日志输出 --> | 
|             <div class="ste-output-board"> | 
|                 <textarea id="ste-output"></textarea> | 
|             </div> | 
|         </div> | 
|     </div> | 
|   | 
|     <div id="ste-detl" style="display: none"> | 
|         <div> | 
|             <div class="form-item"> | 
|                 <label class="form-label">穿梭车号:</label> | 
|                 <div class="form-input"> | 
|                     <input id="steNo" name="steNo" 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="crnNo" name="crnNo" 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="ste-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="steNo1" name="steNo" class="layui-input" lay-verify="required|number" autocomplete="off" disabled="disabled" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">升降超时报警:</label> | 
|                     <div class="form-input"> | 
|                         <input id="liftErr" name="liftErr" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">入库取空报警:</label> | 
|                     <div class="form-input"> | 
|                         <input id="inFetchErr" name="inFetchErr" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">出库取空报警:</label> | 
|                     <div class="form-input"> | 
|                         <input id="outFetchErr" name="outFetchErr" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">防撞保护:</label> | 
|                     <div class="form-input"> | 
|                         <input id="antiErr" name="antiErr" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">升降接近开关故障:</label> | 
|                     <div class="form-input"> | 
|                         <input id="liftSwitchErr" name="liftSwitchErr" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">轨道检测报警:</label> | 
|                     <div class="form-input"> | 
|                         <input id="trackErr" name="trackErr" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">设备运行超时报警:</label> | 
|                     <div class="form-input"> | 
|                         <input id="timeoutErr" name="timeoutErr" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">通信错误报警:</label> | 
|                     <div class="form-input"> | 
|                         <input id="connectErr" name="connectErr" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">设备急停:</label> | 
|                     <div class="form-input"> | 
|                         <input id="emergencyErr" name="emergencyErr" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">任务类型缺失:</label> | 
|                     <div class="form-input"> | 
|                         <input id="taskTypeErr" name="taskTypeErr" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">任务号缺失:</label> | 
|                     <div class="form-input"> | 
|                         <input id="taskNoErr" name="taskNoErr" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">运行中有新任务:</label> | 
|                     <div class="form-input"> | 
|                         <input id="newTaskErr" name="newTaskErr" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">故障中有任务:</label> | 
|                     <div class="form-input"> | 
|                         <input id="errTaskErr" name="errTaskErr" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">运行中停止:</label> | 
|                     <div class="form-input"> | 
|                         <input id="stopErr" name="stopErr" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">脱机模式下有任务:</label> | 
|                     <div class="form-input"> | 
|                         <input id="offlineTaskErr" name="offlineTaskErr" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">条件未满足启动任务:</label> | 
|                     <div class="form-input"> | 
|                         <input id="startTaskErr" name="startTaskErr" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">低电压时有任务:</label> | 
|                     <div class="form-input"> | 
|                         <input id="voltageTaskErr" name="voltageTaskErr" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">设备故障标志位:</label> | 
|                     <div class="form-input"> | 
|                         <input id="devpErr" name="devpErr" 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="online" name="online" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">不在轨道上:</label> | 
|                     <div class="form-input"> | 
|                         <input id="notOnTrack" name="notOnTrack" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">低电量提醒:</label> | 
|                     <div class="form-input"> | 
|                         <input id="lowVoltage" name="lowVoltage" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">亏电中:</label> | 
|                     <div class="form-input"> | 
|                         <input id="electricityLoss" name="electricityLoss" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">强制行走启动:</label> | 
|                     <div class="form-input"> | 
|                         <input id="forcedTravel" name="forcedTravel" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">演示模式开启:</label> | 
|                     <div class="form-input"> | 
|                         <input id="demoMode" name="demoMode" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">充电刷已接通:</label> | 
|                     <div class="form-input"> | 
|                         <input id="brushConnect" name="brushConnect" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">任务中禁止手动:</label> | 
|                     <div class="form-input"> | 
|                         <input id="taskManualForbid" name="taskManualForbid" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">联机中禁止手动:</label> | 
|                     <div class="form-input"> | 
|                         <input id="onlineManualForbid" name="onlineManualForbid" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">设备急停中:</label> | 
|                     <div class="form-input"> | 
|                         <input id="devpEmergency" name="devpEmergency" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">任务中断中:</label> | 
|                     <div class="form-input"> | 
|                         <input id="taskInterrupt" name="taskInterrupt" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">任务已清除:</label> | 
|                     <div class="form-input"> | 
|                         <input id="taskClear" name="taskClear" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">任务确认已超时:</label> | 
|                     <div class="form-input"> | 
|                         <input id="taskConfirmTimeout" name="taskConfirmTimeout" class="layui-input" autocomplete="off" readonly> | 
|                     </div> | 
|                 </div> | 
|                 <div class="form-item"> | 
|                     <label class="form-label">充电中有任务:</label> | 
|                     <div class="form-input"> | 
|                         <input id="taskWithCharge" name="taskWithCharge" 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="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 steStateTableBlankRows = 0; | 
|     var steMsgTableBlankRows = 0; | 
|     // 实际行数 | 
|     var steStateTableFullRows = 0; | 
|     var steMsgTableFullRows = 0; | 
|     // 初始化 | 
|     var steOutputDom = document.getElementById("ste-output"); | 
|     $(document).ready(function() { | 
|         initSteStateTable(); | 
|         getSteStateInfo(); | 
|         initSteMsgTable(); | 
|         getSteMsgInfo(); | 
|         operatorBlockShow(); | 
|     }); | 
|   | 
|     setInterval(function () { | 
|         getSteStateInfo() | 
|         getSteMsgInfo(); | 
|     },1000) | 
|     setInterval(function () { | 
|         getSteOutput(); | 
|         operatorBlockShow(); | 
|     },500); | 
|   | 
|     // 判断手动操作模块是否可用 | 
|     function operatorBlockShow() { | 
|         if (parent.systemRunning) { | 
|             $('.ste-operation').css("opacity", "0.5"); | 
|             $('.ste-operation-shade').show(); | 
|             $('.ste-operation-shade-span').show(); | 
|         }  else { | 
|             $('.ste-operation').css("opacity", "1"); | 
|             $('.ste-operation-shade').hide(); | 
|             $('.ste-operation-shade-span').hide(); | 
|         } | 
|     } | 
|   | 
|     var layerIdx; | 
|     $(document).on('click ','.pos-btn', function () { | 
|         let steNo = Number($(this).parent().attr("data-steNo")); | 
|         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: $("#ste-detl"), | 
|             success: function(layero, index){ | 
|                 http.get(baseUrl+ "/ste/detl/"+steNo, null, function (res) { | 
|                     $('#steNo').val(steNo); | 
|                     $('#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 () { | 
|                 $('#steNo').val(""); | 
|                 $('#workNo').val(""); | 
|                 $('#row').val(""); | 
|                 $('#bay').val(""); | 
|                 $('#lev').val(""); | 
|                 $('#crnNo').val(""); | 
|                 $('#pakMk').val(""); | 
|             } | 
|         }) | 
|     }) | 
|   | 
|     var layerIdx0; | 
|     $(document).on('click ','.mode-btn', function () { | 
|         let steNo = Number($(this).parent().attr("data-steNo")); | 
|         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: $("#ste-detl2"), | 
|             success: function(layero, index){ | 
|                 http.get(baseUrl+ "/ste/sensor/detl/"+steNo, null, function (res) { | 
|                     $('#steNo1').val(res.data.steNo); | 
|                     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 () { | 
|                 $('#steNo').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 steNo = Number($(this).parent().attr("data-steNo")); | 
|     //     layer.confirm("改变" + steNo + ' 号穿梭车在线状态吗?', function(){ | 
|     //         var index = layer.load(1, { | 
|     //             shade: [0.1,'#fff'] | 
|     //         }); | 
|     //         $.ajax({ | 
|     //             url: baseUrl+ "/ste/mode/switch", | 
|     //             headers: {'token': localStorage.getItem('token')}, | 
|     //             data: { | 
|     //                 steNo: Number(steNo), | 
|     //                 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+ "/ste/detl/update", { | 
|             steNo: $('#steNo').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 getSteStateInfo() { | 
|         let tableEl = $('#ste-state-table'); | 
|         $.ajax({ | 
|             url: baseUrl+ "/ste/table/ste/state", | 
|             headers: {'token': localStorage.getItem('token')}, | 
|             method: 'POST', | 
|             success: function (res) { | 
|                 if (res.code === 200){ | 
|                     let table = res.data; | 
|                     if (table.length > steStateTableBlankRows && table.length !== steStateTableFullRows) { | 
|                         initSteStateTable(table.length-steStateTableBlankRows); | 
|                         steStateTableFullRows = table.length; | 
|                     } | 
|                     for (let i=1;i<=table.length;i++){ | 
|                         // $("#mode-"+table[i-1].steNo).html(table[i-1].statusVal===0?'联机':'脱机'); | 
|                         let tr = tableEl.find("tr").eq(i); | 
|                         setVal(tr.children("td").eq(0), table[i-1].steNo); | 
|                         setVal(tr.children("td").eq(1), table[i-1].statusType); | 
|                         setVal(tr.children("td").eq(2), table[i-1].status); | 
|                         setVal(tr.children("td").eq(3), table[i-1].loading); | 
|                         setVal(tr.children("td").eq(4), table[i-1].track); | 
|                         setVal(tr.children("td").eq(5), table[i-1].charge); | 
|                         setVal(tr.children("td").eq(6), table[i-1].row); | 
|                         setVal(tr.children("td").eq(7), table[i-1].bay); | 
|                         setVal(tr.children("td").eq(8), table[i-1].lev); | 
|                         setVal(tr.children("td").eq(9), table[i-1].waiting); | 
|                         setVal(tr.children("td").eq(10), table[i-1].loca); | 
|                         setVal(tr.children("td").eq(11), table[i-1].chargeStatus); | 
|                         setVal(tr.children("td").eq(12), table[i-1].alarm1); | 
|                         setVal(tr.children("td").eq(13), table[i-1].alarm2); | 
|                     } | 
|                 } else if (res.code === 403){ | 
|                     window.location.href = baseUrl+"/login"; | 
|                 }  else { | 
|                     console.log(res.msg); | 
|                 } | 
|             } | 
|         }); | 
|     } | 
|   | 
|     // 穿梭车数据表获取 ---- 表二 | 
|     function getSteMsgInfo() { | 
|         let tableEl = $('#ste-msg-table'); | 
|         $.ajax({ | 
|             url: baseUrl+ "/ste/table/ste/msg", | 
|             headers: {'token': localStorage.getItem('token')}, | 
|             method: 'POST', | 
|             success: function (res) { | 
|                 if (res.code === 200){ | 
|                     var table = res.data; | 
|                     if (table.length > steMsgTableBlankRows && table.length !== steMsgTableFullRows) { | 
|                         initSteMsgTable(table.length-steMsgTableBlankRows); | 
|                         steMsgTableFullRows = 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].steNo); | 
|                         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].sourceStaNo); | 
|                         setVal(tr.children("td").eq(4), table[i-1].staNo); | 
|                         setVal(tr.children("td").eq(5), table[i-1].sourceLocNo); | 
|                         setVal(tr.children("td").eq(6), table[i-1].locNo); | 
|                         setVal(tr.children("td").eq(7), table[i-1].speed); | 
|                         setVal(tr.children("td").eq(8), table[i-1].closer); | 
|                         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 getSteOutput() { | 
|         $.ajax({ | 
|             url: baseUrl + "/ste/output/ste", | 
|             headers: {'token': localStorage.getItem('token')}, | 
|             method: 'POST', | 
|             success: function (res) { | 
|                 if (res.code === 200) { | 
|                     steOutput(res.data); | 
|                 } else if (res.code === 403) { | 
|                     window.location.href = baseUrl + "/login"; | 
|                 } else { | 
|                     console.log(res.msg); | 
|                 } | 
|             } | 
|         }) | 
|     } | 
|   | 
|     // 任务指令下发 | 
|     function steOperator(steTaskMode) { | 
|         http.post(baseUrl+"/ste/operator/ste", { | 
|             steNo: $('input[name="steSelect"]:checked').val(), | 
|             steTaskMode: steTaskMode | 
|         }, function (res) { | 
|             layer.msg(res.msg, {icon: 1}); | 
|         }); | 
|     } | 
|   | 
|   | 
|     // ------------------------------------------------------------------------------------------------ | 
|   | 
|     // 穿梭车信息表获取  ----- 表一 | 
|     function initSteStateTable(row) { | 
|         let line; | 
|         if (row === undefined){ | 
|             let one = $('#ste-state-table thead').height(); | 
|             let total = $('.ste-state').height(); | 
|             let count = total / one; | 
|             count = parseInt(count) - 1; | 
|             steStateTableBlankRows = 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"; | 
|         } | 
|         $('#ste-state-table tbody').after(html); | 
|     } | 
|   | 
|     // 穿梭车数据表获取  ----- 表二 | 
|     function initSteMsgTable(row) { | 
|         let line; | 
|         if (row === undefined){ | 
|             let one = $('#ste-msg-table thead').height(); | 
|             let total = $('.ste-msg').height(); | 
|             let count = total / one; | 
|             count = parseInt(count) - 1; | 
|             steMsgTableBlankRows = 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"; | 
|         } | 
|         $('#ste-msg-table tbody').after(html); | 
|     } | 
|   | 
|     // 日志输出框 | 
|     function steOutput(content){ | 
|         steOutputDom.value += content; | 
|         steOutputDom.scrollTop = steOutputDom.scrollHeight; | 
|     } | 
|   | 
| </script> |