guanqb
2023-04-20 5614999bd45b785de30d04147b99148479e3562c
Merge branch 'master' of http://s16s652780.51mypc.cn:49896/r/srs-police-affairs
14 files modified
27 files added
552 ■■■■ changed files
public/img/icon/close.png patch | view | raw | blame | history
public/img/icon/track.png patch | view | raw | blame | history
public/qp/11级切片.gm_source_def.xml 12 ●●●●● patch | view | raw | blame | history
public/qp/11级切片.htm 116 ●●●●● patch | view | raw | blame | history
public/qp/Z10/426/847.png patch | view | raw | blame | history
public/qp/Z10/426/848.png patch | view | raw | blame | history
public/qp/Z10/427/847.png patch | view | raw | blame | history
public/qp/Z10/427/848.png patch | view | raw | blame | history
public/qp/Z11/853/1695.png patch | view | raw | blame | history
public/qp/Z11/853/1696.png patch | view | raw | blame | history
public/qp/Z11/854/1694.png patch | view | raw | blame | history
public/qp/Z11/854/1695.png patch | view | raw | blame | history
public/qp/Z11/854/1696.png patch | view | raw | blame | history
public/qp/Z11/855/1694.png patch | view | raw | blame | history
public/qp/Z11/855/1695.png patch | view | raw | blame | history
public/qp/Z11/855/1696.png patch | view | raw | blame | history
public/qp/Z2/1/3.png patch | view | raw | blame | history
public/qp/Z4/6/13.png patch | view | raw | blame | history
public/qp/Z5/13/26.png patch | view | raw | blame | history
public/qp/Z6/26/52.png patch | view | raw | blame | history
public/qp/Z6/26/53.png patch | view | raw | blame | history
public/qp/Z7/53/105.png patch | view | raw | blame | history
public/qp/Z7/53/106.png patch | view | raw | blame | history
public/qp/Z8/106/211.png patch | view | raw | blame | history
public/qp/Z8/106/212.png patch | view | raw | blame | history
public/qp/Z9/213/423.png patch | view | raw | blame | history
public/qp/Z9/213/424.png patch | view | raw | blame | history
public/static/config.js 6 ●●●● patch | view | raw | blame | history
src/api/dept/index.js 18 ●●●● patch | view | raw | blame | history
src/components/map/index.vue 36 ●●●● patch | view | raw | blame | history
src/styles/dc/index.scss 19 ●●●●● patch | view | raw | blame | history
src/styles/icon/index.scss 11 ●●●●● patch | view | raw | blame | history
src/styles/media/index.scss 40 ●●●●● patch | view | raw | blame | history
src/utils/turfPolygon.js 96 ●●●● patch | view | raw | blame | history
src/views/activity/index.vue 23 ●●●● patch | view | raw | blame | history
src/views/home/components/leftContainer.vue 21 ●●●●● patch | view | raw | blame | history
src/views/home/components/rightContainer.vue 111 ●●●● patch | view | raw | blame | history
src/views/home/index.vue 4 ●●● patch | view | raw | blame | history
src/views/house/index.vue 29 ●●●●● patch | view | raw | blame | history
src/views/police/index.vue 4 ●●●● patch | view | raw | blame | history
vue.config.js 6 ●●●● patch | view | raw | blame | history
public/img/icon/close.png
public/img/icon/track.png
public/qp/11级切片.gm_source_def.xml
New file
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<source_list version="1.0" creator="Global Mapper - http://www.globalmapper.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.globalmapper.com/OSL/1/0" xsi:schemaLocation="http://www.globalmapper.com/OSL/1/0 http://www.globalmapper.com/OSL/1/0/gmc.xsd">
<source type="GMAP">
  <name>My Map Set Name</name>
  <FileExt>png</FileExt>
  <LatLonBounds>90,0,180,66.5132604431</LatLonBounds>
  <NumZoomLevels>12</NumZoomLevels>
  <TileSize>256</TileSize>
  <BaseURL><![CDATA[file:///G:/%D0%C5%D6%DD%C7%F8%D5%FD%C9%E4%B3%C9%B9%FB%B4%E6%B5%B5/%C7%D0%C6%AC%B2%E2%CA%D4/11%BC%B6%C7%D0%C6%AC%C8%AB/Z%z/%y/%x.png]]></BaseURL>
  <NativeProj>EPSG:3857</NativeProj>
</source>
</source_list>
public/qp/11级切片.htm
New file
@@ -0,0 +1,116 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>My Map Set Name (Google Maps Export from Global Mapper)</title>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
    <script type="text/javascript">
    var G = google.maps;
    var map;
    var customMapType = new G.ImageMapType
      (
        {
        getTileUrl: function(coord, zoom)
          {
          var normalizedCoord = getNormalizedCoord(coord, zoom);
          if (!normalizedCoord) { return null; }
          if ( zoom == 1 && normalizedCoord.x >= 1 && normalizedCoord.x <= 1 && normalizedCoord.y >= 0 && normalizedCoord.y <= 0 )
          {
            return "file:///G://ÐÅÖÝÇøÕýÉä³É¹û´æµµ//ÇÐÆ¬²âÊÔ//11¼¶ÇÐÆ¬È«//Z" + zoom + "/" + normalizedCoord.y + "/" + normalizedCoord.x + ".png"; // replace that with a "real" URL
          }
          else if ( zoom == 2 && normalizedCoord.x >= 3 && normalizedCoord.x <= 3 && normalizedCoord.y >= 1 && normalizedCoord.y <= 1 )
          {
            return "file:///G://ÐÅÖÝÇøÕýÉä³É¹û´æµµ//ÇÐÆ¬²âÊÔ//11¼¶ÇÐÆ¬È«//Z" + zoom + "/" + normalizedCoord.y + "/" + normalizedCoord.x + ".png"; // replace that with a "real" URL
          }
          else if ( zoom == 3 && normalizedCoord.x >= 6 && normalizedCoord.x <= 7 && normalizedCoord.y >= 2 && normalizedCoord.y <= 4 )
          {
            return "file:///G://ÐÅÖÝÇøÕýÉä³É¹û´æµµ//ÇÐÆ¬²âÊÔ//11¼¶ÇÐÆ¬È«//Z" + zoom + "/" + normalizedCoord.y + "/" + normalizedCoord.x + ".png"; // replace that with a "real" URL
          }
          else if ( zoom == 4 && normalizedCoord.x >= 12 && normalizedCoord.x <= 15 && normalizedCoord.y >= 4 && normalizedCoord.y <= 8 )
          {
            return "file:///G://ÐÅÖÝÇøÕýÉä³É¹û´æµµ//ÇÐÆ¬²âÊÔ//11¼¶ÇÐÆ¬È«//Z" + zoom + "/" + normalizedCoord.y + "/" + normalizedCoord.x + ".png"; // replace that with a "real" URL
          }
          else if ( zoom == 5 && normalizedCoord.x >= 24 && normalizedCoord.x <= 31 && normalizedCoord.y >= 8 && normalizedCoord.y <= 16 )
          {
            return "file:///G://ÐÅÖÝÇøÕýÉä³É¹û´æµµ//ÇÐÆ¬²âÊÔ//11¼¶ÇÐÆ¬È«//Z" + zoom + "/" + normalizedCoord.y + "/" + normalizedCoord.x + ".png"; // replace that with a "real" URL
          }
          else if ( zoom == 6 && normalizedCoord.x >= 48 && normalizedCoord.x <= 63 && normalizedCoord.y >= 16 && normalizedCoord.y <= 32 )
          {
            return "file:///G://ÐÅÖÝÇøÕýÉä³É¹û´æµµ//ÇÐÆ¬²âÊÔ//11¼¶ÇÐÆ¬È«//Z" + zoom + "/" + normalizedCoord.y + "/" + normalizedCoord.x + ".png"; // replace that with a "real" URL
          }
          else if ( zoom == 7 && normalizedCoord.x >= 96 && normalizedCoord.x <= 127 && normalizedCoord.y >= 32 && normalizedCoord.y <= 64 )
          {
            return "file:///G://ÐÅÖÝÇøÕýÉä³É¹û´æµµ//ÇÐÆ¬²âÊÔ//11¼¶ÇÐÆ¬È«//Z" + zoom + "/" + normalizedCoord.y + "/" + normalizedCoord.x + ".png"; // replace that with a "real" URL
          }
          else if ( zoom == 8 && normalizedCoord.x >= 192 && normalizedCoord.x <= 255 && normalizedCoord.y >= 64 && normalizedCoord.y <= 128 )
          {
            return "file:///G://ÐÅÖÝÇøÕýÉä³É¹û´æµµ//ÇÐÆ¬²âÊÔ//11¼¶ÇÐÆ¬È«//Z" + zoom + "/" + normalizedCoord.y + "/" + normalizedCoord.x + ".png"; // replace that with a "real" URL
          }
          else if ( zoom == 9 && normalizedCoord.x >= 384 && normalizedCoord.x <= 511 && normalizedCoord.y >= 128 && normalizedCoord.y <= 256 )
          {
            return "file:///G://ÐÅÖÝÇøÕýÉä³É¹û´æµµ//ÇÐÆ¬²âÊÔ//11¼¶ÇÐÆ¬È«//Z" + zoom + "/" + normalizedCoord.y + "/" + normalizedCoord.x + ".png"; // replace that with a "real" URL
          }
          else if ( zoom == 10 && normalizedCoord.x >= 768 && normalizedCoord.x <= 1023 && normalizedCoord.y >= 256 && normalizedCoord.y <= 512 )
          {
            return "file:///G://ÐÅÖÝÇøÕýÉä³É¹û´æµµ//ÇÐÆ¬²âÊÔ//11¼¶ÇÐÆ¬È«//Z" + zoom + "/" + normalizedCoord.y + "/" + normalizedCoord.x + ".png"; // replace that with a "real" URL
          }
          else if ( zoom == 11 && normalizedCoord.x >= 1536 && normalizedCoord.x <= 2047 && normalizedCoord.y >= 512 && normalizedCoord.y <= 1024 )
          {
            return "file:///G://ÐÅÖÝÇøÕýÉä³É¹û´æµµ//ÇÐÆ¬²âÊÔ//11¼¶ÇÐÆ¬È«//Z" + zoom + "/" + normalizedCoord.y + "/" + normalizedCoord.x + ".png"; // replace that with a "real" URL
          }
          return null;
        },
        alt: "My Map Set Name",
        tileSize: new G.Size(256, 256),
        isPng: true,
        maxZoom: 11,
        minZoom: 1,
        opacity: 1.00,
        name: "My Map Set Name"
      }
    )
    function getNormalizedCoord(coord, zoom)
    {
      var y = coord.y;
      var x = coord.x;
      var tileRange = 1 << zoom;
      if (y < 0 || y >= tileRange) { return null; }
      if (x < 0 || x >= tileRange)
      {
        x = (x % tileRange + tileRange) % tileRange;
      }
      return { x: x, y: y };
    }
    function initialize()
    {
      var myLatlng = new G.LatLng(33.256630,135.000000);
      var myOptions = {
        center: myLatlng,
        zoom: 1,
        mapTypeId: G.MapTypeId.ROADMAP,
        mapTypeControl: true,
        overviewMapControl: false,
        scaleControl: false,
        streetViewControl: true,
        panControl: true,
        zoomControl: true,
        zoomControlOptions: { style: google.maps.ZoomControlStyle.DEFAULT }
      };
      map = new G.Map(document.getElementById("map_canvas"), myOptions);
      map.overlayMapTypes.insertAt(0, customMapType);
    }
    </script>
</head>
<body onload="initialize()">
<div id="map_canvas" style="width: 100%; height: 800px; margin: 0px 0px 0px 0px; float: middle;"></div>
</body> </html>
public/qp/Z10/426/847.png
public/qp/Z10/426/848.png
public/qp/Z10/427/847.png
public/qp/Z10/427/848.png
public/qp/Z11/853/1695.png
public/qp/Z11/853/1696.png
public/qp/Z11/854/1694.png
public/qp/Z11/854/1695.png
public/qp/Z11/854/1696.png
public/qp/Z11/855/1694.png
public/qp/Z11/855/1695.png
public/qp/Z11/855/1696.png
public/qp/Z2/1/3.png
public/qp/Z4/6/13.png
public/qp/Z5/13/26.png
public/qp/Z6/26/52.png
public/qp/Z6/26/53.png
public/qp/Z7/53/105.png
public/qp/Z7/53/106.png
public/qp/Z8/106/211.png
public/qp/Z8/106/212.png
public/qp/Z9/213/423.png
public/qp/Z9/213/424.png
public/static/config.js
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-02-21 14:16:56
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-04-18 14:21:13
 * @LastEditTime: 2023-04-19 10:41:50
 * @FilePath: \srs-police-affairs\public\static\config.js
 * @Description: 
 * 
@@ -45,7 +45,7 @@
    // 栅格地图的
    // VUE_APP_MAP_YX: 'http://10.141.11.11:80/ysapi',
    VUE_APP_MAP_YX: 'http://10.141.11.12:80/gj',
    VUE_APP_MAP_YX: 'http://10.141.11.11:80/gj',
    VUE_APP_MAP_SL: 'http://10.141.11.11:80/slapi',
    VUE_APP_MAP_DX: 'http://10.141.11.12:80/DEM',
    VUE_APP_MAP_DX: 'http://10.141.11.11:80/DEM',
}
src/api/dept/index.js
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-11-30 15:18:29
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-04-17 17:11:15
 * @LastEditTime: 2023-04-18 19:27:38
 * @FilePath: \srs-police-affairs\src\api\dept\index.js
 * @Description:
 *
@@ -66,8 +66,8 @@
export const getAoiByPt = (lng, lat, height, adcode, tolerance) => {
    return request({
        // url: '/sf3d/area/getAoiByPt',
        // url: '/sf3d/area/stdgetAoiByPt',
        url: '/data/getAoiByBgId.json',
        url: '/sf3d/area/stdgetAoiByPt',
        // url: '/data/getAoiByBgId.json',
        method: 'get',
        authorization: false,
        requestBaseUrl: 'fengt',
@@ -106,11 +106,11 @@
export const getHouses = (build_id, adcode) => {
    return request({
        // url: '/sf3d/build/houses',
        // url: '/sf3d/build/stdhouses',
        url: '/data/huafu15d.json',
        url: '/sf3d/build/stdhouses',
        // url: '/data/huafu15d.json',
        method: 'get',
        authorization: false,
        // requestBaseUrl: 'fengt',
        requestBaseUrl: 'fengt',
        params: {
            build_id,
            adcode
@@ -146,8 +146,8 @@
 */
export const getSearchExtensivelyBgAoiDeepdata = (ak, region, ids, infos) => {
    return request({
        // url: '/zhs/bs/search',
        url: '/data/汇成观邸.json',
        url: '/zhs/bs/search',
        // url: '/data/汇成观邸.json',
        method: 'get',
        // requestBaseUrl: 'fengtDS',
        params: {
@@ -170,7 +170,7 @@
        url: '/data/汇成观邸-户室.json',
        // url: '/data/阳光小区独栋.json',
        method: 'get',
        // requestBaseUrl: 'fengtDS',
        requestBaseUrl: 'fengtDS',
        params: {
            ak,
            region,
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-04-18 14:55:01
 * @LastEditTime: 2023-04-19 15:03:27
 * @FilePath: \srs-police-affairs\src\components\map\index.vue
 * @Description: 公用地图组件
 * 
@@ -44,6 +44,7 @@
                    <div class="title">
                        底图
                        <div class="close" @click.stop="showImgBtn = false">
                            <img src="/img/icon/close.png" alt="">
                        </div>
                    </div>
@@ -297,10 +298,12 @@
            // 地形数据添加
            this.addTerrain()
            that.addTerrain()
            // 外网
            // global.viewer.imageryLayers.addImageryProvider(
            //     new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
            //         url: 'http://t{s}.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=e45274b0235bb913eceb393aabbf9c9c',
            //         url: 'http://t{s}.tianditu.gov.cn/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=d083e4cf30bfc438ef93436c10c2c20a',
            //         subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],
            //         format: 'image/jpeg',
            //         show: true,
@@ -552,7 +555,6 @@
                }
            document.querySelector('.dc-zoom-controller .refresh svg title').innerHTML = '初始化位置'
        })
    },
@@ -688,6 +690,24 @@
            // baseLayers.push(layer)
            const qp = global.viewer.imageryLayers.addImageryProvider(
                new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({
                    url: `/qp/{AZ}/{y}/{x}.png`,
                    customTags: {
                        AZ (imageryProvider, x, y, level) {
                            return 'Z' + level
                        },
                    },
                    minimumLevel: 0,
                    maximumLevel: 25,
                })
            )
            qp.contrast = 0.8
            baseLayers.push(qp)
            yxLayerJson.forEach(item => {
                let rectangle = {}
@@ -759,6 +779,7 @@
        addTerrain () {
            projectTerrain = global.DC.TerrainFactory.createUrlTerrain({
                // url: `http://data.marsgis.cn/terrain`
                url: `${window.BASE_URL_CONFIG.VUE_APP_MAP_DX}`
            })
@@ -1152,6 +1173,11 @@
                shadows: global.DC.Namespace.Cesium.ShadowMode.DISABLED
            })
            tilesetObject[titlesetName].setHeight(10)
            // 地形数据添加
            // tilesetObject[titlesetName].setHeight(-73)
            tilesetLayer.addOverlay(tilesetObject[titlesetName])
            // global.viewer.flyTo(tilesetObject[titlesetName])removeMxTileset
@@ -1222,8 +1248,8 @@
                        polygonHierarchy: new global.DC.Namespace.Cesium.PolygonHierarchy(
                            global.DC.Namespace.Cesium.Cartesian3.fromDegreesArray(floorPositions),
                        ),
                        extrudedHeight: 80,//分层顶部海拔
                        height: 50,//分层底部海拔
                        extrudedHeight: maxHeight + 10,//分层顶部海拔
                        height: minHeight + 10,//分层底部海拔
                    }),
                    attributes: {
src/styles/dc/index.scss
@@ -180,25 +180,6 @@
        display: flex;
        flex-direction: column;
        .title {
            .close {
                position: absolute;
                right: 5px;
                top: 0;
            }
            .close::before {
                font-family: element-icons;
                content: '\e6db';
                cursor: pointer;
                font-size: 16px;
            }
            .close:hover::before {
                color: #3d95f3;
            }
        }
        .content {
            display: flex;
        }
src/styles/icon/index.scss
@@ -73,4 +73,15 @@
    content: "替";
    font-size: countSizeVh(16);
    visibility: hidden;
}
.el-icon-police-track {
    background: url(/img/draw/track.png) center no-repeat;
    background-size: countSizeVh(16) countSizeVh(16);
}
.el-icon-police-track:before {
    content: "替";
    font-size: countSizeVh(16);
    visibility: hidden;
}
src/styles/media/index.scss
@@ -79,6 +79,22 @@
                                height: countSizeVh(320);
                            }
                            .case-box {
                                .duty-information-box {
                                    padding: countSizeVh(16);
                                    flex: 1;
                                    &>div {
                                        padding: countSizeVh(10);
                                    }
                                    span {
                                        line-height: countSizeVh(36);
                                    }
                                }
                            }
                            .person-box,
                            .house-box,
                            .land-box,
@@ -2475,8 +2491,32 @@
                            height: countSizeVh(32);
                            line-height: countSizeVh(32);
                            text-align: left;
                            .close {
                                position: absolute;
                                right: 5px;
                                top: 0;
                                overflow: hidden;
                                img {
                                    width: countSizeVh(16);
                                    height: countSizeVh(16);
                                    cursor: pointer;
                                }
                            }
                            .close:hover {
                                img {
                                    transform: translate(countSizeVh(100), 0);
                                    filter: drop-shadow(countSizeVh(-100) 0px #3d95f3);
                                }
                            }
                        }
                        .content {
                            padding: 0 countSizeVw(8, 1920);
                            height: countSizeVh(66);
src/utils/turfPolygon.js
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-31 10:52:25
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-04-04 15:55:33
 * @LastEditTime: 2023-04-18 20:13:04
 * @FilePath: \srs-police-affairs\src\utils\turfPolygon.js
 * @Description: 
 * 
@@ -10,31 +10,91 @@
 */
import * as turf from '@turf/turf'
export const computerCapacity = (data, type) => {
    if (type == 'region') {
        console.log('computerCapacity', data)
        const pointArr = data.reduce((pre, cur) => {
            cur.position && JSON.parse(cur.position).coordinates[0][0].forEach(item => {
                console.log(item, 959)
                item[0] && item[1] && pre.push(turf.point(item))
            })
function getAllRegionCenter (data) {
    let arr = []
            return pre
        }, [])
    data.forEach(item => {
        if (item.position && item.position.length > 0) {
            arr.push(getRegionCenter(item.position))
        }
    })
    arr.push(arr[0])
    if (arr.length == 1) {
        return arr[0]
    } else if (arr.length == 2) {
        return turf.centroid(turf.midpoint(turf.point(arr[0]), turf.point(arr[1]))).geometry.coordinates
    } else {
        arr.push(arr[0])
        return turf.centroid(turf.polygon([arr])).geometry.coordinates
    }
}
function getRegionCenter (params) {
    let arr = []
    params.forEach(areaArray => {
        JSON.parse(areaArray).coordinates.forEach(item => {
            arr.push(turf.centroid(turf.polygon([item[0]])).geometry.coordinates)
        })
    })
    if (arr.length == 1) {
        return arr[0]
    } else if (arr.length == 2) {
        return turf.centroid(turf.midpoint(turf.point(arr[0]), turf.point(arr[1]))).geometry.coordinates
    } else {
        arr.push(arr[0])
        return turf.centroid(turf.polygon([arr])).geometry.coordinates
    }
}
        const features = turf.featureCollection(pointArr)
        const scope = turf.envelope(features).bbox
export const computerCapacity = (data, type = '') => {
        const poly = turf.polygon([[[scope[0], scope[1]], [scope[0], scope[3]], [scope[2], scope[1]], [scope[2], scope[3]]]])
    if (type != '') {
        const scaledPoly = turf.transformScale(poly, 3)
        const center = getAllRegionCenter(data)
        console.log(scope, scaledPoly, 5555)
        if (type == 'all') {
            global.viewer.flyToPosition(
                new global.DC.Position(
                    Number(center[0] + 0.03),
                    Number(center[1] - 0.30),
                    Number(36000),
                    Number(-3),
                    Number(-45),
                    Number(0)
                ),
                function () { },
                3
            )
        } else {
            global.viewer.flyToPosition(
                new global.DC.Position(
                    Number(center[0] + 0.0046),
                    Number(center[1] - 0.04),
                    Number(4000),
                    Number(-3),
                    Number(-45),
                    Number(0)
                ),
                function () { },
                3
            )
        }
    } else {
        let pointArr = []
        console.log('data', data)
        data.forEach(item => {
            if (item.longitude && item.latitude) {
                pointArr.push(turf.point([item.longitude, item.latitude]))
@@ -50,8 +110,6 @@
        const features = turf.featureCollection(pointArr)
        const scope = turf.envelope(features).bbox
        console.log(scope, 5555)
        // const poly = turf.polygon([[[0, 29], [3.5, 29], [2.5, 32], [0, 29]]])
src/views/activity/index.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-24 16:36:55
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-04-17 17:32:41
 * @LastEditTime: 2023-04-18 20:12:05
 * @FilePath: \srs-police-affairs\src\views\activity\index.vue
 * @Description: 
 * 
@@ -199,8 +199,9 @@
import publicIndex from './components/publicIndex.vue'
import { initMapPosition } from '@/utils/mapPositionInit'
import { computerCapacity } from "@/utils/turfPolygon.js"
import { getPoliceStationTree } from '@/api/home/'
let regionAllData = []
let loading = null
let cameraList = []
@@ -452,6 +453,9 @@
            this.activeDeleteLineOrPoint(type)
        })
        getPoliceStationTree(1).then(res => {
            regionAllData = res.data.data
        })
    },
    mounted () {
@@ -670,6 +674,19 @@
                type: 'HeatLayer'
            })
            if (e2.checkedNodes.some(item => item.$treeNodeId == e1.$treeNodeId)) {
                if (this.userInfo.dept_id == '1123598813738675201') {
                    computerCapacity(regionAllData, 'all')
                } else {
                    let arr = regionAllData.find(item => item.id == this.userInfo.dept_id)
                    // 获取图标中心跳转
                    computerCapacity([arr], 'single')
                }
            }
            if (e1.label == '热力图' && e2.checkedKeys.some(item => {
                return item == 777
            })) {
@@ -725,8 +742,6 @@
                } else if (e1.label == '执法记录仪') {
                    iconArr = policeCarmeraList
                }
                // 获取图标中心跳转
                computerCapacity(iconArr, 'icon')
            }
        },
src/views/home/components/leftContainer.vue
@@ -46,10 +46,10 @@
                <defs>
                    <path id="border-box-8-path-974b4d7cfafa444396861ca1d1173c8c"
                        d="M0.27,0.03c52.66,0,105.34,0,158,0c1.67,2,3.33,4,5,6c1,0.33,2,0.67,3,1c1.33,1.67,2.67,3.33,4,5
                                                                                                                                                                                                                    c16,0,32,0,48,0c53.66,0,107.34,0,161,0c1.13,1.72,0.63,1.36,3,2c0,0.67,0,1.33,0,2c0.67,0,1.33,0,2,0
                                                                                                                                                                                                                    c0.01,104.58,0.01,206.44,0,309c-1.43,0.78-4.01,2.77-5,4c-12,0-24,0-36,0c-2.67-3.33-5.33-6.67-8-10c-21,0-42,0-63,0
                                                                                                                                                                                                                    c-1.08,2.32-2.35,4.25-4,6c-0.67,0.33-1.33,0.67-2,1c-0.33,1-0.67,2-1,3c-20,0-40,0-60,0c-66.66,0-133.34,0-200,0
                                                                                                                                                                                                                    c-1.28-1.57-2.76-2.25-4-4c-0.33,0-0.67,0-1,0c0-8.67,0-17.33,0-26c0-19.66,0-39.34,0-59C0.27,160.04,0.27,80.02,0.27,0.03z"
                                                                                                                                                                                                                                c16,0,32,0,48,0c53.66,0,107.34,0,161,0c1.13,1.72,0.63,1.36,3,2c0,0.67,0,1.33,0,2c0.67,0,1.33,0,2,0
                                                                                                                                                                                                                                c0.01,104.58,0.01,206.44,0,309c-1.43,0.78-4.01,2.77-5,4c-12,0-24,0-36,0c-2.67-3.33-5.33-6.67-8-10c-21,0-42,0-63,0
                                                                                                                                                                                                                                c-1.08,2.32-2.35,4.25-4,6c-0.67,0.33-1.33,0.67-2,1c-0.33,1-0.67,2-1,3c-20,0-40,0-60,0c-66.66,0-133.34,0-200,0
                                                                                                                                                                                                                                c-1.28-1.57-2.76-2.25-4-4c-0.33,0-0.67,0-1,0c0-8.67,0-17.33,0-26c0-19.66,0-39.34,0-59C0.27,160.04,0.27,80.02,0.27,0.03z"
                        fill="transparent" />
                    <radialGradient id="border-box-8-gradient-974b4d7cfafa444396861ca1d1173c8c" cx="50%" cy="50%" r="50%">
                        <stop offset="0%" stop-color="#fff" stop-opacity="1" />
@@ -59,10 +59,10 @@
                        <circle cx="0" cy="0" r="150" fill="url(#border-box-8-gradient-974b4d7cfafa444396861ca1d1173c8c)">
                            <animateMotion dur="8s"
                                path="M0.27,0.03c52.66,0,105.34,0,158,0c1.67,2,3.33,4,5,6c1,0.33,2,0.67,3,1c1.33,1.67,2.67,3.33,4,5
                                                                                                                                                                                                                            c16,0,32,0,48,0c53.66,0,107.34,0,161,0c1.13,1.72,0.63,1.36,3,2c0,0.67,0,1.33,0,2c0.67,0,1.33,0,2,0
                                                                                                                                                                                                                            c0.01,104.58,0.01,206.44,0,309c-1.43,0.78-4.01,2.77-5,4c-12,0-24,0-36,0c-2.67-3.33-5.33-6.67-8-10c-21,0-42,0-63,0
                                                                                                                                                                                                                            c-1.08,2.32-2.35,4.25-4,6c-0.67,0.33-1.33,0.67-2,1c-0.33,1-0.67,2-1,3c-20,0-40,0-60,0c-66.66,0-133.34,0-200,0
                                                                                                                                                                                                                            c-1.28-1.57-2.76-2.25-4-4c-0.33,0-0.67,0-1,0c0-8.67,0-17.33,0-26c0-19.66,0-39.34,0-59C0.27,160.04,0.27,80.02,0.27,0.03z"
                                                                                                                                                                                                                                        c16,0,32,0,48,0c53.66,0,107.34,0,161,0c1.13,1.72,0.63,1.36,3,2c0,0.67,0,1.33,0,2c0.67,0,1.33,0,2,0
                                                                                                                                                                                                                                        c0.01,104.58,0.01,206.44,0,309c-1.43,0.78-4.01,2.77-5,4c-12,0-24,0-36,0c-2.67-3.33-5.33-6.67-8-10c-21,0-42,0-63,0
                                                                                                                                                                                                                                        c-1.08,2.32-2.35,4.25-4,6c-0.67,0.33-1.33,0.67-2,1c-0.33,1-0.67,2-1,3c-20,0-40,0-60,0c-66.66,0-133.34,0-200,0
                                                                                                                                                                                                                                        c-1.28-1.57-2.76-2.25-4-4c-0.33,0-0.67,0-1,0c0-8.67,0-17.33,0-26c0-19.66,0-39.34,0-59C0.27,160.04,0.27,80.02,0.27,0.03z"
                                rotate="auto" repeatCount="indefinite" />
                        </circle>
                    </mask>
@@ -149,6 +149,7 @@
let houseMyChart
let landMyChart
let timer
let curSubofficeData
let leftTiming = null
let keyPeopleDataLength = 0
@@ -356,7 +357,7 @@
            getVillagePersonStatisticInfo().then(res => {
                if (res.data.code == 200) {
                    this.disposeEchart()
                    curSubofficeData = res.data.data
                    this.personAll = res.data.data
                    this.policeStationPersonInfo = res.data.data
@@ -383,6 +384,7 @@
        getVillagePersonStatisticInfoByPoliceStationId (policeStationId, name) {
            getVillagePersonStatisticInfoByPoliceStationId(policeStationId, name).then(res => {
                if (res.data.code == 200) {
                    this.disposeEchart()
                    var chartDom = document.getElementById('PersonEcharts')
                    homePersonmyChart = this.$echarts.init(chartDom)
@@ -567,6 +569,7 @@
         * @return {*}
         */
        backBegin () {
            this.personAll = curSubofficeData
            this.dataDeep = 1
            this.initPersonEcharts()
            this.$parent.getAllPoliceStationCenter()
src/views/home/components/rightContainer.vue
@@ -24,19 +24,31 @@
                    </div>
                </div>
                <div class="table-box" v-show="showMJL">
                    <el-table size="small" :height="tableHeight" :data="schedulingList" style="width: 100%" empty-text=" "
                        :show-header="false" :header-cell-style="{ 'text-align': 'center' }"
                        :cell-style="{ 'text-align': 'left', borderColor: '#324e75' }" :row-class-name="tableRowClassName"
                        v-loading="schedulingLoading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading"
                        element-loading-background="rgba(0, 0, 0, 0.5)">
                        <el-table-column :show-overflow-tooltip="true" v-for="(item, index) in transTitle" :label="item"
                            :key="index" align="center">
                            <template slot-scope="scope">
                                {{ scope.row[index] }}
                            </template>
                        </el-table-column>
                    </el-table>
                <div class="duty-information-box" v-show="showMJL">
                    <div>
                        <div>
                            <span>
                                值班
                            </span>
                        </div>
                        <div>
                            <span>
                                徐星逸,任圣日,娄永攀,蔡善龙,陈小强,刘开勇,梅祥,吕镇,付建冬
                            </span>
                        </div>
                    </div>
                    <div>
                        <div>
                            <span>
                                副班、巡逻
                            </span>
                        </div>
                        <div>
                            <span>
                                章正椿,夏文翔,叶江明,黄俊龙,苏茯林,王顺祥
                            </span>
                        </div>
                    </div>
                </div>
            </div>
@@ -206,7 +218,7 @@
            policeStaionID: "",
            showMJL: false,
            originTitle: ['值班', '副班、巡逻'],
            transTitle: ['人员', '人员'],
            transTitle: [{ label: '人员', width: '28%', align: 'center' }, { label: '人员', width: '', align: 'left' },],
        }
    },
@@ -488,6 +500,7 @@
                }
            } else {
                option = {
                    color: ['#5470C6', '#73C0DE', '#EE6666', '#FAC858'],
                    tooltip: {
                        trigger: "item",
                        formatter:
@@ -507,7 +520,10 @@
                        },
                    },
                    legend: {
                        data: ['盗窃', '诈骗', '纠纷', '其他']
                        data: ['盗窃', '诈骗', '纠纷', '其他'],
                        textStyle: {
                            color: "#fff"
                        }
                    },
                    yAxis: {
                        type: "value",
@@ -1132,16 +1148,65 @@
                }
            }
            :deep(.el-table .cell) {
                // white-space: pre-line;
                white-space: pre-wrap;
                height: 100% !important;
                line-height: 3.4vh !important;
            :deep(.el-table) {
                .cell {
                    // white-space: pre-line;
                    white-space: pre-wrap;
                    height: 100% !important;
                    line-height: 3.2 !important;
                }
                .el-table__body-wrapper {
                    height: 100% !important;
                    overflow: hidden;
                    .el-table__body {
                        width: 100% !important;
                        height: 100% !important;
                        tbody {
                            width: 100% !important;
                            height: 100% !important;
                            td {
                                flex: 1;
                            }
                        }
                    }
                }
            }
        }
        .duty-information-box {
            height: 100%;
            &>div:first-child {
                background: $table-body-tr-n-color;
            }
            :deep(.el-table .el-table__body-wrapper) {
                height: 100% !important;
                overflow: hidden;
            &>div:last-child {
                background: $table-body-tr-2n-color;
            }
            &>div {
                display: flex;
                height: 50%;
                &>div {
                    display: flex;
                    align-items: center;
                }
                &>div:first-child {
                    width: 28%;
                    justify-content: center;
                }
                &>div:last-child {
                    width: 72%;
                    text-align: left;
                }
            }
        }
src/views/home/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-04-18 09:19:50
 * @LastEditTime: 2023-04-19 15:02:38
 * @FilePath: \srs-police-affairs\src\views\home\index.vue
 * @Description: 小区-栋-层-房屋
 *
@@ -1433,6 +1433,7 @@
                            stroke: positionColor[index],
                            fill: positionColor[index], //注意:颜色必须大写,即不能为blue
                            strokeWidth: 0,
                            clampToGround: true
                        }).then(function (dataSource) {
                            DataSourcesArray.push(dataSource)
                            that.areaPolygonLayerShow == false ? dataSource.show = false : dataSource.show = true
@@ -1522,6 +1523,7 @@
                        stroke: positionColor[index],
                        fill: positionColor[index], //注意:颜色必须大写,即不能为blue
                        strokeWidth: 0,
                        clampToGround: true
                    }).then(function (dataSource) {
                        DataSourcesArray.push(dataSource)
src/views/house/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-04-09 15:48:43
 * @LastEditTime: 2023-04-18 20:29:31
 * @FilePath: \srs-police-affairs\src\views\house\index.vue
 * @Description: 小区-栋-层-房屋
 * 
@@ -202,6 +202,7 @@
                                                @click="residentDetailsClick(value)"
                                                :class="{ on: floorChoosed == value.sname }">
                                                {{ value.sname }}室
                                                <div class="warning"></div>-->
                                            </div>
                                        </div>
                                    </div>
@@ -262,7 +263,8 @@
                        <el-table :data="callPoliceData" style="width: 100%" :height="currentTableHeight"
                            :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
                            :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }"
                            :row-class-name="tableRowClassName" :empty-text="jqNoDataText" class="police-infor-table">
                            :row-class-name="tableRowClassName" :empty-text="jqNoDataText" class="police-infor-table"
                            @cell-click="housingPoliceSiteClick">
                            <el-table-column prop="JJDWMC" :show-overflow-tooltip="true" label="接警单位"
                                min-width="80%"></el-table-column>
                            <el-table-column label="报警时间" prop="BJSJ" min-width="50%">
@@ -273,10 +275,6 @@
                                    <el-button v-if="!whetherPosition(scope.row)" @click="clickData(scope.row)" type="text"
                                        size="small" title="定位">
                                        <i class="el-icon-location" :style="{ color: positionColor(scope.row) }"></i>
                                    </el-button>
                                    <el-button @click="housingPoliceSiteClick(scope.row)" type="text" size="small"
                                        title="详情">
                                        <i class="el-icon-document"></i>
                                    </el-button>
                                </template>
                            </el-table-column>
@@ -1136,7 +1134,7 @@
        buildingClick (item, aoiArr) {
            if (this.buildingChoosed.name == item.name) return
            this.isBuildHighLightchecked = true
            this.unitChoosedArr = []
            this.unitHouseChoosed = []
            this.pictLoading = true
            if (!aoiArr) {
                this.$EventBus.$emit("clearHouse3D")
@@ -1144,8 +1142,9 @@
                    ...item,
                    siteJd: Number(item.siteJd),
                    siteWd: Number(item.siteWd) - 0.0021,
                    siteGd: 240,
                    sitePitch: -45,
                    siteGd: 600,
                    // siteGd: 1500,
                    sitePitch: -60,
                })
            }
            this.buildingChoosed = item
@@ -1155,14 +1154,8 @@
            this.choosedBuildId = item.build_id
            // 重点人口户籍人口
            this.getVillagePersonStatisticInfoByBuildId(item.build_id)
            // 获取楼栋三维数据
            this.getHouses3DData(item.build_id, "361102", aoiArr)
            // 获取楼栋列表数据
            this.getUnitHousesData(
                "ebf48ecaa1fd436fa3d40c4600aa051f",
                "361102",
                item.build_id,
                "1|3")
            // 楼栋单元楼层户室查询
            this.getHouses(item.build_id, "361102", aoiArr)
            this.floorsType = 1
            document.querySelector(".floor-num").style.left = "0px"
            this.lastFloorShow = false
@@ -1634,7 +1627,7 @@
            getResidentialQuartersInfo(area_id, adcode).then((res) => {
                let positionStr = ""
                res.data.data.geometry.coordinates[0].forEach((item) => {
                    positionStr += item[0] + "," + item[1] + "," + "10;"
                    positionStr += item[0] + "," + item[1] + "," + "100;"
                })
                if (wallLayer != null) {
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-04-09 04:17:48
 * @LastEditTime: 2023-04-18 20:34:25
 * @FilePath: \srs-police-affairs\src\views\police\index.vue
 * @Description: 辖区管理
 * 
@@ -54,7 +54,7 @@
                                    </el-button>
                                    <el-button v-show="navType == 0 || navType == 2" @click="equipmentTrack(scope.row)"
                                        type="text" size="small" title="轨迹">
                                        <i class="el-icon-position"></i>
                                        <i class="el-icon-police-track"></i>
                                    </el-button>
                                    <el-button @click="play(scope.row)" type="text" size="small" title="播放视频">
                                        <i class="el-icon-video-play"></i>
vue.config.js
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-09-07 09:37:07
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-04-12 16:21:17
 * @LastEditTime: 2023-04-19 12:04:13
 * @FilePath: \srs-police-affairs\vue.config.js
 * @Description:
 *
@@ -95,6 +95,10 @@
                    from: "./public/images",
                    to: "images",
                },
                {
                    from: "./public/qp",
                    to: "qp",
                },
            ],
        ])