shuishen
2023-04-01 23d464d4e6469a3628572026d5fda7fc56946b4e
首页业务图层加载,及定位
3 files modified
1 files added
161 ■■■■ changed files
src/components/map/index.vue 4 ●●●● patch | view | raw | blame | history
src/utils/mapPositionInit.js 21 ●●●●● patch | view | raw | blame | history
src/views/home/index.vue 130 ●●●●● patch | view | raw | blame | history
vue.config.js 6 ●●●● patch | view | raw | blame | history
src/components/map/index.vue
@@ -873,8 +873,8 @@
            if (type == "billboard") {
                // pointElement = new global.DC.Billboard(new global.DC.Position(Number(params.lng), Number(params.lat), Number(alt)), params.url)
                pointElement = new global.DC.Billboard(new global.DC.Position(Number(params.lng), Number(params.lat), 4), params.url)
                pointElement.setStyle({
                    disableDepthTestDistance: Number.POSITIVE_INFINITY
                params.disableDepthTestDistance && pointElement.setStyle({
                    disableDepthTestDistance: params.disableDepthTestDistance
                })
                pointElement.size = [32, 32]
                pointElement.attrParams = params
src/utils/mapPositionInit.js
New file
@@ -0,0 +1,21 @@
export const initMapPosition = () => {
    // 需要做判断
    // 分局的
    const homeCenter = [117.99311892441567, 28.46938164123123]
    global.viewer.flyToPosition(
        new global.DC.Position(
            Number(homeCenter[0] + 0.046),
            Number(homeCenter[1] - 0.36),
            Number(36000),
            Number(-3),
            Number(-45),
            Number(0)
        ),
        function () { },
        3
    )
    // 加派出所的
}
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-01 10:58:03
 * @LastEditTime: 2023-04-01 11:24:57
 * @FilePath: \srs-police-affairs\src\views\home\index.vue
 * @Description: 小区-栋-层-房屋
 *
@@ -131,17 +131,17 @@
    <el-dialog :title="keyPersonTitle" :modal="true" :visible.sync="keyPersonVisible" :before-close="personInfoClose"
        :close-on-click-modal="true" class="keyPerson-details-box">
        <!-- <div class="header" v-show="!isMaoJiaLin">
                                                                                                                                                                                                                                                                                        <div>
                                                                                                                                                                                                                                                                                            人员名称:
                                                                                                                                                                                                                                                                                            <input type="text" v-model="peoplePoliceName" placeholder="请输入人员名称" />
                                                                                                                                                                                                                                                                                        </div>
                                                                                                                                                                                                                                                                                        <div>
                                                                                                                                                                                                                                                                                            联系电话:
                                                                                                                                                                                                                                                                                            <input type="text" v-model="peopleCallPhone" placeholder="请输入联系电话" />
                                                                                                                                                                                                                                                                                        </div>
                                                                                                                                                                                                                                                                                        <el-button type="primary" icon="el-icon-search" @click="searchPeopleDetail">搜索</el-button>
                                                                                                                                                                                                                                                                                        <el-button type="primary" icon="el-icon-delete" @click="clearPeopleDetailSearchValue">清空</el-button>
                                                                                                                                                                                                                                                                                    </div> -->
                                                                                                                                                                                                                                                                                                                                                                                <div>
                                                                                                                                                                                                                                                                                                                                                                                    人员名称:
                                                                                                                                                                                                                                                                                                                                                                                    <input type="text" v-model="peoplePoliceName" placeholder="请输入人员名称" />
                                                                                                                                                                                                                                                                                                                                                                                </div>
                                                                                                                                                                                                                                                                                                                                                                                <div>
                                                                                                                                                                                                                                                                                                                                                                                    联系电话:
                                                                                                                                                                                                                                                                                                                                                                                    <input type="text" v-model="peopleCallPhone" placeholder="请输入联系电话" />
                                                                                                                                                                                                                                                                                                                                                                                </div>
                                                                                                                                                                                                                                                                                                                                                                                <el-button type="primary" icon="el-icon-search" @click="searchPeopleDetail">搜索</el-button>
                                                                                                                                                                                                                                                                                                                                                                                <el-button type="primary" icon="el-icon-delete" @click="clearPeopleDetailSearchValue">清空</el-button>
                                                                                                                                                                                                                                                                                                                                                                            </div> -->
            <el-table :data="keyPersonDetailArr" style="width: 100%"
                :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
@@ -169,10 +169,10 @@
            </el-table>
            <!-- <div class="pages all-pagination-sty" ref="tablePagination" v-show="!isMaoJiaLin">
                                                                                                                                                                                                                                                                       <el-pagination background layout="prev, pager, next, total" :page-size="peoplePage.pageSize"
                                                                                                                                                                                                                                                                           :total="peoplePage.total" :current-page="peoplePage.currentPage"
                                                                                                                                                                                                                                                                           @current-change="handlePersonPageChange"></el-pagination>
                                                                                                                                                                                                                                                                 </div> -->
                                                                                                                                                                                                                                                                                                                                                               <el-pagination background layout="prev, pager, next, total" :page-size="peoplePage.pageSize"
                                                                                                                                                                                                                                                                                                                                                                   :total="peoplePage.total" :current-page="peoplePage.currentPage"
                                                                                                                                                                                                                                                                                                                                                                   @current-change="handlePersonPageChange"></el-pagination>
                                                                                                                                                                                                                                                                                                                                                         </div> -->
        </el-dialog>
        <el-dialog :title="equimentTitle" :modal="true" :visible.sync="equimentVisible" :before-close="equimentBeforeClose"
@@ -515,6 +515,8 @@
import landDetailsBox from './components/dialog/landDetailsBox.vue'
import { initMapPosition } from '@/utils/mapPositionInit'
export default {
    inject: ['userInfo'],
@@ -564,8 +566,6 @@
                phone: "",
            },
            houseList: [],
            carList: [],
            cameraList: [],
            monitoringList: [],
            panoramaList: [],
@@ -774,9 +774,6 @@
                        id: 1
                    })
                    this.getEquipmentAll({ type: 0, deptId: this.userInfo.dept_id })
                    this.getEquipmentAll({ type: 1, deptId: this.userInfo.dept_id })
                    if (this.userInfo.dept_id != '1123598813738675201') {
                        let currentItem
@@ -831,22 +828,12 @@
        },
        getEquipmentAll (params) {
            this.$EventBus.$emit('mapClearLayer', {
                layerName: 'carLayers',
                type: 'VectorLayer'
            })
            this.$EventBus.$emit('mapClearLayer', {
                layerName: 'cameraLayers',
                type: 'VectorLayer'
            })
            this.loading()
            getEquipmentAll({ ...params }).then(res => {
                if (params.type == 0) {
                    this.carList = res.data.data
                    if (this.carList.length > 0) {
                        this.carList.forEach(item => {
                    if (res.data.data.length > 0) {
                        res.data.data.forEach(item => {
                            if (item.longitude && item.latitude) {
                                this.$EventBus.$emit('layerPointAdd', {
                                    layerName: 'carLayers',
@@ -856,34 +843,18 @@
                                        ...item,
                                        lng: item.longitude,
                                        lat: item.latitude,
                                        url: '/img/icon/car.png'
                                        url: '/img/icon/car.png',
                                        disableDepthTestDistance: Number.POSITIVE_INFINITY
                                    },
                                    incident: this.phoneSiteClick
                                })
                            }
                        })
                        this.carChange(this.carLayerShow)
                    }
                } else {
                    this.cameraList = res.data.data
                    if (this.cameraList.length > 0) {
                        this.cameraList.forEach(item => {
                    if (res.data.data.length > 0) {
                        res.data.data.forEach(item => {
                            if (item.longitude && item.latitude) {
                                this.$EventBus.$emit('layerPointAdd', {
                                    layerName: 'cameraLayers',
                                    type: 'label',
                                    layerType: 'ClusterLayer',
                                    params: {
                                        lng: item.longitude,
                                        lat: item.latitude,
                                        alt: 1,
                                        text: item.name
                                    },
                                    distanceDisplayCondition: { "near": 0, "far": 200000 }
                                })
                                this.$EventBus.$emit('layerPointAdd', {
                                    layerName: 'cameraLayers',
                                    type: "billboard",
@@ -892,16 +863,18 @@
                                        ...item,
                                        lng: item.longitude,
                                        lat: item.latitude,
                                        url: '/img/icon/camera.png'
                                        url: '/img/icon/camera.png',
                                        disableDepthTestDistance: Number.POSITIVE_INFINITY
                                    },
                                    incident: this.siteClick
                                })
                            }
                        })
                        this.cameraChange(this.cameraLayerShow)
                    }
                }
                this.closeLoading()
            })
        },
@@ -974,8 +947,6 @@
                this.policeStaionID = ''
                this.getEquipmentAll({ type: 0, deptId: this.userInfo.dept_id })
                this.getEquipmentAll({ type: 1, deptId: this.userInfo.dept_id })
            } else {
                cylinderLayer.clear()
                this.getPoliceStationTree(2, item.id)
@@ -983,9 +954,6 @@
                this.housingCheckValue = '请选择小区'
                this.policeStaionID = item.id
                this.getEquipmentAll({ type: 0, deptId: this.policeStaionID })
                this.getEquipmentAll({ type: 1, deptId: this.policeStaionID })
            }
            this.$refs.leftContainer.getHomeAllData(this.policeStaionID)
@@ -1090,31 +1058,28 @@
        },
        carChange (e) {
            this.$EventBus.$emit('mapClearLayer', {
                layerName: 'carLayers',
                type: 'VectorLayer'
            })
            if (e == true) {
                this.$EventBus.$emit('layerShow', {
                    layerName: 'carLayers',
                    flag: true
                })
            } else {
                this.$EventBus.$emit('layerShow', {
                    layerName: 'carLayers',
                    flag: false
                })
                initMapPosition()
                this.getEquipmentAll({ type: 0, deptid: this.policeStaionID == '' ? this.userInfo.dept_id : this.policeStaionID })
            }
        },
        cameraChange (e) {
            this.$EventBus.$emit('mapClearLayer', {
                layerName: 'cameraLayers',
                type: 'VectorLayer'
            })
            if (e == true) {
                this.loading()
                this.$EventBus.$emit('layerShow', {
                    layerName: 'cameraLayers',
                    flag: true
                })
            } else {
                this.$EventBus.$emit('layerShow', {
                    layerName: 'cameraLayers',
                    flag: false
                })
                initMapPosition()
                this.getEquipmentAll({ type: 1, deptid: this.policeStaionID == '' ? this.userInfo.dept_id : this.policeStaionID })
            }
        },
@@ -1125,13 +1090,14 @@
                spinner: 'el-icon-loading',
                background: 'rgba(0, 0, 0, 0.2)'
            })
            setTimeout(() => { loading.close() }, 1000)
        },
        closeLoading () {
            console.log('closeLoading---------')
            if (loading != null) {
                loading.close()
                setTimeout(() => {
                    loading.close()
                }, 1000)
            }
        },
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-03-30 15:49:22
 * @LastEditTime: 2023-04-01 11:02:13
 * @FilePath: \srs-police-affairs\vue.config.js
 * @Description:
 *
@@ -161,8 +161,8 @@
        proxy: {
            "/api": {
                // target用于配置你允许访问数据的计算机名称,即是你的api接口的服务器地址
                // target: "http://localhost:82",
                target: "http://192.168.0.100:82",
                target: "http://localhost:82",
                // target: "http://192.168.0.100:82",
                // target: "http://17.20.10.3:82",
                // target: "http://10.141.11.11:8081/api",
                // ws: true, //启用webSocket6566