#
Junjie
2023-10-13 03e68b2be24ea024eae645c47da1d4cb1773302a
src/main/webapp/views/console.html
@@ -1,1562 +1,688 @@
<!DOCTYPE html>
<html>
<html lang="en">
   <head>
      <meta charset="utf-8">
      <meta charset="UTF-8">
      <title>WCS控制中心</title>
<!--<link rel="stylesheet" type="text/css" href="../static/css/common.css">-->
      <link rel="stylesheet" href="../static/css/console.css">
<!--      <link rel="stylesheet" type="text/css" href="../static/css/normalize.css">-->
      <script src="../static/js/jquery/jquery-3.3.1.min.js"></script>
      <script src="../static/js/layer/layer.js"></script>
      <link rel="stylesheet" href="../static/css/animate.min.css">
      <link rel="stylesheet" href="../static/vue/element/element.css">
      <link rel="stylesheet" href="../static/css/console_vue.css">
      <link rel="stylesheet" href="../static/css/toggle-switch.css">
      <script type="text/javascript" src="../static/js/jquery/jquery-3.3.1.min.js"></script>
      <script type="text/javascript" src="../static/layui/layui.js"></script>
      <script type="text/javascript" src="../static/js/handlebars/handlebars-v4.5.3.js"></script>
      <script type="text/javascript" src="../static/js/common.js"></script>
      <script type="text/javascript" src="../static/vue/js/vue.min.js"></script>
      <script type="text/javascript" src="../static/vue/element/element.js"></script>
   </head>
   <body>
      <div id="root">
         <div class="head">
            <h1>自动仓库WCS监控图</h1>
            <h6>AUTOMATIC WAREHOUSE WCS MONITORING DIAGRAM</h6>
         </div>
         <!--第1列(宽度 70px) -->
         <div class="site-row site-row-1">
            <div id="site-173" class="site" style="height: 20px;line-height: 20px;margin-bottom: 85px">173</div>
         </div>
         <!--第2列(宽度 70px)-->
         <div class="site-row site-row-2">
            <div id="site-175" class="site" style="height: 20px;line-height: 20px;">175</div>
            <div id="site-174" class="site" style="height: 21px;line-height: 21px;">174</div>
            <div id="site-172" class="site" style="height: 20px;line-height: 20px;margin-bottom: 245px">172</div>
            <div id="site-182" class="site" style="height: 20px;line-height: 20px;">182</div>
         </div>
         <!-- 第3列(宽度 70px) -->
         <div class="site-row site-row-3">
            <div id="site-171" class="site" style="height: 20px;line-height: 20px;margin-bottom: 245px; ">171</div>
            <div id="site-181" class="site" style="height: 20px;line-height: 20px;margin-bottom: 44px; ">181</div>
         </div>
         <!-- 第4列(宽度 70px 140px) -->
         <div class="site-row site-row-4">
            <div id="site-176" class="site" style="height: 20px;line-height: 20px;width:140px;margin-bottom: 21px">176</div>
            <div id="site-170" class="site" style="height: 20px;line-height: 20px;width:70px;margin-bottom: 245px;position: relative;float: right">170</div>
            <div id="site-180" class="site" style="height: 20px;line-height: 20px;width:70px;position: relative;clear:right;float: right">180</div>
         </div>
         <!--&lt;!&ndash; 第5列(宽度 70px) &ndash;&gt;-->
         <div class="site-row site-row-5">
            <div id="site-163" class="site" style="height: 31px;line-height: 31px">163</div>
            <div id="site-162" class="site" style="height: 31px;line-height: 31px">162</div>
            <div id="site-161" class="site" style="height: 71px;line-height: 71px">161</div>
            <div id="site-160" class="site" style="height: 31px;line-height: 31px">160</div>
            <div id="site-159" class="site" style="height: 31px;line-height: 31px">159</div>
            <div id="site-158" class="site" style="height: 70px;line-height: 70px">158</div>
            <div id="site-157" class="site" style="height: 31px;line-height: 31px">157</div>
            <div id="site-156" class="site" style="height: 31px;line-height: 31px">156</div>
            <div id="site-155" class="site" style="height: 70px;line-height: 70px">155</div>
            <div id="site-154" class="site" style="height: 31px;line-height: 31px">154</div>
            <div id="site-153" class="site" style="height: 31px;line-height: 31px">153</div>
            <div id="site-152" class="site" style="height: 70px;line-height: 70px">152</div>
            <div id="site-151" class="site" style="height: 31px;line-height: 31px">151</div>
            <div id="site-150" class="site" style="height: 31px;line-height: 31px">150</div>
         </div>
         <!--&lt;!&ndash; 第6列(宽度 70px) &ndash;&gt;-->
         <div class="site-row site-row-6">
            <div id="site-120" class="site" style="height: 31px;line-height: 31px">120</div>
            <div id="site-121" class="site" style="height: 31px;line-height: 31px">121</div>
            <div id="site-122" class="site" style="height: 71px;line-height: 71px">122</div>
            <div id="site-123" class="site" style="height: 31px;line-height: 31px">123</div>
            <div id="site-124" class="site" style="height: 31px;line-height: 31px">124</div>
            <div id="site-125" class="site" style="height: 70px;line-height: 70px">125</div>
            <div id="site-126" class="site" style="height: 31px;line-height: 31px">126</div>
            <div id="site-127" class="site" style="height: 31px;line-height: 31px">127</div>
            <div id="site-128" class="site" style="height: 70px;line-height: 70px">128</div>
            <div id="site-129" class="site" style="height: 31px;line-height: 31px">129</div>
            <div id="site-130" class="site" style="height: 31px;line-height: 31px">130</div>
            <div id="site-131" class="site" style="height: 70px;line-height: 71px">131</div>
            <div id="site-132" class="site" style="height: 31px;line-height: 31px">132</div>
            <div id="site-133" class="site" style="height: 31px;line-height: 31px">133</div>
         </div>
         <!-- 货架 + 堆垛机 + 入库站点 -->
         <div class="main-part">
            <!-- 第一组 -->
            <div class="lane">
               <!-- 货架 -->
               <div class="stock-group">
                  <div class="site" style="background-color: rgb(108,167,168)   "></div>
                  <button class="item">2</button>
                  <button class="item">4</button>
                  <button class="item">6</button>
                  <button class="item">8</button>
                  <button class="item">10</button>
                  <button class="item">12</button>
                  <button class="item">14</button>
                  <button class="item">16</button>
                  <button class="item">18</button>
                  <button class="item">20</button>
                  <button class="item">22</button>
                  <button class="item">24</button>
                  <button class="item">26</button>
                  <button class="item">28</button>
                  <button class="item">30</button>
                  <button class="item">32</button>
                  <button class="item">34</button>
                  <button class="item">36</button>
                  <button class="item">38</button>
                  <button class="item">40</button>
                  <button class="item">42</button>
                  <button class="item">44</button>
                  <button class="item">46</button>
                  <button class="item">48</button>
                  <button class="item">50</button>
                  <button class="item">52</button>
                  <button class="item">54</button>
                  <button class="item">56</button>
                  <button class="item">58</button>
                  <button class="item">60</button>
                  <button class="item">62</button>
                  <button class="item">64</button>
                  <button class="item">66</button>
                  <button class="item">68</button>
                  <button class="item">70</button>
                  <span class="row-no">1#</span>
      <div id="app">
         <div style="display: flex;justify-content: center;align-items: center;width: 100%;margin-top: 150px;">
            <div id="mapDataId" style="zoom: 0.7;position: relative;">
               <div class="pointContainer" v-for="(row,index) in map" :key="index">
                  <div v-for="(col,idx) in row" :key="idx">
                     <div v-if="col.value == 0">
                        <!-- 子轨道 路径为穿梭车预计路径则显示穿梭车颜色和穿梭车号 -->
                        <div :style="{background: checkAdvancePath(index,idx).length == 0 ? '':shuttleColorList[checkAdvancePath(index,idx)[0]]}" class="item" v-if="col.data.length > 0">{{col.data}}</div>
                        <div :style="{background: checkAdvancePath(index,idx).length == 0 ? '':shuttleColorList[checkAdvancePath(index,idx)[0]]}" class="item" v-else>{{checkAdvancePath(index,idx).length == 0 ? idx:checkAdvancePath(index,idx)}}</div>
                     </div>
                     <div v-else-if="col.value == 3">
                        <!-- 母轨道 路径为穿梭车预计路径则显示穿梭车颜色和穿梭车号 -->
                        <div :style="{background: checkAdvancePath(index,idx).length == 0 ? '#5af':shuttleColorList[checkAdvancePath(index,idx)[0]]}" class="item">{{checkAdvancePath(index,idx).length == 0 ? '&#x21c5;&#x21c4;':checkAdvancePath(index,idx)}}</div>
                     </div>
                     <div v-else-if="col.value == 4">
                        <!-- 站点 -->
                        <div class="site" :id="'site-' + col.data" @click="openSite(col.data)">{{col.data}}</div>
                     </div>
                     <div v-else-if="col.value == 5">
                        <!-- 充电桩 -->
                        <div class="item" style="font-size: 24px">&#9889;</div>
                     </div>
                     <div v-else-if="col.value == -999">
                        <!-- 路径占用区域 -->
                        <div class="item" style="background:#f83333;color: #fff;">{{idx}}</div>
                     </div>
                     <div v-else-if="col.value < 0">
                        <!-- 禁止显示区域 -->
                        <div class="item" style="visibility: hidden">{{idx}}</div>
                     </div>
                     <div v-else>
                        <div class="item" v-if="col.data.length > 0">{{col.data}}</div>
                        <div class="item" v-else>{{idx}}-{{col.value}}</div>
                     </div>
                  </div>
                  <div>
                     <!-- 显示行号 -->
                     <div class="item" style="background: none;color: #000;">#{{index+1}}</div>
                  </div>
               </div>
               <div class="stock-group">
                  <div id="site-100" class="site" style="">100</div>
                  <button class="item">2</button>
                  <button class="item">4</button>
                  <button class="item">6</button>
                  <button class="item">8</button>
                  <button class="item">10</button>
                  <button class="item">12</button>
                  <button class="item">14</button>
                  <button class="item">16</button>
                  <button class="item">18</button>
                  <button class="item">20</button>
                  <button class="item">22</button>
                  <button class="item">24</button>
                  <button class="item">26</button>
                  <button class="item">28</button>
                  <button class="item">30</button>
                  <button class="item">32</button>
                  <button class="item">34</button>
                  <button class="item">36</button>
                  <button class="item">38</button>
                  <button class="item">40</button>
                  <button class="item">42</button>
                  <button class="item">44</button>
                  <button class="item">46</button>
                  <button class="item">48</button>
                  <button class="item">50</button>
                  <button class="item">52</button>
                  <button class="item">54</button>
                  <button class="item">56</button>
                  <button class="item">58</button>
                  <button class="item">60</button>
                  <button class="item">62</button>
                  <button class="item">64</button>
                  <button class="item">66</button>
                  <button class="item">68</button>
                  <button class="item">70</button>
                  <span class="row-no">2#</span>
               <!--输出小车-->
               <div v-for="(car,idx) in currentLevShuttleList"
                   :style="{
                   left: getCarPosition(car.wcsPoint.x,car.wcsPoint.y)[1]
                   ,top: getCarPosition(car.wcsPoint.x,car.wcsPoint.y)[0]
                   ,color: shuttleColorList[car.shuttleNo]
                   }"
                   class="sxcar" :id="'sxcar-' + car.shuttleNo">
                  {{car.shuttleNo}}
               </div>
               <!-- 堆垛机 -->
               <div class="crn">
                  <hr class="pathway">
                  <div id="crn-1" class="machine"></div>
               </div>
               <!-- 货架 -->
               <div class="stock-group">
                  <div id="site-101" class="site" style="">101</div>
                  <button class="item">2</button>
                  <button class="item">4</button>
                  <button class="item">6</button>
                  <button class="item">8</button>
                  <button class="item">10</button>
                  <button class="item">12</button>
                  <button class="item">14</button>
                  <button class="item">16</button>
                  <button class="item">18</button>
                  <button class="item">20</button>
                  <button class="item">22</button>
                  <button class="item">24</button>
                  <button class="item">26</button>
                  <button class="item">28</button>
                  <button class="item">30</button>
                  <button class="item">32</button>
                  <button class="item">34</button>
                  <button class="item">36</button>
                  <button class="item">38</button>
                  <button class="item">40</button>
                  <button class="item">42</button>
                  <button class="item">44</button>
                  <button class="item">46</button>
                  <button class="item">48</button>
                  <button class="item">50</button>
                  <button class="item">52</button>
                  <button class="item">54</button>
                  <button class="item">56</button>
                  <button class="item">58</button>
                  <button class="item">60</button>
                  <button class="item">62</button>
                  <button class="item">64</button>
                  <button class="item">66</button>
                  <button class="item">68</button>
                  <button class="item">70</button>
                  <span class="row-no">3#</span>
               </div>
               <div class="stock-group">
                  <div class="site" style="background-color: rgb(108,167,168)"></div>
                  <button class="item">2</button>
                  <button class="item">4</button>
                  <button class="item">6</button>
                  <button class="item">8</button>
                  <button class="item">10</button>
                  <button class="item">12</button>
                  <button class="item">14</button>
                  <button class="item">16</button>
                  <button class="item">18</button>
                  <button class="item">20</button>
                  <button class="item">22</button>
                  <button class="item">24</button>
                  <button class="item">26</button>
                  <button class="item">28</button>
                  <button class="item">30</button>
                  <button class="item">32</button>
                  <button class="item">34</button>
                  <button class="item">36</button>
                  <button class="item">38</button>
                  <button class="item">40</button>
                  <button class="item">42</button>
                  <button class="item">44</button>
                  <button class="item">46</button>
                  <button class="item">48</button>
                  <button class="item">50</button>
                  <button class="item">52</button>
                  <button class="item">54</button>
                  <button class="item">56</button>
                  <button class="item">58</button>
                  <button class="item">60</button>
                  <button class="item">62</button>
                  <button class="item">64</button>
                  <button class="item">66</button>
                  <button class="item">68</button>
                  <button class="item">70</button>
                  <span class="row-no">4#</span>
               </div>
            </div>
            <!-- 第二组 -->
            <div class="lane">
               <span class="row-no"></span>
               <!-- 货架 -->
               <div class="stock-group">
                  <div class="site" style="background-color: rgb(108,167,168)"></div>
                  <button class="item">2</button>
                  <button class="item">4</button>
                  <button class="item">6</button>
                  <button class="item">8</button>
                  <button class="item">10</button>
                  <button class="item">12</button>
                  <button class="item">14</button>
                  <button class="item">16</button>
                  <button class="item">18</button>
                  <button class="item">20</button>
                  <button class="item">22</button>
                  <button class="item">24</button>
                  <button class="item">26</button>
                  <button class="item">28</button>
                  <button class="item">30</button>
                  <button class="item">32</button>
                  <button class="item">34</button>
                  <button class="item">36</button>
                  <button class="item">38</button>
                  <button class="item">40</button>
                  <button class="item">42</button>
                  <button class="item">44</button>
                  <button class="item">46</button>
                  <button class="item">48</button>
                  <button class="item">50</button>
                  <button class="item">52</button>
                  <button class="item">54</button>
                  <button class="item">56</button>
                  <button class="item">58</button>
                  <button class="item">60</button>
                  <button class="item">62</button>
                  <button class="item">64</button>
                  <button class="item">66</button>
                  <button class="item">68</button>
                  <button class="item">70</button>
                  <span class="row-no">5#</span>
            <!--输出楼层-->
            <div style="height: 100%;">
               <div class="floorBtnBox" v-for="(lev,idx) in floorList">
                  <el-button :style="{background:currentLev === lev ? '#7DCDFF':''}" @click="changFloor(lev)">{{lev}}F</el-button>
               </div>
               <div class="stock-group">
                  <div id="site-102" class="site" style="">102</div>
                  <button class="item">2</button>
                  <button class="item">4</button>
                  <button class="item">6</button>
                  <button class="item">8</button>
                  <button class="item">10</button>
                  <button class="item">12</button>
                  <button class="item">14</button>
                  <button class="item">16</button>
                  <button class="item">18</button>
                  <button class="item">20</button>
                  <button class="item">22</button>
                  <button class="item">24</button>
                  <button class="item">26</button>
                  <button class="item">28</button>
                  <button class="item">30</button>
                  <button class="item">32</button>
                  <button class="item">34</button>
                  <button class="item">36</button>
                  <button class="item">38</button>
                  <button class="item">40</button>
                  <button class="item">42</button>
                  <button class="item">44</button>
                  <button class="item">46</button>
                  <button class="item">48</button>
                  <button class="item">50</button>
                  <button class="item">52</button>
                  <button class="item">54</button>
                  <button class="item">56</button>
                  <button class="item">58</button>
                  <button class="item">60</button>
                  <button class="item">62</button>
                  <button class="item">64</button>
                  <button class="item">66</button>
                  <button class="item">68</button>
                  <button class="item">70</button>
                  <span class="row-no">6#</span>
               </div>
               <!-- 堆垛机 -->
               <div class="crn">
                  <hr class="pathway">
                  <div id="crn-2" class="machine"></div>
               </div>
               <!-- 货架 -->
               <div class="stock-group">
                  <div id="site-103" class="site" style="">103</div>
                  <button class="item">2</button>
                  <button class="item">4</button>
                  <button class="item">6</button>
                  <button class="item">8</button>
                  <button class="item">10</button>
                  <button class="item">12</button>
                  <button class="item">14</button>
                  <button class="item">16</button>
                  <button class="item">18</button>
                  <button class="item">20</button>
                  <button class="item">22</button>
                  <button class="item">24</button>
                  <button class="item">26</button>
                  <button class="item">28</button>
                  <button class="item">30</button>
                  <button class="item">32</button>
                  <button class="item">34</button>
                  <button class="item">36</button>
                  <button class="item">38</button>
                  <button class="item">40</button>
                  <button class="item">42</button>
                  <button class="item">44</button>
                  <button class="item">46</button>
                  <button class="item">48</button>
                  <button class="item">50</button>
                  <button class="item">52</button>
                  <button class="item">54</button>
                  <button class="item">56</button>
                  <button class="item">58</button>
                  <button class="item">60</button>
                  <button class="item">62</button>
                  <button class="item">64</button>
                  <button class="item">66</button>
                  <button class="item">68</button>
                  <button class="item">70</button>
                  <span class="row-no">7#</span>
               </div>
               <div class="stock-group">
                  <div class="site" style="background-color: rgb(108,167,168)"></div>
                  <button class="item">2</button>
                  <button class="item">4</button>
                  <button class="item">6</button>
                  <button class="item">8</button>
                  <button class="item">10</button>
                  <button class="item">12</button>
                  <button class="item">14</button>
                  <button class="item">16</button>
                  <button class="item">18</button>
                  <button class="item">20</button>
                  <button class="item">22</button>
                  <button class="item">24</button>
                  <button class="item">26</button>
                  <button class="item">28</button>
                  <button class="item">30</button>
                  <button class="item">32</button>
                  <button class="item">34</button>
                  <button class="item">36</button>
                  <button class="item">38</button>
                  <button class="item">40</button>
                  <button class="item">42</button>
                  <button class="item">44</button>
                  <button class="item">46</button>
                  <button class="item">48</button>
                  <button class="item">50</button>
                  <button class="item">52</button>
                  <button class="item">54</button>
                  <button class="item">56</button>
                  <button class="item">58</button>
                  <button class="item">60</button>
                  <button class="item">62</button>
                  <button class="item">64</button>
                  <button class="item">66</button>
                  <button class="item">68</button>
                  <button class="item">70</button>
                  <span class="row-no">8#</span>
               </div>
            </div>
            <!--第三组-->
            <div class="lane">
               <span class="row-no"></span>
               <!-- 货架 -->
               <div class="stock-group">
                  <div class="site" style="background-color: rgb(108,167,168)"></div>
                  <button class="item">2</button>
                  <button class="item">4</button>
                  <button class="item">6</button>
                  <button class="item">8</button>
                  <button class="item">10</button>
                  <button class="item">12</button>
                  <button class="item">14</button>
                  <button class="item">16</button>
                  <button class="item">18</button>
                  <button class="item">20</button>
                  <button class="item">22</button>
                  <button class="item">24</button>
                  <button class="item">26</button>
                  <button class="item">28</button>
                  <button class="item">30</button>
                  <button class="item">32</button>
                  <button class="item">34</button>
                  <button class="item">36</button>
                  <button class="item">38</button>
                  <button class="item">40</button>
                  <button class="item">42</button>
                  <button class="item">44</button>
                  <button class="item">46</button>
                  <button class="item">48</button>
                  <button class="item">50</button>
                  <button class="item">52</button>
                  <button class="item">54</button>
                  <button class="item">56</button>
                  <button class="item">58</button>
                  <button class="item">60</button>
                  <button class="item">62</button>
                  <button class="item">64</button>
                  <button class="item">66</button>
                  <button class="item">68</button>
                  <button class="item">70</button>
                  <span class="row-no">9#</span>
               </div>
               <div class="stock-group">
                  <div id="site-104" class="site" style="">104</div>
                  <button class="item">2</button>
                  <button class="item">4</button>
                  <button class="item">6</button>
                  <button class="item">8</button>
                  <button class="item">10</button>
                  <button class="item">12</button>
                  <button class="item">14</button>
                  <button class="item">16</button>
                  <button class="item">18</button>
                  <button class="item">20</button>
                  <button class="item">22</button>
                  <button class="item">24</button>
                  <button class="item">26</button>
                  <button class="item">28</button>
                  <button class="item">30</button>
                  <button class="item">32</button>
                  <button class="item">34</button>
                  <button class="item">36</button>
                  <button class="item">38</button>
                  <button class="item">40</button>
                  <button class="item">42</button>
                  <button class="item">44</button>
                  <button class="item">46</button>
                  <button class="item">48</button>
                  <button class="item">50</button>
                  <button class="item">52</button>
                  <button class="item">54</button>
                  <button class="item">56</button>
                  <button class="item">58</button>
                  <button class="item">60</button>
                  <button class="item">62</button>
                  <button class="item">64</button>
                  <button class="item">66</button>
                  <button class="item">68</button>
                  <button class="item">70</button>
                  <span class="row-no">10#</span>
               </div>
               <!-- 堆垛机 -->
               <div class="crn">
                  <hr class="pathway">
                  <div id="crn-3" class="machine"></div>
               </div>
               <!-- 货架 -->
               <div class="stock-group">
                  <div id="site-105" class="site" style="">105</div>
                  <button class="item">2</button>
                  <button class="item">4</button>
                  <button class="item">6</button>
                  <button class="item">8</button>
                  <button class="item">10</button>
                  <button class="item">12</button>
                  <button class="item">14</button>
                  <button class="item">16</button>
                  <button class="item">18</button>
                  <button class="item">20</button>
                  <button class="item">22</button>
                  <button class="item">24</button>
                  <button class="item">26</button>
                  <button class="item">28</button>
                  <button class="item">30</button>
                  <button class="item">32</button>
                  <button class="item">34</button>
                  <button class="item">36</button>
                  <button class="item">38</button>
                  <button class="item">40</button>
                  <button class="item">42</button>
                  <button class="item">44</button>
                  <button class="item">46</button>
                  <button class="item">48</button>
                  <button class="item">50</button>
                  <button class="item">52</button>
                  <button class="item">54</button>
                  <button class="item">56</button>
                  <button class="item">58</button>
                  <button class="item">60</button>
                  <button class="item">62</button>
                  <button class="item">64</button>
                  <button class="item">66</button>
                  <button class="item">68</button>
                  <button class="item">70</button>
                  <span class="row-no">11#</span>
               </div>
               <div class="stock-group">
                  <div class="site" style="background-color:rgb(108,167,168)"></div>
                  <button class="item">2</button>
                  <button class="item">4</button>
                  <button class="item">6</button>
                  <button class="item">8</button>
                  <button class="item">10</button>
                  <button class="item">12</button>
                  <button class="item">14</button>
                  <button class="item">16</button>
                  <button class="item">18</button>
                  <button class="item">20</button>
                  <button class="item">22</button>
                  <button class="item">24</button>
                  <button class="item">26</button>
                  <button class="item">28</button>
                  <button class="item">30</button>
                  <button class="item">32</button>
                  <button class="item">34</button>
                  <button class="item">36</button>
                  <button class="item">38</button>
                  <button class="item">40</button>
                  <button class="item">42</button>
                  <button class="item">44</button>
                  <button class="item">46</button>
                  <button class="item">48</button>
                  <button class="item">50</button>
                  <button class="item">52</button>
                  <button class="item">54</button>
                  <button class="item">56</button>
                  <button class="item">58</button>
                  <button class="item">60</button>
                  <button class="item">62</button>
                  <button class="item">64</button>
                  <button class="item">66</button>
                  <button class="item">68</button>
                  <button class="item">70</button>
                  <span class="row-no">12#</span>
               </div>
            </div>
            <!--第四组-->
            <div class="lane">
               <span class="row-no"></span>
               <!-- 货架 -->
               <div class="stock-group">
                  <div class="site" style="background-color:rgb(108,167,168)"></div>
                  <button class="item">2</button>
                  <button class="item">4</button>
                  <button class="item">6</button>
                  <button class="item">8</button>
                  <button class="item">10</button>
                  <button class="item">12</button>
                  <button class="item">14</button>
                  <button class="item">16</button>
                  <button class="item">18</button>
                  <button class="item">20</button>
                  <button class="item">22</button>
                  <button class="item">24</button>
                  <button class="item">26</button>
                  <button class="item">28</button>
                  <button class="item">30</button>
                  <button class="item">32</button>
                  <button class="item">34</button>
                  <button class="item">36</button>
                  <button class="item">38</button>
                  <button class="item">40</button>
                  <button class="item">42</button>
                  <button class="item">44</button>
                  <button class="item">46</button>
                  <button class="item">48</button>
                  <button class="item">50</button>
                  <button class="item">52</button>
                  <button class="item">54</button>
                  <button class="item">56</button>
                  <button class="item">58</button>
                  <button class="item">60</button>
                  <button class="item">62</button>
                  <button class="item">64</button>
                  <button class="item">66</button>
                  <button class="item">68</button>
                  <button class="item">70</button>
                  <span class="row-no">13#</span>
               </div>
               <div class="stock-group">
                  <div id="site-106" class="site" style="">106</div>
                  <button class="item">2</button>
                  <button class="item">4</button>
                  <button class="item">6</button>
                  <button class="item">8</button>
                  <button class="item">10</button>
                  <button class="item">12</button>
                  <button class="item">14</button>
                  <button class="item">16</button>
                  <button class="item">18</button>
                  <button class="item">20</button>
                  <button class="item">22</button>
                  <button class="item">24</button>
                  <button class="item">26</button>
                  <button class="item">28</button>
                  <button class="item">30</button>
                  <button class="item">32</button>
                  <button class="item">34</button>
                  <button class="item">36</button>
                  <button class="item">38</button>
                  <button class="item">40</button>
                  <button class="item">42</button>
                  <button class="item">44</button>
                  <button class="item">46</button>
                  <button class="item">48</button>
                  <button class="item">50</button>
                  <button class="item">52</button>
                  <button class="item">54</button>
                  <button class="item">56</button>
                  <button class="item">58</button>
                  <button class="item">60</button>
                  <button class="item">62</button>
                  <button class="item">64</button>
                  <button class="item">66</button>
                  <button class="item">68</button>
                  <button class="item">70</button>
                  <span class="row-no">14#</span>
               </div>
               <!-- 堆垛机 -->
               <div class="crn">
                  <hr class="pathway">
                  <div id="crn-4" class="machine"></div>
               </div>
               <!-- 货架 -->
               <div class="stock-group">
                  <div id="site-107" class="site" style="">107</div>
                  <button class="item">2</button>
                  <button class="item">4</button>
                  <button class="item">6</button>
                  <button class="item">8</button>
                  <button class="item">10</button>
                  <button class="item">12</button>
                  <button class="item">14</button>
                  <button class="item">16</button>
                  <button class="item">18</button>
                  <button class="item">20</button>
                  <button class="item">22</button>
                  <button class="item">24</button>
                  <button class="item">26</button>
                  <button class="item">28</button>
                  <button class="item">30</button>
                  <button class="item">32</button>
                  <button class="item">34</button>
                  <button class="item">36</button>
                  <button class="item">38</button>
                  <button class="item">40</button>
                  <button class="item">42</button>
                  <button class="item">44</button>
                  <button class="item">46</button>
                  <button class="item">48</button>
                  <button class="item">50</button>
                  <button class="item">52</button>
                  <button class="item">54</button>
                  <button class="item">56</button>
                  <button class="item">58</button>
                  <button class="item">60</button>
                  <button class="item">62</button>
                  <button class="item">64</button>
                  <button class="item">66</button>
                  <button class="item">68</button>
                  <button class="item">70</button>
                  <span class="row-no">15#</span>
               </div>
               <div class="stock-group">
                  <div class="site" style="background-color:rgb(108,167,168)"></div>
                  <button class="item">2</button>
                  <button class="item">4</button>
                  <button class="item">6</button>
                  <button class="item">8</button>
                  <button class="item">10</button>
                  <button class="item">12</button>
                  <button class="item">14</button>
                  <button class="item">16</button>
                  <button class="item">18</button>
                  <button class="item">20</button>
                  <button class="item">22</button>
                  <button class="item">24</button>
                  <button class="item">26</button>
                  <button class="item">28</button>
                  <button class="item">30</button>
                  <button class="item">32</button>
                  <button class="item">34</button>
                  <button class="item">36</button>
                  <button class="item">38</button>
                  <button class="item">40</button>
                  <button class="item">42</button>
                  <button class="item">44</button>
                  <button class="item">46</button>
                  <button class="item">48</button>
                  <button class="item">50</button>
                  <button class="item">52</button>
                  <button class="item">54</button>
                  <button class="item">56</button>
                  <button class="item">58</button>
                  <button class="item">60</button>
                  <button class="item">62</button>
                  <button class="item">64</button>
                  <button class="item">66</button>
                  <button class="item">68</button>
                  <button class="item">70</button>
                  <span class="row-no">16#</span>
               </div>
            </div>
            <!--第五组-->
            <div class="lane">
               <span class="row-no"></span>
               <!-- 货架 -->
               <div class="stock-group">
                  <div class="site" style="background-color:rgb(108,167,168)"></div>
                  <button class="item">2</button>
                  <button class="item">4</button>
                  <button class="item">6</button>
                  <button class="item">8</button>
                  <button class="item">10</button>
                  <button class="item">12</button>
                  <button class="item">14</button>
                  <button class="item">16</button>
                  <button class="item">18</button>
                  <button class="item">20</button>
                  <button class="item">22</button>
                  <button class="item">24</button>
                  <button class="item">26</button>
                  <button class="item">28</button>
                  <button class="item">30</button>
                  <button class="item">32</button>
                  <button class="item">34</button>
                  <button class="item">36</button>
                  <button class="item">38</button>
                  <button class="item">40</button>
                  <button class="item">42</button>
                  <button class="item">44</button>
                  <button class="item">46</button>
                  <button class="item">48</button>
                  <button class="item">50</button>
                  <button class="item">52</button>
                  <button class="item">54</button>
                  <button class="item">56</button>
                  <button class="item">58</button>
                  <button class="item">60</button>
                  <button class="item">62</button>
                  <button class="item">64</button>
                  <button class="item">66</button>
                  <button class="item">68</button>
                  <button class="item">70</button>
                  <span class="row-no">17#</span>
               </div>
               <div class="stock-group">
                  <div id="site-108" class="site" style="">108</div>
                  <button class="item">2</button>
                  <button class="item">4</button>
                  <button class="item">6</button>
                  <button class="item">8</button>
                  <button class="item">10</button>
                  <button class="item">12</button>
                  <button class="item">14</button>
                  <button class="item">16</button>
                  <button class="item">18</button>
                  <button class="item">20</button>
                  <button class="item">22</button>
                  <button class="item">24</button>
                  <button class="item">26</button>
                  <button class="item">28</button>
                  <button class="item">30</button>
                  <button class="item">32</button>
                  <button class="item">34</button>
                  <button class="item">36</button>
                  <button class="item">38</button>
                  <button class="item">40</button>
                  <button class="item">42</button>
                  <button class="item">44</button>
                  <button class="item">46</button>
                  <button class="item">48</button>
                  <button class="item">50</button>
                  <button class="item">52</button>
                  <button class="item">54</button>
                  <button class="item">56</button>
                  <button class="item">58</button>
                  <button class="item">60</button>
                  <button class="item">62</button>
                  <button class="item">64</button>
                  <button class="item">66</button>
                  <button class="item">68</button>
                  <button class="item">70</button>
                  <span class="row-no">18#</span>
               </div>
               <!-- 堆垛机 -->
                 <div class="crn">
                     <hr class="pathway">
                     <div id="crn-5" class="machine"></div>
                 </div>
                 <!-- 货架 -->
                 <div class="stock-group">
                  <div id="site-109" class="site" style="">109</div>
                  <button class="item">2</button>
                  <button class="item">4</button>
                  <button class="item">6</button>
                  <button class="item">8</button>
                  <button class="item">10</button>
                  <button class="item">12</button>
                  <button class="item">14</button>
                  <button class="item">16</button>
                  <button class="item">18</button>
                  <button class="item">20</button>
                  <button class="item">22</button>
                  <button class="item">24</button>
                  <button class="item">26</button>
                  <button class="item">28</button>
                  <button class="item">30</button>
                  <button class="item">32</button>
                  <button class="item">34</button>
                  <button class="item">36</button>
                  <button class="item">38</button>
                  <button class="item">40</button>
                  <button class="item">42</button>
                  <button class="item">44</button>
                  <button class="item">46</button>
                  <button class="item">48</button>
                  <button class="item">50</button>
                  <button class="item">52</button>
                  <button class="item">54</button>
                  <button class="item">56</button>
                  <button class="item">58</button>
                  <button class="item">60</button>
                  <button class="item">62</button>
                  <button class="item">64</button>
                  <button class="item">66</button>
                  <button class="item">68</button>
                  <button class="item">70</button>
                  <span class="row-no">19#</span>
               </div>
               <div class="stock-group">
                  <div class="site" style="background-color:rgb(108,167,168)"></div>
                  <button class="item">2</button>
                  <button class="item">4</button>
                  <button class="item">6</button>
                  <button class="item">8</button>
                  <button class="item">10</button>
                  <button class="item">12</button>
                  <button class="item">14</button>
                  <button class="item">16</button>
                  <button class="item">18</button>
                  <button class="item">20</button>
                  <button class="item">22</button>
                  <button class="item">24</button>
                  <button class="item">26</button>
                  <button class="item">28</button>
                  <button class="item">30</button>
                  <button class="item">32</button>
                  <button class="item">34</button>
                  <button class="item">36</button>
                  <button class="item">38</button>
                  <button class="item">40</button>
                  <button class="item">42</button>
                  <button class="item">44</button>
                  <button class="item">46</button>
                  <button class="item">48</button>
                  <button class="item">50</button>
                  <button class="item">52</button>
                  <button class="item">54</button>
                  <button class="item">56</button>
                  <button class="item">58</button>
                  <button class="item">60</button>
                  <button class="item">62</button>
                  <button class="item">64</button>
                  <button class="item">66</button>
                  <button class="item">68</button>
                  <button class="item">70</button>
                  <span class="row-no">20#</span>
               <div>
                  <el-button @click="testMove()">测试移动车</el-button>
                  <el-button @click="resetMap()">重置地图</el-button>
               </div>
            </div>
         </div>
         <!--底部-->
         <div id="body">
         <div class="footer">
            <!-- 总开关 -->
            <div class="system-state">
            <div class="line-status">
               <div class="body-head">总开关</div>
               <div class="switch">
                  <div id="system-icon" class="system-icon-open" onclick="systemSwitch()"></div>
               <div class="switch" @click="systemSwitch">
                  <label id="system-toggle" class="toggle-switch" style="margin-left: 20px;">
                     <input id="system-toggle-checked" disabled type="checkbox">
                     <div class="button">
                        <div class="light"></div>
                        <div class="dots"></div>
                        <div class="characters"></div>
                        <div class="shine"></div>
                        <div class="shadow"></div>
                     </div>
                  </label>
                  <div class="switch_r">
                     <p>系统状态</p>
                     <p id="system-run-desc">系统运行中</p>
                  </div>
               </div>
            </div>
            <!-- 堆垛机状态 -->
            <div class="machine-status">
               <div class="body-head">堆垛机状态</div>
               <div class="state">
                  <span>堆垛机 1</span>
                  <span class="state-ss machine-put-flag   ">入库</span>
               </div>
               <div class="state">
                  <span>堆垛机 2</span>
                  <span class="state-ss machine-auto-flag   ">自动</span>
               </div>
               <div class="button"><span>所有状态</span></div>
                  <div class="button item-group">
                     <span class="machine-put-flag">入库</span>
                     <span class="machine-take-flag">出库</span>
                     <span class="machine-stock-move-flag">库到库</span>
                     <span class="machine-site-move-flag">站到站</span>
                     <span class="machine-p-move-flag">PToP</span>
                     <span class="machine-error-flag">异常</span>
                     <span class="machine-auto-flag">自动</span>
                     <span class="machine-unauto-flag">非自动/手动</span>
            <!-- 四向穿梭车状态 -->
            <div class="line-status">
               <div class="body-head">穿梭车状态</div>
               <div class="shuttle-status-box">
                  <div v-for="(item,idx) in shuttleList" class="state">
                     <span :style="{color: shuttleColorList[item.shuttleNo]}">四向穿梭车 {{item.shuttleNo}}</span>
                     <span v-if="item.protocolStatus == 1"
                        class="state-ss shuttle-idle">{{item.protocolStatus$}}</span>
                     <span v-else-if="item.protocolStatus == 2"
                        class="state-ss shuttle-working">{{item.protocolStatus$}}</span>
                     <span v-else-if="item.protocolStatus == 3"
                        class="state-ss shuttle-waiting">{{item.protocolStatus$}}</span>
                     <span v-else-if="item.protocolStatus == 4"
                        class="state-ss shuttle-charging">{{item.protocolStatus$}}</span>
                     <span v-else-if="item.protocolStatus == 5"
                        class="state-ss shuttle-charging-waiting">{{item.protocolStatus$}}</span>
                     <span v-else-if="item.protocolStatus == 6"
                        class="state-ss shuttle-fixing">{{item.protocolStatus$}}</span>
                     <span v-else-if="item.protocolStatus == 7"
                        class="state-ss shuttle-offline">{{item.protocolStatus$}}</span>
                     <span v-else class="state-ss shuttle-offline">{{item.protocolStatus$}}</span>
                  </div>
               </div>
               <div class="allStatus"><span>所有状态</span></div>
               <div class="allStatus item-group">
                  <span class="shuttle-idle">空闲</span>
                  <span class="shuttle-working">作业中</span>
                  <span class="shuttle-waiting">等待确认</span>
                  <span class="shuttle-charging">充电中</span>
                  <span class="shuttle-charging-waiting">充电任务等待确认</span>
                  <span class="shuttle-fixing">故障修复中</span>
                  <span class="shuttle-offline">离线</span>
               </div>
            </div>
            <!-- 提升机状态 -->
            <div class="line-status">
               <div class="body-head">提升机状态</div>
               <div class="lift-status-box">
                  <div v-for="(item,idx) in liftList" class="state states">
                     <span>提升机 {{item.liftNo}}</span>
                     <span v-if="item.protocolStatus == 1"
                        class="state-ss lift-idle">{{item.protocolStatus$}}</span>
                     <span v-else-if="item.protocolStatus == 2"
                        class="state-ss lift-working">{{item.protocolStatus$}}</span>
                     <span v-else-if="item.protocolStatus == 3"
                        class="state-ss lift-waiting">{{item.protocolStatus$}}</span>
                     <span v-else-if="item.protocolStatus == 4"
                        class="state-ss lift-offline">{{item.protocolStatus$}}</span>
                     <span v-else class="state-ss lift-offline">{{item.protocolStatus$}}</span>
                  </div>
               </div>
               <div class="allStatus"><span>所有状态</span></div>
               <div class="allStatus item-group">
                  <span class="lift-idle">空闲</span>
                  <span class="lift-working">作业中</span>
                  <span class="lift-waiting">等待确认</span>
                  <span class="lift-offline">离线</span>
               </div>
            </div>
            <!-- 输送线状态 -->
            <div class="line-status">
               <div class="body-head">输送线状态</div>
               <div class="state states">
                  <span>运输线总数</span>
                  <span class="line-ss">45</span>
                  <span class="line-ss">9</span>
               </div>
               <div class="button"><span>所有状态</span></div>
                  <div class="button item-group">
                     <span class="site-auto-run-id">自动+有物+ID</span>
                     <span class="site-auto-run">自动+有物</span>
                     <span class="site-auto-id">自动+ID</span>
                     <span class="site-auto">自动</span>
                     <span class="site-unauto">非自动/手动</span>
                  </div>
               <div class="allStatus"><span>所有状态</span></div>
               <div class="allStatus item-group">
                  <span class="site-auto-run-id">自动+有物+ID</span>
                  <span class="site-auto-run">自动+有物</span>
                  <span class="site-auto-id">自动+ID</span>
                  <span class="site-auto">自动</span>
                  <span class="site-unauto">非自动/手动</span>
               </div>
            </div>
            <!-- 条码表格 -->
            <div class="bar-code">
               <div class="body-head" id="code">条码扫描器</div>
               <div class="tablebox">
                  <div class="table-head">
                     <li><span>条码名称</span><span class="right">扫码时间</span></li>
                  </div>
                  <div id="barcode1" class="table-body">
                     <li v-for="(item,index) in codeList1" :key="index"><span>{{item.barcode}}</span><span class="right">{{item.time}}</span></li>
                  </div>
               </div>
               <div class="tablebox">
                  <div class="table-head">
                     <li><span>条码名称</span><span class="right">扫码时间</span></li>
                  </div>
                  <div id="barcode2" class="table-body">
                     <li v-for="(item,index) in codeList2" :key="index"><span>{{item.barcode}}</span><span class="right">{{item.time}}</span></li>
                  </div>
               </div>
            </div>
         </div>
         <!-- 堆垛机弹窗 -->
         <div id="crnWindow" style="display: none;">
            <div id="crnWindow-head">
               <div class='detailed'></div>
               <button></button>
            </div>
            <form>
               <!-- 堆垛机号 -->
               <div class="form-item">
                  <div class="form-item-label" style>
                     <span>堆垛机号:</span>
                  </div>
                  <div class="form-item-input">
                     <input type="text" name="crnNo">
                  </div>
               </div>
               <!-- 工作号 -->
               <div class="form-item">
                  <div class="form-item-label">
                     <span>工作号:</span>
                  </div>
                  <div class="form-item-input">
                     <input type="text" name="workNo">
                  </div>
               </div>
               <!-- 站源 -->
               <div class="form-item">
                  <div class="form-item-label">
                     <span>站源:</span>
                  </div>
                  <div class="form-item-input">
                     <input type="text" name="sourceStaNo">
                  </div>
               </div>
               <!-- 目标站 -->
               <div class="form-item">
                  <div class="form-item-label">
                     <span>目标站:</span>
                  </div>
                  <div class="form-item-input">
                     <input type="text" name="staNo">
                  </div>
               </div>
               <!-- 工作状态 -->
               <div class="form-item">
                  <div class="form-item-label">
                     <span>工作状态:</span>
                  </div>
                  <div class="form-item-input">
                     <input type="text" name="wrkSts">
                  </div>
               </div>
               <!-- 出入类型 -->
               <div class="form-item">
                  <div class="form-item-label">
                     <span>出入类型:</span>
                  </div>
                  <div class="form-item-input">
                     <input type="text" name="ioType">
                  </div>
               </div>
               <!-- 源库位 -->
               <div class="form-item">
                  <div class="form-item-label">
                     <span>源库位:</span>
                  </div>
                  <div class="form-item-input">
                     <input type="text" name="sourceLocNo">
                  </div>
               </div>
               <!-- 目标库位 -->
               <div class="form-item">
                  <div class="form-item-label">
                     <span>目标库位:</span>
                  </div>
                  <div class="form-item-input">
                     <input type="text" name="locNo">
                  </div>
               </div>
               <!-- 堆垛机状态 -->
               <div class="form-item">
                  <div class="form-item-label">
                     <span>堆垛机状态:</span>
                  </div>
                  <div class="form-item-input">
                     <input type="text" name="crnStatus">
                  </div>
               </div>
               <!-- 异常 -->
               <div class="form-item">
                  <div class="form-item-label">
                     <span>异常:</span>
                  </div>
                  <div class="form-item-input">
                     <input type="text" name="error">
                  </div>
               </div>
            </form>
         </div>
         <!-- 输送设备弹窗 -->
         <div id="siteWindow" style="display: none;">
         <div id="siteWindow" :style="{display:siteWindow?'block':'none'}" class="animate__animated animate__fadeIn">
            <!-- 表头 -->
            <div id="siteWindow-head">
               <div class='detailed'></div>
               <button></button>
               <div class="detailed"></div>
               <button @click="siteWindow = false"></button>
            </div>
            <form>
               <!-- 设备号 -->
               <div class="form-item"  >
                  <div class="form-item-label">
                     <span>设备号:</span>
            <!-- 表内容 -->
            <div class="siteWindow-body">
               <form>
                  <!-- 设备号 -->
                  <div class="form-item">
                     <div class="form-item-label">
                        <span>设备号:</span>
                     </div>
                     <div class="form-item-input">
                        <input type="text" name="siteId" value="">
                     </div>
                  </div>
                  <div class="form-item-input">
                     <input type="text" name="siteId">
                  <!-- 工作号 -->
                  <div class="form-item">
                     <div class="form-item-label">
                        <span>工作号:</span>
                     </div>
                     <div class="form-item-input">
                        <input type="text" name="workNo" value="">
                     </div>
                  </div>
               </div>
               <!-- 工作号 -->
               <div class="form-item">
                  <div class="form-item-label">
                     <span>工作号:</span>
                  <!-- 工作状态 -->
                  <div class="form-item">
                     <div class="form-item-label">
                        <span>工作状态:</span>
                     </div>
                     <div class="form-item-input">
                        <input type="text" name="wrkSts" value="">
                     </div>
                  </div>
                  <div class="form-item-input">
                     <input type="text" name="workNo">
                  <div class="form-item">
                     <!-- 自动 -->
                     <div class="form-item-checkbox">
                        <div class="form-item-label-checkbox">
                           <span>自动</span>
                        </div>
                        <div class="form-item-input-checkbox">
                           <input type="checkbox" name="autoing">
                        </div>
                     </div>
                     <!-- 有物 -->
                     <div class="form-item-checkbox">
                        <div class="form-item-label-checkbox">
                           <span>有物</span>
                        </div>
                        <div class="form-item-input-checkbox">
                           <input type="checkbox" name="loading">
                        </div>
                     </div>
                     <!-- 能入 -->
                     <div class="form-item-checkbox">
                        <div class="form-item-label-checkbox">
                           <span>能入</span>
                        </div>
                        <div class="form-item-input-checkbox">
                           <input type="checkbox" name="canining">
                        </div>
                     </div>
                     <!-- 能出 -->
                     <div class="form-item-checkbox">
                        <div class="form-item-label-checkbox">
                           <span>能出</span>
                        </div>
                        <div class="form-item-input-checkbox">
                           <input type="checkbox" name="canouting">
                        </div>
                     </div>
                  </div>
               </div>
               <!-- 工作状态 -->
               <div class="form-item">
                  <div class="form-item-label">
                     <span>工作状态:</span>
                  <!-- 出入类型 -->
                  <div class="form-item">
                     <div class="form-item-label">
                        <span>出入类型:</span>
                     </div>
                     <div class="form-item-input">
                        <input type="text" name="ioType" value="">
                     </div>
                  </div>
                  <div class="form-item-input">
                     <input type="text" name="wrkSts">
                  <!-- 源站 -->
                  <div class="form-item">
                     <div class="form-item-label">
                        <span>源站:</span>
                     </div>
                     <div class="form-item-input">
                        <input type="text" name="sourceStaNo" value="">
                     </div>
                  </div>
               </div>
               <!-- 自动 -->
               <div class="form-item-checkbox">
                  <div class="form-item-label-checkbox">
                     <span>自动</span>
                  <!-- 目标站 -->
                  <div class="form-item">
                     <div class="form-item-label">
                        <span>目标站:</span>
                     </div>
                     <div class="form-item-input">
                        <input type="text" name="staNo" value="">
                     </div>
                  </div>
                  <div class="form-item-input-checkbox">
                     <input type="checkbox" name="autoing">
                  <!-- 源库位 -->
                  <div class="form-item">
                     <div class="form-item-label">
                        <span>源库位:</span>
                     </div>
                     <div class="form-item-input">
                        <input type="text" name="sourceLocNo" value="">
                     </div>
                  </div>
               </div>
               <!-- 有物 -->
               <div class="form-item-checkbox">
                  <div class="form-item-label-checkbox">
                     <span>有物</span>
                  <!-- 目标库位 -->
                  <div class="form-item">
                     <div class="form-item-label">
                        <span>目标库位:</span>
                     </div>
                     <div class="form-item-input">
                        <input type="text" name="locNo" value="">
                     </div>
                  </div>
                  <div class="form-item-input-checkbox">
                     <input type="checkbox" name="loading">
                  </div>
               </div>
               <!-- 能入 -->
               <div class="form-item-checkbox">
                  <div class="form-item-label-checkbox">
                     <span>能入</span>
                  </div>
                  <div class="form-item-input-checkbox">
                     <input type="checkbox" name="canining">
                  </div>
               </div>
               <!-- 能出 -->
               <div class="form-item-checkbox">
                  <div class="form-item-label-checkbox">
                     <span>能出</span>
                  </div>
                  <div class="form-item-input-checkbox">
                     <input type="checkbox" name="canouting">
                  </div>
               </div>
               <!-- 出入类型 -->
               <div class="form-item">
                  <div class="form-item-label">
                     <span>出入类型:</span>
                  </div>
                  <div class="form-item-input">
                     <input type="text" name="ioType">
                  </div>
               </div>
               <!-- 源站 -->
               <div class="form-item">
                  <div class="form-item-label">
                     <span>源站:</span>
                  </div>
                  <div class="form-item-input">
                     <input type="text" name="sourceStaNo">
                  </div>
               </div>
               <!-- 目标站 -->
               <div class="form-item">
                  <div class="form-item-label">
                     <span>目标站:</span>
                  </div>
                  <div class="form-item-input">
                     <input type="text" name="staNo">
                  </div>
               </div>
               <!-- 源库位 -->
               <div class="form-item">
                  <div class="form-item-label">
                     <span>源库位:</span>
                  </div>
                  <div class="form-item-input">
                     <input type="text" name="sourceLocNo">
                  </div>
               </div>
               <!-- 目标库位 -->
               <div class="form-item">
               <div class="form-item-label">
                  <span>目标库位:</span>
               </div>
               <div class="form-item-input">
                  <input type="text" name="locNo">
               </div>
               </form>
            </div>
            </form>
         </div>
      </div>
      <script>
         var app = new Vue({
            el: '#app',
            data: {
               map: [],//地图数据
               currentLev: 1,//地图当前楼层
               siteWindow: false, //站点弹窗显示默认不显示
               floorList: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], //当前项目楼层
               shuttleList: [], //四向穿梭车集合
               currentLevShuttleList: [],//当前楼层四向穿梭车集合
               shuttleColorList: [],//四向穿梭车颜色集合
               liftList: [], //提升机集合
               systemStatus: true,//系统运行状态
               consoleInterval: null,//定时器存储变量
               codeList1: [],//条码List
               codeList2: [],//条码List
            },
            created() {
               this.init()
            },
            watch: {
            },
            methods: {
               init() {
                  this.getMap(this.currentLev)
                  this.getSystemRunningStatus() //获取系统运行状态
                  this.consoleInterval = setInterval(() => {
                     this.getShuttleStateInfo() //获取四向穿梭车信息
                     this.getLiftStateInfo() //获取提升机信息
                     this.getSiteInfo() //获取输送站点数据
                     this.getMap(this.currentLev) //获取实时地图数据
                     this.getCodeData()//获取条码
                  }, 1000)
               },
               //获取地图数据
               getMap(lev) {
                  $.ajax({
                     type: "get",
                     url: baseUrl + "/console/map/" + lev + "/auth",
                     headers: {
                        'token': localStorage.getItem('token')
                     },
                     success: (res) => {
                        let data = res.data
                        let tmp = []
                        for (let i = 1; i < data.length - 1; i++) {
                           tmp.push(data[i])
                        }
                        // console.log(tmp)
                        this.map = tmp
                     }
                  })
               },
               openSite(id) {
                  this.siteWindow = true; //打开站点信息弹窗
                  $(".detailed").empty();
                  $('.detailed').append(id + '站点详细信息');
                  $.ajax({
                     url: baseUrl + "/console/site/detail",
                     headers: {
                        'token': localStorage.getItem('token')
                     },
                     data: {
                        siteId: id
                     },
                     method: 'post',
                     success: function(res) {
                        for (var val in res.data) {
                           var find = $("#siteWindow").find(":input[name='" + val + "']");
                           if (find[0].type === 'text') {
                              find.val(res.data[val]);
                           } else if (find[0].type === 'checkbox') {
                              find.attr("checked", res.data[val] === 'Y');
                           }
                        }
                     }
                  })
               },
               getSiteInfo() {
                  //获取输送站点数据
                  $.ajax({
                     url: baseUrl+ "/console/latest/data/site",
                     headers: {'token': localStorage.getItem('token')},
                     method: 'POST',
                     success: function (res) {
                        if (res.code === 200){
                           var sites = res.data;
                           for (var i = 0; i < sites.length; i++){
                              var siteEl = $("#site-"+sites[i].siteId);
                              siteEl.attr("class", "site " + sites[i].siteStatus);
                              if (sites[i].workNo != null && sites[i].workNo>0) {
                                 siteEl.html(sites[i].siteId + "[" + sites[i].workNo + "]");
                              } else {
                                 siteEl.html(sites[i].siteId);
                              }
                           }
                        } else if (res.code === 403){
                           parent.location.href = baseUrl+"/login";
                        }  else {
                           console.log(res.msg);
                        }
                     }
                  });
               },
               changFloor(lev) {
                  this.currentLev = lev
                  this.currentLevShuttleList = []
                  this.getMap(lev)
               },
               getShuttleStateInfo() {
                  // 四向穿梭车信息表获取
                  let that = this
                  $.ajax({
                     url: baseUrl + "/shuttle/table/shuttle/state",
                     headers: {
                        'token': localStorage.getItem('token')
                     },
                     method: 'POST',
                     success: function(res) {
                        if (res.code == 200) {
                           let currentLevShuttle = []//当前楼层小车集合
                           res.data.forEach((item,idx) => {
                              if (item != null && item.point != undefined && item.point != null) {
                                 if (item.point.z == that.currentLev) {
                                    currentLevShuttle.push(item);
                                 }
                              }
                           })
                           that.currentLevShuttleList = currentLevShuttle
                           that.shuttleList = res.data
                           if (that.shuttleColorList.length == 0) {
                              let colorList = []//随机小车颜色
                              res.data.forEach((item,idx) => {
                                 colorList[item.shuttleNo] = that.colorRGB()
                              })
                              that.shuttleColorList = colorList
                           }
                        }
                     }
                  });
               },
               getLiftStateInfo() {
                  // 提升机信息表获取
                  let that = this
                  $.ajax({
                     url: baseUrl + "/lift/table/lift/state",
                     headers: {
                        'token': localStorage.getItem('token')
                     },
                     method: 'POST',
                     success: function(res) {
                        if (res.code == 200) {
                           that.liftList = res.data
                        }
                     }
                  });
               },
               systemSwitch() {
                  // 系统开关
                  let that = this
                  if (this.systemStatus) {
                     this.$prompt('请输入口令,并停止WCS系统', '提示', {
                        confirmButtonText: '确定',
                        cancelButtonText: '取消',
                     }).then(({
                        value
                     }) => {
                        that.doSwitch(0, value)
                     }).catch(() => {
                     });
                  } else {
                     this.doSwitch(1)
                  }
               },
               doSwitch(operatorType, password) {
                  let that = this
                  $.ajax({
                     url: baseUrl + "/console/system/switch",
                     headers: {
                        'token': localStorage.getItem('token')
                     },
                     data: {
                        operatorType: operatorType,
                        password: password
                     },
                     method: 'POST',
                     success: function(res) {
                        if (res.code === 200) {
                           if (res.data.status) {
                              $('#system-toggle-checked').attr("checked", true);
                              $('#system-run-desc').html("系统运行中...");
                              that.systemStatus = true;
                              parent.systemRunning = true;
                           } else {
                              $('#system-toggle-checked').attr("checked", false);
                              $('#system-run-desc').html("系统已停止!");
                              that.systemStatus = false;
                              parent.systemRunning = false;
                           }
                        } else if (res.code === 403) {
                           parent.location.href = baseUrl + "/login";
                        } else {
                           that.$message({
                              message: res.msg,
                              type: 'error'
                           });
                        }
                     }
                  });
               },
               getSystemRunningStatus() {
                  // 获取wcs系统运行状态
                  let that = this
                  $.ajax({
                     url: baseUrl + "/console/system/running/status",
                     headers: {
                        'token': localStorage.getItem('token')
                     },
                     method: 'POST',
                     success: function(res) {
                        if (res.code === 200) {
                           if (res.data.status) {
                              $('#system-toggle-checked').attr("checked", true);
                              $('#system-run-desc').html("系统运行中...");
                              that.systemStatus = true;
                              parent.systemRunning = true;
                           } else {
                              $('#system-toggle-checked').attr("checked", false);
                              $('#system-run-desc').html("系统已停止!");
                              that.systemStatus = false;
                              parent.systemRunning = false;
                           }
                        } else if (res.code === 403) {
                           parent.location.href = baseUrl + "/login";
                        } else {
                           that.$message({
                              message: res.msg,
                              type: 'error'
                           });
                        }
                     }
                  });
               },
               getCarPosition(x,y) {
                  //计算四向穿梭车图标位置
                  let top = (x * 35 - 35) + "px" //需要减去小车自己所占高度
                  let left = (y * 35) + "px" //需要减去小车自己所占宽度
                  return [top,left];
               },
               testMove() {
                  let that = this
                  clearInterval(this.consoleInterval)//清理定时器
                  let shuttleList = this.currentLevShuttleList
                  $.ajax({
                     url: baseUrl + "/static/testMoveData.json",
                     headers: {
                        'token': localStorage.getItem('token')
                     },
                     method: 'GET',
                     success: function(res) {
                        shuttleList[0].moveAdvancePath = res
                        that.currentLevShuttleList = shuttleList
                        let index = 0
                        let tmp = null
                        tmp = setInterval(() => {
                           if (index < res.length) {
                              that.currentLevShuttleList[0].wcsPoint.y = res[index].y
                              that.currentLevShuttleList[0].wcsPoint.x = res[index].x
                              index++
                           }else {
                              clearInterval(tmp)
                              that.init()
                           }
                        },1000)
                     }
                  });
               },
               colorRGB(){
                  //随机颜色
                  const r = Math.floor(Math.random()*256);
                  const g = Math.floor(Math.random()*256);
                  const b = Math.floor(Math.random()*256);
                  return `rgb(${r},${g},${b})`;
               },
               checkAdvancePath(x,y) {
                  //检测路径是否为穿梭车预计路径,如x和y路径是穿梭车预计路径,则返回小车号
                  this.currentLevShuttleList.forEach((item,idx) => {
                     if (item.moveAdvancePath != null) {
                        item.moveAdvancePath.forEach((path,index) => {
                           if (path.x === x && path.y === y) {
                              return item.shuttleNo;
                           }
                        })
                     }
                  })
                  let data = []
                  let shuttleList = this.currentLevShuttleList;
                  for (var i = 0; i < shuttleList.length; i++) {
                     let shuttle = shuttleList[i]
                     let moveAdvancePath = shuttle.moveAdvancePath
                     if (moveAdvancePath != null) {
                        for (var j = 0; j < moveAdvancePath.length; j++) {
                           let path = moveAdvancePath[j]
                           if (path.x-1 === x && path.y === y) {//路径符合
                              data.push(shuttle.shuttleNo)
                              continue;
                           }
                        }
                     }
                  }
                  return data;//返回小车号集合
               },
               resetMap() {
                  //重置地图
                  let that = this
                  $.ajax({
                     url:baseUrl+"/console/map/resetMap/auth",
                     headers:{
                        'token': localStorage.getItem('token')
                     },
                     data:{},
                     method:'get',
                     success:function (res) {
                        that.$message({
                           message: '重置完成',
                           type: 'success'
                        });
                     }
                  })
               },
               getCodeData(){
                  let that = this
                  $.ajax({
                     url:baseUrl +'/console/barcode/output/site',
                     method:'GET',
                     success:function (res) {
                        if(res.code === 200){
                           let data = JSON.parse(res.data)
                           if(data.length<=5){
                              that.codeList1 = data
                           } else {
                              tData1 = data.slice(0,5)
                              tData2 = data.splice(5,10)
                           }
                        }
                     }
                  })
               }
            }
         })
      </script>
   </body>
</html>
<script type="text/javascript">
   // 弹窗站点信息
   $('.site').on('click',function(){
      var id = this.id.split("-")[1];
       $("#siteWindow").attr("style","display:block;");//显示div
       $(".detailed").empty();
       $('.detailed').append(id+'站点详细信息');
       $.post(baseUrl+"/console/site/detail", {siteId: id}, function (res) {
          for (var val in res.data) {
             var find = $("#siteWindow").find(":input[name='" + val + "']");
             if (find[0].type==='text') {
                find.val(res.data[val]);
             } else if (find[0].type === 'checkbox') {
                find.attr("checked", res.data[val] === 'Y');
             }
          }
       })
   });
   // 堆垛机信息
   $('.machine').on('click',function(){
      var id = this.id.split("-")[1];
      $("#crnWindow").attr('style','display:block;');
      $('.detailed').empty();
      $('.detailed').append(id+'号堆垛机');
      $.post(baseUrl+"/console/crn/detail", {crnNo: id}, function (res) {
         for (var val in res.data) {
            var find = $("#crnWindow").find(":input[name='" + val + "']");
            if (find[0].type==='text') {
               find.val(res.data[val]);
            } else if (find[0].type === 'checkbox') {
               find.attr("checked", res.data[val] === 'Y');
            }
         }
      })
   })
   // 弹窗关闭
   $('button').on('click',function(){
      $('#siteWindow').attr('style','display:none')
      $('#crnWindow').attr('style','display:none')
   })
   var crn1Position = 0;
   var crn2Position = 0;
   var crn3Position = 0;
   var crn4Position = 0;
   var crn5Position = 0;
   // 初始化
   getSitesInfo();
   getCrnInfo();
   getSystemRunningStatus();
   getBarcodeInfo();
   getScaleInfo();
   // 实时访问
   setInterval(function () {
      getCrnInfo();
      getSystemRunningStatus();
      getBarcodeInfo();
      getScaleInfo();
   }, 1000);
   setInterval(function () {
      getSitesInfo();
   }, 3000);
   // 系统运行开关
   function systemSwitch() {
      if (parent.systemRunning){
         layer.prompt({title: '请输入口令,并停止 WCS 系统', formType: 1,   shadeClose: true}, function(pass, idx){
            layer.close(idx);
            doSwitch(0, pass); // 停止wcs系统
         });
      } else {
         doSwitch(1); // 启动wcs系统
      }
   }
   // 请求服务器控制wcs系统运行状态
   function doSwitch(operatorType, password) {
      // 加载tips
      var index = layer.load(1, {
         shade: [0.1,'#fff']
      });
      $.ajax({
         url: baseUrl+ "/console/system/switch",
         headers: {'token': localStorage.getItem('token')},
         // async: false,
         data: {
            operatorType: operatorType,
            password: password
         },
         method: 'POST',
         success: function (res) {
            console.log(res)
            layer.close(index);
            if (res.code === 200){
               if (res.data.status) {
                  $('#system-icon').attr("class", "system-icon-open");
                  $('#system-run-desc').html("系统运行中...");
                  parent.systemRunning = true;
               } else {
                  $('#system-icon').attr("class", "system-icon-close");
                  $('#system-run-desc').html("系统已停止!");
                  parent.systemRunning = false;
               }
            } else if (res.code === 403){
               parent.location.href = baseUrl+"/login";
            }  else {
               console.log(res.msg);
            }
         }
      });
   }
   // 获取wcs系统运行状态
   function getSystemRunningStatus() {
      $.ajax({
         url: baseUrl+ "/console/system/running/status",
         headers: {'token': localStorage.getItem('token')},
         method: 'POST',
         success: function (res) {
            if (res.code === 200){
               if (res.data.status) {
                  $('#system-icon').attr("class", "system-icon-open");
                  $('#system-run-desc').html("系统运行中...");
                  parent.systemRunning = true;
               } else {
                  $('#system-icon').attr("class", "system-icon-close");
                  $('#system-run-desc').html("系统已停止!");
                  parent.systemRunning = false;
               }
            } else if (res.code === 403){
               parent.location.href = baseUrl+"/login";
            }  else {
               console.log(res.msg);
            }
         }
      });
   }
   // 输送设备实时数据获取
   function getSitesInfo(){
      $.ajax({
         url: baseUrl+ "/console/latest/data/site",
         headers: {'token': localStorage.getItem('token')},
         method: 'POST',
         success: function (res) {
            if (res.code === 200){
               var sites = res.data;
               for (var i = 0; i < sites.length; i++){
                  var siteEl = $("#site-"+sites[i].siteId);
                  siteEl.attr("class", "site " + sites[i].siteStatus);
                  if (sites[i].workNo != null && sites[i].workNo>0) {
                     siteEl.html(sites[i].siteId + "[" + sites[i].workNo + "]");
                  } else {
                     siteEl.html(sites[i].siteId);
                  }
                  if (i+1===8) {
                     carAnimate(i+1, Number(sites[i].nearbySta));
                  }
               }
            } else if (res.code === 403){
               parent.location.href = baseUrl+"/login";
            }  else {
               console.log(res.msg);
            }
         }
      });
   }
   // 堆垛机实时数据获取
   function getCrnInfo(){
      $.ajax({
         url: baseUrl+ "/console/latest/data/crn",
         headers: {'token': localStorage.getItem('token')},
         method: 'POST',
         success: function (res) {
            if (res.code === 200){
               var crns = res.data;
               for (var i = 0; i < crns.length; i++){
                  var crnEl = $("#crn-"+crns[i].crnId);
                  crnEl.attr("class", "machine " + crns[i].crnStatus);
                  var unit = ($('.item').eq(0).width()+4)/2;
                  crnEl.animate({left: (crns[i].bay * unit + 25) +'px'}, 1000);
               }
            } else if (res.code === 403){
               parent.location.href = baseUrl+"/login";
            }  else {
               console.log(res.msg);
            }
         }
      });
   }
   // 扫码器实时数据获取
   function getBarcodeInfo(){
      $.ajax({
         url: baseUrl+ "/console/latest/data/barcode",
         headers: {'token': localStorage.getItem('token')},
         method: 'POST',
         success: function (res) {
            if (res.code === 200){
               var barcodes = res.data;
               for (var i = 0; i < barcodes.length; i++){
                  $("#code-decoder-data-"+barcodes[i].barcodeId).html(barcodes[i].codeValue);
               }
            } else if (res.code === 403){
               parent.location.href = baseUrl+"/login";
            }  else {
               console.log(res.msg);
            }
         }
      });
   }
   // 磅秤实时数据获取
   function getScaleInfo(){
      $.ajax({
         url: baseUrl+ "/console/latest/data/scale",
         headers: {'token': localStorage.getItem('token')},
         method: 'POST',
         success: function (res) {
            if (res.code === 200){
               var sclaes = res.data;
               for (var i = 0; i < sclaes.length; i++){
                  console.log(sclaes[i].scaleId + ":" + sclaes[i].value)
                  $("#scale-data-"+sclaes[i].scaleId).text(sclaes[i].value);
               }
            } else if (res.code === 403){
               parent.location.href = baseUrl+"/login";
            }  else {
               console.log(res.msg);
            }
         }
      });
   }
   // 堆垛机偏移动画
   function crnAnimate(id, leftVal) {
      switch (id) {
         case 1:
            $("#crn-1").animate({left: leftVal+'px'}, 1000);
            crn1Position = leftVal;
            break;
         case 2:
            $("#crn-2").animate({left: leftVal+'px'}, 1000);
            crn2Position = leftVal;
            break;
         case 3:
            $("#crn-3").animate({left: leftVal+'px'}, 1000);
            crn3Position = leftVal;
            break;
         case 4:
            $("#crn-4").animate({left: leftVal+'px'}, 1000);
            crn4Position = leftVal;
            break;
         case 5:
            $("#crn-5").animate({left: leftVal+'px'}, 1000);
            crn5Position = leftVal;
            break;
         default:
            break
      }
   }
   // 页面点击事件监听 ---------------------------------------------------------
   // 输送设备点击事件
   // $('.site').on('click', function () {
   //    var id = this.id.split("-")[1];
   //    if (id === undefined) {
   //       return;
   //    }
   //    layer.open({
   //       title: id + " 站点信息详情",
   //       closeBtn: 0,
   //       skin: 'layui-layer-lan',
   //       offset: '180px',
   //       type: 1,
   //       shadeClose: true,
   //       content: $('#siteWindow'),
   //       area: ['35rem', '18rem'],
   //       btn: ['确定', '关闭'],
   //       success: function(layero, index){
   //          http.post(baseUrl+"/console/site/detail", {siteId: id}, function (res) {
   //             for (var val in res.data) {
   //                var find = $("#siteWindow").find(":input[name='" + val + "']");
   //                if (find[0].type==='text') {
   //                   find.val(res.data[val]);
   //                } else if (find[0].type === 'checkbox') {
   //                   find.attr("checked", res.data[val] === 'Y');
   //                }
   //             }
   //          })
   //       },
   //       end: function () {
   //          $(':input', $("#siteWindow")).val('').removeAttr('checked').removeAttr('selected');
   //       }
   //    });
   // });
   // 堆垛机点击事件
   // $('.machine').on('click', function () {
   //    var id = this.id.split("-")[1];
   //    layer.open({
   //       title: id+"号堆垛机",
   //       skin: 'layui-layer-lan',
   //       closeBtn: 0,
   //       type: 1,
   //       offset: '150px',
   //       shadeClose: true,
   //       content: $("#crnWindow"),
   //       area: ['40rem', '20rem'],
   //       btn: ['确定', '关闭'],
   //       success: function(layero, index){
   //          http.post(baseUrl+"/console/crn/detail", {crnNo: id}, function (res) {
   //             for (var val in res.data) {
   //                var find = $("#crnWindow").find(":input[name='" + val + "']");
   //                if (find[0].type==='text') {
   //                   find.val(res.data[val]);
   //                } else if (find[0].type === 'checkbox') {
   //                   find.attr("checked", res.data[val] === 'Y');
   //                }
   //             }
   //          })
   //       },
   //       end: function () {
   //          $(':input', $("#crnWindow")).val('').removeAttr('checked').removeAttr('selected');
   //       }
   //    });
   // });
   // 小车偏移动画
   function carAnimate(id, target) {
      var targetTop = 122;
      if (id === 8) {
         switch (target) {
            case 1:
               targetTop += 160;
               break;
            case 2:
               targetTop += 140;
               break;
            case 3:
               targetTop += 80;
               break;
            case 4:
               targetTop += 40;
               break;
            case 7:
               targetTop += 0;
               break;
            default:
               return;
         }
      } else {
         return;
      }
      $("#site-" + id).animate({top: targetTop+'px'}, 1000);
   }
</script>