From 5c12ee87de4f483ce6a205b53996944c8e4506a7 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 07 一月 2025 16:58:23 +0800
Subject: [PATCH] #

---
 src/main/webapp/views/shuttle.html |  887 ++++++++++++++++++++++++----------------------------------
 1 files changed, 367 insertions(+), 520 deletions(-)

diff --git a/src/main/webapp/views/shuttle.html b/src/main/webapp/views/shuttle.html
index ce3a332..d11d3c5 100644
--- a/src/main/webapp/views/shuttle.html
+++ b/src/main/webapp/views/shuttle.html
@@ -13,97 +13,102 @@
     <script type="text/javascript" src="../static/js/common.js"></script>
 </head>
 <body>
-    <div style="padding: 10px;height: 100%;float: left;width: 6%">
-        <div class="button-window"></div>
-    </div>
-    <div style="height: 100%;padding-left: 6%">
-        <div style="padding: 10px;height: 100%">
-            <!-- 鏃ュ織鐩戞帶鏉� -->
-            <div class="log-board">
-                <div class="command-log" id="commandLogId" style="width: 5%;">
-<!--                    <div data-shuttleNo="1" class="shuttle-command-item">-->
-<!--                        <label>1#</label>-->
-<!--                        <button class="demoBtn pos-btn">鏁版嵁缁存姢</button>-->
-<!--                        <button id="mode-1" class="demoBtn mode-btn" >璁惧淇℃伅</button>-->
-<!--                    </div>-->
-                </div>
-                <!-- 鍫嗗灈鏈虹姸鎬佷綅淇℃伅 -->
-                <div class="shuttle-state" style="width: 95%;">
-                    <table id="shuttle-state-table">
-                        <thead>
-                            <tr>
-                                <th>鍥涘悜绌挎杞�</th>
-                                <th>浠诲姟鐘舵��</th>
-                                <th>灏忚溅鐘舵��</th>
-                                <th>褰撳墠浜岀淮鐮�</th>
-                                <th>鐢甸噺</th>
-                                <th>鐢垫睜娓╁害</th>
-                                <th>閿欒缂栧彿</th>
-                                <th>plc杈撳嚭鐘舵�両O-椤跺崌浣�</th>
-                                <th>plc杈撳嚭鐘舵�両O-鎹㈠悜浣�</th>
-                                <th>plc杈撳嚭鐘舵�両O-鎶遍椄浣�</th>
-                                <th>plc杈撳嚭鐘舵�両O-鍏呯數浣�</th>
-                                <th>閿欒淇℃伅鐮�</th>
-                                <th>plc杈撳叆鐘舵��</th>
-                                <th>褰撳墠鎴栦箣鍓嶄簩缁寸爜</th>
-                                <th>x鍋忕Щ閲�</th>
-                                <th>y鍋忕Щ閲�</th>
-                                <th>鐢靛帇</th>
-                                <th>妯℃嫙閲�</th>
-                            </tr>
-                        </thead>
-                        <tbody>
-                        </tbody>
-                    </table>
-                </div>
-            </div>
-            <!-- 绌挎杞︾姸鎬� -->
-            <div class="shuttle-msg">
-                <table id="shuttle-msg-table">
+<div style="padding: 10px;height: 100%;float: left;width: 6%">
+    <div class="button-window"></div>
+</div>
+<div style="height: 100%;padding-left: 6%">
+    <div style="padding: 10px;height: 100%">
+        <!-- 鏃ュ織鐩戞帶鏉� -->
+        <div class="log-board">
+            <!--                <div class="command-log" id="commandLogId" style="width: 5%;">-->
+            <!--&lt;!&ndash;                    <div data-shuttleNo="1" class="shuttle-command-item">&ndash;&gt;-->
+            <!--&lt;!&ndash;                        <label>1#</label>&ndash;&gt;-->
+            <!--&lt;!&ndash;                        <button class="demoBtn pos-btn">鏁版嵁缁存姢</button>&ndash;&gt;-->
+            <!--&lt;!&ndash;                        <button id="mode-1" class="demoBtn mode-btn" >璁惧淇℃伅</button>&ndash;&gt;-->
+            <!--&lt;!&ndash;                    </div>&ndash;&gt;-->
+            <!--                </div>-->
+            <!-- 鍫嗗灈鏈虹姸鎬佷綅淇℃伅 -->
+            <div class="shuttle-state" style="width: 100%;">
+                <table id="shuttle-state-table">
                     <thead>
-                        <tr>
-                            <th>鍥涘悜绌挎杞�</th>
-                            <th>宸ヤ綔鍙�</th>
-                            <th>鐘舵��</th>
-                            <th>婧愬簱浣�</th>
-                            <th>鐩爣搴撲綅</th>
-                            <th>鍗囬檷浼烘湇閫熷害</th>
-                            <th>琛岃蛋浼烘湇閫熷害</th>
-                            <th>鍗囬檷浼烘湇璐熻浇</th>
-                            <th>琛岃蛋浼烘湇璐熻浇</th>
-                            <th>浣滀笟鏍囪</th>
-                        </tr>
+                    <tr>
+                        <th>鍥涘悜绌挎杞�</th>
+                        <th>浠诲姟鐘舵��</th>
+                        <th>灏忚溅鐘舵��</th>
+                        <th>宸ヤ綔妯″紡</th>
+                        <th>瀹為檯搴撲綅</th>
+                        <th>瀹為檯鍧愭爣</th>
+                        <th>鐢甸噺</th>
+                        <th>褰撳墠閫熷害</th>
+                        <th>璐熻浇鐘舵��</th>
+                        <th>椤跺崌浣嶇疆</th>
+                        <th>杩愯鏂瑰悜</th>
+                        <th>杩愯鏂瑰悜2</th>
+                        <th>鍏呯數鐘舵��</th>
+                        <th>鏁呴殰鐘舵��</th>
+                        <th>鏁呴殰鐮�</th>
+                        <th>绠″埗鐘舵��</th>
+                        <th>浣庣數閲�</th>
+                    </tr>
                     </thead>
                     <tbody>
                     </tbody>
                 </table>
             </div>
-            <!-- 鎵嬪姩鎿嶄綔 -->
-            <div class="shuttle-operation">
-                <!-- 閬僵灞� -->
-                <div class="shuttle-operation-shade">
+        </div>
+        <!-- 绌挎杞︾姸鎬� -->
+        <div class="shuttle-msg">
+            <table id="shuttle-msg-table">
+                <thead>
+                <tr>
+                    <th>鍥涘悜绌挎杞�</th>
+                    <th>宸ヤ綔鍙�</th>
+                    <th>婧愬簱浣�</th>
+                    <th>鐩爣搴撲綅</th>
+                    <th>鏈�楂樼數鑺數鍘�</th>
+                    <th>鏈�浣庣數鑺數鍘�</th>
+                    <th>鐢垫睜鐢靛帇</th>
+                    <th>鍏呮斁鐢靛惊鐜鏁�</th>
+                    <th>鍓╀綑鐢甸噺</th>
+                    <th>鎬荤數閲�</th>
+                    <th>鎬婚噷绋嬫暟</th>
+                    <th>浣滀笟鏍囪</th>
+                    <th>褰撳墠搴撲綅</th>
+                    <th>浠ょ墝</th>
+                </tr>
+                </thead>
+                <tbody>
+                </tbody>
+            </table>
+        </div>
+        <!-- 鎵嬪姩鎿嶄綔 -->
+        <div class="shuttle-operation">
+            <!-- 閬僵灞� -->
+            <div class="shuttle-operation-shade">
                     <span class="shuttle-operation-shade-span">
                         WCS 绯荤粺杩愯涓紝璇峰仠姝㈠悗鎿嶄綔
                     </span>
-                </div>
-                <!-- 璁惧浠诲姟閫夋嫨 -->
-                <div class="task-select">
-                    <!-- 閫夋嫨 -->
-                    <div id="shuttle-select" class="operator-item">
-                        <span class="select-title">鍥涘悜绌挎杞﹀彿</span>
-                        <div class="select-container" id="shuttleRadioBoxId">
-<!--                            <label><input type="radio" name="shuttleSelect" value="1" checked>&nbsp;1鍙风┛姊溅</label>-->
-                        </div>
+            </div>
+            <!-- 璁惧浠诲姟閫夋嫨 -->
+            <div class="task-select">
+                <!-- 閫夋嫨 -->
+                <div id="shuttle-select" class="operator-item" style="width: 100%;">
+                    <span class="select-title">鍥涘悜绌挎杞﹀彿</span>
+                    <div class="select-container" id="shuttleRadioBoxId" style="display: flex;flex-wrap: wrap;justify-content: center;align-items: center;">
+                        <!--                            <label><input type="radio" name="shuttleSelect" value="1" checked>&nbsp;1鍙风┛姊溅</label>-->
                     </div>
                 </div>
+            </div>
 
-                <!-- 璁惧浠诲姟鎿嶄綔 -->
-                <div class="task-operator">
+            <!-- 璁惧浠诲姟鎿嶄綔 -->
+            <div class="task-operator">
+                <fieldset style="height: auto;padding-bottom: 20px;">
+                    <legend>鎵嬪姩鎿嶄綔</legend>
                     <div style="display: flex;">
-                        <div class="task-operator" style="height: auto;width: 100%;">
-                            <div class="operator-item" style="height: auto">
+                        <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">
+                                <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>
@@ -112,227 +117,76 @@
                                         <span>鐩爣搴撲綅</span>
                                         <label><input id="distLocNo" type="text" name="distLocNo" /></label>
                                     </div>
+
+                                    <div style="margin-top: 10px;">
+                                        <button class="item" onclick="shuttleOperator(18)">鎼繍璐х墿</button>
+                                        <button class="item" onclick="shuttleOperator(14)">绉诲姩鍒扮洰鏍囧簱浣�</button>
+                                        <button class="item" onclick="shuttleOperator(23)">绉诲姩鍒扮洰鏍囧簱浣�(浠诲姟)</button>
+                                        <!--                                            <button class="item" onclick="shuttleOperator(16)">绉诲姩鍒版彁鍗囨満</button>-->
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+
+                        <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(15)">鍏呯數寮�鍏�</button>
+                                        <button class="item" onclick="shuttleOperator(9)">澶嶄綅</button>
+                                        <button class="item" onclick="shuttleOperator(21)">绠″埗</button>
+                                        <button class="item" onclick="shuttleOperator(22)">鍙栨秷绠″埗</button>
+                                    </div>
                                 </div>
                             </div>
                         </div>
                     </div>
-
-                    <fieldset style="height: auto;padding-bottom: 20px;">
-                        <legend>鎵嬪姩鎿嶄綔</legend>
-                        <div class="button-group">
-                            <button class="item" onclick="shuttleOperator(1)">鍏ュ簱</button>
-                            <button class="item" onclick="shuttleOperator(2)">鍑哄簱</button>
-                            <button class="item" onclick="shuttleOperator(3)">鎵樼洏椤跺崌</button>
-                            <button class="item" onclick="shuttleOperator(4)">鎵樼洏涓嬮檷</button>
-                            <button class="item" onclick="shuttleOperator(5)">宸︾Щ</button>
-                            <button class="item" onclick="shuttleOperator(6)">鍙崇Щ</button>
-                            <button class="item" onclick="shuttleOperator(7)">鍚庣Щ</button>
-                            <button class="item" onclick="shuttleOperator(8)">鍓嶇Щ</button>
-                            <button class="item" onclick="shuttleOperator(9)">澶嶄綅</button>
-                            <button class="item" onclick="shuttleOperator(10)">姝f柟鍚�(宸�)瀵诲簱浣�</button>
-                            <button class="item" onclick="shuttleOperator(11)">璐熸柟鍚�(鍙�)瀵诲簱浣�</button>
-                            <button class="item" onclick="shuttleOperator(12)">姝f柟鍚�(鍓�)瀵诲簱浣�</button>
-                            <button class="item" onclick="shuttleOperator(13)">璐熸柟鍚�(鍚�)瀵诲簱浣�</button>
-                            <button class="item" onclick="shuttleOperator(14)">绉诲姩鍒扮洰鏍囧簱浣�</button>
-                            <button class="item" onclick="shuttleOperator(15)">鍏呯數寮�鍏�</button>
-                        </div>
-                    </fieldset>
-                </div>
-
+                </fieldset>
             </div>
-            <!-- 绌挎杞︽棩蹇楄緭鍑� -->
-            <div class="shuttle-output-board">
-                <textarea id="shuttle-output"></textarea>
-            </div>
+
+        </div>
+        <!-- 绌挎杞︽棩蹇楄緭鍑� -->
+        <div class="shuttle-output-board">
+            <textarea id="shuttle-output"></textarea>
         </div>
     </div>
+</div>
 
-    <div id="shuttle-detl" style="display: none">
-        <div>
-            <div class="form-item">
-                <label class="form-label">鍥涘悜绌挎杞﹀彿:</label>
-                <div class="form-input">
-                    <input id="shuttleNo" name="shuttleNo" class="layui-input" lay-verify="required|number" autocomplete="off" disabled="disabled">
-                </div>
-            </div>
-            <div class="form-item">
-                <label class="form-label">宸ヤ綔鍙�:</label>
-                <div class="form-input">
-                    <input id="workNo" name="workNo" type="number" class="layui-input" lay-verify="number" autocomplete="off">
-                </div>
-            </div>
-            <div class="form-item">
-                <label class="form-label">鎺�:</label>
-                <div class="form-input">
-                    <input id="row" name="row" type="number" class="layui-input" lay-verify="number" autocomplete="off">
-                </div>
-            </div>
-            <div class="form-item">
-                <label class="form-label">鍒�:</label>
-                <div class="form-input">
-                    <input id="bay" name="bay" type="number" class="layui-input" autocomplete="off">
-                </div>
-            </div>
-            <div class="form-item">
-                <label class="form-label">灞�:</label>
-                <div class="form-input">
-                    <input id="lev" name="lev" type="number" class="layui-input" autocomplete="off">
-                </div>
-            </div>
-            <div class="form-item">
-                <label class="form-label">浣滀笟鏍囪:</label>
-                <div class="form-input">
-                    <input id="pakMk" name="pakMk" type="text" class="layui-input" autocomplete="off">
-                </div>
-            </div>
-            <div class="form-item form-button-container">
-                <button class="form-button" id="save">淇濆瓨</button>
-                <button class="form-button" id="cancel" style="background-color: #D0D0D0">鍙栨秷</button>
+<div id="shuttle-detl" style="display: none">
+    <div>
+        <div class="form-item">
+            <label class="form-label">绌挎杞﹀彿:</label>
+            <div class="form-input">
+                <input id="shuttleNo" name="shuttleNo" class="layui-input" lay-verify="required|number" autocomplete="off" disabled="disabled">
             </div>
         </div>
-    </div>
-    <div id="shuttle-detl2" style="display: none">
-        <div style="width: 1400px">
-            <div class="form-item" style="text-align: left">
-                <spen style="margin:  20px 10px 10px 10px; padding: 10px 10px 10px 10px;border: black;border-width: 3px;border-style:dotted;">
-                    寮傚父锛�<spen style="color: #FD482C;">鉁�</spen>
-                </spen>
-                <spen style="margin:  20px 10px 10px 10px; padding: 10px 10px 10px 10px;border: black;border-width: 3px;border-style: double;">
-                    姝e父锛�<spen style="color: #00FF00;">鈥�</spen>
-                </spen>
-            </div>
-            <div style="float:left;margin:  10px 10px 10px 10px; padding: 10px 10px 10px 10px;border: black;border-width: 3px;border-style:dotted;">
-                <div class="form-item" style="text-align: center">
-                    <label>鍥涘悜绌挎杞﹀紓甯�</label>
-                </div>
-                <div class="form-item">
-                    <label class="form-label">鍥涘悜绌挎杞﹀彿:</label>
-                    <div class="form-input">
-                        <input id="shuttleNo1" name="shuttleNo" class="layui-input" lay-verify="required|number" autocomplete="off" disabled="disabled" readonly>
-                    </div>
-                </div>
-
-            </div>
-            <div style="float:left;margin:  10px 10px 10px 10px; padding: 10px 10px 10px 10px;border: black;border-width: 3px;border-style:dotted">
-                <div class="form-item" style="text-align: center">
-                    <label>鍥涘悜绌挎杞︽彁绀轰俊鎭�</label>
-                </div>
-
-            </div>
-            <div style="float:left;margin:  10px 10px 10px 10px; padding: 10px 10px 10px 10px;border: black;border-width: 3px;border-style:dotted">
-                <div class="form-item" style="text-align: center">
-                    <label>浠诲姟淇℃伅</label>
-                </div>
-                <div class="form-item">
-                    <label class="form-label">鍏ュ簱浠诲姟涓�:</label>
-                    <div class="form-input">
-                        <input id="pakInTask" name="pakInTask" class="layui-input" autocomplete="off" readonly>
-                    </div>
-                </div>
-                <div class="form-item">
-                    <label class="form-label">鍑哄簱浠诲姟涓�:</label>
-                    <div class="form-input">
-                        <input id="pakOutTask" name="pakOutTask" class="layui-input" autocomplete="off" readonly>
-                    </div>
-                </div>
-                <div class="form-item">
-                    <label class="form-label">绉诲簱浠诲姟涓�:</label>
-                    <div class="form-input">
-                        <input id="pakMoveTask" name="pakMoveTask" class="layui-input" autocomplete="off" readonly>
-                    </div>
-                </div>
-                <div class="form-item">
-                    <label class="form-label">鍥炲師鐐逛换鍔′腑:</label>
-                    <div class="form-input">
-                        <input id="goHpTask" name="goHpTask" class="layui-input" autocomplete="off" readonly>
-                    </div>
-                </div>
-                <div class="form-item">
-                    <label class="form-label">鍘诲弽鍘熺偣浠诲姟涓�:</label>
-                    <div class="form-input">
-                        <input id="goOHpTask" name="goOHpTask" class="layui-input" autocomplete="off" readonly>
-                    </div>
-                </div>
-                <div class="form-item">
-                    <label class="form-label">鍘诲師鐐归伩璁╀綅:</label>
-                    <div class="form-input">
-                        <input id="goHpAvoid" name="goHpAvoid" class="layui-input" autocomplete="off" readonly>
-                    </div>
-                </div>
-                <div class="form-item">
-                    <label class="form-label">鍘诲弽鍘熺偣閬胯浣�:</label>
-                    <div class="form-input">
-                        <input id="goOHpAvoid" name="goOHpAvoid" class="layui-input" autocomplete="off" readonly>
-                    </div>
-                </div>
-                <div class="form-item">
-                    <label class="form-label">鍏ュ簱鍙栫┖缁撴潫:</label>
-                    <div class="form-input">
-                        <input id="pakInEmpty" name="pakInEmpty" class="layui-input" autocomplete="off" readonly>
-                    </div>
-                </div>
-                <div class="form-item">
-                    <label class="form-label">鍏ュ簱姝e父缁撴潫:</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">鍑哄簱姝e父缁撴潫:</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 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="pakMk" name="pakMk" type="text" class="layui-input" autocomplete="off">
+            </div>
+        </div>
+        <div class="form-item">
+            <label class="form-label">浠ょ墝:</label>
+            <div class="form-input">
+                <input id="token" name="token" 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>
 </body>
 </html>
 <script>
@@ -344,18 +198,46 @@
     var shuttleMsgTableFullRows = 0;
     // 鍒濆鍖�
     var shuttleOutputDom = document.getElementById("shuttle-output");
+
+    var ws = new WebSocket("ws://" + window.location.host + baseUrl + "/shuttle/websocket");
+
+    //褰揥ebSocket鍒涘缓鎴愬姛鏃讹紝瑙﹀彂onopen浜嬩欢
+    ws.onopen = function(){
+        console.log("open");
+    }
+
+    //褰撳鎴风鏀跺埌鏈嶅姟绔彂鏉ョ殑娑堟伅鏃讹紝瑙﹀彂onmessage浜嬩欢
+    ws.onmessage = function(e){
+        const result = JSON.parse(e.data);
+        if (result.url == "/shuttle/table/shuttle/state") {
+            setShuttleStateInfo(JSON.parse(result.data))
+            setShuttleMsgInfo(JSON.parse(result.data))
+        }else if (result.url == "/shuttle/output/shuttle") {
+            setShuttleOutput(JSON.parse(result.data))
+        }
+        // console.log(e.data,result);
+    }
+
+    //褰撳鎴风鏀跺埌鏈嶅姟绔彂閫佺殑鍏抽棴杩炴帴璇锋眰鏃讹紝瑙﹀彂onclose浜嬩欢
+    ws.onclose = function(e){
+        console.log("close");
+    }
+
+    //濡傛灉鍑虹幇杩炴帴銆佸鐞嗐�佹帴鏀躲�佸彂閫佹暟鎹け璐ョ殑鏃跺�欒Е鍙憃nerror浜嬩欢
+    ws.onerror = function(e) {
+        console.log(e);
+    }
+
     $(document).ready(function() {
         initShuttleStateTable();
         getShuttleStateInfo();
         initShuttleMsgTable();
-        getShuttleMsgInfo();
         operatorBlockShow();
         setShuttleRadio();
     });
 
     setInterval(function () {
-        getShuttleStateInfo()
-        getShuttleMsgInfo();
+        getShuttleStateInfo();
     },1000)
     setInterval(function () {
         getShuttleOutput();
@@ -375,116 +257,6 @@
         }
     }
 
-    var layerIdx;
-    $(document).on('click ','.pos-btn', function () {
-        let shuttleNo = Number($(this).parent().attr("data-shuttleNo"));
-        layerIdx = layer.open({
-            type: 1,
-            title: false,
-            shadeClose: true,
-            offset: [$(this).offset().top + 30 + 'px', $(this).offset().left + 'px'],
-            anim: 5,
-            shade: [0],
-            area: ['310px', '370px'],
-            closeBtn: 0,
-            content: $("#shuttle-detl"),
-            success: function(layero, index){
-                http.get(baseUrl+ "/shuttle/detl/"+shuttleNo, null, function (res) {
-                    $('#shuttleNo').val(shuttleNo);
-                    $('#workNo').val(res.data.workNo);
-                    $('#row').val(res.data.row);
-                    $('#bay').val(res.data.bay);
-                    $('#lev').val(res.data.lev);
-                    $('#crnNo').val(res.data.crnNo);
-                    $('#pakMk').val(res.data.pakMk);
-                })
-            },
-            end: function () {
-                $('#shuttleNo').val("");
-                $('#workNo').val("");
-                $('#row').val("");
-                $('#bay').val("");
-                $('#lev').val("");
-                $('#crnNo').val("");
-                $('#pakMk').val("");
-            }
-        })
-    })
-
-    var layerIdx0;
-    $(document).on('click ','.mode-btn', function () {
-        let shuttleNo = Number($(this).parent().attr("data-shuttleNo"));
-        layerIdx0 = layer.open({
-            type: 1,
-            title: false,
-            shadeClose: true,
-            offset: [$(this).offset().top + 30 + 'px', $(this).offset().left + 'px'],
-            anim: 5,
-            shade: [0],
-            area: ['70%', '85%'],
-            closeBtn: 0,
-            content: $("#shuttle-detl2"),
-            success: function(layero, index){
-                console.log(shuttleNo)
-                http.get(baseUrl+ "/shuttle/sensor/detl/"+shuttleNo, null, function (res) {
-                    $('#shuttleNo1').val(res.data.shuttleNo);
-                    // getColor(res.data.liftErr,'#liftErr');
-                    // getColor(res.data.inFetchErr,'#inFetchErr');
-                    // getColor(res.data.outFetchErr,'#outFetchErr');
-                    // getColor(res.data.antiErr,'#antiErr');
-                    // getColor(res.data.liftSwitchErr,'#liftSwitchErr');
-                    // getColor(res.data.trackErr,'#trackErr');
-                    // getColor(res.data.timeoutErr,'#timeoutErr');
-                    // getColor(res.data.connectErr,'#connectErr');
-                    // getColor(res.data.emergencyErr,'#emergencyErr');
-                    // getColor(res.data.taskTypeErr,'#taskTypeErr');
-                    // getColor(res.data.taskNoErr,'#taskNoErr');
-                    // getColor(res.data.newTaskErr,'#newTaskErr');
-                    // getColor(res.data.errTaskErr,'#errTaskErr');
-                    // getColor(res.data.stopErr,'#stopErr');
-                    // getColor(res.data.offlineTaskErr,'#offlineTaskErr');
-                    // getColor(res.data.startTaskErr,'#startTaskErr');
-                    // getColor(res.data.voltageTaskErr,'#voltageTaskErr');
-                    // getColor(res.data.devpErr,'#devpErr');
-                    // getColor(res.data.online,'#online');
-                    // getColor(res.data.notOnTrack,'#notOnTrack');
-                    // getColor(res.data.lowVoltage,'#lowVoltage');
-                    // getColor(res.data.electricityLoss,'#electricityLoss');
-                    // getColor(res.data.forcedTravel,'#forcedTravel');
-                    // getColor(res.data.demoMode,'#demoMode');
-                    // getColor(res.data.brushConnect,'#brushConnect');
-                    // getColor(res.data.taskManualForbid,'#taskManualForbid');
-                    // getColor(res.data.onlineManualForbid,'#onlineManualForbid');
-                    // getColor(res.data.devpEmergency,'#devpEmergency');
-                    // getColor(res.data.taskInterrupt,'#taskInterrupt');
-                    // getColor(res.data.taskClear,'#taskClear');
-                    // getColor(res.data.taskConfirmTimeout,'#taskConfirmTimeout');
-                    // getColor(res.data.taskWithCharge,'#taskWithCharge');
-                    getColor(res.data.pakInTask,'#pakInTask');
-                    getColor(res.data.pakOutTask,'#pakOutTask');
-                    getColor(res.data.pakMoveTask,'#pakMoveTask');
-                    getColor(res.data.goHpTask,'#goHpTask');
-                    getColor(res.data.goOHpTask,'#goOHpTask');
-                    getColor(res.data.goHpAvoid,'#goHpAvoid');
-                    getColor(res.data.goOHpAvoid,'#goOHpAvoid');
-                    getColor(res.data.pakInEmpty,'#pakInEmpty');
-                    getColor(res.data.pakInFinish,'#pakInFinish');
-                    getColor(res.data.pakOutEmpty,'#pakOutEmpty');
-                    getColor(res.data.pakOutFinish,'#pakOutFinish');
-                    getColor(res.data.goHpAvoidFinish,'#goHpAvoidFinish');
-                    getColor(res.data.goOHpAvoidFinish,'#goOHpAvoidFinish');
-                    getColor(res.data.goHpAvoidErr,'#goHpAvoidErr');
-                    getColor(res.data.goOHpAvoidErr,'#goOHpAvoidErr');
-                    // getColor(res.data.autoMode,'#autoMode');
-                    // getColor(res.data.voltageLow,'#voltageLow');
-                })
-            },
-            end: function () {
-                $('#shuttleNo').val("");
-            }
-        })
-    })
-
     function getColor(res,e){
         $(e).val(res?"鉁�":"鈥�");
         if (res){
@@ -494,53 +266,16 @@
         }
     }
 
-    // $(document).on('click ','.mode-btn', function () {
-    //     let shuttleNo = Number($(this).parent().attr("data-shuttleNo"));
-    //     layer.confirm("鏀瑰彉" + shuttleNo + ' 鍙风┛姊溅鍦ㄧ嚎鐘舵�佸悧锛�', function(){
-    //         var index = layer.load(1, {
-    //             shade: [0.1,'#fff']
-    //         });
-    //         $.ajax({
-    //             url: baseUrl+ "/shuttle/mode/switch",
-    //             headers: {'token': localStorage.getItem('token')},
-    //             data: {
-    //                 shuttleNo: Number(shuttleNo),
-    //                 password: 'root'
-    //             },
-    //             method: 'POST',
-    //             success: function (res) {
-    //                 layer.close(index);
-    //                 if (res.code === 200){
-    //                     layer.msg(res.msg, {icon: 1});
-    //                 } else if (res.code === 403){
-    //                     window.location.href = baseUrl+"/login";
-    //                 }  else {
-    //                     layer.msg(res.msg, {icon: 2});
-    //                 }
-    //             }
-    //         });
-    //     });
-    // })
-
-
-
     $(document).on('click ','#save', function () {
         http.post(baseUrl+ "/shuttle/detl/update", {
             shuttleNo: $('#shuttleNo').val(),
             workNo: $('#workNo').val(),
-            row:  $('#row').val(),
-            bay: $('#bay').val(),
-            lev:  $('#lev').val(),
-            crnNo: $('#crnNo').val(),
             pakMk: $('#pakMk').val(),
+            token: $('#token').val(),
         }, function (res) {
             layer.msg("淇敼鎴愬姛", {icon: 1,});
-            layer.close(layerIdx);
+            layer.close(layerDetl);
         })
-    })
-
-    $(document).on('click ','#cancel', function () {
-        layer.close(layerIdx);
     })
 
     function setShuttleRadio() {
@@ -580,101 +315,102 @@
 
     // 鍥涘悜绌挎杞︿俊鎭〃鑾峰彇 ---- 琛ㄤ竴
     function getShuttleStateInfo() {
+        sendWs(JSON.stringify({
+            "url": "/shuttle/table/shuttle/state",
+            "data": {}
+        }))
+    }
+
+    // 鍥涘悜绌挎杞︿俊鎭〃璁剧疆 ---- 琛ㄤ竴
+    function setShuttleStateInfo(res) {
         let tableEl = $('#shuttle-state-table');
-        $.ajax({
-            url: baseUrl+ "/shuttle/table/shuttle/state",
-            headers: {'token': localStorage.getItem('token')},
-            method: 'POST',
-            success: function (res) {
-                if (res.code === 200){
-                    let table = res.data;
-                    if (table.length > shuttleStateTableBlankRows && table.length !== shuttleStateTableFullRows) {
-                        initShuttleStateTable(table.length-shuttleStateTableBlankRows);
-                        shuttleStateTableFullRows = table.length;
-                    }
-                    for (let i=1;i<=table.length;i++){
-                        // $("#mode-"+table[i-1].shuttleNo).html(table[i-1].statusVal===0?'鑱旀満':'鑴辨満');
-                        let tr = tableEl.find("tr").eq(i);
-                        setVal(tr.children("td").eq(0), table[i-1].shuttleNo);
-                        setVal(tr.children("td").eq(1), table[i-1].status);
-                        setVal(tr.children("td").eq(2), table[i-1].busyStatus);
-                        setVal(tr.children("td").eq(3), table[i-1].currentCode);
-                        setVal(tr.children("td").eq(4), table[i-1].batteryPower);
-                        setVal(tr.children("td").eq(5), table[i-1].batteryTemp);
-                        setVal(tr.children("td").eq(6), table[i-1].errorCode);
-                        setVal(tr.children("td").eq(7), table[i-1].plcOutputLift$);//椤跺崌浣�
-                        setVal(tr.children("td").eq(8), table[i-1].plcOutputTransfer$);//鎹㈠悜浣�
-                        setVal(tr.children("td").eq(9), table[i-1].plcOutputBrake$);//鎶遍椄浣�
-                        setVal(tr.children("td").eq(10), table[i-1].plcOutputCharge$);//鍏呯數浣�
-                        setVal(tr.children("td").eq(11), table[i-1].statusErrorCode);
-                        setVal(tr.children("td").eq(12), table[i-1].plcInputStatus);
-                        setVal(tr.children("td").eq(13), table[i-1].currentOrBeforeCode);
-                        setVal(tr.children("td").eq(14), table[i-1].codeOffsetX);
-                        setVal(tr.children("td").eq(15), table[i-1].codeOffsetY);
-                        setVal(tr.children("td").eq(16), table[i-1].currentVoltage);
-                        setVal(tr.children("td").eq(17), table[i-1].currentAnalogValue);
-                    }
-                } else if (res.code === 403){
-                    window.location.href = baseUrl+"/login";
-                }  else {
-                    console.log(res.msg);
-                }
+        if (res.code === 200){
+            let table = res.data;
+            if (table.length > shuttleStateTableBlankRows && table.length !== shuttleStateTableFullRows) {
+                initShuttleStateTable(table.length-shuttleStateTableBlankRows);
+                shuttleStateTableFullRows = table.length;
             }
-        });
+            for (let i=1;i<=table.length;i++){
+                // $("#mode-"+table[i-1].shuttleNo).html(table[i-1].statusVal===0?'鑱旀満':'鑴辨満');
+                let tr = tableEl.find("tr").eq(i);
+                setVal(tr.children("td").eq(0), table[i-1].shuttleNo);
+                setVal(tr.children("td").eq(1), table[i-1].protocolStatus$);
+                setVal(tr.children("td").eq(2), table[i-1].free$);
+                setVal(tr.children("td").eq(3), table[i-1].workingMode$);
+                setVal(tr.children("td").eq(4), table[i-1].point$);
+                setVal(tr.children("td").eq(5), table[i-1].point$$);
+                setVal(tr.children("td").eq(6), table[i-1].powerPercent$);
+                setVal(tr.children("td").eq(7), table[i-1].speed);
+                setVal(tr.children("td").eq(8), table[i-1].loadState$);
+                setVal(tr.children("td").eq(9), table[i-1].liftPosition$);
+                setVal(tr.children("td").eq(10), table[i-1].runDir$);
+                setVal(tr.children("td").eq(11), table[i-1].runDir2$);
+                setVal(tr.children("td").eq(12), table[i-1].chargState$);
+                setVal(tr.children("td").eq(13), table[i-1].errState$);
+                setVal(tr.children("td").eq(14), table[i-1].errCode$);
+                setVal(tr.children("td").eq(15), table[i-1].suspendState$);
+                setVal(tr.children("td").eq(16), table[i-1].lowerPower);
+            }
+        } else if (res.code === 403){
+            window.location.href = baseUrl+"/login";
+        }  else {
+            console.log(res.msg);
+        }
     }
 
     // 鍥涘悜绌挎杞︽暟鎹〃鑾峰彇 ---- 琛ㄤ簩
-    function getShuttleMsgInfo() {
+    function setShuttleMsgInfo(res) {
         let tableEl = $('#shuttle-msg-table');
-        $.ajax({
-            url: baseUrl+ "/shuttle/table/shuttle/msg",
-            headers: {'token': localStorage.getItem('token')},
-            method: 'POST',
-            success: function (res) {
-                if (res.code === 200){
-                    var table = res.data;
-                    if (table.length > shuttleMsgTableBlankRows && table.length !== shuttleMsgTableFullRows) {
-                        initShuttleMsgTable(table.length-shuttleMsgTableBlankRows);
-                        shuttleMsgTableFullRows = table.length;
-                    }
-                    for (var i=1;i<=table.length;i++){
-                        var tr = tableEl.find("tr").eq(i);
-                        setVal(tr.children("td").eq(0), table[i-1].shuttleNo);
-                        setVal(tr.children("td").eq(1), table[i-1].workNo);
-                        setVal(tr.children("td").eq(2), table[i-1].status);
-                        setVal(tr.children("td").eq(3), table[i-1].sourceLocNo);
-                        setVal(tr.children("td").eq(4), table[i-1].distLocNo);
-                        setVal(tr.children("td").eq(5), table[i-1].currentLiftServoSpeed);
-                        setVal(tr.children("td").eq(6), table[i-1].currentMoveServoSpeed);
-                        setVal(tr.children("td").eq(7), table[i-1].currentLiftServoLoad);
-                        setVal(tr.children("td").eq(8), table[i-1].currentMoveServoLoad);
-                        setVal(tr.children("td").eq(9), table[i-1].pakMk);
-                    }
-                } else if (res.code === 403){
-                    window.location.href = baseUrl+"/login";
-                }  else {
-                    console.log(res.msg);
+        if (res.code === 200){
+            var table = res.data;
+            if (table.length > shuttleMsgTableBlankRows && table.length !== shuttleMsgTableFullRows) {
+                initShuttleMsgTable(table.length-shuttleMsgTableBlankRows);
+                shuttleMsgTableFullRows = table.length;
+            }
+            for (var i=1;i<=table.length;i++){
+                var tr = tableEl.find("tr").eq(i);
+                setVal(tr.children("td").eq(0), table[i-1].shuttleNo);
+                setVal(tr.children("td").eq(1), table[i-1].taskNo);
+                setVal(tr.children("td").eq(2), table[i-1].sourceLocNo);
+                setVal(tr.children("td").eq(3), table[i-1].locNo);
+                setVal(tr.children("td").eq(4), table[i-1].maxCellVoltage$);
+                setVal(tr.children("td").eq(5), table[i-1].minCellVoltage$);
+                setVal(tr.children("td").eq(6), table[i-1].voltage$);
+                setVal(tr.children("td").eq(7), table[i-1].chargeCycleTimes);
+                setVal(tr.children("td").eq(8), table[i-1].surplusQuantity);
+                setVal(tr.children("td").eq(9), table[i-1].countQuantity);
+                setVal(tr.children("td").eq(10), table[i-1].statusSum ? table[i - 1].statusSum.mileage : '');
+                setVal(tr.children("td").eq(11), table[i-1].pakMk$);
+                setVal(tr.children("td").eq(12), table[i-1].currentLocNo);
+                setVal(tr.children("td").eq(13), table[i-1].token);
+                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";
+        }  else {
+            console.log(res.msg);
+        }
     }
 
     // 绌挎杞︽棩蹇楄緭鍑� -----------------------------------------------------------------------
     function getShuttleOutput() {
-        $.ajax({
-            url: baseUrl + "/shuttle/output/shuttle",
-            headers: {'token': localStorage.getItem('token')},
-            method: 'POST',
-            success: function (res) {
-                if (res.code === 200) {
-                    shuttleOutput(res.data);
-                } else if (res.code === 403) {
-                    window.location.href = baseUrl + "/login";
-                } else {
-                    console.log(res.msg);
-                }
-            }
-        })
+        sendWs(JSON.stringify({
+            "url": "/shuttle/output/shuttle",
+            "data": {}
+        }))
+    }
+
+    function setShuttleOutput(res) {
+        if (res.code === 200) {
+            shuttleOutput(res.data);
+        } else if (res.code === 403) {
+            window.location.href = baseUrl + "/login";
+        } else {
+            console.log(res.msg);
+        }
     }
 
     // 浠诲姟鎸囦护涓嬪彂
@@ -687,6 +423,32 @@
         }, function (res) {
             layer.msg(res.msg, {icon: 1});
         });
+    }
+
+    // 璺戝簱
+    function moveLoc() {
+        $.ajax({
+            url: baseUrl + "/shuttle/moveLoc",
+            headers: {'token': localStorage.getItem('token')},
+            method: 'POST',
+            data: {
+                shuttleNo: $('input[name="shuttleSelect"]:checked').val(),
+                xStart: $("#xStart").val(),
+                xTarget: $("#xTarget").val(),
+                yStart: $("#yStart").val(),
+                yTarget: $("#yTarget").val(),
+                moveType: $('input[name="moveType"]:checked').val()
+            },
+            success: function (res) {
+                if (res.code === 200) {
+                    layer.msg(res.msg, {icon: 1});
+                } else if (res.code === 403) {
+                    window.location.href = baseUrl + "/login";
+                } else {
+                    console.log(res.msg);
+                }
+            }
+        })
     }
 
 
@@ -773,4 +535,89 @@
         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);
+                }
+            }
+        });
+    }
+
+    // 璇︽儏鎿嶄綔 -------------------------------------------------------------------------
+    var layerDetl;
+    $(document).on('dblclick ','#shuttle-msg-table tr', function () {
+        var shuttleNo = $(this).children("td").eq(0).html();
+        if (shuttleNo !== null && shuttleNo !== "") {
+            layerDetl = layer.open({
+                type: 1,
+                title: false,
+                shadeClose: true,
+                offset: 'rt',
+                anim: 5,
+                shade: [0],
+                area: ['340px', '255px'],
+                closeBtn: 0,
+                content: $("#shuttle-detl"),
+                success: function(layero, index){
+                    $.ajax({
+                        url: baseUrl+ "/shuttle/table/shuttle/state",
+                        headers: {'token': localStorage.getItem('token')},
+                        method: 'POST',
+                        success: function (res) {
+                            if (res.code === 200){
+                                var table = res.data;
+                                for (var i=1;i<=table.length;i++){
+                                    if (shuttleNo == table[i-1].shuttleNo) {
+                                        $('#shuttleNo').val(shuttleNo);
+                                        $('#workNo').val(table[i-1].taskNo);
+                                        $('#pakMk').val(table[i-1].pakMk$);
+                                        $('#token').val(table[i-1].token);
+                                    }
+                                }
+                            } else if (res.code === 403){
+                                window.location.href = baseUrl+"/login";
+                            }  else {
+                                console.log(res.msg);
+                            }
+                        }
+                    });
+                },
+                end: function () {
+                    $('#shuttleNo').val("");
+                    $('#workNo').val("");
+                    $('#pakMk').val("");
+                    $('#token').val("");
+                }
+            })
+        }
+    });
+
+    $(document).on('click ','#cancel', function () {
+        $('#shuttleNo').val("");
+        $('#workNo').val("");
+        $('#pakMk').val("");
+        $('#token').val("");
+        layer.close(layerDetl);
+    })
+
+    function sendWs(message) {
+        if (ws.readyState == WebSocket.OPEN) {
+            ws.send(message)
+        }
+    }
+
 </script>

--
Gitblit v1.9.1