|  |  | 
 |  |  |         <div style="padding: 10px;height: 100%"> | 
 |  |  |             <!-- 日志监控板 --> | 
 |  |  |             <div class="log-board"> | 
 |  |  |                 <div class="command-log" id="commandLogId"> | 
 |  |  |                 <div class="command-log" id="commandLogId" style="width: 5%;"> | 
 |  |  | <!--                    <div data-shuttleNo="1" class="shuttle-command-item">--> | 
 |  |  | <!--                        <label>1#</label>--> | 
 |  |  | <!--                        <button class="demoBtn pos-btn">数据维护</button>--> | 
 |  |  | 
 |  |  | <!--                    </div>--> | 
 |  |  |                 </div> | 
 |  |  |                 <!-- 堆垛机状态位信息 --> | 
 |  |  |                 <div class="shuttle-state"> | 
 |  |  |                 <div class="shuttle-state" style="width: 95%;"> | 
 |  |  |                     <table id="shuttle-state-table"> | 
 |  |  |                         <thead> | 
 |  |  |                             <tr> | 
 |  |  | 
 |  |  |                                 <th>电量</th> | 
 |  |  |                                 <th>电池温度</th> | 
 |  |  |                                 <th>错误编号</th> | 
 |  |  |                                 <th>plc输出状态IO</th> | 
 |  |  |                                 <th>plc输出状态IO-顶升位</th> | 
 |  |  |                                 <th>plc输出状态IO-换向位</th> | 
 |  |  |                                 <th>plc输出状态IO-抱闸位</th> | 
 |  |  |                                 <th>plc输出状态IO-充电位</th> | 
 |  |  |                                 <th>错误信息码</th> | 
 |  |  |                                 <th>plc输入状态</th> | 
 |  |  |                                 <th>当前或之前二维码</th> | 
 |  |  |                                 <th>x偏移量</th> | 
 |  |  |                                 <th>y偏移量</th> | 
 |  |  | 
 |  |  |                             <th>升降伺服负载</th> | 
 |  |  |                             <th>行走伺服负载</th> | 
 |  |  |                             <th>作业标记</th> | 
 |  |  |                             <th>库位号</th> | 
 |  |  |                             <th>当前楼层</th> | 
 |  |  |                         </tr> | 
 |  |  |                     </thead> | 
 |  |  |                     <tbody> | 
 |  |  | 
 |  |  |  | 
 |  |  |                 <!-- 设备任务操作 --> | 
 |  |  |                 <div class="task-operator"> | 
 |  |  |                     <div style="display: flex;"> | 
 |  |  |                         <div class="task-operator" style="height: auto;width: 100%;"> | 
 |  |  |                             <div class="operator-item" style="height: auto"> | 
 |  |  |                                 <span class="select-title">源库位/目标库位</span> | 
 |  |  |                                 <div class="select-container" style="height: auto"> | 
 |  |  |                                     <div class="select-container-item"> | 
 |  |  |                                         <span>源库位</span> | 
 |  |  |                                         <label><input id="sourceLocNo" type="text" name="sourceLocNo" /></label> | 
 |  |  |                                     </div> | 
 |  |  |                                     <div class="select-container-item"> | 
 |  |  |                                         <span>目标库位</span> | 
 |  |  |                                         <label><input id="distLocNo" type="text" name="distLocNo" /></label> | 
 |  |  |                     <fieldset style="height: auto;padding-bottom: 20px;"> | 
 |  |  |                         <legend>手动操作</legend> | 
 |  |  |                         <div style="display: flex;"> | 
 |  |  |                             <div style="width: 30%;"> | 
 |  |  |                                 <div class="operator-item" style="height: auto;width: 100%;"> | 
 |  |  |                                     <span class="select-title">源库位/目标库位</span> | 
 |  |  |                                     <div class="select-container" style="height: auto;padding: 30px 10px 20px 10px;"> | 
 |  |  |                                         <div class="select-container-item"> | 
 |  |  |                                             <span>源库位</span> | 
 |  |  |                                             <label><input id="sourceLocNo" type="text" name="sourceLocNo" /></label> | 
 |  |  |                                         </div> | 
 |  |  |                                         <div class="select-container-item"> | 
 |  |  |                                             <span>目标库位</span> | 
 |  |  |                                             <label><input id="distLocNo" type="text" name="distLocNo" /></label> | 
 |  |  |                                         </div> | 
 |  |  |  | 
 |  |  |                                         <div style="margin-top: 10px;"> | 
 |  |  |                                             <button class="item" onclick="shuttleOperator(1)">入库</button> | 
 |  |  |                                             <button class="item" onclick="shuttleOperator(2)">出库</button> | 
 |  |  |                                             <button class="item" onclick="shuttleOperator(14)">移动到目标库位</button> | 
 |  |  |                                             <button class="item" onclick="shuttleOperator(16)">移动到提升机</button> | 
 |  |  |                                         </div> | 
 |  |  |                                     </div> | 
 |  |  |                                 </div> | 
 |  |  |                             </div> | 
 |  |  |                         </div> | 
 |  |  |                     </div> | 
 |  |  |  | 
 |  |  |                     <fieldset style="height: auto;padding-bottom: 20px;"> | 
 |  |  |                         <legend>手动操作</legend> | 
 |  |  |                         <div class="button-group"> | 
 |  |  |                             <button class="item" onclick="shuttleOperator(1)">入库</button> | 
 |  |  |                             <button class="item" onclick="shuttleOperator(2)">出库</button> | 
 |  |  |                             <button class="item" onclick="shuttleOperator(3)">托盘顶升</button> | 
 |  |  |                             <button class="item" onclick="shuttleOperator(4)">托盘下降</button> | 
 |  |  |                             <button class="item" onclick="shuttleOperator(5)">左移</button> | 
 |  |  |                             <button class="item" onclick="shuttleOperator(6)">右移</button> | 
 |  |  |                             <button class="item" onclick="shuttleOperator(7)">前移</button> | 
 |  |  |                             <button class="item" onclick="shuttleOperator(8)">后移</button> | 
 |  |  |                             <button class="item" onclick="shuttleOperator(9)">复位</button> | 
 |  |  |                             <div style="width: 40%;"> | 
 |  |  |                                 <div class="operator-item" style="height: auto;width: 100%;"> | 
 |  |  |                                     <span class="select-title">相关指令</span> | 
 |  |  |                                     <div class="select-container" style="height: auto;padding: 30px 10px 10px 10px;"> | 
 |  |  |                                         <div class="button-group"> | 
 |  |  |                                             <button class="item" onclick="shuttleOperator(3)">托盘顶升</button> | 
 |  |  |                                             <button class="item" onclick="shuttleOperator(4)">托盘下降</button> | 
 |  |  |                                             <button class="item" onclick="shuttleOperator(5)">左移</button> | 
 |  |  |                                             <button class="item" onclick="shuttleOperator(6)">右移</button> | 
 |  |  |                                             <button class="item" onclick="shuttleOperator(7)">后移</button> | 
 |  |  |                                             <button class="item" onclick="shuttleOperator(8)">前移</button> | 
 |  |  |                                             <button class="item" onclick="shuttleOperator(9)">复位</button> | 
 |  |  |                                             <button class="item" onclick="shuttleOperator(10)">正方向(右)寻库位</button> | 
 |  |  |                                             <button class="item" onclick="shuttleOperator(11)">负方向(左)寻库位</button> | 
 |  |  |                                             <button class="item" onclick="shuttleOperator(12)">正方向(前)寻库位</button> | 
 |  |  |                                             <button class="item" onclick="shuttleOperator(13)">负方向(后)寻库位</button> | 
 |  |  |                                             <button class="item" onclick="shuttleOperator(15)">充电开关</button> | 
 |  |  |                                         </div> | 
 |  |  |                                     </div> | 
 |  |  |                                 </div> | 
 |  |  |                             </div> | 
 |  |  |  | 
 |  |  |                             <div style="width: 20%;"> | 
 |  |  |                                 <div class="operator-item" style="height: auto;width: 100%;"> | 
 |  |  |                                     <span class="select-title">设置配置参数</span> | 
 |  |  |                                     <div class="select-container" style="height: auto;padding: 30px 10px 10px 10px;"> | 
 |  |  |                                         <div class="select-container-item"> | 
 |  |  |                                             <span>运行速度</span> | 
 |  |  |                                             <label><input id="runSpeed" type="text" name="runSpeed" /></label> | 
 |  |  |                                         </div> | 
 |  |  |                                         <div class="select-container-item"> | 
 |  |  |                                             <span>充电阈值</span> | 
 |  |  |                                             <label><input id="chargeLine" type="text" name="runSpeed" /></label> | 
 |  |  |                                         </div> | 
 |  |  |  | 
 |  |  |                                         <div> | 
 |  |  |                                             <button class="item" onclick="shuttleParamSave()">保存</button> | 
 |  |  |                                         </div> | 
 |  |  |                                     </div> | 
 |  |  |                                 </div> | 
 |  |  |                             </div> | 
 |  |  |  | 
 |  |  |                             <div style="width: 15%;"> | 
 |  |  |                                 <div class="operator-item" style="height: auto;width: 100%;"> | 
 |  |  |                                     <span class="select-title">配置参数</span> | 
 |  |  |                                     <div class="select-container" style="height: auto;padding: 30px 10px 10px 10px;"> | 
 |  |  |                                         <div>运行速度:<span id="runSpeedText"></span></div> | 
 |  |  |                                         <div>充电阈值:<span id="chargeLineText"></span></div> | 
 |  |  |                                     </div> | 
 |  |  |                                 </div> | 
 |  |  |                             </div> | 
 |  |  |                         </div> | 
 |  |  |                     </fieldset> | 
 |  |  |                 </div> | 
 |  |  | 
 |  |  |                 console.log(shuttleNo) | 
 |  |  |                 http.get(baseUrl+ "/shuttle/sensor/detl/"+shuttleNo, null, function (res) { | 
 |  |  |                     $('#shuttleNo1').val(res.data.shuttleNo); | 
 |  |  |                     // getColor(res.data.liftErr,'#liftErr'); | 
 |  |  |                     // getColor(res.data.inFetchErr,'#inFetchErr'); | 
 |  |  |                     // getColor(res.data.outFetchErr,'#outFetchErr'); | 
 |  |  |                     // getColor(res.data.antiErr,'#antiErr'); | 
 |  |  |                     // getColor(res.data.liftSwitchErr,'#liftSwitchErr'); | 
 |  |  |                     // getColor(res.data.trackErr,'#trackErr'); | 
 |  |  |                     // getColor(res.data.timeoutErr,'#timeoutErr'); | 
 |  |  |                     // getColor(res.data.connectErr,'#connectErr'); | 
 |  |  |                     // getColor(res.data.emergencyErr,'#emergencyErr'); | 
 |  |  |                     // getColor(res.data.taskTypeErr,'#taskTypeErr'); | 
 |  |  |                     // getColor(res.data.taskNoErr,'#taskNoErr'); | 
 |  |  |                     // getColor(res.data.newTaskErr,'#newTaskErr'); | 
 |  |  |                     // getColor(res.data.errTaskErr,'#errTaskErr'); | 
 |  |  |                     // getColor(res.data.stopErr,'#stopErr'); | 
 |  |  |                     // getColor(res.data.offlineTaskErr,'#offlineTaskErr'); | 
 |  |  |                     // getColor(res.data.startTaskErr,'#startTaskErr'); | 
 |  |  |                     // getColor(res.data.voltageTaskErr,'#voltageTaskErr'); | 
 |  |  |                     // getColor(res.data.devpErr,'#devpErr'); | 
 |  |  |                     // getColor(res.data.online,'#online'); | 
 |  |  |                     // getColor(res.data.notOnTrack,'#notOnTrack'); | 
 |  |  |                     // getColor(res.data.lowVoltage,'#lowVoltage'); | 
 |  |  |                     // getColor(res.data.electricityLoss,'#electricityLoss'); | 
 |  |  |                     // getColor(res.data.forcedTravel,'#forcedTravel'); | 
 |  |  |                     // getColor(res.data.demoMode,'#demoMode'); | 
 |  |  |                     // getColor(res.data.brushConnect,'#brushConnect'); | 
 |  |  |                     // getColor(res.data.taskManualForbid,'#taskManualForbid'); | 
 |  |  |                     // getColor(res.data.onlineManualForbid,'#onlineManualForbid'); | 
 |  |  |                     // getColor(res.data.devpEmergency,'#devpEmergency'); | 
 |  |  |                     // getColor(res.data.taskInterrupt,'#taskInterrupt'); | 
 |  |  |                     // getColor(res.data.taskClear,'#taskClear'); | 
 |  |  |                     // getColor(res.data.taskConfirmTimeout,'#taskConfirmTimeout'); | 
 |  |  |                     // getColor(res.data.taskWithCharge,'#taskWithCharge'); | 
 |  |  |                     getColor(res.data.pakInTask,'#pakInTask'); | 
 |  |  |                     getColor(res.data.pakOutTask,'#pakOutTask'); | 
 |  |  |                     getColor(res.data.pakMoveTask,'#pakMoveTask'); | 
 |  |  | 
 |  |  |                     getColor(res.data.goOHpAvoidFinish,'#goOHpAvoidFinish'); | 
 |  |  |                     getColor(res.data.goHpAvoidErr,'#goHpAvoidErr'); | 
 |  |  |                     getColor(res.data.goOHpAvoidErr,'#goOHpAvoidErr'); | 
 |  |  |                     // getColor(res.data.autoMode,'#autoMode'); | 
 |  |  |                     // getColor(res.data.voltageLow,'#voltageLow'); | 
 |  |  |                 }) | 
 |  |  |             }, | 
 |  |  |             end: function () { | 
 |  |  | 
 |  |  |             $(e).attr("style", "color: #00FF00;"); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     // $(document).on('click ','.mode-btn', function () { | 
 |  |  |     //     let shuttleNo = Number($(this).parent().attr("data-shuttleNo")); | 
 |  |  |     //     layer.confirm("改变" + shuttleNo + ' 号穿梭车在线状态吗?', function(){ | 
 |  |  |     //         var index = layer.load(1, { | 
 |  |  |     //             shade: [0.1,'#fff'] | 
 |  |  |     //         }); | 
 |  |  |     //         $.ajax({ | 
 |  |  |     //             url: baseUrl+ "/shuttle/mode/switch", | 
 |  |  |     //             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |     //             data: { | 
 |  |  |     //                 shuttleNo: Number(shuttleNo), | 
 |  |  |     //                 password: 'root' | 
 |  |  |     //             }, | 
 |  |  |     //             method: 'POST', | 
 |  |  |     //             success: function (res) { | 
 |  |  |     //                 layer.close(index); | 
 |  |  |     //                 if (res.code === 200){ | 
 |  |  |     //                     layer.msg(res.msg, {icon: 1}); | 
 |  |  |     //                 } else if (res.code === 403){ | 
 |  |  |     //                     window.location.href = baseUrl+"/login"; | 
 |  |  |     //                 }  else { | 
 |  |  |     //                     layer.msg(res.msg, {icon: 2}); | 
 |  |  |     //                 } | 
 |  |  |     //             } | 
 |  |  |     //         }); | 
 |  |  |     //     }); | 
 |  |  |     // }) | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     $(document).on('click ','#save', function () { | 
 |  |  |         http.post(baseUrl+ "/shuttle/detl/update", { | 
 |  |  | 
 |  |  |                         //渲染四向穿梭车数据维护和设备信息html | 
 |  |  |                         let shuttleCommandLogBox = '<div class="shuttle-command-item" data-shuttleNo="' + table[i - 1].shuttleNo + '">\n' + | 
 |  |  |                             '<label>' + table[i - 1].shuttleNo + '#</label>\n' + | 
 |  |  |                             '<button class="demoBtn pos-btn">数据维护</button>\n' + | 
 |  |  |                             '<button class="demoBtn mode-btn" id="mode-' + table[i - 1].shuttleNo + '">设备信息</button>\n' + | 
 |  |  |                             // '<button class="demoBtn pos-btn">数据维护</button>\n' + | 
 |  |  |                             // '<button class="demoBtn mode-btn" id="mode-' + table[i - 1].shuttleNo + '">设备信息</button>\n' + | 
 |  |  |                             '</div>' | 
 |  |  |                         $("#commandLogId").append(shuttleCommandLogBox); | 
 |  |  |                     } | 
 |  |  | 
 |  |  |                         // $("#mode-"+table[i-1].shuttleNo).html(table[i-1].statusVal===0?'联机':'脱机'); | 
 |  |  |                         let tr = tableEl.find("tr").eq(i); | 
 |  |  |                         setVal(tr.children("td").eq(0), table[i-1].shuttleNo); | 
 |  |  |                         setVal(tr.children("td").eq(1), table[i-1].status); | 
 |  |  |                         setVal(tr.children("td").eq(1), table[i-1].status$); | 
 |  |  |                         setVal(tr.children("td").eq(2), table[i-1].busyStatus); | 
 |  |  |                         setVal(tr.children("td").eq(3), table[i-1].currentCode); | 
 |  |  |                         setVal(tr.children("td").eq(4), table[i-1].batteryPower); | 
 |  |  |                         setVal(tr.children("td").eq(5), table[i-1].batteryTemp); | 
 |  |  |                         setVal(tr.children("td").eq(6), table[i-1].statusErrorCode$); | 
 |  |  |                         setVal(tr.children("td").eq(7), table[i-1].plcOutputStatusIO); | 
 |  |  |                         setVal(tr.children("td").eq(8), table[i-1].currentOrBeforeCode); | 
 |  |  |                         setVal(tr.children("td").eq(9), table[i-1].codeOffsetX); | 
 |  |  |                         setVal(tr.children("td").eq(10), table[i-1].codeOffsetY); | 
 |  |  |                         setVal(tr.children("td").eq(11), table[i-1].currentVoltage); | 
 |  |  |                         setVal(tr.children("td").eq(12), table[i-1].currentAnalogValue); | 
 |  |  |                         setVal(tr.children("td").eq(6), table[i-1].errorCode); | 
 |  |  |                         setVal(tr.children("td").eq(7), table[i-1].plcOutputLift$);//顶升位 | 
 |  |  |                         setVal(tr.children("td").eq(8), table[i-1].plcOutputTransfer$);//换向位 | 
 |  |  |                         setVal(tr.children("td").eq(9), table[i-1].plcOutputBrake$);//抱闸位 | 
 |  |  |                         setVal(tr.children("td").eq(10), table[i-1].plcOutputCharge$);//充电位 | 
 |  |  |                         setVal(tr.children("td").eq(11), table[i-1].statusErrorCode); | 
 |  |  |                         setVal(tr.children("td").eq(12), table[i-1].plcInputStatus); | 
 |  |  |                         setVal(tr.children("td").eq(13), table[i-1].currentOrBeforeCode); | 
 |  |  |                         setVal(tr.children("td").eq(14), table[i-1].codeOffsetX); | 
 |  |  |                         setVal(tr.children("td").eq(15), table[i-1].codeOffsetY); | 
 |  |  |                         setVal(tr.children("td").eq(16), table[i-1].currentVoltage$); | 
 |  |  |                         setVal(tr.children("td").eq(17), table[i-1].currentAnalogValue); | 
 |  |  |                     } | 
 |  |  |                 } else if (res.code === 403){ | 
 |  |  |                     window.location.href = baseUrl+"/login"; | 
 |  |  | 
 |  |  |                         setVal(tr.children("td").eq(7), table[i-1].currentLiftServoLoad); | 
 |  |  |                         setVal(tr.children("td").eq(8), table[i-1].currentMoveServoLoad); | 
 |  |  |                         setVal(tr.children("td").eq(9), table[i-1].pakMk); | 
 |  |  |                         setVal(tr.children("td").eq(10), table[i-1].locNo); | 
 |  |  |                         setVal(tr.children("td").eq(11), table[i-1].lev); | 
 |  |  |  | 
 |  |  |                         if (table[i-1].shuttleNo == parseInt($('input[name="shuttleSelect"]:checked').val())) { | 
 |  |  |                             $("#runSpeedText").text(table[i-1].runSpeed) | 
 |  |  |                             $("#chargeLineText").text(table[i-1].chargeLine + "%") | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } else if (res.code === 403){ | 
 |  |  |                     window.location.href = baseUrl+"/login"; | 
 |  |  | 
 |  |  |                 "       <td></td>\n" + | 
 |  |  |                 "       <td></td>\n" + | 
 |  |  |                 "       <td></td>\n" + | 
 |  |  |                 "       <td></td>\n" + | 
 |  |  |                 "       <td></td>\n" + | 
 |  |  |                 "       <td></td>\n" + | 
 |  |  |                 "     </tr>\n"; | 
 |  |  |         } | 
 |  |  |         $('#shuttle-state-table tbody').after(html); | 
 |  |  | 
 |  |  |         shuttleOutputDom.scrollTop = shuttleOutputDom.scrollHeight; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     //四向穿梭车配置参数保存 | 
 |  |  |     function shuttleParamSave() { | 
 |  |  |         $.ajax({ | 
 |  |  |             url: baseUrl+ "/shuttle/runSpeed/" + $('input[name="shuttleSelect"]:checked').val(), | 
 |  |  |             headers: {'token': localStorage.getItem('token')}, | 
 |  |  |             method: 'POST', | 
 |  |  |             data: { | 
 |  |  |                 runSpeed: $("#runSpeed").val(), | 
 |  |  |                 chargeLine: $("#chargeLine").val(), | 
 |  |  |             }, | 
 |  |  |             success: function (res) { | 
 |  |  |                 if (res.code === 200){ | 
 |  |  |                     layer.msg("配置已保存", {icon: 1,}); | 
 |  |  |                 } else if (res.code === 403){ | 
 |  |  |                     window.location.href = baseUrl+"/login"; | 
 |  |  |                 }  else { | 
 |  |  |                     console.log(res.msg); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | </script> |