From 2d4e3633a59e69bcf2ce6b3997c8e5b4bd9f02d8 Mon Sep 17 00:00:00 2001
From: guanqb <18720758508@163.com>
Date: Mon, 06 Feb 2023 20:07:50 +0800
Subject: [PATCH] 社区建筑3D高亮动态显示,社区定位问题,点位查询定位播放和树数据样式修改
---
src/components/map/index.vue | 89 ++++++-
src/views/house/index.vue | 470 +++++++++++++++++++++++++++++++-----------
src/views/video/list.vue | 68 +++--
3 files changed, 450 insertions(+), 177 deletions(-)
diff --git a/src/components/map/index.vue b/src/components/map/index.vue
index 4156614..f32d21a 100644
--- a/src/components/map/index.vue
+++ b/src/components/map/index.vue
@@ -81,6 +81,8 @@
sdTilesetLayer: null
}
+let flootEntitysEntites = null
+
import mapPopup from './components/mapPopup.vue'
export default {
@@ -243,10 +245,10 @@
console.log(e, 989999)
})
- let positions = [[117.9514788, 28.4478968, 0], [117.9514698, 28.4478947, 0], [117.9513974, 28.4476981, 0], [117.9515047, 28.4476748, 0], [117.9515289, 28.4476939, 0], [117.9515508, 28.447755, 0], [117.9516278, 28.4477353, 0], [117.9516623, 28.4478497, 0], [117.9514788, 28.4478968, 0]]
+ // let positions = [[117.9514788, 28.4478968, 0], [117.9514698, 28.4478947, 0], [117.9513974, 28.4476981, 0], [117.9515047, 28.4476748, 0], [117.9515289, 28.4476939, 0], [117.9515508, 28.447755, 0], [117.9516278, 28.4477353, 0], [117.9516623, 28.4478497, 0], [117.9514788, 28.4478968, 0]]
// 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 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
@@ -260,25 +262,29 @@
// 原生Cesium加载多边体
let floorEntitysLayers = new global.DC.Namespace.Cesium.CustomDataSource("floorEntitysLayers")
global.viewer.dataSources.add(floorEntitysLayers)
- let flootEntitysEntites = floorEntitysLayers.entities
+ flootEntitysEntites = floorEntitysLayers.entities
- let floorPositions = positions.reduce((prev, curr, index, arr) => {
- curr.forEach(item => {
- prev.push(item)
- })
- return prev
- }, [])
+ // 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),
- }
- })
+ // 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)
@@ -401,6 +407,14 @@
that.flytoLayer(params.polygonName, params.duration)
})
+ this.$EventBus.$on('showHouse3D', (params) => {
+ that.showHouse3D(params.positions, params.minHeight, params.maxHeight)
+ })
+
+ this.$EventBus.$on('clearHouse3D', () => {
+ that.clearHouse3D()
+ })
+
// 重写定位方法
const homeCenter = [117.99311892441567, 28.46938164123123]
this.$nextTick(() => {
@@ -424,6 +438,7 @@
this.$router.push({ path: '/layout/house', query: { searchName: 'xxx小区' } })
}
},
+
switchImg () {
// 天地图 影像
this.imgtype = 0
@@ -439,6 +454,7 @@
)
this.showImgBtn = false
},
+
switchElec () {
// 天地图 矢量
this.imgtype = 1
@@ -454,6 +470,7 @@
)
this.showImgBtn = false
},
+
/**
* @description: 全屏控制
* @return {*} 无返回值
@@ -486,6 +503,7 @@
this.isFullscreen = true
}
},
+
/**
* 在图层中添加实体(点)
* @param {*} item 图标
@@ -732,6 +750,39 @@
tilesetObject[titlesetName] = null
}
},
+
+ /**
+ * 建筑高亮显示
+ * @param {*} positions 建筑范围坐标
+ * @param {*}
+ */
+ showHouse3D (positions, minHeight, maxHeight) {
+ flootEntitysEntites.removeAll()
+ let housePositions = JSON.parse(positions).coordinates[0]
+
+ let floorPositions = housePositions.reduce((prev, curr) => {
+ 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: minHeight,
+ extrudedHeight: maxHeight,
+ material: global.DC.Namespace.Cesium.Color.RED.withAlpha(0.5),
+ }
+ })
+ },
+
+ // 清除建筑3D
+ clearHouse3D () {
+ flootEntitysEntites.removeAll()
+ },
},
}
diff --git a/src/views/house/index.vue b/src/views/house/index.vue
index 7ffbe63..a717cea 100644
--- a/src/views/house/index.vue
+++ b/src/views/house/index.vue
@@ -13,21 +13,50 @@
<div class="house-page container">
<div v-show="boxShow" class="container-content">
<div v-show="contentShow" class="search-box">
- <el-popover ref="popover" placement="bottom" trigger="manual" v-model="searchTreeShowFlag"
- popper-class="tree-search-popup" @mousedown.native="preventFocusLost">
- <el-tree v-show="searchLazyFlag == true" ref="popupTree" style="overflow: auto;"
- class="select-tree-box" :load="loadNode" :lazy="true" :props="props"
- @current-change="currentChangeHandle" @mousedown.native="preventFocusLost"></el-tree>
+ <el-popover
+ ref="popover"
+ placement="bottom"
+ trigger="manual"
+ v-model="searchTreeShowFlag"
+ popper-class="tree-search-popup"
+ @mousedown.native="preventFocusLost"
+ >
+ <el-tree
+ v-show="searchLazyFlag == true"
+ ref="popupTree"
+ style="overflow: auto;"
+ class="select-tree-box"
+ :load="loadNode"
+ :lazy="true"
+ :props="props"
+ @current-change="currentChangeHandle"
+ @mousedown.native="preventFocusLost"
+ ></el-tree>
- <el-tree v-show="searchLazyFlag == false" :empty-text="treeEmptyText" ref="popupTree"
- style="overflow: auto;" class="select-tree-box" :data="searchTreeData" :props="defaultProps"
- :default-expand-all="true" @current-change="currentChangeHandle"
- @mousedown.native="preventFocusLost"></el-tree>
+ <el-tree
+ v-show="searchLazyFlag == false"
+ :empty-text="treeEmptyText"
+ ref="popupTree"
+ style="overflow: auto;"
+ class="select-tree-box"
+ :data="searchTreeData"
+ :props="defaultProps"
+ :default-expand-all="true"
+ @current-change="currentChangeHandle"
+ @mousedown.native="preventFocusLost"
+ ></el-tree>
</el-popover>
- <el-input ref="searchTreeInput" v-model="searchTreeName" @input="searchInputTree"
- @focus="searchTreeShowFlag = true" @blur="searchTreeShowFlag = false" v-popover:popover
- placeholder="请输入搜索条件" style="cursor: pointer;"></el-input>
+ <el-input
+ ref="searchTreeInput"
+ v-model="searchTreeName"
+ @input="searchInputTree"
+ @focus="searchTreeShowFlag = true"
+ @blur="searchTreeShowFlag = false"
+ v-popover:popover
+ placeholder="请输入搜索条件"
+ style="cursor: pointer;"
+ ></el-input>
</div>
<div v-show="contentShow" class="result-content" ref="resultContentBox">
@@ -39,9 +68,15 @@
<div class="housing-bg">
<div class="block">
<el-carousel height="150px">
- <el-carousel-item v-for="(item, index) in villageInfo.pic_url_list" :key="index">
- <el-image style=" height: 100%" :src="item"
- :preview-src-list="villageInfo.pic_url_list"></el-image>
+ <el-carousel-item
+ v-for="(item, index) in villageInfo.pic_url_list"
+ :key="index"
+ >
+ <el-image
+ style=" height: 100%"
+ :src="item"
+ :preview-src-list="villageInfo.pic_url_list"
+ ></el-image>
</el-carousel-item>
</el-carousel>
</div>
@@ -67,16 +102,42 @@
</div>
<div class="nav-tab" ref="navTabBox">
- <div class="nav" :class="navType == 0 ? 'choosed' : ''" @click="navClick" data-type="0">基本信息</div>
- <div class="nav" :class="navType == 1 ? 'choosed' : ''" @click="navClick" data-type="1">报警信息</div>
+ <div
+ class="nav"
+ :class="navType == 0 ? 'choosed' : ''"
+ @click="navClick"
+ data-type="0"
+ >基本信息</div>
+ <div
+ class="nav"
+ :class="navType == 1 ? 'choosed' : ''"
+ @click="navClick"
+ data-type="1"
+ >报警信息</div>
</div>
<div class="base-info" v-show="navType == 0">
<div class="sub-nav-list">
- <div class="sub-nav" :class="{ on: subNavType == 1 }" @click="subNavType = 1">楼栋</div>
- <div class="sub-nav" :class="{ on: subNavType == 2 }" @click="subNavType = 2">出入口</div>
- <div class="sub-nav" :class="{ on: subNavType == 3 }" @click="subNavType = 3">停车场</div>
- <div class="sub-nav" :class="{ on: subNavType == 4 }" @click="subNavType = 4">商业</div>
+ <div
+ class="sub-nav"
+ :class="{ on: subNavType == 1 }"
+ @click="subNavType = 1"
+ >楼栋</div>
+ <div
+ class="sub-nav"
+ :class="{ on: subNavType == 2 }"
+ @click="subNavType = 2"
+ >出入口</div>
+ <div
+ class="sub-nav"
+ :class="{ on: subNavType == 3 }"
+ @click="subNavType = 3"
+ >停车场</div>
+ <div
+ class="sub-nav"
+ :class="{ on: subNavType == 4 }"
+ @click="subNavType = 4"
+ >商业</div>
</div>
<div class="floor-content" v-show="subNavType == 1">
@@ -87,20 +148,30 @@
<div class="build-outBox" ref="BuildOutBox">
<div class="build-box" style="left: 0px;">
<!-- :style="{ width: `calc(${Math.ceil(buildingList.length / 10)} * (356 / 1920) * 100vw` }" -->
- <div class="ridgepole-list" v-for="index of Math.ceil(buildingList.length / 10)"
- :key="index">
- <div v-for="(item, index) in buildingList.slice((index - 1) * 10, index * 10)"
- :key="index" @click="buildingClick(item)"
- :class="{ on: buildingChoosed.name == item.name }" :title="item.name">
+ <div
+ class="ridgepole-list"
+ v-for="index of Math.ceil(buildingList.length / 10)"
+ :key="index"
+ >
+ <div
+ v-for="(item, index) in buildingList.slice((index - 1) * 10, index * 10)"
+ :key="index"
+ @click="buildingClick(item)"
+ :class="{ on: buildingChoosed.name == item.name }"
+ :title="item.name"
+ >
{{
- item.name
+ item.name
}}
</div>
</div>
</div>
</div>
<div class="nextBtn rightBtn" @click="nextBtn">
- <i v-show="buildingList.length > 10 && nextBtnShow" class="el-icon-caret-right"></i>
+ <i
+ v-show="buildingList.length > 10 && nextBtnShow"
+ class="el-icon-caret-right"
+ ></i>
</div>
</div>
@@ -180,9 +251,19 @@
<div class="condo">
<div class="type">选择单元</div>
<div class="type-select">
- <el-select size="small" v-model="unitValue" placeholder="请选择" @change="chooseUnit">
- <el-option v-for="item in unitOptions" :key="item.value" :label="item.label"
- :value="item.value" class="unit-option"></el-option>
+ <el-select
+ size="small"
+ v-model="unitValue"
+ placeholder="请选择"
+ @change="chooseUnit"
+ >
+ <el-option
+ v-for="item in unitOptions"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value"
+ class="unit-option"
+ ></el-option>
</el-select>
</div>
</div>
@@ -230,38 +311,60 @@
</div>
</div>
</div>-->
- <el-main v-loading="pictLoading" element-loading-background="rgba(17, 38, 163, 0.1)"
- element-loading-text="数据正在加载中" element-loading-spinner="el-icon-loading"
- v-show="isShowHouseBox">
+ <el-main
+ v-loading="pictLoading"
+ element-loading-background="rgba(17, 38, 163, 0.1)"
+ element-loading-text="数据正在加载中"
+ element-loading-spinner="el-icon-loading"
+ v-show="isShowHouseBox"
+ >
<div class="floor-outBox">
- <div @click="lastFloorBtn" class="floorBtn" v-show="lastFloorShow">
+ <div
+ @click="lastFloorBtn"
+ class="floorBtn"
+ v-show="lastFloorShow"
+ >
<i class="el-icon-caret-left"></i>
</div>
<div class="floor-box">
<div class="floor-num" style="left: 0">
- <div :class="{ on: floorsType == index }" @click="floorsType = index"
- v-for="index in Math.ceil(unitHouseChoosed.length / 5)" :key="index">
+ <div
+ :class="{ on: floorsType == index }"
+ @click="floorsType = index"
+ v-for="index in Math.ceil(unitHouseChoosed.length / 5)"
+ :key="index"
+ >
{{ unitHouseChoosed[index * 5 - 5].floor_num }}-{{
- unitHouseChoosed[index *
- 5
- - 1]? unitHouseChoosed[index * 5
- - 1].floor_num : unitHouseChoosed[unitHouseChoosed.length - 1].floor_num
+ unitHouseChoosed[index *
+ 5
+ - 1]? unitHouseChoosed[index * 5
+ - 1].floor_num : unitHouseChoosed[unitHouseChoosed.length - 1].floor_num
}}层
</div>
</div>
</div>
- <div @click="nextFloorBtn" class="floorBtn rightFloorBtn" v-show="nextFloorShow">
+ <div
+ @click="nextFloorBtn"
+ class="floorBtn rightFloorBtn"
+ v-show="nextFloorShow"
+ >
<i class="el-icon-caret-right"></i>
</div>
</div>
<div class="floor-detail">
- <div v-for="(item, index) in unitHouseChoosed.slice((floorsType - 1) * 5, floorsType * 5)"
- :key="index">
+ <div
+ v-for="(item, index) in unitHouseChoosed.slice((floorsType - 1) * 5, floorsType * 5)"
+ :key="index"
+ >
<div class="title">{{ item.floor_num }}层:</div>
<div class="detail">
- <div v-for="(value, index) in item.floor_house" :key="index"
- @click="residentDetailsClick(value)">
+ <div
+ v-for="(value, index) in item.floor_house"
+ :key="index"
+ @click="residentDetailsClick(value)"
+ :class="{ on: floorChoosed.house_num == value.house_num }"
+ >
<!-- :class="[{ 'chuzu': value.houseType == '出租' }, { 'zizhu': value.houseType == '自住' }, { 'kongzhi': value.houseType == '空置' }, { 'shangye': value.houseType == '商业' }]" -->
{{ value.house_num }}
<!-- <div class="flow"></div>
@@ -276,36 +379,60 @@
</div>
<div class="come-out-content" v-show="subNavType == 2">
- <el-table :data="comeOutData" style="width: 100%"
+ <el-table
+ :data="comeOutData"
+ style="width: 100%"
:header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
:cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }"
- :row-class-name="tableRowClassName" @row-click="deepDataRowClick($event, 'comeOut')">
- <el-table-column prop="name" label="名称" width="180"
- :show-overflow-tooltip="true"></el-table-column>
+ :row-class-name="tableRowClassName"
+ @row-click="deepDataRowClick($event, 'comeOut')"
+ >
+ <el-table-column
+ prop="name"
+ label="名称"
+ width="180"
+ :show-overflow-tooltip="true"
+ ></el-table-column>
<el-table-column prop="x" label="经度" width="100"></el-table-column>
<el-table-column prop="y" label="纬度" width="100"></el-table-column>
</el-table>
</div>
<div class="park-content" v-show="subNavType == 3">
- <el-table :data="parkingLotData" style="width: 100%"
+ <el-table
+ :data="parkingLotData"
+ style="width: 100%"
:header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
:cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }"
- :row-class-name="tableRowClassName" @row-click="deepDataRowClick($event, 'park')">
- <el-table-column prop="name" label="名称" width="180"
- :show-overflow-tooltip="true"></el-table-column>
+ :row-class-name="tableRowClassName"
+ @row-click="deepDataRowClick($event, 'park')"
+ >
+ <el-table-column
+ prop="name"
+ label="名称"
+ width="180"
+ :show-overflow-tooltip="true"
+ ></el-table-column>
<el-table-column prop="x" label="经度" width="100"></el-table-column>
<el-table-column prop="y" label="纬度" width="100"></el-table-column>
</el-table>
</div>
<div class="business-content" v-show="subNavType == 4">
- <el-table :data="businessData" style="width: 100%"
+ <el-table
+ :data="businessData"
+ style="width: 100%"
:header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
:cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }"
- :row-class-name="tableRowClassName" @row-click="deepDataRowClick($event, 'business')">
- <el-table-column prop="name" label="名称" width="180"
- :show-overflow-tooltip="true"></el-table-column>
+ :row-class-name="tableRowClassName"
+ @row-click="deepDataRowClick($event, 'business')"
+ >
+ <el-table-column
+ prop="name"
+ label="名称"
+ width="180"
+ :show-overflow-tooltip="true"
+ ></el-table-column>
<el-table-column prop="x" label="经度" width="100"></el-table-column>
<el-table-column prop="y" label="纬度" width="100"></el-table-column>
</el-table>
@@ -313,35 +440,62 @@
</div>
<div class="police-info" v-if="navType == 1" ref="policeTableBox">
- <el-table :data="callPoliceData" style="width: 100%" :height="currentTableHeight"
+ <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" @row-click="clickData">
- <el-table-column prop="JJDWMC" :show-overflow-tooltip="true" label="接警单位"
- min-width="34%"></el-table-column>
+ :row-class-name="tableRowClassName"
+ @row-click="clickData"
+ >
+ <el-table-column
+ prop="JJDWMC"
+ :show-overflow-tooltip="true"
+ label="接警单位"
+ min-width="34%"
+ ></el-table-column>
<el-table-column label="报警时间" min-width="26%">
<template slot-scope="scope">
<span>{{ scope.row.BJSJ.substring(0, 10) }}</span>
</template>
</el-table-column>
- <el-table-column prop="JJYXM" :show-overflow-tooltip="true" label="接警员"
- min-width="20%"></el-table-column>
- <el-table-column prop="BJRXM" :show-overflow-tooltip="true" label="报警人"
- min-width="20%"></el-table-column>
+ <el-table-column
+ prop="JJYXM"
+ :show-overflow-tooltip="true"
+ label="接警员"
+ min-width="20%"
+ ></el-table-column>
+ <el-table-column
+ prop="BJRXM"
+ :show-overflow-tooltip="true"
+ label="报警人"
+ min-width="20%"
+ ></el-table-column>
</el-table>
<div class="pages" ref="ElPagination">
- <el-pagination background layout="prev, pager, next" :page-size="callPolicePage.pageSize"
- :page-count="callPolicePage.count" :current-page="callPolicePage.currentPage"
- @current-change="handleCurrentChange"></el-pagination>
+ <el-pagination
+ background
+ layout="prev, pager, next"
+ :page-size="callPolicePage.pageSize"
+ :page-count="callPolicePage.count"
+ :current-page="callPolicePage.currentPage"
+ @current-change="handleCurrentChange"
+ ></el-pagination>
</div>
</div>
</div>
</div>
<!-- <transition name="special-animal"></transition>-->
<div class="search-content">
- <input v-model="searchExtensivelyValue" @input="searchExtensivelyChange" @focus="searchExtensivelyFocus"
- type="text" placeholder="请输入搜索条件" />
+ <input
+ v-model="searchExtensivelyValue"
+ @input="searchExtensivelyChange"
+ @focus="searchExtensivelyFocus"
+ type="text"
+ placeholder="请输入搜索条件"
+ />
<div class="clear" v-show="isShowClearBtn" @click="clearSearchValue" title="清空">
<img src="../../../public/img/icon/clear.png" alt />
</div>
@@ -349,13 +503,23 @@
</div>
<div v-show="searchExtensivelyValBoxShow" class="searchExtensively-val-box">
<div>
- <div @click="searchExtensivelyVlaClick(item)" v-for="(item, index) in searchExtensivelyArray"
- :key="index">{{ item.name }}</div>
+ <div
+ @click="searchExtensivelyVlaClick(item)"
+ v-for="(item, index) in searchExtensivelyArray"
+ :key="index"
+ >{{ item.name }}</div>
</div>
</div>
- <el-dialog title="报警信息" :modal="true" :visible.sync="policeSituationVisible" :append-to-body="true"
- :before-close="policeSituationBeforeClose" :close-on-click-modal="true" class="policeSituation-details-box">
+ <el-dialog
+ title="报警信息"
+ :modal="true"
+ :visible.sync="policeSituationVisible"
+ :append-to-body="true"
+ :before-close="policeSituationBeforeClose"
+ :close-on-click-modal="true"
+ class="policeSituation-details-box"
+ >
<div class="box">
<div class="item">
<div>接警单位编号:</div>
@@ -416,19 +580,34 @@
</div>
</el-dialog>
- <el-dialog :title="residentDetailsTitle" :modal="false" :visible.sync="residentDetailsShow"
- :before-close="residentDetailsClose" :close-on-click-modal="true" class="resident-details-box" width="30%">
- <el-table :data="houseDate"
+ <el-dialog
+ :title="residentDetailsTitle"
+ :modal="false"
+ :visible.sync="residentDetailsShow"
+ :before-close="residentDetailsClose"
+ :close-on-click-modal="true"
+ class="resident-details-box"
+ width="30%"
+ >
+ <el-table
+ :data="houseDate"
:header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
- :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }">
+ :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }"
+ >
<el-table-column prop="realName" label="姓名"></el-table-column>
<el-table-column prop="phone" label="电话"></el-table-column>
<el-table-column prop="cardNo" label="身份证号"></el-table-column>
</el-table>
</el-dialog>
- <el-dialog :title="keyPersonTitle" :modal="false" :visible.sync="keyPersonVisible"
- :before-close="keyPersonBeforeClose" :close-on-click-modal="true" class="keyPerson-details-box">
+ <el-dialog
+ :title="keyPersonTitle"
+ :modal="false"
+ :visible.sync="keyPersonVisible"
+ :before-close="keyPersonBeforeClose"
+ :close-on-click-modal="true"
+ class="keyPerson-details-box"
+ >
<div class="header">
<div>
姓名:
@@ -439,11 +618,18 @@
<input type="text" v-model="callPhone" 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>
+ <el-button
+ type="primary"
+ icon="el-icon-delete"
+ @click="clearPeopleDetailSearchValue"
+ >清空</el-button>
</div>
- <el-table :data="personDetailArr" style="width: 100%"
+ <el-table
+ :data="personDetailArr"
+ style="width: 100%"
:header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
- :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75', 'cursor': 'pointer' }">
+ :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75', 'cursor': 'pointer' }"
+ >
<el-table-column label="序号" type="index" width="50" align="center">
<template slot-scope="scope">
<span>{{(peoplePage.currentPage - 1) * peoplePage.pageSize + scope.$index + 1}}</span>
@@ -458,9 +644,14 @@
<el-table-column prop="areaName" label="所属责任区"></el-table-column>
</el-table>
<div class="pages" ref="tablePagination">
- <el-pagination background layout="prev, pager, next" :page-size="peoplePage.pageSize"
- :total="peoplePage.total" :current-page="peoplePage.currentPage"
- @current-change="peopleHandleCurrentChange"></el-pagination>
+ <el-pagination
+ background
+ layout="prev, pager, next"
+ :page-size="peoplePage.pageSize"
+ :total="peoplePage.total"
+ :current-page="peoplePage.currentPage"
+ @current-change="peopleHandleCurrentChange"
+ ></el-pagination>
</div>
</el-dialog>
</div>
@@ -575,6 +766,7 @@
callPhone: '',
pictLoading: false,
isShowHouseBox: true,
+ floorChoosed: {},
}
},
@@ -623,13 +815,13 @@
// titlesetUrl: '/sd/tileset.json'
// })
- this.$EventBus.$emit('toPosition', {
- siteJd: 116.027212,
- siteWd: 28.678499,
- siteGd: 600,
- siteHeading: -3,
- sitePitch: -45
- })
+ // this.$EventBus.$emit('toPosition', {
+ // siteJd: 116.027212,
+ // siteWd: 28.678499,
+ // siteGd: 600,
+ // siteHeading: -3,
+ // sitePitch: -45
+ // })
if (wallLayer == null) {
wallLayer = new global.DC.VectorLayer('wallLayer')
@@ -799,7 +991,11 @@
// 楼栋单元楼层户室查询
getHouses (build_id, adcode) {
getHouses(build_id, adcode).then(res => {
- console.log(3333, res.data.data, res.data.data == null)
+ // let maxHeight = res.data.data.floor_num * 2.8
+ let maxHeight = 98
+ console.log(3333, res.data.data)
+ this.$EventBus.$emit('showHouse3D', { positions: res.data.data.geom, minHeight: 0, maxHeight: maxHeight })
+
if (res.data.data != null) {
let unitData = res.data.data.unit[this.unitValue - 1].house
this.floorInfo.house_num = unitData.length
@@ -835,10 +1031,13 @@
return 'rows'
},
+ // 点击户室
residentDetailsClick (params) {
+ this.floorChoosed = params
this.getVillagePersonInfo(params.house_id)
this.residentDetailsTitle = `${params.house_num}住户信息`
this.residentDetailsShow = true
+ this.$EventBus.$emit('showHouse3D', { positions: params.geom, minHeight: params.minHeight, maxHeight: params.minHeight + params.floor_h })
},
residentDetailsClose () {
@@ -1188,6 +1387,7 @@
layerName: 'deepDataLayer',
type: 'VectorLayer'
})
+ this.$EventBus.$emit('clearHouse3D')
wallLayer.clear()
window.removeEventListener('resize', this.setTableHeight)
@@ -1268,7 +1468,7 @@
border-radius: 10px;
overflow: hidden;
- &>div {
+ & > div {
height: 100%;
overflow-y: auto;
@@ -1303,9 +1503,11 @@
left: 10px;
right: 10px;
bottom: 4px;
- background: linear-gradient(135deg,
- rgb(33 150 243 / 74%),
- rgb(254 254 254 / 0%));
+ background: linear-gradient(
+ 135deg,
+ rgb(33 150 243 / 74%),
+ rgb(254 254 254 / 0%)
+ );
z-index: -1;
}
}
@@ -1316,7 +1518,7 @@
}
.housing-introduce {
- &>div {
+ & > div {
padding: 0 10px;
display: flex;
@@ -1379,7 +1581,7 @@
}
}
- &>.floor-content {
+ & > .floor-content {
.build-info {
display: flex;
position: relative;
@@ -1428,7 +1630,7 @@
flex-wrap: wrap;
width: 356px;
- &>div {
+ & > div {
display: flex;
align-items: center;
justify-content: center;
@@ -1462,7 +1664,7 @@
.content {
display: flex;
- &>div {
+ & > div {
height: 26px;
line-height: 26px;
flex: 1;
@@ -1470,11 +1672,11 @@
justify-content: center;
border-right: 1px solid #50555f;
- &>div {
+ & > div {
cursor: pointer;
}
- &>div:last-child {
+ & > div:last-child {
margin-left: 14px;
font-size: 18px;
font-weight: bold;
@@ -1482,11 +1684,11 @@
}
}
- &>div:first-child {
+ & > div:first-child {
width: 30%;
}
- &>div:last-child {
+ & > div:last-child {
border: none;
}
}
@@ -1511,10 +1713,10 @@
display: flex;
justify-content: space-around;
- &>div {
+ & > div {
flex: 1;
- &>div:first-child {
+ & > div:first-child {
height: 30px;
line-height: 30px;
font-size: 18px;
@@ -1522,7 +1724,7 @@
color: #499d99;
}
- &>div:last-child {
+ & > div:last-child {
height: 26px;
line-height: 26px;
}
@@ -1537,8 +1739,8 @@
justify-content: space-around;
background: rgba(8, 56, 185, 0.5);
- &>div {
- &>div:first-child {
+ & > div {
+ & > div:first-child {
height: 30px;
line-height: 30px;
font-size: 18px;
@@ -1576,7 +1778,6 @@
}
.house-element-info {
-
.condo,
.legend {
display: flex;
@@ -1599,12 +1800,12 @@
display: flex;
flex: 1;
- &>div {
+ & > div {
flex: 1;
display: flex;
align-items: center;
- &>span {
+ & > span {
margin: 0 10px;
width: 14px;
height: 8px;
@@ -1671,7 +1872,7 @@
left: 0;
transition: all 1s;
- &>div {
+ & > div {
margin: 0 4px;
display: flex;
justify-content: center;
@@ -1684,7 +1885,7 @@
border: 0.0925925926vh solid #fff;
}
- &>.on {
+ & > .on {
border: 1px solid orange;
color: orange;
}
@@ -1696,7 +1897,7 @@
margin-top: 14px;
height: 220px;
- &>div {
+ & > div {
margin: 8px;
height: 36px;
line-height: 36px;
@@ -1710,7 +1911,7 @@
flex: 1;
display: flex;
- &>div {
+ & > div {
margin: 0 4px;
position: relative;
width: 68px;
@@ -1734,29 +1935,38 @@
}
.focus {
- top: calc((100% - 18px) / 4 * 2 + 6px);
+ top: calc(
+ (100% - 18px) / 4 * 2 + 6px
+ );
background: rgb(255, 121, 108);
}
.warning {
- top: calc((100% - 18px) / 4 * 3 + 12px);
+ top: calc(
+ (100% - 18px) / 4 * 3 + 12px
+ );
background: rgb(254, 172, 4);
}
}
- &>.chuzu {
+ & > .on {
+ color: orange;
+ border-color: orange !important;
+ }
+
+ & > .chuzu {
border: 1px solid #3a8b3a;
}
- &>.zizhu {
+ & > .zizhu {
border: 1px solid #2c77bb;
}
- &>.kongzhi {
+ & > .kongzhi {
border: 1px solid #5c6169;
}
- &>.shangye {
+ & > .shangye {
border: 1px solid #cc9456;
}
}
@@ -1877,7 +2087,7 @@
border-radius: 10px;
overflow: hidden;
- &>div {
+ & > div {
height: 100%;
overflow-y: auto;
@@ -1907,9 +2117,11 @@
height: 100%;
overflow: hidden;
border-radius: 2px;
- background: linear-gradient(135deg,
- rgba(252, 252, 252, 0.108),
- rgb(254, 254, 254));
+ background: linear-gradient(
+ 135deg,
+ rgba(252, 252, 252, 0.108),
+ rgb(254, 254, 254)
+ );
animation: prog 3s ease infinite;
}
diff --git a/src/views/video/list.vue b/src/views/video/list.vue
index 153e20a..7018fa9 100644
--- a/src/views/video/list.vue
+++ b/src/views/video/list.vue
@@ -195,11 +195,12 @@
props: {
label: 'name',
children: 'zones',
- isLeaf: (data, node) => {
- if (node.level === 4) {
- return true
- }
- }
+ isLeaf: true
+ // isLeaf: (data, node) => {
+ // if (node.level === 4) {
+ // return true
+ // }
+ // }
},
}
},
@@ -273,6 +274,7 @@
sitePitch: -90
})
},
+
async siteClick (e) {
if (this.flvPlayer != null) {
@@ -612,32 +614,40 @@
async treeClick (node) {
if (node.parent == false) {
- console.log(node, node.name, node.id, node.basicData.channelId)
- let flvUrl = ''
- await this.getDevices(node.id).then(res => {
- flvUrl = res
+ console.log(node, node.name, node.id, node.basicData.channelId, node.basicData.longitude, node.basicData.latitude)
+ this.$EventBus.$emit('toPosition', {
+ siteJd: node.basicData.longitude,
+ siteWd: node.basicData.latitude,
+ siteGd: 600,
})
- console.log(flvUrl, 111)
- if (typeof flvUrl === 'object') {
- this.$message.error(flvUrl.msg)
- return
- }
- this.dialogVisible = true
+ this.$EventBus.$emit('mapClearLayer', {
+ layerName: 'searchLayer',
+ type: 'VectorLayer'
+ })
+ this.$EventBus.$emit('layerPointAdd', {
+ layerName: 'searchLayer',
+ type: 'label',
+ params: {
+ lng: node.basicData.longitude,
+ lat: node.basicData.latitude,
+ alt: 0,
+ text: node.name
+ }
+ })
+ this.$EventBus.$emit('layerPointAdd', {
+ layerName: 'searchLayer',
+ type: "billboard",
+ params: {
+ name: node.name,
+ lng: node.basicData.longitude,
+ lat: node.basicData.latitude,
+ alt: 100,
+ url: '/img/icon/video.png',
+ channelId: node.id
+ },
+ incident: this.siteClick
+ })
- if (flvjs.isSupported()) {
- this.$nextTick(() => {
- var videoElement = document.getElementById('videoElement')
- this.flvPlayer = flvjs.createPlayer({
- type: 'flv',
- isLive: true,
- hasAudio: false,
- url: flvUrl
- })
- this.flvPlayer.attachMediaElement(videoElement)
- this.flvPlayer.load()
- this.flvPlayer.play()
- })
- }
}
},
},
--
Gitblit v1.9.3