Merge branch 'master' of http://192.168.0.105:10010/r/srs-police-affairs
| | |
| | | "@turf/turf": "^6.5.0", |
| | | "axios": "^0.22.0", |
| | | "core-js": "^3.6.5", |
| | | "echarts": "^4.9.0", |
| | | "echarts": "^5.3.0", |
| | | "element-resize-detector": "^1.2.4", |
| | | "element-ui": "^2.15.6", |
| | | "flv.js": "^1.6.2", |
| | |
| | | "sass-loader": "^8.0.2", |
| | | "vue-template-compiler": "^2.6.11" |
| | | } |
| | | } |
| | | } |
| | |
| | | * @Author: shuishen 1109946754@qq.com |
| | | * @Date: 2022-08-18 17:00:30 |
| | | * @LastEditors: shuishen 1109946754@qq.com |
| | | * @LastEditTime: 2022-12-08 11:22:32 |
| | | * @LastEditTime: 2022-12-10 11:07:13 |
| | | * @FilePath: \srs-police-affairs\src\components\map\index.vue |
| | | * @Description: 公用地图组件 |
| | | * |
| | |
| | | }) |
| | | } |
| | | |
| | | let terrain = global.DC.TerrainFactory.createUrlTerrain({ |
| | | url: 'http://data.marsgis.cn/terrain' |
| | | }) |
| | | global.viewer.addTerrain(terrain) |
| | | |
| | | // 天地图 影像 |
| | | global.viewer.imageryLayers.addImageryProvider( |
| | | new global.DC.Namespace.Cesium.UrlTemplateImageryProvider({ |
| | |
| | | console.log(e) |
| | | }) |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | 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 |
| | | }) |
| | | |
| | | let MAN_F_H = positions.map(item => { |
| | | item[2] = 80 |
| | | return item |
| | | }) |
| | | |
| | | // 原生Cesium加载多边体 |
| | | let floorEntitysLayers = new global.DC.Namespace.Cesium.CustomDataSource("floorEntitysLayers") |
| | | global.viewer.dataSources.add(floorEntitysLayers) |
| | | let flootEntitysEntites = floorEntitysLayers.entities |
| | | |
| | | 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), |
| | | } |
| | | }) |
| | | |
| | | // console.log(floorPositions) |
| | | |
| | | // let floorPositions = MIN_F_H.concat(MAN_F_H) |
| | | |
| | | // let floorPolygonlayer = new global.DC.VectorLayer('floorPolygonlayer') |
| | | // global.viewer.addLayer(floorPolygonlayer) |
| | | |
| | | // let floorPolygon = new global.DC.Polygon( |
| | | // floorPositions |
| | | // ) |
| | | |
| | | // floorPolygon.setStyle({ |
| | | // height: 70, |
| | | // extrudedHeight: 80, |
| | | // material: global.DC.Color.GREEN.withAlpha(0.5), |
| | | // heightReference: 2, |
| | | // perPositionHeight: true |
| | | // }) |
| | | |
| | | // floorPolygonlayer.addOverlay(floorPolygon) |
| | | |
| | | // global.viewer.flyTo(floorPolygonlayer) |
| | | |
| | | global.viewer.flyTo(sqTileset) |
| | | |
| | | global.viewer.use(new global.DC.Measure()) |
| | |
| | | // global.viewer.scene.morphTo2D(1) |
| | | |
| | | // 清除控制台 |
| | | console.clear() |
| | | // console.clear() |
| | | |
| | | function isEleFullScreen () { |
| | | const fullScreenEle = |
| | |
| | | margin: 0; |
| | | padding: 0; |
| | | box-sizing: border-box; |
| | | scrollbar-color: rgba(7, 22, 37, 0.8) hsla(0, 0%, 84.7%, 0.2); |
| | | scrollbar-color: rgba(17, 38, 163, 0.5) hsla(0, 0%, 84.7%, 0.2); |
| | | scrollbar-width: thin; |
| | | } |
| | | |
| | |
| | | // hsla(0, 0%, 84.7%, 0.6); |
| | | ::-webkit-scrollbar-thumb { |
| | | border-radius: 6px; |
| | | background-color: rgba(7, 22, 37, 0.8); |
| | | background-color: rgba(17, 38, 163, 0.5); |
| | | padding-left: 2px; |
| | | padding-right: 2px; |
| | | } |
| | |
| | | } |
| | | |
| | | ::-webkit-scrollbar-thumb:window-inactive { |
| | | background-color: rgba(7, 22, 37, 0.8); |
| | | background-color: rgba(17, 38, 163, 0.5); |
| | | } |
| | | |
| | | :not(select)::-webkit-scrollbar { |
| | |
| | | } |
| | | |
| | | ::-webkit-scrollbar-thumb:hover { |
| | | background-color: rgba(7, 22, 37, 0.8); |
| | | background-color: rgba(17, 38, 163, 0.5); |
| | | } |
| | | |
| | | .car-video-box { |
| | |
| | | |
| | | |
| | | .select-on-tab { |
| | | box-shadow: 0 0 10px $menu-tab-shadow; |
| | | box-shadow: 0 2px 2px $menu-tab-shadow; |
| | | color: #fff; |
| | | } |
| | |
| | | // 表格 el-table! |
| | | // ------------------------------------------------------------------ |
| | | .el-table tr th { |
| | | background: $table-header-bg-color !important; |
| | | color: #fff !important; |
| | | .el-table, |
| | | .el-table__expanded-cell { |
| | | background-color: transparent !important; |
| | | } |
| | | |
| | | .el-table, |
| | | .el-table__body-wrapper .el-table__empty-block { |
| | | background: transparent !important; |
| | | |
| | | span { |
| | | color: #fff !important; |
| | | } |
| | | } |
| | | |
| | | .el-table thead { |
| | | tr { |
| | | background: transparent !important; |
| | | |
| | | th { |
| | | background: $table-header-bg-color !important; |
| | | color: #fff !important; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .el-table tr:nth-child(2n) { |
| | |
| | | height: 100%; |
| | | } |
| | | |
| | | .el-table--enable-row-transition .el-table__body td.el-table__cell,.el-table tr th { |
| | | border: 0!important; |
| | | .el-table--enable-row-transition .el-table__body td.el-table__cell, |
| | | .el-table tr th { |
| | | border: 0 !important; |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | .el-table, |
| | | .el-table__expanded-cell { |
| | | background-color: $table-body-bg-color !important; |
| | | } |
| | | |
| | | |
| | | .tree-search-popup { |
| | | top: 135px !important; |
| | |
| | | height: countSizeVh(22); |
| | | line-height: countSizeVh(22); |
| | | } |
| | | |
| | | &>div.tab-title-small { |
| | | height: maxCountSizeVh(32); |
| | | line-height: maxCountSizeVh(32); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | $bg-color: $bg-one-color; |
| | | |
| | | |
| | | |
| | | $tree-search-bg-color: rgba(9, 40, 199, 0.9); |
| | | |
| | | $el-dialog-bg-color: rgba(9, 40, 199, 1); |
| | | |
| | | $select-box-bg-color: rgba(9, 40, 199, 0.8); |
| | | |
| | | |
| | | $sub-tab-bg-color: linear-gradient(to bottom, rgba(2, 27, 121, .8), rgba(5, 117, 230, .8)); |
| | | |
| | |
| | | |
| | | $menu-tab-bg-color: $bg-one-color; |
| | | |
| | | $menu-tab-shadow: rgba(144, 202, 249, 0.8); |
| | | $menu-tab-shadow: rgba(0, 188, 212, 0.884); |
| | | |
| | | |
| | | |
| | |
| | | </div> |
| | | </div> |
| | | <div class="sub-tab" v-show="peopletype == 0"> |
| | | <div |
| | | class="tab3" |
| | | :class="{ 'select-on-tab': tabType == 0 }" |
| | | @click="personTabClick(0)" |
| | | > |
| | | <div class="tab3" :class="{ 'select-on-tab': tabType == 0 }" @click="personTabClick(0)"> |
| | | <div class="num">164.57万人</div> |
| | | <div class="type">户籍人口</div> |
| | | </div> |
| | | <div |
| | | class="tab3" |
| | | :class="{ 'select-on-tab': tabType == 1 }" |
| | | @click="personTabClick(1)" |
| | | > |
| | | <div class="tab3" :class="{ 'select-on-tab': tabType == 1 }" @click="personTabClick(1)"> |
| | | <div class="num">17.52万人</div> |
| | | <div class="type">流动人口</div> |
| | | </div> |
| | | <div |
| | | class="tab3" |
| | | :class="{ 'select-on-tab': tabType == 2 }" |
| | | @click="personTabClick(2)" |
| | | > |
| | | <div class="tab3" :class="{ 'select-on-tab': tabType == 2 }" @click="personTabClick(2)"> |
| | | <div class="num">91995人</div> |
| | | <div class="type">境外人口</div> |
| | | </div> |
| | | </div> |
| | | <div id="PersonEcharts" class="echarts-box"></div> |
| | | <div |
| | | class="back" |
| | | title="返回上一级" |
| | | v-show="dataDeep == 2 && peopletype == 0" |
| | | @click="backBegin" |
| | | ></div> |
| | | <div class="back" title="返回上一级" v-show="dataDeep == 2 && peopletype == 0" @click="backBegin"></div> |
| | | </div> |
| | | <div class="house-box"> |
| | | <div class="title">现有房屋</div> |
| | | <div class="sub-tab"> |
| | | <div |
| | | class="tab" |
| | | :class="{ 'select-on-tab': tabTypeTwo == 0 }" |
| | | @click="houseTabClick(0)" |
| | | > |
| | | <div class="num">182万户</div> |
| | | <div class="num">实有房屋</div> |
| | | <div class="sub-tab "> |
| | | <div class="tab" :class="{ 'select-on-tab': tabTypeTwo == 0 }" @click="houseTabClick(0)"> |
| | | <div class="tab-title-small">实有房屋:</div> |
| | | <div class="tab-title-small">182万户</div> |
| | | </div> |
| | | <div |
| | | class="tab" |
| | | :class="{ 'select-on-tab': tabTypeTwo == 1 }" |
| | | @click="houseTabClick(1)" |
| | | > |
| | | <div class="num">634个</div> |
| | | <div class="num">关注场所</div> |
| | | <div class="tab" :class="{ 'select-on-tab': tabTypeTwo == 1 }" @click="houseTabClick(1)"> |
| | | <div class="tab-title-small">关注场所:</div> |
| | | <div class="tab-title-small">634个</div> |
| | | </div> |
| | | </div> |
| | | <div id="houseEcharts" class="echarts-box"></div> |
| | |
| | | <div class="land-box"> |
| | | <div class="title">现有地</div> |
| | | <div class="sub-tab"> |
| | | <div |
| | | class="tab" |
| | | :class="{ 'select-on-tab': tabTypeThree == 0 }" |
| | | @click="landTabClick(0)" |
| | | > |
| | | <div class="num">634个</div> |
| | | <div class="num">小区</div> |
| | | <div class="tab" :class="{ 'select-on-tab': tabTypeThree == 0 }" @click="landTabClick(0)"> |
| | | <div class="tab-title-small">小区:</div> |
| | | <div class="tab-title-small">634个</div> |
| | | </div> |
| | | <div |
| | | class="tab" |
| | | :class="{ 'select-on-tab': tabTypeThree == 1 }" |
| | | @click="landTabClick(1)" |
| | | > |
| | | <div class="num">634个</div> |
| | | <div class="num">责任区</div> |
| | | <div class="tab" :class="{ 'select-on-tab': tabTypeThree == 1 }" @click="landTabClick(1)"> |
| | | <div class="tab-title-small">责任区:</div> |
| | | <div class="tab-title-small">634个</div> |
| | | </div> |
| | | </div> |
| | | <div id="landEcharts" class="echarts-box"></div> |
| | |
| | | color: #fff; |
| | | } |
| | | |
| | | & > div:nth-of-type(2) { |
| | | &>div:nth-of-type(2) { |
| | | font-size: 14px; |
| | | } |
| | | } |
| | |
| | | .sub-tab { |
| | | padding: 10px; |
| | | display: flex; |
| | | color: #99cccc; |
| | | |
| | | .tab, |
| | | .tab3 { |
| | |
| | | border-radius: 8px; |
| | | cursor: pointer; |
| | | |
| | | & > div { |
| | | &>div { |
| | | height: 22px; |
| | | line-height: 22px; |
| | | } |
| | | } |
| | | |
| | | .tab { |
| | | display: flex; |
| | | justify-content: space-around; |
| | |
| | | <div>值班信息(当日)</div> |
| | | </div> |
| | | <div class="table-box"> |
| | | <el-table |
| | | size="small" |
| | | :height="tableHeight" |
| | | :data="schedulingList" |
| | | style="width: 100%" |
| | | <el-table size="small" :height="tableHeight" :data="schedulingList" style="width: 100%" |
| | | :header-cell-style="{ 'text-align': 'center' }" |
| | | :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }" |
| | | :row-class-name="tableRowClassName" |
| | | > |
| | | :row-class-name="tableRowClassName"> |
| | | <el-table-column prop="station" label="岗位"></el-table-column> |
| | | <el-table-column prop="name" label="姓名"></el-table-column> |
| | | <el-table-column prop="contact" label="联系方式"></el-table-column> |
| | |
| | | <div class="title"> |
| | | 案件统计 |
| | | <div class="timer"> |
| | | <el-date-picker |
| | | v-model="eventTime" |
| | | type="daterange" |
| | | align="right" |
| | | unlink-panels |
| | | range-separator="至" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期" |
| | | :picker-options="pickerOptions" |
| | | ></el-date-picker> |
| | | <el-date-picker v-model="eventTime" type="daterange" align="right" unlink-panels range-separator="至" |
| | | start-placeholder="开始日期" end-placeholder="结束日期" |
| | | :picker-options="pickerOptions"></el-date-picker> |
| | | </div> |
| | | </div> |
| | | <div id="EventChangeEcharts" class="echarts-box"></div> |
| | |
| | | } |
| | | } |
| | | }, |
| | | emphasis: { |
| | | label: { |
| | | color: 'red' |
| | | } |
| | | }, |
| | | label: { |
| | | color: function (params) { |
| | | let colorList = [] |
| | |
| | | if (timer) { |
| | | clearInterval(timer) |
| | | } |
| | | |
| | | timer = setInterval(() => { |
| | | equipmentmyChart.dispatchAction({ type: 'downplay', seriesIndex: 0, dataIndex: curIndex }) |
| | | curIndex = (curIndex + 1) % dataLen |
| | |
| | | type: 'highlight', seriesIndex: 0, dataIndex: curIndex |
| | | }) |
| | | }, 1000) |
| | | |
| | | equipmentmyChart.on('mouseover', function (param) { |
| | | clearInterval(timer) |
| | | equipmentmyChart.dispatchAction({ |
| | |
| | | }) |
| | | curIndex = param.dataIndex |
| | | }) |
| | | |
| | | equipmentmyChart.on('mouseout', function (param) { |
| | | curIndex = param.dataIndex |
| | | if (timer) { |
| | |
| | | }, |
| | | |
| | | getEquimentChartData (policeStationName) { |
| | | |
| | | const oneColor = ['#4caf50', '#2979ff', '#ffd600', '#0d47a1', '#b71c1c'] |
| | | |
| | | const twoColor = ['#5470FE', '#91cc75', '#fac858', '#ee6666', '#73c0de', '#3ba272', '#fc8452', '#9a60b4', '#ea7ccc'] |
| | | |
| | | let dataArr = [] |
| | | let phoneCount = 0 |
| | | let carCount = 0 |
| | |
| | | recorderState = this.getEquimentChartStateData(this.recorderNewArr) |
| | | if (this.linetype == 0) { |
| | | dataArr = [ |
| | | { value: carCount, name: '车辆', working: carState.working, fault: carState.fault, maintain: carState.maintain, disable: carState.disable, sealing: carState.sealing }, |
| | | { value: monitorCount, name: '摄像头', working: monitorState.working, fault: monitorState.fault, maintain: monitorState.maintain, disable: monitorState.disable, sealing: monitorState.sealing }, |
| | | { value: recorderCount, name: '执法记录仪', working: recorderState.working, fault: recorderState.fault, maintain: recorderState.maintain, disable: recorderState.disable, sealing: recorderState.sealing }, |
| | | { value: phoneCount, name: '手台', working: phoneState.working, fault: phoneState.fault, maintain: phoneState.maintain, disable: phoneState.disable, sealing: phoneState.sealing }, |
| | | { value: carCount, name: '车辆', working: carState.working, fault: carState.fault, maintain: carState.maintain, disable: carState.disable, sealing: carState.sealing, label: { color: twoColor[0] } }, |
| | | { value: monitorCount, name: '摄像头', working: monitorState.working, fault: monitorState.fault, maintain: monitorState.maintain, disable: monitorState.disable, sealing: monitorState.sealing, label: { color: twoColor[1] } }, |
| | | { value: recorderCount, name: '执法记录仪', working: recorderState.working, fault: recorderState.fault, maintain: recorderState.maintain, disable: recorderState.disable, sealing: recorderState.sealing, label: { color: twoColor[2] } }, |
| | | { value: phoneCount, name: '手台', working: phoneState.working, fault: phoneState.fault, maintain: phoneState.maintain, disable: phoneState.disable, sealing: phoneState.sealing, label: { color: twoColor[3] } }, |
| | | ] |
| | | this.regionTotal = phoneCount + monitorCount + carCount + recorderCount |
| | | } else { |
| | |
| | | let disableObj = this.getEquimentChartTypeData(phoneState, carState, recorderState, monitorState).disableObj |
| | | let sealingObj = this.getEquimentChartTypeData(phoneState, carState, recorderState, monitorState).sealingObj |
| | | dataArr = [ |
| | | { value: workingObj.total, name: '正常', carCount: workingObj.carCount, monitorCount: workingObj.monitorCount, recorderCount: workingObj.recorderCount, phoneCount: workingObj.phoneCount, color: '#4caf50' }, |
| | | { value: maintainObj.total, name: '保养', carCount: maintainObj.carCount, monitorCount: maintainObj.monitorCount, recorderCount: maintainObj.recorderCount, phoneCount: maintainObj.phoneCount, color: '#2979ff' }, |
| | | { value: faultObj.total, name: '故障', carCount: faultObj.carCount, monitorCount: faultObj.monitorCount, recorderCount: faultObj.recorderCount, phoneCount: faultObj.phoneCount, color: '#ffd600' }, |
| | | { value: disableObj.total, name: '停用', carCount: disableObj.carCount, monitorCount: disableObj.monitorCount, recorderCount: disableObj.recorderCount, phoneCount: disableObj.phoneCount, color: '#0d47a1' }, |
| | | { value: sealingObj.total, name: '封存', carCount: sealingObj.carCount, monitorCount: sealingObj.monitorCount, recorderCount: sealingObj.recorderCount, phoneCount: sealingObj.phoneCount, color: '#b71c1c' }, |
| | | { value: workingObj.total, name: '正常', carCount: workingObj.carCount, monitorCount: workingObj.monitorCount, recorderCount: workingObj.recorderCount, phoneCount: workingObj.phoneCount, color: '#4caf50', label: { color: oneColor[0] } }, |
| | | { value: maintainObj.total, name: '保养', carCount: maintainObj.carCount, monitorCount: maintainObj.monitorCount, recorderCount: maintainObj.recorderCount, phoneCount: maintainObj.phoneCount, color: '#2979ff', label: { color: oneColor[1] } }, |
| | | { value: faultObj.total, name: '故障', carCount: faultObj.carCount, monitorCount: faultObj.monitorCount, recorderCount: faultObj.recorderCount, phoneCount: faultObj.phoneCount, color: '#ffd600', label: { color: oneColor[2] } }, |
| | | { value: disableObj.total, name: '停用', carCount: disableObj.carCount, monitorCount: disableObj.monitorCount, recorderCount: disableObj.recorderCount, phoneCount: disableObj.phoneCount, color: '#0d47a1', label: { color: oneColor[3] } }, |
| | | { value: sealingObj.total, name: '封存', carCount: sealingObj.carCount, monitorCount: sealingObj.monitorCount, recorderCount: sealingObj.recorderCount, phoneCount: sealingObj.phoneCount, color: '#b71c1c', label: { color: oneColor[4] } }, |
| | | ] |
| | | this.regionTotal = workingObj.total + faultObj.total + maintainObj.total + disableObj.total + sealingObj.total |
| | | } |
| | |
| | | margin-left: 50%; |
| | | letter-spacing: 1px; |
| | | } |
| | | |
| | | .legend { |
| | | position: absolute; |
| | | width: calc(100% - 36px); |
| | |
| | | top: 120%; |
| | | font-style: normal; |
| | | font-weight: normal; |
| | | |
| | | ul { |
| | | display: flex; |
| | | height: 100%; |
| | | |
| | | li { |
| | | height: 100%; |
| | | display: flex; |
| | | line-height: 160%; |
| | | margin-right: 10px; |
| | | |
| | | img { |
| | | height: 60%; |
| | | } |
| | | |
| | | div { |
| | | width: 20px; |
| | | height: 42%; |
| | |
| | | background: $sub-tab-bg-color; |
| | | cursor: pointer; |
| | | |
| | | & > div { |
| | | &>div { |
| | | height: 26px; |
| | | line-height: 26px; |
| | | } |
| | |
| | | padding: 12px; |
| | | flex: 1; |
| | | } |
| | | |
| | | .table-box { |
| | | padding: 0 12px; |
| | | flex: 1; |
| | |
| | | * @Author: shuishen 1109946754@qq.com |
| | | * @Date: 2022-12-08 15:39:19 |
| | | * @LastEditors: shuishen 1109946754@qq.com |
| | | * @LastEditTime: 2022-12-08 15:40:42 |
| | | * @LastEditTime: 2022-12-09 10:14:24 |
| | | * @FilePath: \srs-police-affairs\src\views\house\1.js |
| | | * @Description: |
| | | * |
| | |
| | | var geom = "{\"type\":\"Polygon\",\"coordinates\":[[[117.951611255,28.447352784,0],[117.951600551,28.447344222,0],[117.951547986,28.447195694,0],[117.951644553,28.447167745,0],[117.951618108,28.447086296,0],[117.951840968,28.447039435,0],[117.95185813,28.447096389,0],[117.951957911,28.447097034,0],[117.95196294,28.447315995,0],[117.951611255,28.447352784,0]]]}" |
| | | |
| | | |
| | | console.log(JSON.parse(geom).coordinates) |
| | | var geom1 = "{\"type\":\"Polygon\",\"coordinates\":[]}" |
| | | var min_height = 31.4 |
| | | var floor_h = 2.8 |