guanqb
2022-12-12 f7d2909c80fd6488eae734ad68db9f6f0bccec06
Merge branch 'master' of http://192.168.0.105:10010/r/srs-police-affairs
10 files modified
18109 ■■■■■ changed files
package-lock.json 17837 ●●●●● patch | view | raw | blame | history
package.json 4 ●●●● patch | view | raw | blame | history
src/components/map/index.vue 71 ●●●●● patch | view | raw | blame | history
src/styles/base/index.scss 11 ●●●● patch | view | raw | blame | history
src/styles/element-ui/element-ui.scss 36 ●●●● patch | view | raw | blame | history
src/styles/media/index.scss 5 ●●●●● patch | view | raw | blame | history
src/styles/scssFile.scss 5 ●●●● patch | view | raw | blame | history
src/views/home/components/leftContainer.vue 73 ●●●● patch | view | raw | blame | history
src/views/home/components/rightContainer.vue 61 ●●●●● patch | view | raw | blame | history
src/views/house/1.js 6 ●●●●● patch | view | raw | blame | history
package-lock.json
Diff too large
package.json
@@ -12,7 +12,7 @@
        "@turf/turf": "^6.5.0",
        "axios": "^0.22.0",
        "core-js": "^3.6.5",
        "echarts": "^4.9.0",
        "echarts": "^5.3.0",
        "element-resize-detector": "^1.2.4",
        "element-ui": "^2.15.6",
        "flv.js": "^1.6.2",
@@ -50,4 +50,4 @@
        "sass-loader": "^8.0.2",
        "vue-template-compiler": "^2.6.11"
    }
}
}
src/components/map/index.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 17:00:30
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2022-12-08 11:22:32
 * @LastEditTime: 2022-12-10 11:07:13
 * @FilePath: \srs-police-affairs\src\components\map\index.vue
 * @Description: 公用地图组件
 * 
@@ -160,6 +160,11 @@
                })
            }
            let terrain = global.DC.TerrainFactory.createUrlTerrain({
                url: 'http://data.marsgis.cn/terrain'
            })
            global.viewer.addTerrain(terrain)
            // 天地图 影像
            global.viewer.imageryLayers.addImageryProvider(
                new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
@@ -221,6 +226,68 @@
                console.log(e)
            })
            let positions = [[117.951478782, 28.447896798, 0], [117.951469798, 28.447894686, 0], [117.951397357, 28.447698099, 0], [117.951505114, 28.447674695, 0], [117.951485465, 28.447619271, 0], [117.951706955, 28.447558541, 0], [117.951722755, 28.447611995, 0], [117.951834021, 28.447588427, 0], [117.951896863, 28.447789523, 0], [117.951478782, 28.447896798, 0]]
            let MIN_F_H = positions.map(item => {
                item[2] = 70
                return item
            })
            let MAN_F_H = positions.map(item => {
                item[2] = 80
                return item
            })
            // 原生Cesium加载多边体
            let floorEntitysLayers = new global.DC.Namespace.Cesium.CustomDataSource("floorEntitysLayers")
            global.viewer.dataSources.add(floorEntitysLayers)
            let flootEntitysEntites = floorEntitysLayers.entities
            let floorPositions = positions.reduce((prev, curr, index, arr) => {
                curr.forEach(item => {
                    prev.push(item)
                })
                return prev
            }, [])
            flootEntitysEntites.add({
                polygon: {
                    hierarchy: global.DC.Namespace.Cesium.Cartesian3.fromDegreesArrayHeights(floorPositions),
                    heightReference: global.DC.Namespace.Cesium.HeightReference.RELATIVE_TO_GROUND,
                    extrudedHeightReference: global.DC.Namespace.Cesium.HeightReference.RELATIVE_TO_GROUND,
                    height: 70,
                    extrudedHeight: 80,
                    material: global.DC.Namespace.Cesium.Color.RED.withAlpha(0.5),
                }
            })
            // console.log(floorPositions)
            // let floorPositions = MIN_F_H.concat(MAN_F_H)
            // let floorPolygonlayer = new global.DC.VectorLayer('floorPolygonlayer')
            // global.viewer.addLayer(floorPolygonlayer)
            // let floorPolygon = new global.DC.Polygon(
            //     floorPositions
            // )
            // floorPolygon.setStyle({
            //     height: 70,
            //     extrudedHeight: 80,
            //     material: global.DC.Color.GREEN.withAlpha(0.5),
            //     heightReference: 2,
            //     perPositionHeight: true
            // })
            // floorPolygonlayer.addOverlay(floorPolygon)
            // global.viewer.flyTo(floorPolygonlayer)
            global.viewer.flyTo(sqTileset)
            global.viewer.use(new global.DC.Measure())
@@ -238,7 +305,7 @@
        // global.viewer.scene.morphTo2D(1)
        // 清除控制台
        console.clear()
        // console.clear()
        function isEleFullScreen () {
            const fullScreenEle =
src/styles/base/index.scss
@@ -2,7 +2,7 @@
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    scrollbar-color: rgba(7, 22, 37, 0.8) hsla(0, 0%, 84.7%, 0.2);
    scrollbar-color: rgba(17, 38, 163, 0.5) hsla(0, 0%, 84.7%, 0.2);
    scrollbar-width: thin;
}
@@ -36,7 +36,7 @@
// hsla(0, 0%, 84.7%, 0.6);
::-webkit-scrollbar-thumb {
    border-radius: 6px;
    background-color: rgba(7, 22, 37, 0.8);
    background-color: rgba(17, 38, 163, 0.5);
    padding-left: 2px;
    padding-right: 2px;
}
@@ -46,7 +46,7 @@
}
::-webkit-scrollbar-thumb:window-inactive {
    background-color: rgba(7, 22, 37, 0.8);
    background-color: rgba(17, 38, 163, 0.5);
}
:not(select)::-webkit-scrollbar {
@@ -54,7 +54,7 @@
}
::-webkit-scrollbar-thumb:hover {
    background-color: rgba(7, 22, 37, 0.8);
    background-color: rgba(17, 38, 163, 0.5);
}
.car-video-box {
@@ -521,5 +521,6 @@
.select-on-tab {
    box-shadow: 0 0 10px $menu-tab-shadow;
    box-shadow: 0 2px 2px $menu-tab-shadow;
    color: #fff;
}
src/styles/element-ui/element-ui.scss
@@ -1,8 +1,28 @@
// 表格  el-table!
// ------------------------------------------------------------------
.el-table tr th {
    background: $table-header-bg-color !important;
    color: #fff !important;
.el-table,
.el-table__expanded-cell {
    background-color: transparent !important;
}
.el-table,
.el-table__body-wrapper .el-table__empty-block {
    background: transparent !important;
    span {
        color: #fff !important;
    }
}
.el-table thead {
    tr {
        background: transparent !important;
        th {
            background: $table-header-bg-color !important;
            color: #fff !important;
        }
    }
}
.el-table tr:nth-child(2n) {
@@ -38,8 +58,9 @@
    height: 100%;
}
.el-table--enable-row-transition .el-table__body td.el-table__cell,.el-table tr th {
    border: 0!important;
.el-table--enable-row-transition .el-table__body td.el-table__cell,
.el-table tr th {
    border: 0 !important;
}
@@ -359,10 +380,7 @@
    }
}
.el-table,
.el-table__expanded-cell {
    background-color: $table-body-bg-color !important;
}
.tree-search-popup {
    top: 135px !important;
src/styles/media/index.scss
@@ -87,6 +87,11 @@
                                            height: countSizeVh(22);
                                            line-height: countSizeVh(22);
                                        }
                                        &>div.tab-title-small {
                                            height: maxCountSizeVh(32);
                                            line-height: maxCountSizeVh(32);
                                        }
                                    }
                                }
src/styles/scssFile.scss
@@ -2,11 +2,14 @@
$bg-color: $bg-one-color;
$tree-search-bg-color: rgba(9, 40, 199, 0.9);
$el-dialog-bg-color: rgba(9, 40, 199, 1);
$select-box-bg-color: rgba(9, 40, 199, 0.8);
$sub-tab-bg-color: linear-gradient(to bottom, rgba(2, 27, 121, .8), rgba(5, 117, 230, .8));
@@ -17,7 +20,7 @@
$menu-tab-bg-color: $bg-one-color;
$menu-tab-shadow: rgba(144, 202, 249, 0.8);
$menu-tab-shadow: rgba(0, 188, 212, 0.884);
src/views/home/components/leftContainer.vue
@@ -13,57 +13,32 @@
                </div>
            </div>
            <div class="sub-tab" v-show="peopletype == 0">
                <div
                    class="tab3"
                    :class="{ 'select-on-tab': tabType == 0 }"
                    @click="personTabClick(0)"
                >
                <div class="tab3" :class="{ 'select-on-tab': tabType == 0 }" @click="personTabClick(0)">
                    <div class="num">164.57万人</div>
                    <div class="type">户籍人口</div>
                </div>
                <div
                    class="tab3"
                    :class="{ 'select-on-tab': tabType == 1 }"
                    @click="personTabClick(1)"
                >
                <div class="tab3" :class="{ 'select-on-tab': tabType == 1 }" @click="personTabClick(1)">
                    <div class="num">17.52万人</div>
                    <div class="type">流动人口</div>
                </div>
                <div
                    class="tab3"
                    :class="{ 'select-on-tab': tabType == 2 }"
                    @click="personTabClick(2)"
                >
                <div class="tab3" :class="{ 'select-on-tab': tabType == 2 }" @click="personTabClick(2)">
                    <div class="num">91995人</div>
                    <div class="type">境外人口</div>
                </div>
            </div>
            <div id="PersonEcharts" class="echarts-box"></div>
            <div
                class="back"
                title="返回上一级"
                v-show="dataDeep == 2 && peopletype == 0"
                @click="backBegin"
            ></div>
            <div class="back" title="返回上一级" v-show="dataDeep == 2 && peopletype == 0" @click="backBegin"></div>
        </div>
        <div class="house-box">
            <div class="title">现有房屋</div>
            <div class="sub-tab">
                <div
                    class="tab"
                    :class="{ 'select-on-tab': tabTypeTwo == 0 }"
                    @click="houseTabClick(0)"
                >
                    <div class="num">182万户</div>
                    <div class="num">实有房屋</div>
            <div class="sub-tab ">
                <div class="tab" :class="{ 'select-on-tab': tabTypeTwo == 0 }" @click="houseTabClick(0)">
                    <div class="tab-title-small">实有房屋:</div>
                    <div class="tab-title-small">182万户</div>
                </div>
                <div
                    class="tab"
                    :class="{ 'select-on-tab': tabTypeTwo == 1 }"
                    @click="houseTabClick(1)"
                >
                    <div class="num">634个</div>
                    <div class="num">关注场所</div>
                <div class="tab" :class="{ 'select-on-tab': tabTypeTwo == 1 }" @click="houseTabClick(1)">
                    <div class="tab-title-small">关注场所:</div>
                    <div class="tab-title-small">634个</div>
                </div>
            </div>
            <div id="houseEcharts" class="echarts-box"></div>
@@ -71,21 +46,13 @@
        <div class="land-box">
            <div class="title">现有地</div>
            <div class="sub-tab">
                <div
                    class="tab"
                    :class="{ 'select-on-tab': tabTypeThree == 0 }"
                    @click="landTabClick(0)"
                >
                    <div class="num">634个</div>
                    <div class="num">小区</div>
                <div class="tab" :class="{ 'select-on-tab': tabTypeThree == 0 }" @click="landTabClick(0)">
                    <div class="tab-title-small">小区:</div>
                    <div class="tab-title-small">634个</div>
                </div>
                <div
                    class="tab"
                    :class="{ 'select-on-tab': tabTypeThree == 1 }"
                    @click="landTabClick(1)"
                >
                    <div class="num">634个</div>
                    <div class="num">责任区</div>
                <div class="tab" :class="{ 'select-on-tab': tabTypeThree == 1 }" @click="landTabClick(1)">
                    <div class="tab-title-small">责任区:</div>
                    <div class="tab-title-small">634个</div>
                </div>
            </div>
            <div id="landEcharts" class="echarts-box"></div>
@@ -971,7 +938,7 @@
                color: #fff;
            }
            & > div:nth-of-type(2) {
            &>div:nth-of-type(2) {
                font-size: 14px;
            }
        }
@@ -985,6 +952,7 @@
        .sub-tab {
            padding: 10px;
            display: flex;
            color: #99cccc;
            .tab,
            .tab3 {
@@ -994,11 +962,12 @@
                border-radius: 8px;
                cursor: pointer;
                & > div {
                &>div {
                    height: 22px;
                    line-height: 22px;
                }
            }
            .tab {
                display: flex;
                justify-content: space-around;
src/views/home/components/rightContainer.vue
@@ -5,15 +5,10 @@
                <div>值班信息(当日)</div>
            </div>
            <div class="table-box">
                <el-table
                    size="small"
                    :height="tableHeight"
                    :data="schedulingList"
                    style="width: 100%"
                <el-table size="small" :height="tableHeight" :data="schedulingList" style="width: 100%"
                    :header-cell-style="{ 'text-align': 'center' }"
                    :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }"
                    :row-class-name="tableRowClassName"
                >
                    :row-class-name="tableRowClassName">
                    <el-table-column prop="station" label="岗位"></el-table-column>
                    <el-table-column prop="name" label="姓名"></el-table-column>
                    <el-table-column prop="contact" label="联系方式"></el-table-column>
@@ -24,16 +19,9 @@
            <div class="title">
                案件统计
                <div class="timer">
                    <el-date-picker
                        v-model="eventTime"
                        type="daterange"
                        align="right"
                        unlink-panels
                        range-separator="至"
                        start-placeholder="开始日期"
                        end-placeholder="结束日期"
                        :picker-options="pickerOptions"
                    ></el-date-picker>
                    <el-date-picker v-model="eventTime" type="daterange" align="right" unlink-panels range-separator="至"
                        start-placeholder="开始日期" end-placeholder="结束日期"
                        :picker-options="pickerOptions"></el-date-picker>
                </div>
            </div>
            <div id="EventChangeEcharts" class="echarts-box"></div>
@@ -297,6 +285,11 @@
                                }
                            }
                        },
                        emphasis: {
                            label: {
                                color: 'red'
                            }
                        },
                        label: {
                            color: function (params) {
                                let colorList = []
@@ -338,6 +331,7 @@
            if (timer) {
                clearInterval(timer)
            }
            timer = setInterval(() => {
                equipmentmyChart.dispatchAction({ type: 'downplay', seriesIndex: 0, dataIndex: curIndex })
                curIndex = (curIndex + 1) % dataLen
@@ -345,6 +339,7 @@
                    type: 'highlight', seriesIndex: 0, dataIndex: curIndex
                })
            }, 1000)
            equipmentmyChart.on('mouseover', function (param) {
                clearInterval(timer)
                equipmentmyChart.dispatchAction({
@@ -359,6 +354,7 @@
                })
                curIndex = param.dataIndex
            })
            equipmentmyChart.on('mouseout', function (param) {
                curIndex = param.dataIndex
                if (timer) {
@@ -540,6 +536,11 @@
        },
        getEquimentChartData (policeStationName) {
            const oneColor = ['#4caf50', '#2979ff', '#ffd600', '#0d47a1', '#b71c1c']
            const twoColor = ['#5470FE', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc']
            let dataArr = []
            let phoneCount = 0
            let carCount = 0
@@ -592,10 +593,10 @@
            recorderState = this.getEquimentChartStateData(this.recorderNewArr)
            if (this.linetype == 0) {
                dataArr = [
                    { value: carCount, name: '车辆', working: carState.working, fault: carState.fault, maintain: carState.maintain, disable: carState.disable, sealing: carState.sealing },
                    { value: monitorCount, name: '摄像头', working: monitorState.working, fault: monitorState.fault, maintain: monitorState.maintain, disable: monitorState.disable, sealing: monitorState.sealing },
                    { value: recorderCount, name: '执法记录仪', working: recorderState.working, fault: recorderState.fault, maintain: recorderState.maintain, disable: recorderState.disable, sealing: recorderState.sealing },
                    { value: phoneCount, name: '手台', working: phoneState.working, fault: phoneState.fault, maintain: phoneState.maintain, disable: phoneState.disable, sealing: phoneState.sealing },
                    { value: carCount, name: '车辆', working: carState.working, fault: carState.fault, maintain: carState.maintain, disable: carState.disable, sealing: carState.sealing, label: { color: twoColor[0] } },
                    { value: monitorCount, name: '摄像头', working: monitorState.working, fault: monitorState.fault, maintain: monitorState.maintain, disable: monitorState.disable, sealing: monitorState.sealing, label: { color: twoColor[1] } },
                    { value: recorderCount, name: '执法记录仪', working: recorderState.working, fault: recorderState.fault, maintain: recorderState.maintain, disable: recorderState.disable, sealing: recorderState.sealing, label: { color: twoColor[2] } },
                    { value: phoneCount, name: '手台', working: phoneState.working, fault: phoneState.fault, maintain: phoneState.maintain, disable: phoneState.disable, sealing: phoneState.sealing, label: { color: twoColor[3] } },
                ]
                this.regionTotal = phoneCount + monitorCount + carCount + recorderCount
            } else {
@@ -605,11 +606,11 @@
                let disableObj = this.getEquimentChartTypeData(phoneState, carState, recorderState, monitorState).disableObj
                let sealingObj = this.getEquimentChartTypeData(phoneState, carState, recorderState, monitorState).sealingObj
                dataArr = [
                    { value: workingObj.total, name: '正常', carCount: workingObj.carCount, monitorCount: workingObj.monitorCount, recorderCount: workingObj.recorderCount, phoneCount: workingObj.phoneCount, color: '#4caf50' },
                    { value: maintainObj.total, name: '保养', carCount: maintainObj.carCount, monitorCount: maintainObj.monitorCount, recorderCount: maintainObj.recorderCount, phoneCount: maintainObj.phoneCount, color: '#2979ff' },
                    { value: faultObj.total, name: '故障', carCount: faultObj.carCount, monitorCount: faultObj.monitorCount, recorderCount: faultObj.recorderCount, phoneCount: faultObj.phoneCount, color: '#ffd600' },
                    { value: disableObj.total, name: '停用', carCount: disableObj.carCount, monitorCount: disableObj.monitorCount, recorderCount: disableObj.recorderCount, phoneCount: disableObj.phoneCount, color: '#0d47a1' },
                    { value: sealingObj.total, name: '封存', carCount: sealingObj.carCount, monitorCount: sealingObj.monitorCount, recorderCount: sealingObj.recorderCount, phoneCount: sealingObj.phoneCount, color: '#b71c1c' },
                    { value: workingObj.total, name: '正常', carCount: workingObj.carCount, monitorCount: workingObj.monitorCount, recorderCount: workingObj.recorderCount, phoneCount: workingObj.phoneCount, color: '#4caf50', label: { color: oneColor[0] } },
                    { value: maintainObj.total, name: '保养', carCount: maintainObj.carCount, monitorCount: maintainObj.monitorCount, recorderCount: maintainObj.recorderCount, phoneCount: maintainObj.phoneCount, color: '#2979ff', label: { color: oneColor[1] } },
                    { value: faultObj.total, name: '故障', carCount: faultObj.carCount, monitorCount: faultObj.monitorCount, recorderCount: faultObj.recorderCount, phoneCount: faultObj.phoneCount, color: '#ffd600', label: { color: oneColor[2] } },
                    { value: disableObj.total, name: '停用', carCount: disableObj.carCount, monitorCount: disableObj.monitorCount, recorderCount: disableObj.recorderCount, phoneCount: disableObj.phoneCount, color: '#0d47a1', label: { color: oneColor[3] } },
                    { value: sealingObj.total, name: '封存', carCount: sealingObj.carCount, monitorCount: sealingObj.monitorCount, recorderCount: sealingObj.recorderCount, phoneCount: sealingObj.phoneCount, color: '#b71c1c', label: { color: oneColor[4] } },
                ]
                this.regionTotal = workingObj.total + faultObj.total + maintainObj.total + disableObj.total + sealingObj.total
            }
@@ -800,6 +801,7 @@
                margin-left: 50%;
                letter-spacing: 1px;
            }
            .legend {
                position: absolute;
                width: calc(100% - 36px);
@@ -807,17 +809,21 @@
                top: 120%;
                font-style: normal;
                font-weight: normal;
                ul {
                    display: flex;
                    height: 100%;
                    li {
                        height: 100%;
                        display: flex;
                        line-height: 160%;
                        margin-right: 10px;
                        img {
                            height: 60%;
                        }
                        div {
                            width: 20px;
                            height: 42%;
@@ -847,7 +853,7 @@
                background: $sub-tab-bg-color;
                cursor: pointer;
                & > div {
                &>div {
                    height: 26px;
                    line-height: 26px;
                }
@@ -858,6 +864,7 @@
            padding: 12px;
            flex: 1;
        }
        .table-box {
            padding: 0 12px;
            flex: 1;
src/views/house/1.js
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-12-08 15:39:19
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2022-12-08 15:40:42
 * @LastEditTime: 2022-12-09 10:14:24
 * @FilePath: \srs-police-affairs\src\views\house\1.js
 * @Description: 
 * 
@@ -11,4 +11,6 @@
var geom = "{\"type\":\"Polygon\",\"coordinates\":[[[117.951611255,28.447352784,0],[117.951600551,28.447344222,0],[117.951547986,28.447195694,0],[117.951644553,28.447167745,0],[117.951618108,28.447086296,0],[117.951840968,28.447039435,0],[117.95185813,28.447096389,0],[117.951957911,28.447097034,0],[117.95196294,28.447315995,0],[117.951611255,28.447352784,0]]]}"
console.log(JSON.parse(geom).coordinates)
var geom1 = "{\"type\":\"Polygon\",\"coordinates\":[]}"
var min_height = 31.4
var floor_h = 2.8