房屋大屏
This commit is contained in:
		
							
								
								
									
										847
									
								
								packages/bigscreen/dv/AppHouseMapDv.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										847
									
								
								packages/bigscreen/dv/AppHouseMapDv.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,847 @@ | ||||
| <template> | ||||
|   <div style="height:100%;" class="AppHouseMapDv"> | ||||
|     <div class="map"> | ||||
|       <div id="map" ref="rootmap" @click="hidePopup"/> | ||||
|       <div class="community-info" v-show="isShowInfo"> | ||||
|         <div class="community-info__close" title="关闭" @click="info = {}, isShowInfo = false,chooseBuildId=''"> | ||||
|           <i class="iconClean iconfont"></i> | ||||
|         </div> | ||||
|         <div class="community-info__header"> | ||||
|           <h2 v-if="!info.name">{{ info.createAddress }}</h2> | ||||
|           <h2 v-if="info.name">{{ info.homesteadAddress }}</h2> | ||||
|           <div>{{ info.lng }},{{ info.lat }}</div> | ||||
|         </div> | ||||
|         <div class="community-info__wrapper" v-if="info.name"> | ||||
|           <h2>户主信息</h2> | ||||
|           <div class="community-info__item"> | ||||
|             <label>所属村</label> | ||||
|             <span>{{ info.areaName }}</span> | ||||
|           </div> | ||||
|           <div class="community-info__item"> | ||||
|             <label>姓名</label> | ||||
|             <span style="color:#2266FF;">{{ info.name }}</span> | ||||
|           </div> | ||||
|           <div class="community-info__item"> | ||||
|             <label>联系电话</label> | ||||
|             <span style="color:#2266FF;">{{ info.phone }}</span> | ||||
|           </div> | ||||
|           <div class="community-info__item"> | ||||
|             <label>性别</label> | ||||
|             <span>{{ info.sex == 1 ? '男' : '女' }}</span> | ||||
|           </div> | ||||
|           <div class="community-info__item"> | ||||
|             <label>年龄</label> | ||||
|             <span>{{ info.age }}</span> | ||||
|           </div> | ||||
|           <div class="community-info__item bg-fff"></div> | ||||
|         </div> | ||||
|         <div class="community-info__wrapper" v-if="info.name"> | ||||
|           <h2>宅基地信息</h2> | ||||
|           <div class="community-info__item"> | ||||
|             <label>住宅建筑面积</label> | ||||
|             <span>{{ info.liveBuildingArea }}m²</span> | ||||
|           </div> | ||||
|           <div class="community-info__item"> | ||||
|             <label>建筑层数</label> | ||||
|             <span>{{ info.buildingFloorNumber }}层</span> | ||||
|           </div> | ||||
|           <div class="community-info__item"> | ||||
|             <label>建筑高度</label> | ||||
|             <span>{{ info.buildingHeight }}m</span> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="community-info__wrapper" v-if="!info.name"> | ||||
|           <h2>房屋信息</h2> | ||||
|           <div class="community-info__item"> | ||||
|             <label>所属社区</label> | ||||
|             <span>{{ info.areaName }}</span> | ||||
|           </div> | ||||
|           <div class="community-info__item"> | ||||
|             <label>所属小区</label> | ||||
|             <span>{{ info.communityName }}</span> | ||||
|           </div> | ||||
|           <div class="community-info__item"> | ||||
|             <label>房屋类型</label> | ||||
|             <span>{{ dict.getLabel("communityBuildingType", info.buildingType) }}</span> | ||||
|           </div> | ||||
|           <div class="community-info__item"> | ||||
|             <label>楼长姓名</label> | ||||
|             <span>{{ info.managerName }}</span> | ||||
|           </div> | ||||
|           <div class="community-info__item"> | ||||
|             <label>楼长电话</label> | ||||
|             <span>{{ info.managerPhone }}</span> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import AMapLoader from '@amap/amap-jsapi-loader' | ||||
| import {mapState} from 'vuex' | ||||
|  | ||||
| export default { | ||||
|   name: 'AppHouseMapDv', | ||||
|   label: '房屋地图', | ||||
|   provide() { | ||||
|     return { | ||||
|       root: this | ||||
|     } | ||||
|   }, | ||||
|   props: { | ||||
|     instance: Function, | ||||
|     dict: Object | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       map: null, | ||||
|       mapLib: null, | ||||
|       community: '', | ||||
|       areaData: {}, | ||||
|       isShowInfo: false, | ||||
|       areaId: '', | ||||
|       areaName: '', | ||||
|       list: [], | ||||
|       info: {}, | ||||
|       resident: null, | ||||
|       satellite: null, | ||||
|       zoom: 11, | ||||
|       chooseBuildId: '', | ||||
|       buildList: [], | ||||
|       searchList: [], | ||||
|       house: null, | ||||
|       center: [], | ||||
|       type: '', | ||||
|       showStatistics: false | ||||
|     } | ||||
|   }, | ||||
|   computed: { | ||||
|     ...mapState(['user']) | ||||
|   }, | ||||
|  | ||||
|   watch: { | ||||
|     community: { | ||||
|       deep: true, | ||||
|       handler() { | ||||
|         this.debounce(this.search, 500) | ||||
|       } | ||||
|     }, | ||||
|  | ||||
|     showStatistics: { | ||||
|       deep: true, | ||||
|       handler() { | ||||
|         this.debounce(this.getCorpLocation, 500) | ||||
|       } | ||||
|     }, | ||||
|   }, | ||||
|  | ||||
|   created() { | ||||
|     this.dict.load('householdRelation', 'communityBuildingType') | ||||
|   }, | ||||
|  | ||||
|   mounted() { | ||||
|     this.areaId = this.user.info.areaId | ||||
|     this.areaName = this.user.info.areaName | ||||
|     this.getCorpLocation() | ||||
|   }, | ||||
|  | ||||
|   methods: { | ||||
|     getCorpLocation() { | ||||
|       if (this.showStatistics) { //楼栋模型返回重新查询 | ||||
|         return | ||||
|       } | ||||
|       this.instance.post("/app/appdvcpconfig/getCorpLocation").then(res => { | ||||
|         if (res.code == 0) { | ||||
|           this.initMap(res.data) | ||||
|         } | ||||
|       }) | ||||
|     }, | ||||
|     changeZoom(isAdd) { | ||||
|       const zoom = isAdd ? this.map.getZoom() + 1 : this.map.getZoom() - 1 | ||||
|       this.map.setZoom(zoom, false, 600) | ||||
|     }, | ||||
|  | ||||
|     getBuildInfo(id, type) { | ||||
|       var url = `/app/apphomesteadinfo/queryDetailById?id=${id}` | ||||
|       if (type == 0) { | ||||
|         url = `/app/appcommunityhouseinfo/queryDetailByIdWithBuilding?buildId=${id}` | ||||
|       } | ||||
|       this.instance.post(url).then(res => { | ||||
|         if (res.code === 0) { | ||||
|           if (type == 1) { | ||||
|             this.info = res.data | ||||
|           } else { | ||||
|             this.info = res.data.build | ||||
|             this.resident = null; | ||||
|           } | ||||
|           this.$nextTick(() => { | ||||
|             this.isShowInfo = true | ||||
|           }) | ||||
|         } | ||||
|       }) | ||||
|     }, | ||||
|  | ||||
|     chooseCommunity(item) { | ||||
|       if (item.name) { //宅基地 | ||||
|         if (!item.lng || !item.lat) { | ||||
|           return this.$message.error('未获取到该房屋坐标信息') | ||||
|         } else { | ||||
|           this.map.setZoomAndCenter(18, [item.lng, item.lat], false, 600) | ||||
|           this.info = item | ||||
|           this.$nextTick(() => { | ||||
|             this.isShowSearch = false | ||||
|             this.isShowInfo = true | ||||
|           }) | ||||
|         } | ||||
|  | ||||
|       } else { //楼栋 | ||||
|         this.instance.post(`/app/appcommunityhouseinfo/queryDetailByIdWithBuilding`, null, { | ||||
|           params: { | ||||
|             buildId: item.buildingId, | ||||
|             houseId: item.id, | ||||
|             residentId: item.residentId | ||||
|           } | ||||
|         }).then(res => { | ||||
|           if (res.code === 0) { | ||||
|             if (!res.data.build?.lng || !res.data.build?.lat) { | ||||
|               this.isShowInfo = true | ||||
|               this.isShowSearch = false | ||||
|               this.info = res.data.build; | ||||
|               return this.$message.error('未获取到该房屋坐标信息') | ||||
|             } else { | ||||
|               this.chooseBuildId = res.data.build.id | ||||
|               this.house = res.data.house | ||||
|               this.resident = res.data.resident; | ||||
|             } | ||||
|  | ||||
|             this.map.setZoomAndCenter(18, [res.data.build?.lng, res.data.build?.lat], false, 600) | ||||
|             this.info = res.data.build | ||||
|             this.$nextTick(() => { | ||||
|               this.isShowSearch = false | ||||
|               this.isShowInfo = true | ||||
|             }) | ||||
|           } | ||||
|         }) | ||||
|       } | ||||
|     }, | ||||
|  | ||||
|     toCenter() { | ||||
|       this.map.setZoomAndCenter(this.zoom, this.center, false, 600) | ||||
|     }, | ||||
|  | ||||
|     renderClusterMarker(context) { | ||||
|       let el = `<div class="polymeric"> | ||||
|         <div class="polymeric-container"> | ||||
|           <p>${context.count}</p> | ||||
|         </div> | ||||
|       </div>` | ||||
|       let {mapLib: AMap} = this | ||||
|       let offset = new AMap.Pixel(-9, -9) | ||||
|       context.marker.setContent(el) | ||||
|       context.marker.setOffset(offset) | ||||
|       context.marker.lnglat = context.clusterData[0].lnglat | ||||
|  | ||||
|       context.marker.on('click', e => { | ||||
|         this.map.setZoomAndCenter(this.map.getZoom() + 2, e.target.lnglat, false, 500) | ||||
|       }) | ||||
|     }, | ||||
|  | ||||
|     renderMarker(context) { | ||||
|       const buildId = context.data[0].id | ||||
|       let el = '' | ||||
|       var urlType = '' | ||||
|       if (context.data[0].communityName == context.data[0].buildingNumber) { //宅基地 | ||||
|         urlType = 1 | ||||
|         el = `<div class="mark" id="buildId-${buildId}" style="${buildId === this.chooseBuildId ? 'background-color:#2266FF' : 'background-color:#FF701A'}"> | ||||
|          <div class="mark-contaienr"> | ||||
|             <span>${context.data[0].areaName}</span>   | ||||
|             <span>${context.data[0].communityName}</span> | ||||
|           </div> | ||||
|         <div class="arrow" style="${buildId === this.chooseBuildId ? 'border-top-color: #2266FF' : 'border-top-color:#FF701A'}"></div> | ||||
|       </div>` | ||||
|       } else { | ||||
|         urlType = 0 | ||||
|         el = `<div class="mark" id="buildId-${buildId}" style="${buildId === this.chooseBuildId ? 'background-color:#2266FF' : ''}"> | ||||
|          <div class="mark-contaienr"> | ||||
|             <span>${context.data[0].communityName}</span>   | ||||
|             <span>${context.data[0].buildingNumber}栋</span> | ||||
|           </div> | ||||
|         <div class="arrow" style="${buildId === this.chooseBuildId ? 'border-top-color: #2266FF' : ''}"></div> | ||||
|       </div>` | ||||
|       } | ||||
|  | ||||
|       context.marker.setContent(el); | ||||
|       context.marker.setAnchor("center") | ||||
|       context.marker.id = `${buildId}` | ||||
|       context.marker.lnglat = context.data[0].lnglat | ||||
|       context.marker.urlType = urlType | ||||
|  | ||||
|       context.marker.on('click', e => { | ||||
|         this.chooseBuildId = e.target.id | ||||
|         this.getBuildInfo(e.target.id, e.target.urlType) | ||||
|         context.marker.setContent(el); | ||||
|         document.querySelectorAll('.mark').forEach(el => { | ||||
|           el.style['background-color'] = '#0F8F64' | ||||
|           el.querySelector('.arrow').style['border-top-color'] = '#0F8F64' | ||||
|         }) | ||||
|         document.querySelector(`#buildId-${e.target.id}`).style['background-color'] = '#2266FF' | ||||
|         document.querySelector(`#buildId-${e.target.id}`).querySelector('.arrow').style['border-top-color'] = '#2266FF' | ||||
|         // this.map.setZoomAndCenter(this.map.getZoom() + 2 + 0.00001, e.target.lnglat, false, 300) | ||||
|       }) | ||||
|     }, | ||||
|  | ||||
|     addMakert(points) { | ||||
|       let {mapLib: AMap} = this | ||||
|       new AMap.MarkerClusterer(this.map, points, { | ||||
|         gridSize: 60, | ||||
|         maxZoom: 15, | ||||
|         clusterByZoomChange: false, | ||||
|         renderClusterMarker: this.renderClusterMarker, | ||||
|         renderMarker: this.renderMarker | ||||
|       }) | ||||
|     }, | ||||
|  | ||||
|     getCommunityList() { | ||||
|       this.instance.post('/app/appcommunitybuildinginfo/listByBuildingAndHomestead', null, { | ||||
|         params: { | ||||
|           current: 1, | ||||
|           size: 1000000 | ||||
|         } | ||||
|       }).then(res => { | ||||
|         if (res.code === 0) { | ||||
|           this.buildList = res.data | ||||
|           const points = res.data.map(item => { | ||||
|             return { | ||||
|               lnglat: [item.lng, item.lat], | ||||
|               id: item.id, | ||||
|               corpId: item.corpId, | ||||
|               areaName: item.areaName, | ||||
|               buildingNumber: item.name || item.buildingNumber, | ||||
|               communityName: item.name || item.communityName, | ||||
|             } | ||||
|           }) | ||||
|  | ||||
|           this.addMakert(points) | ||||
|         } | ||||
|       }) | ||||
|     }, | ||||
|  | ||||
|     hidePopup() { | ||||
|       this.isShowArea = false | ||||
|       this.isShowSearch = false | ||||
|     }, | ||||
|  | ||||
|     initMap({lng, lat}) { | ||||
|       this.center = [lng, lat]; | ||||
|       AMapLoader.load({ | ||||
|         key: '54a02a43d9828a8f9cd4f26fe281e74e', | ||||
|         version: '2.0', | ||||
|         plugins: ['AMap.ToolBar', 'AMap.Scale', 'AMap.MouseTool', 'AMap.MarkerClusterer'], | ||||
|         AMapUI: { | ||||
|           version: '1.1', | ||||
|           plugins: [] | ||||
|         } | ||||
|       }).then((AMap) => { | ||||
|         this.mapLib = AMap | ||||
|         this.map = new AMap.Map('map', { | ||||
|           resizeEnable: true, | ||||
|           zooms: [6, 20], | ||||
|           center: [lng, lat], | ||||
|           zoom: this.zoom, | ||||
|           mapStyle: 'amap://styles/40f6fba77127e061a058f670433a67ec' | ||||
|         }) | ||||
|         this.satellite = new AMap.TileLayer.Satellite() | ||||
|         this.getCommunityList() | ||||
|       }) | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
|  | ||||
| <style lang="scss" scoped> | ||||
| .map { | ||||
|   ::v-deep .amap-logo, ::v-deep .amap-copyright { | ||||
|     display: none !important; | ||||
|   } | ||||
|  | ||||
|   ::v-deep .amap-icon { | ||||
|     width: 40px !important; | ||||
|     height: 40px !important; | ||||
|  | ||||
|     img { | ||||
|       width: 100%; | ||||
|       height: 100%; | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| .community-info__star { | ||||
|   margin-top: 4px; | ||||
|   margin-bottom: 8px; | ||||
|  | ||||
|   .community-info__star--content { | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
|     height: 36px; | ||||
|     padding: 0 12px; | ||||
|     color: #666666; | ||||
|     font-size: 12px; | ||||
|  | ||||
|     span { | ||||
|       flex: 1; | ||||
|       text-align: center; | ||||
|  | ||||
|       &:first-child { | ||||
|         text-align: left; | ||||
|       } | ||||
|  | ||||
|       &:last-child { | ||||
|         text-align: right; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     &:nth-of-type(2n) { | ||||
|       background: #fff; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   .community-info__star--tab { | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
|     height: 36px; | ||||
|     padding: 0 12px; | ||||
|     user-select: none; | ||||
|     background: #fff; | ||||
|  | ||||
|     span { | ||||
|       height: 100%; | ||||
|       line-height: 36px; | ||||
|       color: #999999; | ||||
|       font-size: 12px; | ||||
|       font-weight: 700; | ||||
|       cursor: pointer; | ||||
|       border-bottom: 2px solid transparent; | ||||
|  | ||||
|       &:first-child { | ||||
|         margin-right: 16px; | ||||
|       } | ||||
|  | ||||
|       &.star-active { | ||||
|         color: #2266FF; | ||||
|         border-bottom: 2px solid #2266FF; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| .community-info__item--imgs { | ||||
|   display: block !important; | ||||
|   height: auto !important; | ||||
|  | ||||
|   label { | ||||
|     height: 36px; | ||||
|     line-height: 36px; | ||||
|   } | ||||
|  | ||||
|   .community-info__item--img { | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
|     flex-wrap: wrap; | ||||
|     padding-bottom: 10px; | ||||
|     overflow: hidden; | ||||
|  | ||||
|     img { | ||||
|       width: 69px; | ||||
|       height: 69px; | ||||
|       margin-right: 4px; | ||||
|       margin-bottom: 4px; | ||||
|       cursor: pointer; | ||||
|  | ||||
|       &:nth-of-type(4n) { | ||||
|         margin-right: 0; | ||||
|       } | ||||
|  | ||||
|       &:last-child { | ||||
|         margin-right: 0; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| .map { | ||||
|   position: relative; | ||||
|   width: 100%; | ||||
|   height: 100%; | ||||
|   overflow: hidden; | ||||
|  | ||||
|   ::v-deep .ol-zoom { | ||||
|     display: none !important; | ||||
|     top: inherit !important; | ||||
|     bottom: 0.5em !important; | ||||
|   } | ||||
|  | ||||
|   div { | ||||
|     box-sizing: border-box; | ||||
|   } | ||||
|  | ||||
|   #map { | ||||
|     width: 100%; | ||||
|     height: 100%; | ||||
|   } | ||||
| } | ||||
|  | ||||
| .community { | ||||
|   display: flex; | ||||
|   align-items: center; | ||||
|   position: relative; | ||||
|   height: 28px; | ||||
|   padding: 0 10px; | ||||
|   background: #0F8F64; | ||||
|   border-radius: 26px; | ||||
|   color: #fff; | ||||
|   font-size: 12px; | ||||
|   cursor: pointer; | ||||
|  | ||||
|   &.color1 { | ||||
|     background: #2266FF; | ||||
|  | ||||
|     em:after { | ||||
|       border-top-color: #2266FF !important; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   &.color2 { | ||||
|     background: #F46159; | ||||
|  | ||||
|     em:after { | ||||
|       border-top-color: #F46159 !important; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   em { | ||||
|     position: absolute; | ||||
|     bottom: -6px; | ||||
|     left: 50%; | ||||
|     transform: translate(-50%, 0); | ||||
|  | ||||
|     &::after { | ||||
|       position: absolute; | ||||
|       bottom: -6px; | ||||
|       left: 0; | ||||
|       width: 0; | ||||
|       height: 0; | ||||
|       border: 6px solid #0F8F64; | ||||
|       border-bottom-color: transparent; | ||||
|       border-left-color: transparent; | ||||
|       border-right-color: transparent; | ||||
|       transform: translate(-50%, 0); | ||||
|       overflow: hidden; | ||||
|       content: ' '; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   i { | ||||
|     padding-right: 2px; | ||||
|     position: relative; | ||||
|     color: #ffc928; | ||||
|     font-size: 16px; | ||||
|     font-style: normal; | ||||
|   } | ||||
| } | ||||
|  | ||||
| ::v-deep .polymeric { | ||||
|   display: flex; | ||||
|   position: relative; | ||||
|   align-items: center; | ||||
|   justify-content: center; | ||||
|   width: 62px; | ||||
|   height: 62px; | ||||
|   border-radius: 50%; | ||||
|   cursor: pointer; | ||||
|   user-select: none; | ||||
|  | ||||
|   &.polymeric-active { | ||||
|     .polymeric-container { | ||||
|       background: #F46159; | ||||
|     } | ||||
|  | ||||
|     &::after { | ||||
|       background-color: #F46159; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   &::after { | ||||
|     position: absolute; | ||||
|     z-index: -1; | ||||
|     width: 62px; | ||||
|     height: 62px; | ||||
|     border-radius: 50%; | ||||
|     -webkit-animation: warn 1s ease-out 0s infinite; | ||||
|     animation: warn 1s ease-out 0s infinite; | ||||
|     background-color: rgba(15, 143, 100, 1); | ||||
|     transform: translate(-50%, -50%); | ||||
|     content: " "; | ||||
|   } | ||||
|  | ||||
|   .polymeric-container { | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
|     justify-content: center; | ||||
|     flex-direction: column; | ||||
|     width: 62px; | ||||
|     height: 62px; | ||||
|     border-radius: 50%; | ||||
|     background: rgba(15, 143, 100, 1); | ||||
|  | ||||
|     p { | ||||
|       text-align: center; | ||||
|       width: 58px; | ||||
|       color: #fff; | ||||
|       font-size: 18px; | ||||
|       overflow: hidden; | ||||
|       text-overflow: ellipsis; | ||||
|       white-space: nowrap; | ||||
|     } | ||||
|  | ||||
|     p:first-child { | ||||
|       font-size: 14px; | ||||
|     } | ||||
|  | ||||
|     h2 { | ||||
|       color: #fff; | ||||
|       font-weight: normal; | ||||
|       font-size: 12px; | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| ::v-deep .mark { | ||||
|   user-select: none; | ||||
|   cursor: pointer; | ||||
|   height: 32px; | ||||
|   border-radius: 26px; | ||||
|   position: relative; | ||||
|   display: flex; | ||||
|   align-items: center; | ||||
|   justify-content: center; | ||||
|   background-color: #0F8F64; | ||||
|   box-sizing: border-box; | ||||
|   padding: 0 12px; | ||||
|  | ||||
|   .mark-contaienr { | ||||
|     color: white; | ||||
|     font-size: 14px; | ||||
|     position: relative; | ||||
|     overflow: hidden; | ||||
|     text-overflow: ellipsis; | ||||
|     white-space: nowrap; | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
|     justify-content: center; | ||||
|   } | ||||
|  | ||||
|   .arrow { | ||||
|     position: absolute; | ||||
|     left: 50%; | ||||
|     transform: translateX(-50%); | ||||
|     bottom: -21px; | ||||
|     width: 0; | ||||
|     height: 0; | ||||
|     border: 12px solid transparent; | ||||
|     border-top: 12px solid #0F8F64; | ||||
|   } | ||||
|  | ||||
| } | ||||
|  | ||||
| @-webkit-keyframes warn { | ||||
|   0% { | ||||
|     transform: scale(.5); | ||||
|     opacity: 1 | ||||
|   } | ||||
|  | ||||
|   30% { | ||||
|     opacity: .5 | ||||
|   } | ||||
|  | ||||
|   to { | ||||
|     transform: scale(1.8); | ||||
|     opacity: 0 | ||||
|   } | ||||
| } | ||||
|  | ||||
| @keyframes warn { | ||||
|   0% { | ||||
|     transform: scale(.5); | ||||
|     opacity: 1 | ||||
|   } | ||||
|  | ||||
|   30% { | ||||
|     opacity: .5 | ||||
|   } | ||||
|  | ||||
|   to { | ||||
|     transform: scale(1.4); | ||||
|     opacity: 0 | ||||
|   } | ||||
| } | ||||
|  | ||||
| .community-info { | ||||
|   position: absolute; | ||||
|   top: 58px; | ||||
|   right: 10px; | ||||
|   width: 320px; | ||||
|   height: calc(100% - 117px); | ||||
|   overflow-y: auto; | ||||
|   overflow-x: hidden; | ||||
|   z-index: 111; | ||||
|   box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.1); | ||||
|   border-radius: 2px; | ||||
|   background: #fff; | ||||
|  | ||||
|   .community-info__close { | ||||
|     position: absolute; | ||||
|     right: 0; | ||||
|     top: 0; | ||||
|     padding: 16px 12px 0 12px; | ||||
|     font-size: 16px; | ||||
|     color: #fff; | ||||
|     cursor: pointer; | ||||
|  | ||||
|     &:hover { | ||||
|       opacity: 0.6; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   &::-webkit-scrollbar { | ||||
|     width: 6px; | ||||
|     height: 1px; | ||||
|   } | ||||
|  | ||||
|   &::-webkit-scrollbar-thumb { | ||||
|     border-radius: 6px; | ||||
|     background: rgba(144, 147, 153, .5); | ||||
|   } | ||||
|  | ||||
|   .community-info__header { | ||||
|     min-height: 92px; | ||||
|     padding: 12px; | ||||
|     background: #2266FF; | ||||
|  | ||||
|     h2 { | ||||
|       max-width: 260px; | ||||
|       margin: 0; | ||||
|       color: #fff; | ||||
|       font-size: 18px; | ||||
|       font-weight: 500; | ||||
|       margin-bottom: 20px; | ||||
|     } | ||||
|  | ||||
|     div { | ||||
|       display: flex; | ||||
|       align-items: center; | ||||
|       color: #D2E0FF; | ||||
|       font-size: 12px; | ||||
|     } | ||||
|  | ||||
|     span { | ||||
|       display: block; | ||||
|       margin-top: 4px; | ||||
|       font-style: normal; | ||||
|       color: #D2E0FF; | ||||
|       font-size: 12px; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   .community-info__table { | ||||
|     margin: 4px 0; | ||||
|     font-size: 0; | ||||
|  | ||||
|     .community-info__table--item { | ||||
|       display: inline-block; | ||||
|       width: 25%; | ||||
|       font-size: 12px; | ||||
|       color: #333; | ||||
|  | ||||
|       span { | ||||
|         display: block; | ||||
|         width: 80px; | ||||
|         height: 48px; | ||||
|         padding: 8px 10px; | ||||
|         text-align: center; | ||||
|         box-sizing: border-box; | ||||
|         background: #fff; | ||||
|         border-bottom: 1px solid #DEE6F3; | ||||
|         border-right: 1px solid #DEE6F3; | ||||
|       } | ||||
|  | ||||
|       h2 { | ||||
|         width: 80px; | ||||
|         height: 40px; | ||||
|         line-height: 40px; | ||||
|         font-size: 12px; | ||||
|         text-align: center; | ||||
|         font-weight: normal; | ||||
|         box-sizing: border-box; | ||||
|         background: #F3F6F9; | ||||
|         border-bottom: 1px solid #DEE6F3; | ||||
|         border-right: 1px solid #DEE6F3; | ||||
|       } | ||||
|  | ||||
|       &:last-child { | ||||
|         border-right: none; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   .community-info__wrapper { | ||||
|     h2 { | ||||
|       height: 36px; | ||||
|       line-height: 36px; | ||||
|       margin: 0; | ||||
|       padding: 0 12px; | ||||
|       font-size: 12px; | ||||
|       font-weight: 900; | ||||
|       background: #F3F6F9; | ||||
|     } | ||||
|  | ||||
|     .community-info__item { | ||||
|       display: flex; | ||||
|       align-items: center; | ||||
|       justify-content: space-between; | ||||
|       padding: 10px 12px; | ||||
|       font-size: 12px; | ||||
|       color: #333; | ||||
|       background: #fff; | ||||
|  | ||||
|       &:nth-of-type(2n) { | ||||
|         background: #F3F6F9; | ||||
|       } | ||||
|  | ||||
|       span { | ||||
|         max-width: 70%; | ||||
|         text-align: right; | ||||
|       } | ||||
|  | ||||
|       label { | ||||
|         flex-shrink: 1; | ||||
|         color: #333; | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     &.community-info__wrapper--last { | ||||
|       .community-info__item { | ||||
|         background: #fff; | ||||
|  | ||||
|         &:nth-of-type(2n-1) { | ||||
|           background: #fff; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     .bg-fff { | ||||
|       background-color: #fff !important; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </style> | ||||
							
								
								
									
										13
									
								
								packages/bigscreen/dv/AppMonitorMap.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								packages/bigscreen/dv/AppMonitorMap.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| <template> | ||||
|   <div class="AppMonitorMap"></div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| export default { | ||||
|  | ||||
| } | ||||
| </script> | ||||
|  | ||||
| <style lang="scss" scoped> | ||||
|  | ||||
| </style> | ||||
							
								
								
									
										13
									
								
								packages/bigscreen/dv/AppResourceMap.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								packages/bigscreen/dv/AppResourceMap.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| <template> | ||||
|   <div class="AppResourceMap"></div> | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| export default { | ||||
|  | ||||
| } | ||||
| </script> | ||||
|  | ||||
| <style lang="scss" scoped> | ||||
|  | ||||
| </style> | ||||
		Reference in New Issue
	
	Block a user