Junjie
2023-06-27 c2b0be1a368a88e4adb6dda12d0aa5d3bb0df838
src/main/webapp/views/console.html
@@ -5,6 +5,7 @@
    <title>WCS控制中心</title>
    <link rel="stylesheet" href="../static/css/console.css">
    <link rel="stylesheet" href="../static/css/animate.min.css">
    <link rel="stylesheet" href="../static/css/toggle-switch.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>
@@ -17,16 +18,20 @@
    </header>
    <main class="main">
        <!--楼层按钮-->
            <button class="floorBtn  btn-16" onclick="changFloor(1)" style="margin-top: 150px">1F</button>
            <button class="floorBtn  btn-16" onclick="changFloor(2)" style="margin-top: 200px">2F</button>
            <button class="floorBtn  btn-16" onclick="changFloor(3)" style="margin-top: 250px">3F</button>
            <button class="floorBtn  btn-16" onclick="testMove()" style="margin-top: 250px">测试移动小车</button>
            <div id="floorBtnBox">
                <button class="floorBtn  btn-16" onclick="changFloor(this,1)" style="margin-top: 150px">1F</button>
                <button class="floorBtn  btn-16" onclick="changFloor(this,2)" style="margin-top: 200px">2F</button>
                <button class="floorBtn  btn-16" onclick="changFloor(this,3)" style="margin-top: 250px">3F</button>
                <button class="floorBtn  btn-16" onclick="changFloor(this,4)" style="margin-top: 300px">4F</button>
            </div>
            <button class="floorBtn  btn-16" onclick="testMove()" style="margin-top: 350px;font-size: 14px;">测试移动车</button>
            <button class="floorBtn  btn-16" onclick="resetMap()" style="margin-top: 400px;font-size: 14px;">重置地图</button>
        <!-- 货架 + 堆垛机 + 入库站点 -->
        <div class="main-part">
            <!-- 第一组 -->
            <div class="lane" id="mapDataId" style="margin-bottom: 280px">
                <div class="sxcar" id="sxcar-1"></div>
            </div>
        </div>
    </main>
@@ -35,35 +40,51 @@
        <div class="system-state">
            <div class="body-head">总开关</div>
            <div class="switch">
                <div id="system-icon" class="system-icon-open" onclick="systemSwitch()"></div>
                <label id="system-toggle" class="toggle-switch" style="margin-left: 20px;">
                    <input id="system-toggle-checked" checked="checked" type="checkbox">
                    <div class="button">
                        <div class="light"></div>
                        <div class="dots"></div>
                        <div class="characters"></div>
                        <div class="shine"></div>
                        <div class="shadow"></div>
                    </div>
                </label>
                <div class="switch_r">
                    <p>系统状态</p>
                    <p id="system-run-desc">系统运行中</p>
                </div>
            </div>
        </div>
        <!-- 堆垛机状态 -->
        <div class="machine-status">
            <div class="body-head">堆垛机状态</div>
            <div class="state">
                <span>堆垛机 1</span>
                <span class="state-ss machine-put-flag   ">入库</span>
        <!-- 四向穿梭车状态 -->
        <div class="line-status">
            <div class="body-head">穿梭车状态</div>
            <div id="shuttle-status-box">
            </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>
                <span class="shuttle-idle">空闲</span>
                <span class="shuttle-working">作业中</span>
                <span class="shuttle-waiting">等待确认</span>
                <span class="shuttle-charging">充电中</span>
                <span class="shuttle-charging-waiting">充电任务等待确认</span>
                <span class="shuttle-fixing">故障修复中</span>
                <span class="shuttle-offline">离线</span>
            </div>
        </div>
        <!-- 提升机状态 -->
        <div class="line-status">
            <div class="body-head">提升机状态</div>
            <div id="lift-status-box">
            </div>
            <div class="button"><span>所有状态</span></div>
            <div class="button item-group">
                <span class="lift-idle">空闲</span>
                <span class="lift-working">作业中</span>
                <span class="lift-waiting">等待确认</span>
                <span class="lift-offline">离线</span>
            </div>
        </div>
        <!-- 输送线状态 -->
@@ -98,14 +119,6 @@
                    <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>
@@ -340,6 +353,7 @@
    var tData2 = []
    var tData3 = []
    var mapData = [] //地图数据
    var currentLev = 1;//当前地图楼层
    function getCodeData(){
        $.ajax({
            url:baseUrl +'/console/barcode/output/site',
@@ -395,8 +409,101 @@
    $(function (){
        initMap()
        initMap(1)
    })
    setInterval(() => {
        getShuttleStateInfo()
        getLiftStateInfo()
    },1000)
    // 提升机信息表获取
    function getLiftStateInfo() {
        $.ajax({
            url: baseUrl+ "/lift/table/lift/state",
            headers: {'token': localStorage.getItem('token')},
            method: 'POST',
            success: function (res) {
                $("#lift-status-box").empty()
                res.data.forEach((item,index) => {
                    let liftStatusClass = "lift-idle"
                    switch (item.status) {
                        case 1://空闲
                            liftStatusClass = "lift-idle";
                            break
                        case 2://作业中
                            liftStatusClass = "lift-working";
                            break
                        case 3://等待确认
                            liftStatusClass = "lift-waiting";
                            break
                        case 4://离线
                            liftStatusClass = "lift-offline";
                            break
                        default:
                            liftStatusClass = "lift-idle"
                    }
                    let liftStatus = '<div class="state states">' +
                        '<span>提升机 ' + item.liftNo + '</span>' +
                        '<span class="state-ss ' + liftStatusClass + '">' + item.protocolStatus$ + '</span></div>';
                    $("#lift-status-box").append(liftStatus)
                })
            }
        });
    }
    // 四向穿梭车信息表获取
    function getShuttleStateInfo() {
        $.ajax({
            url: baseUrl+ "/shuttle/table/shuttle/state",
            headers: {'token': localStorage.getItem('token')},
            method: 'POST',
            success: function (res) {
                $("#shuttle-status-box").empty()
                res.data.forEach((item,index) => {
                    let shuttleStatusClass = "shuttle-idle"
                    switch (item.status) {
                        case 1://空闲
                            shuttleStatusClass = "shuttle-idle";
                            break
                        case 2://作业中
                            shuttleStatusClass = "shuttle-working";
                            break
                        case 3://等待确认
                            shuttleStatusClass = "shuttle-waiting";
                            break
                        case 4://充电中
                            shuttleStatusClass = "shuttle-charging";
                            break
                        case 5://充电任务等待确认
                            shuttleStatusClass = "shuttle-charging-waiting";
                            break
                        case 6://故障修复中
                            shuttleStatusClass = "shuttle-fixing";
                            break
                        case 7://离线
                            shuttleStatusClass = "shuttle-offline";
                            break
                        default:
                            shuttleStatusClass = "shuttle-offline"
                    }
                    let shuttleStatus = '<div class="state">' +
                        '<span>四向穿梭车 ' + item.shuttleNo + '</span>' +
                        '<span class="state-ss ' + shuttleStatusClass + '">' + item.status$ + '</span></div>';
                    $("#shuttle-status-box").append(shuttleStatus)
                    if(item.locNoLev != currentLev){
                        //四向穿梭车楼层和当前地图楼层不一致,删除该车辆
                        $("#sxcar-" + item.shuttleNo).remove()
                    }else {
                        //移动四向穿梭车
                        moveCar(item.shuttleNo,item.locNoX,item.locNoY)
                    }
                })
            }
        });
    }
    //计算四向穿梭车图标位置
    function getCarPosition(x,y) {
@@ -415,14 +522,36 @@
    }
    //初始化地图
    function initMap() {
        //母轨道第一次索引,用于定位小车
        let firstMotherIndex = [0,0];
    function initMap(lev) {
        getMap(lev)
        $.ajax({
            url: baseUrl+ "/shuttle/table/shuttle/state",
            headers: {'token': localStorage.getItem('token')},
            method: 'POST',
            success: function (res) {
                res.data.forEach((item,index) => {
                    if(lev == item.locNoLev){
                        let carBox = '<div class="sxcar" id="sxcar-' + item.shuttleNo + '"></div>'
                        $("#mapDataId").append(carBox)
                    }
                })
            }
        });
    }
    //获取地图数据
    function getMap(lev) {
        //母轨道第一次索引,用于定位小车
        let firstMotherIndex = [0,0];
        $("#mapDataId").empty()
        $.ajax({
            type:"get",
            url: baseUrl + "/static/js/map.json",
            success: (data) => {
            // url: baseUrl + "/static/js/map_" + lev + ".json",
            url: baseUrl + "/console/map/" + lev + "/auth",
            headers: {'token': localStorage.getItem('token')},
            success: (res) => {
                let data = res.data
                mapData = data
                let content = ""
                data.forEach((rowData,index) => {
@@ -434,6 +563,9 @@
                            if(!(idx == 0 || rowData.length - 1 == idx)){
                                let col;
                                switch (colData.value){
                                    case -999:
                                        col = '<button class="item" style="background:#f83333;color: #fff;">' + idx + '</button>';
                                        break;
                                    case -1:
                                        col = '<button class="item" style="visibility: hidden">' + idx + '</button>';
                                        break;
@@ -447,8 +579,12 @@
                                        break;
                                    case 4:
                                        //站点
                                        let data = colData.data
                                        var data = colData.data;
                                        col = '<div id="site-' + data + '" class="site">' + data + '(9991)</div>';
                                        break;
                                    case 5:
                                        //充电桩
                                        col = '<button class="item" style="font-size: 24px">&#9889;</button>';
                                        break;
                                    default:
                                        col = '<button class="item">' + idx + '</button>';
@@ -466,7 +602,6 @@
                    }
                })
                moveCar(1, firstMotherIndex[0], firstMotherIndex[1]);
                $("#mapDataId").append(content)
            }
        })
@@ -582,6 +717,23 @@
            moveCar(1, item.x, item.y);
        })
    }
    /**
     * 重置地图
     */
    function resetMap() {
        $.ajax({
            url:baseUrl+"/console/map/resetMap/auth",
            headers:{
                'token': localStorage.getItem('token')
            },
            data:{},
            method:'get',
            success:function (res) {
                layer.msg('重置完成');
            }
        })
    }
    // 小车偏移动画
@@ -707,7 +859,6 @@
    })
    var crn1Position = 0;
    var crn2Position = 0;
    var crn3Position = 0;
@@ -730,6 +881,12 @@
    setInterval(function () {
        getSitesInfo();
    }, 3000);
    $("#system-toggle").on("click",(e) => {
        systemSwitch()
        e.stopPropagation();//表示阻止向父元素冒泡
        e.preventDefault();//阻止 方法阻止元素发生默认的行为(例如,当点击提交按钮时阻止对表单的提交或者a标签)。
    })
    // 系统运行开关
    function systemSwitch() {
@@ -762,11 +919,11 @@
                layer.close(index);
                if (res.code === 200){
                    if (res.data.status) {
                        $('#system-icon').attr("class", "system-icon-open");
                        $('#system-toggle-checked').attr("checked", true);
                        $('#system-run-desc').html("系统运行中...");
                        parent.systemRunning = true;
                    } else {
                        $('#system-icon').attr("class", "system-icon-close");
                        $('#system-toggle-checked').attr("checked", false);
                        $('#system-run-desc').html("系统已停止!");
                        parent.systemRunning = false;
                    }
@@ -790,11 +947,11 @@
            success: function (res) {
                if (res.code === 200){
                    if (res.data.status) {
                        $('#system-icon').attr("class", "system-icon-open");
                        $('#system-toggle-checked').attr("checked", true);
                        $('#system-run-desc').html("系统运行中...");
                        parent.systemRunning = true;
                    } else {
                        $('#system-icon').attr("class", "system-icon-close");
                        $('#system-toggle-checked').attr("checked", false);
                        $('#system-run-desc').html("系统已停止!");
                        parent.systemRunning = false;
                    }
@@ -905,102 +1062,6 @@
        });
    }
    // 堆垛机偏移动画
    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;
@@ -1030,29 +1091,14 @@
        $("#site-" + id).animate({top: targetTop+'px'}, 1000);
    }
     //楼层切换按钮
    function changFloor(x) {
        switch (x) {
            case 1:
                $('#fool1').css("display","block")
                $('#fool2').css("display","none")
                $('#fool3').css("display","none")
                return
            case 2:
                $('#fool1').css("display","none")
                $('#fool2').css("display","block")
                $('#fool3').css("display","none")
                return
            case 3:
                $('#fool1').css("display","none")
                $('#fool2').css("display","none")
                $('#fool3').css("display","block")
                return
            default:
                return;
        }
    function changFloor(e,x) {
        $("#floorBtnBox button").each((index,item) => {
            $(item).removeClass("btn-16-active")
        })
        $(e).addClass("btn-16-active")
        currentLev = x
        initMap(currentLev)
    }
</script>