18516761980
2022-07-12 448e5b139e803002547552b989e32c0392d59e4b
Merge branch 'hylywcs' of http://47.97.1.152:5880/r/zy-wcs into hylywcs
2个文件已修改
3个文件已添加
3个文件已删除
4483 ■■■■ 已修改文件
src/main/webapp/static/js/console.js 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/console.map.js 515 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/console-old.html 1229 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/console.html 1204 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/index.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/render.html 735 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/render.js 585 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/test.html 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/console.js
New file
@@ -0,0 +1,150 @@
// 库位图
let total = [],
    rack = '',
    racks = '',
    rackDesc = '',
    rackDescs = '',
    crn = '',
    crns = '',
    track = '',
    tracks = '',
    stn = '',
    stns = '',
    stnArr = [],
    floorBtn = '',
    floorBtns = '',
    floorBtnss = '',
    floorInfo='';  // 库区信息
let rackss = mapInfo.racks,
    rackDescss = mapInfo.rackDescs,
    crnss = mapInfo.crns,
    areas = mapInfo.areas[0].floors,
    floorId;
function getMap() {
    // 货架
    for (let i = 0;i < rackss.length;i++) {
        let bay ='' // 单个库位
        let bays = '' // 库位集合
        let bayWidth = rackss[i].width / (rackss[i].maxBayNo / rackss[i].minBayNo)
        let maxBayNo = rackss[i].maxBayNo // 最大库位号
        let minBayNo = rackss[i].minBayNo // 最小库位号
        let bLen = maxBayNo / minBayNo // 库位个数
        let bNum // 库位号码
        // hpPosition 0 表示货架序号 左->右 1 表示货架序号 右->左
        if (mapInfo.hpPosition == 1) {
            bNum = maxBayNo
            for (let j = bLen; j > 0; j--) {
                bay = "<button class='item' style='width: "+ bayWidth +"px'>" + bNum + "</button>"
                bays = bays + bay
                bNum = bNum - minBayNo;
            }
        }else {
            bNum = minBayNo
            for (let j = 0; j < bLen; j++) {
                bay = "<button class='item' style='width: "+ bayWidth +"px'>" + bNum + "</button>"
                bays = bays + bay
                bNum = bNum + minBayNo;
            }
        }
        rack = "<div class='rack' id='" + rackss[i].id +
            "'style='width:"+ rackss[i].width +
            "px;height: "+ rackss[i].height+
            "px;top: "+ rackss[i].top +
            "px;left: "+ rackss[i].left +
            "px'>" + bays + "</div>"
        racks = racks + rack
        // getCrnInfo(minBayNo);
    }
    // 货架描述
    for (let i = 0;i < rackDescss.length;i++) {
        rackDesc = "<div class='rackDescs' id='" + rackDescss[i].id +
            "'style='width:"+ rackDescss[i].width +
            "px;height: "+ rackDescss[i].height+
            "px;line-height: "+ rackDescss[i].height+
            "px;top: "+ rackDescss[i].top +
            "px;left: "+ rackDescss[i].left +
            "px'>" + rackDescss[i].text + "</div>"
        rackDescs = rackDescs + rackDesc
    }
    // 堆垛机和地轨
    for (let i = 0;i < crnss.length;i++) {
        if (crnss[i].type == "crane") {
            crn = "<div class='machine' id='" + crnss[i].id +
                "'style='width:"+ crnss[i].width +
                "px;height: "+ crnss[i].height+
                "px;top: "+ crnss[i].top +
                "px;left: "+ crnss[i].left +
                "px'></div>"
            crns = crns + crn
        } else {
            track = "<div class='track' id='" + crnss[i].id +
                "'style='width:"+ crnss[i].width +
                "px;height: "+ crnss[i].height+
                "px;top: "+ crnss[i].top +
                "px;left: "+ crnss[i].left +
                "px'>" + crnss[i].text + "</div>"
            tracks = tracks + track
        }
    }
    // 楼层
    for (let i = 0; i < areas.length;i++) {
        let stnss = areas[i].stns
        let floor = areas[i].text
        floorId = areas[i].id
        var position = (i+1)*100
        floorBtn =
            "<button class='floorBtn btn-16' onclick='changFloor("+i+")' style='top: "+position+"px;'>" + floor +"</button>"
        console.log(mapInfo.areas[0].floors.length)
        if (mapInfo.areas[0].floors.length == 1) {
            floorBtnss = ''
        } else {
            floorBtnss =  floorBtnss + floorBtn
        }
        // 每层的 输送线站点
        var index = i
        var n = 1
        stnArr[index] = ''
        total[index] = ''
        for (let j = 0; j < stnss.length; j++) {
            if (stnss[j].type == "stn") {
                stn = "<div class='site' id='" + stnss[j].id +
                    "'style='width:"+ stnss[j].width +
                    "px;height: "+ stnss[j].height+
                    "px;line-height: "+ stnss[j].height+
                    "px;top: "+ stnss[j].top +
                    "px;left: "+ stnss[j].left +
                    "px'>" + stnss[j].text + "</div>"
                stnArr[i] = stnArr[i] + stn
                total[i] = n++
            } else if(stnss[j].type == "track"){
                stn = "<div class='track' id='" + stnss[j].id +
                    "'style='width:"+ stnss[j].width +
                    "px;height: "+ stnss[j].height+
                    "px;line-height: "+ stnss[j].height+
                    "px;top: "+ stnss[j].top +
                    "px;left: "+ stnss[j].left +
                    "px'>" + stnss[j].text  + "</div>"
                stnArr[i] = stnArr[i] + stn
            }
        }
    }
    floorInfo = racks + rackDescs + tracks + crns + stnArr[0] + floorBtnss
    $(".main-part").append(floorInfo)
    $("#line-total").html(total[0])
    listenChange();
}
function changFloor(e) {
    $(".main-part").empty()  // 清空节点
    floorInfo = racks  + stnArr[e] +rackDescs + crns + tracks + floorBtnss
    $(".main-part").append(floorInfo)
    $("#line-total").empty()
    $("#line-total").html(total[e])
    listenChange();
}
src/main/webapp/static/js/console.map.js
New file
@@ -0,0 +1,515 @@
mapInfo = {
    "mapName": "HYLYWCS",
    "rackCount": 12,
    "crnCount": 3,
    "stbCount": 16,
    "hpPosition": 0,
    "minBayNo": 2,
    "floors": 1,
    "racks": [{
        "type": "rack",
        "id": "rack12",
        "top": 484,
        "left": 430,
        "width": 1088,
        "height": 24,
        "minBayNo": 2,
        "maxBayNo": 64
    }, {
        "type": "rack",
        "id": "rack11",
        "top": 458,
        "left": 430,
        "width": 1088,
        "height": 24,
        "minBayNo": 2,
        "maxBayNo": 64
    }, {
        "type": "rack",
        "id": "rack10",
        "top": 399,
        "left": 430,
        "width": 1088,
        "height": 24,
        "minBayNo": 2,
        "maxBayNo": 64
    }, {
        "type": "rack",
        "id": "rack9",
        "top": 373,
        "left": 430,
        "width": 1088,
        "height": 24,
        "minBayNo": 2,
        "maxBayNo": 64
    }, {
        "type": "rack",
        "id": "rack8",
        "top": 344,
        "left": 430,
        "width": 1088,
        "height": 24,
        "minBayNo": 1,
        "maxBayNo": 16
    }, {
        "type": "rack",
        "id": "rack7",
        "top": 318,
        "left": 430,
        "width": 1088,
        "height": 24,
        "minBayNo": 1,
        "maxBayNo": 16
    }, {
        "type": "rack",
        "id": "rack6",
        "top": 263,
        "left": 430,
        "width": 1088,
        "height": 24,
        "minBayNo": 1,
        "maxBayNo": 16
    }, {
        "type": "rack",
        "id": "rack5",
        "top": 237,
        "left": 430,
        "width": 1088,
        "height": 24,
        "minBayNo": 1,
        "maxBayNo": 16
    }, {
        "type": "rack",
        "id": "rack3",
        "top": 180,
        "left": 430,
        "width": 1020,
        "height": 24,
        "minBayNo": 1,
        "maxBayNo": 30
    }, {
        "type": "rack",
        "id": "rack1",
        "top": 97,
        "left": 430,
        "width": 1020,
        "height": 24,
        "minBayNo": 1,
        "maxBayNo": 30
    }, {
        "type": "rack",
        "id": "rack4",
        "top": 207,
        "left": 430,
        "width": 1020,
        "height": 24,
        "minBayNo": 1,
        "maxBayNo": 30
    }, {
        "type": "rack",
        "id": "rack2",
        "top": 123,
        "left": 430,
        "width": 1020,
        "height": 24,
        "minBayNo": 1,
        "maxBayNo": 30
    }],
    "rackDescs": [{
        "type": "rackDescs",
        "id": "lb_desc12",
        "text": "#12",
        "top": 485,
        "left": 1530,
        "width": 41,
        "height": 23
    }, {
        "type": "rackDescs",
        "id": "lb_desc11",
        "text": "#11",
        "top": 460,
        "left": 1530,
        "width": 38,
        "height": 23
    }, {
        "type": "rackDescs",
        "id": "lb_desc10",
        "text": "#10",
        "top": 399,
        "left": 1530,
        "width": 42,
        "height": 23
    }, {
        "type": "rackDescs",
        "id": "lb_desc9",
        "text": "#9",
        "top": 375,
        "left": 1530,
        "width": 33,
        "height": 23
    }, {
        "type": "rackDescs",
        "id": "lb_desc8",
        "text": "#8",
        "top": 349,
        "left": 1530,
        "width": 33,
        "height": 23
    }, {
        "type": "rackDescs",
        "id": "lb_desc7",
        "text": "#7",
        "top": 321,
        "left": 1530,
        "width": 32,
        "height": 23
    }, {
        "type": "rackDescs",
        "id": "lb_desc6",
        "text": "#6",
        "top": 264,
        "left": 1530,
        "width": 33,
        "height": 23
    }, {
        "type": "rackDescs",
        "id": "lb_desc5",
        "text": "#5",
        "top": 235,
        "left": 1530,
        "width": 32,
        "height": 23
    }, {
        "type": "rackDescs",
        "id": "lb_desc4",
        "text": "#4",
        "top": 206,
        "left": 1460,
        "width": 33,
        "height": 23
    }, {
        "type": "rackDescs",
        "id": "lb_desc3",
        "text": "#3",
        "top": 179,
        "left": 1460,
        "width": 32,
        "height": 23
    }, {
        "type": "rackDescs",
        "id": "lb_desc2",
        "text": "#2",
        "top": 123,
        "left": 1460,
        "width": 33,
        "height": 23
    }, {
        "type": "rackDescs",
        "id": "lb_desc1",
        "text": "#1",
        "top": 95,
        "left": 1460,
        "width": 30,
        "height": 23
    }],
    "crns": [{
        "type": "crane",
        "id": "crn-1",
        "text": "1",
        "top": 153,
        "left": 500,
        "width": 93,
        "height": 22
    }, {
        "type": "crane",
        "id": "crn-2",
        "text": "2",
        "top": 291,
        "left": 500,
        "width": 93,
        "height": 22
    }, {
        "type": "crane",
        "id": "crn-3",
        "text": "3",
        "top": 428,
        "left": 500,
        "width": 93,
        "height": 22
    }, {
        "type": "track",
        "id": "lb_track2",
        "text": "",
        "top": 300,
        "left": 405,
        "width": 1130,
        "height": 2
    }, {
        "type": "track",
        "id": "lb_track3",
        "text": "",
        "top": 438,
        "left": 405,
        "width": 1130,
        "height": 2
    }, {
        "type": "track",
        "id": "lb_track1",
        "text": "",
        "top": 164,
        "left": 405,
        "width": 1060,
        "height": 2
    }],
    "stns": [{
        "type": "stn",
        "id": "site-306",
        "text": "306",
        "top": 458,
        "left": 211,
        "width": 66,
        "height": 24
    }, {
        "type": "stn",
        "id": "site-303",
        "text": "303",
        "top": 399,
        "left": 211,
        "width": 66,
        "height": 24
    }, {
        "type": "stn",
        "id": "site-304",
        "text": "304",
        "top": 458,
        "left": 345,
        "width": 66,
        "height": 24
    }, {
        "type": "stn",
        "id": "site-305",
        "text": "305",
        "top": 458,
        "left": 278,
        "width": 66,
        "height": 24
    },{
        "type": "stn",
        "id": "site-202",
        "text": "202",
        "top": 262,
        "left": 202,
        "width": 100,
        "height": 24
    }, {
        "type": "stn",
        "id": "site-302",
        "text": "302",
        "top": 399,
        "left": 278,
        "width": 66,
        "height": 24
    }, {
        "type": "stn",
        "id": "site-203",
        "text": "203",
        "top": 318,
        "left": 303,
        "width": 100,
        "height": 24
    }, {
        "type": "stn",
        "id": "site-204",
        "text": "204",
        "top": 318,
        "left": 202,
        "width": 100,
        "height": 24
    }, {
        "type": "stn",
        "id": "site-201",
        "text": "201",
        "top": 262,
        "left": 303,
        "width": 100,
        "height": 24
    }, {
        "type": "stn",
        "id": "site-103",
        "text": "103",
        "top": 101,
        "left": 327,
        "width": 100,
        "height": 24
    }, {
        "type": "stn",
        "id": "site-101",
        "text": "101",
        "top": 124,
        "left": 327,
        "width": 100,
        "height": 24
    }, {
        "type": "stn",
        "id": "site-301",
        "text": "301",
        "top": 399,
        "left": 345,
        "width": 66,
        "height": 24
    }, {
        "type": "stn",
        "id": "site-102",
        "text": "102",
        "top": 122,
        "left": 154,
        "width": 100,
        "height": 24
    }, {
        "type": "stn",
        "id": "site-104",
        "text": "104",
        "top": 181,
        "left": 225,
        "width": 100,
        "height": 24
    }],
    "areas": [
        {
            "type": "Control_floor",
            "id": "tabControl_floor1",
            "text": "楼层",
            "top": 286,
            "left": 22,
            "width": 302,
            "height": 403,
            "floors": [
                {
                    "type": "floor",
                    "id": "page_floor1",
                    "text": "1F",
                    "top": 4,
                    "left": 22,
                    "width": 276,
                    "height": 395,
                    "stns": [
                        {
                            "type": "stn",
                            "id": "site-306",
                            "text": "306",
                            "top": 458,
                            "left": 225,
                            "width": 66,
                            "height": 24
                        }, {
                            "type": "stn",
                            "id": "site-303",
                            "text": "303",
                            "top": 399,
                            "left": 225,
                            "width": 66,
                            "height": 24
                        }, {
                            "type": "stn",
                            "id": "site-304",
                            "text": "304",
                            "top": 458,
                            "left": 360,
                            "width": 66,
                            "height": 24
                        }, {
                            "type": "stn",
                            "id": "site-305",
                            "text": "305",
                            "top": 458,
                            "left": 293,
                            "width": 66,
                            "height": 24
                        },{
                            "type": "stn",
                            "id": "site-202",
                            "text": "202",
                            "top": 264,
                            "left": 225,
                            "width": 100,
                            "height": 24
                        }, {
                            "type": "stn",
                            "id": "site-302",
                            "text": "302",
                            "top": 399,
                            "left": 293,
                            "width": 66,
                            "height": 24
                        }, {
                            "type": "stn",
                            "id": "site-203",
                            "text": "203",
                            "top": 320,
                            "left": 327,
                            "width": 100,
                            "height": 24
                        }, {
                            "type": "stn",
                            "id": "site-204",
                            "text": "204",
                            "top": 320,
                            "left": 225,
                            "width": 100,
                            "height": 24
                        }, {
                            "type": "stn",
                            "id": "site-201",
                            "text": "201",
                            "top": 264,
                            "left": 327,
                            "width": 100,
                            "height": 24
                        }, {
                            "type": "stn",
                            "id": "site-103",
                            "text": "103",
                            "top": 181,
                            "left": 327,
                            "width": 100,
                            "height": 24
                        }, {
                            "type": "stn",
                            "id": "site-101",
                            "text": "101",
                            "top": 124,
                            "left": 327,
                            "width": 100,
                            "height": 24
                        }, {
                            "type": "stn",
                            "id": "site-301",
                            "text": "301",
                            "top": 399,
                            "left": 360,
                            "width": 66,
                            "height": 24
                        }, {
                            "type": "stn",
                            "id": "site-102",
                            "text": "102",
                            "top": 124,
                            "left": 225,
                            "width": 100,
                            "height": 24
                        }, {
                            "type": "stn",
                            "id": "site-104",
                            "text": "104",
                            "top": 181,
                            "left": 225,
                            "width": 100,
                            "height": 24
                        }
                    ]
                }
            ]
        }
    ]
}
src/main/webapp/views/console-old.html
New file
@@ -0,0 +1,1229 @@
<!DOCTYPE html>
<html>
<head>
    <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">-->
    <link rel="stylesheet" href="../static/css/animate.min.css">
    <script src="../static/js/jquery/jquery-3.3.1.min.js"></script>
    <script src="../static/js/layer/layer.js"></script>
    <script type="text/javascript" src="../static/js/common.js"></script>
</head>
<body>
<div id="root">
    <div class="head">
        <div class="head-left">
            <h1>自动仓库WCS监控图</h1>
            <h6>AUTOMATIC WAREHOUSE WCS MONITORING DIAGRAM</h6>
        </div>
        <div class="head-right">
            <img src="../static/images/zy-logo.png" alt="中扬" height="44" width="80">
        </div>
    </div>
    <!-- 货架 + 堆垛机 + 入库站点 -->
    <div class="main-part">
        <!-- 第一组 -->
        <div class="lane">
            <!-- 货架 -->
            <div class="stock-group">
                <button class="item" style="margin-left: 82px">60</button>
                <button class="item">58</button>
                <button class="item">56</button>
                <button class="item">54</button>
                <button class="item">52</button>
                <button class="item">50</button>
                <button class="item">48</button>
                <button class="item">46</button>
                <button class="item">44</button>
                <button class="item">42</button>
                <button class="item">40</button>
                <button class="item">38</button>
                <button class="item">36</button>
                <button class="item">34</button>
                <button class="item">32</button>
                <button class="item">30</button>
                <button class="item">28</button>
                <button class="item">26</button>
                <button class="item">24</button>
                <button class="item">22</button>
                <button class="item">20</button>
                <button class="item">18</button>
                <button class="item">16</button>
                <button class="item">14</button>
                <button class="item">12</button>
                <button class="item">10</button>
                <button class="item">8</button>
                <button class="item">6</button>
                <button class="item">4</button>
                <button class="item">2</button>
            </div>
            <div class="stock-group">
                <button class="item" style="margin-left: 82px">60</button>
                <button class="item">58</button>
                <button class="item">56</button>
                <button class="item">54</button>
                <button class="item">52</button>
                <button class="item">50</button>
                <button class="item">48</button>
                <button class="item">46</button>
                <button class="item">44</button>
                <button class="item">42</button>
                <button class="item">40</button>
                <button class="item">38</button>
                <button class="item">36</button>
                <button class="item">34</button>
                <button class="item">32</button>
                <button class="item">30</button>
                <button class="item">28</button>
                <button class="item">26</button>
                <button class="item">24</button>
                <button class="item">22</button>
                <button class="item">20</button>
                <button class="item">18</button>
                <button class="item">16</button>
                <button class="item">14</button>
                <button class="item">12</button>
                <button class="item">10</button>
                <button class="item">8</button>
                <button class="item">6</button>
                <button class="item">4</button>
                <button class="item">2</button>
                <div id="site-101" class="site" style="">101</div>
            </div>
            <!-- 堆垛机 -->
            <div class="crn">
                <hr class="pathway">
                <div id="crn-1" class="machine"></div>
            </div>
            <!-- 货架 -->
            <div class="stock-group">
                <button class="item" style="margin-left: 82px">60</button>
                <button class="item">58</button>
                <button class="item">56</button>
                <button class="item">54</button>
                <button class="item">52</button>
                <button class="item">50</button>
                <button class="item">48</button>
                <button class="item">46</button>
                <button class="item">44</button>
                <button class="item">42</button>
                <button class="item">40</button>
                <button class="item">38</button>
                <button class="item">36</button>
                <button class="item">34</button>
                <button class="item">32</button>
                <button class="item">30</button>
                <button class="item">28</button>
                <button class="item">26</button>
                <button class="item">24</button>
                <button class="item">22</button>
                <button class="item">20</button>
                <button class="item">18</button>
                <button class="item">16</button>
                <button class="item">14</button>
                <button class="item">12</button>
                <button class="item">10</button>
                <button class="item">8</button>
                <button class="item">6</button>
                <button class="item">4</button>
                <button class="item">2</button>
                <div id="site-106" class="site" style="">106</div>
            </div>
            <div class="stock-group">
                <button class="item" style="margin-left: 82px">60</button>
                <button class="item">58</button>
                <button class="item">56</button>
                <button class="item">54</button>
                <button class="item">52</button>
                <button class="item">50</button>
                <button class="item">48</button>
                <button class="item">46</button>
                <button class="item">44</button>
                <button class="item">42</button>
                <button class="item">40</button>
                <button class="item">38</button>
                <button class="item">36</button>
                <button class="item">34</button>
                <button class="item">32</button>
                <button class="item">30</button>
                <button class="item">28</button>
                <button class="item">26</button>
                <button class="item">24</button>
                <button class="item">22</button>
                <button class="item">20</button>
                <button class="item">18</button>
                <button class="item">16</button>
                <button class="item">14</button>
                <button class="item">12</button>
                <button class="item">10</button>
                <button class="item">8</button>
                <button class="item">6</button>
                <button class="item">4</button>
                <button class="item">2</button>
            </div>
        </div>
        <!-- 第二组 -->
        <div class="lane">
            <span class="row-no"></span>
            <!-- 货架 -->
            <div class="stock-group">
                <button class="item" style="margin-left: 193px">52</button>
                <button class="item">50</button>
                <button class="item">48</button>
                <button class="item">46</button>
                <button class="item">44</button>
                <button class="item">42</button>
                <button class="item">40</button>
                <button class="item">38</button>
                <button class="item">36</button>
                <button class="item">34</button>
                <button class="item">32</button>
                <button class="item">30</button>
                <button class="item">28</button>
                <button class="item">26</button>
                <button class="item">24</button>
                <button class="item">22</button>
                <button class="item">20</button>
                <button class="item">18</button>
                <button class="item">16</button>
                <button class="item">14</button>
                <button class="item">12</button>
                <button class="item">10</button>
                <button class="item">8</button>
                <button class="item">6</button>
                <button class="item">4</button>
                <button class="item">2</button>
            </div>
            <div class="stock-group">
                <button class="item" style="margin-left: 193px">52</button>
                <button class="item">50</button>
                <button class="item">48</button>
                <button class="item">46</button>
                <button class="item">44</button>
                <button class="item">42</button>
                <button class="item">40</button>
                <button class="item">38</button>
                <button class="item">36</button>
                <button class="item">34</button>
                <button class="item">32</button>
                <button class="item">30</button>
                <button class="item">28</button>
                <button class="item">26</button>
                <button class="item">24</button>
                <button class="item">22</button>
                <button class="item">20</button>
                <button class="item">18</button>
                <button class="item">16</button>
                <button class="item">14</button>
                <button class="item">12</button>
                <button class="item">10</button>
                <button class="item">8</button>
                <button class="item">6</button>
                <button class="item">4</button>
                <button class="item">2</button>
                <div id="site-113" class="site" style="">113</div>
            </div>
            <!-- 堆垛机 -->
            <div class="crn" style="margin-left: 108px">
                <hr class="pathway">
                <div id="crn-2" class="machine"></div>
            </div>
            <!-- 货架 -->
            <div class="stock-group">
                <button class="item" style="margin-left: 193px">52</button>
                <button class="item">50</button>
                <button class="item">48</button>
                <button class="item">46</button>
                <button class="item">44</button>
                <button class="item">42</button>
                <button class="item">40</button>
                <button class="item">38</button>
                <button class="item">36</button>
                <button class="item">34</button>
                <button class="item">32</button>
                <button class="item">30</button>
                <button class="item">28</button>
                <button class="item">26</button>
                <button class="item">24</button>
                <button class="item">22</button>
                <button class="item">20</button>
                <button class="item">18</button>
                <button class="item">16</button>
                <button class="item">14</button>
                <button class="item">12</button>
                <button class="item">10</button>
                <button class="item">8</button>
                <button class="item">6</button>
                <button class="item">4</button>
                <button class="item">2</button>
                <div id="site-120" class="site" style="">120</div>
            </div>
            <div class="stock-group">
                <button class="item" style="margin-left: 193px">52</button>
                <button class="item">50</button>
                <button class="item">48</button>
                <button class="item">46</button>
                <button class="item">44</button>
                <button class="item">42</button>
                <button class="item">40</button>
                <button class="item">38</button>
                <button class="item">36</button>
                <button class="item">34</button>
                <button class="item">32</button>
                <button class="item">30</button>
                <button class="item">28</button>
                <button class="item">26</button>
                <button class="item">24</button>
                <button class="item">22</button>
                <button class="item">20</button>
                <button class="item">18</button>
                <button class="item">16</button>
                <button class="item">14</button>
                <button class="item">12</button>
                <button class="item">10</button>
                <button class="item">8</button>
                <button class="item">6</button>
                <button class="item">4</button>
                <button class="item">2</button>
            </div>
        </div>
        <!--第三组-->
        <div class="lane">
            <span class="row-no"></span>
            <!-- 货架 -->
            <div class="stock-group">
                <button class="item" style="margin-left: 193px">52</button>
                <button class="item">50</button>
                <button class="item">48</button>
                <button class="item">46</button>
                <button class="item">44</button>
                <button class="item">42</button>
                <button class="item">40</button>
                <button class="item">38</button>
                <button class="item">36</button>
                <button class="item">34</button>
                <button class="item">32</button>
                <button class="item">30</button>
                <button class="item">28</button>
                <button class="item">26</button>
                <button class="item">24</button>
                <button class="item">22</button>
                <button class="item">20</button>
                <button class="item">18</button>
                <button class="item">16</button>
                <button class="item">14</button>
                <button class="item">12</button>
                <button class="item">10</button>
                <button class="item">8</button>
                <button class="item">6</button>
                <button class="item">4</button>
                <button class="item">2</button>
            </div>
            <div class="stock-group">
                <button class="item" style="margin-left: 193px">52</button>
                <button class="item">50</button>
                <button class="item">48</button>
                <button class="item">46</button>
                <button class="item">44</button>
                <button class="item">42</button>
                <button class="item">40</button>
                <button class="item">38</button>
                <button class="item">36</button>
                <button class="item">34</button>
                <button class="item">32</button>
                <button class="item">30</button>
                <button class="item">28</button>
                <button class="item">26</button>
                <button class="item">24</button>
                <button class="item">22</button>
                <button class="item">20</button>
                <button class="item">18</button>
                <button class="item">16</button>
                <button class="item">14</button>
                <button class="item">12</button>
                <button class="item">10</button>
                <button class="item">8</button>
                <button class="item">6</button>
                <button class="item">4</button>
                <button class="item">2</button>
                <div id="site-127" class="site" style="">127</div>
            </div>
            <!-- 堆垛机 -->
            <div class="crn" style="margin-left: 108px">
                <hr class="pathway">
                <div id="crn-3" class="machine"></div>
            </div>
            <!-- 货架 -->
            <div class="stock-group">
                <button class="item" style="margin-left: 193px">52</button>
                <button class="item">50</button>
                <button class="item">48</button>
                <button class="item">46</button>
                <button class="item">44</button>
                <button class="item">42</button>
                <button class="item">40</button>
                <button class="item">38</button>
                <button class="item">36</button>
                <button class="item">34</button>
                <button class="item">32</button>
                <button class="item">30</button>
                <button class="item">28</button>
                <button class="item">26</button>
                <button class="item">24</button>
                <button class="item">22</button>
                <button class="item">20</button>
                <button class="item">18</button>
                <button class="item">16</button>
                <button class="item">14</button>
                <button class="item">12</button>
                <button class="item">10</button>
                <button class="item">8</button>
                <button class="item">6</button>
                <button class="item">4</button>
                <button class="item">2</button>
                <div id="site-133" class="site" style="">133</div>
            </div>
            <div class="stock-group">
                <button class="item" style="margin-left: 193px">52</button>
                <button class="item">50</button>
                <button class="item">48</button>
                <button class="item">46</button>
                <button class="item">44</button>
                <button class="item">42</button>
                <button class="item">40</button>
                <button class="item">38</button>
                <button class="item">36</button>
                <button class="item">34</button>
                <button class="item">32</button>
                <button class="item">30</button>
                <button class="item">28</button>
                <button class="item">26</button>
                <button class="item">24</button>
                <button class="item">22</button>
                <button class="item">20</button>
                <button class="item">18</button>
                <button class="item">16</button>
                <button class="item">14</button>
                <button class="item">12</button>
                <button class="item">10</button>
                <button class="item">8</button>
                <button class="item">6</button>
                <button class="item">4</button>
                <button class="item">2</button>
            </div>
        </div>
    </div>
    <!--第1列(宽度 70px) -->
    <div class="site-row site-row-1">
        <div class="site-k" style="height:39px;width:70px;"></div>
        <div id="site-102" class="site" style="height: 18px;line-height: 18px;">102</div>
        <div id="site-107" class="site" style="height: 18px;line-height: 18px;margin-top: 20px">107</div>
        <div id="site-114" class="site" style="height: 18px;line-height: 18px;margin-top: 68px">114</div>
        <div id="site-121" class="site" style="height: 18px;line-height: 18px;margin-top: 20px">121</div>
        <div id="site-128" class="site" style="height: 18px;line-height: 18px;margin-top: 68px">128</div>
        <div id="site-134" class="site" style="height: 18px;line-height: 18px;margin-top: 20px">134</div>
    </div>
    <div class="site-row site-row-2">
        <div class="site-k" style="height:39px;width:70px;"></div>
        <div id="site-103" class="site" style="height: 18px;line-height: 18px;">103</div>
        <div id="site-105" class="site" style="height: 18px;line-height: 18px">105</div>
        <div id="site-108" class="site" style="height: 18px;line-height: 18px">108</div>
        <div id="site-111" class="site" style="height: 66px;line-height: 66px">111</div>
        <div id="site-115" class="site" style="height: 18px;line-height: 18px">115</div>
        <div id="site-118" class="site" style="height: 18px;line-height: 18px">118</div>
        <div id="site-122" class="site" style="height: 18px;line-height: 18px">122</div>
        <div id="site-125" class="site" style="height: 66px;line-height: 66px">125</div>
        <div id="site-129" class="site" style="height: 18px;line-height: 18px">129</div>
        <div id="site-132" class="site" style="height: 18px;line-height: 18px">132</div>
        <div id="site-135" class="site" style="height: 18px;line-height: 18px">135</div>
    </div>
    <div class="site-row site-row-3">
        <div class="site-k" style="height:39px;width:70px;"></div>
        <div id="site-104" class="site" style="height: 18px;line-height: 18px;width:162px;">104</div>
        <div id="site-109" class="site" style="height: 18px;line-height: 18px; margin-top: 20px">109</div>
        <div id="site-112" class="site" style="height: 66px;line-height: 68px">112</div>
        <div id="site-116" class="site" style="height: 18px;line-height: 18px;">116</div>
        <div id="site-119" class="site" style="height: 18px;line-height: 18px">119</div>
        <div id="site-123" class="site" style="height: 18px;line-height: 18px">123</div>
        <div id="site-126" class="site" style="height: 66px;line-height: 68px">126</div>
        <div id="site-130" class="site" style="height: 18px;line-height: 18px">130</div>
        <div id="site-136" class="site" style="height: 18px;line-height: 18px;width:162px; margin-top: 20px">136</div>
    </div>
    <div class="site-row site-row-4">
        <div id="site-110" class="site" style="height: 18px;line-height: 18px;">110</div>
        <div id="site-117" class="site" style="height: 18px;line-height: 18px; margin-top: 68px">117</div>
        <div id="site-124" class="site" style="height: 18px;line-height: 18px; margin-top: 20px">124</div>
        <div id="site-131" class="site" style="height: 18px;line-height: 18px; margin-top: 68px">131</div>
    </div>
</div>
<!--底部-->
<div id="body">
    <!-- 总开关 -->
    <div class="system-state">
        <div class="body-head">总开关</div>
        <div class="switch">
            <div id="system-icon" class="system-icon-open" onclick="systemSwitch()"></div>
            <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>
    </div>
    <div class="line-status">
        <div class="body-head">输送线状态</div>
        <div class="state states">
            <span>运输线总数</span>
            <span class="line-ss">58</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>
    <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">
            </div>
        </div>
        <div class="tablebox">
            <div class="table-head">
                <li><span>条码名称</span><span class="right">扫码时间</span></li>
            </div>
            <div id="barcode2" class="table-body">
            </div>
        </div>
        <div class="tablebox">
            <div class="table-head">
                <li><span>条码名称</span><span class="right">扫码时间</span></li>
            </div>
            <div id="barcode3" class="table-body">
            </div>
        </div>
    </div>
</div>
<!-- 堆垛机弹窗 -->
<div id="crnWindow" style="display: none;" class="animate__animated animate__fadeIn">
    <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" value="">
            </div>
        </div>
        <!-- 工作号 -->
        <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 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 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">
            <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">
            <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">
            <div class="form-item-label">
                <span>源库位:</span>
            </div>
            <div class="form-item-input">
                <input type="text" name="sourceLocNo" value="">
            </div>
        </div>
        <!-- 目标库位 -->
        <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">
            <div class="form-item-label">
                <span>堆垛机状态:</span>
            </div>
            <div class="form-item-input">
                <input type="text" name="crnStatus" value="">
            </div>
        </div>
        <!-- 异常 -->
        <div class="form-item">
            <div class="form-item-label">
                <span>异常:</span>
            </div>
            <div class="form-item-input">
                <input type="text" name="error" value="">
            </div>
        </div>
    </form>
</div>
<!-- 输送设备弹窗 -->
<div id="siteWindow" style="display: none;" class="animate__animated animate__fadeIn">
    <!-- 表头 -->
    <div id="siteWindow-head">
        <div class='detailed'></div>
        <button></button>
    </div>
    <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">
            <div class="form-item-label">
                <span>工作号:</span>
            </div>
            <div class="form-item-input">
                <input type="text" name="workNo" value="">
            </div>
        </div>
        <!-- 工作状态 -->
        <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-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 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">
            <div class="form-item-label">
                <span>源站:</span>
            </div>
            <div class="form-item-input">
                <input type="text" name="sourceStaNo" value="">
            </div>
        </div>
        <!-- 目标站 -->
        <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">
            <div class="form-item-label">
                <span>源库位:</span>
            </div>
            <div class="form-item-input">
                <input type="text" name="sourceLocNo" value="">
            </div>
        </div>
        <!-- 目标库位 -->
        <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>
    </form>
</div>
</div>
</body>
</html>
<script>
    var tData = []
    var tData1 = []
    var tData2 = []
    var tData3 = []
    function getCodeData() {
        $.ajax({
            url: baseUrl + '/console/barcode/output/site',
            method: 'GET',
            success: function (res) {
                if (res.code === 200) {
                    tData = eval(res.data);
                    if (tData.length <= 5) {
                        tData1 = tData
                    } else if (tData.length <= 10) {
                        tData1 = tData.slice(0, 5)
                        tData.splice(0, 5)
                        tData2 = tData
                    } else if (tData.length <= 15) {
                        tData1 = tData.slice(0, 5)
                        tData2 = tData.slice(6, 10)
                        tData.splice(0, 10)
                        tData3 = tData
                    } else {
                        tData = tData.slice(-15)
                        tData1 = tData.slice(-15)
                        tData2 = tData.slice(-10)
                        tData3 = tData.slice(-5)
                    }
                }
            }
        })
    }
    setInterval(function () {
        getCodeData();
        renderBarCode();
    }, 1000)
    function renderBarCode() {
        for (var i = 0; i < tData1.length; i++) {
            var str1 = '<li><span>' + tData1[i].barcode + '</span><span class="right">' + tData1[i].time + '</span></li>'
            $('#barcode1').append(str1)
        }
        for (var j = 0; j < tData2.length; j++) {
            var str2 = '<li><span>' + tData2[j].barcode + '</span><span class="right">' + tData2[j].time + '</span></li>'
            $('#barcode2').append(str2)
        }
        for (var k = 0; k < tData3.length; k++) {
            var str3 = '<li><span>' + tData3[k].barcode + '</span><span class="right">' + tData3[k].time + '</span></li>'
            $('#barcode3').append(str3)
        }
    }
</script>
<script type="text/javascript">
    // 弹窗站点信息
    $('.site').on('click', function () {
        var id = this.id.split("-")[1];
        $("#siteWindow").attr("style", "display:block;");//显示div
        $("#crnWindow").attr("style", "display:none;");
        $(".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');
                    }
                }
            }
        })
    });
    // 堆垛机信息
    $('.machine').on('click', function () {
        var id = this.id.split("-")[1];
        $("#crnWindow").attr('style', 'display:block;');
        $("#siteWindow").attr("style", "display:none;");
        $('.detailed').empty();
        $('.detailed').append(id + '号堆垛机');
        $.ajax({
            url: baseUrl + "/console/crn/detail",
            headers: {
                'token': localStorage.getItem('token')
            },
            data: {
                crnNo: id
            },
            method: 'post',
            success: 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) {
                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() + 13) / 2;
                        if (crns[i].bay < 0) {
                            crns[i].bay = 0
                        }
                        crnEl.animate({left: (crns[i].bay * unit) + '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>
src/main/webapp/views/console.html
@@ -1,786 +1,344 @@
<!DOCTYPE html>
<html>
<html lang="en">
<head>
    <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">-->
    <link rel="stylesheet" href="../static/css/animate.min.css">
    <meta charset="UTF-8">
    <title>自动仓库wcs系统</title>
    <link rel="stylesheet" href="../static/css/render.css">
    <script src="../static/js/jquery/jquery-3.3.1.min.js"></script>
    <script src="../static/js/layer/layer.js"></script>
    <script type="text/javascript" src="../static/js/common.js"></script>
    <!--地图json-->
    <script src="../static/js/console.map.js"></script>
    <script src="../static/js/console.js"></script>
    <script src="../static/js/common.js"></script>
</head>
<body>
<div id="root">
    <div class="head">
        <div class="head-left">
            <h1>自动仓库WCS监控图</h1>
            <h6>AUTOMATIC WAREHOUSE WCS MONITORING DIAGRAM</h6>
    <div id="main">
        <div class="head">
            <div class="head-left">
                <h1>自动仓库WCS监控图</h1>
                <h6>AUTOMATIC WAREHOUSE WCS MONITORING DIAGRAM</h6>
            </div>
            <div class="head-right">
                <img src="../static/images/zy-logo.png" alt="中扬" height="44" width="80">
            </div>
        </div>
        <div class="head-right">
            <img src="../static/images/zy-logo.png" alt="中扬" height="44" width="80">
        <!-- 货架 + 堆垛机 + 入库站点 -->
        <div class="main-part">
        </div>
        <div id="body">
            <!-- 总开关 -->
            <div class="system-state">
                <div class="body-head">总开关</div>
                <div class="switch">
                    <div id="system-icon" class="system-icon-open" onclick="systemSwitch()"></div>
                    <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>
            </div>
            <div class="line-status">
                <div class="body-head">输送线状态</div>
                <div class="state states">
                    <span>运输线总数</span>
                    <span id="line-total" class="line-ss"></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>
            <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">
                    </div>
                </div>
                <div class="tablebox">
                    <div class="table-head">
                        <li><span>条码名称</span><span class="right">扫码时间</span></li>
                    </div>
                    <div id="barcode2" class="table-body">
                    </div>
                </div>
                <div class="tablebox">
                    <div class="table-head">
                        <li><span>条码名称</span><span class="right">扫码时间</span></li>
                    </div>
                    <div id="barcode3" class="table-body">
                    </div>
                </div>
            </div>
        </div>
        <!-- 堆垛机弹窗 -->
        <div id="crnWindow" style="display: none;" class="animate__animated animate__fadeIn">
            <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" value="">
                    </div>
                </div>
                <!-- 工作号 -->
                <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 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 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">
                    <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">
                    <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">
                    <div class="form-item-label">
                        <span>源库位:</span>
                    </div>
                    <div class="form-item-input">
                        <input type="text" name="sourceLocNo" value="">
                    </div>
                </div>
                <!-- 目标库位 -->
                <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">
                    <div class="form-item-label">
                        <span>堆垛机状态:</span>
                    </div>
                    <div class="form-item-input">
                        <input type="text" name="crnStatus" value="">
                    </div>
                </div>
                <!-- 异常 -->
                <div class="form-item">
                    <div class="form-item-label">
                        <span>异常:</span>
                    </div>
                    <div class="form-item-input">
                        <input type="text" name="error" value="">
                    </div>
                </div>
            </form>
        </div>
        <!-- 输送设备弹窗 -->
        <div id="siteWindow" style="display: none;" class="animate__animated animate__fadeIn">
            <!-- 表头 -->
            <div id="siteWindow-head">
                <div class='detailed'></div>
                <button></button>
            </div>
            <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">
                    <div class="form-item-label">
                        <span>工作号:</span>
                    </div>
                    <div class="form-item-input">
                        <input type="text" name="workNo" value="">
                    </div>
                </div>
                <!-- 工作状态 -->
                <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-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 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">
                    <div class="form-item-label">
                        <span>源站:</span>
                    </div>
                    <div class="form-item-input">
                        <input type="text" name="sourceStaNo" value="">
                    </div>
                </div>
                <!-- 目标站 -->
                <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">
                    <div class="form-item-label">
                        <span>源库位:</span>
                    </div>
                    <div class="form-item-input">
                        <input type="text" name="sourceLocNo" value="">
                    </div>
                </div>
                <!-- 目标库位 -->
                <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>
            </form>
        </div>
    </div>
    <!-- 货架 + 堆垛机 + 入库站点 -->
    <div class="main-part">
        <!-- 第一组 -->
        <div class="lane">
            <!-- 货架 -->
            <div class="stock-group">
                <button class="item" style="margin-left: 82px">60</button>
                <button class="item">58</button>
                <button class="item">56</button>
                <button class="item">54</button>
                <button class="item">52</button>
                <button class="item">50</button>
                <button class="item">48</button>
                <button class="item">46</button>
                <button class="item">44</button>
                <button class="item">42</button>
                <button class="item">40</button>
                <button class="item">38</button>
                <button class="item">36</button>
                <button class="item">34</button>
                <button class="item">32</button>
                <button class="item">30</button>
                <button class="item">28</button>
                <button class="item">26</button>
                <button class="item">24</button>
                <button class="item">22</button>
                <button class="item">20</button>
                <button class="item">18</button>
                <button class="item">16</button>
                <button class="item">14</button>
                <button class="item">12</button>
                <button class="item">10</button>
                <button class="item">8</button>
                <button class="item">6</button>
                <button class="item">4</button>
                <button class="item">2</button>
            </div>
            <div class="stock-group">
                <button class="item" style="margin-left: 82px">60</button>
                <button class="item">58</button>
                <button class="item">56</button>
                <button class="item">54</button>
                <button class="item">52</button>
                <button class="item">50</button>
                <button class="item">48</button>
                <button class="item">46</button>
                <button class="item">44</button>
                <button class="item">42</button>
                <button class="item">40</button>
                <button class="item">38</button>
                <button class="item">36</button>
                <button class="item">34</button>
                <button class="item">32</button>
                <button class="item">30</button>
                <button class="item">28</button>
                <button class="item">26</button>
                <button class="item">24</button>
                <button class="item">22</button>
                <button class="item">20</button>
                <button class="item">18</button>
                <button class="item">16</button>
                <button class="item">14</button>
                <button class="item">12</button>
                <button class="item">10</button>
                <button class="item">8</button>
                <button class="item">6</button>
                <button class="item">4</button>
                <button class="item">2</button>
                <div id="site-101" class="site" style="">101</div>
            </div>
            <!-- 堆垛机 -->
            <div class="crn">
                <hr class="pathway">
                <div id="crn-1" class="machine"></div>
            </div>
            <!-- 货架 -->
            <div class="stock-group">
                <button class="item" style="margin-left: 82px">60</button>
                <button class="item">58</button>
                <button class="item">56</button>
                <button class="item">54</button>
                <button class="item">52</button>
                <button class="item">50</button>
                <button class="item">48</button>
                <button class="item">46</button>
                <button class="item">44</button>
                <button class="item">42</button>
                <button class="item">40</button>
                <button class="item">38</button>
                <button class="item">36</button>
                <button class="item">34</button>
                <button class="item">32</button>
                <button class="item">30</button>
                <button class="item">28</button>
                <button class="item">26</button>
                <button class="item">24</button>
                <button class="item">22</button>
                <button class="item">20</button>
                <button class="item">18</button>
                <button class="item">16</button>
                <button class="item">14</button>
                <button class="item">12</button>
                <button class="item">10</button>
                <button class="item">8</button>
                <button class="item">6</button>
                <button class="item">4</button>
                <button class="item">2</button>
                <div id="site-106" class="site" style="">106</div>
            </div>
            <div class="stock-group">
                <button class="item" style="margin-left: 82px">60</button>
                <button class="item">58</button>
                <button class="item">56</button>
                <button class="item">54</button>
                <button class="item">52</button>
                <button class="item">50</button>
                <button class="item">48</button>
                <button class="item">46</button>
                <button class="item">44</button>
                <button class="item">42</button>
                <button class="item">40</button>
                <button class="item">38</button>
                <button class="item">36</button>
                <button class="item">34</button>
                <button class="item">32</button>
                <button class="item">30</button>
                <button class="item">28</button>
                <button class="item">26</button>
                <button class="item">24</button>
                <button class="item">22</button>
                <button class="item">20</button>
                <button class="item">18</button>
                <button class="item">16</button>
                <button class="item">14</button>
                <button class="item">12</button>
                <button class="item">10</button>
                <button class="item">8</button>
                <button class="item">6</button>
                <button class="item">4</button>
                <button class="item">2</button>
            </div>
        </div>
        <!-- 第二组 -->
        <div class="lane">
            <span class="row-no"></span>
            <!-- 货架 -->
            <div class="stock-group">
                <button class="item" style="margin-left: 193px">52</button>
                <button class="item">50</button>
                <button class="item">48</button>
                <button class="item">46</button>
                <button class="item">44</button>
                <button class="item">42</button>
                <button class="item">40</button>
                <button class="item">38</button>
                <button class="item">36</button>
                <button class="item">34</button>
                <button class="item">32</button>
                <button class="item">30</button>
                <button class="item">28</button>
                <button class="item">26</button>
                <button class="item">24</button>
                <button class="item">22</button>
                <button class="item">20</button>
                <button class="item">18</button>
                <button class="item">16</button>
                <button class="item">14</button>
                <button class="item">12</button>
                <button class="item">10</button>
                <button class="item">8</button>
                <button class="item">6</button>
                <button class="item">4</button>
                <button class="item">2</button>
            </div>
            <div class="stock-group">
                <button class="item" style="margin-left: 193px">52</button>
                <button class="item">50</button>
                <button class="item">48</button>
                <button class="item">46</button>
                <button class="item">44</button>
                <button class="item">42</button>
                <button class="item">40</button>
                <button class="item">38</button>
                <button class="item">36</button>
                <button class="item">34</button>
                <button class="item">32</button>
                <button class="item">30</button>
                <button class="item">28</button>
                <button class="item">26</button>
                <button class="item">24</button>
                <button class="item">22</button>
                <button class="item">20</button>
                <button class="item">18</button>
                <button class="item">16</button>
                <button class="item">14</button>
                <button class="item">12</button>
                <button class="item">10</button>
                <button class="item">8</button>
                <button class="item">6</button>
                <button class="item">4</button>
                <button class="item">2</button>
                <div id="site-113" class="site" style="">113</div>
            </div>
            <!-- 堆垛机 -->
            <div class="crn" style="margin-left: 108px">
                <hr class="pathway">
                <div id="crn-2" class="machine"></div>
            </div>
            <!-- 货架 -->
            <div class="stock-group">
                <button class="item" style="margin-left: 193px">52</button>
                <button class="item">50</button>
                <button class="item">48</button>
                <button class="item">46</button>
                <button class="item">44</button>
                <button class="item">42</button>
                <button class="item">40</button>
                <button class="item">38</button>
                <button class="item">36</button>
                <button class="item">34</button>
                <button class="item">32</button>
                <button class="item">30</button>
                <button class="item">28</button>
                <button class="item">26</button>
                <button class="item">24</button>
                <button class="item">22</button>
                <button class="item">20</button>
                <button class="item">18</button>
                <button class="item">16</button>
                <button class="item">14</button>
                <button class="item">12</button>
                <button class="item">10</button>
                <button class="item">8</button>
                <button class="item">6</button>
                <button class="item">4</button>
                <button class="item">2</button>
                <div id="site-120" class="site" style="">120</div>
            </div>
            <div class="stock-group">
                <button class="item" style="margin-left: 193px">52</button>
                <button class="item">50</button>
                <button class="item">48</button>
                <button class="item">46</button>
                <button class="item">44</button>
                <button class="item">42</button>
                <button class="item">40</button>
                <button class="item">38</button>
                <button class="item">36</button>
                <button class="item">34</button>
                <button class="item">32</button>
                <button class="item">30</button>
                <button class="item">28</button>
                <button class="item">26</button>
                <button class="item">24</button>
                <button class="item">22</button>
                <button class="item">20</button>
                <button class="item">18</button>
                <button class="item">16</button>
                <button class="item">14</button>
                <button class="item">12</button>
                <button class="item">10</button>
                <button class="item">8</button>
                <button class="item">6</button>
                <button class="item">4</button>
                <button class="item">2</button>
            </div>
        </div>
        <!--第三组-->
        <div class="lane">
            <span class="row-no"></span>
            <!-- 货架 -->
            <div class="stock-group">
                <button class="item" style="margin-left: 193px">52</button>
                <button class="item">50</button>
                <button class="item">48</button>
                <button class="item">46</button>
                <button class="item">44</button>
                <button class="item">42</button>
                <button class="item">40</button>
                <button class="item">38</button>
                <button class="item">36</button>
                <button class="item">34</button>
                <button class="item">32</button>
                <button class="item">30</button>
                <button class="item">28</button>
                <button class="item">26</button>
                <button class="item">24</button>
                <button class="item">22</button>
                <button class="item">20</button>
                <button class="item">18</button>
                <button class="item">16</button>
                <button class="item">14</button>
                <button class="item">12</button>
                <button class="item">10</button>
                <button class="item">8</button>
                <button class="item">6</button>
                <button class="item">4</button>
                <button class="item">2</button>
            </div>
            <div class="stock-group">
                <button class="item" style="margin-left: 193px">52</button>
                <button class="item">50</button>
                <button class="item">48</button>
                <button class="item">46</button>
                <button class="item">44</button>
                <button class="item">42</button>
                <button class="item">40</button>
                <button class="item">38</button>
                <button class="item">36</button>
                <button class="item">34</button>
                <button class="item">32</button>
                <button class="item">30</button>
                <button class="item">28</button>
                <button class="item">26</button>
                <button class="item">24</button>
                <button class="item">22</button>
                <button class="item">20</button>
                <button class="item">18</button>
                <button class="item">16</button>
                <button class="item">14</button>
                <button class="item">12</button>
                <button class="item">10</button>
                <button class="item">8</button>
                <button class="item">6</button>
                <button class="item">4</button>
                <button class="item">2</button>
                <div id="site-127" class="site" style="">127</div>
            </div>
            <!-- 堆垛机 -->
            <div class="crn" style="margin-left: 108px">
                <hr class="pathway">
                <div id="crn-3" class="machine"></div>
            </div>
            <!-- 货架 -->
            <div class="stock-group">
                <button class="item" style="margin-left: 193px">52</button>
                <button class="item">50</button>
                <button class="item">48</button>
                <button class="item">46</button>
                <button class="item">44</button>
                <button class="item">42</button>
                <button class="item">40</button>
                <button class="item">38</button>
                <button class="item">36</button>
                <button class="item">34</button>
                <button class="item">32</button>
                <button class="item">30</button>
                <button class="item">28</button>
                <button class="item">26</button>
                <button class="item">24</button>
                <button class="item">22</button>
                <button class="item">20</button>
                <button class="item">18</button>
                <button class="item">16</button>
                <button class="item">14</button>
                <button class="item">12</button>
                <button class="item">10</button>
                <button class="item">8</button>
                <button class="item">6</button>
                <button class="item">4</button>
                <button class="item">2</button>
                <div id="site-133" class="site" style="">133</div>
            </div>
            <div class="stock-group">
                <button class="item" style="margin-left: 193px">52</button>
                <button class="item">50</button>
                <button class="item">48</button>
                <button class="item">46</button>
                <button class="item">44</button>
                <button class="item">42</button>
                <button class="item">40</button>
                <button class="item">38</button>
                <button class="item">36</button>
                <button class="item">34</button>
                <button class="item">32</button>
                <button class="item">30</button>
                <button class="item">28</button>
                <button class="item">26</button>
                <button class="item">24</button>
                <button class="item">22</button>
                <button class="item">20</button>
                <button class="item">18</button>
                <button class="item">16</button>
                <button class="item">14</button>
                <button class="item">12</button>
                <button class="item">10</button>
                <button class="item">8</button>
                <button class="item">6</button>
                <button class="item">4</button>
                <button class="item">2</button>
            </div>
        </div>
    </div>
    <!--第1列(宽度 70px) -->
    <div class="site-row site-row-1">
        <div class="site-k" style="height:39px;width:70px;"></div>
        <div id="site-102" class="site" style="height: 18px;line-height: 18px;">102</div>
        <div id="site-107" class="site" style="height: 18px;line-height: 18px;margin-top: 20px">107</div>
        <div id="site-114" class="site" style="height: 18px;line-height: 18px;margin-top: 68px">114</div>
        <div id="site-121" class="site" style="height: 18px;line-height: 18px;margin-top: 20px">121</div>
        <div id="site-128" class="site" style="height: 18px;line-height: 18px;margin-top: 68px">128</div>
        <div id="site-134" class="site" style="height: 18px;line-height: 18px;margin-top: 20px">134</div>
    </div>
    <div class="site-row site-row-2">
        <div class="site-k" style="height:39px;width:70px;"></div>
        <div id="site-103" class="site" style="height: 18px;line-height: 18px;">103</div>
        <div id="site-105" class="site" style="height: 18px;line-height: 18px">105</div>
        <div id="site-108" class="site" style="height: 18px;line-height: 18px">108</div>
        <div id="site-111" class="site" style="height: 66px;line-height: 66px">111</div>
        <div id="site-115" class="site" style="height: 18px;line-height: 18px">115</div>
        <div id="site-118" class="site" style="height: 18px;line-height: 18px">118</div>
        <div id="site-122" class="site" style="height: 18px;line-height: 18px">122</div>
        <div id="site-125" class="site" style="height: 66px;line-height: 66px">125</div>
        <div id="site-129" class="site" style="height: 18px;line-height: 18px">129</div>
        <div id="site-132" class="site" style="height: 18px;line-height: 18px">132</div>
        <div id="site-135" class="site" style="height: 18px;line-height: 18px">135</div>
    </div>
    <div class="site-row site-row-3">
        <div class="site-k" style="height:39px;width:70px;"></div>
        <div id="site-104" class="site" style="height: 18px;line-height: 18px;width:162px;">104</div>
        <div id="site-109" class="site" style="height: 18px;line-height: 18px; margin-top: 20px">109</div>
        <div id="site-112" class="site" style="height: 66px;line-height: 68px">112</div>
        <div id="site-116" class="site" style="height: 18px;line-height: 18px;">116</div>
        <div id="site-119" class="site" style="height: 18px;line-height: 18px">119</div>
        <div id="site-123" class="site" style="height: 18px;line-height: 18px">123</div>
        <div id="site-126" class="site" style="height: 66px;line-height: 68px">126</div>
        <div id="site-130" class="site" style="height: 18px;line-height: 18px">130</div>
        <div id="site-136" class="site" style="height: 18px;line-height: 18px;width:162px; margin-top: 20px">136</div>
    </div>
    <div class="site-row site-row-4">
        <div id="site-110" class="site" style="height: 18px;line-height: 18px;">110</div>
        <div id="site-117" class="site" style="height: 18px;line-height: 18px; margin-top: 68px">117</div>
        <div id="site-124" class="site" style="height: 18px;line-height: 18px; margin-top: 20px">124</div>
        <div id="site-131" class="site" style="height: 18px;line-height: 18px; margin-top: 68px">131</div>
    </div>
</div>
<!--底部-->
<div id="body">
    <!-- 总开关 -->
    <div class="system-state">
        <div class="body-head">总开关</div>
        <div class="switch">
            <div id="system-icon" class="system-icon-open" onclick="systemSwitch()"></div>
            <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>
    </div>
    <div class="line-status">
        <div class="body-head">输送线状态</div>
        <div class="state states">
            <span>运输线总数</span>
            <span class="line-ss">58</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>
    <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">
            </div>
        </div>
        <div class="tablebox">
            <div class="table-head">
                <li><span>条码名称</span><span class="right">扫码时间</span></li>
            </div>
            <div id="barcode2" class="table-body">
            </div>
        </div>
        <div class="tablebox">
            <div class="table-head">
                <li><span>条码名称</span><span class="right">扫码时间</span></li>
            </div>
            <div id="barcode3" class="table-body">
            </div>
        </div>
    </div>
</div>
<!-- 堆垛机弹窗 -->
<div id="crnWindow" style="display: none;" class="animate__animated animate__fadeIn">
    <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" value="">
            </div>
        </div>
        <!-- 工作号 -->
        <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 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 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">
            <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">
            <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">
            <div class="form-item-label">
                <span>源库位:</span>
            </div>
            <div class="form-item-input">
                <input type="text" name="sourceLocNo" value="">
            </div>
        </div>
        <!-- 目标库位 -->
        <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">
            <div class="form-item-label">
                <span>堆垛机状态:</span>
            </div>
            <div class="form-item-input">
                <input type="text" name="crnStatus" value="">
            </div>
        </div>
        <!-- 异常 -->
        <div class="form-item">
            <div class="form-item-label">
                <span>异常:</span>
            </div>
            <div class="form-item-input">
                <input type="text" name="error" value="">
            </div>
        </div>
    </form>
</div>
<!-- 输送设备弹窗 -->
<div id="siteWindow" style="display: none;" class="animate__animated animate__fadeIn">
    <!-- 表头 -->
    <div id="siteWindow-head">
        <div class='detailed'></div>
        <button></button>
    </div>
    <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">
            <div class="form-item-label">
                <span>工作号:</span>
            </div>
            <div class="form-item-input">
                <input type="text" name="workNo" value="">
            </div>
        </div>
        <!-- 工作状态 -->
        <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-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 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">
            <div class="form-item-label">
                <span>源站:</span>
            </div>
            <div class="form-item-input">
                <input type="text" name="sourceStaNo" value="">
            </div>
        </div>
        <!-- 目标站 -->
        <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">
            <div class="form-item-label">
                <span>源库位:</span>
            </div>
            <div class="form-item-input">
                <input type="text" name="sourceLocNo" value="">
            </div>
        </div>
        <!-- 目标库位 -->
        <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>
    </form>
</div>
</div>
</body>
</html>
<script>
    var tData = []
    var tData1 = []
    var tData2 = []
    var tData3 = []
    getMap();
</script>
<script>
    setInterval(function () {
        getCodeData();
        renderBarCode();
    }, 1000)
    var tData = [],tData1 = [],tData2 = [],tData3 = [];
    function getCodeData() {
        $.ajax({
            url: baseUrl + '/console/barcode/output/site',
@@ -804,19 +362,11 @@
                        tData1 = tData.slice(-15)
                        tData2 = tData.slice(-10)
                        tData3 = tData.slice(-5)
                    }
                }
            }
        })
    }
    setInterval(function () {
        getCodeData();
        renderBarCode();
    }, 1000)
    function renderBarCode() {
        for (var i = 0; i < tData1.length; i++) {
            var str1 = '<li><span>' + tData1[i].barcode + '</span><span class="right">' + tData1[i].time + '</span></li>'
@@ -1036,16 +586,41 @@
            headers: {'token': localStorage.getItem('token')},
            method: 'POST',
            success: function (res) {
                // console.log(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() + 13) / 2;
                        var unit = 0;//($('.item').eq(0).width() + 13) / 2;
                        if (crns[i].bay < 0) {
                            crns[i].bay = 0
                            crns[i].bay = 1
                        }
                        crnEl.animate({left: (crns[i].bay * unit) + 'px'}, 1000);
                        // crnEl.animate({left: (crns[i].bay * unit) + 'px'}, 1000);
                        // crns[i].bay = 1;
                        var offSet = 0;
                        switch (i) {
                            case 0:
                                unit = 34;
                                offSet = 337;
                                break;
                            case 1:
                                unit = 68;
                                offSet = 337;
                                break;
                            case 2:
                                unit = 17;
                                offSet = 337;
                                break;
                        }
                        if(crns[i].bay === 1){
                            crnEl.animate({left: offSet + 'px'}, 1000);
                        } else {
                            crnEl.animate({left: (offSet - unit + (crns[i].bay * unit)) + 'px'}, 1000);
                        }
                    }
                } else if (res.code === 403) {
                    parent.location.href = baseUrl + "/login";
@@ -1102,6 +677,7 @@
    // 堆垛机偏移动画
    function crnAnimate(id, leftVal) {
        // console.log(crn1Position)
        switch (id) {
            case 1:
                $("#crn-1").animate({left: leftVal + 'px'}, 1000);
@@ -1127,74 +703,6 @@
                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) {
src/main/webapp/views/index.html
@@ -14,7 +14,7 @@
<div class="sidebar">
    <div class="nav">
        <ul class="cl-effect-4">
            <li><a id="render" onclick="nav(this.id)" class="nav-select" href="#">主控图</a></li>
            <li><a id="console" onclick="nav(this.id)" class="nav-select" href="#">主控图</a></li>
            <li><a id="pipeline" onclick="nav(this.id)" class="nav-unselect" href="#">输送设备</a></li>
            <li><a id="crn" onclick="nav(this.id)" class="nav-unselect" href="#">堆垛机</a></li>
        </ul>
@@ -24,7 +24,7 @@
<!--</div>-->
<!-- 主体内容 -->
<iframe id="content" src="render.html"></iframe>
<iframe id="content" src="console.html"></iframe>
<footer class="footer">
    Copyright © 2015 All Rights Reserved. <a href="http://www.zoneyung.com" target="_blank">浙江中扬立库技术有限公司</a>  保留所有权利
</footer>
src/main/webapp/views/render.html
File was deleted
src/main/webapp/views/render.js
File was deleted
src/main/webapp/views/test.html
File was deleted