Skip to content
floor.jsp 11.3 KiB
Newer Older
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:include page="../base.jsp"/>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="../static/js/jquery-1.8.1.min.js" type=text/javascript></script>
    <script src="../static/js/rem.js"></script>
    <script src="../static/js/popper.min.js"></script>
    <script src="../static/js/bootstrap.min.js"></script>
    <link rel="stylesheet" type="text/css" href="../static/css/bootstrap.min.css" />
    <link rel="stylesheet" type="text/css" href="../static/css/modal.css" />
    <link rel="stylesheet" type="text/css" href="../static/css/common.css" />
    <link rel="stylesheet" type="text/css" href="../static/css/workshop.css" />
    <link rel="stylesheet" type="text/css" href="../static/css/commonArea.css" />
    <title>上海市人民检察院</title>
</head>
<style type="text/css">
    .content {
        background: url('${ctx}/static/images/bg.jpg') no-repeat;
        width: 100%;
        min-height: 100vh;
        /*  background-position-x: center; */
        background-size: cover;
    }

    .padding_box {
        padding: 0.12rem 0.7rem
    }
</style>
<script>
    $(function () {
        // 监控点数量的数组
        var floorsCameraCounts = [];
        $.ajax({
            url : "${ctx}/qp/floor/monitors/count?area=${area}",
            async : false,
            type : "get",
            dataType : 'json',
            success : function(data){
                if(data.code==200 && data.success){
                    floorsCameraCounts = data.data;
                    for(let i=0;i<data.data.length;i++) {
                        $('.monitor').eq(i).find('span').text(data.data[i].monitorCount);
                    }
                }else{
                    console.error(data.message);
                }
            },
            error : function(error){
                console.error(error);
            }
        });
        // 摄像头位置的数组
        var upperArr = [{
            top: '0.4rem',
            left: '0.5rem'
        }, {
            top: '0.4rem',
            left: '1.8rem'
        }, {
            top: '0.2rem',
            left: '3.2rem'
        }, {
            top: '0.2rem',
            left: '4.6rem'
        }, {
            top: '0.2rem',
            left: '6rem'
        }, {
            top: '0.2rem',
            left: '7.4rem'
        }, {
            top: '0.2rem',
            left: '8.8rem'
        }, {
            top: '0.4rem',
            left: '10.2rem'
        }, {
            top: '0.4rem',
            left: '11.6rem'
        }, {
            top: '1.6rem',
            left: '0.5rem'
        }, {
            top: '1.6rem',
            left: '1.8rem'
        }, {
            top: '1.6rem',
            left: '3.2rem'
        }, {
            top: '1.6rem',
            left: '4.6rem'
        }, {
            top: '1.6rem',
            left: '6rem'
        }, {
            top: '1.6rem',
            left: '7.4rem'
        }, {
            top: '1.6rem',
            left: '8.8rem'
        }, {
            top: '1.6rem',
            left: '10.2rem'
        }, {
            top: '1.6rem',
            left: '11.6rem'
        }, {
            top: '2.5rem',
            left: '0.5rem'
        }, {
            top: '2.5rem',
            left: '1.8rem'
        }, {
            top: '2.5rem',
            left: '3.2rem'
        }, {
            top: '2.5rem',
            left: '4.6rem'
        }, {
            top: '2.5rem',
            left: '6rem'
        }, {
            top: '2.5rem',
            left: '7.4rem'
        }, {
            top: '2.5rem',
            left: '8.8rem'
        }, {
            top: '2.5rem',
            left: '10.2rem'
        }];
        var centreArr = [
            {
                top: '2.5rem',
                left: '10.2rem'
            },
            {
                top: '3.2rem',
                left: '0.5rem'
            }, {
                top: '3.2rem',
                left: '1.8rem'
            }, {
                top: '3.2rem',
                left: '3.2rem'
            }, {
                top: '3.2rem',
                left: '4.6rem'
            }, {
                top: '3.2rem',
                left: '6rem'
            }, {
                top: '3.2rem',
                left: '7.4rem'
            }, {
                top: '3.2rem',
                left: '8.8rem'
            }, {
                top: '3.2rem',
                left: '10.2rem'
            }, {
                top: '3.2rem',
                left: '11.3rem'
            },
            {
                top: '4.2rem',
                left: '2.5rem'
            }, {
                top: '4.2rem',
                left: '4rem'
            }, {
                top: '4.2rem',
                left: '7rem'
            }, {
                top: '3.2rem',
                left: '11.3rem'
            },

            {
                top: '4.9rem',
                left: '0.5rem'
            }, {
                top: '4.9rem',
                left: '1.8rem'
            }, {
                top: '4.9rem',
                left: '3.2rem'
            }, {
                top: '4.9rem',
                left: '4.6rem'
            }, {
                top: '4.9rem',
                left: '6rem'
            }, {
                top: '4.9rem',
                left: '7.4rem'
            }, {
                top: '4.9rem',
                left: '8.8rem'
            }, {
                top: '4.9rem',
                left: '10.2rem'
            }, {
                top: '4.9rem',
                left: '11.3rem'
            },
        ]
        var belowArr = [
            {
                top: '6rem',
                left: '0.5rem'
            }, {
                top: '6rem',
                left: '1.8rem'
            }, {
                top: '6rem',
                left: '6rem'
            }, {
                top: '6rem',
                left: '4.6rem'
            }, {
                top: '6rem',
                left: '6rem'
            }, {
                top: '6rem',
                left: '7.4rem'
            }, {
                top: '6rem',
                left: '8.8rem'
            }, {
                top: '6rem',
                left: '10.2rem'
            }, {
                top: '6rem',
                left: '11.5rem'
            },
            {
                top: '7rem',
                left: '1.8rem'
            }, {
                top: '7rem',
                left: '3.4rem'
            }, {
                top: '7rem',
                left: '10.2rem'
            }, {
                top: '7rem',
                left: '11.5rem'
            },
            {
                top: '7rem',
                left: '7.4rem'
            },
            {
                top: '7rem',
                left: '1.8rem'
            }, {
                top: '7rem',
                left: '3.4rem'
            }, {
                top: '7rem',
                left: '10.2rem'
            }, {
                top: '7rem',
                left: '11.5rem'
            },
            {
                top: '7rem',
                left: '7.4rem'
            }
        ];
        // 更新摄像头视图的函数
        function updateCameras(index) {
            // 计算要显示的摄像头数量
            var camerasCount = floorsCameraCounts[index].monitorCount;
            var randomCameras = queryRandomCameras(floorsCameraCounts[index].floorName);
            // 生成一个随机的起始索引
            // var randomStartIndex = Math.floor(Math.random() * (arr.length - camerasCount + 1));
            // 从arr中获取当前楼层的摄像头位置,从随机的起始索引开始
            // var selectedCameras = arr.slice(randomStartIndex, randomStartIndex + camerasCount);
            var selectedCameras = [];
            let number = parseInt(camerasCount /3);
            upperNmuber = parseInt(number + (camerasCount % 3));
            let upperList = myRandom(upperArr, upperNmuber).filter(it=>it).map(it=>it);
            let centreList = myRandom(centreArr, number).filter(it => it).map(it => it);
            let belowList = myRandom(belowArr, number).filter(it => it).map(it => it);
            selectedCameras = [...upperList,...centreList,...belowList]
            // selectedCameras = upperArr
            // 创建新的HTML内容
            var htmlTxt = '<img class="bg_img" src="../static/images/commonplan.png" alt="">';
            $.each(selectedCameras, function (i, camera) {
                htmlTxt += '<img class="camera" src="../static/images/camera.png" ' +
                    'style="top:' + camera.top + ';left:' + camera.left + '" ' +
                    'onclick="handleClick(\'' + randomCameras[i].gbId + '\')"></img>';
            });

            // 更新DOM元素
            $('.room_box').html(htmlTxt);
        }
        function queryRandomCameras(floor){
            var randomCameras = [];
            $.ajax({
                url : "${ctx}/qp/floor/monitors/list?area=${area}&floor="+floor,
                async : false,
                type : "get",
                dataType : 'json',
                success : function(data){
                    if(data.code==200 && data.success){
                        randomCameras = data.data;
                    }else{
                        console.error(data.message);
                    }
                },
                error : function(error){
                    console.error(error);
                }
            });
            return randomCameras;
        }
        function myRandom(arr, length) {
            var newArr = []; // 组成的新数组初始化
            for (var i = 0; i < length; i++) {
                var index = Math.floor(Math.random() * arr.length);
                var item = arr[index];
                newArr.push(item)
            }
            return newArr.reverse()
        }

        // 点击事件绑定到楼层标签
        $(".tab_list").on("click", "li", function () {
            var $this = $(this);
            var index = $this.index();

            // 更新显示的楼层数字
            $this.addClass('current').siblings().removeClass('current');

            // 更新监控点和摄像头

            updateCameras(index);
        });

        // 页面加载时默认选中第一个楼层
        $(".tab_list li").first().click();
    });

    // 点击摄像头时的处理函数
    function handleClick(gbId) {
        VideoPlayer.show(gbId);
    }
</script>



<body>
<div class="content">
    <div class="content_top"></div>
    <div class="flex-box padding_box">
        <div class="menu_box">
beilang's avatar
beilang committed
            <div class="menu_title_box"><a class="menu_name" href="${ctx}/qp">${area}</a></div>
            <div class="tab_list">
                <ul>
                    <c:forEach items="${floorList}" var="floor">
                        <li class="current">
                            <div class="flex-box">
                                <p>${floor}</p>
                                <p class="monitor">监控点<span>0</span></p>
                            </div>
                        </li>
                    </c:forEach>
                </ul>
            </div>
        </div>
        <div class="content_box">
            <div class="room_box">

            </div>
        </div>
    </div>
</div>
</body>

</html>