diff --git a/src/app/data-collection/data-collection.module.ts b/src/app/data-collection/data-collection.module.ts index ad38bdf..50060c8 100644 --- a/src/app/data-collection/data-collection.module.ts +++ b/src/app/data-collection/data-collection.module.ts @@ -45,11 +45,11 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { DataCollectionRoutingModule } from './data-collection.routing'; import { AddWater, WaterCollectionComponent } from './water-collection/water-collection.component'; import { AddFireForce, FireForceComponent, ViewDetails } from './fire-force/fire-force.component'; -import { LinkageForcesComponent } from './linkage-forces/linkage-forces.component'; +import { AddLinkageForce, LinkageForcesComponent, ViewDetails2 } from './linkage-forces/linkage-forces.component'; import { NzTreeModule } from 'ng-zorro-antd/tree'; @NgModule({ - declarations: [WaterCollectionComponent, FireForceComponent, LinkageForcesComponent,AddWater,AddFireForce,ViewDetails], + declarations: [WaterCollectionComponent, FireForceComponent, LinkageForcesComponent,AddWater,AddFireForce,ViewDetails,AddLinkageForce,ViewDetails2], imports: [ CommonModule, A11yModule, diff --git a/src/app/data-collection/linkage-forces/addLinkageForce.html b/src/app/data-collection/linkage-forces/addLinkageForce.html new file mode 100644 index 0000000..4ba38db --- /dev/null +++ b/src/app/data-collection/linkage-forces/addLinkageForce.html @@ -0,0 +1,15 @@ +
+
+ 新增联动力量 +
+
+
+ + {{item.name}} +
+
+
+ + +
+
\ No newline at end of file diff --git a/src/app/data-collection/linkage-forces/linkage-forces.component.html b/src/app/data-collection/linkage-forces/linkage-forces.component.html index 413184e..abc51c7 100644 --- a/src/app/data-collection/linkage-forces/linkage-forces.component.html +++ b/src/app/data-collection/linkage-forces/linkage-forces.component.html @@ -1,8 +1,260 @@ -
+
+
+
+
+ 列表过滤 +
+
+ + +
+
+ +
+
+
+
+ 消防队 + 完整度 +
+
+
    +
  • +
    {{item.name}}
    +
    + + {{accMul(item.integrityScore.toFixed(3),100,1)}}% + +
    +
    +
    +
    highlight_off
    +
  • +
+
+
+ +
+
-
- +
+
+ +
+ + + + {{item.name}} + + +
+ +
+
+ +
+
+
+ +
+
+
+ + 请等待... +
+
+ + 上传中...({{progressBarValue}}%) + +
+
+ + 下载中...({{progressBarValue}}%) +
+
+
+
+ 详情 +
+
+ 相关资料 +
+
+
+
+ + + + +
+ + save保存 + open_in_browser提交审核 +
+
+ +
+
+

基本信息

+ + + + * + 类型: + + + + + + * + 名称: + + + + + + 单位联系电话: + + + + + + 单位传真: + + + + + + 备注: + + + + +

位置信息

+ + + + 行政区: + + + + 地址: + + + + + + 经度: + + + + 纬度: + + + + + + +

联系人

+ + + + 联系人: + + + + + + 职务: + + + + + + 电话: + + + + +

应急信息

+ + + + 服务内容: + + + + + + 资源说明: + + + + + +
+
+ +
+
+ highlight_off +
+ + + + + +
+ {{item.fileName}} + + +
+
+
+
+ + \ No newline at end of file diff --git a/src/app/data-collection/linkage-forces/linkage-forces.component.scss b/src/app/data-collection/linkage-forces/linkage-forces.component.scss index ef03c8d..9fbcf0f 100644 --- a/src/app/data-collection/linkage-forces/linkage-forces.component.scss +++ b/src/app/data-collection/linkage-forces/linkage-forces.component.scss @@ -5,14 +5,532 @@ display: flex; box-sizing: border-box; padding: 10px; + font-size: 16px; + font-family: Source Han Sans CN; + font-weight: 400; + color: #000000; } .listbox{ width: 400px; height: 100%; background-color: #fff; + display: flex; + flex-direction: column; + .topbox{ + max-height: 200px; + box-sizing: border-box; + padding: 10px 22px 22px; + .add{ + height: 36px; + line-height: 36px; + display: flex; + justify-content: space-between; + } + .searchbox{ + .inputbox{ + width: 100%; + height: 36px; + font-size: 14px; + line-height: 36px; + margin: 10px 0; + display: flex; + span{ + margin-right: 5px; + } + select,input{ + flex: 1; + background-color: #F2F4F6; + border: 0; + border-radius: 5px; + box-sizing: border-box; + padding:0 8px; + + } + .gray{ + color: gray; + } + // input::-moz-placeholder { + // color: rgba(90, 83, 83, 0.89); + // opacity: 1; + // } + // input:-ms-input-placeholder { + // color: rgba(90, 83, 83, 0.89);; + // } + // input::-webkit-input-placeholder { + // color: rgba(90, 83, 83, 0.89);; + // } + } + } + } + .contantbox{ + flex: 1; + overflow-y: auto; + display: flex; + flex-direction: column; + .title{ + display: flex; + justify-content: space-between; + width: 100%; + box-sizing: border-box; + padding: 0 33px 0 22px; + height: 36px; + line-height: 36px; + span{ + font-size: 14px; + font-weight: 500; + } + } + .linkageForceList{ + flex: 1; + overflow-y: auto; + li{ + cursor: pointer; + width: 100%; + height: 36px; + line-height: 36px; + display: flex; + align-items: center; + font-size: 14px; + div{ + float: left; + box-sizing: border-box; + } + .name{ + text-align: left; + width: 60%; + padding-left: 22px; + white-space:nowrap; + overflow:hidden; + text-overflow:ellipsis; + } + .integrity{ + height: 58%; + width: 32%; + position: relative; + background-color: #F2F4F6; + .integrityNum{ + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + color: black; + font-size: 13px; + cursor: default; + } + .integrityColorDiv{ + height: 100%; + } + } + .deletebtn{ + flex: 1; + text-align: center; + mat-icon{ + width: 20px; + height: 20px; + cursor: pointer; + font-size: 20px; + vertical-align: text-top; + color: rgba(49, 46, 46, 0.144); + } + mat-icon:hover{ + color: #000; + } + } + } + li:hover{ + background-color: #b3d3ee; + } + .selectedLi{ + background-color: #b3d3ee; + } + } + .paginator{ + height: 56px; + width: 100%; + } + } } .mapbox{ flex: 1; margin-left: 10px; background-color: #fff; + display: flex; + overflow: hidden; + flex-direction: column; + .mapcheckbox,.swiper-container{ + width: 100%; + height: 50px; + .swiper-wrapper{ + flex: 1; + display: flex; + height: 50px; + line-height: 50px; + } + mat-checkbox{ + font-size: 15px; + span{ + display: flex; + justify-content: center; + align-items: center; + img{ + margin-right: 3px; + } + } + + } + mat-checkbox:nth-child(1){ + margin-left: 20px; + } + + } + #map{ + flex: 1; + position: relative; + #container{ + width: 100%; + height: 100%; + } + .gistopbox{ + position: absolute; + box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16); + border-radius: 5px; + top: 3px; + width: 30%; + height:40px; + background: #FFFFFF; + display: flex; + align-items: center; + cursor: default;; + .inputBox{ + width: 100%; + display: flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + font-size: 14px; + .positionInput{ + border: 0; + border-radius: 6px; + width: 80%; + height: 28px; + background: #F2F2F2; + margin-left: 8px; + box-sizing: border-box; + padding-left: 10px; + } + } + + } + .hidden{ + opacity: 0; + z-index: -1; + } + .show{ + opacity: 1; + z-index: 1; + } + } + .detailsbox{ + width: 100%; + height:500px; + position: relative; + .tabsbox{ + width: 100%; + height: 40px; + overflow: hidden; + overflow-x: auto; + line-height: 40px; + display: flex; + justify-content: space-between; + font-size: 15px; + .tabs{ + div{ + float: left; + width: 120px; + text-align: center; + cursor: pointer; + color: #000000; + opacity: 0.4; + border-right: 1px solid #F2F4F6; + } + .selectedBtn{ + background-color: #2196F3; + color: #fff; + opacity: 1; + } + } + .btnbox{ + display: flex; + align-items: center; + .uploadAttachment{ + display: inline-block; + margin-right: 20px; + width: 120px; + text-align: center; + height: 28px; + line-height: 28px; + position: relative; + button{ + width: 100%; + height: 28px; + line-height: 28px; + mat-icon{ + transform: rotate(25deg); + font-size: 20px; + width: 20px; + height: 20px; + } + } + .a-upload{ + display: inline-block; + position: absolute; + left: 0; + top: 0; + display: inline-block; + width: 100%; + height: 100%; + opacity: 0; + input{ + width: 100%; + height: 100%; + cursor: pointer; + } + } + } + span{ + display: inline-block; + cursor: pointer; + color: #2196F3; + mat-icon{ + vertical-align: text-top; + font-size: 20px; + width: 20px; + height: 20px; + } + } + span:hover{ + text-decoration: underline; + } + .submitAudit{ + margin: 0 30px; + } + + } + } + .contant{ + width: 100%; + height:460px; + overflow-y: auto; + p{ + color: #2196F3; + background-color: #F2F4F6; + height: 33px; + line-height: 33px; + box-sizing: border-box; + padding-left: 20px; + font-size: 15px; + } + span{ + font-size: 15px; + } + input,select{ + height: 30px; + line-height: 30px; + box-sizing: border-box; + padding: 0 12px; + width: 60%; + margin-left: 5px; + border: 1px solid #EBEBEB; + border-radius: 5px; + } + textarea{ + width: 89%; + margin-left: 5px; + height: 85%; + border: 1px solid #EBEBEB; + border-radius: 5px; + } + .longinput{ + width: 74%; + } + .unitDiv{ + width: 60%; + position: relative; + input,select{ + width: 100%; + box-sizing: border-box; + padding-right: 50px; + } + .unit{ + position: absolute; + right: 13px; + top: 4px; + color: #000000; + opacity: 0.4; + } + } + .smallwidth{ + width: 30%; + } + // 相关资料 + .fileDivBox{ + position: relative; + float: left; + border: 1px solid #EBEBEB; + width: 160px; + height: 162px; + box-sizing: border-box; + padding: 16px 16px 0; + display: flex; + flex-direction: column; + margin: 12px; + align-items: center; + cursor: pointer; + .imgbox{ + width: 134px; + height: 110px; + display: flex; + justify-content: center; + align-items: center; + .thumbnailImg{ + width: 134px; + height: 110px; + } + } + + span{ + width: 100%; + text-align: center; + margin-top: 5px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + color: gray; + font-size: 14px; + } + .deleteFile{ + position: absolute; + right: 0; + top: 0; + width: 18px; + height: 18px; + font-size: 18px; + display: none; + } + .btn{ + position: absolute; + height: 30px; + line-height: 30px; + font-size: 14px; + display: none; + } + .btn1{ + top: 37px; + } + .btn2{ + top: 78px; + } + } + .fileDivBox:hover{ + border: 1px solid #000; + .deleteFile{ + display: block; + + } + .deleteFile:hover{ + color: red; + } + .btn{ + display: block; + } + } + } + .masklayer{ + position: absolute; + left: 0; + top: 0; + z-index: 2000; + width: 100%; + height: 100%; + background: rgba(0,0,0,0.2); + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; + span{ + font-size: 14px; + margin-top: 5px; + } + .progressbar{ + width: 15%; + } + .cancelbtn{ + height: 32px; + line-height: 32px; + font-size: 14px; + margin-top: 12px; + } + } + } +} + + +.addLinkageForceBox{ + width: 530px; + height: 262px; + display: flex; + flex-direction: column; + .topbox{ + width: 100%; + height: 40px; + line-height: 40px; + background-color: #2196F3; + text-align: center; + color: #FFFFFF; + font-size: 15px; + } + .contant{ + flex: 1; + box-sizing: border-box; + padding:20px 30px; + + div{ + width:86px; + margin: 3px; + height: 36px; + float: left; + line-height: 36px; + text-align: center; + background-color: #F2F4F6; + font-size: 14px; + cursor: pointer; + border: 1px solid #fff; + border-radius: 4px; + display: flex; + justify-content: center; + align-items: center; + img{ + margin-right: 3px; + } + } + .selectedDiv{ + background-color: #fff; + border: 1px solid #2196F3; + } + } + .btnbox{ + width: 100%; + height: 50px; + box-sizing: border-box; + padding: 0px 30px; + display: flex; + align-items: flex-start;; + justify-content: center; + button{ + width: 80px; + height: 36px; + line-height: 36px; + margin: 0 20px; + } + } } \ No newline at end of file diff --git a/src/app/data-collection/linkage-forces/linkage-forces.component.ts b/src/app/data-collection/linkage-forces/linkage-forces.component.ts index cbddc20..919b746 100644 --- a/src/app/data-collection/linkage-forces/linkage-forces.component.ts +++ b/src/app/data-collection/linkage-forces/linkage-forces.component.ts @@ -1,5 +1,16 @@ +import { FlatTreeControl } from '@angular/cdk/tree'; +import { HttpClient } from '@angular/common/http'; +import { Inject, Renderer2 } from '@angular/core'; +import { ElementRef } from '@angular/core'; import { Component, OnInit } from '@angular/core'; - +import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; +import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar'; +import { MatTreeFlatDataSource, MatTreeFlattener } from '@angular/material/tree'; +import { NzTreeNode } from 'ng-zorro-antd/tree'; +import { TreeService } from 'src/app/http-interceptors/tree.service'; +import Viewer from 'viewerjs' +import Swiper from 'swiper'; +declare var AMap: any; @Component({ selector: 'app-linkage-forces', templateUrl: './linkage-forces.component.html', @@ -7,9 +18,754 @@ import { Component, OnInit } from '@angular/core'; }) export class LinkageForcesComponent implements OnInit { - constructor() { } + constructor(private tree: TreeService,public snackBar: MatSnackBar,private http:HttpClient,private elementRef: ElementRef,public renderer2: Renderer2,public dialog: MatDialog) { } + + isCheckedOfSearchDiv:boolean = true//列表过滤滑块 + slideChange(e){ + this.isCheckedOfSearchDiv = e.checked + } + //搜索表单 + searchForm:any = { + name:'', + integrityNum:'' + } + listIntegrityNum:any[] = [ + {id:-1,name:'全部'}, + {id:0,name:'<=50%'}, + {id:1,name:'50%-60%'}, + {id:2,name:'60%-70%'}, + {id:3,name:'70%-80%'}, + {id:4,name:'80%-90%'}, + {id:5,name:'90%-100%'} + ] + checkBoxList:any[] = [ + {id:0,name:'安监',imgUrl:'/assets/linkageForces/安监.png'}, + {id:1,name:'电力局',imgUrl:'/assets/linkageForces/电力局.png'}, + {id:2,name:'公安',imgUrl:'/assets/linkageForces/公安.png'}, + {id:3,name:'海事',imgUrl:'/assets/linkageForces/海事.png'}, + {id:4,name:'环保局',imgUrl:'/assets/linkageForces/环保局.png'}, + {id:5,name:'交通',imgUrl:'/assets/linkageForces/交通.png'}, + {id:6,name:'民政',imgUrl:'/assets/linkageForces/民政.png'}, + {id:7,name:'气象局',imgUrl:'/assets/linkageForces/气象局.png'}, + {id:8,name:'燃气局',imgUrl:'/assets/linkageForces/燃气局.png'}, + {id:9,name:'市政',imgUrl:'/assets/linkageForces/市政.png'}, + {id:10,name:'水利',imgUrl:'/assets/linkageForces/水利.png'}, + {id:11,name:'通信',imgUrl:'/assets/linkageForces/通信.png'}, + {id:12,name:'医疗',imgUrl:'/assets/linkageForces/医疗.png'}, + {id:13,name:'应急管理',imgUrl:'/assets/linkageForces/应急管理.png'}, + {id:14,name:'住建',imgUrl:'/assets/linkageForces/住建.png'} + ] + ngOnInit(): void { + this.getAllFireForce() + window.onload = () => { + var mySwiper = new Swiper('.swiper-container', { + slidesPerView: 10,//每页显示的个数 + slidesPerGroup: 3,//点击一次需要跳多少次 + // 如果需要前进后退按钮 + navigation: { + nextEl: '.swiper-button-next', + prevEl: '.swiper-button-prev', + }, + }) + } + setTimeout(() => { + + this.createMap() + }, 0); + } + //获得所有联动力量 + allLinkageForceObj:any//获得的所有联动力量 + dataLength:any //获取的数据一共多少条 + PageNumber:any = 1 //当前第几页 + getAllFireForce(){ + let MinIntegrity = 0 + let MaxIntegrity = 1.1 + if(this.searchForm.integrityNum == '0'){ + MinIntegrity = 0 + MaxIntegrity = 0.5 + }else if(this.searchForm.integrityNum == '1'){ + MinIntegrity = 0.5 + MaxIntegrity = 0.6 + }else if(this.searchForm.integrityNum == '2'){ + MinIntegrity = 0.6 + MaxIntegrity = 0.7 + }else if(this.searchForm.integrityNum == '3'){ + MinIntegrity = 0.7 + MaxIntegrity = 0.8 + }else if(this.searchForm.integrityNum == '4'){ + MinIntegrity = 0.8 + MaxIntegrity = 0.9 + }else if(this.searchForm.integrityNum == '5'){ + MinIntegrity = 0.9 + MaxIntegrity = 1.1 + }else if(this.searchForm.integrityNum == '-1'){ + MinIntegrity = 0 + MaxIntegrity = 1.1 + } + let params:any = { + Keyword : this.searchForm.name ? this.searchForm.name : '', + MinIntegrity : MinIntegrity, + MaxIntegrity : MaxIntegrity, + PageSize : 15, + PageNumber : this.PageNumber, + } + this.http.get('/api/LinkageForces',{params:params}).subscribe((data:any) => { + console.log('所有消防力量列表',data) + this.dataLength = data.totalCount + this.allLinkageForceObj = data + }) + } + + + //选择要显示的联动力量 + selectedLinkageForce(item){ + this.isGisTopBox = false + if(this.LinkageForceDetailInfo.id != item.id){ + this.clearData() + this.LinkageForceDetailInfo = item + item.location?this.positionLngLat = item.location:null + this.AttachmentArr = JSON.parse(item.relevantInfomationData) + if(this.newPositionMarker){ + this.map.remove(this.newPositionMarker); + } + console.log('当前点击的li',item) + if(item.location && item.location.x){//如果已经标注单位坐标 + console.log('开始标注') + + this.map.setCenter([item.location.x,item.location.y]); + this.newPositionMarker = new AMap.Marker({ + position: [item.location.x,item.location.y], + content: this.newPositionMarkerContent, + offset: new AMap.Pixel(-15, -18) + }) + // 将 markers 添加到地图 + this.map.add(this.newPositionMarker); + } + } + } + //搜索 + searchList(){ + this.getAllFireForce() + } + //重置搜索 + reset(){ + this.searchForm = { + name:'', + integrityNum:'' + } + this.getAllFireForce() + } + //分页事件 + chagePage(e){ + this.PageNumber = e.pageIndex+1 + this.getAllFireForce() + } + //js乘法 + accMul(arg1,arg2,fix) { + if(!parseInt(fix)==fix) + { + return; + } + var m=0,s1=arg1.toString(),s2=arg2.toString(); + try{m+=s1.split(".")[1].length}catch(e){} + try{m+=s2.split(".")[1].length}catch(e){} + if(m>fix){ + return (Math.round(Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m-fix))/Math.pow(10,fix)); + }else if(m<=fix){ + return (Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)).toFixed(fix); + }else{ + return (arg1*arg2).toFixed(fix).toString(); + } + } + //完整度颜色 + integrity(width){ + let _this = this + let style:any = {} + style.width = width +'%'; + if(width < 30){ + style.background = '#FF5D4A' + } + if(width >= 30 && width < 60){ + style.background = '#FFDD00' + } + if(width >= 60){ + style.background = '#5CD64E' + } + return style + } + //删除某条联动力量 + deleteLinkageForc(item,e){ + e.stopPropagation() + let isDelete = window.confirm(`确定要删除${item.name}吗`) + if(isDelete){ + this.http.delete(`/api/LinkageForces/${item.id}`).subscribe(data => { + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('删除成功','确定',config); + if(item.id == this.LinkageForceDetailInfo.id){ + this.LinkageForceDetailInfo.linkageForceType = null + } + this.getAllFireForce() + }) + } + } + //当前点击tab页面第几个 + tabIndex:any = 1 + selectedTab(index){ + this.tabIndex = index + } + + //联动力量详情提交信息 + LinkageForceDetailInfo:any = { + // id:'',//编号 + linkageForceType:'', + name:'',//名称 + phoneNumber:'',//联系电话 + faxNumber:'',//传真 + remark:'',//备注 + administrativeRegion:'',//行政区 + address:'',//地址 + location:{ + x:'', + y:'' + }, + contactName:'',//联系人姓名 + contactTitle:'',//联系人职务 + contactPhone:'',//联系人电话 + serviceContent:'',//服务内容 + resourceRemark:'',//资源说明 + relevantInfomationData:[]//相关资料 + } + + //清空表单数据 + clearData(){ + this.deletedFile = []//清空相关资料已删除缓存 + this.AttachmentArr = []//清空相关资料 + this.positionLngLat = {x:'',y:''} + this.atLastPositionLngLat = {x:'',y:''} + this.LinkageForceDetailInfo = { + // id:'',//编号 + linkageForceType:'', + name:'',//名称 + phoneNumber:'',//联系电话 + faxNumber:'',//传真 + remark:'',//备注 + administrativeRegion:'',//行政区 + address:'',//地址 + location:{ + x:'', + y:'' + }, + contactName:'',//联系人姓名 + contactTitle:'',//联系人职务 + contactPhone:'',//联系人电话 + serviceContent:'',//服务内容 + resourceRemark:'',//资源说明 + relevantInfomationData:[]//相关资料 + } + } + //新增联动力量 + selectedFireForceTypeIndex:any//新增消防力量名称 + addLinkageForce(){ + const dialogRef = this.dialog.open(AddLinkageForce, { + data: {}, + id:'addLinkageForce' + }); + dialogRef.afterClosed().subscribe( + data=>{ + if(typeof data === 'number' && !isNaN(data)){ + this.clearData() + console.log('清空了',this.LinkageForceDetailInfo) + this.LinkageForceDetailInfo.linkageForceType = data + this.newPositionMarker ? this.map.remove(this.newPositionMarker) : null + this.map.setCity('上海市'); + + } + } + ) + } + //保存 + save(){ + if(!this.LinkageForceDetailInfo.name){ + alert('名称必填') + return + } + this.isMasklayer = true + //删除一下数据库的文件 + if(this.deletedFile.length != 0){ + this.deletedFile.forEach(item => { + this.http.delete(`/api/Objects/PlanPlatform/${item.objectName}`).subscribe(data=>{ + console.log('删除原文件成功') + }) + }); + } + + this.LinkageForceDetailInfo.location = {x:'',y:''} + this.LinkageForceDetailInfo.RelevantInfomationData = JSON.stringify(this.AttachmentArr) + if(this.atLastPositionLngLat.x){ + this.LinkageForceDetailInfo.location.x = this.atLastPositionLngLat.x + this.LinkageForceDetailInfo.location.y = this.atLastPositionLngLat.y + }else{ + this.LinkageForceDetailInfo.location = null + } + this.LinkageForceDetailInfo.relevantInfomationData = JSON.stringify(this.LinkageForceDetailInfo.relevantInfomationData) + let body = this.LinkageForceDetailInfo + if(this.LinkageForceDetailInfo.id){ + this.http.put(`/api/LinkageForces/${this.LinkageForceDetailInfo.id}`,body).subscribe((data:any) =>{ + console.log('修改成功',data) + this.isMasklayer = false + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('修改成功','确定',config); + // this.LinkageForceDetailInfo.id = data.id + this.getAllFireForce() + + }) + }else{ + this.http.post('/api/LinkageForces',body).subscribe((data:any) =>{ + console.log('创建成功',data) + this.isMasklayer = false + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('保存成功','确定',config); + this.LinkageForceDetailInfo = data + this.getAllFireForce() + }) + } + + + } + + map:any + placeSearch:any//构造地点查询类 + isMapLabel:boolean = false //是否已经标记坐标 + newPositionMarkerContent:any = + '
' + + ' ' + + '
' + newPositionMarkerContentBtn:any = + '
' + + ' ' + + '
|
' + + '
' + //创建地图 + newPositionMarker:any//坐标实例 + createMap(){ + this.map = new AMap.Map('container', { + zoom:12 + }) + this.map.setCity('上海市'); + //输入提示 + var autoOptions = { + input: "tipinput" + }; + AMap.plugin(['AMap.PlaceSearch','AMap.AutoComplete'], ()=>{ + let auto = new AMap.AutoComplete(autoOptions); + this.placeSearch = new AMap.PlaceSearch(); //构造地点查询类 + auto.on("select", (e)=>{ + this.newPositionMarker.setPosition([e.poi.location.lng,e.poi.location.lat]) + this.positionLngLat = {x: e.poi.location.lng, y: e.poi.location.lat} + this.map.setCenter([e.poi.location.lng,e.poi.location.lat]); //设置地图中心点 + });//注册监听,当选中某条记录时会触发 + + }); + + if(this.isMapLabel){//如果已经标注单位坐标 + console.log('已标注单位位置') + // this.map.setCenter([this.unitinfo.location.x,this.unitinfo.location.y]); + // this.oldPositionMarker = new AMap.Marker({ + // position: [this.unitinfo.location.x,this.unitinfo.location.y], + // content: this.newPositionMarkerContent, + // offset: new AMap.Pixel(-15, -18) + // }) + // // 将 markers 添加到地图 + // this.map.add(this.oldPositionMarker); + }else{ + console.log('未标注单位位置') + // this.map.setCity('上海市'); + } + } + //点击位置 + isGisTopBox:boolean = false // + searchTitle:any = ''// + + positionLngLat:any = {x:'',y:''}//临时坐标点 + atLastPositionLngLat:any = {x:'',y:''}//最终坐标点 + setPosition(){ + if(!this.isGisTopBox){ + this.isGisTopBox = true + this.newPositionMarker ? this.map.remove(this.newPositionMarker) : null + let center + console.log(789,this.atLastPositionLngLat) + if(this.newPositionMarker && this.atLastPositionLngLat.x){//如果已经标注单位坐标 + console.log(1) + center = [this.atLastPositionLngLat.x, this.atLastPositionLngLat.y] + }else if(this.newPositionMarker && !this.atLastPositionLngLat.x && this.LinkageForceDetailInfo.location && this.LinkageForceDetailInfo.location.x){ + console.log(2) + center = [this.LinkageForceDetailInfo.location.x, this.LinkageForceDetailInfo.location.y] + }else{ + console.log(3) + center = this.map.getCenter(); //获取当前地图中心位置 + } + this.newPositionMarker = new AMap.Marker({ + draggable: true, + position: center, + content: this.newPositionMarkerContentBtn, + offset: new AMap.Pixel(-15, -18) + }); + this.positionLngLat = {x: center.lng || center[0], y: center.lat || center[1]} + this.map.add(this.newPositionMarker); + this.isMapLabel = true + this.newPositionMarker.on('dragend', (e)=>{ + this.positionLngLat = {x: e.lnglat.lng, y: e.lnglat.lat} + }) + //点击确定 + this.renderer2.listen(this.elementRef.nativeElement.querySelector('#setPositionOk'),'click',(event)=>{ + this.isGisTopBox = false + this.map.remove(this.newPositionMarker) + this.newPositionMarker = new AMap.Marker({ + position: [this.positionLngLat.x,this.positionLngLat.y], + content: this.newPositionMarkerContent, + offset: new AMap.Pixel(-15, -18) + }); + this.atLastPositionLngLat = JSON.parse(JSON.stringify(this.positionLngLat)) + this.map.add(this.newPositionMarker); + this.positionLngLat = this.atLastPositionLngLat + }) + this.renderer2.listen(this.elementRef.nativeElement.querySelector('#setPositionClose'),'click',(event)=>{ + this.isGisTopBox = false + this.map.remove(this.newPositionMarker) + if(this.positionLngLat.x && this.positionLngLat.x != 0 && !this.atLastPositionLngLat.x){//直接取消 + this.map.remove(this.newPositionMarker) + this.positionLngLat = {} + this.atLastPositionLngLat = {} + }else{ + this.newPositionMarker = new AMap.Marker({ + position: [this.atLastPositionLngLat.x,this.atLastPositionLngLat.y], + content: this.newPositionMarkerContent, + offset: new AMap.Pixel(-15, -18) + }); + this.map.setCenter([this.atLastPositionLngLat.x,this.atLastPositionLngLat.y]); //设置地图中心点 + this.map.add(this.newPositionMarker); + this.positionLngLat = this.atLastPositionLngLat + } + })//取消 + } + + } + + + + + //上传附件 + file:any; //上传的文件 + AttachmentArr:any = []//上传附件地址集合 + uploadId:any//分块上传id + objectName:any + progressBarValue:any = 0//分块上传进度 + isMasklayer:boolean = false//圆圈遮罩层是否打开 + isMasklayerUploading:boolean = false//上传进度条遮罩层是否打开 + isMasklayerDownload:boolean = false//下载进度条遮罩层是否打开 + uploadAttachment(e){ + console.log('选择的文件',e) + this.file = e.target.files[0] || null //上传的文件 + let file = e.target.files[0] || null //获取上传的文件 + let fileSize = file.size || null //上传文件的总大小 + let shardSize = 5 * 1024 * 1024 //5MB一个分片 + + if (file && fileSize<=shardSize) { //上传文件<=5MB时 + this.isMasklayer = true + console.log('file',this.file) + let formData = new FormData() + formData.append("file",file) + //this.selectedFireForce.id 选择的组织机构的id + this.http.post(`/api/Objects/PlanPlatform/LinkageForce/${this.LinkageForceDetailInfo.id}`,formData).subscribe((data:any)=>{ + // this.objectName = data.objectName + let obj = { + objectName:data.objectName, + fileName:data.fileName, + fileLength:data.fileLength + } + this.AttachmentArr.push(obj) + this.isMasklayer = false + console.log('上传成功',data) + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('上传成功','确定',config); + }) + } else if (file && fileSize>shardSize) { //上传文件>5MB时,分块上传 + this.isMasklayerUploading = true + let data = {filename: file.name} + this.http.post(`/api/NewMultipartUpload/PlanPlatform/LinkageForce/${this.LinkageForceDetailInfo.id}`,{},{params:data}).subscribe((data:any)=>{ //初始化分段上传 + console.log('初始化分块上传成功',data) + this.objectName = data.objectName + this.uploadId = data.uploadId + this.subsectionUploading() + }) + } + } + PartNumberETag:any=[]; //每次返回需要保存的信息 + + //开始分段上传 + async subsectionUploading () { + let file = this.file || null //获取上传的文件 + let fileSize = file.size || null //上传文件的总大小 + let shardSize = 5 * 1024 * 1024 //5MB一个分片 + let allSlice = Math.ceil(fileSize / shardSize) //总文件/5MB===共分多少段 + for (let i = 0;i < allSlice;i++) { //循环分段上传 + let start = i * shardSize //切割文件开始位置 + let end = Math.min(fileSize, start + shardSize); //切割文件结束位置 + let formData = new FormData() + formData.append("file",file.slice(start, end)) + + //同步写法实现异步调用 + let result = await new Promise((resolve, reject) => { + // await 需要后面返回一个 promise 对象 + this.http.post(`/api/MultipartUpload/PlanPlatform/${this.objectName}?uploadId=${this.uploadId}&partNumber=${i+1}`,formData).subscribe((data:any)=>{ + let msg = { + "partNumber":data.partNumber || null, + "eTag": data.eTag || null} + resolve(msg) // 调用 promise 内置方法处理成功 + }) + }); + this.PartNumberETag.push(result) + // this.progressBarValue = Number((i/allSlice).toFixed(2))*100 + this.progressBarValue = this.accMul(Number((i/allSlice).toFixed(2))*100,1,0) + if (this.PartNumberETag.length === allSlice) { + this.progressBarValue = 100 + this.endUploading()} + }//for循环 + + } + + //完成分块上传 + endUploading () { + let data = this.PartNumberETag + let paramsData = {uploadId:this.uploadId} + this.http.post(`/api/CompleteMultipartUpload/PlanPlatform/${this.objectName}`,data,{params:paramsData}).subscribe(data=>{ + this.PartNumberETag =[] //清空保存返回的信息 + let obj = { + objectName:this.objectName, + fileName:this.file.name, + fileLength:this.file.size + } + this.AttachmentArr.push(obj) + this.isMasklayerUploading = false//关闭进度条遮罩层 + this.progressBarValue = 0//重置进度数 + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('上传成功','确定',config); + }) + } + //取消分块上传 + cancelUploading() { + this.http.delete(`/api/MultipartUpload/PlanPlatform/${this.objectName}?uploadId=${this.uploadId}`).subscribe(data=>{ + this.progressBarValue = 0; + this.isMasklayerUploading= false + this.PartNumberETag =[] //清空保存返回的信息 + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('取消上传成功','确定',config); + }) + } + + //下载 + download (e) { + this.isMasklayerDownload = true //开启下载进度条 + let file = e //传递过来的文件元数据 + let fileSize = file.fileLength //下载文件的总大小 + let shardSize = 3 * 1024 * 1024 //文件大小是否大于10MB + if (file && fileSize<=shardSize) { //<=3MB时直接下载 + this.progressBarValue = 60 + this.http.get(`/api/Objects/PlanPlatform/${e.objectName}`,{responseType: 'blob'},).subscribe(data=>{ + let url = window.URL.createObjectURL(new Blob([data])); //createObjectURL创建一个下载Blob的url地址 + let link = document.createElement("a"); + link.style.display = "none"; + link.href = url; + let fileName = e.fileName ? e.fileName : e.objectName.split('/')[e.objectName.split('/').length-1] + link.setAttribute("download", fileName); + document.body.appendChild(link); + link.click(); + this.isMasklayerDownload = false //关闭下载进度条 + this.progressBarValue = 0 //初始化进度条 + }) + } else if (file && fileSize>shardSize) { //>3MB时分块下载 + this.blockingDownload(e) //分段下载 + } + + } + + //分段下载并合并 + async blockingDownload (e) { + let file = e //传递过来的文件元数据 + let fileSize = file.fileLength //下载文件的总大小 + let shardSize = 3 * 1024 * 1024 //3MB一个分片 + let allSlice = Math.ceil(fileSize / shardSize) //总文件/3MB===共分多少段 + let allFile:any = [] //所有的file分段 + + for (let i=0;i{ + this.http.get(`/api/Objects/PlanPlatform/${e.objectName}`,{headers:{'range':`bytes= ${start}-${end}`},responseType:'blob'}).subscribe(data=>{ + result(data) }) + }) + allFile.push(result) + // this.progressBarValue = Number((i/allSlice).toFixed(2))*100 //文件进度数 + this.progressBarValue = this.accMul(Number((i/allSlice).toFixed(2))*100,1,0) + if (allFile.length === allSlice) { //合并文件输出给浏览器 + let url = window.URL.createObjectURL(new Blob(allFile)); //createObjectURL创建一个下载Blob的url地址 + let link = document.createElement("a"); + link.style.display = "none"; + link.href = url; + let fileName = e.fileName ? e.fileName : e.objectName.split('/')[e.objectName.split('/').length-1] + link.setAttribute("download", fileName); + document.body.appendChild(link); + link.click(); + this.isMasklayerDownload = false //关闭下载进度条 + this.progressBarValue = 0 //初始化进度条 + } + + } //for循环结束 + + } + + //删除图片 + deletedFile:any = [] + deleteFile(item,e){ + console.log(this.AttachmentArr) + e.stopPropagation() + let isTrue = window.confirm('确定要删除该文件吗?') + if(isTrue){ + let index + this.AttachmentArr.forEach((element,key) => { + if(element.objectName == item.objectName){ + index = key + } + }); + this.AttachmentArr.splice(index,1) + this.deletedFile.push(item) + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('删除成功','确定',config); + } + } + + //点击文件 + clickFile(item){ + console.log(item) + let suffix = item.fileName.split('.')[item.fileName.split('.').length-1] + if(suffix == 'png' || suffix == 'jpg' || suffix == 'JPG'){ + console.log('这是图片') + let dom = document.getElementById(`viewerjs`) + let pObjs = dom.childNodes; + let node = document.createElement("img") + node.style.display = "none"; + node.src = "/api/Objects/PlanPlatform/" + item.objectName; + node.id = 'img' + dom.appendChild(node) + setTimeout(() => { + let viewer = new Viewer(document.getElementById(`viewerjs`), { + hidden:()=>{ + dom.removeChild(pObjs[0]); + viewer.destroy(); + } + }); + node.click(); + }, 0); + } + if(suffix == 'docx' || suffix == 'doc' || suffix == 'pdf'){ + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('暂不支持查看','确定',config); + } + if(suffix == 'mp4'){ + const dialogRef = this.dialog.open(ViewDetails2, {//调用open方法打开对话框并且携带参数过去 + data: {item:item,type:"video"}, + id:'videodialog2' + }); + dialogRef.afterClosed().subscribe(); + } + } + +} + + + + +//新增联动力量弹出框 +@Component({ + selector: 'AddLinkageForce', + templateUrl: './addLinkageForce.html', + styleUrls: ['./linkage-forces.component.scss'] +}) +export class AddLinkageForce { + + constructor(private http: HttpClient,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data,public snackBar: MatSnackBar) {} + + + addList:any = [ + {id:0,name:'安监',imgUrl:'/assets/linkageForces/安监.png'}, + {id:1,name:'电力局',imgUrl:'/assets/linkageForces/电力局.png'}, + {id:2,name:'公安',imgUrl:'/assets/linkageForces/公安.png'}, + {id:3,name:'海事',imgUrl:'/assets/linkageForces/海事.png'}, + {id:4,name:'环保局',imgUrl:'/assets/linkageForces/环保局.png'}, + {id:5,name:'交通',imgUrl:'/assets/linkageForces/交通.png'}, + {id:6,name:'民政',imgUrl:'/assets/linkageForces/民政.png'}, + {id:7,name:'气象局',imgUrl:'/assets/linkageForces/气象局.png'}, + {id:8,name:'燃气局',imgUrl:'/assets/linkageForces/燃气局.png'}, + {id:9,name:'市政',imgUrl:'/assets/linkageForces/市政.png'}, + {id:10,name:'水利',imgUrl:'/assets/linkageForces/水利.png'}, + {id:11,name:'通信',imgUrl:'/assets/linkageForces/通信.png'}, + {id:12,name:'医疗',imgUrl:'/assets/linkageForces/医疗.png'}, + {id:13,name:'应急管理',imgUrl:'/assets/linkageForces/应急管理.png'}, + {id:14,name:'住建',imgUrl:'/assets/linkageForces/住建.png'} + ] + selectedFireForceTypeIndex:any = 0 + selecteAddType(item,key){ + this.selectedFireForceTypeIndex = item.id + + } ngOnInit(): void { + + } + + confirm(){ + this.dialogRef.close(this.selectedFireForceTypeIndex) } } + +//查看图片大图和视频 +@Component({ + selector: 'viewdetails', + templateUrl: './viewdetails.html', + styleUrls: ['./linkage-forces.component.scss'] +}) +export class ViewDetails2 { + // myControl = new FormControl(); + //注入MatDialogRef,可以用来关闭对话框 + //要访问对话框组件中的数据,必须使用MAT_DIALOG_DATA注入令牌 + constructor(private http: HttpClient,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data) {} + Url:string + onNoClick(): void { + this.dialogRef.close(); + } + ngOnInit(): void { + this.Url = '/api/Objects/PlanPlatform/' + this.data.item.objectName + } + closeDialog(){ + this.dialogRef.close(); + } + +} \ No newline at end of file diff --git a/src/app/data-collection/linkage-forces/viewdetails.html b/src/app/data-collection/linkage-forces/viewdetails.html new file mode 100644 index 0000000..6d917bb --- /dev/null +++ b/src/app/data-collection/linkage-forces/viewdetails.html @@ -0,0 +1 @@ + diff --git a/src/app/data-collection/water-collection/water-collection.component.html b/src/app/data-collection/water-collection/water-collection.component.html index 542ed80..9fe492c 100644 --- a/src/app/data-collection/water-collection/water-collection.component.html +++ b/src/app/data-collection/water-collection/water-collection.component.html @@ -52,7 +52,7 @@
- +
diff --git a/src/app/data-collection/water-collection/water-collection.component.ts b/src/app/data-collection/water-collection/water-collection.component.ts index 17dd475..c88aa80 100644 --- a/src/app/data-collection/water-collection/water-collection.component.ts +++ b/src/app/data-collection/water-collection/water-collection.component.ts @@ -74,7 +74,7 @@ export class WaterCollectionComponent implements OnInit { } let params:any = { Keyword : this.searchForm.name, - PageSize : 30, + PageSize : 15, PageNumber : this.PageNumber, MinIntegrity : MinIntegrity, MaxIntegrity : MaxIntegrity diff --git a/src/app/gis-management/gis-labeling/gis-labeling.component.html b/src/app/gis-management/gis-labeling/gis-labeling.component.html index 331be05..60f2b04 100644 --- a/src/app/gis-management/gis-labeling/gis-labeling.component.html +++ b/src/app/gis-management/gis-labeling/gis-labeling.component.html @@ -114,6 +114,7 @@ 显示范围 : + diff --git a/src/app/gis-management/gis-labeling/gis-labeling.component.ts b/src/app/gis-management/gis-labeling/gis-labeling.component.ts index 819a3ff..d8d3330 100644 --- a/src/app/gis-management/gis-labeling/gis-labeling.component.ts +++ b/src/app/gis-management/gis-labeling/gis-labeling.component.ts @@ -27,28 +27,14 @@ export class GisLabelingComponent implements OnInit { {id:'0',name:'消火栓',selected:false}, {id:'1',name:'消防水池',selected:false}, {id:'2',name:'天然水源',selected:false}, - // {id:'0',name:'单位地上消火栓',selected:false}, - // {id:'0',name:'单位地下消火栓',selected:false}, - // {id:'0',name:'市政地上消火栓',selected:false}, - // {id:'0',name:'消防水池',selected:false}, - // {id:'0',name:'方形储水池',selected:false}, - // {id:'0',name:'蓄水池',selected:false}, - // {id:'0',name:'原型水塔',selected:false}, - // {id:'0',name:'水库',selected:false}, - // {id:'0',name:'消防水箱',selected:false}, - // {id:'0',name:'码头',selected:false}, - // {id:'0',name:'海洋',selected:false}, - // {id:'0',name:'河流',selected:false}, - // {id:'0',name:'湖泊',selected:false}, - // {id:'0',name:'沟渠',selected:false} - ] + ] keyUnitForm : FormGroup//gis右上角重点单位表单 watertForm : FormGroup//gis右上角水源表单 selectedUnitList:any = []//选择提交的单位 selectedWaterList:any = []//选择提交的水源 - unitAreaDefault:any = '0'//默认单位范围 - waterAreaDefault:any = '0'//默认水源范围 + unitAreaDefault:any = '-1'//默认单位范围 + waterAreaDefault:any = '-1'//默认水源范围 //获得单位循环出来的checkbox列表(formControl实例) get units():any{ return this.keyUnitForm.get('units') @@ -156,17 +142,19 @@ export class GisLabelingComponent implements OnInit { //重点单位提交 ketUnitSubmit(value){ if(this.markers.length == 0){ - const config = new MatSnackBarConfig(); - config.verticalPosition = 'top'; - config.duration = 3000 - this.snackBar.open('请先选择一个单位','确定',config); + let paramsdata:any = { + PageSize:99999, + BuildingTypeIdList : this.selectedUnitList.length != 0 ? this.selectedUnitList : ['123'] + } + this.http.get("/api/Companies",{params:paramsdata}).subscribe((data:any) => { + this.createUnitMarker(data.items) + }) }else if(!this.mapPattern){ const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 this.snackBar.open('请切换2D模式使用此功能','确定',config); }else{ - // console.log('提交',this.selectedUnit) this.circle.setRadius(Number(this.unitAreaDefault)) this.circle.setCenter(this.markers[0]._position) this.circle.setMap(this.map) @@ -178,32 +166,43 @@ export class GisLabelingComponent implements OnInit { }else{ Distance = Math.abs(lnglat.offset(0, this.unitAreaDefault).lat - this.selectedUnit.location.y) } - - let paramsdata:any = { - Lon : this.selectedUnit.location.x, - Lat : this.selectedUnit.location.y, - Distance : Distance, - BuildingTypeIdList : this.selectedUnitList.length != 0 ? this.selectedUnitList : ['123'] - } - // console.log(666,paramsdata) - this.http.get("/api/Companies",{params:paramsdata}).subscribe((data:any) => { - data.items.forEach((i,index) => { - if(i.id == this.selectedUnit.id){ - data.items.splice(index,1) - } + if(this.unitAreaDefault == '-1'){//如果勾选全部 + let paramsdata:any = { + PageSize:99999, + BuildingTypeIdList : this.selectedUnitList.length != 0 ? this.selectedUnitList : ['123'] + } + this.http.get("/api/Companies",{params:paramsdata}).subscribe((data:any) => { + data.items.forEach((i,index) => { + if(i.id == this.selectedUnit.id){ + data.items.splice(index,1) + } + }) + this.createUnitMarker(data.items) }) - this.createUnitMarker(data.items) - }) + }else{ + let paramsdata:any = { + PageSize:99999, + Lon : this.selectedUnit.location.x, + Lat : this.selectedUnit.location.y, + Distance : Distance, + BuildingTypeIdList : this.selectedUnitList.length != 0 ? this.selectedUnitList : ['123'] + } + this.http.get("/api/Companies",{params:paramsdata}).subscribe((data:any) => { + data.items.forEach((i,index) => { + if(i.id == this.selectedUnit.id){ + data.items.splice(index,1) + } + }) + this.createUnitMarker(data.items) + }) + } } } //创建单位markers - unitMarkerList:any = [] - unitlabelsLayer:any + unitCluster:any //重点单位点聚合实例 createUnitMarker(list){ - this.unitlabelsLayer ? this.map.remove(this.unitlabelsLayer) : null - this.unitMarkerList ? this.map.remove(this.unitMarkerList) : null - - let markerArr = [] + let unitMarkerArrcluster = [] + this.unitCluster ? this.unitCluster.setData([]) : null list.forEach((item) => { let image if(item.buildingTypes[0].name.indexOf('高层') != -1){ @@ -241,176 +240,262 @@ export class GisLabelingComponent implements OnInit { }else{ image = '/assets/images/其他.png' } - var icon = { - // 图标类型,现阶段只支持 image 类型 - type: 'image', - // 图片 url - image: image, - // 图片尺寸 - size: [32, 32], - // 图片相对 position 的锚点,默认为 bottom-center - anchor: 'center', - }; - var text = { - // 要展示的文字内容 - content: item.name, - // 文字方向,有 icon 时为围绕文字的方向,没有 icon 时,则为相对 position 的位置 - direction: 'bottom', - // 在 direction 基础上的偏移量 - offset: [-3, -3], - // 文字样式 - style: { - // 字体大小 - fontSize: 12, - // 字体颜色 - fillColor: '#22886f', - // 描边颜色 - strokeColor: '#fff', - // 描边宽度 - strokeWidth: 2, - } + // 用于点集合的数组 + unitMarkerArrcluster.push({ + lnglat : [item.location.x,item.location.y], + image : image, + data : item + }) + }) + this.map.plugin(["AMap.MarkerClusterer"],() => { + var gridSize = 60 + var count = unitMarkerArrcluster.length; + var _renderClusterMarker = function (context) { + var factor = Math.pow(context.count / count, 1 / 18); + var div = document.createElement('div'); + var Hue = 180 - factor * 180; + var bgColor = 'hsla(' + Hue + ',100%,40%,0.7)'; + var fontColor = 'hsla(' + Hue + ',100%,90%,1)'; + var borderColor = 'hsla(' + Hue + ',100%,40%,1)'; + var shadowColor = 'hsla(' + Hue + ',100%,90%,1)'; + div.style.backgroundColor = bgColor; + var size = Math.round(30 + Math.pow(context.count / count, 1 / 5) * 20); + div.style.width = div.style.height = size + 'px'; + div.style.border = 'solid 1px ' + borderColor; + div.style.borderRadius = size / 2 + 'px'; + div.style.boxShadow = '0 0 5px ' + shadowColor; + div.innerHTML = context.count; + div.style.lineHeight = size + 'px'; + div.style.color = fontColor; + div.style.fontSize = '14px'; + div.style.textAlign = 'center'; + context.marker.setOffset(new AMap.Pixel(-size / 2, -size / 2)); + context.marker.setContent(div) }; - var labelMarker = new AMap.LabelMarker({ - name: item.name, // 此属性非绘制文字内容,仅最为标识使用 - position: [item.location.x,item.location.y], - zIndex: 16, - // 将第一步创建的 icon 对象传给 icon 属性 - icon: icon, - // 将第二步创建的 text 对象传给 text 属性 - text: text, - }); - labelMarker.on('click', (e)=>{ - // console.log(item) - let markerContent = - `
-
${item.name}
-
-
单位性质:
-
消防负责人:
-
-
-
防火级别:
-
消防管理人:
-
-
-
防火管辖:
-
防火监督员:
-
-
-
责任队站:
-
总建筑面积:
-
-
-
建筑信息分类:
-
总占地面积:
-
-
-
值班电话:
-
-
-
基本信息
-
导航
-
全景漫游
-
三维场景
-
查看预案
-
分享
-
-
` - // 创建一个自定义内容的 infowindow 实例 - this.infoWindow = new AMap.InfoWindow({ - position: [item.location.x,item.location.y], - offset: new AMap.Pixel(0, -30), - content: markerContent, - }); - this.infoWindow.open(this.map); - this.renderer2.listen(this.elementRef.nativeElement.querySelector('#baseInformation'),'click',(event)=>{ this.baseInformation(item) })//基本信息点击事件 - this.renderer2.listen(this.elementRef.nativeElement.querySelector('#route'),'click',(event)=>{ this.route(item) })//导航点击事件 - this.renderer2.listen(this.elementRef.nativeElement.querySelector('#fullViewNavigation'),'click',(event)=>{ this.fullViewNavigation(item) })//全景漫游点击事件 - this.renderer2.listen(this.elementRef.nativeElement.querySelector('#threeeScene'),'click',(event)=>{ this.threeeScene(item) })//三维场景点击事件 - this.renderer2.listen(this.elementRef.nativeElement.querySelector('#seePlan'),'click',(event)=>{ this.seePlan(item) })//查看预案点击事件 - this.renderer2.listen(this.elementRef.nativeElement.querySelector('#share'),'click',(event)=>{ this.share(item) })//分享点击事件 + var _renderMarker = (context)=> { + var content = ``; + var offset = new AMap.Pixel(-15, -25); + context.marker.setContent(content) + context.marker.setOffset(offset) + } + this.unitCluster = new AMap.MarkerCluster(this.map, unitMarkerArrcluster, { + gridSize: gridSize, // 设置网格像素大小 + renderClusterMarker: _renderClusterMarker, // 自定义聚合点样式 + renderMarker: _renderMarker, // 自定义非聚合点样式 }); - markerArr.push(labelMarker) - }) - this.unitlabelsLayer = new AMap.LabelsLayer({ - zooms: [3, 20], - zIndex: 1000, - // 该层内标注是否避让 - collision: false, - // 设置 allowCollision:true,可以让标注避让用户的标注 - // allowCollision: true, + this.unitCluster.on('click',(e)=>{ + if(e.clusterData.length == 1){ + let item = e.clusterData[0].data + let markerContent = + `
+
${item.name}
+
+
单位性质:
+
消防负责人:
+
+
+
防火级别:
+
消防管理人:
+
+
+
防火管辖:
+
防火监督员:
+
+
+
责任队站:
+
总建筑面积:
+
+
+
建筑信息分类:
+
总占地面积:
+
+
+
值班电话:
+
+
+
基本信息
+
导航
+
全景漫游
+
三维场景
+
查看预案
+
分享
+
+
` + // 创建一个自定义内容的 infowindow 实例 + this.infoWindow = new AMap.InfoWindow({ + position: [item.location.x,item.location.y], + offset: new AMap.Pixel(0, -30), + content: markerContent, + }); + this.infoWindow.open(this.map); + this.renderer2.listen(this.elementRef.nativeElement.querySelector('#baseInformation'),'click',(event)=>{ this.baseInformation(item) })//基本信息点击事件 + this.renderer2.listen(this.elementRef.nativeElement.querySelector('#route'),'click',(event)=>{ this.route(item) })//导航点击事件 + this.renderer2.listen(this.elementRef.nativeElement.querySelector('#fullViewNavigation'),'click',(event)=>{ this.fullViewNavigation(item) })//全景漫游点击事件 + this.renderer2.listen(this.elementRef.nativeElement.querySelector('#threeeScene'),'click',(event)=>{ this.threeeScene(item) })//三维场景点击事件 + this.renderer2.listen(this.elementRef.nativeElement.querySelector('#seePlan'),'click',(event)=>{ this.seePlan(item) })//查看预案点击事件 + this.renderer2.listen(this.elementRef.nativeElement.querySelector('#share'),'click',(event)=>{ this.share(item) })//分享点击事件 + } + }) }); - this.unitlabelsLayer.add(markerArr); - this.map.add(this.unitlabelsLayer);//增加图层 - - this.unitMarkerList = markerArr - this.map.add(this.unitMarkerList);//将markers添加到图层上 + } - //取消单位markers - clearUnitMarker(){ - this.map.remove(this.unitlabelsLayer) - this.map.remove(this.unitMarkerList); + //取消显示单位 + resetUnit(){ + this.keyUnitForm.reset() + this.keyUnitForm.controls.areaUnit.setValue('-1') + this.map.remove(this.circle) + this.unitCluster.setData([]) } - //水源提交 waterSubmit(value){ if(this.markers.length == 0){ - const config = new MatSnackBarConfig(); - config.verticalPosition = 'top'; - config.duration = 3000 - this.snackBar.open('请先选择一个单位','确定',config); + if(this.selectedWaterList.length != 0){//勾选了水源类型 + let paramsdata:any = { + PageSize:99999, + WaterSourceTypes : this.selectedWaterList + } + this.http.get("/api/WaterSources",{params:paramsdata}).subscribe((data:any) => { + console.log('所有水源',data) + this.createwaterMarker(data.items) + }) + }else{ + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('请勾选想要显示的水源类型','确定',config); + } }else if(!this.mapPattern){ const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; config.duration = 3000 this.snackBar.open('请切换2D模式使用此功能','确定',config); }else{ - this.createwaterMarker() this.circleofwater.setRadius(Number(this.waterAreaDefault)) this.circleofwater.setCenter(this.markers[0]._position) this.circleofwater.setMap(this.map) + let Distance + let lnglat = new AMap.LngLat(this.selectedUnit.location.x, this.selectedUnit.location.y) // lng, lat 替换成传入的坐标 + + //如果选择当前的视野范围算出查询半径 if(this.waterAreaDefault == '0'){ this.circleofwater.setRadius(this.Calculationofdistance(this.map.getBounds())/2) + Distance = Math.abs(lnglat.offset(0, this.Calculationofdistance(this.map.getBounds())/2).lat - this.selectedUnit.location.y) + }else{ + Distance = Math.abs(lnglat.offset(0, this.waterAreaDefault).lat - this.selectedUnit.location.y) + } + //如果选择全部 + if(this.waterAreaDefault == '-1'){ + if(this.selectedWaterList.length != 0){ + let paramsdata:any = { + PageSize:99999, + WaterSourceTypes : this.selectedWaterList + } + this.http.get("/api/WaterSources",{params:paramsdata}).subscribe((data:any) => { + console.log('所有水源',data) + this.createwaterMarker(data.items) + }) + }else{ + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('请勾选想要显示的水源类型','确定',config); + } + + }else{ + if(this.selectedWaterList.length != 0){ + let paramsdata:any = { + PageSize:99999, + Lon : this.selectedUnit.location.x, + Lat : this.selectedUnit.location.y, + Distance : Distance, + WaterSourceTypes :this.selectedWaterList + } + this.http.get("/api/WaterSources",{params:paramsdata}).subscribe((data:any) => { + console.log('所有水源',data) + this.createwaterMarker(data.items) + }) + }else{ + let config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('请勾选想要显示的水源类型','确定',config); + } } } } - waterIconList = []; //展示的水源图标 + //取消显示水源 + resetWater(){ + this.watertForm.reset() + + this.watertForm.controls.areaWater.setValue('-1') + + this.map.remove(this.circleofwater) + this.waterCluster.setData([]) + } //循环渲染出所有水源markers - createwaterMarker(){ - this.waterIconList.forEach((element,index) => { this.map.remove(element) }); //先删除所有标点 - this.waterIconList = [] - let waterType = this.selectedWaterList //筛选出展示的 水源类型 - if (waterType.length) { - let x = JSON.parse( JSON.stringify(this.markers[0]._position[0]) ) //中心标注的 坐标 - let y = JSON.parse( JSON.stringify(this.markers[0]._position[1]) ) //中心标注的 坐标 - let positonList = [0.015, -0.035, 0.045, 0.061, -0.013, 0.029] - // 创建一个 Icon - let startIcon = new AMap.Icon({ - image: '../../../assets/images/fireHydrant.png', - imageSize: new AMap.Size(20, 20), - }); - positonList.forEach((item,index)=>{ - let marker = new AMap.Marker({ - map: this.map, - position: index%2==0? JSON.parse( JSON.stringify([x+item,y-item]) ) : JSON.parse( JSON.stringify([x-item,y+item]) ), - icon: startIcon, - }); - this.waterIconList.push(marker) + waterCluster:any //水源聚合实例 + createwaterMarker(list){ + let waterMarkerArrcluster = [] + this.waterCluster ? this.waterCluster.setData([]) : null + list.forEach((item) => { + let image + if(item.waterSourceType == 0){//消火栓 + image = '/assets/images/市政消火栓.png' + }else if(item.waterSourceType == 1){//消防水池 + image = '/assets/images/方形储水池.png' + }else if(item.waterSourceType == 2){//天然水源 + image = '/assets/images/天然水源.png' + } + // 用于点集合的数组 + waterMarkerArrcluster.push({ + lnglat : [item.location.x,item.location.y], + image : image, + data : item }) - positonList.forEach((item,index)=>{ - let marker = new AMap.Marker({ - map: this.map, - position: index%2==0? JSON.parse( JSON.stringify([x+item,y+item]) ) : JSON.parse( JSON.stringify([x-item,y-item]) ), - icon: startIcon, - }); - this.waterIconList.push(marker) + }) + this.map.plugin(["AMap.MarkerClusterer"],() => { + var gridSize = 60 + var count = waterMarkerArrcluster.length; + var _renderClusterMarker = function (context) { + var factor = Math.pow(context.count / count, 1 / 18); + var div = document.createElement('div'); + var Hue = 180 - factor * 180; + var bgColor = 'hsla(' + Hue + ',100%,40%,0.7)'; + var fontColor = 'hsla(' + Hue + ',100%,90%,1)'; + var borderColor = 'hsla(' + Hue + ',100%,40%,1)'; + var shadowColor = 'hsla(' + Hue + ',100%,90%,1)'; + div.style.backgroundColor = bgColor; + var size = Math.round(30 + Math.pow(context.count / count, 1 / 5) * 20); + div.style.width = div.style.height = size + 'px'; + div.style.border = 'solid 1px ' + borderColor; + div.style.borderRadius = size / 2 + 'px'; + div.style.boxShadow = '0 0 5px ' + shadowColor; + div.innerHTML = context.count; + div.style.lineHeight = size + 'px'; + div.style.color = fontColor; + div.style.fontSize = '14px'; + div.style.textAlign = 'center'; + context.marker.setOffset(new AMap.Pixel(-size / 2, -size / 2)); + context.marker.setContent(div) + }; + var _renderMarker = (context)=> { + var content = ``; + var offset = new AMap.Pixel(-15, -25); + context.marker.setContent(content) + context.marker.setOffset(offset) + } + this.waterCluster = new AMap.MarkerCluster(this.map, waterMarkerArrcluster, { + gridSize: gridSize, // 设置网格像素大小 + renderClusterMarker: _renderClusterMarker, // 自定义聚合点样式 + renderMarker: _renderMarker, // 自定义非聚合点样式 + }); + this.waterCluster.on('click',(e)=>{ + if(e.clusterData.length == 1){ + + } }) - } else { - const config = new MatSnackBarConfig(); - config.verticalPosition = 'top'; - config.duration = 3000 - this.snackBar.open('请选择水源类型','确定',config); - } + }); + } //计算两地距离 @@ -442,24 +527,9 @@ export class GisLabelingComponent implements OnInit { } } - //取消显示单位 - resetUnit(){ - this.keyUnitForm.reset() - this.keyUnitForm.controls.areaUnit.setValue('0') - this.map.remove(this.circle) - this.clearUnitMarker()//取消显示单位markers - // console.log('取消') - } - //取消显示水源 - resetWater(){ - this.waterIconList.forEach((element,index) => { this.map.remove(element) }); //先删除所有标点 - this.waterIconList = [] - this.watertForm.reset() - this.watertForm.controls.areaWater.setValue('0') - this.map.remove(this.circleofwater) - // console.log('取消') - } + + //右上角点击每一个title clickTitle(index){ @@ -482,15 +552,6 @@ export class GisLabelingComponent implements OnInit { loadChange(e){ e.checked ? this.map.add(this.roadNetLayer) : this.map.remove(this.roadNetLayer); } - // floorLayer = new AMap.Buildings({ - // zooms: [16, 18], - // zIndex: 10, - // heightFactor: 2 //2倍于默认高度,3D下有效 - // }) - //楼层图层 - // floorChange(e){ - // e.checked ? this.map.add(this.floorLayer) : this.map.remove(this.floorLayer); - // } @ViewChild( 'appLeft',{static: false} ) appLeft:any //子组件 leftDivState:boolean = false; //左侧工作区显示隐藏 @@ -556,19 +617,6 @@ export class GisLabelingComponent implements OnInit { that.map.setCity('上海市'); AMap.plugin(["AMap.RangingTool", "AMap.MouseTool"],function () { that.mouseTool=new AMap.MouseTool(that.map); - /* that.measureDistance = new AMap.RangingTool(that.map, rulerOptions); //测距离 - that.measureArea = new AMap.MouseTool(that.map); //侧面积 */ - /* that.measureDistance.on('addnode',function(e){ //监听测距离 标点事件 - that.distanceList.push(e.marker) - }) - that.measureDistance.on('end',function(e){ //监听测距离 连线事件 - that.distanceList.push(e.polyline) - }) */ - /* that.mouseTool.on("rightclick",function(e){ - if(this.mouseTool.eventsList[1]==undefined){ - alert("000") - } - }) */ }); } @@ -1093,7 +1141,6 @@ export class LookPlanDialog { } this.http.get("/api/PlanComponents",{params:paramsData}).subscribe((data:any)=>{ this.allPlanComponents = data.items - // console.log(this.allPlanComponents) }) } //查看预案 @@ -1137,7 +1184,6 @@ export class LookPlanDialog { dialogRef.afterClosed().subscribe( data=>{ if(data){ - // console.log(123,data) this.downloadFileName = data.fileName this.download = data this.downloadFile() diff --git a/src/app/ui/collection-tools-plan/collection-tools.component.html b/src/app/ui/collection-tools-plan/collection-tools.component.html index e461b35..a574865 100644 --- a/src/app/ui/collection-tools-plan/collection-tools.component.html +++ b/src/app/ui/collection-tools-plan/collection-tools.component.html @@ -332,44 +332,44 @@

{{item.PropertyName}}

{{item.PropertyName}}

- - + +

{{item.PropertyName}}

{{item.PropertyName}}

diff --git a/src/app/ui/collection-tools-plan/collection-tools.component.ts b/src/app/ui/collection-tools-plan/collection-tools.component.ts index b776406..ba10c1b 100644 --- a/src/app/ui/collection-tools-plan/collection-tools.component.ts +++ b/src/app/ui/collection-tools-plan/collection-tools.component.ts @@ -661,6 +661,7 @@ export class CollectionToolsPlanComponent implements OnInit { this.canvas.on("select",obj=>{ //选中素材属性注入函数 this.setAssetsProperty(obj.assetData) + console.log(obj.assetData) }) // 监听canvas组件取消选中素材事件 this.canvas.on("deselect",obj=>{ @@ -1258,6 +1259,7 @@ export class CollectionToolsPlanComponent implements OnInit { //点击数节点的显示隐藏icon clickLookItem(node){ + //修改真实素材islook属性 for(let key in this.storeyData.data){ if(key == node.id){ diff --git a/src/app/ui/collection-tools/collection-tools.component.html b/src/app/ui/collection-tools/collection-tools.component.html index 58b9396..04fe06a 100644 --- a/src/app/ui/collection-tools/collection-tools.component.html +++ b/src/app/ui/collection-tools/collection-tools.component.html @@ -334,44 +334,44 @@

{{item.PropertyName}}

{{item.PropertyName}}

- - + +

{{item.PropertyName}}

{{item.PropertyName}}

diff --git a/src/app/ui/collection-tools/collection-tools.component.scss b/src/app/ui/collection-tools/collection-tools.component.scss index 19402a6..0a5f53f 100644 --- a/src/app/ui/collection-tools/collection-tools.component.scss +++ b/src/app/ui/collection-tools/collection-tools.component.scss @@ -304,6 +304,7 @@ //右侧消防要素 .firecategories{ position: relative; + background-color: #fff; display: flex; flex-flow: column; .firecategoriesTree{ diff --git a/src/app/ui/collection-tools/collection-tools.component.ts b/src/app/ui/collection-tools/collection-tools.component.ts index b101e13..b360f15 100644 --- a/src/app/ui/collection-tools/collection-tools.component.ts +++ b/src/app/ui/collection-tools/collection-tools.component.ts @@ -1217,10 +1217,9 @@ export class CollectionToolsComponent implements OnInit { if(selectPanelPoint.Data){ for(let key in selectPanelPoint.Data.Stock){ selectPanelPoint.Data.Stock[key].isLookPattern = true + selectPanelPoint.Data.Stock[key].isLook = true if(element.id == selectPanelPoint.Data.Stock[key].FireElementId){ selectPanelPoint.Data.Stock[key].isTemplate = false - selectPanelPoint.Data.Stock[key].isLook = true - element.isNewElement = true //该节点children是否存在新添加的真实素材 标识 //定义查看模式下能看到的元素 @@ -1276,13 +1275,19 @@ export class CollectionToolsComponent implements OnInit { //点击数节点的显示隐藏icon clickLookItem(node){ - //修改真实素材islook属性 for(let key in this.storeyData.data){ if(key == node.id){ this.storeyData.data[key].isLook = !this.storeyData.data[key].isLook } } + if(this.selectPanelPoint && this.selectPanelPoint.Data){ + for(let key in this.selectPanelPoint.Data.Stock){ + if(key == node.id){ + this.selectPanelPoint.Data.Stock[key].isLook = !this.selectPanelPoint.Data.Stock[key].isLook + } + } + } //所有消防要素模板变化islook值 if(node.isTemplate){ @@ -1395,7 +1400,7 @@ export class CollectionToolsComponent implements OnInit { this.allFireElements[this.allFireElements.length-1].children.push(storeyData.data[key]) } } - let selectPanelPoint = JSON.parse(JSON.stringify(this.canvasData.selectPanelPoint || {} )) //当前 节点 数据 + let selectPanelPoint:any = this.canvasData.selectPanelPoint || {} //当前 节点 数据 if(selectPanelPoint.Data){ for(let key in selectPanelPoint.Data.Stock){ //筛选数据 没有匹配全部放入到 其他 数组 let noMatch = this.allFireElements.find( every=> every.id===selectPanelPoint.Data.Stock[key].FireElementId ) diff --git a/src/app/ui/collection-tools/save.ts b/src/app/ui/collection-tools/save.ts index 1657b66..0cd4303 100644 --- a/src/app/ui/collection-tools/save.ts +++ b/src/app/ui/collection-tools/save.ts @@ -57,11 +57,13 @@ export class saveOneDialog { @Inject(MAT_DIALOG_DATA) public data) {} type = this.data.type - allDisposalNode = this.data.allDisposalNode - allPlanDisposalNode = [] + allDisposalNode = this.data.allDisposalNode//所有节点数据 + allPlanDisposalNode = []//所有非数据节点 allRootDisposalNode = [{name:"根节点",id:null}] allDisposalNodeChild = [] + defaultSelectedName = '根节点' ngOnInit(): void { + console.log(111,this.allDisposalNode) //所有非数据节点 this.allDisposalNode.forEach(item => { if(!item.sitePlanId && !item.buildingAreaId){ @@ -89,10 +91,9 @@ export class saveOneDialog { onNoClick(): void { this.dialogRef.close(); } - nodeItem - itemChildNum = 0 //点击处置节点子数据节点的数量 + nodeItem:any//当前选中的要保存到的父节点 + itemChildNum = 0 //点击处置节点子数据节点的数量(赋值order) clickNode(item){ - // console.log(item) this.nodeItem = item this.allDisposalNodeChild.forEach(item => { if(item.id == this.nodeItem.id){ @@ -150,6 +151,10 @@ export class saveOneDialog { // 保存平面图数据到当前节点 let postdata =JSON.parse(JSON.stringify(this.canvasData.selectPanelPoint)) postdata.Data = JSON.stringify(postdata.Data) + postdata.Version ? null : postdata.Version = "2.0" + postdata.DisposalNodeId ? null : postdata.DisposalNodeId = istrue.id + postdata.PlanComponentId ? null : postdata.PlanComponentId = sessionStorage.getItem("planId") + postdata.Id ? null : postdata.Id = '' this.http.post(`/api/DisposalNodeData`,postdata).subscribe(data => { this.maskLayerService.sendMessage(false) const config = new MatSnackBarConfig(); @@ -173,7 +178,6 @@ export class saveOneDialog { resolve("更新处置节点成功,将天气 节点详情等信息保存到点击的节点") }) }).then((values)=>{ - // console.log(values) postdata.level = putdata.level + 1 new Promise((resolve,reject) => { this.http.post(`/api/DisposalNodes`,postdata).subscribe(data => { diff --git a/src/app/ui/collection-tools/saveTwo.html b/src/app/ui/collection-tools/saveTwo.html index fec97ff..ad8f075 100644 --- a/src/app/ui/collection-tools/saveTwo.html +++ b/src/app/ui/collection-tools/saveTwo.html @@ -11,7 +11,7 @@
- + {{item.name}} diff --git a/src/app/working-area/working-area.component.ts b/src/app/working-area/working-area.component.ts index 04d2c17..73adefd 100644 --- a/src/app/working-area/working-area.component.ts +++ b/src/app/working-area/working-area.component.ts @@ -315,7 +315,7 @@ export class WorkingAreaComponent extends EventEmitter implements OnInit, AfterV this.app.stage.addChild(this.grid); this.grid.drawGrid(); this.grid.onMousemove = (evt, gridCoord) => { - console.log(gridCoord); + // console.log(gridCoord); }; this.createBackgroundImage(); diff --git a/src/assets/images/其他.png b/src/assets/images/其他.png index 5b0bcbc..678a7dc 100644 Binary files a/src/assets/images/其他.png and b/src/assets/images/其他.png differ diff --git a/src/assets/images/古建筑.png b/src/assets/images/古建筑.png index 0d3c068..7329c51 100644 Binary files a/src/assets/images/古建筑.png and b/src/assets/images/古建筑.png differ diff --git a/src/assets/images/轨道交通.png b/src/assets/images/轨道交通.png index 9d2483a..2d2f97d 100644 Binary files a/src/assets/images/轨道交通.png and b/src/assets/images/轨道交通.png differ diff --git a/src/assets/linkageForces/交通.png b/src/assets/linkageForces/交通.png new file mode 100644 index 0000000..96cb8f6 Binary files /dev/null and b/src/assets/linkageForces/交通.png differ diff --git a/src/assets/linkageForces/住建.png b/src/assets/linkageForces/住建.png new file mode 100644 index 0000000..d3378a4 Binary files /dev/null and b/src/assets/linkageForces/住建.png differ diff --git a/src/assets/linkageForces/公安.png b/src/assets/linkageForces/公安.png new file mode 100644 index 0000000..cb3a71c Binary files /dev/null and b/src/assets/linkageForces/公安.png differ diff --git a/src/assets/linkageForces/医疗.png b/src/assets/linkageForces/医疗.png new file mode 100644 index 0000000..61d8034 Binary files /dev/null and b/src/assets/linkageForces/医疗.png differ diff --git a/src/assets/linkageForces/安监.png b/src/assets/linkageForces/安监.png new file mode 100644 index 0000000..6b2a903 Binary files /dev/null and b/src/assets/linkageForces/安监.png differ diff --git a/src/assets/linkageForces/市政.png b/src/assets/linkageForces/市政.png new file mode 100644 index 0000000..dc1b744 Binary files /dev/null and b/src/assets/linkageForces/市政.png differ diff --git a/src/assets/linkageForces/应急管理.png b/src/assets/linkageForces/应急管理.png new file mode 100644 index 0000000..3cd54b8 Binary files /dev/null and b/src/assets/linkageForces/应急管理.png differ diff --git a/src/assets/linkageForces/民政.png b/src/assets/linkageForces/民政.png new file mode 100644 index 0000000..790924f Binary files /dev/null and b/src/assets/linkageForces/民政.png differ diff --git a/src/assets/linkageForces/气象局.png b/src/assets/linkageForces/气象局.png new file mode 100644 index 0000000..654a198 Binary files /dev/null and b/src/assets/linkageForces/气象局.png differ diff --git a/src/assets/linkageForces/水利.png b/src/assets/linkageForces/水利.png new file mode 100644 index 0000000..3c542ee Binary files /dev/null and b/src/assets/linkageForces/水利.png differ diff --git a/src/assets/linkageForces/海事.png b/src/assets/linkageForces/海事.png new file mode 100644 index 0000000..f6940d8 Binary files /dev/null and b/src/assets/linkageForces/海事.png differ diff --git a/src/assets/linkageForces/燃气局.png b/src/assets/linkageForces/燃气局.png new file mode 100644 index 0000000..b430203 Binary files /dev/null and b/src/assets/linkageForces/燃气局.png differ diff --git a/src/assets/linkageForces/环保局.png b/src/assets/linkageForces/环保局.png new file mode 100644 index 0000000..21d6bbd Binary files /dev/null and b/src/assets/linkageForces/环保局.png differ diff --git a/src/assets/linkageForces/电力局.png b/src/assets/linkageForces/电力局.png new file mode 100644 index 0000000..69f21cd Binary files /dev/null and b/src/assets/linkageForces/电力局.png differ diff --git a/src/assets/linkageForces/通信.png b/src/assets/linkageForces/通信.png new file mode 100644 index 0000000..79f5180 Binary files /dev/null and b/src/assets/linkageForces/通信.png differ diff --git a/src/styles.scss b/src/styles.scss index 2ef5a9e..a1e9b69 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -129,7 +129,7 @@ table td.mat-footer-cell:last-of-type{ } //弹出框样式取消padding -#shareDialog,#lookPlanDialog,#openPlanToolDialog,#addWater,#videodialog{ +#shareDialog,#lookPlanDialog,#openPlanToolDialog,#addWater,#videodialog,#addLinkageForce,#videodialog2{ padding: 0; } @@ -182,3 +182,13 @@ table td.mat-footer-cell:last-of-type{ line-height: 30px; } } +#linkageForcesSwiper{ + .swiper-container{ + --swiper-navigation-size: 26px;/* 设置按钮大小 */ + } +} +//点聚合自定义图片大小 +.clusterImg{ + width: 30px; + height: 30px; +}