#
Junjie
2023-10-13 03e68b2be24ea024eae645c47da1d4cb1773302a
src/main/webapp/views/ste.html
@@ -5,8 +5,12 @@
    <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%">
@@ -17,24 +21,10 @@
            <!-- 日志监控板 -->
            <div class="log-board">
                <div class="command-log">
                    <h3>执行中的命令</h3>
                    <div class="ste-command-item">
                    <div data-steNo="1" class="ste-command-item">
                        <label>1#</label>
                        <button id="demoBtn-1" class="demoBtn" onclick="changePosition()">修改位置</button>
                        <!--            <span>&nbsp;</span>-->
                        <button class="demoBtn" onclick="">所属堆垛机</button>
                    </div>
                    <div class="ste-command-item" style="margin-top: 25px">
                        <label>2#</label>
                        <button id="demoBtn-2" class="demoBtn" onclick="">修改位置</button>
                        <!--            <span>&nbsp;</span>-->
                        <button class="demoBtn" onclick="">所属堆垛机</button>
                    </div>
                    <div class="ste-command-item" style="margin-top: 25px">
                        <label>3#</label>
                        <button id="demoBtn-3" class="demoBtn" onclick="">修改位置</button>
                        <!--            <span>&nbsp;</span>-->
                        <button class="demoBtn" onclick="">所属堆垛机</button>
                        <button class="demoBtn pos-btn">数据维护</button>
                        <button id="mode-1" class="demoBtn mode-btn" >设备信息</button>
                    </div>
                </div>
                <!-- 堆垛机状态位信息 -->
@@ -51,9 +41,9 @@
                                <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>
@@ -63,26 +53,21 @@
                    </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>
                            <th>速度</th>
                            <th>近点距离</th>
                            <th>当前速度</th>
                            <th>高低位</th>
                            <th>过账指令任务号</th>
                            <th>过账指令状态</th>
                            <th>盘点数量</th>
                            <th>穿梭板就绪</th>
                            <th>充电桩号</th>
                            <th>堆垛机运行</th>
                            <th>堆垛机伸叉</th>
                            <th>堆垛机搬移</th>
                            <th>作业标记</th>
                        </tr>
                    </thead>
                    <tbody>
@@ -92,11 +77,11 @@
            <!-- 手动操作 -->
            <div class="ste-operation">
                <!-- 遮罩层 -->
<!--                <div class="ste-operation-shade">-->
<!--                    <span class="ste-operation-shade-span">-->
<!--                        WCS 系统运行中,请停止后操作-->
<!--                    </span>-->
<!--                </div>-->
                <div class="ste-operation-shade">
                    <span class="ste-operation-shade-span">
                        WCS 系统运行中,请停止后操作
                    </span>
                </div>
                <!-- 设备任务选择 -->
                <div class="task-select">
                    <!-- 选择 -->
@@ -104,8 +89,6 @@
                        <span class="select-title">穿梭车号</span>
                        <div class="select-container">
                            <label><input type="radio" name="steSelect" value="1" checked>&nbsp;1号穿梭车</label>
                            <label><input type="radio" name="steSelect" value="2">&nbsp;2号穿梭车</label>
                            <label><input type="radio" name="steSelect" value="3">&nbsp;3号穿梭车</label>
                        </div>
                    </div>
                </div>
@@ -114,39 +97,813 @@
                    <fieldset>
                        <legend>手动操作</legend>
                        <div class="button-group">
                            <button class="item" onclick="put()">左出库</button>
                            <button class="item" onclick="take()">右出库</button>
                            <button class="item" onclick="stockMove()">左入库</button>
                            <button class="item" onclick="siteMove()">右入库</button>
                            <button class="item" onclick="bacOrigin()">左移库</button>
                            <button class="item" onclick="reverseOrigin()">右移库</button>
                            <button class="item" onclick="coorMove()">原点</button>
                            <button class="item" onclick="taskComplete()">远点 </button>
                            <button class="item" onclick="pause()">A 点</button>
                            <button class="item" onclick="boot()">B 点</button>
                            <button class="item" onclick="pause()">左搬移</button>
                            <button class="item" onclick="boot()">右搬移</button>
                            <button class="item" onclick="boot()">充电</button>
                            <button class="item" onclick="pause()">左盘点</button>
                            <button class="item" onclick="boot()">右盘点</button>
                            <button class="item" onclick="boot()">任务完成</button>
                            <button class="item" onclick="clearCommand()">清除命令</button>
                            <button class="item" onclick="handleReset()">复位</button>
                            <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>
    function changePosition() {
    // 空白行数
    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();
        }
    }
</script>
    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>