From c4340e62dcfd8cd891a8c64f246741a661d6f7fe Mon Sep 17 00:00:00 2001 From: SHAOJIAHAO <55341701@qq.com> Date: Wed, 4 Nov 2020 01:29:24 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=96=B0=E5=A2=9E]=E6=96=B0=E5=A2=9E=E7=8E=B0?= =?UTF-8?q?=E5=9C=BA=E7=85=A7=E7=89=87=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/app-routing.module.ts | 3 +- .../basicinfo/addhouseinfo.component.html | 2 +- .../basicinfo/basicinfo.component.html | 4 +- .../basicinfo/basicinfo.component.scss | 15 +- .../key-unit/basicinfo/basicinfo.component.ts | 4 +- .../key-unit/key-site/key-site.component.scss | 6 +- .../key-unit/key-site/key-site.component.ts | 4 +- .../key-site/keysiteimgs.component.html | 4 +- src/app/key-unit/key-unit.module.ts | 2 +- .../add-six-familiar.component.scss | 2 +- .../ui/basicinfo/addhouseinfo.component.html | 25 - .../ui/basicinfo/addhouseinfo.component.ts | 77 - src/app/ui/basicinfo/basicinfo.component.html | 531 ----- src/app/ui/basicinfo/basicinfo.component.scss | 269 --- src/app/ui/basicinfo/basicinfo.component.ts | 2031 ----------------- .../ui/basicinfo/lookmaster.component.html | 26 - src/app/ui/basicinfo/lookmaster.component.ts | 66 - .../collection-tools.component.html | 4 +- .../collection-tools.component.scss | 2 +- .../collection-tools.component.ts | 2 +- .../photoofthescene.component.html | 75 + .../photoofthescene.component.scss | 34 + .../photoofthescene.component.spec.ts} | 12 +- .../photoofthescene.component.ts | 147 ++ .../training-recordinfo.component.html | 38 +- src/app/ui/ui.module.ts | 3 +- src/assets/images/camera.png | Bin 0 -> 942 bytes 27 files changed, 325 insertions(+), 3063 deletions(-) delete mode 100644 src/app/ui/basicinfo/addhouseinfo.component.html delete mode 100644 src/app/ui/basicinfo/addhouseinfo.component.ts delete mode 100644 src/app/ui/basicinfo/basicinfo.component.html delete mode 100644 src/app/ui/basicinfo/basicinfo.component.scss delete mode 100644 src/app/ui/basicinfo/basicinfo.component.ts delete mode 100644 src/app/ui/basicinfo/lookmaster.component.html delete mode 100644 src/app/ui/basicinfo/lookmaster.component.ts create mode 100644 src/app/ui/photoofthescene/photoofthescene.component.html create mode 100644 src/app/ui/photoofthescene/photoofthescene.component.scss rename src/app/ui/{basicinfo/basicinfo.component.spec.ts => photoofthescene/photoofthescene.component.spec.ts} (51%) create mode 100644 src/app/ui/photoofthescene/photoofthescene.component.ts create mode 100644 src/assets/images/camera.png diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 7b8bdbd..880bbaf 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -28,7 +28,8 @@ const routes: Routes = [ component:TrainingRecordinfoComponent,canActivate: [AuthGuard],}, {path:'login', component:LoginComponent}, - {path:'home', component:HomeComponent,canActivate: [AuthGuard],}//守卫验证 + {path:'home', component:HomeComponent,canActivate: [AuthGuard],},//守卫验证 + // {path:'xxx', component:BasicinfoComponent,canActivate: [AuthGuard],}, ] diff --git a/src/app/key-unit/basicinfo/addhouseinfo.component.html b/src/app/key-unit/basicinfo/addhouseinfo.component.html index 3ce162d..d7f5766 100644 --- a/src/app/key-unit/basicinfo/addhouseinfo.component.html +++ b/src/app/key-unit/basicinfo/addhouseinfo.component.html @@ -1,5 +1,5 @@
新增建筑
-
+
-
- +
+ diff --git a/src/app/key-unit/basicinfo/basicinfo.component.scss b/src/app/key-unit/basicinfo/basicinfo.component.scss index c80c8c3..3753459 100644 --- a/src/app/key-unit/basicinfo/basicinfo.component.scss +++ b/src/app/key-unit/basicinfo/basicinfo.component.scss @@ -115,8 +115,15 @@ border-bottom: 1px solid black; } .houseinfobox{ - // height:340px; + font-size: 16px; overflow: auto; + .addicon{ + font-size: 30px; + width: 30px; + height: 30px; + vertical-align: bottom; + line-height: 30px; + } .addhouseinfo{ float: left; } @@ -246,10 +253,10 @@ textarea { } .imgbox{ text-align: center; - height: 750px; + height: 500px; img{ - max-width: 1500px; - max-height: 740px; + max-width: 800px; + max-height: 6400px; } } .previewImgBottom{ diff --git a/src/app/key-unit/basicinfo/basicinfo.component.ts b/src/app/key-unit/basicinfo/basicinfo.component.ts index 5d31edb..5ec1e1f 100644 --- a/src/app/key-unit/basicinfo/basicinfo.component.ts +++ b/src/app/key-unit/basicinfo/basicinfo.component.ts @@ -864,8 +864,8 @@ export class BasicinfoComponent implements OnInit { //查看单位大图 lookmaster(){ const dialogRef = this.dialog.open(LookMaster, {//调用open方法打开对话框并且携带参数过去 - width: '1600px', - height:'900px', + width: '800px', + height:'640px', data: {img:this.imgsrc} }); dialogRef.afterClosed().subscribe( diff --git a/src/app/key-unit/key-site/key-site.component.scss b/src/app/key-unit/key-site/key-site.component.scss index 3fbf2eb..29d9aee 100644 --- a/src/app/key-unit/key-site/key-site.component.scss +++ b/src/app/key-unit/key-site/key-site.component.scss @@ -42,14 +42,14 @@ table { .rotateC {transform: rotate(270deg) scale(0.75);} //预览图片 .previewImgBox { - width: 1500px; - height: 700px; + width: 800px; + height: 650px; text-align: center; img{ width: auto; height: auto; max-width: 100%; - height: 100%;} + max-height: 100%;} } .previewImgBottom { text-align: center; diff --git a/src/app/key-unit/key-site/key-site.component.ts b/src/app/key-unit/key-site/key-site.component.ts index 4b9b254..c760b23 100644 --- a/src/app/key-unit/key-site/key-site.component.ts +++ b/src/app/key-unit/key-site/key-site.component.ts @@ -144,8 +144,8 @@ export class KeySiteComponent implements OnInit { if (e.length) { let data = e const dialogRef = this.dialog.open(KeySiteImgs, {//调用open方法打开对话框并且携带参数过去 - width: '1600px', - height:'900px',data}); + width: '820px', + height:'670px',data}); dialogRef.afterClosed().subscribe(); } else { const config = new MatSnackBarConfig(); diff --git a/src/app/key-unit/key-site/keysiteimgs.component.html b/src/app/key-unit/key-site/keysiteimgs.component.html index 992faec..ae2fc95 100644 --- a/src/app/key-unit/key-site/keysiteimgs.component.html +++ b/src/app/key-unit/key-site/keysiteimgs.component.html @@ -12,7 +12,7 @@
- + \ No newline at end of file diff --git a/src/app/key-unit/key-unit.module.ts b/src/app/key-unit/key-unit.module.ts index f41b0c5..c29b7ca 100644 --- a/src/app/key-unit/key-unit.module.ts +++ b/src/app/key-unit/key-unit.module.ts @@ -77,7 +77,7 @@ import { LookMaster2 } from './basicinfo-look/lookmaster.component'; @NgModule({ declarations: [KeyUnitManagementComponent, EditUnitInfoComponent, ViewUnitDetailsComponent,CreateUnit,BasicinfoComponent,LookMaster,AddHouseInfo, EditPlanInfoComponent,BasicinfoLookComponent, ViewUnitDetailsPlanComponent,FunctionDivisionComponent,addPartition,addPartitionAttribute,AllaroundComponent,ImgDetails,RealisticPictureComponent,previewImg,addRealPicture,editRealPicture,KeySiteComponent,KeyImgDetail,KeySiteImgs,UploadingCADComponent,readFile,editFile,KeySiteLookComponent,KeySiteImgs2,FunctionDivisionLookComponent,RealisticPictureLookComponent,previewImg3,UploadingCADLookComponent,FireFightingDeviceComponent,ImagesData,previewBigImg,ImgsDataDetail,FireFightingDeviceLookComponent,ImagesData2,ImgsDataDetail2,previewBigImg2,LookMaster2,addPartitionAttribute2], - exports:[ViewUnitDetailsPlanComponent,BasicinfoComponent,FireFightingDeviceComponent], + exports:[ViewUnitDetailsPlanComponent,BasicinfoComponent,FireFightingDeviceComponent,KeySiteComponent], imports: [ CommonModule, KeyUnitRoutingModule, diff --git a/src/app/ui/add-six-familiar/add-six-familiar.component.scss b/src/app/ui/add-six-familiar/add-six-familiar.component.scss index a941d86..e82cef5 100644 --- a/src/app/ui/add-six-familiar/add-six-familiar.component.scss +++ b/src/app/ui/add-six-familiar/add-six-familiar.component.scss @@ -1,6 +1,6 @@ .bigbox{ width: 10rem; - height: 7.5rem; + height: 100%; position: relative; background: #F4F5F9; .content{ diff --git a/src/app/ui/basicinfo/addhouseinfo.component.html b/src/app/ui/basicinfo/addhouseinfo.component.html deleted file mode 100644 index 3ce162d..0000000 --- a/src/app/ui/basicinfo/addhouseinfo.component.html +++ /dev/null @@ -1,25 +0,0 @@ -
新增建筑
- - - - - {{input.value?.length || 0}}/20 - - - - - {{item.name}} - - - -
- - -
- - \ No newline at end of file diff --git a/src/app/ui/basicinfo/addhouseinfo.component.ts b/src/app/ui/basicinfo/addhouseinfo.component.ts deleted file mode 100644 index e888232..0000000 --- a/src/app/ui/basicinfo/addhouseinfo.component.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { Component, OnInit, Inject } from '@angular/core'; -import {MatTreeFlatDataSource, MatTreeFlattener} from '@angular/material/tree'; -import {FlatTreeControl} from '@angular/cdk/tree'; -import { HttpClient } from '@angular/common/http'; -import {MatDialog, MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog'; -import {FormControl} from '@angular/forms'; -import { MatSnackBar } from '@angular/material/snack-bar'; - -@Component({ - selector: 'addhouseinfo', - templateUrl: './addhouseinfo.component.html', - styleUrls: ['./basicinfo.component.scss'] - }) - export class AddHouseInfo { - myControl = new FormControl(); - //注入MatDialogRef,可以用来关闭对话框 - //要访问对话框组件中的数据,必须使用MAT_DIALOG_DATA注入令牌 - constructor(private http: HttpClient,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data) {} - allunittype:any - onNoClick(): void { - this.dialogRef.close(); - } - ngOnInit(): void { - // console.log(this.data) - this.getallunittype() - } - getallunittype(){ - this.http.get("/api/BuildingTypes/Simple").subscribe(data=>{ - this.allunittype = data - }) - } - onSubmit(value){ - - this.http.get("/api/Buildings",{ - params:{ - companyId:this.data.unitId - } - }).subscribe((data:any)=>{ - this.data.allBuildings = data - let order - if(data.length == 0){ - order = 0 - }else{ - order = data[data.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, - order: order, - enabled: true, - companyId: this.data.unitinfo.id, - buildingTypes: [ - { - id: value.unittype, - name: buildingTypename - } - ] - },{params:{ - companyId : this.data.unitId - }}).subscribe(data=>{ - this.dialogRef.close(data); - }) - }) - - - - } - } - \ No newline at end of file diff --git a/src/app/ui/basicinfo/basicinfo.component.html b/src/app/ui/basicinfo/basicinfo.component.html deleted file mode 100644 index 43f73ea..0000000 --- a/src/app/ui/basicinfo/basicinfo.component.html +++ /dev/null @@ -1,531 +0,0 @@ -
- - - - - - 单位信息 - keyboard_arrow_down - - -
-
-
-
-
- * - 统一社会信用代码: - - - -
-
- 统一社会信用代码格式不正确 -
-
-
-
- * - 单位类型: - - - {{item.name}} - - -
-
- * - 联系人: - - - -
-
- * - 联系电话: - - - -
-
- 电话号码格式不正确 -
-
-
-
- * - 辖区中队: - - - -
-
- - - -
  • {{node.name}}
  • -
    - - -
  • {{node.name}}
  • -
    -
    -
    -
    - * - 单位地址: - - - -
    -
    - 单位照片: -
    - -
    - -
    -
    - -
    -
    - -
    -
    - - - -
    -
    -
    -
    -
    - - - -
    -
    - - - -
    - - -
    -
    - 建筑名称: - - - - * -
    -
    - 建筑类型: - - - {{n.name}} - - - * -
    - -
    -

    {{item.name}}

    -
    - {{i.propertyName}}({{i.physicalUnit}}) - - - - - - - - - - - - - - - - * -
    - {{i.rulevalue}} -
    -
    -
    - -
    - -

    自定义信息

    -
    -
    - - -
    - - - - : - - - - * -
    -
    -
    - - -
    - -
    -
    - 建筑名称: - - - - * -
    -
    - 建筑类型: - - - {{n.name}} - - - * -
    -

    {{item.buildingBasicGroups[0].name}}

    -
    - {{i.propertyName}} ({{i.physicalUnit}}) - - - - - - - - - - - - - - - - * -
    - {{i.rulevalue}} -
    -
    -
    - - -
    -
    - -

    {{item.buildingBasicGroups[1].name}}

    -
    - - - - - - - - - - - - - - - - - - - - -
    - - - 装置区名称* - - 工艺流程* - - 火灾危险性* - - 灭火注意事项 - -
    -
    - -
    - -

    储罐信息

    -
    - - - - - -
    -
    -

    {{x[0].name}}

    -
    -
    - {{i.propertyName}} {{i.physicalUnit}}: - - - - - * -
    - -
    -

    {{x[1].name}}

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - 罐区 - - 罐区编号* - - 储存介质* - - 储罐类型* - - 容量(m³)* - - 直径(m)* - - 高度(m)* - - 顶盖形式 - - 浮盘材质 - - 浮盘类型 - - 泡沫产生器型号 - - 泡沫产生器形式 - - 是否设置氮封惰化保护装置 - - 防护堤高度(m)* - - 半固定泡沫灭火接口数量 - - 其它设施 - -
    -
    -
    -
    - - -
    - -

    自定义信息

    -
    -
    - - -
    - - - - : - - - - * -
    -
    - -
    - - -
    - - -
    - -
    -
    - -
    - -
    - -
    - -
    - - - - - - - - - diff --git a/src/app/ui/basicinfo/basicinfo.component.scss b/src/app/ui/basicinfo/basicinfo.component.scss deleted file mode 100644 index c80c8c3..0000000 --- a/src/app/ui/basicinfo/basicinfo.component.scss +++ /dev/null @@ -1,269 +0,0 @@ -.topbox{ - height: 485px; - width: 100%; - // border-bottom: 1px solid black; - .mainbox{ - height: 100%; - position: relative; - .mainleft{ - width:800px; - height: 100%; - // background-color: yellow; - float: left; - .inputbox{ - width: 343px; - height: 58px; - margin:2px 6px; - float: left; - text-align: end; - } - .organizationbox{ - width:538px; - height: 200px; - background: white; - position: absolute; - top: 164px; - left:166px; - z-index: 100; - border: 1px solid grey; - overflow: auto; - li{ - list-style: none; - - } - mat-tree-node{ - cursor: pointer; - } - mat-tree-node:hover{ - background: rgba(225, 225, 225, 0.8); - } - } - .addbtn{ - width: 695px; - position: absolute; - bottom: -495px; - text-align: center; - margin-bottom:20px; - button{ - margin: 0 4px; - } - } - .uploadimg{ - width: 400px; - height: 200px; - float: left; - 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; - - position: absolute; - top: 0px; - left: 79px; - border: 1px dashed gray; - border-radius:3px; - } - - } - .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{ - float: left; - width: 600px; - height: 400px; - // position: absolute; - // right: 170px; - - } - } -} -.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; - } - .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; - } - } -} - -.btn{ - width: 100%; - text-align: center; - button{ - margin: 0 8px; - } -} -.mat-spinner{ - margin-top: 58px; - margin-left: 203px; -} -.mat-table{ - width: 100%; -} - -table{ - width: 1000px; - thead{ - tr{ - th{ - width: 60px; - display: block; - float: left; - - } - } - } - tbody{ - tr{ - - td{ - width: 60px; - display: block; - float: left; - text-align: center; - } - } - } -} - -.deviceinfo{ - // border-bottom: 1px solid black;; - padding-bottom: 60px; -} -.tankdetailinfo{ - // border-bottom: 1px solid black;; - padding-bottom: 35px; - table{ - th{ - text-align: center; - } - } -} -.tankinfo{ - display: block; - width: 100%; - // height: 45px; - text-align: center; -} -// .adddeviceinfo{ -// // position: absolute; -// // left: 0px; -// } -.submit1{ - margin-left: -66px !important; -} -textarea { - vertical-align: middle; - border-radius: 5px; - padding: 5px; - width: 600px; - 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; - img{ - max-width: 1500px; - max-height: 740px; - } -} -.previewImgBottom{ - text-align: center; -} -.alert-danger { - margin-top: -16px; - text-align: left; - padding-left: 77px; - font-size: 12px; - color: red; - } -.mat-expansion-panel{ - span{ - color: black; - } -} \ No newline at end of file diff --git a/src/app/ui/basicinfo/basicinfo.component.ts b/src/app/ui/basicinfo/basicinfo.component.ts deleted file mode 100644 index cf630d3..0000000 --- a/src/app/ui/basicinfo/basicinfo.component.ts +++ /dev/null @@ -1,2031 +0,0 @@ -import { Component, OnInit, Inject ,ViewChild} 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 { 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 { AddHouseInfo } from './addhouseinfo.component' -import { DomSanitizer } from '@angular/platform-browser' -import { Injectable } from "@angular/core" -import { filter } from 'rxjs/operators'; -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 { LookMaster } from './lookmaster.component' -import { Router,ActivatedRoute } from '@angular/router' - -@Component({ - selector: 'app-basicinfo', - templateUrl: './basicinfo.component.html', - styleUrls: ['./basicinfo.component.scss'] -}) -export class BasicinfoComponent implements OnInit { - unitinfo:any={ - id: '', - name: '', //单位信息名字 - usci: '', //单位信用代码 - contacts: '', //联系人 - phone: '', //联系电话 - address: '', //单位地址 - imageUrl: '', //图片地址 - location: '', //单位地理位置 - modifiedTime: '', //信息修改时间 - organizationId: '', //所属组织机构 - organizationName: '', //组织机构名称 - buildingTypes: [ - { - id:'', - name:'' - } - ] - } - - uploader:FileUploader = new FileUploader({ //初始化上传事件 ng2-upload - url: `/api/Objects/PlanPlatform/${sessionStorage.getItem('companyId')}`, - method: "POST", - itemAlias: "uploadedfile", - autoUpload: false, - removeAfterUpload:true //上传之后是否在队列中移除,如果不移除就会出现无法上传第二次的情况 - }); - - - - - private _transformer = (node, level: number) => { //初始化tree - return { - expandable: !!node.children && node.children.length > 0, - name: node.name, - level: level, - id: node.id, - parentId: node.parentId, - children: node.children - }; - } - treeControl = new FlatTreeControl(node => node.level, node => node.expandable); - treeFlattener = new MatTreeFlattener(this._transformer, node => node.level, node => node.expandable, node => node.children); - dataSource = new MatTreeFlatDataSource(this.treeControl, this.treeFlattener); - - myControl = new FormControl(); - - isorganizationbox = false//控制辖区中队框的显示隐藏 - selectedorganization: any//所选的辖区中队 - selectedorganizationid:any //所选的辖区中队的id - highhouse = false//控制高层表单的显示 - houses: any = [] //存储当前单位的建筑信息 - defaultbuildingTypes :any //存储当前建筑的默认类型的id - buildingTypesname:any//存储当前建筑的默认类型name - buildingCustomData:any //存储当前建筑的自定义信息 - allunittype: any //所有单位类型 - allorganizing:any = [] //所有组织机构 - constructor(private router:Router,private route:ActivatedRoute,private http: HttpClient, private tree: TreeService, private sanitizer: DomSanitizer, public dialog: MatDialog,public snackBar: MatSnackBar) { } - - - unitId : any //当前单位id - ngOnInit(): void { - this.getallunittype() - this.getorganization() - this.getunitallbuilding() - this.unitId = this.route.snapshot.queryParams.id - sessionStorage.setItem("companyId",this.route.snapshot.queryParams.id); - } - //获得所有单位类型 - getallunittype() { - this.http.get("/api/BuildingTypes/Simple").subscribe(data => { - this.allunittype = data - }) - } - //获得所有组织机构 - getorganization() { - this.http.get('/api/Organizations').subscribe( - (data: any) => { - this.allorganizing = data; - this.dataSource.data = this.tree.toTree(data); - this.getunitinfo(); - } - ) - } - //获得当前单位的基本信息 - CompanyId - getunitinfo(){ - - this.http.get(`/api/Companies/${this.unitId}`).subscribe((data:any)=>{ - if(data.buildingTypes.length){ - sessionStorage.setItem('buildingTypeId',data.buildingTypes[0].id) - }else{ - sessionStorage.setItem('buildingTypeId',"") - } - let node - this.allorganizing.forEach(item => { - if(item.id == data.organizationId){ - node = item - } - }); - if(node){ - if(!node.parentId){ - this.selectedorganization = node.name - }else{ - let namearr = [node.name] - let targetId = node.parentId; // 临时变量 - for(let i = 0; i < node.level ; i++){ - this.allorganizing.forEach(item => { - if(item.id == targetId ){ - namearr.push(item.name) - targetId = item.parentId; // 临时变量更新没有副作用 - } - }); - } - namearr.reverse() - let str = '' - namearr.forEach(item=>{ - str += '/' + item - }) - this.selectedorganization = str.substr(1) - } - } - - this.unitinfo = data - this.selectedorganizationid = data.organizationId - if(data.imageUrl){ - this.imgsrc = data.imageUrl - } - if(data.buildingTypes[0]){ - this.defaultbuildingTypes = data.buildingTypes[0].id - this.buildingTypesname = data.buildingTypes[0].name - } - }) - } - //石油化工 装置信息 勾选框 - checkboxchange(item,e){ - if(item.buildingBasicGroups){ - item.buildingBasicGroups.forEach(item=>{ - if(item.name != "基本信息" && item.name != "装置信息"){ - item.submitted = e.checked - } - }) - } - } - - 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 - //在石油化工模板种点击增加装置信息 - adddeviceinfo(item){ - item.newzhuangzhiinfodatasource.push({ - name:"", - flow:"", - danger:"", - payattentionto:"" - }) - this.devicedataSourcebox[item.buildingId] = new MatTableDataSource(item.newzhuangzhiinfodatasource) - } - //在石油化工模板种点击减少装置信息 - removedeviceinfo(item){ - if(item.newzhuangzhiinfodatasource.length>1){ - item.newzhuangzhiinfodatasource.pop() - }else{ - const config = new MatSnackBarConfig(); - config.verticalPosition = 'top'; - config.duration = 3000 - this.snackBar.open('只剩一行,无法删除','确定',config); - } - this.devicedataSourcebox[item.buildingId] = new MatTableDataSource(item.newzhuangzhiinfodatasource) - } - - //数据格式化函数 将原始数据映射转化为表格需要的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].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: "" - }) - } - //删除自定义信息行数 - deleteCustomData(item){ - item.buildingCustomData.customProperties.pop() - } - //得到建筑信息数据并进行处理 - allBuildings:any - getunitallbuilding(){ - this.houses = [] - this.unitId = this.route.snapshot.queryParams.id - this.http.get("/api/Buildings",{ - params:{ - companyId:this.unitId - } - }).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 == "石油化工类"){ - 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{ - - item[1].propertyInfos = this.formatHandle(item[1].propertyInfos) - - }) - data[0].bigfor = bigfor - } - resolve(data[0]) //把数据传递出去 - }) - }) - this.houses.push(result) // 并且把他添加到 tab 总体数组中 - } - } - // console.log(666,this.houses) - }) - - } - - 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] - } - 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] - } - - } - - - //增加储罐大分组 - //在石油化工模板种点击增加储罐信息 - //获得模板信息 - templateinfo:any - gettemplateinfo(typeid){ - - } - - addtankbox(item,bigkey){ - this.http.get("/api/BuildingBasicInfos",{ - 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 - } - - ]) - }) - - } - //移除储罐大分组 - removetankbox(item,bigkey){ - if(item.bigfor.length > 1){ - var isdeleted = confirm("确定要删除末尾储罐分组吗?") - if(isdeleted){ - item.bigfor.pop() - } - }else{ - const config = new MatSnackBarConfig(); - config.verticalPosition = 'top'; - config.duration = 3000 - 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 == "石油化工类"){ - 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 - } - - //点击+号 增加建筑 - addhouseinfo() { - const dialogRef = this.dialog.open(AddHouseInfo, {//调用open方法打开对话框并且携带参数过去 - width: '260px', - data: {unitinfo:this.unitinfo,allBuildings:this.allBuildings,unitId:this.unitId} - }); - dialogRef.afterClosed().subscribe( - async data => { - if(data){ - let newbuilding = await this.changebuildingdata(data) - this.houses.push(newbuilding) - } - } - ); - } - - //点击不同的tab选项 - selecttab(e) { - } - - FunData(e){//切割数组 - let proportion = 2; //按照比例切割 - let num = 0; - let _data =[]; - for(let i=0;i { - if(item.id == targetId ){ - namearr.push(item.name) - targetId = item.parentId; // 临时变量更新没有副作用 - } - }); - } - namearr.reverse() - let str = '' - namearr.forEach(item=>{ - str += '/' + item - }) - - this.selectedorganization = str.substr(1) - } -} - - //关闭辖区中队隐藏框 - closeorganizationbox() { - this.isorganizationbox = false - } - - //打开辖区中队隐藏框 - openorganizationbox() { - this.isorganizationbox = true - } - - hasChild = (_: number, node: any) => node.expandable; - - imgsrc = "../../../assets/images/upload.jpg" //没有上传图片时显示的图片,当上传后就会被替换,即保存时需要传的图片地址参数 - // imgsrc = "" - imgUrl = ""//返回来的图片地址后缀 - file: any; //上传的文件 - objectName: any; //上传对象名 - uploadId: any; //上传分块上传事件编号 - isspinner:boolean=false //控制进度圈的显示隐藏 - PartNumberETag: any = []; //分块上传每次返回需要保存的信息 - //change选择文件 - filechange(e) { - this.file = e.target.files[0] || null //上传的文件 - var reader = new FileReader(); - reader.readAsDataURL(this.file); - var image:any = new Image(); - reader.onload = function(){ - image.src = reader.result - } - setTimeout(() => { - if(image.width>=4096 || image.height>=5000 ){ - const config = new MatSnackBarConfig(); - config.verticalPosition = 'top'; - config.duration = 3000 - this.snackBar.open('请选择分辨率小于4096*5000的图片','确定',config); - }else{ - if(this.file){ - this.startUploading() - } - } - - }, 500); - } - //查看单位大图 - lookmaster(){ - const dialogRef = this.dialog.open(LookMaster, {//调用open方法打开对话框并且携带参数过去 - width: '1600px', - height:'900px', - data: {img:this.imgsrc} - }); - dialogRef.afterClosed().subscribe( - - ); - } - //上传文件 - startUploading() { - this.isspinner = true - let file = this.file || null //获取上传的文件 - let fileSize = file.size || null //上传文件的总大小 - let shardSize = 5 * 1024 * 1024 //5MB一个分片 - - if (file && fileSize <= shardSize) { //上传文件<=5MB时 - // this.upload() - let formData = new FormData() - formData.append("file",file) - this.http.post(`/api/Objects/PlanPlatform/${sessionStorage.getItem('companyId')}`,formData).subscribe((data:any)=>{ - this.isspinner = false - this.imgUrl = data.objectName - this.imgsrc = `/api/Objects/PlanPlatform/${this.imgUrl}?x-oss-process=image/resize,m_fill,h_170,w_299` - const config = new MatSnackBarConfig(); - config.verticalPosition = 'top'; - config.duration = 3000 - this.snackBar.open('上传成功','确定',config); - }) - } else if (file && fileSize >= shardSize) { //上传文件>5MB时,分块上传 - - let data = { filename: file.name } - this.http.post(`/api/NewMultipartUpload/PlanPlatform/${this.unitinfo.id}`, {}, { params: data }).subscribe((data: any) => { //初始化分段上传 - this.objectName = data.objectName - this.uploadId = data.uploadId - this.subsectionUploading() - }) - } - } - - - - - //小于5MB不需要分块上传 - upload(){ - this.uploader.queue[0].upload();//开始上传 - this.uploader.queue[0].onSuccess = (response, status, headers) => { - // 上传文件成功 - if (status == 201) { - // 上传文件后获取服务器返回的数据 - const config = new MatSnackBarConfig(); - config.verticalPosition = 'top'; - config.duration = 3000 - this.snackBar.open('上传成功','确定',config); - this.isspinner = false - let tempRes = JSON.parse(response); - this.imgUrl = tempRes.objectName - this.imgsrc = `/api/Objects/PlanPlatform/${this.imgUrl}?x-oss-process=image/resize,m_fill,h_170,w_299` - }else { - // 上传文件后获取服务器返回的数据错误 - } - }; - this.uploader.queue[0].onError = (response, status, headers) => { - if (status == 401) { - const config = new MatSnackBarConfig(); - config.verticalPosition = 'top'; - config.duration = 3000 - this.snackBar.open('上传失败','确定',config); - } - }; - } - - //开始分块上传 - async subsectionUploading () { - let file = this.file || null //获取上传的文件 - let fileSize = file.size || null //上传文件的总大小 - let shardSize = 5 * 1024 * 1024 //5MB一个分片 - let allSlice = Math.ceil(fileSize / shardSize) //总文件/5MB===共分多少段 - - for (let i = 0;i < allSlice;i++) { //循环分段上传 - let start = i * shardSize //切割文件开始位置 - let end = Math.min(fileSize, start + shardSize); //切割文件结束位置 - let formData = new FormData() - formData.append("file",file.slice(start, end)) - - // 同步写法实现异步调用 - let result = await new Promise((resolve, reject) => { - // await 需要后面返回一个 promise 对象 - this.http.post(`/api/MultipartUpload/PlanPlatform/${this.objectName}?uploadId=${this.uploadId}&partNumber=${i+1}`,formData).subscribe((data:any)=>{ - let msg = { - "partNumber":data.partNumber || null, - "eTag": data.eTag || null - } - resolve(msg) // 调用 promise 内置方法处理成功 - }) - }); - this.PartNumberETag.push(result) - if (this.PartNumberETag.length === allSlice) { - this.endUploading() - } - } - } - //完成分块上传 - endUploading() { - let data = this.PartNumberETag - let paramsData = { uploadId: this.uploadId } - this.http.post(`/api/CompleteMultipartUpload/PlanPlatform/${this.objectName}`, data, { params: paramsData }).subscribe(data => { - this.imgsrc = `/api/Objects/PlanPlatform/${this.objectName}?x-oss-process=image/resize,m_fill,h_170,w_299` - this.isspinner = false - this.PartNumberETag = [] - this.uploader.clearQueue(); //清空input控件文件 - }) - } - //删除具体建筑 - deletedbuilding(item){ - var isdeleted = confirm("确定要删除此建筑吗?") - if(isdeleted){ - //请求删除接口 - this.http.delete(`/api/Buildings/${item.buildingId}`).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) - }) - } - } - - //提交单位基本信息 - onSubmit(value,invalid,form) { - if(invalid){ - const config = new MatSnackBarConfig(); - config.verticalPosition = 'top'; - config.duration = 3000 - this.snackBar.open('请填写必填项','确定',config); - }else{ - sessionStorage.setItem('buildingTypeId',value.unittype) - let time =new Date() - let body = { - id: this.unitinfo.id, - name: this.unitinfo.name, - usci: value.creditcode, - contacts: value.linkman, - phone: value.linkphone, - address: value.unitaddress, - imageUrl: this.imgsrc, - location: { - x: 0, - y: 0 - }, - modifiedTime: time, - organizationId: this.selectedorganizationid, - organizationName: null, - buildingTypes: [ - { - id: value.unittype, - name: this.buildingTypesname - } - ] - } - 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.post("/api/Buildings",addbody,{params:{ - companyId : this.unitId - }}).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); - } - } - - - } - selected:any - - 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 - item.rulevalue = `请输入≥${value}的值` - }else{ - item.isshowrule = false - } - } - if(name == "≤"){ - if(Number(e.target.value) > Number(value)){ - item.isshowrule = true - item.rulevalue = `请输入≤${value}的值` - }else{ - item.isshowrule = false - } - } - if(name == "Range"){ - let rangenum = value.split(",") - // console.log(rangenum) - if(Number(e.target.value) < Number(rangenum[0]) || Number(e.target.value) >= Number(rangenum[1])){ - item.isshowrule = true - item.rulevalue = `请输入位于${Number(rangenum[0])}和${Number(rangenum[1])-1}之间的值` - }else{ - item.isshowrule = false - } - } - } - - //切换建筑类型 - 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, - enabled: true, - companyId: this.unitinfo.id, - buildingTypes: [ - { - id: n.id, - name: n.name - } - ] - },{ - params:{ - companyId : this.unitId - } - }).subscribe(data=>{ - this.http.get("/api/BuildingBasicInfos",{//请求当前建筑类型的模板信息保存到数组中 - params:{ - companyId :this.unitId, - buildingId:item.buildingId, - buildingType:n.id - } - }).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 - } - } - }) - }) - }) - }) - - - } - - 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 - } - ] - },{params:{ - companyId : this.unitId - }}).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 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 - } - this.http.post("/api/BuildingCustomData",CustomDatabody,{params:{ - companyId :this.unitId, - buildingId:item.buildingId - }}).subscribe(data=>{ - - }, - err=>{ - alert("自定义信息保存失败") - }) - }else{ - let CustomDatabody = { - id: "", - customProperties: [], - buildingId: item.buildingId - } - this.http.post("/api/BuildingCustomData",CustomDatabody,{params:{ - companyId :this.unitId, - buildingId:item.buildingId - }}).subscribe(data=>{ - - }, - err=>{ - alert("自定义信息保存失败") - }) - } - - - if(item.buildtype != "石油化工类" && item.buildtype != "地铁类"){ - // 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); - }) - } - } - if(item.buildtype == "石油化工类"){ - // 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) - } - - - - 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); - }) - } - if(item.buildtype == "地铁类"){ - let newObj = _.cloneDeep(item) - delete newObj.username - delete newObj.name - delete newObj.tongyong - delete newObj.ditie - delete newObj.buildtype - delete newObj.isCustomData - delete newObj.buildingCustomData - newObj.buildingBasicGroups.forEach(item => { - 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 - } - }).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); - }) - - } - } - }) - - - }} \ No newline at end of file diff --git a/src/app/ui/basicinfo/lookmaster.component.html b/src/app/ui/basicinfo/lookmaster.component.html deleted file mode 100644 index 674e8f4..0000000 --- a/src/app/ui/basicinfo/lookmaster.component.html +++ /dev/null @@ -1,26 +0,0 @@ -
    单位照片
    -
    -
    - -
    - - -
    -
    - -

    暂无单位图片,请先上传

    -
    -
    - - -
    - - - - - - diff --git a/src/app/ui/basicinfo/lookmaster.component.ts b/src/app/ui/basicinfo/lookmaster.component.ts deleted file mode 100644 index 79f3883..0000000 --- a/src/app/ui/basicinfo/lookmaster.component.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { Component, OnInit, Inject } from '@angular/core'; -import {MatTreeFlatDataSource, MatTreeFlattener} from '@angular/material/tree'; -import {FlatTreeControl} from '@angular/cdk/tree'; -import { HttpClient } from '@angular/common/http'; -import {MatDialog, MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog'; -import {FormControl} from '@angular/forms'; -import { MatSnackBar } from '@angular/material/snack-bar'; - -@Component({ - selector: 'lookmaster', - templateUrl: './lookmaster.component.html', - styleUrls: ['./basicinfo.component.scss'] - }) - export class LookMaster { - // myControl = new FormControl(); - //注入MatDialogRef,可以用来关闭对话框 - //要访问对话框组件中的数据,必须使用MAT_DIALOG_DATA注入令牌 - constructor(private http: HttpClient,public dialogRef: MatDialogRef,@Inject(MAT_DIALOG_DATA) public data) {} - allunittype:any - ImgUrl:string - rotationAngle=0 - isheng:any - isshowimg:boolean - onNoClick(): void { - this.dialogRef.close(); - } - ngOnInit(): void { - if(this.data.img.indexOf('?') == -1){ - this.isshowimg = false - }else{ - this.isshowimg = true - var imgurl = this.data.img.split("?") - this.ImgUrl = imgurl[0] - } - - } - //点击旋转按钮时 - rotateA = 0 - rotateB = 0 - rotate(){ - var w= document.getElementsByClassName("imgitemdefault")[0]['naturalWidth']; - var h = document.getElementsByClassName("imgitemdefault")[0]['naturalHeight']; - - if(w > h){ - this.isheng = true - }else{ - this.isheng = false - } - if(this.isheng){ - this.rotateA += 90 - if(this.rotateA == 360){ - this.rotateA = 0 - } - }else{ - this.rotateB += 10 - if(this.rotateB == 40){ - this.rotateB = 0 - } - } - } - - - - - } - \ No newline at end of file diff --git a/src/app/ui/collection-tools/collection-tools.component.html b/src/app/ui/collection-tools/collection-tools.component.html index 50b2f12..dc00c17 100644 --- a/src/app/ui/collection-tools/collection-tools.component.html +++ b/src/app/ui/collection-tools/collection-tools.component.html @@ -31,14 +31,14 @@ 想定作业名称 visibility -
    + tv create diff --git a/src/app/ui/collection-tools/collection-tools.component.scss b/src/app/ui/collection-tools/collection-tools.component.scss index 8b34d62..6411e24 100644 --- a/src/app/ui/collection-tools/collection-tools.component.scss +++ b/src/app/ui/collection-tools/collection-tools.component.scss @@ -10,7 +10,7 @@ padding: 1px; display: flex; flex-direction: column; - + font-size: 12px; .buildingbtnchecked{ background-color: #34A6FD; color: white; diff --git a/src/app/ui/collection-tools/collection-tools.component.ts b/src/app/ui/collection-tools/collection-tools.component.ts index 3cf8178..3b87b9d 100644 --- a/src/app/ui/collection-tools/collection-tools.component.ts +++ b/src/app/ui/collection-tools/collection-tools.component.ts @@ -614,7 +614,7 @@ export class CollectionToolsComponent implements OnInit { this.getAllLibrary() //获取素材库 this.getAllBuildings() //获取所有建筑 - this.getAllFirePlan() //获取当前单位灾情 + // this.getAllFirePlan() //获取当前单位灾情 let that = this window.setTimeout(()=>{ diff --git a/src/app/ui/photoofthescene/photoofthescene.component.html b/src/app/ui/photoofthescene/photoofthescene.component.html new file mode 100644 index 0000000..c9dcfc0 --- /dev/null +++ b/src/app/ui/photoofthescene/photoofthescene.component.html @@ -0,0 +1,75 @@ + + + + + + + + + + +
    +
    +
    + +
    +

    熟悉单位照片

    +
    + 单位整体建筑或大门照片,要求照拍照时要求设置拍照日期 +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +

    领导带队现场熟悉照片

    +
    + 人员现场熟悉照片,要求有带队领导及熟悉人员现场熟悉场景,拍照时要求设置拍照日期 +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +

    人员现场熟悉照片

    +
    + 人员现场熟悉照片,要求有熟悉人员现场熟悉场景,拍照时要求设置拍照日期 +
    +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    +

    单位重点部位照片

    +
    + 重点部位照片,拍照时要求设置拍照日期 +
    +
    +
    + +
    +
    + +
    +
    \ No newline at end of file diff --git a/src/app/ui/photoofthescene/photoofthescene.component.scss b/src/app/ui/photoofthescene/photoofthescene.component.scss new file mode 100644 index 0000000..bdf85d9 --- /dev/null +++ b/src/app/ui/photoofthescene/photoofthescene.component.scss @@ -0,0 +1,34 @@ +table{ + margin: 0 auto; + width: 85%; + height: 80%; + margin-top: 5%; + border-collapse: collapse; + td{ + position: relative; + width: 50%; + height: 2.246094rem; + p{ + font-size: 20px; + margin: 8px 0; + } + span{ + font-size: 15px; + font-weight: 500; + color: gray; + } + input{ + position: absolute; + width: 100%; + height: 2.246094rem; + left: 0; + top: 0; + opacity: 0; + } + .image{ + height: 100%; + width: 299px; + } + } +} +table,table tr th, table tr td { border:1px solid black;text-align: center; } \ No newline at end of file diff --git a/src/app/ui/basicinfo/basicinfo.component.spec.ts b/src/app/ui/photoofthescene/photoofthescene.component.spec.ts similarity index 51% rename from src/app/ui/basicinfo/basicinfo.component.spec.ts rename to src/app/ui/photoofthescene/photoofthescene.component.spec.ts index 81d25e7..b2b65fe 100644 --- a/src/app/ui/basicinfo/basicinfo.component.spec.ts +++ b/src/app/ui/photoofthescene/photoofthescene.component.spec.ts @@ -1,20 +1,20 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { BasicinfoComponent } from './basicinfo.component'; +import { PhotoofthesceneComponent } from './photoofthescene.component'; -describe('BasicinfoComponent', () => { - let component: BasicinfoComponent; - let fixture: ComponentFixture; +describe('PhotoofthesceneComponent', () => { + let component: PhotoofthesceneComponent; + let fixture: ComponentFixture; beforeEach(async(() => { TestBed.configureTestingModule({ - declarations: [ BasicinfoComponent ] + declarations: [ PhotoofthesceneComponent ] }) .compileComponents(); })); beforeEach(() => { - fixture = TestBed.createComponent(BasicinfoComponent); + fixture = TestBed.createComponent(PhotoofthesceneComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/src/app/ui/photoofthescene/photoofthescene.component.ts b/src/app/ui/photoofthescene/photoofthescene.component.ts new file mode 100644 index 0000000..312dd2c --- /dev/null +++ b/src/app/ui/photoofthescene/photoofthescene.component.ts @@ -0,0 +1,147 @@ +import { HttpClient } from '@angular/common/http'; +import { Component, OnInit } from '@angular/core'; +import { MatSnackBar ,MatSnackBarConfig} from '@angular/material/snack-bar'; +import Viewer from 'viewerjs'; +@Component({ + selector: 'app-photoofthescene', + templateUrl: './photoofthescene.component.html', + styleUrls: ['./photoofthescene.component.scss'] +}) +export class PhotoofthesceneComponent implements OnInit { + + constructor(private http: HttpClient,public snackBar: MatSnackBar) { } + gallery//viewerJs实例 + ngOnInit(): void { + setTimeout(() => { + if(document.getElementById('viewerjs1')){ + this.gallery = new Viewer(document.getElementById('viewerjs1'),{ + url: 'data-original' + }); + } + if(document.getElementById('viewerjs2')){ + this.gallery = new Viewer(document.getElementById('viewerjs2'),{ + url: 'data-original' + }); + } + if(document.getElementById('viewerjs3')){ + this.gallery = new Viewer(document.getElementById('viewerjs3'),{ + url: 'data-original' + }); + } + if(document.getElementById('viewerjs4')){ + this.gallery = new Viewer(document.getElementById('viewerjs4'),{ + url: 'data-original' + }); + } + }, 0); + + console.log(555,this.unitImg.split("?")[0]) + } + + unitImg:any = localStorage.getItem(sessionStorage.getItem("companyId") + "1") || "" + lingdaoImg:any = localStorage.getItem(sessionStorage.getItem("companyId") + "2") || "" + peopleImg:any = localStorage.getItem(sessionStorage.getItem("companyId") + "3") || "" + keysiteImg:any = localStorage.getItem(sessionStorage.getItem("companyId") + "4") || "" + + + //熟悉单位照片上传 + file:any + filechange1(e,index){ + this.file = e.target.files[0] || null //上传的文件 + var reader = new FileReader(); + reader.readAsDataURL(this.file); + var image:any = new Image(); + reader.onload = function(){ + image.src = reader.result + } + setTimeout(() => { + if(image.width>=4096 || image.height>=5000 ){ + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('请选择分辨率小于4096*5000的图片','确定',config); + }else{ + if(this.file){ + this.startUploading(index) + } + } + }, 500); + } + + + isspinner:any //进度圈 + imgUrl:any //上传后的图片地址 + imgsrc:any //上传后的缩略图地址 + + //上传文件 + startUploading(type) { + this.isspinner = true + let file = this.file || null //获取上传的文件 + let fileSize = file.size || null //上传文件的总大小 + let shardSize = 5 * 1024 * 1024 //5MB一个分片 + + if (file && fileSize <= shardSize) { //上传文件<=5MB时 + // this.upload() + let formData = new FormData() + formData.append("file",file) + this.http.post(`/api/Objects/PlanPlatform/${sessionStorage.getItem('companyId')}`,formData).subscribe((data:any)=>{ + this.isspinner = false + this.imgUrl = data.objectName + this.imgsrc = `/api/Objects/PlanPlatform/${this.imgUrl}?x-oss-process=image/resize,m_fill,h_170,w_299` + localStorage.setItem(sessionStorage.getItem("companyId") + type, this.imgsrc) + if(type == '1'){ + this.unitImg = this.imgsrc + setTimeout(() => { + this.gallery = new Viewer(document.getElementById('viewerjs1'),{ + url: 'data-original' + }); + }, 0); + } + if(type == '2'){ + this.lingdaoImg = this.imgsrc + setTimeout(() => { + this.gallery = new Viewer(document.getElementById('viewerjs2'),{ + url: 'data-original' + }); + }, 0); + } + if(type == '3'){ + this.peopleImg = this.imgsrc + setTimeout(() => { + this.gallery = new Viewer(document.getElementById('viewerjs3'),{ + url: 'data-original' + }); + }, 0); + } + if(type == '4'){ + this.keysiteImg = this.imgsrc + setTimeout(() => { + this.gallery = new Viewer(document.getElementById('viewerjs4'),{ + url: 'data-original' + }); + }, 0); + } + + + + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('上传成功','确定',config); + + + }) + } else if (file && fileSize >= shardSize) { //上传文件>5MB时,分块上传 + const config = new MatSnackBarConfig(); + config.verticalPosition = 'top'; + config.duration = 3000 + this.snackBar.open('请上传小于5M图片','确定',config); + // let data = { filename: file.name } + // this.http.post(`/api/NewMultipartUpload/PlanPlatform/${this.unitinfo.id}`, {}, { params: data }).subscribe((data: any) => { //初始化分段上传 + // this.objectName = data.objectName + // this.uploadId = data.uploadId + // this.subsectionUploading() + // }) + } + } +} diff --git a/src/app/ui/training-recordinfo/training-recordinfo.component.html b/src/app/ui/training-recordinfo/training-recordinfo.component.html index d9a1f80..196e3f4 100644 --- a/src/app/ui/training-recordinfo/training-recordinfo.component.html +++ b/src/app/ui/training-recordinfo/training-recordinfo.component.html @@ -6,22 +6,44 @@
    + - + + + + 熟悉路线 - - + + + + + + + + + + + + + + - 平面图 - 安全疏散设施情况 - + 水源道路情况 - 重点部位情况 + + + + + 发现问题 - 现场照片 + + + + +
    diff --git a/src/app/ui/ui.module.ts b/src/app/ui/ui.module.ts index 37c2d89..3502bda 100644 --- a/src/app/ui/ui.module.ts +++ b/src/app/ui/ui.module.ts @@ -65,8 +65,9 @@ import { HomeComponent } from './home/home.component'; import { TrainingRecordinfoComponent } from './training-recordinfo/training-recordinfo.component'; import { RouterGISComponent } from './router-gis/router-gis.component'; import { KeyUnitModule } from '../key-unit/key-unit.module'; +import { PhotoofthesceneComponent } from './photoofthescene/photoofthescene.component'; @NgModule({ - declarations: [UiComponent, FooterComponent, UserdataComponent, ChangepasswordComponent,IsnoPipe,ConfirmpswDirective,TimePipe,EditUser,CollectionToolsComponent,WorkingAreaComponent,CreateBuilding,EditBuilding,leftFunctionalDomainComponent,editPlaneFigureComponent,ViewDetails,saveOneDialog,saveTwoDialog,addDisposalNodeComponent,editDisposalNodeComponent,HomeComponent, AddSixFamiliarComponent, TitleComponent, SelectUnit, TrainingRecordinfoComponent,RouterGISComponent], + declarations: [UiComponent, FooterComponent, UserdataComponent, ChangepasswordComponent,IsnoPipe,ConfirmpswDirective,TimePipe,EditUser,CollectionToolsComponent,WorkingAreaComponent,CreateBuilding,EditBuilding,leftFunctionalDomainComponent,editPlaneFigureComponent,ViewDetails,saveOneDialog,saveTwoDialog,addDisposalNodeComponent,editDisposalNodeComponent,HomeComponent, AddSixFamiliarComponent, TitleComponent, SelectUnit, TrainingRecordinfoComponent,RouterGISComponent, PhotoofthesceneComponent], imports: [ CommonModule, diff --git a/src/assets/images/camera.png b/src/assets/images/camera.png new file mode 100644 index 0000000000000000000000000000000000000000..5b90b3a5962ea54070e736418047a34d06abafb5 GIT binary patch literal 942 zcmV;f15x~mP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D14BtfK~!i%)tN1D z>Od5Q5eNhVQBhHes6ZepD-cLT1p-llKvp7f6%`c~2n3=6fv7+rkq9ILfj}S;6$k_Z zf!H@^yOgj!g#8J;aAv+4=H_N|FWJ5OlZ5clYPAxtudgDP%ZWrH;l%y@y=((*`N%nu z#bP0YV8OY7wq~=LYTaJWi99|&(tv!(=ksE_-KrTaRyZmUHvza=jUhYcnzTN z$VB@6K6SVzWDe&nrI$kXsBAV%FJ2RBt;a9=fI;~7_9javRsjINVZ$|cPXth-6HiZ1 zVltV?!51bh4l9)kZNmd5t{0yMRP_UB>s@v^SKNIvn<)Vq`T?_kY=4S#*c2FN5AJoqPY77O7LtU8VnQs_4 zjX|LZ%Hwc@8be_LxO549eBdy_gC~+WLBy6+uTnd`zrP=}?Ep0zb1X0j|1v5X z2s>p*;;d~;sL>ew)0mB2g*gaqu(mCsMr*MCvia%+UypSagBqQ{-W`+Wv7I1g$Wl;arVh5}AX`hA3{x9MGR#)=6;z-AZneF#tU_ zGyfeF4(Rub6(%-R9p)TI@FsRiKnI`RP#STVhHvO`>~07i0~=%F@L*7ge^