| | |
| | | * @Author: shuishen 1109946754@qq.com |
| | | * @Date: 2022-08-18 16:18:17 |
| | | * @LastEditors: shuishen 1109946754@qq.com |
| | | * @LastEditTime: 2023-01-06 15:44:39 |
| | | * @LastEditTime: 2023-01-07 11:13:02 |
| | | * @FilePath: \srs-police-affairs\src\views\home\index.vue |
| | | * @Description: 小区-栋-层-房屋 |
| | | * |
| | |
| | | |
| | | <template> |
| | | <div class="home-page container"> |
| | | <left-container |
| | | class="left-container" |
| | | @showpeopledetail="showpeopledetail" |
| | | @showlanddetail="showlanddetail" |
| | | @showkeypersondetail="showkeypersondetail" |
| | | ref="leftContainer" |
| | | ></left-container> |
| | | <left-container class="left-container" @showpeopledetail="showpeopledetail" @showlanddetail="showlanddetail" |
| | | @showkeypersondetail="showkeypersondetail" ref="leftContainer"></left-container> |
| | | |
| | | <right-container |
| | | class="right-container" |
| | | @showequimentdetail="showequimentdetail" |
| | | @selectPoliceChangeEventData="selectPoliceChangeEventData" |
| | | @changeActivityType="changeActivityType" |
| | | @activityChange="activityChange" |
| | | ref="rightContainer" |
| | | ></right-container> |
| | | <right-container class="right-container" @showequimentdetail="showequimentdetail" |
| | | @selectPoliceChangeEventData="selectPoliceChangeEventData" @changeActivityType="changeActivityType" |
| | | @activityChange="activityChange" ref="rightContainer"></right-container> |
| | | |
| | | <bottom-container |
| | | class="bottom-container" |
| | | ref="bottomContainer" |
| | | <bottom-container class="bottom-container" ref="bottomContainer" |
| | | @changePoliceSituationHistoryType="changePoliceSituationHistoryType" |
| | | @changePoliceSituationTimeType="changePoliceSituationTimeType" |
| | | @policeSituationChange="policeSituationChange" |
| | | @policeSituationSiteClick="policeSituationSiteClick" |
| | | ></bottom-container> |
| | | @policeSituationSiteClick="policeSituationSiteClick"></bottom-container> |
| | | |
| | | <div class="center-container"> |
| | | <div class="layers-control-btn house"> |
| | |
| | | </div> |
| | | |
| | | <div ref="RegionSelect" style="left: 0;" class="region-select"> |
| | | <map-select |
| | | class="map-select" |
| | | @selectCheck="policeStationSelect" |
| | | :checkValue="policeStationCheckValue" |
| | | :options="policeStationOptions" |
| | | :optionsName="'policeStationName'" |
| | | ></map-select> |
| | | <map-select class="map-select" @selectCheck="policeStationSelect" :checkValue="policeStationCheckValue" |
| | | :options="policeStationOptions" :optionsName="'policeStationName'"></map-select> |
| | | |
| | | <map-select |
| | | class="map-select" |
| | | @selectCheck="areaSelect" |
| | | :checkValue="areaCheckValue" |
| | | :options="areaOptions" |
| | | :optionsName="'areaCheckName'" |
| | | ></map-select> |
| | | <map-select class="map-select" @selectCheck="areaSelect" :checkValue="areaCheckValue" :options="areaOptions" |
| | | :optionsName="'areaCheckName'"></map-select> |
| | | |
| | | <map-select |
| | | class="map-select" |
| | | @selectCheck="housingSelect" |
| | | :checkValue="housingCheckValue" |
| | | :options="housingOptions" |
| | | :optionsName="'housingsName'" |
| | | ></map-select> |
| | | <map-select class="map-select" @selectCheck="housingSelect" :checkValue="housingCheckValue" |
| | | :options="housingOptions" :optionsName="'housingsName'"></map-select> |
| | | </div> |
| | | |
| | | <el-dialog |
| | | :title="dialogTitle" |
| | | :modal="true" |
| | | :visible.sync="dialogVisible" |
| | | :before-close="dialogBeforeClose" |
| | | :close-on-click-modal="true" |
| | | > |
| | | <video |
| | | src="/video/sp.mp4" |
| | | autoplay |
| | | controls |
| | | width="100%" |
| | | height="100%" |
| | | ref="videoElement" |
| | | style="object-fit: fill" |
| | | ></video> |
| | | <el-dialog :title="dialogTitle" :modal="true" :visible.sync="dialogVisible" :before-close="dialogBeforeClose" |
| | | :close-on-click-modal="true"> |
| | | <video src="/video/sp.mp4" autoplay controls width="100%" height="100%" ref="videoElement" |
| | | style="object-fit: fill"></video> |
| | | </el-dialog> |
| | | |
| | | <el-dialog |
| | | :title="panoramaTitle" |
| | | :modal="true" |
| | | :visible.sync="panoramaVisible" |
| | | :before-close="panoramaBeforeClose" |
| | | :close-on-click-modal="true" |
| | | class="panorama-details-box" |
| | | > |
| | | <el-dialog :title="panoramaTitle" :modal="true" :visible.sync="panoramaVisible" |
| | | :before-close="panoramaBeforeClose" :close-on-click-modal="true" class="panorama-details-box"> |
| | | <!-- <iframe src="http://vr.jxpskj.com/JXSFKZQJ/QJ/" style="width: 100%; height: 100%;" frameborder="0"></iframe>--> |
| | | <iframe :src="panoramaVrUrl" style="width: 100%; height: 100%;" frameborder="0" /> |
| | | </el-dialog> |
| | | |
| | | <el-dialog |
| | | :title="activityTitle" |
| | | :modal="true" |
| | | :visible.sync="activityVisible" |
| | | :before-close="activityBeforeClose" |
| | | :close-on-click-modal="true" |
| | | class="activity-details-box" |
| | | > |
| | | <el-dialog :title="activityTitle" :modal="true" :visible.sync="activityVisible" |
| | | :before-close="activityBeforeClose" :close-on-click-modal="true" class="activity-details-box"> |
| | | <div class="item"> |
| | | <div>活动名称:</div> |
| | | <div>{{ activityDetailArr.activityName }}</div> |
| | |
| | | </div> |
| | | </el-dialog> |
| | | |
| | | <el-dialog |
| | | :title="phoneTitle" |
| | | :modal="true" |
| | | :visible.sync="phoneVisible" |
| | | :before-close="phoneBeforeClose" |
| | | :close-on-click-modal="true" |
| | | class="phone-details-box" |
| | | > |
| | | <el-dialog :title="phoneTitle" :modal="true" :visible.sync="phoneVisible" :before-close="phoneBeforeClose" |
| | | :close-on-click-modal="true" class="phone-details-box"> |
| | | <div class="item"> |
| | | <div>责任人:</div> |
| | | <div>{{ phoneDetails.person }}</div> |
| | |
| | | </div> |
| | | </el-dialog> |
| | | |
| | | <el-dialog |
| | | :title="peopleTitle" |
| | | :modal="true" |
| | | :visible.sync="peopleVisible" |
| | | :before-close="peopleBeforeClose" |
| | | :close-on-click-modal="true" |
| | | class="area-details-box" |
| | | > |
| | | <el-dialog :title="peopleTitle" :modal="true" :visible.sync="peopleVisible" :before-close="peopleBeforeClose" |
| | | :close-on-click-modal="true" class="area-details-box"> |
| | | <div class="item"> |
| | | <div>责任区负责人:</div> |
| | | <div>王某某</div> |
| | |
| | | </div> |
| | | </el-dialog> |
| | | |
| | | <el-dialog |
| | | :title="equimentTitle" |
| | | :modal="true" |
| | | :visible.sync="equimentVisible" |
| | | :before-close="equimentBeforeClose" |
| | | :close-on-click-modal="true" |
| | | class="equiment-details-box" |
| | | > |
| | | <el-dialog :title="equimentTitle" :modal="true" :visible.sync="equimentVisible" |
| | | :before-close="equimentBeforeClose" :close-on-click-modal="true" class="equiment-details-box"> |
| | | <div class="equiment-detail"> |
| | | <div class="left"> |
| | | <el-tree |
| | | :data="jurisdictionData" |
| | | :props="defaultProps" |
| | | @node-click="jurisdictionNodeClick" |
| | | ref="tree" |
| | | node-key="id" |
| | | ></el-tree> |
| | | <el-tree :data="jurisdictionData" :props="defaultProps" @node-click="jurisdictionNodeClick" |
| | | ref="tree" node-key="id"></el-tree> |
| | | </div> |
| | | <div class="right"> |
| | | <div class="monitor" v-if="monitorContent"> |
| | | <video |
| | | src="/video/sp.mp4" |
| | | autoplay |
| | | controls |
| | | width="100%" |
| | | height="100%" |
| | | ref="videoElement" |
| | | style="object-fit: fill" |
| | | ></video> |
| | | <video src="/video/sp.mp4" autoplay controls width="100%" height="100%" ref="videoElement" |
| | | style="object-fit: fill"></video> |
| | | </div> |
| | | <div class="others" v-if="othersContent"> |
| | | <el-table |
| | | :data="showArr.slice((currentPage - 1) * pagesize, currentPage * pagesize)" |
| | | <el-table :data="showArr.slice((currentPage - 1) * pagesize, currentPage * pagesize)" |
| | | 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-class-name="tableRowClassName"> |
| | | <el-table-column prop="carID" label="车牌号" v-if="carArrShow"></el-table-column> |
| | | <el-table-column prop="carType" label="车型" v-if="carArrShow"></el-table-column> |
| | | <el-table-column prop="phoneID" label="手台号" v-if="phoneArrShow"></el-table-column> |
| | | <el-table-column prop="phoneType" label="手台机型" v-if="phoneArrShow"></el-table-column> |
| | | <el-table-column |
| | | prop="recorderID" |
| | | label="执法记录仪号" |
| | | v-if="recorderArrShow" |
| | | ></el-table-column> |
| | | <el-table-column |
| | | prop="recorderType" |
| | | label="记录仪机型" |
| | | v-if="recorderArrShow" |
| | | ></el-table-column> |
| | | <el-table-column prop="recorderID" label="执法记录仪号" v-if="recorderArrShow"></el-table-column> |
| | | <el-table-column prop="recorderType" label="记录仪机型" v-if="recorderArrShow"></el-table-column> |
| | | <el-table-column prop="id" label="设备号" v-if="stateArrShow"></el-table-column> |
| | | <el-table-column prop="equimentType" label="设备类型" v-if="stateArrShow"></el-table-column> |
| | | <el-table-column prop="policeStation" label="所属派出所"></el-table-column> |
| | |
| | | <el-table-column prop="state" label="状态"></el-table-column> |
| | | </el-table> |
| | | <div class="pages"> |
| | | <el-pagination |
| | | background |
| | | layout="prev, pager, next" |
| | | :total="showArr.length" |
| | | :page-size="pagesize" |
| | | pager-count="3" |
| | | :current-page="currentPage" |
| | | @current-change="handleCurrentChange" |
| | | ></el-pagination> |
| | | <el-pagination background layout="prev, pager, next" :total="showArr.length" |
| | | :page-size="pagesize" pager-count="3" :current-page="currentPage" |
| | | @current-change="handleCurrentChange"></el-pagination> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </el-dialog> |
| | | |
| | | <el-dialog |
| | | :title="landTitle" |
| | | :modal="true" |
| | | :visible.sync="landVisible" |
| | | :before-close="landBeforeClose" |
| | | :close-on-click-modal="true" |
| | | class="land-details-box" |
| | | > |
| | | <el-table |
| | | :data="landDetailArr" |
| | | style="width: 100%" |
| | | <el-dialog :title="landTitle" :modal="true" :visible.sync="landVisible" :before-close="landBeforeClose" |
| | | :close-on-click-modal="true" class="land-details-box"> |
| | | <el-table :data="landDetailArr" 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 prop="housingEastate" label="小区名称" width="100"></el-table-column> |
| | | <el-table-column prop="location" label="位置" width="140"></el-table-column> |
| | | <el-table-column prop="area" label="面积" width="120"></el-table-column> |
| | |
| | | </el-table> |
| | | </el-dialog> |
| | | |
| | | <el-dialog |
| | | :title="keyPersonTitle" |
| | | :modal="true" |
| | | :visible.sync="keyPersonVisible" |
| | | :before-close="keyPersonBeforeClose" |
| | | :close-on-click-modal="true" |
| | | class="keyPerson-details-box" |
| | | > |
| | | <el-table |
| | | :data="keyPersonDetailArr" |
| | | style="width: 100%" |
| | | <el-dialog :title="keyPersonTitle" :modal="true" :visible.sync="keyPersonVisible" |
| | | :before-close="keyPersonBeforeClose" :close-on-click-modal="true" class="keyPerson-details-box"> |
| | | <el-table :data="keyPersonDetailArr" 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 prop="type" label="重点人员类型"></el-table-column> |
| | | <el-table-column prop="name" label="姓名"></el-table-column> |
| | | <el-table-column prop="sex" label="性别"></el-table-column> |
| | |
| | | </el-table> |
| | | </el-dialog> |
| | | |
| | | <el-dialog |
| | | title="警情信息" |
| | | :modal="true" |
| | | :visible.sync="policeSituationVisible" |
| | | :before-close="policeSituationBeforeClose" |
| | | :close-on-click-modal="true" |
| | | class="policeSituation-details-box" |
| | | > |
| | | <el-dialog title="警情信息" :modal="true" :visible.sync="policeSituationVisible" |
| | | :before-close="policeSituationBeforeClose" :close-on-click-modal="true" class="policeSituation-details-box"> |
| | | <div class="btn-change"> |
| | | <div |
| | | :class="{ on: policeInformationType == '接警信息' }" |
| | | @click="policeInformationType = '接警信息'" |
| | | >接警信息</div> |
| | | <div |
| | | :class="{ on: policeInformationType == '出警信息' }" |
| | | @click="policeInformationType = '出警信息'" |
| | | >出警信息</div> |
| | | <div |
| | | :class="{ on: policeInformationType == '接警信息' }" |
| | | @click="alarmOrActAsPolice('接警信息')" |
| | | >接警信息</div> |
| | | <div |
| | | :class="{ on: policeInformationType == '出警信息' }" |
| | | @click="alarmOrActAsPolice('出警信息')" |
| | | >出警信息</div> |
| | | <div :class="{ on: policeInformationType == '接警信息' }" @click="alarmOrActAsPolice('接警信息')">接警信息</div> |
| | | <div :class="{ on: policeInformationType == '出警信息' }" @click="alarmOrActAsPolice('出警信息')">出警信息</div> |
| | | </div> |
| | | |
| | | <div v-show="policeInformationType == '接警信息'" class="box"> |
| | |
| | | <div>{{ policeSituationDetailArr.BJRXM }}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div>事发地址:</div> |
| | | <div>{{ policeSituationDetailArr.SFDZ }}</div> |
| | | </div> |
| | | <div class="item"> |
| | | <div>报警类别:</div> |
| | | <div>{{ policeSituationDetailArr.BJLB }}</div> |
| | | </div> |
| | | |
| | | <div class="item"> |
| | | <div>报警类型:</div> |
| | | <div>{{ policeSituationDetailArr.BJLX }}</div> |
| | | </div> |
| | | |
| | | <div class="dialog-content"> |
| | | <div>事发地址:</div> |
| | | <div>{{ policeSituationDetailArr.SFDZ }}</div> |
| | | </div> |
| | | |
| | | <div class="dialog-content"> |
| | | <div>报警内容:</div> |
| | | <div>{{ policeSituationDetailArr.BJNR }}</div> |
| | | </div> |
| | | |
| | | <div class="dialog-content"> |
| | | <div>备注:</div> |
| | | <div>{{ policeSituationDetailArr.MEMO }}</div> |
| | |
| | | import bottomContainer from './components/bottomContainer' |
| | | import historyArr from '@/assets/data/activitysData/history.js' |
| | | import underwayArr from '@/assets/data/activitysData/underway.js' |
| | | import realtimeArr from '@/assets/data/policeSituationArr/realtimeArr.js' |
| | | import policeSituationHistoryArr from '@/assets/data/policeSituationArr/historyArr.js' |
| | | import { getPoliceStationList } from "@/api/dept" |
| | | import { convertStringToList } from "@/utils/geometryStringTool" |
| | | |
| | |
| | | underwayArr: [], |
| | | activityType: 0, |
| | | policeSituationHistoryType: 0, |
| | | policeSituationTimeType: 0, |
| | | policeSituationRealtimeArr: [], |
| | | policeSituationHistoryArr: [], |
| | | policeSituationDetailArr: {}, |
| | | CJdata: {}, |
| | | activityDetailArr: {}, |
| | |
| | | this.getPoliceStationList() |
| | | this.historyArr = historyArr |
| | | this.underwayArr = underwayArr |
| | | this.policeSituationRealtimeArr = realtimeArr |
| | | this.policeSituationHistoryArr = policeSituationHistoryArr |
| | | this.getPanoramaList() |
| | | |
| | | this.getResidentialQuartersList('361102') |
| | |
| | | this.policeSituationList.forEach((item, index) => { |
| | | let center = new global.DC.Position(item.lng, item.lat) |
| | | let point = new global.DC.PointPrimitive(center) |
| | | |
| | | let num = 0 |
| | | if (item.state == '处理中') { |
| | | timer[index] = setInterval(() => { |
| | | num++ |
| | | if (num >= 10) { |
| | | num = 0 |
| | | } |
| | | point.setStyle({ |
| | | outlineColor: global.DC.Color.RED.withAlpha(0.5),//边框颜色 |
| | | outlineWidth: num,//边框大小, |
| | | color: global.DC.Color.RED |
| | | }) |
| | | }, 100) |
| | | } else { |
| | | timer[index] = setInterval(() => { |
| | | num++ |
| | | if (num >= 10) { |
| | | num = 0 |
| | | } |
| | | point.setStyle({ |
| | | outlineColor: global.DC.Color.GREEN.withAlpha(0.5),//边框颜色 |
| | | outlineWidth: num,//边框大小, |
| | | color: global.DC.Color.GREEN |
| | | }) |
| | | }, 100) |
| | | } |
| | | |
| | | timer[index] = setInterval(() => { |
| | | num++ |
| | | if (num >= 10) { |
| | | num = 0 |
| | | } |
| | | point.setStyle({ |
| | | outlineColor: global.DC.Color.RED.withAlpha(0.5),//边框颜色 |
| | | outlineWidth: num,//边框大小, |
| | | color: global.DC.Color.RED |
| | | }) |
| | | }, 100) |
| | | |
| | | point.attrParams = item |
| | | point.on(global.DC.MouseEventType.CLICK, this.policeSituationSiteClick) |
| | | circleLayer.addOverlay(point) |
| | |
| | | |
| | | policeSituationSelectChange () { |
| | | let showArr = [] |
| | | if (this.policeStaionChecked && this.policeStaionChecked.policeStationName != '全部') { |
| | | let arr1 = [] |
| | | let arr2 = [] |
| | | realtimeArr.some(item => { |
| | | if (item.policeName == this.policeStaionChecked.policeStationName) { |
| | | arr1.push(item) |
| | | } |
| | | }) |
| | | this.policeSituationRealtimeArr = arr1 |
| | | policeSituationHistoryArr.some(item => { |
| | | if (item.policeName == this.policeStaionChecked.policeStationName) { |
| | | arr2.push(item) |
| | | } |
| | | }) |
| | | this.policeSituationHistoryArr = arr2 |
| | | |
| | | } else { |
| | | this.policeSituationRealtimeArr = realtimeArr |
| | | this.policeSituationHistoryArr = policeSituationHistoryArr |
| | | } |
| | | if (this.policeSituationHistoryType == 0) { |
| | | showArr = this.policeSituationRealtimeArr |
| | | showArr = this.$refs.bottomContainer.chooseRealData() |
| | | } else { |
| | | let showSaveArr = this.policeSituationHistoryArr |
| | | if (this.policeSituationTimeType == 0) { |
| | | showArr = this.$refs.bottomContainer.chooseWeekTimeDate(showSaveArr) |
| | | } else { |
| | | showArr = this.$refs.bottomContainer.chooseMouthTimeDate(showSaveArr) |
| | | } |
| | | showArr = this.$refs.bottomContainer.chooseTimeDate() |
| | | } |
| | | |
| | | showArr.forEach((item, index) => { |
| | | item.name = `${index + 1}号警情` |
| | | item.lng = `${Number(item.position[0])}` |
| | | item.lat = `${Number(item.position[1])}` |
| | | item.alt = 100 |
| | | item.lng = Number(item.lng) |
| | | item.lat = Number(item.lat) |
| | | item.url = '/img/icon/jq.png' |
| | | }) |
| | | |
| | | this.policeSituationList = showArr |
| | | }, |
| | | |
| | |
| | | this.policeSituationHistoryType = type |
| | | }, |
| | | |
| | | changePoliceSituationTimeType (type) { |
| | | this.policeSituationTimeType = type |
| | | }, |
| | | |
| | | /** |
| | | * 获取所有全景数据 |
| | | */ |
| | |
| | | background-color: #66b1ff87; |
| | | } |
| | | |
| | | :deep(.el-tree--highlight-current |
| | | .el-tree-node.is-current |
| | | > .el-tree-node__content) { |
| | | :deep(.el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content) { |
| | | background: #454545; |
| | | } |
| | | |