| | |
| | | <!-- 日志监控板 --> |
| | | <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> |
| | | <div class="dropdown-menu"> |
| | | <button id="steBtn-1" class="demoBtn" onclick="changePosition(this.id)">修改位置</button> |
| | | <ul class="dropdown-menu-nav dark" > |
| | | <div class="dropdown-anchor"></div> |
| | | <div class="form-item"><span>当前穿梭机:</span><input type="text"></div> |
| | | <div class="form-item"><span>排:</span><input type="text"></div> |
| | | <div class="form-item"><span>列:</span><input type="text"></div> |
| | | <div class="form-item"><span>层:</span><input type="text"></div> |
| | | </ul> |
| | | </div> |
| | | <div class="dropdown-menu"> |
| | | <button class="demoBtn" onclick="">所属堆垛机</button> |
| | | <ul class="dropdown-menu-nav dark"> |
| | | <div class="dropdown-anchor"></div> |
| | | <div class="form-item"><span>堆垛机号:</span><input type="text"></div> |
| | | </ul> |
| | | </div> |
| | | </div> |
| | | <div class="ste-command-item" style="margin-top: 25px"> |
| | | <label>2#</label> |
| | | <div class="dropdown-menu"> |
| | | <button id="steBtn-2" class="demoBtn" onclick="changePosition(this.id)">修改位置</button> |
| | | <ul class="dropdown-menu-nav dark" > |
| | | <div class="dropdown-anchor"></div> |
| | | <div class="form-item"><span>当前穿梭机:</span><input type="text"></div> |
| | | <div class="form-item"><span>排:</span><input type="text"></div> |
| | | <div class="form-item"><span>列:</span><input type="text"></div> |
| | | <div class="form-item"><span>层:</span><input type="text"></div> |
| | | </ul> |
| | | </div> |
| | | <div class="dropdown-menu"> |
| | | <button class="demoBtn" onclick="">所属堆垛机</button> |
| | | <ul class="dropdown-menu-nav dark"> |
| | | <div class="dropdown-anchor"></div> |
| | | <div class="form-item"><span>堆垛机号:</span><input type="text"></div> |
| | | </ul> |
| | | </div> |
| | | </div> |
| | | <div class="ste-command-item" style="margin-top: 25px"> |
| | | <label>3#</label> |
| | | <div class="dropdown-menu"> |
| | | <button id="steBtn-3" class="demoBtn" onclick="changePosition(this.id)">修改位置</button> |
| | | <ul class="dropdown-menu-nav dark" > |
| | | <div class="dropdown-anchor"></div> |
| | | <div class="form-item"><span>当前穿梭机:</span><input type="text"></div> |
| | | <div class="form-item"><span>排:</span><input type="text"></div> |
| | | <div class="form-item"><span>列:</span><input type="text"></div> |
| | | <div class="form-item"><span>层:</span><input type="text"></div> |
| | | </ul> |
| | | </div> |
| | | <div class="dropdown-menu"> |
| | | <button class="demoBtn" onclick="">所属堆垛机</button> |
| | | <ul class="dropdown-menu-nav dark"> |
| | | <div class="dropdown-anchor"></div> |
| | | <div class="form-item"><span>堆垛机号:</span><input type="text"></div> |
| | | </ul> |
| | | </div> |
| | | <button class="demoBtn pos-btn">数据维护</button> |
| | | <button id="mode-1" class="demoBtn mode-btn" >设备信息</button> |
| | | </div> |
| | | </div> |
| | | <!-- 堆垛机状态位信息 --> |
| | |
| | | <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> |
| | |
| | | </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> |
| | |
| | | <!-- 手动操作 --> |
| | | <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"> |
| | | <!-- 选择 --> |
| | |
| | | <span class="select-title">穿梭车号</span> |
| | | <div class="select-container"> |
| | | <label><input type="radio" name="steSelect" value="1" checked> 1号穿梭车</label> |
| | | <label><input type="radio" name="steSelect" value="2"> 2号穿梭车</label> |
| | | <label><input type="radio" name="steSelect" value="3"> 3号穿梭车</label> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <fieldset> |
| | | <legend>手动操作</legend> |
| | | <div class="button-group"> |
| | | <button class="item" onclick="leftTake()">左出库</button> |
| | | <button class="item" onclick="rightTake()">右出库</button> |
| | | <button class="item" onclick="leftPut()">左入库</button> |
| | | <button class="item" onclick="rightPut()">右入库</button> |
| | | <button class="item" onclick="leftStockMove()">左移库</button> |
| | | <button class="item" onclick="rightStockMove()">右移库</button> |
| | | <button class="item" onclick="oOrigin()">原点</button> |
| | | <button class="item" onclick="farPoint()">远点</button> |
| | | <button class="item" onclick="aPoint()">A 点</button> |
| | | <button class="item" onclick="bPoint()">B 点</button> |
| | | <button class="item" onclick="moveLift()">左搬移</button> |
| | | <button class="item" onclick="moveRight()">右搬移</button> |
| | | <button class="item" onclick="charging()">充电</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> |
| | | layui.config({ |
| | | base: baseUrl + "/static/layui/lay/modules/" |
| | | }).extend({ |
| | | dropdown: 'dropdown/dropdown', |
| | | }).use(['dropdown'],function () { |
| | | var dropdown = layui.dropdown; |
| | | }) |
| | | </script> |
| | | <script> |
| | | // 修改穿梭车位置 |
| | | function changePosition(id) { |
| | | console.log(id) |
| | | // $.ajax({ |
| | | // url: baseUrl + |
| | | // }) |
| | | // 空白行数 |
| | | 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() { |
| | | var tableEl = $('ste-state-table'); |
| | | let tableEl = $('#ste-state-table'); |
| | | $.ajax({ |
| | | url: baseUrl + "/crn/table/crn/state", |
| | | url: baseUrl+ "/ste/table/ste/state", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | method: 'GET', |
| | | method: 'POST', |
| | | success: function (res) { |
| | | console.log(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); |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | setInterval(function () { |
| | | getSteStateInfo() |
| | | },1000) |
| | | </script> |
| | | |
| | | // 任务指令下发 |
| | | 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> |