chenjingyu 4 years ago
parent
commit
2b48811427
  1. 10
      src/app/key-unit/fire-fighting-device/fire-fighting-device.component.ts
  2. 2
      src/app/key-unit/key-unit.module.ts
  3. 8
      src/app/key-unit/water-road/water-road.component.html
  4. 6
      src/app/key-unit/water-road/water-road.component.scss
  5. 46
      src/app/key-unit/water-road/water-road.component.ts
  6. 167
      src/app/plan-management/create-plan-online-five/create-plan-online-five.component.html
  7. 31
      src/app/plan-management/create-plan-online-five/create-plan-online-five.component.scss
  8. 119
      src/app/plan-management/create-plan-online-five/create-plan-online-five.component.ts
  9. 8
      src/app/plan-management/create-plan-online-five/openPlanTool.html
  10. 2
      src/app/plan-management/entry-plan-look/AddPlanone.html
  11. 5
      src/app/plan-management/entry-plan-look/entry-plan-look.component.ts
  12. 2
      src/app/plan-management/entry-plan/entry-plan.component.html
  13. 4
      src/app/plan-management/plan-management.module.ts
  14. 4
      src/app/tabbar/tabbar.component.html
  15. 14
      src/app/ui/collection-tools-building/collection-tools.component.ts
  16. 68
      src/app/ui/collection-tools-plan/collection-tools.component.ts
  17. 2
      src/app/ui/collection-tools-plan/leftFunctionalDomain.ts
  18. 16
      src/app/ui/collection-tools/collection-tools.component.ts
  19. BIN
      src/assets/images/2Dplan.png

10
src/app/key-unit/fire-fighting-device/fire-fighting-device.component.ts

@ -233,7 +233,7 @@ export class FireFightingDeviceComponent implements OnInit {
companyId:companyId
}}).subscribe((data:any)=>{
this.allBuildingGrouping = data
console.log(888,data)
// console.log(888,data)
if (this.allBuildingGrouping.length) {
this.getAllBuildingFacilities()
} else {
@ -478,17 +478,15 @@ export class FireFightingDeviceComponent implements OnInit {
for (const key in object) {
if (Object.prototype.hasOwnProperty.call(object, key)) {
const element = object[key];
if(element.total || element.details){
body.push({
buildingId: item.buildingId,
groupName: groupName,
facilityName: element.name,
count: element.total,
description: element.details
count: element.total || '',
description: element.details || ''
})
}
}
}
return body
}
let companyId = this.route.snapshot.queryParams.id
@ -520,7 +518,7 @@ export class FireFightingDeviceComponent implements OnInit {
}else if(item.name == '其它设施'){
putBody = returnBody(this.otherFacilities,'其它设施')
}else if(item.name == '自动消防设施'){
putBody = returnBody(this.otherFacilities,'自动消防设施')
putBody = returnBody(this.automaticFireProtectionFacility,'自动消防设施')
}
if(putBody.length != 0){
this.http.put('/api/BuildingFacilities/FacilityStatUpdate',putBody,{

2
src/app/key-unit/key-unit.module.ts

@ -88,7 +88,7 @@ import { SpecialWarningComponent } from './special-warning/special-warning.compo
@NgModule({
declarations: [KeyUnitManagementComponent, EditUnitInfoComponent, ViewUnitDetailsComponent,CreateUnit,BasicinfoComponent,LookMaster,AddHouseInfo, EditPlanInfoComponent,BasicinfoLookComponent, ViewUnitDetailsPlanComponent,FunctionDivisionComponent,addPartition,addPartitionAttribute,AllaroundComponent,ImgDetails,RealisticPictureComponent,previewImg,addRealPicture,editRealPicture,KeySiteComponent,KeySiteImgs,UploadingCADComponent,readFile,editFile,KeySiteLookComponent,KeySiteImgs2,FunctionDivisionLookComponent,RealisticPictureLookComponent,previewImg3,UploadingCADLookComponent,FireFightingDeviceComponent,ImagesData,previewBigImg,ImgsDataDetail,FireFightingDeviceLookComponent,ImagesData2,ImgsDataDetail2,previewBigImg2,addPartitionAttribute2, SixFamiliarityComponent, ActualCombatDrillComponent,routerMapComponent, SixFamiliarListComponent,TrainingRecordinfoComponent,RouterGISComponent,WaterRoadComponent,PhotoofthesceneComponent,KnowRouteComponent,FindProblemComponent,upname,companyAuditResult,StatisticsOfFireFightingFacilities, SpecialWarningComponent],
exports:[ViewUnitDetailsPlanComponent],
exports:[ViewUnitDetailsPlanComponent,WaterRoadComponent],
imports: [
CommonModule,
KeyUnitRoutingModule,

8
src/app/key-unit/water-road/water-road.component.html

@ -1,7 +1,7 @@
<div class="content">
<div class="center" id="center"></div>
<!-- 上角 -->
<!-- 上角 -->
<div class="rightTopBox">
<div class="contantbox">
@ -39,7 +39,11 @@
</div>
</div>
<!-- 右上角 -->
<!-- 左上角 -->
<button mat-flat-button color="primary" class="createImg" (click)="takeScreenshotGis()">
生成图片
</button>
</div>

6
src/app/key-unit/water-road/water-road.component.scss

@ -136,3 +136,9 @@
}
}
}
.createImg{
position: absolute;
right: 30px;
top: 15px;
}

46
src/app/key-unit/water-road/water-road.component.ts

@ -5,7 +5,7 @@ import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dial
import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar';
import { ActivatedRoute } from '@angular/router';
declare var AMap: any;
declare var html2canvas: any;
@Component({
selector: 'app-water-road',
templateUrl: './water-road.component.html',
@ -20,7 +20,9 @@ export class WaterRoadComponent implements OnInit {
async getUnitData() {
await new Promise((resolve, reject) => {
this.http.get(`/api/Companies/${this.route.snapshot.queryParams.id}`).subscribe(data => {
let id
this.route.snapshot.queryParams.id ? id = this.route.snapshot.queryParams.id : id = this.route.snapshot.queryParams.companyId
this.http.get(`/api/Companies/${id}`).subscribe(data => {
this.unitData = data
resolve(data)
})
@ -131,7 +133,7 @@ export class WaterRoadComponent implements OnInit {
this.snackBar.open('请选择要显示的类型', '确定', config);
} else {
console.log('选中的内容',this.selectedWaterList)
// console.log('选中的内容', this.selectedWaterList)
function checkAdult(item) {
return item <= 2;
}
@ -140,8 +142,8 @@ export class WaterRoadComponent implements OnInit {
}
const water = this.selectedWaterList.filter(checkAdult);
const power = this.selectedWaterList.filter(checkAdult2);
console.log('water',water)
console.log('power',power)
// console.log('water', water)
// console.log('power', power)
let waterparamsdata: any = {
PageSize: 99999,
Lon: this.unitData.location.x,
@ -237,7 +239,7 @@ export class WaterRoadComponent implements OnInit {
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.style.boxShadow = '0 0 5px ' + shadowColor;
div.innerHTML = context.count;
div.style.lineHeight = size + 'px';
div.style.color = fontColor;
@ -300,6 +302,9 @@ export class WaterRoadComponent implements OnInit {
creatMap() {
this.map = new AMap.Map('center', {
zoom: 13, //初始地图级别
WebGLParams: {
preserveDrawingBuffer: true
}
});
if (this.unitData.location && this.unitData.location.x) {
this.map.setCenter([this.unitData.location.x, this.unitData.location.y]);
@ -322,5 +327,34 @@ export class WaterRoadComponent implements OnInit {
}
canvasImg
takeScreenshotGis() {
// console.log(666666, this.selectingSitePlan)
// 使用html2canvas插件,将数据源中的数据转换成画布。
html2canvas(document.querySelector("#center"), {
useCORS: true, // 【重要】开启跨域配置,
allowTaint: true,//允许跨域图片
taintTest: false,//是否在渲染前测试图片
onrendered: function (canvas) {
var dataUrl = canvas.toDataURL("image/png");
}
}).then(canvas => {
// 修改生成的宽度
this.canvasImg = canvas.toDataURL("image/png");
// console.log(this.canvasImg)
}).then(() => {
this.downloadFile('水源图', this.canvasImg);
})
}
downloadFile(filename, content) {
var base64Img = content;
var oA = document.createElement('a');
oA.href = base64Img;
oA.download = filename;
var event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
oA.dispatchEvent(event);
}
}

167
src/app/plan-management/create-plan-online-five/create-plan-online-five.component.html

@ -1,16 +1,13 @@
<div class="bigbox">
<div class="titlebox">
<div class="titlebox" *ngIf="pattern == 'edit'">
<div class="titleitembox">
<div class="item" [ngClass]="{'selectedItem': selectedItem == '封面'}" (click)="clickTitleItem('封面')">
1.封面
</div>
<div class="item" *ngFor="let item of planTemplateData;let key = index" (click)="clickTitleItem(item)"
[ngClass]="{'selectedItem': selectedItem == item.groupName}">
{{key + 2}}.{{item.groupName}}
[ngClass]="{'selectedItem': selectedItem == item.groupName}" [title]="item.groupName">
{{key + 1}}.{{item.groupName}}
</div>
</div>
<div class="btnbox">
<button mat-stroked-button>
<button mat-stroked-button (click)="preview()">
<mat-icon>visibility</mat-icon> 预览
</button>
<button mat-flat-button color="primary">
@ -18,8 +15,12 @@
</button>
</div>
</div>
<div class="contentbox">
<div class="leftbox">
<button mat-stroked-button (click)="quitPreview()" class="quitPreview">
<mat-icon>visibility</mat-icon> 退出预览
</button>
<div class="contentbox" [ngClass]="{'noPadding': pattern == 'look'}">
<div class="leftbox"
*ngIf="pattern == 'edit' && (selectedItem == '重点图示' || selectedItem == '交通水源' || selectedItem == '预案附件' || selectedItem == '单位概况')">
<div *ngIf="selectedItem == '重点图示'" class="leftKeyImg">
<div class="keyImgTitle">
重点图示
@ -38,7 +39,7 @@
<div class="content">
<div class="contentitem" *ngFor="let item of sitePlanItems">
<div>
<img (click)="openPlan(item,-1)"
<img (click)="openPlan(item,-1,'平面图')"
[src]="item.imageUrl && item.imageUrl != 'null' ? item.imageUrl+'?x-oss-process=image/resize,m_fill,h_100,w_100' : '/assets/images/2D.jpg'"
alt="">
</div>
@ -63,7 +64,7 @@
<div class="content">
<div class="contentitem" *ngFor="let i of item.plandata">
<div>
<img (click)="openPlan(i,key)"
<img (click)="openPlan(i,key,'平面图')"
[src]="i.imageUrl ? i.imageUrl+'?x-oss-process=image/resize,m_fill,h_100,w_100' : '../../../assets/images/noImg.png'"
alt="">
</div>
@ -112,12 +113,68 @@
</div>
</div>
</div>
<div class="leftBuilding" *ngIf="selectedItem == '单位概况'">
<div *ngIf="selectedItem == '交通水源'" class="leftKeyImg">
<div class="keyImgTitle">
交通水源
</div>
<div class="planlist" id="planlist">
<div style="margin: 10px 0;">
<mat-accordion>
<mat-expansion-panel expanded style="box-shadow: 0 0 black;border: 1px solid #EEF1F5;">
<mat-expansion-panel-header collapsedHeight='33px' expandedHeight='33px'
style="position: relative;padding-left:20px;background: #F2F9FF;">
<mat-panel-title>
水源
</mat-panel-title>
</mat-expansion-panel-header>
<div class="content">
<div class="contentitem">
<div>
<img (click)="openPlan(1,-1,'水源')" src='/assets/images/2D.jpg' alt="">
</div>
<p>交通水源</p>
</div>
</div>
</mat-expansion-panel>
</mat-accordion>
</div>
</div>
</div>
<div *ngIf="selectedItem == '预案附件'" class="leftKeyImg">
<div class="keyImgTitle">
预案附件
</div>
<div class="planlist" id="planlist">
<div style="margin: 10px 0;">
<mat-accordion>
<mat-expansion-panel expanded style="box-shadow: 0 0 black;border: 1px solid #EEF1F5;">
<mat-expansion-panel-header collapsedHeight='33px' expandedHeight='33px'
style="position: relative;padding-left:20px;background: #F2F9FF;">
<mat-panel-title>
二维预案列表
</mat-panel-title>
</mat-expansion-panel-header>
<div class="content">
<div class="contentitem" *ngFor="let TwoDPlan of TwoDPlanList">
<div>
<img (click)="openPlan(TwoDPlan,-1,'预案')" src='/assets/images/2Dplan.png'
alt="">
</div>
<p>{{TwoDPlan.name}}</p>
</div>
</div>
</mat-expansion-panel>
</mat-accordion>
</div>
</div>
</div>
<div *ngIf="selectedItem == '单位概况'" class="leftBuilding">
<div class="buildingHead">
<span>建筑列表</span>
</div>
<div class="buildingBody">
<div class="buildName" *ngFor="let item of allBuildings;let i=index" [ngClass]="{'selectedTr': i == clicki}" (click)='clickBuilding(item,i)'>
<div class="buildName" *ngFor="let item of allBuildings;let i=index"
[ngClass]="{'selectedTr': i == clicki}" (click)='clickBuilding(item,i)'>
<mat-checkbox class="example-margin" color='primary'></mat-checkbox>
<span>{{item.name}}</span>
</div>
@ -125,19 +182,22 @@
</div>
</div>
<div class="mainbox">
<!-- 模板页面 -->
<div *ngFor="let item of planTemplateData;let key = index">
<div *ngIf="selectedItem == item.groupName || pattern == 'look'">
<!-- 封面 -->
<div class="cover" *ngIf="selectedItem == '封面'">
<div class="cover" *ngIf="item.groupName == '封面'">
<p class="planNum">
预案编号: <input type="text" name="" id="">
预案编号: <input [(ngModel)]="item.attribute.planNumber" type="text" name="" id="">
</p>
<h1>{{planName}}</h1>
<ul *ngIf="unitData">
<h1>{{item.attribute.planName}}</h1>
<ul>
<li>
<div>
对象名称:
</div>
<div>
{{unitData.name}}
{{item.attribute.objName}}
</div>
</li>
<li>
@ -145,7 +205,7 @@
单位性质:
</div>
<div>
{{unitData.buildingTypes[0].name}}
{{item.attribute.unitNature}}
</div>
</li>
<li>
@ -166,7 +226,7 @@
<span class="redspan">*</span>灾害类型:
</div>
<div>
<select ngModel="0">
<select [(ngModel)]="item.attribute.disasterType">
<option value="0">火灾</option>
<option value="1">抢险救援</option>
<option value="2">其他</option>
@ -178,7 +238,7 @@
防火级别:
</div>
<div>
<input type="text" [(ngModel)]="item.attribute.fireproofingLevel">
</div>
</li>
<li>
@ -186,7 +246,7 @@
防火管辖:
</div>
<div>
{{unitData.organizationName}}
{{item.attribute.fireproofingAdminister}}
</div>
</li>
<li>
@ -194,7 +254,7 @@
灭火责任队站:
</div>
<div>
<input type="text" [(ngModel)]="item.attribute.putOutFireAdminister">
</div>
</li>
<li>
@ -202,8 +262,9 @@
制作人职务/姓名:
</div>
<div>
<input type="text" style="width: 160px;margin-right: 10px;">
<input type="text" style="width: 50px;">
<input [(ngModel)]="item.attribute.producer.duty" type="text"
style="margin-right: 10px;">
<input [(ngModel)]="item.attribute.producer.name" type="text" style="width: 50px;">
</div>
</li>
<li>
@ -211,7 +272,9 @@
审核人职务/姓名:
</div>
<div>
<input [(ngModel)]="item.attribute.verifier.duty" type="text"
style="margin-right: 10px;">
<input [(ngModel)]="item.attribute.verifier.name" type="text" style="width: 50px;">
</div>
</li>
<li>
@ -219,18 +282,14 @@
审核时间:
</div>
<div>
<input type="text" [(ngModel)]="item.attribute.auditTime">
</div>
</li>
</ul>
</div>
<!-- 模板页面 -->
<div *ngFor="let item of planTemplateData;let key = index">
<div *ngIf="selectedItem == item.groupName">
<!-- <p>{{item.groupName}}</p> -->
<div class="centerBox"
*ngIf="item.groupName!='单位概况'&&item.groupName!='交通水源'&&item.groupName!='重点图示'&&item.groupName!='预案附件'">
<div class="boxHead">
*ngIf="item.groupName!='单位概况'&&item.groupName!='交通水源'&&item.groupName!='重点图示'&&item.groupName!='预案附件'&&item.groupName!='特别警示'&&item.groupName!='处置要点'&&item.groupName!='封面'">
<div class="titleItem">
<span>{{item.groupName}}</span>
</div>
<div class="boxBody" *ngFor="let element of item.attribute;let i=index">
@ -284,7 +343,11 @@
</div>
</div>
</div>
<div class="keyImg" *ngIf="item.groupName == '重点图示'">
<div class="keyImg"
*ngIf="item.groupName == '重点图示' || item.groupName == '交通水源' || item.groupName == '预案附件'">
<div class="titleItem">
<span>{{item.groupName}}</span>
</div>
<div class="keyImgItem" *ngFor="let i of item.attribute;let key = index">
<div class="keyImgTitle">
<input type="text" placeholder="请输入分组名称" [(ngModel)]="i.name">
@ -297,7 +360,7 @@
</mat-icon>
<img [src]="imgUrl" alt="">
</div>
<div class="uploadBtn">
<div class="uploadBtn" *ngIf="pattern == 'edit'">
<button mat-stroked-button>
<mat-icon>add</mat-icon>上传图片
</button>
@ -306,13 +369,16 @@
</div>
</div>
<!-- 增加分组 -->
<div class="addkeyImgItem">
<div class="addkeyImgItem" *ngIf="pattern == 'edit'">
<button mat-flat-button color="primary" (click)="addkeyImgItem(item)">
增加分组
</button>
</div>
</div>
<div class="disposalPoint" *ngIf="item.groupName == '处置要点'">
<div class="titleItem">
<span>{{item.groupName}}</span>
</div>
<div class="disposalPointItem" *ngFor="let i of item.attribute;let key = index">
<div class="disposalPointTitle">
<input type="text" placeholder="请输入分组名称" [(ngModel)]="i.name">
@ -320,7 +386,8 @@
</mat-icon>
</div>
<div class="disposalPointTextarea">
<textarea [(ngModel)]="i.cantent" style="resize: none;" placeholder="请填写自定义内容" name="" id="" cols="30" rows="10"></textarea>
<textarea [(ngModel)]="i.cantent" style="resize: none;" placeholder="请填写自定义内容" name=""
id="" cols="30" rows="10"></textarea>
</div>
</div>
<!-- 增加分组 -->
@ -330,7 +397,24 @@
</button>
</div>
</div>
<div class="disposalPoint" *ngIf="item.groupName == '特别警示'">
<div class="titleItem">
<span>{{item.groupName}}</span>
</div>
<div class="disposalPointItem" *ngFor="let i of item.attribute;let key = index">
<div class="disposalPointTitle">
<input type="text" placeholder="请输入分组名称" [(ngModel)]="i.name">
</div>
<div class="disposalPointTextarea">
<textarea [(ngModel)]="i.cantent" style="resize: none;" placeholder="请填写自定义内容" name=""
id="" cols="30" rows="10"></textarea>
</div>
</div>
</div>
<div class="unit" *ngIf="item.groupName == '单位概况'">
<div class="titleItem">
<span>单位基本信息</span>
</div>
<div class="unithead">
<span>{{buildingName}}</span>
</div>
@ -347,13 +431,16 @@
<div *ngFor="let attack of element.attinf;let attacki=index">
<div class="attackhead">
<span>{{attack.head}}</span>
<img src="../../../assets/images/deleteblue.png" (click)='unitDel(element.surveyName,attacki)'>
<img src="../../../assets/images/add.png" (click)='unitadd(element.surveyName,attacki)'>
<img src="../../../assets/images/deleteblue.png"
(click)='unitDel(element.surveyName,attacki)'>
<img src="../../../assets/images/add.png"
(click)='unitadd(element.surveyName,attacki)'>
</div>
<div class="attackbody">
<table>
<thead>
<th *ngFor="let itemth of attack.tableth;let tablethi=index;TrackBy:trackByFn">
<th
*ngFor="let itemth of attack.tableth;let tablethi=index;TrackBy:trackByFn">
<input type="text" placeholder="请输入内容"
[(ngModel)]="attack.tableth[tablethi]">
</th>

31
src/app/plan-management/create-plan-online-five/create-plan-online-five.component.scss

@ -42,6 +42,9 @@
box-sizing: border-box;
padding: 0 10px;
font-size: 14px;
overflow: hidden; /*超出部分隐藏*/
white-space: nowrap; /*不换行*/
text-overflow: ellipsis; /*超出部分文字以...显示*/
}
.item:hover {
background: #e8f4fe;
@ -66,12 +69,12 @@
}
}
}
.contentbox {
height: 100%;
box-sizing: border-box;
padding-top: 66px;
overflow-y: auto;
.leftbox {
position: fixed;
width: 14%;
@ -200,7 +203,7 @@
cursor: pointer;
height: 40px;
width: 100%;
border-bottom: 1px solid #F2F4F5;
border-bottom: 1px solid #f2f4f5;
.example-margin {
width: 14px;
height: 14px;
@ -226,6 +229,7 @@
padding: 10px 10px 0;
.cover {
width: 100%;
min-height: 780px;
input,
select {
border: 1px solid #ebebeb;
@ -233,6 +237,9 @@
height: 28px;
line-height: 28px;
}
input{
width: 140px;
}
p {
height: 28px;
line-height: 28px;
@ -484,14 +491,14 @@
.unitbodyHead {
width: 100%;
height: 40px;
background-color: #2196F3;
background-color: #2196f3;
text-align: center;
span {
font-size: 16px;
text-align: center;
height: 40px;
line-height: 40px;
color: #FFFFFF;
color: #ffffff;
}
img {
cursor: pointer;
@ -734,6 +741,7 @@
}
}
}
}
.disposalPoint {
div {
width: 100%;
@ -782,7 +790,22 @@
margin: 10px 0;
}
}
.titleItem{
width: 100%;
height: 36px;
line-height: 36px;
background-color: #2196F3;
text-align: center;
color: white;
}
}
}
.noPadding{
padding-top: 10px;
}
.quitPreview{
position: fixed;
top: 10px;
right: 15px;
}
}

119
src/app/plan-management/create-plan-online-five/create-plan-online-five.component.ts

@ -4,7 +4,7 @@
* @Author: sueRimn
* @Date: 2021-06-16 13:56:54
* @LastEditors: sueRimn
* @LastEditTime: 2021-06-28 17:09:10
* @LastEditTime: 2021-06-29 17:00:09
*/
import { HttpClient } from '@angular/common/http';
import { Component, Inject, OnInit, Renderer2, ViewChild, Input } from '@angular/core';
@ -22,13 +22,9 @@ export class CreatePlanOnlineFiveComponent implements OnInit {
constructor(private http: HttpClient, private route: ActivatedRoute, public snackBar: MatSnackBar, public dialog: MatDialog) { }
planName: string //预案名称
planLevel: string//预案级别
ngOnInit(): void {
this.planName = this.route.snapshot.queryParams.planName
this.planLevel = this.route.snapshot.queryParams.planCategory
console.log('级别', this.planLevel)
this.getTemplateData()
this.getUnitData()
//this.getAllBuildings()
this.tree = {
@ -64,8 +60,8 @@ export class CreatePlanOnlineFiveComponent implements OnInit {
data.items.forEach(element => {
if (element.id == this.route.snapshot.queryParams.companyId) {
this.unitData = element
console.log('单位列表信息', this.unitData)
// console.log('单位列表信息', this.unitData)
this.getTemplateData()
}
});
})
@ -74,7 +70,7 @@ export class CreatePlanOnlineFiveComponent implements OnInit {
selectedItem: string = '封面'
clickTitleItem(item) {
this.addNumber = -1
item == '封面' ? this.selectedItem = '封面' : this.selectedItem = item.groupName
this.selectedItem = item.groupName
if (this.selectedItem == '重点图示') {
this.getAllBuildings()
this.getSitePlan()
@ -87,21 +83,43 @@ export class CreatePlanOnlineFiveComponent implements OnInit {
this.planTemplateData[0].attribute[0].attinf[3].value=this.unitData.phone
this.planTemplateData[0].attribute[0].attinf[4].value=this.unitData.organizationName
this.planTemplateData[0].attribute[0].attinf[5].value=this.unitData.address
} /* else if (this.selectedItem == '单位概况') {
//this.getAllBuildings()
} */ else if (this.selectedItem == '') {
this.getTwoDPlanList()
}
}
//获取当前单位的二维预案
TwoDPlanList: any
getTwoDPlanList() {
let paramsData = {
companyId: this.route.snapshot.queryParams.companyId,
pageSize: "999"
}
this.http.get("/api/PlanComponents", { params: paramsData }).subscribe((data: any) => {
this.TwoDPlanList = data.items.filter((item) => {
return item.planType == 1
})
})
}
//获取实景图
allRealPicture
getRealPicture() {
let companyId = this.unitId
this.http.get('/api/RealityImageGroups', {
params: {
companyId: '5e9964caa760a059e84512e9'
companyId: this.route.snapshot.queryParams.companyId
}
}).subscribe((data: any) => {
this.allRealPicture = data
this.getAllRealPicture().then(() => {
console.log('实景图', this.allRealPicture)
// console.log('实景图', this.allRealPicture)
})
})
}
@ -132,24 +150,68 @@ export class CreatePlanOnlineFiveComponent implements OnInit {
planTemplateData: any
//获得模板信息
getTemplateData() {
this.http.get('/api/PlanTemplate').subscribe(data => {
this.planTemplateData = JSON.parse(data[2].data).filter(item =>
this.http.get(`/api/PlanComponents/${this.route.snapshot.queryParams.planId}/WebText`).subscribe((data: any) => {
// console.log('预案内容', data)
this.planTemplateData = JSON.parse(data.webTextData).filter(item =>
item.completed == true
)
console.log(this.planTemplateData)
// console.log(this.planTemplateData)
if (this.planTemplateData[0].groupName != '封面') {
let obj = {
completed: true,
groupName: "封面",
attribute: {
planNumber: '',
planName: this.route.snapshot.queryParams.planName,
objName: this.unitData.name,
unitNature: this.unitData.buildingTypes[0].name,
planLevel: '',
disasterType: '0',
fireproofingLevel: '',
fireproofingAdminister: this.unitData.organizationName,
putOutFireAdminister: '',
producer: {
name: '',
duty: ''
},
verifier: {
name: '',
duty: ''
},
auditTime: ''
}
}
this.planTemplateData.unshift(obj)
}
this.planTemplateData.forEach(element => {
if (element.groupName == '重点图示') {
if (!element.attribute) {
element.attribute = [{ name: '', imgArr: [] }]
}
}
if (element.groupName == '交通水源') {
if (!element.attribute) {
element.attribute = [{ name: '', imgArr: [] }]
}
}
if (element.groupName == '预案附件') {
if (!element.attribute) {
element.attribute = [{ name: '', imgArr: [] }]
}
}
if (element.groupName == '处置要点') {
if (!element.attribute) {
element.attribute = [{ name: '', content: '' }]
}
}
if (element.groupName == '特别警示') {
if (!element.attribute) {
element.attribute = [{ name: '特别警示', content: '' }]
}
}
});
})
}
@ -261,11 +323,20 @@ export class CreatePlanOnlineFiveComponent implements OnInit {
})
}
//打开采集工具
openPlan(item, index) {
openPlan(item, index, type?: string) {
sessionStorage.setItem("gisplan", 'look')
sessionStorage.setItem("companyId", this.unitId)
// console.log(item)
let data = { select: item, key: index, allBuildings: this.allBuildings }
if (type == '预案') {
sessionStorage.setItem("planId", item.id)
sessionStorage.setItem("companyId", this.route.snapshot.queryParams.companyId)
sessionStorage.setItem("buildingTypeId", this.route.snapshot.queryParams.unitTypeId)
sessionStorage.setItem("editable", "0")
sessionStorage.setItem("planName", item.name)
sessionStorage.setItem("orName", item.name)
sessionStorage.setItem("orId", item.name)
}
let data = { select: item, key: index, allBuildings: this.allBuildings, type: type }
let width = Math.round(document.body.clientWidth * 0.8) + 'px'
let height = Math.round(document.body.clientHeight * 0.9) + 'px'
// console.log('宽度',width)
@ -309,7 +380,7 @@ export class CreatePlanOnlineFiveComponent implements OnInit {
this.planTemplateData[key].attribute[i].tabletr[this.addNumber].tabletd.push('')
}
}
console.log(this.planTemplateData)
// console.log(this.planTemplateData)
}
//灾情设定表格删除一行
delTd(key, i) {
@ -354,7 +425,7 @@ export class CreatePlanOnlineFiveComponent implements OnInit {
}
}
console.log(this.planTemplateData)
// console.log(this.planTemplateData)
}
else if(surveyName=='功能分区'){
console.log(this.clicki)
@ -434,6 +505,15 @@ export class CreatePlanOnlineFiveComponent implements OnInit {
})
})
}
//预览
pattern:string = 'edit'
preview(){
this.pattern = 'look'
}
quitPreview(){
this.pattern = 'edit'
}
}
@ -451,13 +531,16 @@ export class OpenPlanToolDialog {
@ViewChild('plan') plan: any //子组件
type: any//打开的类型 是平面图还是水源
ngOnInit() {
this.type = this.data.type
}
ngAfterViewInit(): void {
if (this.type != '水源' && this.type != '预案') {
this.noticePlan()
}
}
//通知 子组件 传递参数
noticePlan() {

8
src/app/plan-management/create-plan-online-five/openPlanTool.html

@ -1,3 +1,9 @@
<div class="divbox">
<div class="divbox" *ngIf="type == '水源'">
<app-water-road></app-water-road>
</div>
<div class="divbox" *ngIf="type == '平面图'">
<app-collection-tools-plan #plan></app-collection-tools-plan>
</div>
<div class="divbox" *ngIf="type == '预案'">
<app-collection-tools></app-collection-tools>
</div>

2
src/app/plan-management/entry-plan-look/AddPlanone.html

@ -62,7 +62,7 @@
<span *ngIf="uploadover" style="font-size: 13px;">(已上传)</span>
</div>
<div *ngIf="inputword">
<mat-radio-button value="2" style="margin-right: 10px;">在线编制</mat-radio-button>
<!-- <mat-radio-button value="2" style="margin-right: 10px;">在线编制</mat-radio-button> -->
<!-- <button mat-raised-button *ngIf="isinput" (click)='createWord()'>在线编制预案</button> -->
</div>
<!-- <div *ngIf="inputword">

5
src/app/plan-management/entry-plan-look/entry-plan-look.component.ts

@ -94,7 +94,7 @@ export class EntryPlanLookComponent implements OnInit {
ngOnInit(): void {
this.tabledataSource = [
]
// this.getCompanyData()
this.getCompanyData()
this.isoperation = this.route.snapshot.queryParams.operation
this.unitdata.unitname = this.route.snapshot.queryParams.unitName
this.unitdata.organizationName = this.route.snapshot.queryParams.orName
@ -207,7 +207,8 @@ export class EntryPlanLookComponent implements OnInit {
}
else if (e.planType == 16) {
if (e.attachmentUrls == null) {
window.open(`/planManagement/createplanonlinefive?navIsOpen=false&companyId=${this.companyId}&planName=${e.name}&unitName=${this.unitdata.unitname}&planCategory=${e.planCategory}&planId=${e.id}`)
console.log(this.compantData)
window.open(`/planManagement/createplanonlinefive?navIsOpen=false&companyId=${this.companyId}&planName=${e.name}&unitName=${this.unitdata.unitname}&planCategory=${e.planCategory}&planId=${e.id}&unitTypeId=${this.compantData.buildingTypes[0].id}&orName=${this.compantData.organizationName}&orId=${this.compantData.organizationId}`)
}
else {
let body = {};

2
src/app/plan-management/entry-plan/entry-plan.component.html

@ -142,7 +142,7 @@
<td mat-cell *matCellDef="let element;let i = index">
<div class="integrityDiv">
<span class="integrityNum">
{{(element.company.companyIntegrityScore.totalScore.toFixed(2) * 100).toFixed()}}
{{(element.company.companyIntegrityScore.totalScore.toFixed(2) * 100).toFixed()}}%
</span>
<div class="integrityColorDiv" [style]="integrity((element.company.companyIntegrityScore.totalScore.toFixed(2) * 100).toFixed())">
</div>

4
src/app/plan-management/plan-management.module.ts

@ -68,6 +68,7 @@ import { CreatePlanOnlineFiveComponent, OpenPlanToolDialog } from './create-plan
import { CreatePlanOnlineThreeComponent } from './create-plan-online-three/create-plan-online-three.component'
import { UiModule } from '../ui/ui.module';
import { TreeDiagramModule } from '../ui/ng-tree-diagram/src/ng-tree-diagram';
import { KeyUnitModule } from '../key-unit/key-unit.module';
@NgModule({
declarations: [EntryPlanComponent, PassPlanComponent, OpenPlanComponent, EntryPlanLookComponent, AddPlanone, PlanType, AuditSatus, PlanLevel, DownloadFile, AuditResult, ChangeName,
@ -121,7 +122,8 @@ import { TreeDiagramModule } from '../ui/ng-tree-diagram/src/ng-tree-diagram';
MatTooltipModule,
MatTreeModule,
UiModule,
TreeDiagramModule
TreeDiagramModule,
KeyUnitModule
],
exports: [PlanType, AuditSatus, PlanLevel, state]
})

4
src/app/tabbar/tabbar.component.html

@ -154,7 +154,7 @@
<table>
<tr>
<td>名称</td>
<td>分值</td>
<td>占比</td>
<td>规则说明</td>
</tr>
<tr>
@ -194,7 +194,7 @@
<tr>
<td>实景图</td>
<td class="bulecolor">10%</td>
<td>外观,保证有<span class="bulecolor">2</span>张照片(占<span class="bulecolor">30%</span>); 室内,保证有<span
<td>外观,保证有<span class="bulecolor">2</span>张照片(占<span class="bulecolor">30%</span>); 重点部位,保证有<span
class="bulecolor">2</span>张照片(占<span class="bulecolor">30%</span>);安全出口,保证有<span
class="bulecolor">2</span>张照片(占<span class="bulecolor">40%</span></td>
</tr>

14
src/app/ui/collection-tools-building/collection-tools.component.ts

@ -1935,6 +1935,12 @@ export class CollectionToolsBuildingComponent implements OnInit {
item.name = item.name + '(副本)'
item.order = this.sitePlanData[this.sitePlanData.length - 1].order + 1
this.http.post('/api/SitePlans', item).subscribe((data: any) => {
for (const key in paramsData) {
if (Object.prototype.hasOwnProperty.call(paramsData, key)) {
const element = paramsData[key];
element.FloorId = data.id
}
}
let newData = {
version: "2.0",
id: "",
@ -1991,6 +1997,14 @@ export class CollectionToolsBuildingComponent implements OnInit {
item.name = item.name + '(副本)'
item.order = this.sitePlanData[this.sitePlanData.length - 1].order + 1
this.http.post('/api/BuildingAreas', item, { params: this.params }).subscribe((data: any) => {
// console.log('复制出的新楼层',data.id)
// console.log('复制的数据',paramsData)
for (const key in paramsData) {
if (Object.prototype.hasOwnProperty.call(paramsData, key)) {
const element = paramsData[key];
element.FloorId = data.id
}
}
let newData = {
version: "2.0",
id: "",

68
src/app/ui/collection-tools-plan/collection-tools.component.ts

@ -233,7 +233,6 @@ export class CollectionToolsPlanComponent implements OnInit {
if (!this.isGis) {
this.canvas.refreshIcon(this.canvasAssetObj.Id)
}
}
//素材高度输入框改变
assetHeightIunput() {
@ -705,7 +704,6 @@ export class CollectionToolsPlanComponent implements OnInit {
let buildingId = this.beforeOneCheckedBuilding.id
let floorId = this.selectingSitePlan.id
this.canvas.paste(companyId, buildingId, floorId)
// this.renovateTreeData(false)
}
//截图
takeScreenshot() {
@ -781,6 +779,7 @@ export class CollectionToolsPlanComponent implements OnInit {
saveNum: any = []
saveSite() {
//更新用于统计的数据
this.canvasData.updateBuildingData()
if (this.selectingSitePlan && this.selectingSitePlan.id) {
@ -793,12 +792,11 @@ export class CollectionToolsPlanComponent implements OnInit {
CompanyData.data = JSON.stringify(CompanyData.data)
let object = this.canvasData.originalcompanyBuildingData.data
console.log('建筑数据',object)
let adjoinArr = [] //毗邻数组
if (this.pattern) {//如果是基本信息编辑模式
for (const key in object) {
if (object[key].Name == "毗邻") {//如果是相同楼层,则筛选出毗邻
object[key].PropertyInfos.forEach(element => {
if (element.PropertyName == "方向") {
adjoinArr.push(element.PropertyValue)
@ -806,6 +804,7 @@ export class CollectionToolsPlanComponent implements OnInit {
});
}
}
console.log('adjoinArr',adjoinArr)
if ((new Set(adjoinArr)).size != adjoinArr.length) {
this.maskLayerService.sendMessage(false)
let config = new MatSnackBarConfig();
@ -816,7 +815,6 @@ export class CollectionToolsPlanComponent implements OnInit {
} else {
//如果是单位 总平面图
if (this.checkedBuildingIndex == -1) {
if (this.isGis) {
let data = JSON.parse(JSON.stringify(this.selectingSitePlan))
data.zoomLevel = this.map.getZoom(),
@ -865,6 +863,9 @@ export class CollectionToolsPlanComponent implements OnInit {
})
//保存建筑数据
// console.log('CompanyData',CompanyData)
CompanyData.data = "{\"图例\":{\"Id\":\"图例\",\"Name\":\"图例\",\"Angle\":0,\"Color\":\"#066EED80\",\"Point\":{\"x\":200,\"y\":200},\"Scale\":1,\"Width\":32,\"Border\":null,\"Height\":32,\"PivotX\":0,\"PivotY\":0,\"Enabled\":true,\"FloorId\":\"60d43256660b093f1c3b5aa5\",\"DrawMode\":null,\"FillMode\":null,\"GameMode\":0,\"ImageUrl\":null,\"FixedSize\":null,\"Thickness\":null,\"MultiPoint\":null,\"TemplateId\":null,\"FireElementId\":null,\"PropertyInfos\":[{\"Tag\":\"\",\"Order\":0,\"Enabled\":true,\"Visible\":true,\"Required\":false,\"RuleName\":\"\",\"RuleValue\":\"\",\"PhysicalUnit\":\"\",\"PropertyName\":\"列\",\"PropertyType\":2,\"PropertyValue\":\"2\"}],\"IsFromBuilding\":null,\"InteractiveMode\":null}}"
this.http.post("/api/CompanyData", CompanyData, {
params: {
companyId: this.params.companyId
@ -954,7 +955,6 @@ export class CollectionToolsPlanComponent implements OnInit {
}).subscribe(data => {
this.saveNum.push("1")
if (this.saveNum.length == 5) {
this.maskLayerService.sendMessage(false)
this.maskLayerService.sendMessage(false)
this.canvasData.isChange = false
let config = new MatSnackBarConfig();
@ -1239,7 +1239,6 @@ export class CollectionToolsPlanComponent implements OnInit {
storeyData //将建筑素材和当前楼层素材合二为一
//处理 tree 数据结构
handleTreeData(storeyData) {
this.storeyData = storeyData
let data = this.allFireElements //所有消防要素模板
let treeData = [] //tree型 处理完成后的数据
@ -1387,8 +1386,6 @@ export class CollectionToolsPlanComponent implements OnInit {
//封装 刷新 tree 数据
async renovateTreeData(isRefresh: boolean = true) {
// this.allFireElements[this.allFireElements.length-1].children = []
console.log(888, this.selectingSitePlan)
if (!this.selectingSitePlan.isGis) {
isRefresh ? await this.canvas.refresh() : null
this.canvas.setNameVisible(this.basicInfo, 0)
@ -1421,7 +1418,6 @@ export class CollectionToolsPlanComponent implements OnInit {
}
map: any
toLoadGis() {
console.log(666666, this.isGis)
this.map = new AMap.Map('planContainer', {
viewMode: '2D', // 默认使用 2D 模式,如果希望使用带有俯仰角的 3D 模式,请设置 viewMode: '3D',
zoom: 11, //初始化地图层级
@ -1490,12 +1486,6 @@ export class CollectionToolsPlanComponent implements OnInit {
}
//陈鹏飞↓↓↓
//陈鹏飞↓↓↓
//陈鹏飞↓↓↓
@ -1837,29 +1827,13 @@ export class CollectionToolsPlanComponent implements OnInit {
const isDelete = confirm('您确定要删除吗');
if (isDelete) {
if (this.checkedBuildingIndex == -1) { //总平面图
let isHave = this.canvasData.allDisposalNode.find(items => { return items.sitePlanId === item.id })
if (isHave == undefined) {
this.http.delete(`/api/SitePlans/${item.id}`).subscribe(data => {
this.deleteShareData(item, -1)
})
} else {
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
this.snackBar.open('含有数据节点的楼层不允许删除', '确定', config);
}
} else { //楼层/区域
let isHave = this.canvasData.allDisposalNode.find(items => { return items.buildingAreaId === item.id })
if (isHave == undefined) {
this.http.delete(`/api/BuildingAreas/${item.id}`).subscribe(data => {
this.deleteShareData(item, 1)
})
} else {
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
this.snackBar.open('含有数据节点的楼层不允许删除', '确定', config);
}
}
}
}
@ -1878,13 +1852,17 @@ export class CollectionToolsPlanComponent implements OnInit {
delete data.data[key]
}
}
console.log('删除e',e)
console.log('删除建筑数据',data)
let newData = JSON.parse(JSON.stringify(this.canvasData.originalcompanyBuildingData));
newData.data = JSON.stringify(newData.data) // 转换JSON 数据格式
this.selectingSitePlan = this.sitePlanData[0] || {}
this.sitePlanData[0] ? this.isGis = this.sitePlanData[0].isGis : null
this.canvasData.selectStorey = this.sitePlanData[0] || {} //服务中 存一份数据
this.selectSitePlanIndex = 0
this.canvasData.isChange = false
if (isCompany === -1) {
console.log('保存建筑数据',newData)
this.http.post("/api/CompanyData", newData).subscribe(data => { })
this.getSitePlanStorey(this.selectingSitePlan) //获取 平面图 楼层数据
} else {
@ -1918,6 +1896,12 @@ export class CollectionToolsPlanComponent implements OnInit {
item.name = item.name + '(副本)'
item.order = this.sitePlanData[this.sitePlanData.length - 1].order + 1
this.http.post('/api/SitePlans', item).subscribe((data: any) => {
for (const key in paramsData) {
if (Object.prototype.hasOwnProperty.call(paramsData, key)) {
const element = paramsData[key];
element.FloorId = data.id
}
}
let newData = {
version: "2.0",
id: "",
@ -1974,6 +1958,12 @@ export class CollectionToolsPlanComponent implements OnInit {
item.name = item.name + '(副本)'
item.order = this.sitePlanData[this.sitePlanData.length - 1].order + 1
this.http.post('/api/BuildingAreas', item, { params: this.params }).subscribe((data: any) => {
for (const key in paramsData) {
if (Object.prototype.hasOwnProperty.call(paramsData, key)) {
const element = paramsData[key];
element.FloorId = data.id
}
}
let newData = {
version: "2.0",
id: "",
@ -2217,8 +2207,7 @@ export class CollectionToolsPlanComponent implements OnInit {
// console.log('选中图片',this.selectImage)
this.selectImageIndex = index
if (this.isGis) {
console.log(this.map)
// console.log(this.map)
} else {
this.canvasData.selectTemplateData = items
this.canvas.beginPaint()
@ -2272,6 +2261,7 @@ export class CollectionToolsPlanComponent implements OnInit {
let itemData = JSON.parse(JSON.stringify(this.selectImage))
itemData.id = id
itemData.point = { x: e.lnglat.lng, y: e.lnglat.lat }
itemData.floorId = this.selectingSitePlan.id
itemData = this.canvasData.deserialize(JSON.stringify(itemData))//反序列化为大写
// 添加楼层数据
this.canvasData.originaleveryStoreyData.data[id] = itemData;
@ -2291,7 +2281,7 @@ export class CollectionToolsPlanComponent implements OnInit {
seekPanelPoint(paramsData) {
this.checkedBuildingIndex = paramsData.buildingIndex
if (paramsData.buildingIndex == -1) { //总平面图时
console.log('走了1')
// console.log('走了1')
this.beforeOneCheckedBuilding = { name: "总平面图" }
let fireData = this.getFireElements(sessionStorage.getItem('buildingTypeId')) //获取单位下 消防要素
let planData = this.getSitePlanCompanyData() //获取 单位 数据
@ -2306,15 +2296,15 @@ export class CollectionToolsPlanComponent implements OnInit {
})
}) //get
} else { //建筑时
console.log('走了2')
console.log('allBuildings', this.allBuildings)
console.log('paramsData', paramsData)
// console.log('走了2')
// console.log('allBuildings', this.allBuildings)
// console.log('paramsData', paramsData)
this.beforeOneCheckedBuilding = this.allBuildings[paramsData.buildingIndex]
let params = { buildingId: this.beforeOneCheckedBuilding.id }
let fireData = this.getFireElements(this.beforeOneCheckedBuilding.buildingTypes[0].id || '') //获取建筑下 消防要素
let planData = this.getBuildingData(params) //获取 建筑 数据
this.http.get('/api/BuildingAreas', { params }).subscribe(data => {
console.log('BuildingAreas', data)
// console.log('BuildingAreas', data)
this.sitePlanData = data
let index = this.sitePlanData.findIndex(item => { return item.id === paramsData.storeyId })
this.selectingSitePlan = this.sitePlanData[index] || {}

2
src/app/ui/collection-tools-plan/leftFunctionalDomain.ts

@ -113,7 +113,7 @@ export class leftFunctionalDomainComponentPlan implements OnInit {
}
}
}) //post
} else if (this.file.size>5*1024*1024 && this.file.size<=10*1024*1024) { //大于5MB
} else if (this.file.size>5*1024*1024 && this.file.size<=100*1024*1024) { //大于5MB
let upload = this.canvasData.sectionUpload(sessionStorage.getItem('companyId'),this.file)
upload.then(res=>{
let imgURL = '/api/Objects/PlanPlatform/' + res

16
src/app/ui/collection-tools/collection-tools.component.ts

@ -662,8 +662,8 @@ export class CollectionToolsComponent implements OnInit {
}//多个素材共同属性
multipleAssetData: any//当前多选的素材
firstMultipleAssetData: any//当前多选的第一个素材
organizationName: any = this.route.snapshot.queryParams.orName//当前预案单位所属机构名称
organizationId: any = this.route.snapshot.queryParams.orId//当前预案单位所属机构名称
organizationName: any = this.route.snapshot.queryParams.orName || sessionStorage.getItem('orName')//当前预案单位所属机构名称
organizationId: any = this.route.snapshot.queryParams.orId || sessionStorage.getItem('orId')//当前预案单位所属机构名称
ngOnInit(): void {
this.canvasData.isInheritSky = { weather: '', airTemperature: '', windDirection: '', windScale: '', }; //缓存 节点 天气
AxMessageSystem.addListener('selectionChanged', () => {
@ -2004,6 +2004,12 @@ export class CollectionToolsComponent implements OnInit {
item.name = item.name + '(副本)'
item.order = this.sitePlanData[this.sitePlanData.length - 1].order + 1
this.http.post('/api/SitePlans', item).subscribe((data: any) => {
for (const key in paramsData) {
if (Object.prototype.hasOwnProperty.call(paramsData, key)) {
const element = paramsData[key];
element.FloorId = data.id
}
}
let newData = {
version: "2.0",
id: "",
@ -2060,6 +2066,12 @@ export class CollectionToolsComponent implements OnInit {
item.name = item.name + '(副本)'
item.order = this.sitePlanData[this.sitePlanData.length - 1].order + 1
this.http.post('/api/BuildingAreas', item, { params: this.params }).subscribe((data: any) => {
for (const key in paramsData) {
if (Object.prototype.hasOwnProperty.call(paramsData, key)) {
const element = paramsData[key];
element.FloorId = data.id
}
}
let newData = {
version: "2.0",
id: "",

BIN
src/assets/images/2Dplan.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Loading…
Cancel
Save