diff --git a/src/app/data-collection/fire-force/fire-force.component.ts b/src/app/data-collection/fire-force/fire-force.component.ts index 02b6199..ba19d96 100644 --- a/src/app/data-collection/fire-force/fire-force.component.ts +++ b/src/app/data-collection/fire-force/fire-force.component.ts @@ -398,7 +398,7 @@ export class FireForceComponent implements OnInit { personCountData:[],//人员数量自定义 contactData:[],//联系方式自定义 dutyForceData:[],//执勤力量自定义 - RelevantInfomationData:[]//相关资料 + relevantInfomationData:[]//相关资料 } //总队支队人员数量 ZongpersonCountData:any=[ @@ -474,7 +474,7 @@ export class FireForceComponent implements OnInit { personCountData:[],//人员数量自定义 contactData:[],//联系方式自定义 dutyForceData:[],//执勤力量自定义 - RelevantInfomationData:[]//相关资料 + relevantInfomationData:[]//相关资料 } this.ZongpersonCountData = [ {PropertyName :'现役官兵人数',PropertyValue:''}, @@ -571,7 +571,8 @@ export class FireForceComponent implements OnInit { } this.FireForceDetailInfo.jurisdictionArea = Number(this.FireForceDetailInfo.jurisdictionArea) - this.FireForceDetailInfo.RelevantInfomationData = JSON.stringify(this.AttachmentArr) + this.FireForceDetailInfo.relevantInfomationData = JSON.stringify(this.AttachmentArr) + console.log(1111,this.FireForceDetailInfo) //如果是总支大中 this.FireForceDetailInfo.location = {x:'',y:''} if(this.atLastPositionLngLat.x){ @@ -598,6 +599,7 @@ export class FireForceComponent implements OnInit { this.FireForceDetailInfo.contactData = JSON.stringify(this.DaZhongcontactData) this.FireForceDetailInfo.dutyForceData = null } + console.log('body',body) this.http.put(`/api/FireForceDetail/0/${this.selectedFireForce.id}`,body).subscribe(data => { let config = new MatSnackBarConfig(); config.verticalPosition = 'top'; 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 41b9dc8..22e7a19 100644 --- a/src/app/data-collection/linkage-forces/linkage-forces.component.ts +++ b/src/app/data-collection/linkage-forces/linkage-forces.component.ts @@ -404,7 +404,7 @@ export class LinkageForcesComponent implements OnInit { } this.LinkageForceDetailInfo.location = {x:'',y:''} - this.LinkageForceDetailInfo.RelevantInfomationData = JSON.stringify(this.AttachmentArr) + 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 diff --git a/src/app/data-collection/water-collection/water-collection.component.scss b/src/app/data-collection/water-collection/water-collection.component.scss index be9e19f..774617c 100644 --- a/src/app/data-collection/water-collection/water-collection.component.scss +++ b/src/app/data-collection/water-collection/water-collection.component.scss @@ -129,7 +129,7 @@ height: 20px; cursor: pointer; font-size: 20px; - vertical-align: text-top; + vertical-align: middle; color: rgba(49, 46, 46, 0.144); } mat-icon:hover{ 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 5ae2c34..7cdea43 100644 --- a/src/app/data-collection/water-collection/water-collection.component.ts +++ b/src/app/data-collection/water-collection/water-collection.component.ts @@ -407,6 +407,7 @@ export class WaterCollectionComponent implements OnInit { this.waterData.location.x = this.atLastPositionLngLat.x this.waterData.location.y = this.atLastPositionLngLat.y } + console.log(666,this.waterData) this.http.put(`/api/WaterSources/${this.waterData.id}`,this.waterData).subscribe(data => { const config = new MatSnackBarConfig(); config.verticalPosition = 'top'; diff --git a/src/app/key-unit/basicinfo-look/basicinfo.component.html b/src/app/key-unit/basicinfo-look/basicinfo.component.html index 2cd6ccb..92548a9 100644 --- a/src/app/key-unit/basicinfo-look/basicinfo.component.html +++ b/src/app/key-unit/basicinfo-look/basicinfo.component.html @@ -188,7 +188,7 @@ 1级 2级 3级 - 其他 + 其它 @@ -278,7 +278,7 @@ 1级 2级 3级 - 其他 + 其它 diff --git a/src/app/key-unit/basicinfo/basicinfo.component.html b/src/app/key-unit/basicinfo/basicinfo.component.html index 13d7609..85224ea 100644 --- a/src/app/key-unit/basicinfo/basicinfo.component.html +++ b/src/app/key-unit/basicinfo/basicinfo.component.html @@ -218,7 +218,7 @@ 1级 2级 3级 - 其他 + 其它 @@ -308,7 +308,7 @@ 1级 2级 3级 - 其他 + 其它 diff --git a/src/app/plan-audit/fireforce-audit/fireforce-audit.component.html b/src/app/plan-audit/fireforce-audit/fireforce-audit.component.html new file mode 100644 index 0000000..070bd78 --- /dev/null +++ b/src/app/plan-audit/fireforce-audit/fireforce-audit.component.html @@ -0,0 +1,453 @@ + +
+
+
+ +
+
+ + 请等待... +
+
+ + 下载中...({{progressBarValue}}%) +
+
+
+
+ 详情 +
+ +
+ 相关资料 +
+
+
+ +
+ +
+

基本信息

+ + + + * + 队站名称: + + + + + + 联系电话: + + + + + + 传真: + + + + + + 辖区面积: + + + + + + 备注: + + + + +

位置信息

+ + + + 地址: + + + + + + 经度: + + + + 纬度: + + + + + +

人员数量

+ + + + 现役官兵人数: + + + + + + 政府专职消防员数: + + + + + + 消防文员数: + + + + +

联系方式

+ + + + 总队长名称: + + + + + + 总队长联系方式: + + + + + + 总队政委姓名: + + + + + + 总队政委联系方式: + + + + + + + + 支队长姓名: + + + + + + 支队长联系方式: + + + + + + 支队政委姓名: + + + + + + 支队政委联系方式: + + + + +
+ +
+

基本信息

+ + + + * + 队站名称: + + + + + + 值班电话: + + + + + + 辖区面积: + + + + + + 备注: + + + + +

位置信息

+ + + + 地址: + + + + + + 经度: + + + + 纬度: + + + + + +

人员数量

+ + + + 现役人数: + + + + + + 政府专职消防员数: + + + + + + 每日执勤人数: + + + + +

联系方式

+ + + + 站长姓名: + + + + + + 站长联系方式: + + + + + + 指导员姓名: + + + + + + 指导员联系方式: + + + + + + 副指导员姓名: + + + + + + 副指导员联系方式: + + + + + + 副站长一姓名: + + + + + + 副站长一联系方式: + + + + + + 副站长二姓名: + + + + + + 副站长二联系方式: + + + + + + 副站长三姓名: + + + + + + 副站长三联系方式: + + + + +
+ +
+

基本信息

+ + + + * + 队伍类型: + + + + + + * + 队伍名称: + + + + + + 管辖单位: + + + + + + 队长: + + + + + + + 值班电话: + + + + + + 传真: + + + + + + 备注: + + + + +

位置信息

+ + + + 地址: + + + + + + 经度: + + + + 纬度: + + + + + +

人员数量

+ + + + + 每日执勤人数: + + + + + + 消防队员总人数: + + + + + + 执勤车辆数: + +
+ + +
+
+ + + 灭火剂总量: + +
+ + +
+
+
+
+
+ + + +
+
+
+ + + + + +
+ {{item.fileName}} + + +
+
+
+
+
+ + \ No newline at end of file diff --git a/src/app/plan-audit/fireforce-audit/fireforce-audit.component.scss b/src/app/plan-audit/fireforce-audit/fireforce-audit.component.scss new file mode 100644 index 0000000..e34a82a --- /dev/null +++ b/src/app/plan-audit/fireforce-audit/fireforce-audit.component.scss @@ -0,0 +1,265 @@ +.box{ + width: 100%; + height: 100%; + background-color: #F2F4F6; + display: flex; + box-sizing: border-box; + font-size: 16px; + font-weight: 400; + color: #000000; +} + +.mapbox{ + flex: 1; + background-color: #fff; + display: flex; + flex-direction: column; + #container{ + width: 100%; + height: 200px; + } + .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: sub; + font-size: 20px; + width: 20px; + height: 20px; + } + } + span:hover{ + text-decoration: underline; + } + .submitAudit{ + margin: 0 30px; + } + .close{ + margin-right: 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; + } + } + } +} \ No newline at end of file diff --git a/src/app/plan-audit/fireforce-audit/fireforce-audit.component.spec.ts b/src/app/plan-audit/fireforce-audit/fireforce-audit.component.spec.ts new file mode 100644 index 0000000..2335a75 --- /dev/null +++ b/src/app/plan-audit/fireforce-audit/fireforce-audit.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FireforceAuditComponent } from './fireforce-audit.component'; + +describe('FireforceAuditComponent', () => { + let component: FireforceAuditComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ FireforceAuditComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FireforceAuditComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/plan-audit/fireforce-audit/fireforce-audit.component.ts b/src/app/plan-audit/fireforce-audit/fireforce-audit.component.ts new file mode 100644 index 0000000..756937d --- /dev/null +++ b/src/app/plan-audit/fireforce-audit/fireforce-audit.component.ts @@ -0,0 +1,232 @@ +import { HttpClient } from '@angular/common/http'; +import { Component, OnInit } from '@angular/core'; +import { MatSnackBar } from '@angular/material/snack-bar'; +import Viewer from 'viewerjs' +declare var CryptoJS +declare var AMap: any; +@Component({ + selector: 'app-fireforce-audit', + templateUrl: './fireforce-audit.component.html', + styleUrls: ['./fireforce-audit.component.scss'] +}) +export class FireforceAuditComponent implements OnInit { + + constructor(public snackBar: MatSnackBar,private http:HttpClient) { } + selectedFireForceLevel:any = 0 + + FireForceDetailInfo:any = { + id: "600144ffe7036e11b8121684", + stationName: "上海总队", + isIndependentAlarm: true, + phoneNumber: "13864340193", + faxNumber: "120", + jurisdictionArea: 999, + remark: "暂无备注", + address: "齐鲁树谷", + location: { + x:0, + y:0 + }, + personCountData: "[{\"PropertyName\":\"现役官兵人数\",\"PropertyValue\":\"1\"},{\"PropertyName\":\"政府专职消防员数\",\"PropertyValue\":\"2\"},{\"PropertyName\":\"消防文员数\",\"PropertyValue\":\"3\"}]", + personCountItems: null, + contactData: "[{\"PropertyName\":\"总队长名称\",\"PropertyValue\":\"4\"},{\"PropertyName\":\"总队长联系方式\",\"PropertyValue\":\"5\"},{\"PropertyName\":\"总队政委名称\",\"PropertyValue\":\"6\"},{\"PropertyName\":\"总队政委联系方式\",\"PropertyValue\":\"7\"}]", + contactItems: null, + dutyForceData: null, + dutyForceItems: null, + relevantInfomationData: null, + integrityScore: 0, + integrityTotalCount: 0, + integrityNotEmptyCount: 0, + RelevantInfomationData:"[{\"objectName\":\"FireForce/1/601b69697cea2c03587c4c6d.png\",\"fileName\":\"楼层区域.png\",\"fileLength\":4079},{\"objectName\":\"FireForce/1/601b696e7cea2c03587c4c6e.mp4\",\"fileName\":\"李志 《天空之城》.mp4\",\"fileLength\":56362628},{\"objectName\":\"FireForce/1/601b69867cea2c03587c4c6f.docx\",\"fileName\":\"完整度规划20200724.docx\",\"fileLength\":16480}]" + } + + ZongpersonCountData + ZongcontactData + ZhicontactData + DaZhongpersonCountData + DaZhongcontactData + othercontactData + otherpersonCountData + AttachmentArr + ngOnInit(): void { + this.ZongpersonCountData = JSON.parse(this.FireForceDetailInfo.personCountData) + this.ZongcontactData = JSON.parse(this.FireForceDetailInfo.contactData) + this.ZhicontactData = JSON.parse(this.FireForceDetailInfo.contactData) + this.DaZhongpersonCountData = JSON.parse(this.FireForceDetailInfo.personCountData) + this.DaZhongcontactData = JSON.parse(this.FireForceDetailInfo.contactData) + this.othercontactData = JSON.parse(this.FireForceDetailInfo.contactData) + this.otherpersonCountData = JSON.parse(this.FireForceDetailInfo.personCountData) + this.AttachmentArr = JSON.parse(this.FireForceDetailInfo.RelevantInfomationData) + + setTimeout(() => { + this.map = new AMap.Map('container', { + zoom:18 + }) + + if(this.FireForceDetailInfo.location && this.FireForceDetailInfo.location.x){ + this.map.setCenter([this.FireForceDetailInfo.location.x,this.FireForceDetailInfo.location.y]); + this.newPositionMarker = new AMap.Marker({ + position: [this.FireForceDetailInfo.location.x,this.FireForceDetailInfo.location.y], + content: this.newPositionMarkerContent, + offset: new AMap.Pixel(-10, -12) + }) + // 将 markers 添加到地图 + this.map.add(this.newPositionMarker); + }else{ + this.map.setCity('上海市'); + } + + }, 0); + } + map:any + newPositionMarker:any + newPositionMarkerContent:any = + '
' + + ' ' + + '
' + //当前点击tab页面第几个 + tabIndex:any = 1 + selectedTab(index){ + this.tabIndex = index + } + + + //上传附件 + objectName:any + isMasklayer:boolean = false//圆圈遮罩层是否打开 + isMasklayerDownload:boolean = false//下载进度条遮罩层是否打开 + progressBarValue:any = 0//分块上传进度 + + //下载 + 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循环结束 + + } + + + //点击文件 + clickFile(item){ + let suffix = item.fileName.split('.')[item.fileName.split('.').length-1] + if(suffix == 'png' || suffix == 'jpg' || suffix == 'JPG'){ + 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 fetchUrl = item.objectName + let json={ + doc: { + docId: new Date(), + title: item.fileName, + fetchUrl: `http://${location.host}/api/Objects/PlanPlatform/`+fetchUrl + }, + user: { + uid: "test", + nickName: "test", + avatar: "", + privilege: [ + 'FILE_READ','FILE_DOWNLOAD', 'FILE_PRINT' + ], + }, + } + var stringjson=JSON.stringify(json) + var wordArray = CryptoJS.enc.Utf8.parse(stringjson); + var base64 = CryptoJS.enc.Base64.stringify(wordArray); + window.open(`http://121.5.10.84/apps/editor/openPreview?data=${base64}`) + } + if(suffix == 'mp4'){ + // const dialogRef = this.dialog.open(ViewDetails, {//调用open方法打开对话框并且携带参数过去 + // data: {item:item,type:"video"}, + // id:'videodialog' + // }); + // dialogRef.afterClosed().subscribe(); + } + } + + //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(); + } + } +} diff --git a/src/app/plan-audit/linkageforces-audit/linkageforces-audit.component.html b/src/app/plan-audit/linkageforces-audit/linkageforces-audit.component.html new file mode 100644 index 0000000..8ca918c --- /dev/null +++ b/src/app/plan-audit/linkageforces-audit/linkageforces-audit.component.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/app/plan-audit/linkageforces-audit/linkageforces-audit.component.scss b/src/app/plan-audit/linkageforces-audit/linkageforces-audit.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/plan-audit/linkageforces-audit/linkageforces-audit.component.spec.ts b/src/app/plan-audit/linkageforces-audit/linkageforces-audit.component.spec.ts new file mode 100644 index 0000000..09d1602 --- /dev/null +++ b/src/app/plan-audit/linkageforces-audit/linkageforces-audit.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LinkageforcesAuditComponent } from './linkageforces-audit.component'; + +describe('LinkageforcesAuditComponent', () => { + let component: LinkageforcesAuditComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ LinkageforcesAuditComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LinkageforcesAuditComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/plan-audit/linkageforces-audit/linkageforces-audit.component.ts b/src/app/plan-audit/linkageforces-audit/linkageforces-audit.component.ts new file mode 100644 index 0000000..30643f6 --- /dev/null +++ b/src/app/plan-audit/linkageforces-audit/linkageforces-audit.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-linkageforces-audit', + templateUrl: './linkageforces-audit.component.html', + styleUrls: ['./linkageforces-audit.component.scss'] +}) +export class LinkageforcesAuditComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/plan-audit/plan-audit.module.ts b/src/app/plan-audit/plan-audit.module.ts index 0ee43c1..9946473 100644 --- a/src/app/plan-audit/plan-audit.module.ts +++ b/src/app/plan-audit/plan-audit.module.ts @@ -51,10 +51,13 @@ import {ViewUnitDetailsPlanComponent} from '../key-unit/view-unit-details-plan/v import {KeyUnitModule} from '../key-unit/key-unit.module'; import { PlanRecordComponent } from './plan-record/plan-record.component'; import { BasicInfoComponent } from './basic-info/basic-info.component'; -import { WaitExamineerComponent } from './wait-examineer/wait-examineer.component' +import { WaitExamineerComponent } from './wait-examineer/wait-examineer.component'; +import { WaterAuditComponent } from './water-audit/water-audit.component'; +import { FireforceAuditComponent } from './fireforce-audit/fireforce-audit.component'; +import { LinkageforcesAuditComponent } from './linkageforces-audit/linkageforces-audit.component' @NgModule({ - declarations: [DetachmentLevelComponent, PlanAuditComponent, PlanPassComponent,PlanOpen, PlanRecordComponent, BasicInfoComponent, WaitExamineerComponent,], + declarations: [DetachmentLevelComponent, PlanAuditComponent, PlanPassComponent,PlanOpen, PlanRecordComponent, BasicInfoComponent, WaitExamineerComponent, WaterAuditComponent, FireforceAuditComponent, LinkageforcesAuditComponent,], imports: [ CommonModule, PlanAuditRoutingModule, diff --git a/src/app/plan-audit/wait-examineer/wait-examineer.component.html b/src/app/plan-audit/wait-examineer/wait-examineer.component.html index 25fc4c6..b85c3a1 100644 --- a/src/app/plan-audit/wait-examineer/wait-examineer.component.html +++ b/src/app/plan-audit/wait-examineer/wait-examineer.component.html @@ -89,135 +89,106 @@ - - - - - - - - - 平面图 - - - - - 四周毗邻 - - - - - 消防设施 - - - - - 重点部位 - - - - - 功能分区 - - - - - 实景图 - - - - - cad - - - - - -
- - - - - 基本信息 - - -
- - - - - 修改-沃尔玛(上海)职业发展有限公司 - - - - - - - - - - - - - - - -
单位地址 : 上海市上海市黄浦区武胜路333号变更为 - 上海市上海市黄浦区金陵西路28号
联系电话 :15069853369变更为 - 13869877764
始建于(年):1991变更为 - 2003
-
-
-
- - -
-
+ + + + + + + + + + 平面图 + + + + + 四周毗邻 + + + + + 消防设施 + + + + + 重点部位 + + + + + 功能分区 + + + + + 实景图 + + + + + cad + + + + + +
- - + + - 四周毗邻 + 基本信息
- + - 一号建筑 + 修改-沃尔玛(上海)职业发展有限公司 -
-
- 一号建筑: -
-
- - 变更为 -
-
+ + + + + + + + + + + + + +
单位地址 : 上海市上海市黄浦区武胜路333号变更为 + 上海市上海市黄浦区金陵西路28号
联系电话 :15069853369变更为 + 13869877764
始建于(年):1991变更为 + 2003
+
- 消防设施 + 四周毗邻
@@ -225,28 +196,70 @@ - 室内消火栓 + 一号建筑 - - - - - -
总数:5变更为 - 8
+
+
+ 一号建筑: +
+
+ + 变更为 +
+
-
-
- -
-
- + + + + + 消防设施 + + +
+ + + + + 室内消火栓 + + + + + + + +
总数:5变更为 + 8
+
+
+
+ +
+
+
+
+ +
+
+ + + + +
+ +
+ +
diff --git a/src/app/plan-audit/wait-examineer/wait-examineer.component.scss b/src/app/plan-audit/wait-examineer/wait-examineer.component.scss index db3f6a9..98b0e69 100644 --- a/src/app/plan-audit/wait-examineer/wait-examineer.component.scss +++ b/src/app/plan-audit/wait-examineer/wait-examineer.component.scss @@ -52,12 +52,9 @@ width: 100%; } table{ - //margin: 20px 20px; margin-left:10px; margin-right: 10px; width: 97.5%; - - //border: 1px solid #2196F3; thead{ height:48px; color: #FFFFFF; @@ -74,12 +71,16 @@ } .boxright{ height: 100%; - width: 55%; + flex: 1; background-color: #FFFFFF; margin-left: 10px; + display: flex; + flex-direction: column; .righthead{ width: 100%; display: flex; + height: 50px; + align-items: center; flex-direction: row-reverse; button{ margin-left: 10px; @@ -87,19 +88,16 @@ } .rightheadone{ width: 50%; - margin-top: 20px; margin-right: 7%; } .rightheadtwo{ width: 40%; - margin-top: 20px; margin-right: 2%; } } .word{ width: 100%; height: 100%; - //margin: 10px 10px 0 10px; iframe{ height: 91%; width: 97%; @@ -113,6 +111,12 @@ width: 97%; height: 91%; } + .waterAudit,.fireForceAudit,.LinkageForcesAudit{ + flex: 1; + width: 100%; + height: 100%; + box-sizing: border-box; + } } } th,td{ diff --git a/src/app/plan-audit/wait-examineer/wait-examineer.component.ts b/src/app/plan-audit/wait-examineer/wait-examineer.component.ts index 2bbe878..e4f15f1 100644 --- a/src/app/plan-audit/wait-examineer/wait-examineer.component.ts +++ b/src/app/plan-audit/wait-examineer/wait-examineer.component.ts @@ -101,7 +101,7 @@ export class WaitExamineerComponent implements OnInit { chuorzhong//判断初审还是终审 radioid//选中的id shenheTable=[]//选中要审核的对象 - showtype=0//0:word,1:全景图,2:二维三维,3:重点单位 + showtype = null//0:word,1:全景图,2:二维三维,3:重点单位 //获取表格数据 getAlltabledate(){ diff --git a/src/app/plan-audit/water-audit/water-audit.component.html b/src/app/plan-audit/water-audit/water-audit.component.html new file mode 100644 index 0000000..3a3decd --- /dev/null +++ b/src/app/plan-audit/water-audit/water-audit.component.html @@ -0,0 +1,359 @@ +
+
+
+
+
+
+ 消火栓 +
+
+
+
+
+

基本信息

+ + + + * + 名称: + + + + + + 行政区: + + + + + + 水源归属: + + + + + + 所属单位(小区): + + + + +

位置信息

+ + + + 地址: + + + + + + 经度: + + + + 纬度: + + + + + +

详细信息

+ + + + + 可用状态: + + + + + + 放置形式: + + + + + + 管网形式: + + + + + + 管网直径: + +
+ + mm +
+
+ + + 管网压力类型: + + + + + + 管网压力范围: + +
+ + Mpa +
+
+ + + 接口形式: + + + + + + 接口口径: + +
+ + mm +
+ +
+ + + 最大流量: + +
+ + L/s +
+
+ + + 供水单位: + + + + + + 联系方式: + + + + + + 备注: + + + +
+ + + + + 可用状态: + + + + + + 储水量: + +
+ + +
+
+ + + 取水最大流量: + +
+ + L/s +
+
+ + + 进水流量: + +
+ + L/s +
+
+ + + 同时取水车辆数: + + + + + + 水源标高差: + +
+ + m +
+
+ + + 补水时间: + + + + + + 管网形式: + + + + + + 供水单位: + + + + + + 联系方式: + + + + + + 备注: + + + +
+ + + + + 可用状态: + + + + + + 天然水源类型: + + + + + + 有无消防码头: + + + + + + 水质: + + + + + + 同时取水车辆数: + + + + + + 水源标高差: + +
+ + m +
+
+ + + 有无枯水期: + + + + + + 枯水期时间: + + + + + + 供水单位: + + + + + + 联系方式: + + + + + + 备注: + + + +
+
+
+
+
\ No newline at end of file diff --git a/src/app/plan-audit/water-audit/water-audit.component.scss b/src/app/plan-audit/water-audit/water-audit.component.scss new file mode 100644 index 0000000..00f4d8c --- /dev/null +++ b/src/app/plan-audit/water-audit/water-audit.component.scss @@ -0,0 +1,116 @@ +.mapbox{ + flex: 1; + background-color: #fff; + display: flex; + flex-direction: column; + select:disabled { + color: black!important; + opacity: 1; + } + #container{ + width: 100%; + height: 200px; + } + .detailsbox{ + width: 100%; + height:500px; + .tabsbox{ + width: 100%; + height: 40px; + 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{ + span{ + cursor: pointer; + color: #2196F3; + mat-icon{ + vertical-align: sub; + font-size: 20px; + width: 20px; + height: 20px; + } + } + span:hover{ + text-decoration: underline; + } + .submitAudit{ + margin: 0 30px; + } + .close{ + margin-right: 30px; + } + } + } + .contant{ + width: 100%; + height:480px; + 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; + } + } + } + } +} \ No newline at end of file diff --git a/src/app/plan-audit/water-audit/water-audit.component.spec.ts b/src/app/plan-audit/water-audit/water-audit.component.spec.ts new file mode 100644 index 0000000..9db9215 --- /dev/null +++ b/src/app/plan-audit/water-audit/water-audit.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { WaterAuditComponent } from './water-audit.component'; + +describe('WaterAuditComponent', () => { + let component: WaterAuditComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ WaterAuditComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(WaterAuditComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/plan-audit/water-audit/water-audit.component.ts b/src/app/plan-audit/water-audit/water-audit.component.ts new file mode 100644 index 0000000..ed885ad --- /dev/null +++ b/src/app/plan-audit/water-audit/water-audit.component.ts @@ -0,0 +1,64 @@ +import { Component, OnInit } from '@angular/core'; +declare var AMap: any; +@Component({ + selector: 'app-water-audit', + templateUrl: './water-audit.component.html', + styleUrls: ['./water-audit.component.scss'] +}) +export class WaterAuditComponent implements OnInit { + + constructor() { } + map:any + newPositionMarker:any + newPositionMarkerContent:any = + '
' + + ' ' + + '
' + ngOnInit(): void { + this.waterData.detailData = JSON.parse(this.waterData.detailData) + this.fireCockData = this.waterData.detailData + console.log(789, this.fireCockData) + setTimeout(() => { + this.map = new AMap.Map('container', { + zoom:18 + }) + + if(this.waterData.location && this.waterData.location.x){ + this.map.setCenter([this.waterData.location.x,this.waterData.location.y]); + this.newPositionMarker = new AMap.Marker({ + position: [this.waterData.location.x,this.waterData.location.y], + content: this.newPositionMarkerContent, + offset: new AMap.Pixel(-10, -12) + }) + // 将 markers 添加到地图 + this.map.add(this.newPositionMarker); + }else{ + this.map.setCity('上海市'); + } + + }, 0); + } + selectedWaterTypeIndex:number = 0//选择的水源类型 0消火栓 1水池 2天然水源 + fireCockData:any = []//消火栓详情 + poolData:any = []//水池详情 + naturalWaterData:any = []//天然水源详情 + waterData:any = { + id: "60125d31d31fab7de81c56b0", + name: "上海中心消火栓01", + administrativeRegion: "上海区", + governmentLevel: "1", + village: "小高社区", + address: "国际会议中心", + location: { + x: 121.496717, + y: 31.239452 + }, + detailData: "[{\"PropertyName\":\"可用状态\",\"PropertyValue\":\"1\"},{\"PropertyName\":\"放置形式\",\"PropertyValue\":\"1\"},{\"PropertyName\":\"管网形式\",\"PropertyValue\":\"2\"},{\"PropertyName\":\"管网直径\",\"PropertyValue\":\"2\"},{\"PropertyName\":\"管网压力类型\",\"PropertyValue\":\"1\"},{\"PropertyName\":\"管网压力范围\",\"PropertyValue\":\"2222\"},{\"PropertyName\":\"接口形式\",\"PropertyValue\":\"1\"},{\"PropertyName\":\"接口口径\",\"PropertyValue\":\"3\"},{\"PropertyName\":\"最大流量\",\"PropertyValue\":\"333\"},{\"PropertyName\":\"供水单位\",\"PropertyValue\":\"剃剃头\"},{\"PropertyName\":\"联系方式\",\"PropertyValue\":\"119\"},{\"PropertyName\":\"备注\",\"PropertyValue\":\"突突突突突突\"}]", + detailItems: null, + createTime: "2021-02-03T02:36:57.451Z", + creatorId: "5e8eced2aaca5f7c1025309b", + deleted: false, + waterSourceType: 0, + integrityScore: 0.21052632 + } +} diff --git a/src/app/ui/collection-tools-building/collection-tools.component.html b/src/app/ui/collection-tools-building/collection-tools.component.html index 99130e4..3a5f682 100644 --- a/src/app/ui/collection-tools-building/collection-tools.component.html +++ b/src/app/ui/collection-tools-building/collection-tools.component.html @@ -52,7 +52,7 @@ -
+
@@ -163,7 +163,7 @@
-
+
@@ -467,7 +467,7 @@
-
+
diff --git a/src/app/ui/collection-tools-building/collection-tools.component.ts b/src/app/ui/collection-tools-building/collection-tools.component.ts index a0e3081..23660b4 100644 --- a/src/app/ui/collection-tools-building/collection-tools.component.ts +++ b/src/app/ui/collection-tools-building/collection-tools.component.ts @@ -628,10 +628,8 @@ export class CollectionToolsBuildingComponent implements OnInit { AxMessageSystem.addListener('selectionChanged', ()=>{ if(this.canvas.selection.size() == 1){//如果是单选 this.isMultipleAsset = false - // console.log('单选',this.canvas.selection.first().assetData) this.setAssetsProperty(this.canvas.selection.first().assetData) }else if(this.canvas.selection.size()){ - // console.log('多选') this.isShowProperty = true this.multipleAssetData = this.canvas.selection.all() this.firstMultipleAssetData = this.canvas.selection.first() 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 4d4abdd..4a12770 100644 --- a/src/app/ui/collection-tools-plan/collection-tools.component.html +++ b/src/app/ui/collection-tools-plan/collection-tools.component.html @@ -35,7 +35,7 @@ -
+
@@ -146,7 +146,7 @@
-
+
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 0a7a1e4..0b522e8 100644 --- a/src/app/ui/collection-tools-plan/collection-tools.component.ts +++ b/src/app/ui/collection-tools-plan/collection-tools.component.ts @@ -633,7 +633,6 @@ export class CollectionToolsPlanComponent implements OnInit { // console.log('单选',this.canvas.selection.first().assetData) this.setAssetsProperty(this.canvas.selection.first().assetData) }else if(this.canvas.selection.size()){ - // console.log('多选') this.isShowProperty = true this.multipleAssetData = this.canvas.selection.all() this.firstMultipleAssetData = this.canvas.selection.first() @@ -810,8 +809,6 @@ export class CollectionToolsPlanComponent implements OnInit { }) } - - ngAfterViewInit(): void { //不是gis模块平面图 if(this.router.url.indexOf("gis") == -1) { diff --git a/src/app/ui/collection-tools/collection-tools.component.html b/src/app/ui/collection-tools/collection-tools.component.html index 9b2328c..dac8a36 100644 --- a/src/app/ui/collection-tools/collection-tools.component.html +++ b/src/app/ui/collection-tools/collection-tools.component.html @@ -108,7 +108,7 @@
-
+
@@ -216,7 +216,7 @@
-
+
@@ -519,7 +519,7 @@
-
+