guanqb
2023-02-17 521bc57fd355f48a7b09759b01d2328dc5aafc25
Merge branch 'master' of http://192.168.0.105:10010/r/srs-police-affairs
6 files modified
228 ■■■■■ changed files
src/api/video/index.js 12 ●●●●● patch | view | raw | blame | history
src/components/map/index.vue 22 ●●●● patch | view | raw | blame | history
src/styles/media/index.scss 5 ●●●●● patch | view | raw | blame | history
src/views/police/index.vue 22 ●●●●● patch | view | raw | blame | history
src/views/video/list.vue 158 ●●●● patch | view | raw | blame | history
src/views/video/region.vue 9 ●●●● patch | view | raw | blame | history
src/api/video/index.js
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-11-15 15:10:41
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-02-16 11:51:45
 * @LastEditTime: 2023-02-17 10:34:10
 * @FilePath: \srs-police-affairs\src\api\video\index.js
 * @Description: 
 * 
@@ -58,16 +58,12 @@
 * @param {*} params 包含参数 range 参数值参考 116.292735,40.0717; 116.476708, 40.083625; 116.476708, 40.083625; 116.292735, 40.0717
 * @returns 
 */
export const getRegionList = (page = 1, count = 15, id) => {
export const getRegionList = (params) => {
    return request({
        url: '/device/query/SpatialQueryList',
        method: 'get',
        method: 'post',
        requestBaseUrl: 'outside',
        params: {
            page,
            count,
            id
        }
        data: params
    })
}
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: 2023-02-16 15:16:48
 * @LastEditTime: 2023-02-17 08:48:00
 * @FilePath: \srs-police-affairs\src\components\map\index.vue
 * @Description: 公用地图组件
 * 
@@ -215,18 +215,18 @@
            // global.viewer.addTerrain(terrain)
            // 内网
            that.switchImg()
            // that.switchImg()
            // 外网
            // global.viewer.imageryLayers.addImageryProvider(
            //     new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
            //         url: 'http://t{s}.tianditu.gov.cn/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=e45274b0235bb913eceb393aabbf9c9c',
            //         subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],
            //         format: 'image/jpeg',
            //         show: true,
            //         maximumLevel: 18
            //     })
            // )
            global.viewer.imageryLayers.addImageryProvider(
                new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
                    url: 'http://t{s}.tianditu.gov.cn/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=e45274b0235bb913eceb393aabbf9c9c',
                    subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],
                    format: 'image/jpeg',
                    show: true,
                    maximumLevel: 18
                })
            )
            // 设置地图初始位置,角度等
            global.viewer.camera.setView({
src/styles/media/index.scss
@@ -881,8 +881,9 @@
                                height: countSizeVh(46);
                                input {
                                    font-size: countSizeVh(18);
                                    border-radius: countSizeVh(20);
                                    height: countSizeVh(32);
                                    font-size: countSizeVh(16);
                                    border: countSizeVh(1) solid rgb(0, 92, 169);
                                }
                            }
src/views/police/index.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 16:18:17
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-02-04 16:09:25
 * @LastEditTime: 2023-02-17 10:23:23
 * @FilePath: \srs-police-affairs\src\views\police\index.vue
 * @Description: 辖区管理
 * 
@@ -52,15 +52,22 @@
                            prop="newName"
                            :show-overflow-tooltip="true"
                            label="名称"
                            min-width="56%"
                            :min-width="typeValue == 0 ? '56%' : '68%'"
                        ></el-table-column>
                        <el-table-column prop="status" label="状态" min-width="14%">
                        <el-table-column
                            prop="status"
                            label="状态"
                            :min-width="typeValue == 0 ? '14%' : '14%'"
                        >
                            <template slot-scope="scope">
                                <div class="state-box" :class="{ online: scope.row.status == '1' }"></div>
                            </template>
                        </el-table-column>
                        <el-table-column label="操作" align="center" min-width="30%">
                        <el-table-column
                            label="操作"
                            align="center"
                            :min-width="typeValue == 0 ? '30%' : '18%'"
                        >
                            <template slot-scope="scope">
                                <el-button
                                    @click="rowClick(scope.row)"
@@ -95,7 +102,7 @@
                        <el-pagination
                            background
                            layout="prev, pager, next"
                            you:page-size="equimentPage.pageSize"
                            :page-size="equimentPage.pageSize"
                            :page-count="equimentPage.count"
                            :pager-count="4"
                            :current-page="equimentPage.currentPage"
@@ -252,7 +259,7 @@
            equimentTableData: [],
            equimentPage: {
                total: 0,
                pageSize: 15,
                pageSize: 25,
                count: 0,
                currentPage: 1
            },
@@ -784,7 +791,6 @@
                    background-color: rgba(24, 79, 202, 0.6);
                    // border: 1px solid rgb(0, 92, 169);
                    border: 1px solid rgb(24, 79, 202);
                    border-radius: 20px;
                }
                input:focus {
src/views/video/list.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 16:18:17
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-02-16 15:34:43
 * @LastEditTime: 2023-02-17 10:06:38
 * @FilePath: \srs-police-affairs\src\views\video\list.vue
 * @Description: 辖区管理
 * 
@@ -18,7 +18,7 @@
                    v-model="searchValue"
                    @input="searchChange"
                    type="text"
                    placeholder="请输入搜索条件"
                    placeholder="请输入…"
                />
            </div>
@@ -34,13 +34,6 @@
                <h3>请输入距离</h3>
                <input type="text" v-model="range" />
                <button @click="changeRange" class="btn">确定</button>
            </div>
            <div v-show="searchValBoxShow" class="search-val-box">
                <div
                    @click="searchVlaClick(item)"
                    v-for="(item, index) in searchArray"
                    :key="index"
                >{{ item.name }}</div>
            </div>
            <div class="down-tree">
@@ -91,57 +84,6 @@
                    </el-tree>
                </el-scrollbar>
            </div>
            <div class="list-show" v-if="false">
                <div class="car-list">
                    <div class="list-box">
                        <el-table
                            :data="monitoringList"
                            style="width: 100%"
                            :header-cell-style="{ 'text-align': 'center', 'background-color': 'rgba(9, 40, 199, 0.5)', 'borderColor': '#324e75' }"
                            :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }"
                            @cell-click="rowClick"
                        >
                            <el-table-column
                                :show-overflow-tooltip="true"
                                prop="name"
                                label="点位名称"
                                min-width="35%"
                            ></el-table-column>
                            <el-table-column
                                :show-overflow-tooltip="true"
                                prop="pTZTypeText"
                                label="点位类型"
                                min-width="35%"
                            ></el-table-column>
                            <el-table-column
                                :show-overflow-tooltip="true"
                                prop="status"
                                label="状态"
                                min-width="30%"
                            >
                                <template slot-scope="scope">
                                    <div
                                        class="state-box"
                                        :class="{ online: scope.row.status == '1' }"
                                    ></div>
                                </template>
                            </el-table-column>
                        </el-table>
                    </div>
                    <div class="pages">
                        <el-pagination
                            background
                            layout="prev, pager, next"
                            :page-size="pagesize"
                            :page-count="pagesCount"
                            :current-page="currentPage"
                            pager-count="5"
                            @current-change="handleCurrentChange"
                        ></el-pagination>
                    </div>
                </div>
            </div>
        </div>
        <div class="search-content">
@@ -157,6 +99,7 @@
            </div>
            <button @click="searchExtensivelyClick" class="el-icon-search"></button>
        </div>
        <div v-show="searchExtensivelyValBoxShow" class="searchExtensively-val-box">
            <div>
                <div
@@ -200,9 +143,7 @@
<script>
import EntityDraw from "@/utils/EntityDraw.js"
import { listQuery, accurateSearch } from "@/utils/search.js"
import {
    getVideoList,
    getDevices,
    getRegionList,
    insertRegionSaveList,
@@ -220,9 +161,6 @@
    data () {
        return {
            currentPage: 1,
            pagesize: 15,
            pagesCount: 1,
            monitoringList: [],
            monitoringSaveList: [],
            dialogTitle: '',
@@ -230,8 +168,6 @@
            dialogVisible: false,
            drawDialogVisible: false,
            searchValue: '',
            searchArray: [],
            searchValBoxShow: false,
            boxShow: true,
            flvPlayer: null,
            range: 100,
@@ -263,7 +199,6 @@
    },
    created () {
        this.getVideoList(this.currentPage, this.pagesize)
    },
    mounted () {
@@ -271,24 +206,6 @@
    },
    methods: {
        handleCurrentChange: function (currentPage) {
            this.currentPage = currentPage
            this.getVideoList(this.currentPage, this.pagesize)
        },
        getVideoList (current, size, name) {
            getVideoList(current, size, name).then(res => {
                this.pagesCount = res.data.data.pages
                this.monitoringList = res.data.data.list
                this.monitoringSaveList = res.data.data.list
                this.$EventBus.$emit('mapRemoveLayer', {
                    layerName: 'monitoringLayers',
                    type: 'VectorLayer'
                })
                this.initMonitoringIcon()
            })
        },
        async getDevices (channelId) {
            let flvAddress = ''
            await getDevices(channelId).then(res => {
@@ -301,36 +218,7 @@
            return flvAddress
        },
        initMonitoringIcon () {
            this.monitoringList.forEach((item, index) => {
                this.$EventBus.$emit('layerPointAdd', {
                    layerName: 'monitoringLayers',
                    type: "billboard",
                    params: {
                        name: item.name,
                        lng: item.longitude,
                        lat: item.latitude,
                        alt: 100,
                        url: '/img/icon/video.png',
                        deviceId: item.deviceId,
                        channelId: item.channelId
                    },
                    incident: this.siteClick
                })
            })
        },
        rowClick (row) {
            this.$EventBus.$emit('toPosition', {
                layerName: 'monitoringLayers',
                siteJd: row.longitude,
                siteWd: row.latitude,
                siteGd: 60000,
                siteHeading: -3,
                sitePitch: -90
            })
        },
        async siteClick (e) {
            if (this.flvPlayer != null) {
@@ -403,14 +291,6 @@
            }
        },
        searchVlaClick (item) {
            this.searchValBoxShow = false
            this.searchArray = []
            this.monitoringList = [item]
            this.searchValue = item.name
            this.getVideoList(this.currentPage, this.pagesize, this.searchValue)
        },
        draw (type) {
            if (graphicLayer == null) graphicLayer = new EntityDraw()
@@ -474,16 +354,46 @@
                })
                positionStr = positionStr + JSON.parse(data).data[0].lng + ',' + JSON.parse(data).data[0].lat + ';'
            }
            getRegionList(1, 15, positionStr).then(res => {
            getRegionList({
                page: 1,
                count: 20,
                range: positionStr
            }).then(res => {
                this.monitoringList = res.data.data.list
                this.$EventBus.$emit('mapRemoveLayer', {
                    layerName: 'monitoringLayers',
                    type: 'VectorLayer'
                })
                this.initMonitoringIcon()
            })
        },
        /**
         * @description: 加载面调用接口返回的点数据
         * @return {*}
         */
        initMonitoringIcon () {
            this.monitoringList.forEach((item, index) => {
                this.$EventBus.$emit('layerPointAdd', {
                    layerName: 'monitoringLayers',
                    type: "billboard",
                    params: {
                        name: item.name,
                        lng: item.longitude,
                        lat: item.latitude,
                        alt: 100,
                        url: '/img/icon/video.png',
                        deviceId: item.deviceId,
                        channelId: item.channelId
                    },
                    incident: this.siteClick
                })
            })
        },
        saveDraw () {
            if (this.drawInfo.length != 0) {
                this.drawDialogVisible = true
src/views/video/region.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 16:18:17
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-02-16 16:50:33
 * @LastEditTime: 2023-02-17 10:34:59
 * @FilePath: \srs-police-affairs\src\views\video\region.vue
 * @Description: 辖区管理
 * 
@@ -715,8 +715,13 @@
                    type8: ''
                }
                getRegionList(1, 20, row.id).then(res => {
                getRegionList({
                    page: 1,
                    count: 20,
                    id: row.id
                }).then(res => {
                    let monitorData = res.data.data.list
                    this.monitoringList = res.data.data.list
                    this.$EventBus.$emit('mapRemoveLayer', {
                        layerName: 'monitoringLayers',