-
+
-
+
\ 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 @@
-
新增建筑
-
\ 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
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
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^