- 火灾危险性* |
-
-
+
+
-
-
-
- 储罐信息
-
-
-
-
-
-
-
- {{x[0].name}}
-
-
- {{i.propertyName}} {{i.physicalUnit}}:
-
-
-
-
- *
-
+
-
- {{x[1].name}}
-
-
-
+
+ 自定义信息
+
+
-
-
-
- 自定义信息
-
-
-
-
-
-
-
+
-
-
+
+
+
-
-
diff --git a/src/app/key-unit/basicinfo-look/basicinfo.component.scss b/src/app/key-unit/basicinfo-look/basicinfo.component.scss
index 2648fb9..9c6800b 100644
--- a/src/app/key-unit/basicinfo-look/basicinfo.component.scss
+++ b/src/app/key-unit/basicinfo-look/basicinfo.component.scss
@@ -1,7 +1,7 @@
.topbox{
height: 485px;
width: 100%;
- // border-bottom: 1px solid black;
+ padding-bottom: 20px;
.mainbox{
height: 100%;
position: relative;
@@ -9,7 +9,6 @@
.mainleft{
width:800px;
height: 100%;
- // background-color: yellow;
float: left;
.inputbox{
width: 343px;
@@ -41,13 +40,8 @@
}
.addbtn{
width: 695px;
- position: absolute;
- bottom: -495px;
- text-align: center;
- margin-bottom:20px;
- button{
- margin: 0 4px;
- }
+ margin:20px 0;
+ padding-bottom: 20px;
}
.uploadimg{
width: 400px;
@@ -56,18 +50,13 @@
margin-top:12px;
position: relative;
margin-left: 80px;
- cursor: pointer;
span{
float: left;
}
- // img{
- // float: left;
- // }
.uploadingimg{
width: 299px;
height: 170px;
- // background: url('../../../assets/images/upload2.png') no-repeat center center;
-
+ cursor: pointer;
position: absolute;
top: 0px;
left: 79px;
@@ -77,20 +66,11 @@
}
.image{
- // position: absolute;
- // top: 199px;
- // left: 160px;
- // width: 299px;
- // height: 170px;
input{
- // width: 299px;
- // height: 170px;
width: 190px;
margin-top: 160px;
cursor: pointer;
}
- // opacity:0;
-
}
}
.mainright{
@@ -107,7 +87,6 @@
}
.gistopbox{
position: absolute;
-
box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.16);
border-radius: 4px;
left: 5%;
@@ -146,55 +125,60 @@
align-items: center;
justify-content: center;
}
-
+ .inputBox{
+ width: 63%;
+ display: flex;
+ align-items: center;
+ .positionInput{
+ border: 0;
+ border-radius: 6px;
+ width: 90%;
+ height: 34px;
+ background: #F2F2F2;
+ margin-left: 8px;
+ box-sizing: border-box;
+ padding-left: 10px;
+ }
+ }
}
+ .hidden{
+ opacity: 0;
+ z-index: -1;
+ }
+ .show{
+ opacity: 1;
+ z-index: 1;
+ }
}
}
}
-.bottombox{
- // height:400px;
- width: 100%;
- // background-color: skyblue;
-
- .bottomtitle{
- height: 60px;
- // background-color: orange;
- line-height: 60px;
- border-top: 1px solid black;
- border-bottom: 1px solid black;
+.bodyBox{
+ flex: 70%;overflow-y: auto;
+ position: relative;
+ .addBuilding{
+ position: absolute;
+ z-index: 999;
+ left: 0;
+ top: 3px;
}
- .houseinfobox{
- // height:340px;
- overflow: auto;
- .addhouseinfo{
- float: left;
- }
- .infobtnbox{
- margin-left: 800px;
- position: absolute;
- top: 30px;
- right: 75px;
- button{
- width: 80px;
- height: 40px;
- margin: 0 12px;
- margin-top: 15px;
- }
- }
- .infotitle{
- font-size: 28px;
- font-weight: 900;
- margin-left: 180px;
- }
- .houseinfoinput{
- width: 393px;
- text-align: end;
- margin-left:240px;
+ .buildInfoInput{
+ width: 393px;
+ text-align: end;
+ margin-left:240px;
+ }
+ .infobtnbox{
+ position: absolute;
+ top: 30px;
+ right: 75px;
+ button{
+ width: 80px;
+ height: 40px;
+ margin: 0 12px;
+ margin-top: 15px;
}
}
}
-
.btn{
width: 100%;
text-align: center;
@@ -206,37 +190,29 @@
margin-top: 58px;
margin-left: 203px;
}
-.mat-table{
- width: 99%;
-}
+
table{
- width: 1000px;
- thead{
- tr{
- th{
- width: 60px;
- display: block;
- float: left;
-
- }
+ width: 99%;
+ tr{
+ display: flex;
+ td,th{
+ flex: 1;
}
- }
- tbody{
- tr{
+ th{
+ display: flex;
+ align-items: center;
+ justify-content: center;
- td{
- width: 60px;
- display: block;
- float: left;
- text-align: center;
- }
+ }
+ input{
+ border: 0px ;
}
}
}
-
+table,table tr th, table tr td { border: 0.1px solid gray; }
+table { text-align: center; border-collapse: collapse; padding:2px;}
.deviceinfo{
- // border-bottom: 1px solid black;;
padding-bottom: 60px;
}
.tankdetailinfo{
@@ -250,14 +226,10 @@ table{
}
.tankinfo{
display: block;
- width: 100%;
- // height: 45px;
+ width: 97.5%;
text-align: center;
+ border: 0px;
}
-// .adddeviceinfo{
-// // position: absolute;
-// // left: 0px;
-// }
.submit1{
margin-left: -66px !important;
}
@@ -269,31 +241,7 @@ textarea {
height: 110px;
resize: none;
}
- //预览图片旋转角度
- .img1{
- transform:rotate(90deg) scale(0.55);
- height: 100%;
-}
-.img2{
- transform:rotate(180deg);
- // height: 100%;
-}
-.img3{
- transform:rotate(270deg) scale(0.55);
- // height: 100%;
-}
-.img4{
- transform:rotate(90deg) scale(1.3);
- // height: 100%;
-}
-.img5{
- transform:rotate(180deg);
- // height: 100%;
-}
-.img6{
- transform:rotate(270deg) scale(1.3);
- // height: 100%;
-}
+
.imgbox{
text-align: center;
height: 750px;
diff --git a/src/app/key-unit/basicinfo-look/basicinfo.component.ts b/src/app/key-unit/basicinfo-look/basicinfo.component.ts
index afb4dc2..03a70aa 100644
--- a/src/app/key-unit/basicinfo-look/basicinfo.component.ts
+++ b/src/app/key-unit/basicinfo-look/basicinfo.component.ts
@@ -1,14 +1,13 @@
-import { Component, OnInit, Inject ,ViewChild, ElementRef, Renderer2} from '@angular/core';
+import { Component, OnInit, Inject ,ViewChild, Renderer2, ElementRef, Directive, forwardRef} from '@angular/core';
import { MatTreeFlatDataSource, MatTreeFlattener } from '@angular/material/tree';
import { FlatTreeControl } from '@angular/cdk/tree';
import { HttpClient,HttpHeaders, HttpEventType } from '@angular/common/http';
import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
-import { FormControl } from '@angular/forms';
+import { AbstractControl, FormControl, NG_VALIDATORS, Validator } from '@angular/forms';
import { MatSnackBar ,MatSnackBarConfig} from '@angular/material/snack-bar';
import format from 'date-fns/format';
import { TreeService } from '../../http-interceptors/tree.service'
import { FileUploader, FileItem } from 'ng2-file-upload'
-// import { House } from '../../interface'
import { DomSanitizer } from '@angular/platform-browser'
import { Injectable } from "@angular/core"
import { filter } from 'rxjs/operators';
@@ -16,10 +15,11 @@ import { async } from '@angular/core/testing';
import { MatTableDataSource } from '@angular/material/table';
import { isNgTemplate } from '@angular/compiler';
import * as _ from 'lodash';
-// import Swiper from 'swiper';
+import Swiper from 'swiper';
import { LookMaster2 } from './lookmaster.component'
-import { Router,ActivatedRoute } from '@angular/router'
+import { ActivatedRoute } from '@angular/router';
declare var AMap: any;
+
@Component({
selector: 'app-basicinfo-look',
templateUrl: './basicinfo.component.html',
@@ -77,28 +77,46 @@ export class BasicinfoLookComponent implements OnInit {
selectedorganization: any//所选的辖区中队
selectedorganizationid:any //所选的辖区中队的id
highhouse = false//控制高层表单的显示
- houses: any = [] //存储当前单位的建筑信息
+
defaultbuildingTypes :any //存储当前建筑的默认类型的id
buildingTypesname:any//存储当前建筑的默认类型name
buildingCustomData:any //存储当前建筑的自定义信息
allunittype: any //所有单位类型
allorganizing:any = [] //所有组织机构
- constructor(private elementRef: ElementRef,public renderer2: Renderer2,private router:Router,private route:ActivatedRoute,private http: HttpClient, private tree: TreeService, private sanitizer: DomSanitizer, public dialog: MatDialog,public snackBar: MatSnackBar) { }
-
+ constructor(private route:ActivatedRoute,private elementRef: ElementRef,public renderer2: Renderer2,private http: HttpClient, private tree: TreeService, private sanitizer: DomSanitizer, public dialog: MatDialog,public snackBar: MatSnackBar) { }
+ houses: any = [] //存储当前单位的建筑信息
unitId : any //当前单位id
ngOnInit(): void {
this.getallunittype()
this.getorganization()
- // this.getunitinfo()
- this.getunitallbuilding()
+ this.getUnitAllBuildings()//获得单位下所有建筑
this.unitId = this.route.snapshot.queryParams.id
}
+ //获得单位下所有建筑
+ getUnitAllBuildings(){
+ this.unitId = this.route.snapshot.queryParams.id
+ this.http.get("/api/Buildings",{
+ params:{
+ companyId:this.unitId
+ }
+ }).subscribe(async (data:any)=>{ // 获得当前单位所有的建筑
+ data.forEach(element => {
+ element.data = []
+ });
+ this.houses = data
+ this.getBuildingInfo()
+ })
+ }
+
+
+
isMapLabel:boolean
//地图标注位置
markerPosition:any = {x: 0, y: 0}//单位坐标
map:any //地图实例
isGisTopBox:boolean = false//点击位置按钮
+ isGisTopBoxTwo:boolean = false//点击位置按钮
oldPositionMarker:any //旧位置marker实例
newPositionMarker:any //新位置marker实例
@@ -116,6 +134,23 @@ export class BasicinfoLookComponent implements OnInit {
' ' +
''
//初始化地图
+ searchTitle:any//搜索内容
+ placeSearch:any//地址搜索类
+ search(){
+ this.placeSearch.search(this.searchTitle, (status, result) => {
+ // 搜索成功时,result即是对应的匹配数据
+ if(result.info == "OK"){
+ this.newPositionMarker.setPosition([result.poiList.pois[0].location.lng,result.poiList.pois[0].location.lat])
+ this.markerPosition2 = {x: result.poiList.pois[0].location.lng, y: result.poiList.pois[0].location.lat}
+ this.map.setCenter([result.poiList.pois[0].location.lng,result.poiList.pois[0].location.lat]); //设置地图中心点
+ }else{
+ alert('查询不到输入地址信息')
+ }
+
+ })
+
+ }
+ //初始化地图
labelGis(){
this.map = new AMap.Map('container', {
zoom:12
@@ -123,26 +158,45 @@ export class BasicinfoLookComponent implements OnInit {
this.map.on('complete', () => {
this.isGisTopBox = true
});
- 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('上海市');
- }
+ //输入提示
+ var autoOptions = {
+ input: "tipinput"
+ };
+ AMap.plugin(['AMap.PlaceSearch','AMap.AutoComplete'], ()=>{
+ var auto = new AMap.AutoComplete(autoOptions);
+ this.placeSearch = new AMap.PlaceSearch(); //构造地点查询类
+ auto.on("select", (e)=>{
+ // console.log(e)
+ // console.log( this.newPositionMarker)
+ this.newPositionMarker.setPosition([e.poi.location.lng,e.poi.location.lat])
+ this.markerPosition2 = {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('上海');
+ }
}
+ markerPosition2
//点击位置按钮
setPosition(){
this.isGisTopBox = false
+ this.isGisTopBoxTwo = true
if(this.isMapLabel){//如果已经标注单位坐标
- console.log('已标注单位位置')
+ // console.log('已标注单位位置')
if(this.oldPositionMarker){
this.oldPositionMarker.setContent(this.oldPositionMarkerContent)
@@ -160,41 +214,43 @@ export class BasicinfoLookComponent implements OnInit {
this.map.add(this.newPositionMarker);
- let markerPosition
if(this.markerPosition.x && this.markerPosition.x != 0){
- markerPosition = {x: this.markerPosition.x,y: this.markerPosition.y}
+ this.markerPosition2 = {x: this.markerPosition.x,y: this.markerPosition.y}
}else{
- markerPosition = {x: this.map.getCenter().lng,y: this.map.getCenter().lat} //获取当前地图中心位置
+ this.markerPosition2 = {x: this.map.getCenter().lng,y: this.map.getCenter().lat} //获取当前地图中心位置
}
this.newPositionMarker.on('dragend', (e)=>{
- markerPosition = {x: e.lnglat.lng, y: e.lnglat.lat}
+ this.markerPosition2 = {x: e.lnglat.lng, y: e.lnglat.lat}
})
//点击确定
this.renderer2.listen(this.elementRef.nativeElement.querySelector('#setPositionOk'),'click',(event)=>{
this.map.clearMap();
this.isGisTopBox = true
+ this.isGisTopBoxTwo = false
this.newPositionMarker = new AMap.Marker({
- position: [markerPosition.x,markerPosition.y],
+ position: [this.markerPosition2.x,this.markerPosition2.y],
content: this.newPositionMarkerContent,
offset: new AMap.Pixel(-15, -18)
});
- this.markerPosition = markerPosition
+ this.markerPosition = this.markerPosition2
this.map.add(this.newPositionMarker);
})
//点击取消
this.renderer2.listen(this.elementRef.nativeElement.querySelector('#setPositionClose'),'click',(event)=>{
this.isGisTopBox = true
+ this.isGisTopBoxTwo = false
this.map.clearMap();
this.newPositionMarker = new AMap.Marker({
position: [this.markerPosition.x,this.markerPosition.y],
content: this.newPositionMarkerContent,
offset: new AMap.Pixel(-15, -18)
});
+ this.map.setCenter([this.markerPosition.x,this.markerPosition.y]); //设置地图中心点
this.map.add(this.newPositionMarker);
})
}else{
- console.log('未标注单位位置')
+ // console.log('未标注单位位置')
if(this.newPositionMarker){
this.newPositionMarker.setContent(this.oldPositionMarkerContent)
}
@@ -214,19 +270,20 @@ export class BasicinfoLookComponent implements OnInit {
});
this.map.add(this.newPositionMarker);
- let markerPosition
+ // let markerPosition
if(this.markerPosition.x && this.markerPosition.x != 0){
- markerPosition = {x: this.markerPosition.x,y: this.markerPosition.y}
+ this.markerPosition2 = {x: this.markerPosition.x,y: this.markerPosition.y}
}else{
- markerPosition = {x: this.map.getCenter().lng,y: this.map.getCenter().lat} //获取当前地图中心位置
+ this.markerPosition2 = {x: this.map.getCenter().lng,y: this.map.getCenter().lat} //获取当前地图中心位置
}
this.newPositionMarker.on('dragend', (e)=>{
- markerPosition = {x: e.lnglat.lng, y: e.lnglat.lat}
+ this.markerPosition2 = {x: e.lnglat.lng, y: e.lnglat.lat}
})
//点击确定
this.renderer2.listen(this.elementRef.nativeElement.querySelector('#setPositionOk'),'click',(event)=>{
this.isGisTopBox = true
- this.markerPosition = markerPosition
+ this.isGisTopBoxTwo = false
+ this.markerPosition = this.markerPosition2
this.map.clearMap();
this.newPositionMarker = new AMap.Marker({
position: [this.markerPosition.x,this.markerPosition.y],
@@ -238,19 +295,26 @@ export class BasicinfoLookComponent implements OnInit {
this.renderer2.listen(this.elementRef.nativeElement.querySelector('#setPositionClose'),'click',(event)=>{
this.map.clearMap();
this.isGisTopBox = true
+ this.isGisTopBoxTwo = false
if(this.markerPosition.x && this.markerPosition.x != 0){//说明之前标过点
this.newPositionMarker = new AMap.Marker({
position: [this.markerPosition.x,this.markerPosition.y],
content: this.newPositionMarkerContent,
offset: new AMap.Pixel(-15, -18)
});
+ this.map.setCenter([this.markerPosition.x,this.markerPosition.y]); //设置地图中心点
this.map.add(this.newPositionMarker);
}
})//取消
}
+
+
+
}
+
+
//获得所有单位类型
getallunittype() {
this.http.get("/api/BuildingTypes/Simple").subscribe(data => {
@@ -261,7 +325,7 @@ export class BasicinfoLookComponent implements OnInit {
getorganization() {
this.http.get('/api/Organizations').subscribe(
(data: any) => {
- this.allorganizing = data;
+ this.allorganizing = data
this.dataSource.data = this.tree.toTree(data);
let _this = this
this.getunitinfo().then((e)=>{
@@ -280,7 +344,6 @@ export class BasicinfoLookComponent implements OnInit {
async getunitinfo(){
let result = await new Promise((resolve, reject) => {
this.http.get(`/api/Companies/${this.unitId}`).subscribe((data:any)=>{
- // console.log(111,data)
if(data.buildingTypes.length){
sessionStorage.setItem('buildingTypeId',data.buildingTypes[0].id)
}else{
@@ -314,7 +377,6 @@ export class BasicinfoLookComponent implements OnInit {
this.selectedorganization = str.substr(1)
}
}
-
this.unitinfo = data
resolve(this.unitinfo)
this.selectedorganizationid = data.organizationId
@@ -329,433 +391,181 @@ export class BasicinfoLookComponent implements OnInit {
})
}
- unitallbuilding:any = []//用于存储当前单位所有的建筑
- buildinginfoId:any = []//用于存储当前单位所有具体建筑的id
- presentbuildinfoId:any // 用于存储当前单位第一个建筑的id
- bigfor:any//循环(储罐信息+罐区信息)大组
- npdata:any = []
- newnpdata:any //用于存储石油化工 储罐信息/罐区情况的 datasource
-
- basicCategoryId:any //当前单位所有建筑中位于第一个的建筑id
- deviceinfodata:any=[];//用于存储石油化工装置信息的数组
- zhuangzhiinfodatasource:any = [] //用于存储石油化工装置信息表格的数据来源
- newzhuangzhiinfodatasource:any= []//存储石油化工装置信息表格的 datasource形式
- devicedataSourcebox:any = [] //存储多个石油化工建筑的不同装置信息表格datasource
-
-
- //数据格式化函数 将原始数据映射转化为表格需要的datasource
- formatHandle(list) {
- const result = [{}]; // tag 是从1开始,因此预置索引为0的项
- list.forEach((item) => {
- const { tag, propertyName, propertyValue } = item;
- if (result[tag] === undefined) { // 初始化对象
- result[tag] = {};
- }
- const fieldMap = { // 字段映射,实现自动映射
- '罐区': 'tank',
- '储罐编号': 'tankid',
- '储存介质': 'tankmedium',
- '储罐类型': 'tanktype',
- '容量': 'tankcapacity',
- '直径': 'tankdiameter',
- '高度': 'tankheight',
- '顶盖形式': 'tanktectum',
- '浮盘材质': 'tanktexture',
- '浮盘类型': 'platetype',
- '泡沫产生器型号': 'foamgeneratorid',
- '泡沫产生器形式': 'foamgeneratortype',
- '是否设置氮封惰化保护装置': 'isprotect',
- '防护堤高度': 'fendinggroyneheight',
- '半固定泡沫灭火接口数量': 'portnum',
- '其它设施': 'else'
- };
- result[tag][fieldMap[propertyName]] = propertyValue;
- });
- result.shift(); // 移除预置的 索引为0 的值
- return result;
- }
-
- //将模板信息加工成附带自定义属性的信息
- getunithouse(data,n,x){ //data是原始模板在此基础上加工 n是当前建筑名称和建筑id、 x是当前循环的item信息
- data[0].buildingtypeId = n.id
- data[0].name = x.name
- data[0].username =x.name
- data[0].buildtype = n.name
- data[0].tongyong = true
- data[0].index = x.index
- if(data[0].buildtype == "石油化工类" || data[0].buildtype.indexOf("化工") != -1 ){
- data[0].tongyong = false
- data[0].isshiyou = true
- this.deviceinfodata = data[0].buildingBasicGroups[1].propertyInfos //存储装置信息的初始数据,需要转换成datasource形式
- var map = []
- this.deviceinfodata.forEach((item,index) => {
- if(item.tag == ""){
- item.tag = "1"
- }
- if(!(item.tag in map)){
- map[item.tag] = []
- }
- map[item.tag].push(item)
- });
- let zhuangzhiinfodatasource = []
- map.forEach((item,index)=>{
- zhuangzhiinfodatasource[index] = {}
- item.forEach(i => {
- if (i.propertyName == "装置区名称") {
- zhuangzhiinfodatasource[index].name = i.propertyValue
- }
- if (i.propertyName == "工艺流程") {
- zhuangzhiinfodatasource[index].flow = i.propertyValue
- }
- if (i.propertyName == "火灾危险性") {
- zhuangzhiinfodatasource[index].danger = i.propertyValue
- }
- if (i.propertyName == "灭火注意事项") {
- zhuangzhiinfodatasource[index].payattentionto = i.propertyValue
- }
- });
- })
- this.newzhuangzhiinfodatasource =[] //数据去空
- zhuangzhiinfodatasource.forEach(item=>{
- if(item !== "" && item != undefined){
- this.newzhuangzhiinfodatasource.push(item)
- }
- })
- this.devicedataSourcebox[data[0].buildingId] = new MatTableDataSource(this.newzhuangzhiinfodatasource)
- data[0].newzhuangzhiinfodatasource = this.newzhuangzhiinfodatasource
-
-
- //把bigfor分组取出来 先大循环 (储罐信息---储罐信息/罐区情况)为一组
- let noemptybigfordata = data[0].buildingBasicGroups
- // if(noemptybigfordata.length > 4){
- // noemptybigfordata.forEach((item,index) => {
- // if(!item.submitted && item.name !="装置信息"){
- // noemptybigfordata.splice(index, 1)
- // }
- // })
- // }
- let bigtankgroups = noemptybigfordata.slice(2)
- // console.log("bigtankgroups",bigtankgroups)
- let proportion = 2; //按照比例切割
- let num = 0;
- let bigfor =[];
- for(let i=0;i{
- item[1].propertyInfos.forEach(item => {
- if(item.tag == ""){
- item.tag = 1
- }
- });
- item[1].propertyInfos = this.formatHandle(item[1].propertyInfos)
-
- })
- data[0].bigfor = bigfor
- }
- // if(data[0].buildtype == "地铁类"){
- // data[0].tongyong = true
- // // data[0].ditie = true
- // }
- return data[0]
- }
-
- //点击建筑自定义信息的checkbox
- isCustomData = false
- checkCustomData(e){
- this.isCustomData = e.checked
- }
- //增加自定义信息行数
- addCustomData(item){
- item.buildingCustomData.customProperties.push({
- name: "",
- value: ""
+ //获得建筑自定义信息
+ getbuildingCustomData(){
+ this.http.get("/api/BuildingCustomData",{params:{
+ buildingId:this.houses[this.selectedBuildingIndex].id
+ }}).subscribe(data=>{
+ this.buildingCustomData = data
})
}
- //删除自定义信息行数
- deleteCustomData(item){
- item.buildingCustomData.customProperties.pop()
- }
- //得到建筑信息数据并进行处理
- allBuildings:any
- getunitallbuilding(){
- this.houses = []
+
+ //获得建筑的全部信息放到对应houses数组的建筑中
+ selectedBuildingIndex:number = 0
+ getBuildingInfo(){
this.unitId = this.route.snapshot.queryParams.id
- this.http.get("/api/Buildings",{
+ this.http.get("/api/BuildingBasicInfos",{ // 循环请求当前单位建筑每一个建筑的信息保存到数组中
params:{
- companyId:this.unitId
+ companyId :this.unitId,
+ buildingId:this.houses[this.selectedBuildingIndex].id,
+ buildingType:this.houses[this.selectedBuildingIndex].buildingTypes[0].id
}
- }).subscribe(async (data:any)=>{ // 获得当前单位所有的建筑
- this.allBuildings = data
- // console.log(data)
- if(data.length != 0){
- this.basicCategoryId = data[0].buildingTypes[0].id
- this.presentbuildinfoId = data[0].id // 用于存储当前单位第一个建筑的id
- for (let i = 0, length = data.length; i < length; i++) {//循环所有建筑
- const n = data[i];
- const index = i;
- this.buildinginfoId.push(n.id)
- const result = await new Promise((resolve) => {
- this.http.get("/api/BuildingBasicInfos",{ // 循环请求当前单位建筑每一个建筑的信息保存到数组中
- params:{
- companyId :this.unitId,
- buildingId:n.id,
- buildingType:n.buildingTypes[0].id
- }
- }).subscribe((data)=>{
- //获得当前建筑自定义信息并且添加到item自定义属性上
- let _data = data
- this.http.get("/api/BuildingCustomData",{params:{
- buildingId:n.id
- }}).subscribe((data:any)=>{
- _data[0].buildingCustomData = data
- if(data && data.customProperties.length != 0){
- _data[0].isCustomData = true
- }else{
- _data[0].isCustomData = false
- _data[0].buildingCustomData ={
- id: "",
- customProperties: [
- {
- name: "",
- value: ""
- }
- ],
- buildingId: _data[0].buildingId
- }
- }
- })
- //为每个建筑添加自定义属性
- data[0].buildingtypeId = n.buildingTypes[0].id
- data[0].name = n.name
- data[0].username = n.name
- data[0].buildtype = n.buildingTypes[0].name
- data[0].tongyong = true
- data[0].index = index
-
- if(data[0].buildtype.indexOf("储罐") != -1 || data[0].buildtype.indexOf("化工") != -1 ){
- data[0].tongyong = false
- data[0].isshiyou = true
- let noemptydeviceArr = data[0].buildingBasicGroups[1].propertyInfos
- noemptydeviceArr.forEach((item,index) => {
- if(item.tag == ""){
- noemptydeviceArr.splice(index,1)
- }
- });
- this.deviceinfodata = noemptydeviceArr //存储装置信息的初始数据,需要转换成datasource形式
- var map = []
- this.deviceinfodata.forEach((item,index) => {
- if(!data[0].buildingBasicGroups[1].submitted){
- if(item.tag == ""){
- item.tag = "1"
- }
- }
-
- if(!(item.tag in map)){
- map[item.tag] = []
- }
- map[item.tag].push(item)
- });
- let zhuangzhiinfodatasource = []
- map.forEach((item,index)=>{
- zhuangzhiinfodatasource[index] = {}
- item.forEach(i => {
- if (i.propertyName == "装置区名称") {
- zhuangzhiinfodatasource[index].name = i.propertyValue
- }
- if (i.propertyName == "工艺流程") {
- zhuangzhiinfodatasource[index].flow = i.propertyValue
- }
- if (i.propertyName == "火灾危险性") {
- zhuangzhiinfodatasource[index].danger = i.propertyValue
- }
- if (i.propertyName == "灭火注意事项") {
- zhuangzhiinfodatasource[index].payattentionto = i.propertyValue
- }
- });
- })
- this.newzhuangzhiinfodatasource =[] //数据去空
- zhuangzhiinfodatasource.forEach(item=>{
- if(item !== "" && item != undefined){
- this.newzhuangzhiinfodatasource.push(item)
- }
- })
- this.devicedataSourcebox[data[0].buildingId] = new MatTableDataSource(this.newzhuangzhiinfodatasource)
- data[0].newzhuangzhiinfodatasource = this.newzhuangzhiinfodatasource
-
- //把bigfor分组取出来 先大循环 (储罐信息---储罐信息/罐区情况)为一组
- let noemptybigfordata = data[0].buildingBasicGroups
-
- let bigtankgroups = noemptybigfordata.slice(2)
- let proportion = 2; //按照比例切割
- let num = 0;
- let bigfor =[];
- for(let i=0;i{
+ // console.log('当前选择建筑的基础信息',data)
+ //需要处理一下表格信息
+ data[0].buildingBasicGroups.forEach(element => {
+ //需要处理一下表格信息
+ if(element.type == 1){
+ let afterData = []
+ let tempArr = [];
+ for (let i = 0; i < element.propertyInfos.length; i++) {
+ element.propertyInfos[i].tag == '' ? element.propertyInfos[i].tag = 1 : null
+ if (tempArr.indexOf(element.propertyInfos[i].tag) === -1) {
+ afterData.push({
+ tag: element.propertyInfos[i].tag,
+ origin: [element.propertyInfos[i]]
+ });
+ tempArr.push(element.propertyInfos[i].tag);
+ } else {
+ for (let j = 0; j < afterData.length; j++) {
+ if (afterData[j].tag == element.propertyInfos[i].tag) {
+ afterData[j].origin.push(element.propertyInfos[i]);
+ break;
}
-
-
-
- //bigfor决定当前储罐分组有几个
- bigfor.forEach((item,index)=>{
-
- item[1].propertyInfos = this.formatHandle(item[1].propertyInfos)
-
- })
- data[0].bigfor = bigfor
}
- resolve(data[0]) //把数据传递出去
- })
+ }
+ }
+ function compare(property){
+ return function(a,b){
+ var value1 = a[property];
+ var value2 = b[property];
+ return value1 - value2;
+ }
+ }
+ afterData.forEach(item =>{
+ item.origin = item.origin.sort(compare('order'))
})
- this.houses.push(result) // 并且把他添加到 tab 总体数组中
+ element.propertyInfos = afterData.sort(compare('tag'))
+ // console.log(afterData,888);
+ }
+ });
+ let guanquIndex = data[0].buildingBasicGroups.findIndex(item => item.name.indexOf('罐区')>=0); // 找到第一个灌区的索引
+ function transferFn(arr) {
+ const guanquIndex = arr.findIndex(item => item.name.indexOf('罐区')>=0); // 找到第一个灌区的索引
+
+ const guanquList = arr.slice(guanquIndex); // 灌区的列表
+ const baseList = arr.slice(0, guanquIndex); // 前面的数据
+ const len = guanquList.length;
+ const num = len/2; // 计算一共有多少对,这里的前提是数据本身必须成对出现
+ // 灌区切割出来的数据,分别存放,最后做一下合并
+ const array1 = [];
+ const array2 = [];
+ for(let i = 0; i{
+ if(data && data.customProperties.length != 0){
+ this.houses[this.selectedBuildingIndex].customData = data
+ this.houses[this.selectedBuildingIndex].isCustomData = true
+ }else{
+ this.houses[this.selectedBuildingIndex].isCustomData = false
+ this.houses[this.selectedBuildingIndex].customData = {
+ id: "",
+ customProperties: [{name:'',value:''}],
+ buildingId: this.houses[this.selectedBuildingIndex].id
+ }
+ }
+ })
})
-
}
-
- unitinfotemplate:any //存储选择不同单位类型时的模板信息
- displayedColumns: string[]=['name', 'flow','danger','payattentionto'];
- displayedColumns2: string[]=['tank','tankid', 'tankmedium','tanktype','tankcapacity','tankdiameter', 'tankheight','tanktectum','tanktexture','platetype', 'foamgeneratorid','foamgeneratortype','isprotect','fendinggroyneheight', 'portnum','else'];
- devicedataSource:any; //存储石油化工模板中的装置信息表格
- tankinfodatabox:any = [
- []
- ]
- // dataSourceArr = []
- tankinfodata:any=[];//用于存储石油化工储罐信息的数组
- adddeviceinfo2(e,item){//点击加一行 视图上多一行
- item.bigfor[e][1].propertyInfos.push({
- tank:"",
- tankid:"",
- tankmedium:"",
- tanktype:"",
- tankcapacity:"",
- tankdiameter:"",
- tankheight:"",
- tanktectum:"",
- tanktexture:"",
- platetype:"",
- foamgeneratorid:"",
- foamgeneratortype:"",
- isprotect:"",
- fendinggroyneheight:"",
- portnum:"",
- else:""
- })
- item.bigfor[e][1].propertyInfos = [...item.bigfor[e][1].propertyInfos]
+ //点击选项卡
+ selectedTabChange(e){
+ // console.log(e)
+ this.selectedBuildingIndex = e.index
+ if((this.houses[this.selectedBuildingIndex].data && !this.houses[this.selectedBuildingIndex].data.length) || !this.houses[this.selectedBuildingIndex].data){
+ this.getBuildingInfo()
+ }
}
- removedeviceinfo3(e,item){//点击减一行
- var isdeleted = confirm("确定要删除末行吗?")
- if(isdeleted){
- if(item.bigfor[e][1].propertyInfos.length > 1){
- item.bigfor[e][1].propertyInfos.pop()
- }else{
- const config = new MatSnackBarConfig();
- config.verticalPosition = 'top';
- config.duration = 3000
- this.snackBar.open('只剩一行,无法删除','确定',config);
- }
- item.bigfor[e][1].propertyInfos = [...item.bigfor[e][1].propertyInfos]
+ //表格加一行
+ addline(ele){
+ let newObj = JSON.parse(JSON.stringify(ele[0]))
+ for (let index = 0; index < newObj.origin.length; index++) {
+ const element = newObj.origin[index];
+ element.propertyValue = ""
+ element.tag = Number(ele[ele.length - 1].tag) + 1
}
-
+ newObj.tag = Number(ele[ele.length - 1].tag) + 1
+ ele.push(newObj)
}
-
-
- //增加储罐大分组
- //在石油化工模板种点击增加储罐信息
- //获得模板信息
- templateinfo:any
- gettemplateinfo(typeid){
-
+ //表格减一行
+ removeline(ele){
+ if(ele.length>1){
+ ele.pop()
+ }else{
+ const config = new MatSnackBarConfig();
+ config.verticalPosition = 'top';
+ config.duration = 3000
+ this.snackBar.open('只剩一行,无法删除','确定',config);
+ }
}
-
- addtankbox(item,bigkey){
- this.http.get("/api/CompanyAccount/BasicInfos",{
- params:{
- companyId : this.unitId,
- buildingType:item.buildingtypeId
- }
- }).subscribe((data:any)=>{
- // console.log(1314,data)
- // console.log(777,data[0])
- item.bigfor.push([
- {
- id: "",
- name: "罐区"+ (item.bigfor.length+ 1),
- type: 0,
- addMode: 2,
- basicGroupId:'',
- basicCategoryId: item.basicCategoryId,
- buildingBasicId: null,
- buildingId: item.buildingId,
- companyId: this.unitinfo.id,
- enabled: true,
- order: item.bigfor.length+2,
- propertyInfos:data[0].buildingBasicGroups[2].propertyInfos
- },
- {
- addMode: 2,
- basicCategoryId:item.basicCategoryId,
- buildingBasicId:null,
- buildingId: item.buildingId,
- companyId: this.unitinfo.id,
- enabled: true,
- basicGroupId:'',
- id: "",
- name: "罐区" + (item.bigfor.length+ 1) +"/储罐信息",
- order: item.bigfor.length+3,
- propertyInfos: [
- {
- else: "",
- fendinggroyneheight: "",
- foamgeneratorid: "",
- foamgeneratortype: "",
- isprotect: "",
- platetype: "",
- portnum: "",
- tank: "",
- tankcapacity: "",
- tankdiameter: "",
- tankheight: "",
- tankid: "",
- tankmedium: "",
- tanktectum: "",
- tanktexture: "",
- tanktype: ""
- }
- ],
- type: 1
- }
-
- ])
+ //建筑自定义信息加一行
+ addCustomData(item){
+ item.customData.customProperties.push({
+ name:'',
+ value:''
})
-
}
- //移除储罐大分组
- removetankbox(item,bigkey){
- if(item.bigfor.length > 1){
+ //建筑自定义信息减一行
+ popCustomData(item){
+ item.customData.customProperties.pop()
+ }
+ //储罐加一组
+ addTankBox(item,groupsIndex){
+ //取出现在最后一个罐区的数字
+ let num = (item.data[0].buildingBasicGroups[item.data[0].buildingBasicGroups.length - 1].name).replace(/[^0-9]/ig,"")
+ let obj1 = JSON.parse(JSON.stringify(item.data[0].buildingBasicGroups[groupsIndex]))
+ let obj2 = JSON.parse(JSON.stringify(item.data[0].buildingBasicGroups[groupsIndex + 1]))
+ obj1.name = '罐区' + (Number(num) + 1)
+ obj2.name = '罐区' + (Number(num) + 1) + '/储罐信息'
+ // console.log(obj2)
+ obj1.propertyInfos.forEach(element => {
+ element.propertyValue = ''
+ });
+ let newArr = [obj2.propertyInfos[0]]
+ obj2.propertyInfos = newArr
+ obj2.propertyInfos[0].origin.forEach(element => {
+ element.propertyValue = ''
+ });
+ item.data[0].buildingBasicGroups.push(obj1)
+ item.data[0].buildingBasicGroups.push(obj2)
+ // console.log(item.data[0].buildingBasicGroups)
+ }
+ //储罐减一组
+ removeTankBox(item,groupsIndex){
+ let num = (item.data[0].buildingBasicGroups[item.data[0].buildingBasicGroups.length - 1].name).replace(/[^0-9]/ig,"")
+ if(num != 1){
var isdeleted = confirm("确定要删除末尾储罐分组吗?")
if(isdeleted){
- item.bigfor.pop()
+ item.data[0].buildingBasicGroups.pop()
+ item.data[0].buildingBasicGroups.pop()
}
}else{
const config = new MatSnackBarConfig();
@@ -764,135 +574,6 @@ export class BasicinfoLookComponent implements OnInit {
this.snackBar.open('只剩唯一储罐,无法删除','确定',config);
}
}
-
- //新建建筑时把原始建筑数据放进来进行加工处理成可用数据
- async changebuildingdata(data){
- let n = data
- let yyy
- let result = await new Promise(resolve=>{
- this.http.get("/api/BuildingBasicInfos",{ // 需要请求建筑信息的模板
- params:{
- companyId : this.unitId,
- buildingId:data.id,
- buildingType:data.buildingTypes[0].id
- }
- }).subscribe((data)=>{//此时的data才是模板详细信息
- let _data = data
- this.http.get("/api/BuildingCustomData",{params:{ //-----处理建筑自定义属性部分
- buildingId:n.id
- }}).subscribe(data=>{
- if(data){
- _data[0].isCustomData = true //如果data存在则把自定义属性isCustomData设为true
- _data[0].buildingCustomData = data //把建筑自定义信息赋给buildingCustomData自定义属性
- }else{
- _data[0].isCustomData = false
- _data[0].buildingCustomData ={ //否则设为false,并且把自定义信息属性赋值为空
- id: "",
- customProperties: [
- {
- name: "",
- value: ""
- }
- ],
- buildingId: _data[0].buildingId
- }
- }
- })
- data[0].buildingtypeId = n.buildingTypes[0].id
- data[0].buildtype = n.buildingTypes[0].name
- data[0].name = n.name
- data[0].username = n.name
- data[0].tongyong = true
- data[0].index = this.houses.length //////////////////
- if(data[0].buildtype.indexOf("储罐") != -1 || data[0].buildtype.indexOf("化工") != -1 ){
- data[0].tongyong = false
- data[0].isshiyou = true //如果是石油化工则启用石油化工的模板
- this.deviceinfodata = data[0].buildingBasicGroups[1].propertyInfos //存储装置信息表格的初始数据,需要转换成datasource形式
- var map = []
- this.deviceinfodata.forEach((item,index) => {
- if(item.tag == ""){
- item.tag = "1"
- }
- if(!(item.tag in map)){
- map[item.tag] = []
- }
- map[item.tag].push(item)
- });
- let zhuangzhiinfodatasource = []
- map.forEach((item,index)=>{
- zhuangzhiinfodatasource[index] = {}
- item.forEach(i => {
- if (i.propertyName == "装置区名称") {
- zhuangzhiinfodatasource[index].name = i.propertyValue
- }
- if (i.propertyName == "工艺流程") {
- zhuangzhiinfodatasource[index].flow = i.propertyValue
- }
- if (i.propertyName == "火灾危险性") {
- zhuangzhiinfodatasource[index].danger = i.propertyValue
- }
- if (i.propertyName == "灭火注意事项") {
- zhuangzhiinfodatasource[index].payattentionto = i.propertyValue
- }
- });
- })
- this.newzhuangzhiinfodatasource =[] //数据去空
- zhuangzhiinfodatasource.forEach(item=>{
- if(item !== "" && item != undefined){
- this.newzhuangzhiinfodatasource.push(item)
- }
- })
- this.devicedataSourcebox[data[0].buildingId] = new MatTableDataSource(this.newzhuangzhiinfodatasource) //强制渲染表格
- data[0].newzhuangzhiinfodatasource = this.newzhuangzhiinfodatasource
-
-
- //把bigfor分组取出来 先大循环 (储罐信息---储罐信息/罐区情况)为一组
- let bigtankgroups = data[0].buildingBasicGroups.slice(2)
- let proportion = 2; //按照比例切割
- let num = 0;
- let bigfor =[];
- for(let i=0;i{
- item[1].propertyInfos.forEach(item => {
- if(item.tag == ""){
- item.tag = 1
- }
- });
- item[1].propertyInfos = this.formatHandle(item[1].propertyInfos)
- })
- data[0].bigfor = bigfor
- }
- if(data[0].buildtype == "地铁类"){
- data[0].tongyong = true
- // data[0].ditie = true
- }
- yyy = data[0]
- resolve(yyy)
- })
- })
- return result
- }
-
-
-
- //点击不同的tab选项
- selecttab(e) {
- }
-
FunData(e){//切割数组
let proportion = 2; //按照比例切割
let num = 0;
@@ -912,7 +593,6 @@ export class BasicinfoLookComponent implements OnInit {
//点击辖区中队树,将选择的辖区中队添加到变量
add(node) {
- // console.log(node)
this.selectedorganizationid = node.id
this.isorganizationbox = false
@@ -937,13 +617,11 @@ export class BasicinfoLookComponent implements OnInit {
this.selectedorganization = str.substr(1)
}
-}
-
+ }
//关闭辖区中队隐藏框
closeorganizationbox() {
this.isorganizationbox = false
}
-
//打开辖区中队隐藏框
openorganizationbox() {
this.isorganizationbox = true
@@ -951,8 +629,8 @@ export class BasicinfoLookComponent implements OnInit {
hasChild = (_: number, node: any) => node.expandable;
- // imgsrc = "../../../assets/upload.jpg" //没有上传图片时显示的图片,当上传后就会被替换,即保存时需要传的图片地址参数
- imgsrc = ""
+ imgsrc = "" //没有上传图片时显示的图片,当上传后就会被替换,即保存时需要传的图片地址参数
+ noImg = '../../../assets/images/upload.jpg'
imgUrl = ""//返回来的图片地址后缀
file: any; //上传的文件
objectName: any; //上传对象名
@@ -979,7 +657,7 @@ export class BasicinfoLookComponent implements OnInit {
this.startUploading()
}
}
-
+
}, 500);
}
//查看单位大图
@@ -990,7 +668,7 @@ export class BasicinfoLookComponent implements OnInit {
data: {img:this.imgsrc}
});
dialogRef.afterClosed().subscribe(
-
+
);
}
//上传文件
@@ -1024,10 +702,7 @@ export class BasicinfoLookComponent implements OnInit {
}
}
-
-
-
- //小于5MB不需要分块上传
+ //小于5MB不需要分块上传
upload(){
this.uploader.queue[0].upload();//开始上传
this.uploader.queue[0].onSuccess = (response, status, headers) => {
@@ -1055,7 +730,7 @@ export class BasicinfoLookComponent implements OnInit {
}
};
}
-
+
//开始分块上传
async subsectionUploading () {
let file = this.file || null //获取上传的文件
@@ -1098,17 +773,22 @@ export class BasicinfoLookComponent implements OnInit {
})
}
//删除具体建筑
- deletedbuilding(item){
+ selectedIndex
+ deletedbuilding(item,key){
+ // console.log(item)
var isdeleted = confirm("确定要删除此建筑吗?")
if(isdeleted){
- //请求删除接口
- this.http.delete(`/api/Buildings/${item.buildingId}`).subscribe(data=>{
-
+ // console.log(key)
+ // 请求删除接口
+ this.http.delete(`/api/Buildings/${item.id}`).subscribe(data=>{
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
this.snackBar.open('删除成功','确定',config);
this.houses.splice(this.houses.findIndex(items=>items==item),1)
+
+ let obj ={index:key}
+ this.selectedTabChange(obj)
})
}
}
@@ -1131,10 +811,7 @@ export class BasicinfoLookComponent implements OnInit {
phone: value.linkphone,
address: value.unitaddress,
imageUrl: this.imgsrc,
- location: {
- x: 0,
- y: 0
- },
+ location: this.markerPosition,
modifiedTime: time,
organizationId: this.selectedorganizationid,
organizationName: null,
@@ -1145,45 +822,45 @@ export class BasicinfoLookComponent implements OnInit {
}
]
}
- this.http.put(`/api/Companies/${this.unitId}`,body).subscribe((data:any)=>{ //修改单位基本信息
- this.getunitinfo()
- if(!this.houses.length){
- const config = new MatSnackBarConfig();
- config.verticalPosition = 'top';
- config.duration = 3000
- this.snackBar.open('单位基本信息保存成功,请填写单位建筑模板信息','确定',config);
- // alert("单位基本信息保存成功,请填写单位建筑模板信息")
- let order = 0
- let addbody = { //请求创建单位基本信息成功后 直接创建出一个主体建筑模板
- id: "",//即将要生成具体建筑的id
- name: "主体建筑",
- order: order,
- enabled: true,
- companyId: this.unitinfo.id,
- buildingTypes: [
- {
- id: value.unittype,
- name: ""
- }
- ]
+ this.http.put(`/api/Companies/${this.unitId}`,body).subscribe((data:any)=>{ //修改单位基本信息
+ // this.getunitinfo()
+ if(!this.houses.length){
+ const config = new MatSnackBarConfig();
+ config.verticalPosition = 'top';
+ config.duration = 3000
+ this.snackBar.open('单位基本信息保存成功,请填写单位建筑模板信息','确定',config);
+ // alert("单位基本信息保存成功,请填写单位建筑模板信息")
+ let addbody = { //请求创建单位基本信息成功后 直接创建出一个主体建筑模板
+ id: "",//即将要生成具体建筑的id
+ name: "主体建筑",
+ order: 0,
+ enabled: true,
+ companyId: this.unitinfo.id,
+ buildingTypes: [
+ {
+ id: value.unittype,
+ name: ""
+ }
+ ]
+ }
+ this.http.post("/api/Buildings",addbody).subscribe(data=>{//首先创建建筑成功了,需要刷出当前建筑类型的模板
+ // alert('创建主体建筑成功')
+ this.getUnitAllBuildings()
+ })
+ }else{
+ const config = new MatSnackBarConfig();
+ config.verticalPosition = 'top';
+ config.duration = 3000
+ this.snackBar.open('保存成功','确定',config);
+ }
+ }),
+ err=>{
+ const config = new MatSnackBarConfig();
+ config.verticalPosition = 'top';
+ config.duration = 3000
+ this.snackBar.open('请填写正确信息','确定',config);
}
- this.http.post("/api/Buildings",addbody).subscribe(data=>{//首先创建建筑成功了,需要刷出当前建筑类型的模板
- this.getunitallbuilding()
- })
- }else{
- const config = new MatSnackBarConfig();
- config.verticalPosition = 'top';
- config.duration = 3000
- this.snackBar.open('保存成功','确定',config);
- }
- }),
- err=>{
- const config = new MatSnackBarConfig();
- config.verticalPosition = 'top';
- config.duration = 3000
- this.snackBar.open('请填写正确信息','确定',config);
}
- }
}
@@ -1192,8 +869,6 @@ export class BasicinfoLookComponent implements OnInit {
isshowrule:boolean = false
rulevalue:any
inputchange(e,name,value,item){
- // console.log(e.target.value,name,value,item)
- // console.log(item)
if(name == "≥"){
if(Number(e.target.value)< Number(value)){
item.isshowrule = true
@@ -1221,923 +896,217 @@ export class BasicinfoLookComponent implements OnInit {
}
}
}
+
+ //可选按钮
+ checkboxChange(item,$event,buildingData){
+ // console.log(item)
+ if(item.name == '罐区1'){
+ // console.log(buildingData)
+ buildingData.data[0].buildingBasicGroups.forEach(element => {
+ if(element.name.indexOf('罐区') != -1){
+ element.submitted = item.submitted
+ }
+ });
+ }
+ }
+
+ //建筑自定义信息按钮
+ checkCustomData($event){
+
+ }
+
- //切换建筑类型
- templatebuildtype(n ,item,key){
- this.http.get("/api/Buildings",{
- params:{
- companyId:this.unitId
- }
- }).subscribe((data:any)=>{
- this.allBuildings = data
- this.http.put(`/api/Buildings/${item.buildingId}`,{ //修改当前建筑类型
- id: item.buildingId,
- name: item.housename,
- order: this.allBuildings[key].order,
+ //提交建筑信息
+ onSubmitBuildingInfo(value,item,key,invalid){
+ // console.log(1,item)
+ // console.log(2,invalid)
+ // console.log(3,value)
+ // console.log(4,this.allunittype)
+ if(invalid){
+ const config = new MatSnackBarConfig();
+ config.verticalPosition = 'top';
+ config.duration = 3000
+ this.snackBar.open('请填写必填项','确定',config);
+ }else {
+ //先把名称和建筑类型单独修改
+ let buildingTypeId
+ this.allunittype.forEach(element => {
+ element.name == item.buildingTypes[0].name ? buildingTypeId = element.id : null
+ });
+ this.http.put(`/api/Buildings/${item.id}`,{ //(通用)只修改建筑名称和建筑类型
+ id: item.id,
+ name: value.buildingName,
+ order: this.houses[key].order,
enabled: true,
companyId: this.unitinfo.id,
buildingTypes: [
{
- id: n.id,
- name: n.name
- }
- ]
- }).subscribe(data=>{
- this.http.get("/api/BuildingBasicInfos",{//请求当前建筑类型的模板信息保存到数组中
- params:{
- companyId :this.unitId,
- buildingId:item.buildingId,
- buildingType:n.id
+ id: buildingTypeId,
+ name: item.buildingTypes[0].name
}
- }).subscribe(data=>{
- this.getunithouse(data,n,item)
- this.houses[item.index] = data[0]
-
- let _data = data
- this.http.get("/api/BuildingCustomData",{params:{
- buildingId:item.buildingId
- }}).subscribe((data:any)=>{
- _data[0].buildingCustomData = data
- if(data && data.customProperties.length != 0){
- _data[0].isCustomData = true
- }else{
- _data[0].isCustomData = false
- _data[0].buildingCustomData ={
- id: "",
- customProperties: [
- {
- name: "",
- value: ""
- }
- ],
- buildingId: _data[0].buildingId
- }
- }
- })
- })
+ ]
+ },{
+ params:{
+ companyId : this.unitId
+ }
+ }).subscribe((data:any)=>{
+ // alert("名称和类型保存成功")
+ },
+ err=>{
+ alert("名称和类型保存失败")
})
- })
-
- }
-
- deviceinfo=[] //用于存储石头化工的第一个表格
- //提交单位模板信息
- onSubmit2(value,item,key,invalid){
- this.http.get("/api/Buildings",{
- params:{
- companyId:this.unitId
- }
- }).subscribe((data:any)=>{
- this.allBuildings = data
- if(invalid){
- const config = new MatSnackBarConfig();
- config.verticalPosition = 'top';
- config.duration = 3000
- this.snackBar.open('请填写必填项','确定',config);
- }else{
- this.http.put(`/api/Buildings/${item.buildingId}`,{ //(通用)只修改建筑名称和建筑类型
- id: item.buildingId,
- name: value.housename,
- order: this.allBuildings[key].order,
- enabled: true,
- companyId: this.unitinfo.id,
- buildingTypes: [
- {
- id: item.buildingtypeId,
- name: item.buildtype
- }
- ]
- }).subscribe((data:any)=>{
- this.houses[item.index].username = item.name
- },
- err=>{
- alert("名称和类型保存失败")
- })
-
- if(value.checkbuilding){//如果勾选了自定义信息的checkbox
- var CustomDataval = []
- for (const key in value) {
- if (key.indexOf("CustomData") != -1) {
- CustomDataval.push(value[key])
- }
+ let newbody = JSON.parse(JSON.stringify(item.data)) //把数据深拷贝取出来进行操作
+ for (let index = 0; index < newbody[0].buildingBasicGroups.length; index++) {
+ let element = newbody[0].buildingBasicGroups[index];
+ element.propertyInfos.forEach(item => {
+ if(!element.isOptional){
+ item.propertyValue ? element.submitted = true : null
}
- let newCustomData = this.FunData(CustomDataval)
- let newCustomDataval = []
- newCustomData.forEach(n=>{
- newCustomDataval.push({
- name:n[0],
- value:n[1]
- })
- })
- let CustomDatabody = {
- id: "",
- customProperties: newCustomDataval,
- buildingId: item.buildingId
+ //删除规则验证标识
+ item.isshowrule ? delete item.isshowrule : null
+ item.rulevalue ? delete item.rulevalue : null
+ if(item.propertyValue || item.propertyValue == 0){
+ item.propertyValue = String(item.propertyValue)
}
- this.http.post("/api/BuildingCustomData",CustomDatabody,{params:{
- buildingId:item.buildingId
- }}).subscribe(data=>{
+ });
+ //如果是表格需要转换为一维数组
+ if(element.type == 1){
+ let arr = []
+ for (let index = 0; index < element.propertyInfos.length; index++) {
+ const ele = element.propertyInfos[index];
- },
- err=>{
- alert("自定义信息保存失败")
- })
- }else{
- let CustomDatabody = {
- id: "",
- customProperties: [],
- buildingId: item.buildingId
+ for (let index = 0; index < ele.origin.length; index++) {
+ const i = ele.origin[index];
+ i.tag = String(i.tag)
+
+ if(!element.isOptional){
+ i.propertyValue ? element.submitted = true : null
+ }
+ arr.push(i)
+ }
}
- this.http.post("/api/BuildingCustomData",CustomDatabody,{params:{
- buildingId:item.buildingId
- }}).subscribe(data=>{
-
- },
- err=>{
- alert("自定义信息保存失败")
+ for (let index = 0; index < arr.length; index++) {
+ const i = arr[index];
+ i.order = index
+ }
+ element.propertyInfos = arr
+ }
+ //如果当前分组没勾选 则需先去重然后重置每一个value为空
+ if(!element.submitted){
+ const res = new Map();
+ element.propertyInfos = element.propertyInfos.filter((a) => !res.has(a.propertyName) && res.set(a.propertyName, 1))
+ element.propertyInfos.forEach(ele => {
+ ele.propertyValue = ""
})
}
-
-
- if(item.buildtype.indexOf("储罐") == -1 && item.buildtype != "地铁类" && item.buildtype.indexOf("化工") == -1 ){
- // console.log(this.houses[key])
- // console.log(value)
- this.houses[key].buildingBasicGroups[0].propertyInfos.forEach(item => {
-
- if(item.propertyValue || item.propertyValue == 0){
- // item.propertyValue = "" + value[key]
- item.propertyValue = String(item.propertyValue)
- }
-
- });
- let newObj = _.cloneDeep(this.houses[key]) //把数据深拷贝取出来进行操作
- newObj.buildingBasicGroups[0].buildingId = item.buildingId
- newObj.buildingBasicGroups[0].companyId = this.unitinfo.id
- newObj.buildingBasicGroups[0].submitted = true //把是否提交过变为true
- delete newObj.name
- delete newObj.username
- delete newObj.buildtype
- delete newObj.tongyong
- delete newObj.index
- delete newObj.isCustomData
- delete newObj.buildingCustomData
- newObj.buildingBasicGroups[0].propertyInfos.forEach(item => {
- delete item.isshowrule
- delete item.rulevalue
- });
-
- let body = newObj
- let newbody = []
- newbody.push(body)
- if(newbody[0].buildingBasicGroups.length){
- this.http.post("/api/BuildingBasicInfos",newbody,{
- params:{
- companyId : this.unitId,
- buildingId :newbody[0].buildingId
- }
- }).subscribe((data:any)=>{
- this.houses[key].id = data[0].id
- const config = new MatSnackBarConfig();
- config.verticalPosition = 'top';
- config.duration = 3000
- this.snackBar.open('建筑信息保存成功','确定',config);
- },
- err=>{
- const config = new MatSnackBarConfig();
- config.verticalPosition = 'top';
- config.duration = 3000
- this.snackBar.open('请检查输入数据是否有误','确定',config);
- })
- }
+ //如果灌区没勾选 并且包含罐区且不包含罐区1的清除 需要把多余罐区2 3 4清除掉再提交
+ if(!element.submitted && element.name.indexOf('罐区1') == -1 && element.name.indexOf('罐区') != -1){
+ newbody[0].buildingBasicGroups.splice(index--, 1);
}
- if(item.buildtype.indexOf("储罐") != -1 || item.buildtype.indexOf("化工") != -1 ){
- // console.log(888,item)
- let bodyObj = _.cloneDeep(item)
- delete bodyObj.name
- delete bodyObj.username
- delete bodyObj.isshiyou
- delete bodyObj.newzhuangzhiinfodatasource
- delete bodyObj.tongyong
- delete bodyObj.buildtype
- delete bodyObj.buildingtypeId
- delete bodyObj.bigfor
- delete bodyObj.index
- delete bodyObj.isCustomData
- delete bodyObj.buildingCustomData
- // console.log(456,bodyObj)
- bodyObj.buildingBasicGroups[0].propertyInfos.forEach(item => {
- delete item.isshowrule
- delete item.rulevalue
- });
- //修改基本信息
- bodyObj.buildingBasicGroups[0].propertyInfos.forEach(item => {
- for (const key in value) {
- if (item.propertyName == key) {
- if(item.propertyValue || item.propertyValue == 0){
- // item.propertyValue = "" + value[key]
- item.propertyValue = String(value[key])
- }
-
- }
- }
- });
- bodyObj.buildingBasicGroups[0].submitted = true
- bodyObj.buildingBasicGroups[0].buildingId = item.buildingId
- bodyObj.buildingBasicGroups[0].companyId = this.unitinfo.id
- //石油化工类的 装置信息 就提交这个表单——————————————————————————————this.deviceinfo 记得清空
- // console.log(this.deviceinfodata)
- if(bodyObj.buildingBasicGroups[1].submitted){ //如果用户点击了并填写了装置信息就提交这个表格数据
- this.deviceinfo = []
- item.newzhuangzhiinfodatasource.forEach((element,index) => {
- this.deviceinfo.push({
- propertyName: "装置区名称",
- propertyValue: element.name,
- propertyType: 0,
- required: true,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order:0,
- enabled: true,
- visible: true,
- tag: String(index + 1)
- },
- {
- propertyName: "工艺流程",
- propertyValue: element.flow,
- propertyType: 0,
- required: true,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order:1,
- enabled: true,
- visible: true,
- tag: String(index + 1)
- },
- {
- propertyName: "火灾危险性",
- propertyValue: element.danger,
- propertyType: 0,
- required: true,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order:2,
- enabled: true,
- visible: true,
- tag: String(index + 1)
- },
- {
- propertyName: "灭火注意事项",
- propertyValue: element.payattentionto,
- propertyType: 1,
- required: false,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order:3,
- enabled: true,
- visible: true,
- tag: String(index + 1)
- })
- });
- }else{//否则就传一个空的
- this.deviceinfo = [
- {
- propertyName: "装置区名称",
- propertyValue: "",
- propertyType: 0,
- required: true,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag: "1"
- },
- {
- propertyName: "工艺流程",
- propertyValue: "",
- propertyType: 0,
- required: true,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag: "1"
- },
- {
- propertyName: "火灾危险性",
- propertyValue: "",
- propertyType: 0,
- required: true,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag: "1"
- },
- {
- propertyName: "灭火注意事项",
- propertyValue: "",
- propertyType: 1,
- required: false,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag: "1"
- }
- ]
- }
- bodyObj.buildingBasicGroups[1].propertyInfos = this.deviceinfo
- bodyObj.buildingBasicGroups[1].buildingId = item.buildingId
- bodyObj.buildingBasicGroups[1].companyId = this.unitinfo.id
-
-
- if(bodyObj.buildingBasicGroups[2].submitted){ //如果勾选了储罐信息 则直接提交当前bodyObj
- var map = {}; //用于存储石油化工要提交的储罐信息表单
- for (let key in value) {
- if (key.indexOf('tanker') != -1) {
- const list = key.split('-'); // 2,tanker,1
- const orderKey = list[0]; // 2 or 3
- if (!(orderKey in map)) {
- map[orderKey] = []; // map[2] or map[3] = [];
- }
- map[orderKey][list[2]] = value[key]; // map[2][1] = xxxxx
- }
- }
-
- bodyObj.buildingBasicGroups.splice( 2 , bodyObj.buildingBasicGroups.length)
-
- // console.log(123, item)
-
- let basictankinfobody:any = {}
-
- for(let key in map){//------------------------------------------------------------石油化工 储罐信息
-
-
- basictankinfobody = {
- id: null,
- name: "罐区" + (Number(key)-1),
- type: 0,
- addMode: 2,
- basicGroupId:'',
- submitted:true,
- isOptional:true,
- order: Number(key),
- enabled: true,
- propertyInfos: item.bigfor[Number(key)-2][0].propertyInfos,
- basicCategoryId: item.basicCategoryId,
- buildingBasicId: null,
- buildingId: item.buildingId,//当前建筑id
- companyId: this.unitinfo.id//当前企业id
- }
-
- bodyObj.buildingBasicGroups.push(basictankinfobody)
- }
-
-
- let basictankchildinfobody:any = []//-------------后续储罐信息以及储罐信息/罐区情况都push到这个数组中
- item.bigfor.forEach(item => {
- basictankchildinfobody.push(item[1].propertyInfos)
- });
- var _item = item
- basictankchildinfobody.forEach((item,index) => {
- let tankfieldArr = []
- item.forEach((element,key) => {
- tankfieldArr.push(
- {
- propertyName: "罐区",
- propertyValue: element.tank,
- propertyType: 0,
- required: false,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag:String(key + 1)
- },
- {
- propertyName: "储罐编号",
- propertyValue: element.tankid,
- propertyType: 0,
- required: true,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag:String(key + 1)
- },
- {
- propertyName: "储存介质",
- propertyValue: element.tankmedium,
- propertyType: 0,
- required: true,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag:String(key + 1)
- },
- {
- propertyName: "储罐类型",
- propertyValue: element.tanktype,
- propertyType: 0,
- required: true,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag:String(key + 1)
- },
- {
- propertyName: "容量",
- propertyValue: element.tankcapacity,
- propertyType: 2,
- required: true,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "㎡",
- order: 0,
- enabled: true,
- visible: true,
- tag:String(key + 1)
- },
- {
- propertyName: "直径",
- propertyValue:element.tankdiameter,
- propertyType: 2,
- required: true,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "m",
- order: 0,
- enabled: true,
- visible: true,
- tag:String(key + 1)
- },
- {
- propertyName: "高度",
- propertyValue: element.tankheight,
- propertyType: 2,
- required: true,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "m",
- order: 0,
- enabled: true,
- visible: true,
- tag:String(key + 1)
- },
- {
- propertyName: "顶盖形式",
- propertyValue: element.tanktectum,
- propertyType: 0,
- required: false,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag:String(key + 1)
- },
- {
- propertyName: "浮盘材质",
- propertyValue: element.tanktexture,
- propertyType: 0,
- required: false,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag:String(key + 1)
- },
- {
- propertyName: "浮盘类型",
- propertyValue: element.platetype,
- propertyType: 0,
- required: false,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag:String(key + 1)
- },
- {
- propertyName: "泡沫产生器型号",
- propertyValue: element.foamgeneratorid,
- propertyType: 0,
- required: false,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag:String(key + 1)
- },
- {
- propertyName: "泡沫产生器形式",
- propertyValue: element.foamgeneratortype,
- propertyType: 0,
- required: false,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag:String(key + 1)
- },
- {
- propertyName: "是否设置氮封惰化保护装置",
- propertyValue: element.isprotect,
- propertyType: 0,
- required: false,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag:String(key + 1)
- },
- {
- propertyName: "防护堤高度",
- propertyValue: element.fendinggroyneheight,
- propertyType: 2,
- required: true,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "m",
- order: 0,
- enabled: true,
- visible: true,
- tag:String(key + 1)
- },
- {
- propertyName: "半固定泡沫灭火接口数量",
- propertyValue: element.portnum,
- propertyType: 2,
- required: false,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "个",
- order: 0,
- enabled: true,
- visible: true,
- tag:String(key + 1)
- },
- {
- propertyName: "其它设施",
- propertyValue: element.else,
- propertyType: 0,
- required: false,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag:String(key + 1)
- }
- )
- });
- basictankchildinfobody={//
- id: null,
- name: "罐区" + Number(index+1) + "/储罐信息",
- type: 1,
- addMode: 2,
- basicGroupId:'',
- order: Number(index + 2),
- enabled: true,
- submitted:true,
- isOptional:true,
- propertyInfos: tankfieldArr,
- basicCategoryId: _item.basicCategoryId,
- buildingBasicId: null,
- buildingId: _item.buildingId,
- companyId: this.unitinfo.id
- }
- bodyObj.buildingBasicGroups.push(basictankchildinfobody)
- });
- }else{
-
-
- bodyObj.buildingBasicGroups[2].buildingId = item.buildingId
- bodyObj.buildingBasicGroups[2].companyId = this.unitinfo.id
- bodyObj.buildingBasicGroups[2].propertyInfos.forEach(item=>{
- item.propertyValue = ""
- })
- bodyObj.buildingBasicGroups[3].buildingId = item.buildingId
- bodyObj.buildingBasicGroups[3].companyId = this.unitinfo.id
- bodyObj.buildingBasicGroups[3].propertyInfos = [
- {
- propertyName: "罐区",
- propertyValue: "",
- propertyType: 0,
- required: false,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag:"1"
- },
- {
- propertyName: "储罐编号",
- propertyValue: "",
- propertyType: 0,
- required: true,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag:"1"
- },
- {
- propertyName: "储存介质",
- propertyValue: "",
- propertyType: 0,
- required: true,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag:"1"
- },
- {
- propertyName: "储罐类型",
- propertyValue:"",
- propertyType: 0,
- required: true,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag:"1"
- },
- {
- propertyName: "容量",
- propertyValue: "",
- propertyType: 2,
- required: true,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "㎡",
- order: 0,
- enabled: true,
- visible: true,
- tag:"1"
- },
- {
- propertyName: "直径",
- propertyValue:"",
- propertyType: 2,
- required: true,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "m",
- order: 0,
- enabled: true,
- visible: true,
- tag:"1"
- },
- {
- propertyName: "高度",
- propertyValue: "",
- propertyType: 2,
- required: true,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "m",
- order: 0,
- enabled: true,
- visible: true,
- tag:"1"
- },
- {
- propertyName: "顶盖形式",
- propertyValue: "",
- propertyType: 0,
- required: false,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag:"1"
- },
- {
- propertyName: "浮盘材质",
- propertyValue:"",
- propertyType: 0,
- required: false,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag:"1"
- },
- {
- propertyName: "浮盘类型",
- propertyValue: "",
- propertyType: 0,
- required: false,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag:"1"
- },
- {
- propertyName: "泡沫产生器型号",
- propertyValue:"",
- propertyType: 0,
- required: false,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag:"1"
- },
- {
- propertyName: "泡沫产生器形式",
- propertyValue: "",
- propertyType: 0,
- required: false,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag:"1"
- },
- {
- propertyName: "是否设置氮封惰化保护装置",
- propertyValue:"",
- propertyType: 0,
- required: false,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag:"1"
- },
- {
- propertyName: "防护堤高度",
- propertyValue:"",
- propertyType: 2,
- required: true,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "m",
- order: 0,
- enabled: true,
- visible: true,
- tag:"1"
- },
- {
- propertyName: "半固定泡沫灭火接口数量",
- propertyValue: "",
- propertyType: 2,
- required: false,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "个",
- order: 0,
- enabled: true,
- visible: true,
- tag:"1"
- },
- {
- propertyName: "其它设施",
- propertyValue: "",
- propertyType: 0,
- required: false,
- ruleName: "",
- ruleValue: "",
- physicalUnit: "",
- order: 0,
- enabled: true,
- visible: true,
- tag:"1"
- }
- ]
- // console.log(888,bodyObj)
- bodyObj.buildingBasicGroups.splice(4,bodyObj.buildingBasicGroups.length)
+ }
+ // console.log('newbody',newbody)
+ this.http.post("/api/BuildingBasicInfos",newbody,{
+ params:{
+ companyId : this.unitId,
+ buildingId :newbody[0].buildingId
}
-
+ }).subscribe((data:any)=>{
+ // this.houses[key].id = data[0].id
+ const config = new MatSnackBarConfig();
+ config.verticalPosition = 'top';
+ config.duration = 3000
+ this.snackBar.open('建筑信息保存成功','确定',config);
+ },
+ err=>{
+ const config = new MatSnackBarConfig();
+ config.verticalPosition = 'top';
+ config.duration = 3000
+ this.snackBar.open('请检查输入数据是否有误','确定',config);
+ })
+
+ //保存建筑自定义信息
+ if(item.isCustomData){
+ this.http.post("/api/BuildingCustomData",item.customData,{params:{
+ companyId :this.unitId,
+ buildingId:item.id
+ }}).subscribe(data=>{
-
- let newbodyObj = []
- newbodyObj.push(bodyObj)
- // console.log(1111,newbodyObj)
- this.http.post("/api/BuildingBasicInfos",newbodyObj,{
- params:{
- companyId : this.unitId,
- buildingId :item.buildingId
- }
- }).subscribe((data:any)=>{
- this.houses[key].id = data[0].id
- const config = new MatSnackBarConfig();
- config.verticalPosition = 'top';
- config.duration = 3000
- this.snackBar.open('建筑信息保存成功','确定',config);
- // alert("建筑信息保存成功")
- },
- err=>{
- const config = new MatSnackBarConfig();
- config.verticalPosition = 'top';
- config.duration = 3000
- this.snackBar.open('请检查输入数据是否有误','确定',config);
- })
+ })
+ }else{
+ item.customData.customProperties = []
+ this.http.post("/api/BuildingCustomData",item.customData,{params:{
+ companyId :this.unitId,
+ buildingId:item.id
+ }}).subscribe(data=>{
+
+ })
+ }
+
+ }
+ }
+ //更改模板类型
+ templateBuildtype(n,item,key){
+ this.http.get("/api/BuildingBasicInfos",{//请求当前建筑类型的模板信息保存到数组中
+ params:{
+ companyId :this.unitId,
+ buildingId:item.id,
+ buildingType:n.id
+ }
+ }).subscribe(data=>{
+ data[0].buildingBasicGroups.forEach(element => {
+ //需要处理一下表格信息
+ if(element.type == 1){
+ let afterData = []
+ let tempArr = [];
+ for (let i = 0; i < element.propertyInfos.length; i++) {
+ element.propertyInfos[i].tag == '' ? element.propertyInfos[i].tag = 1 : null
+ if (tempArr.indexOf(element.propertyInfos[i].tag) === -1) {
+ afterData.push({
+ tag: element.propertyInfos[i].tag,
+ origin: [element.propertyInfos[i]]
+ });
+ tempArr.push(element.propertyInfos[i].tag);
+ } else {
+ for (let j = 0; j < afterData.length; j++) {
+ if (afterData[j].tag == element.propertyInfos[i].tag) {
+ afterData[j].origin.push(element.propertyInfos[i]);
+ break;
+ }
+ }
+ }
+ }
+ element.propertyInfos = afterData
+ }
+ });
+ let guanquIndex = data[0].buildingBasicGroups.findIndex(item => item.name.indexOf('罐区')>=0); // 找到第一个灌区的索引
+ function transferFn(arr) {
+ const guanquIndex = arr.findIndex(item => item.name.indexOf('罐区')>=0); // 找到第一个灌区的索引
+ const guanquList = arr.slice(guanquIndex); // 灌区的列表
+ const baseList = arr.slice(0, guanquIndex); // 前面的数据
+ const len = guanquList.length;
+ const num = len/2; // 计算一共有多少对,这里的前提是数据本身必须成对出现
+ // 灌区切割出来的数据,分别存放,最后做一下合并
+ const array1 = [];
+ const array2 = [];
+ for(let i = 0; i {
- item.propertyInfos.forEach(element => {
- delete element.isshowrule
- delete element.rulevalue
- if( element.propertyValue || element.propertyValue == 0){
- element.propertyValue = String(element.propertyValue)
- }
- });
- item.buildingId = newObj.buildingId
- item.companyId = this.unitinfo.id
- item.submitted = true
- });
- let newbodyObj2 = []
- newbodyObj2.push(newObj)
- this.http.post("/api/BuildingBasicInfos",newbodyObj2,{
- params:{
- companyId : this.unitId,
- buildingId :newObj.buildingId
+ // 拼接最后的数据
+ const result = [...baseList];
+ for(let i = 0, ll = array1.length; i < ll; i++){
+ result.push(array1[i]);
+ if (array2[i]) {
+ result.push(array2[i]);
}
- }).subscribe((data:any)=>{
- this.houses[key].id = data[0].id
- const config = new MatSnackBarConfig();
- config.verticalPosition = 'top';
- config.duration = 3000
- this.snackBar.open('建筑信息保存成功','确定',config);
- },
- err=>{
- const config = new MatSnackBarConfig();
- config.verticalPosition = 'top';
- config.duration = 3000
- this.snackBar.open('请检查输入数据是否有误','确定',config);
- })
-
}
+ return result;
+ }
+ if(guanquIndex != -1 && data[0].buildingBasicGroups[guanquIndex + 1].name.indexOf(data[0].buildingBasicGroups[guanquIndex].name) == -1){
+ data[0].buildingBasicGroups = transferFn(data[0].buildingBasicGroups)
}
+ this.houses[key].data = data
})
-
-
- }}
\ No newline at end of file
+ }
+}
\ No newline at end of file
diff --git a/src/app/key-unit/basicinfo-look/lookmaster.component.html b/src/app/key-unit/basicinfo-look/lookmaster.component.html
index 9cf352f..674e8f4 100644
--- a/src/app/key-unit/basicinfo-look/lookmaster.component.html
+++ b/src/app/key-unit/basicinfo-look/lookmaster.component.html
@@ -4,7 +4,7 @@
![]()
-
+
@@ -14,4 +14,13 @@
+
+
+
+
+
diff --git a/src/app/key-unit/basicinfo/addhouseinfo.component.ts b/src/app/key-unit/basicinfo/addhouseinfo.component.ts
index e888232..0207384 100644
--- a/src/app/key-unit/basicinfo/addhouseinfo.component.ts
+++ b/src/app/key-unit/basicinfo/addhouseinfo.component.ts
@@ -21,7 +21,6 @@ import { MatSnackBar } from '@angular/material/snack-bar';
this.dialogRef.close();
}
ngOnInit(): void {
- // console.log(this.data)
this.getallunittype()
}
getallunittype(){
@@ -30,27 +29,24 @@ import { MatSnackBar } from '@angular/material/snack-bar';
})
}
onSubmit(value){
-
this.http.get("/api/Buildings",{
params:{
companyId:this.data.unitId
}
}).subscribe((data:any)=>{
- this.data.allBuildings = data
+ let allBuildings = data
let order
- if(data.length == 0){
+ if(allBuildings.length == 0){
order = 0
}else{
- order = data[data.length - 1].order + 1
+ order = allBuildings[allBuildings.length-1].order + 1
}
-
let buildingTypename = ""
this.allunittype.forEach(item => {
if(item.id == value.unittype){
buildingTypename = item.name
}
});
-
this.http.post("/api/Buildings",{
id: "",
name: value.name,
@@ -68,10 +64,12 @@ import { MatSnackBar } from '@angular/material/snack-bar';
}}).subscribe(data=>{
this.dialogRef.close(data);
})
+
})
-
+
+
}
}
\ No newline at end of file
diff --git a/src/app/key-unit/basicinfo/basicinfo.component.html b/src/app/key-unit/basicinfo/basicinfo.component.html
index 85224ea..bd4b66c 100644
--- a/src/app/key-unit/basicinfo/basicinfo.component.html
+++ b/src/app/key-unit/basicinfo/basicinfo.component.html
@@ -1,11 +1,10 @@
-
+
-
+
单位信息
- keyboard_arrow_down
@@ -66,7 +65,7 @@
*
- 消防救援站:
+ 辖区中队:
-
+
单位照片:
-
-
+
@@ -124,6 +122,7 @@
+
@@ -160,61 +159,56 @@
-
-
-
-
-
-
-
- |