上海预案管理平台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

2527 lines
93 KiB

/*
* @Descripttion:
* @version:
* @Author: sueRimn
* @Date: 2021-06-16 13:56:54
* @LastEditors: sueRimn
* @LastEditTime: 2021-09-06 17:02:53
*/
import { HttpClient } from '@angular/common/http';
import { Component, Inject, OnInit, Renderer2, ViewChild, Input } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar';
import { MatPaginator } from '@angular/material/paginator';
import { FlatTreeControl } from '@angular/cdk/tree';
import { FormControl } from '@angular/forms';
import { MatTreeFlatDataSource, MatTreeFlattener } from '@angular/material/tree';
import { PageEvent } from '@angular/material/paginator';
import { TreeService } from '../../http-interceptors/tree.service'
import Viewer from 'viewerjs';
import { async } from 'rxjs/internal/scheduler/async';
import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';
import { adddwsurvey, addGroup } from '@src/app/ui/plan-template/plan-template.component';
import { zdyaddattinf } from '../../ui/plan-template/plan-template.component'
declare var $: any
@Component({
selector: 'app-create-plan-online-five',
templateUrl: './create-plan-online-five.component.html',
styleUrls: ['./create-plan-online-five.component.scss']
})
export class CreatePlanOnlineFiveComponent implements OnInit {
constructor(private http: HttpClient, private route: ActivatedRoute, public snackBar: MatSnackBar, public dialog: MatDialog, private tree: TreeService) { }
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<any>(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();
hasChild = (_: number, node: any) => node.expandable;
//分页
@ViewChild(MatPaginator, { static: true })
pageEvent: PageEvent;
paginator: MatPaginator;
length: any; //共多少条数据
pageSize: any; //每页条数
pageSizeOptions: number[] = [6] //设置每页条数
PageNumber: any; //第几页
planLevel: string//预案级别
blockyl = true
zaixianDr = false
haveNew = false
planMode//预案类型
xiazai//是否点击下载按钮进来的
//index
async ngOnInit() {
//this.index = this.getArrayIndex(this.planTemplateData,'单位概况')
this.xiazai = this.route.snapshot.queryParams.xiazai
this.haveNew = this.route.snapshot.queryParams.haveNew
this.planMode = this.route.snapshot.queryParams.planMode
console.log(this.route.snapshot.queryParams.wordChange)
this.planLevel = this.route.snapshot.queryParams.planCategory
if (this.route.snapshot.queryParams.pattern == 'false') {
this.pattern = 'look'
this.blockyl = false
this.selectedItem = '单位概况'
//this.clickTitleItem(this.planTemplateData[1])
} else {
this.selectedItem = '封面'
this.pattern = 'edit'
}
await this.getUnitData()
await this.getOrganizations()
if (this.route.snapshot.queryParams.xiazai == 'true') {
window.setTimeout(async () => {
this.generatingDoc()
}, 32000)
}
}
zdysearch = ''
organizationName: any //当前单位组织机构名称
treedata: any //组织机构树型数据
newArr: any = []
newallorganizations: any //用于存储在原始数据基础上的每个机构增加children字段
pcMore//pc更多
pcput = false//pc收起
pcfind//pc查询
padjt = false
//辖区中队div是否显示
isorganizationbox: boolean = false
js: any //所选组织机构
jsId: any //所选组织机构的id
jscheck: boolean //所选组织机构勾选框
//点击辖区中队树,将选择的辖区中队添加到变量
add(node) {
this.isorganizationbox = false
this.js = node.name
this.jsId = node.id
}
//关闭辖区中队隐藏框
closeorganizationbox() {
this.isorganizationbox = false
}
//打开辖区中队隐藏框
openorganizationbox() {
this.isorganizationbox = true
}
//关闭出现的组织机构div
closediv() {
this.isorganizationbox = false
}
//得到当前单位所在组织机构的tree型数据
allorganizations: any //所有组织机构
async getpresentOrganization() {
let result = new Promise((resolve) => {
this.newallorganizations = this.allorganizations
this.newallorganizations.forEach(item => {
item.children = []
this.newallorganizations.forEach(element => {
if (element.parentId == item.id) {
item.children.push(element)
}
});
});
this.dataSource.data = this.tree.toTree(this.treedata);
resolve(this.dataSource.data)
})
/* this.http.get("/api/Account/Profiles").subscribe(
(data: any) => {
this.organizationName = data.organizationName
if (this.organizationName) {
this.newallorganizations.forEach(item => {
if (item.name == this.organizationName) {
this.dataSource.data = [item]
}
});
} else {
this.dataSource.data = this.tree.toTree(this.treedata);
}
}
) */
}
//获得所有组织机构
async getOrganizations() {
let result = new Promise((resolve) => {
this.http.get('/api/Organizations').subscribe(
async (data: any) => {
this.allorganizations = data
this.treedata = this.tree.toTree(data);
await this.getpresentOrganization();
resolve(data)
}
)
})
}
//清空查询条件数据
clearSearch() {
this.zdysearch = ''
this.js = ''
}
//获得单位信息
unitData: any
async getUnitData() {
let paramsdata: any = {
Name: this.route.snapshot.queryParams.unitName || '',
}
let result = new Promise((resolve) => {
this.http.get("/api/Companies", { params: paramsdata }).subscribe((data: any) => {
data.items.forEach(async element => {
if (element.id == this.route.snapshot.queryParams.companyId) {
this.unitData = element
if (this.planLevel == '5') {
this.zaixianDr = true
}
//console.log('单位列表信息', this.unitData)
await this.getTemplateData()
}
});
resolve(data)
})
})
}
//获得四周毗邻信息
getArrayIndex(arr, groupName) {
for (var i = 0; i < arr.length; i++) {
if (arr[i].groupName === groupName) {
return i;
}
}
return -1;
}
pilinData = []
async getpili() {
let index = this.getArrayIndex(this.planTemplateData, '单位概况')
let result = await new Promise((resolve) => {
this.planTemplateData[index].building.forEach(element => {
let id = { buildingId: element.buildingId }
this.http.get('/api/BuildingAdjoins', { params: id }).subscribe(data => {
this.pilinData.push(data)
resolve(data)
})
});
})
//this.pilinData.push(result)
this.pilinData = JSON.parse(JSON.stringify(this.pilinData))
console.log(this.pilinData)
this.pilinData.forEach((pvalue, pindex, parr) => {
parr[pindex].forEach((nval, nindex, narr) => {
this.planTemplateData[index].building.forEach((value, i, arr) => {
if (narr[nindex].buildingId == arr[i].buildingId) {
if (nval.direction == 0) {
this.planTemplateData[index].building[i].body[2].attinf[0].value = nval.name
} else if (nval.direction == 1) {
this.planTemplateData[index].building[i].body[2].attinf[1].value = nval.name
} else if (nval.direction == 2) {
this.planTemplateData[index].building[i].body[2].attinf[2].value = nval.name
} else if (nval.direction == 3) {
this.planTemplateData[index].building[i].body[2].attinf[3].value = nval.name
}
}
});
});
})
}
//获取重点部位
buData = []
async getbuwei() {
let index = this.getArrayIndex(this.planTemplateData, '单位概况')
let result = await new Promise((resolve) => {
this.planTemplateData[index].building.forEach(element => {
let id = { buildingId: element.buildingId }
this.http.get('/api/BuildingImportantLocations', { params: id }).subscribe(data => {
this.buData.push(data)
resolve(data)
})
});
})
this.buData = JSON.parse(JSON.stringify(this.buData))
this.buData[0].forEach((pvalue, pindex, parr) => {
if (parr[pindex].length > 0) {
parr[pindex].forEach((nval, nindex, narr) => {
this.planTemplateData[index].building[pindex].body[5].attinf[0].body[0].value = nval.name
this.planTemplateData[index].building[pindex].body[5].attinf[0].body[1].value = nval.nature
this.planTemplateData[index].building[pindex].body[5].attinf[0].body[2].value = nval.position
this.planTemplateData[index].building[pindex].body[5].attinf[0].body[3].value = nval.structure
this.planTemplateData[index].building[pindex].body[5].attinf[0].body[4].value = nval.hazards
});
}
})
}
selectedItem: string = '封面'
selectedContent: any
async clickTitleItem(item) {
//this.planTemplateData[key].new=true
this.selectedContent = item
this.addNumber = -1
this.yinruData = {
items: []
}
this.yinJson = {
//组织指挥
organizationCommands: {
tableCount: {
totalCount: 0,
tables: [
]
},
inputCount: {
totalCount: 0,
inputs: [
]
},
textAreaCount: {
totalCount: 0
},
treeCount: {
totalCount: 0
}
},
//社会联动
socialLinkages: {
tableCount: {
totalCount: 0,
tables: [
]
},
inputCount: {
totalCount: 0,
inputs: [
]
},
textAreaCount: {
totalCount: 0
},
treeCount: {
totalCount: 0
}
},
//勤务保障
serviceSupports: {
tableCount: {
totalCount: 0,
tables: [
]
},
inputCount: {
totalCount: 0,
inputs: [
]
},
textAreaCount: {
totalCount: 0
},
treeCount: {
totalCount: 0
}
},
//辅助决策
decisionSupports: {
tableCount: {
totalCount: 0,
tables: [
]
},
inputCount: {
totalCount: 0,
inputs: [
]
},
textAreaCount: {
totalCount: 0
},
treeCount: {
totalCount: 0
}
},
}
this.js = ''
this.zdysearch = ''
this.selectedItem = item.groupName
if (this.selectedItem == '重点图示') {
this.getAllBuildings()
this.getSitePlan()
this.getRealPicture()
} else if (this.selectedItem == '单位概况') {
await this.getAllBuildings()
await this.getAllBuildingsInfo()
await this.getpili()
await this.getbuwei()
//console.log(this.buildZong)
let index = this.getArrayIndex(this.planTemplateData, '单位概况')
this.planTemplateData[index].building.forEach(element => {
if (element.body[0].completed) {
element.body[0].attinf.forEach((arrval, atti, attarr) => {
if (arrval.propertyName == '统一社会信用代码') {
arrval.value = arrval.olddata = this.unitData.usci
} else if (arrval.propertyName == '单位类型') {
arrval.value = arrval.olddata = this.unitData.buildingTypes[0].name
} else if (arrval.propertyName == '联系人') {
arrval.value = arrval.olddata = this.unitData.contacts
} else if (arrval.propertyName == '联系电话') {
arrval.value = arrval.olddata = this.unitData.phone
} else if (arrval.propertyName == '辖区中队') {
arrval.value = arrval.olddata = this.unitData.organizationName
} else if (arrval.propertyName == '单位地址') {
arrval.value = arrval.olddata = this.unitData.address
}
});
/* element.body[0].attinf[0].value = element.body[0].attinf[0].olddata = this.unitData.usci
element.body[0].attinf[1].value = element.body[0].attinf[1].olddata = this.unitData.buildingTypes[0].name
element.body[0].attinf[2].value = element.body[0].attinf[2].olddata = this.unitData.contacts
element.body[0].attinf[3].value = element.body[0].attinf[3].olddata = this.unitData.phone
element.body[0].attinf[4].value = element.body[0].attinf[4].olddata = this.unitData.organizationName
element.body[0].attinf[5].value = element.body[0].attinf[5].olddata = this.unitData.address */
if (element.body.length > 1 && element.body[1].attinf != undefined) {
element.body[1].attinf.forEach(eBuild => {
this.buildZong.forEach(oldBuild => {
if (oldBuild.buildingBasicGroups.length > 0) {
oldBuild.buildingBasicGroups[0].propertyInfos.forEach(infodata => {
eBuild.olddata = infodata.propertyValue
});
}
});
});
}
}
});
console.log(this.planTemplateData)
} else if (this.selectedItem == '预案附件') {
this.getTwoDPlanList()
} else if (this.selectedItem == '新建') {
const dialogRef = this.dialog.open(newTitle, {//调用open方法打开对话框并且携带参数过去
width: '300px',
height: '190px',
disableClose: true,
data: { type: '新建', planTemplateData: this.planTemplateData }
});
dialogRef.afterClosed().subscribe(result => {
console.log(result)
if (result != undefined) {
//delete this.planTemplateData[this.planTemplateData.length-1]
this.planTemplateData[this.planTemplateData.length - 1] = { attribute: [], completed: true, groupName: result, new: false, headName: '自定义名称' }
this.planTemplateData.push({ completed: true, groupName: '新建' })
//delete this.planTemplateData[this.planTemplateData.length-3]
}
//JSON.parse(JSON.stringify(this.planTemplateData))
//console.log(this.planTemplateData)
});
}
}
//自定义模块改名
upName(index, name) {
const dialogRef = this.dialog.open(newTitle, {//调用open方法打开对话框并且携带参数过去
width: '300px',
height: '190px',
disableClose: true,
data: { type: '修改', planName: name, planTemplateData: this.planTemplateData }
});
dialogRef.afterClosed().subscribe(result => {
this.planTemplateData[index].groupName = result
});
}
//自定义模块删除
delName(index) {
let isTrue = confirm('您确定要删除该项吗')
if (isTrue) {
this.planTemplateData.splice(index, 1)
console.log(this.planTemplateData)
}
}
drop(event: CdkDragDrop<string[]>) {
moveItemInArray(this.planTemplateData, event.previousIndex, event.currentIndex);
//console.log('拖拽标题', this.planTemplateData)
}
//获取建筑信息
buildingsData = []
buildDataName
buildZong
basicCategoryId
//获得所有建筑信息
async getAllBuildingsInfo() {
let index = this.getArrayIndex(this.planTemplateData, '单位概况')
const result = await new Promise((resolve) => {
this.http.get("/api/Buildings", {
params: {
companyId: this.unitId
}
}).subscribe(async (data: any) => {
this.buildDataName = data
for (let i = 0; i < data.length; i++) {
this.http.get("/api/BuildingBasicInfos", { // 循环请求当前单位建筑每一个建筑的信息保存到数组中
params: {
companyId: this.unitId,
buildingId: data[i].id,
buildingType: data[i].buildingTypes[0].id
}
}).subscribe((buildingsData: any) => {
//console.log(buildingsData)
this.buildingsData.push(buildingsData[0])
//this.basicCategoryId=buildingsData[0].basicCategoryId
resolve(this.buildingsData)
})
}
//console.log(this.buildingsData)
if (this.planTemplateData[index].building == undefined) {
this.planTemplateData[index].building = []
/* if (this.planTemplateData[index].attribute[1].attinf != undefined) {
this.planTemplateData[index].attribute[1].attinf.forEach(pData => {
this.buildingsData.forEach((bDara, bi, bArr) => {
if (bDara.buildingBasicGroups.length > 0) {
bDara.buildingBasicGroups[0].propertyInfos.forEach(bInfo => {
pData.propertyValue = pData.olddata = bInfo.propertyValue
});
}
})
});
} */
for (var i = 0; i < this.buildDataName.length; i++) {
if (i == 0) {
this.planTemplateData[index].building.push({ name: this.buildDataName[i].name, buildingId: this.buildDataName[i].id, body: JSON.parse(JSON.stringify(this.planTemplateData[index].attribute)), completed: true })
} else {
this.planTemplateData[index].building.push({ name: this.buildDataName[i].name, buildingId: this.buildDataName[i].id, body: JSON.parse(JSON.stringify(this.planTemplateData[index].attribute)), completed: false })
}
}
}
})
})
for (var a = 0; a < this.planTemplateData[index].building.length; a++) {
if (a > 0) {
this.planTemplateData[index].building[a].body[0].completed = false
}
}
this.buildZong = result
}
//获取当前单位的二维预案
TwoDPlanList: any
getTwoDPlanList() {
let paramsData = {
companyId: this.route.snapshot.queryParams.companyId,
pageSize: "999"
}
this.http.get("/api/PlanComponents", { params: paramsData }).subscribe((data: any) => {
this.TwoDPlanList = data.items.filter((item) => {
return item.planType == 1
})
})
}
//获取实景图
allRealPicture
getRealPicture() {
let companyId = this.unitId
this.http.get('/api/RealityImageGroups', {
params: {
companyId: this.route.snapshot.queryParams.companyId
}
}).subscribe((data: any) => {
this.allRealPicture = data
this.getAllRealPicture().then(() => {
// console.log('实景图', this.allRealPicture)
})
})
}
async getAllRealPicture() {
for (let index = 0; index < this.allRealPicture.length; index++) {
const element = this.allRealPicture[index];
let data = {
groupId: element.id,
pageSize: '999',
}
await new Promise((resolve, reject) => {
this.http.get('/api/RealityImages', { params: data }).subscribe((data: any) => {
element.realityImages = data.items
element.realityImages.forEach(item => { //每张图片设置选中状态为false
item.newImageUrl = `/api/Objects/PlanPlatform/${item.imageUrl}` //处理图片URL地址?x-oss-process=image/resize,m_fill,h_100,w_100
item.nameStart = item.name.substring(0, item.name.lastIndexOf(".")); //图片名称前缀
item.nameEnd = item.name.substring(item.name.lastIndexOf("."), item.name.length); //图片名称后缀
resolve(data)
});
})
})
}
}
planTemplateData: any
//获得模板信息
danweInfo = {
//若选择自定义,默认三条信息
attribute: [
{
attinf: [
{ completed: true, olddata: "", propertyName: "联系人", propertyType: 0, propertyValue: "", value: "" },
{ completed: true, olddata: "", propertyName: "联系电话", propertyType: 0, propertyValue: "", value: "" },
{ completed: true, olddata: "", propertyName: "单位地址", propertyType: 0, propertyValue: "", value: "" }
],
completed: true,
surveyName: "单位基本信息"
}
],
completed: true,
groupName: "单位概况"
}
async getTemplateData() {
let result = new Promise((resolve) => {
this.http.get(`/api/PlanComponents/${this.route.snapshot.queryParams.planId}/WebText`).subscribe((data: any) => {
console.log('预案内容', data.webTextData)
if (this.route.snapshot.queryParams.planMode == 4 && data.webTextData == null) {
this.planTemplateData = []
let obj = {
completed: true,
groupName: "封面",
attribute: {
planNumber: '',
planName: this.route.snapshot.queryParams.planName,
objName: this.unitData.name,
unitNature: this.unitData.buildingTypes[0].name,
planLevel: '',
disasterType: '火灾',
fireproofingLevel: '',
fireproofingAdminister: this.unitData.organizationName,
putOutFireAdminister: '',
producer: {
name: '',
duty: ''
},
verifier: {
name: '',
duty: ''
},
auditTime: ''
}
}
this.planTemplateData.unshift(obj)
this.planTemplateData.push(this.danweInfo)
this.planTemplateData.push({ completed: true, groupName: '新建' })
console.log(this.planTemplateData)
} else if (data.webTextData != null) {
this.planTemplateData = JSON.parse(data.webTextData).filter(item =>
item.completed == true
)
//this.planTemplateData=JSON.parse(data.webTextData)
console.log(this.planTemplateData)
if (this.planTemplateData[0].groupName != '封面') {
let obj = {
completed: true,
groupName: "封面",
attribute: {
planNumber: '',
planName: this.route.snapshot.queryParams.planName,
objName: this.unitData.name,
unitNature: this.unitData.buildingTypes[0].name,
planLevel: '',
disasterType: '火灾',
fireproofingLevel: '',
fireproofingAdminister: this.unitData.organizationName,
putOutFireAdminister: '',
producer: {
name: '',
duty: ''
},
verifier: {
name: '',
duty: ''
},
auditTime: ''
}
}
this.planTemplateData.unshift(obj)
}
else if (this.planTemplateData[0].groupName == '封面') {
this.planTemplateData[0].attribute.objName = this.unitData.name
}
this.planTemplateData.forEach(element => {
if (element.groupName == '重点图示') {
if (!element.attribute) {
element.attribute = [{ name: '', imgArr: [] }]
}
}
if (element.groupName == '交通水源') {
if (!element.attribute) {
element.attribute = [{ name: '', imgArr: [] }]
}
}
if (element.groupName == '预案附件') {
if (!element.attribute) {
element.attribute = [{ name: '', imgArr: [] }]
}
}
if (element.groupName == '处置要点') {
if (!element.attribute) {
element.attribute = [{ name: '', content: '' }]
}
}
if (element.groupName == '特别警示') {
if (!element.attribute) {
element.attribute = [{ name: '特别警示', content: '' }]
}
}
if (element.groupName == '单位概况') {
this.clickTitleItem(this.planTemplateData[1])
}
});
if (this.planLevel == '4' || this.route.snapshot.queryParams.haveNew) {
this.planTemplateData.push({ completed: true, groupName: '新建' })
}
this.planTemplateData.forEach(element => {
if (element.attribute != undefined) {
/* element.attribute.forEach((item,index,value) => {
if(value[index].level!=undefined&&value[index].level==1){
value[index].lieNumber=value[index].tableth.length
}
}); */
for (let i = 0; i < element.attribute.length; i++) {
if (element.attribute[i].level != undefined && element.attribute[i].level == 1) {
element.attribute[i].lieNumber = element.attribute[i].tableth.length
}
}
}
});
console.log(this.planTemplateData)
}
resolve(data)
})
})
}
//引入数据json
yinJson = {
//组织指挥
organizationCommands: {
tableCount: {
totalCount: 0,
tables: [
]
},
inputCount: {
totalCount: 0,
inputs: [
]
},
textAreaCount: {
totalCount: 0
},
treeCount: {
totalCount: 0
}
},
//社会联动
socialLinkages: {
tableCount: {
totalCount: 0,
tables: [
]
},
inputCount: {
totalCount: 0,
inputs: [
]
},
textAreaCount: {
totalCount: 0
},
treeCount: {
totalCount: 0
}
},
//勤务保障
serviceSupports: {
tableCount: {
totalCount: 0,
tables: [
]
},
inputCount: {
totalCount: 0,
inputs: [
]
},
textAreaCount: {
totalCount: 0
},
treeCount: {
totalCount: 0
}
},
//辅助决策
decisionSupports: {
tableCount: {
totalCount: 0,
tables: [
]
},
inputCount: {
totalCount: 0,
inputs: [
]
},
textAreaCount: {
totalCount: 0
},
treeCount: {
totalCount: 0
}
},
}
async yinRu(type) {
if (type == 0) {
this.yinJson = {
//组织指挥
organizationCommands: {
tableCount: {
totalCount: 0,
tables: [
]
},
inputCount: {
totalCount: 0,
inputs: [
]
},
textAreaCount: {
totalCount: 0
},
treeCount: {
totalCount: 0
}
},
//社会联动
socialLinkages: {
tableCount: {
totalCount: 0,
tables: [
]
},
inputCount: {
totalCount: 0,
inputs: [
]
},
textAreaCount: {
totalCount: 0
},
treeCount: {
totalCount: 0
}
},
//勤务保障
serviceSupports: {
tableCount: {
totalCount: 0,
tables: [
]
},
inputCount: {
totalCount: 0,
inputs: [
]
},
textAreaCount: {
totalCount: 0
},
treeCount: {
totalCount: 0
}
},
//辅助决策
decisionSupports: {
tableCount: {
totalCount: 0,
tables: [
]
},
inputCount: {
totalCount: 0,
inputs: [
]
},
textAreaCount: {
totalCount: 0
},
treeCount: {
totalCount: 0
}
},
}
var orgtableCount = 0
var orginputCount = 0
var orgtextAreaCount = 0
var orgtreeCount = 0
this.planTemplateData.forEach((value, index, array) => {
if (value.groupName == '组织指挥') {
value.attribute.forEach((orgvalue, orgi, orgArr) => {
if (orgArr[orgi].level == '1') {
orgtableCount++
this.yinJson.organizationCommands.tableCount.tables.push({ itemCount: orgArr[orgi].tableth.length })
} else if (orgArr[orgi].level == '2') {
orginputCount++
this.yinJson.organizationCommands.inputCount.inputs.push({ colCount: orgArr[orgi].lieNumber, rowCount: orgArr[orgi].hNumber })
} else if (orgArr[orgi].level == '3') {
orgtextAreaCount++
} else if (orgArr[orgi].level == '4') {
orgtreeCount++
}
});
}
this.yinJson.organizationCommands.tableCount.totalCount = orgtableCount
this.yinJson.organizationCommands.inputCount.totalCount = orginputCount
this.yinJson.organizationCommands.textAreaCount.totalCount = orgtextAreaCount
this.yinJson.organizationCommands.treeCount.totalCount = orgtreeCount
var shetableCount = 0
var sheinputCount = 0
var shetextAreaCount = 0
var shetreeCount = 0
if (value.groupName == '社会联动') {
value.attribute.forEach((orgvalue, orgi, orgArr) => {
if (orgArr[orgi].level == '1') {
shetableCount++
//this.yinJson.organizationCommands.tableCount.tables.push({itemCount:orgtableCount})
} else if (orgArr[orgi].level == '2') {
sheinputCount++
this.yinJson.socialLinkages.inputCount.inputs.push({ colCount: orgArr[orgi].lieNumber, rowCount: orgArr[orgi].hNumber })
} else if (orgArr[orgi].level == '3') {
shetextAreaCount++
} else if (orgArr[orgi].level == '4') {
shetreeCount++
}
});
}
this.yinJson.socialLinkages.tableCount.totalCount = shetableCount
this.yinJson.socialLinkages.inputCount.totalCount = sheinputCount
this.yinJson.socialLinkages.textAreaCount.totalCount = shetextAreaCount
this.yinJson.socialLinkages.treeCount.totalCount = shetreeCount
var qintableCount = 0
var qininputCount = 0
var qintextAreaCount = 0
var qintreeCount = 0
if (value.groupName == '勤务保障') {
value.attribute.forEach((orgvalue, orgi, orgArr) => {
if (orgArr[orgi].level == '1') {
qintableCount++
//this.yinJson.organizationCommands.tableCount.tables.push({itemCount:orgtableCount})
} else if (orgArr[orgi].level == '2') {
qininputCount++
this.yinJson.serviceSupports.inputCount.inputs.push({ colCount: orgArr[orgi].lieNumber, rowCount: orgArr[orgi].hNumber })
} else if (orgArr[orgi].level == '3') {
qintextAreaCount++
} else if (orgArr[orgi].level == '4') {
qintreeCount++
}
});
}
this.yinJson.serviceSupports.tableCount.totalCount = qintableCount
this.yinJson.serviceSupports.inputCount.totalCount = qininputCount
this.yinJson.serviceSupports.textAreaCount.totalCount = qintextAreaCount
this.yinJson.serviceSupports.treeCount.totalCount = qintreeCount
var futableCount = 0
var fuinputCount = 0
var futextAreaCount = 0
var futreeCount = 0
if (value.groupName == '辅助决策') {
value.attribute.forEach((orgvalue, orgi, orgArr) => {
if (orgArr[orgi].level == '1') {
futableCount++
//this.yinJson.organizationCommands.tableCount.tables.push({itemCount:orgtableCount})
} else if (orgArr[orgi].level == '2') {
fuinputCount++
this.yinJson.decisionSupports.inputCount.inputs.push({ colCount: orgArr[orgi].lieNumber, rowCount: orgArr[orgi].hNumber })
} else if (orgArr[orgi].level == '3') {
futextAreaCount++
} else if (orgArr[orgi].level == '4') {
futreeCount++
}
});
}
this.yinJson.decisionSupports.tableCount.totalCount = futableCount
this.yinJson.decisionSupports.inputCount.totalCount = fuinputCount
this.yinJson.decisionSupports.textAreaCount.totalCount = futextAreaCount
this.yinJson.decisionSupports.treeCount.totalCount = futreeCount
});
}
if (type == 5) {
var orgtableCount = 0
var orginputCount = 0
var orgtextAreaCount = 0
var orgtreeCount = 0
let index = this.getArrayIndex(this.planTemplateData, '组织指挥')
this.planTemplateData[index].attribute.forEach((orgvalue, orgi, orgArr) => {
if (orgArr[orgi].level == '1') {
orgtableCount++
this.yinJson.organizationCommands.tableCount.tables.push({ itemCount: orgArr[orgi].tableth.length })
} else if (orgArr[orgi].level == '2') {
orginputCount++
this.yinJson.organizationCommands.inputCount.inputs.push({ colCount: orgArr[orgi].lieNumber, rowCount: orgArr[orgi].hNumber })
} else if (orgArr[orgi].level == '3') {
orgtextAreaCount++
} else if (orgArr[orgi].level == '4') {
orgtreeCount++
}
});
this.yinJson.organizationCommands.tableCount.totalCount = orgtableCount
this.yinJson.organizationCommands.inputCount.totalCount = orginputCount
this.yinJson.organizationCommands.textAreaCount.totalCount = orgtextAreaCount
this.yinJson.organizationCommands.treeCount.totalCount = orgtreeCount
this.yinJson.decisionSupports = null
this.yinJson.serviceSupports = null
this.yinJson.socialLinkages = null
} if (type == 7) {
var orgtableCount = 0
var orginputCount = 0
var orgtextAreaCount = 0
var orgtreeCount = 0
let index = this.getArrayIndex(this.planTemplateData, '社会联动')
this.planTemplateData[index].attribute.forEach((orgvalue, orgi, orgArr) => {
if (orgArr[orgi].level == '1') {
orgtableCount++
//this.yinJson.organizationCommands.tableCount.tables.push({itemCount:orgtableCount})
} else if (orgArr[orgi].level == '2') {
orginputCount++
this.yinJson.socialLinkages.inputCount.inputs.push({ colCount: orgArr[orgi].lieNumber, rowCount: orgArr[orgi].hNumber })
} else if (orgArr[orgi].level == '3') {
orgtextAreaCount++
} else if (orgArr[orgi].level == '4') {
orgtreeCount++
}
});
this.yinJson.socialLinkages.tableCount.totalCount = orgtableCount
this.yinJson.socialLinkages.inputCount.totalCount = orginputCount
this.yinJson.socialLinkages.textAreaCount.totalCount = orgtextAreaCount
this.yinJson.socialLinkages.treeCount.totalCount = orgtreeCount
this.yinJson.serviceSupports = null
this.yinJson.organizationCommands = null
this.yinJson.decisionSupports = null
} if (type == 8) {
var orgtableCount = 0
var orginputCount = 0
var orgtextAreaCount = 0
var orgtreeCount = 0
let index = this.getArrayIndex(this.planTemplateData, '勤务保障')
this.planTemplateData[index].attribute.forEach((orgvalue, orgi, orgArr) => {
if (orgArr[orgi].level == '1') {
orgtableCount++
//this.yinJson.organizationCommands.tableCount.tables.push({itemCount:orgtableCount})
} else if (orgArr[orgi].level == '2') {
orginputCount++
this.yinJson.serviceSupports.inputCount.inputs.push({ colCount: orgArr[orgi].lieNumber, rowCount: orgArr[orgi].hNumber })
} else if (orgArr[orgi].level == '3') {
orgtextAreaCount++
} else if (orgArr[orgi].level == '4') {
orgtreeCount++
}
});
this.yinJson.serviceSupports.tableCount.totalCount = orgtableCount
this.yinJson.serviceSupports.inputCount.totalCount = orginputCount
this.yinJson.serviceSupports.textAreaCount.totalCount = orgtextAreaCount
this.yinJson.serviceSupports.treeCount.totalCount = orgtreeCount
this.yinJson.decisionSupports = null
this.yinJson.organizationCommands = null
this.yinJson.socialLinkages = null
} if (type == 10) {
var orgtableCount = 0
var orginputCount = 0
var orgtextAreaCount = 0
var orgtreeCount = 0
let index = this.getArrayIndex(this.planTemplateData, '处置要点')
this.planTemplateData[index].attribute.forEach((orgvalue, orgi, orgArr) => {
if (orgArr[orgi].level == '1') {
orgtableCount++
//this.yinJson.organizationCommands.tableCount.tables.push({itemCount:orgtableCount})
} else if (orgArr[orgi].level == '2') {
orginputCount++
this.yinJson.decisionSupports.inputCount.inputs.push({ colCount: orgArr[orgi].lieNumber, rowCount: orgArr[orgi].hNumber })
} else if (orgArr[orgi].level == '3') {
orgtextAreaCount++
} else if (orgArr[orgi].level == '4') {
orgtreeCount++
}
});
this.yinJson.decisionSupports.tableCount.totalCount = orgtableCount
this.yinJson.decisionSupports.inputCount.totalCount = orginputCount
this.yinJson.decisionSupports.textAreaCount.totalCount = orgtextAreaCount
this.yinJson.decisionSupports.treeCount.totalCount = orgtreeCount
this.yinJson.organizationCommands = null
this.yinJson.serviceSupports = null
this.yinJson.socialLinkages = null
}
// console.log(this.yinJson)
}
//查询能引入的预案
yinruData = {
items: []
}
searchYuan() {
this.yinRu(this.selectedItem == '组织指挥' ? 5 : this.selectedItem == '社会联动' ? 7 : this.selectedItem == '勤务保障' ? 8 : 10)
//console.log(JSON.stringify(this.yinJson))
var urlbm = encodeURI(JSON.stringify(this.yinJson))
let paramsdata: any = {
planCategory: this.planLevel,
buildingTypeId: this.route.snapshot.queryParams.unitTypeId,
OrganizationId: this.searchType == '0' ? '' : this.jsId,
CustomKeyword: this.searchType == '0' ? this.zdysearch : '',
webTextStatistics: urlbm,
PageNumber: this.PageNumber || '1',
PageSize: this.pageSizeOptions[0],
}
this.http.get("/api/PlanComponents/WebText", { params: paramsdata }).subscribe((data: any) => {
this.yinruData = null
this.yinruData = data
if (this.yinruData.items.length == 0) {
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
this.snackBar.open('暂无数据', '确定', config);
}
//console.log(this.yinruData)
})
}
//可引入预案点击事件
clickYinru(clicki) {
const dialogRef = this.dialog.open(yinYong, {
width: '750px',
height: '700px',
//disableClose: true
data: { selectedItem: this.selectedItem, yinruData: this.yinruData.items[clicki].webTextData }
});
dialogRef.afterClosed().subscribe(result => {
// console.log(result)
if (result != undefined) {
this.planTemplateData.forEach(element => {
if (element.groupName == this.selectedItem) {
element.attribute = result
}
});
}
}
);
}
//分页事件
changePage(e) {
this.PageNumber = e.pageIndex + 1
this.searchYuan()
}
//重点图示增加分组
addkeyImgItem(item) {
item.attribute.push({ name: '', imgArr: [] })
}
//处置要点增加分组
addDisposalPointItem(item) {
item.attribute.push({ name: '', content: '' })
}
//通过左侧查看实景图
gallery
lookkeyImgItemLeft(key1, key2, i) {
let dom = document.getElementById(`viewerjs`)
let pObjs = dom.childNodes;
let node = document.createElement("img")
node.style.display = "none";
node.src = '/api/Objects/PlanPlatform/' + i.imageUrl;
node.id = 'img'
dom.appendChild(node)
setTimeout(() => {
let viewer = new Viewer(document.getElementById(`viewerjs`), {
hidden: () => {
dom.removeChild(pObjs[0]);
viewer.destroy();
}
});
node.click();
}, 0);
}
//通过左侧实景图增加分组
addkeyImgItemLeft(item, i) {
this.planTemplateData.forEach(element => {
if (element.groupName == '重点图示') {
element.attribute.push({ name: item.name + '-' + i.name, imgArr: ['/api/Objects/PlanPlatform/' + i.imageUrl] })
}
});
}
//重点图示,处置要点删除指定分组
deleteItem(item, key) {
let isDelete = window.confirm('确定要删除该分组吗?分组下内容将一同被删除!')
if (isDelete) {
item.attribute.splice(key, 1)
}
}
//重点图示删除指定分组里面的图片
deleteImgItem(imgArr, imgkey) {
let isDelete = window.confirm('确定要删除该图片吗?')
if (isDelete) {
imgArr.splice(imgkey, 1)
}
}
//重点图示上传图片
filechange(e, i) {
console.log(i)
let file = e.target.files[0] || null //获取上传的文件
let fileSize = file.size || null //上传文件的总大小
let maxSize = 5 * 1024 * 1024 //5MB一个分片
let tenSize = 100 * 1024 * 1024 //100MB限制
if (file && fileSize <= maxSize) { //上传文件<=5MB时
let upload = this.uploadFile(this.route.snapshot.queryParams.companyId, this.route.snapshot.queryParams.planId, file)
upload.then((res: any) => {
if (i.tableth != undefined) {
i.tableth.json.push('/api/Objects/PlanPlatform/' + res.objectName)
} else {
i.imgArr.push('/api/Objects/PlanPlatform/' + res.objectName)
}
})
} else { //上传文件>5MB时
let upload = this.sectionUpload(this.route.snapshot.queryParams.companyId, this.route.snapshot.queryParams.planId, file)
upload.then(res => {
if (i.tableth != undefined) {
i.tableth.json.push('/api/Objects/PlanPlatform/' + res)
} else {
i.imgArr.push('/api/Objects/PlanPlatform/' + res)
}
})
}
//console.log(this.planTemplateData)
}
//单位相关数据
unitId: any = this.route.snapshot.queryParams.companyId
//获得所有的建筑物
allBuildings: any
async getAllBuildings() {
let result = await new Promise((resolve, reject) => {
this.http.get("/api/Buildings", {
params: {
companyId: this.unitId
}
}).subscribe((data: any) => {
data.forEach((item, index) => {
let params = { buildingId: item.id }
item.plandata = []
this.http.get('/api/BuildingAreas', { params }).subscribe(data => {
item.plandata = data
resolve(data)
})
})
this.allBuildings = data
})
})
}
//获取总平面图
sitePlanItems: any
getSitePlan() {
let params = { companyId: this.unitId }
this.http.get('/api/SitePlans', { params: params }).subscribe(data => {
this.sitePlanItems = data
})
}
//打开采集工具
openPlan(item, index, type?: string) {
sessionStorage.setItem("gisplan", 'look')
sessionStorage.setItem("companyId", this.unitId)
// console.log(item)
if (type == '预案') {
sessionStorage.setItem("planId", item.id)
sessionStorage.setItem("companyId", this.route.snapshot.queryParams.companyId)
sessionStorage.setItem("buildingTypeId", this.route.snapshot.queryParams.unitTypeId)
sessionStorage.setItem("editable", "0")
sessionStorage.setItem("planName", item.name)
sessionStorage.setItem("orName", item.name)
sessionStorage.setItem("orId", item.name)
}
let data = { select: item, key: index, allBuildings: this.allBuildings, type: type }
let width = Math.round(document.body.clientWidth * 0.8) + 'px'
let height = Math.round(document.body.clientHeight * 0.9) + 'px'
// console.log('宽度',width)
let dialogRef = this.dialog.open(OpenPlanToolDialog, {//调用open方法打开对话框并且携带参数过去
id: 'openPlanToolDialog',
data,
width: width,
height: height
});
dialogRef.afterClosed().subscribe((data) => { });
}
//正常上传
async uploadFile(companyId: string, planId: string, file) {
let formData = new FormData()
formData.append("file", file)
return new Promise((resolve, reject) => {
this.http.post(`/api/Objects/PlanPlatform/${companyId}/${planId}`, formData).subscribe((data: any) => {
resolve(data)
})
})
}
//input key值,一个字符焦点消失问题
trackByFn(index) {
return index
}
//四种类型增加一行
addNumber = -1
addTd(key, i) {
this.addNumber++
if (this.planTemplateData[key].attribute[i].tableth == undefined || this.planTemplateData[key].attribute[i].tableth.length == 0) {
//this.planTemplateData[key].attribute[i].tabletr = []
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
this.snackBar.open('请先编辑列!', '确定', config);
} else {
if (this.planTemplateData[key].attribute[i].tabletr == undefined) {
this.planTemplateData[key].attribute[i].tabletr = []
}
this.planTemplateData[key].attribute[i].tabletr.push({ tabletd: [] })
for (var j = 0; j < this.planTemplateData[key].attribute[i].tableth.length; j++) {
if (this.planTemplateData[key].attribute[i].tabletr != undefined) {
this.planTemplateData[key].attribute[i].tabletr[this.planTemplateData[key].attribute[i].tabletr.length - 1].tabletd.push('')
}
else {
this.planTemplateData[key].attribute[i].tabletr[this.addNumber].tabletd.push('')
}
}
}
// console.log(this.planTemplateData)
}
//四种类型删除一行
delTd(key, i, tri?: number, uniti?: number, elei?: number) {
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
let isTrue = confirm('您确定要删除该条信息吗')
if (isTrue) {
if (tri == undefined) {
this.planTemplateData[key].attribute.splice(i, 1)
} else {
if (uniti == undefined && elei == undefined) {
this.planTemplateData[key].attribute[i].tabletr.splice(tri, 1)
} else {
this.planTemplateData[key].building[i].body[tri].attinf[uniti].tabletr.splice(elei, 1)
}
}
}
}
//修改多行文本,表格行列数量
updataHl(...num: number[]) {
const dialogRef = this.dialog.open(updataHl, {//调用open方法打开对话框并且携带参数过去
width: '340px',
height: '350px',
disableClose: true,
data: JSON.parse(JSON.stringify(num.length < 3 ? this.planTemplateData[num[0]].attribute[num[1]] : this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]]))
});
dialogRef.afterClosed().subscribe(result => {
if (result != undefined) {
//外层四种类型编辑行跟列
if ((num.length < 3 ? this.planTemplateData[num[0]].attribute[num[1]] : this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]]).level == 1) {
//表格类型编辑列数
if ((num.length < 3 ? this.planTemplateData[num[0]].attribute[num[1]] : this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]]).tabletr == undefined) {
(num.length < 3 ? this.planTemplateData[num[0]].attribute[num[1]] : this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]]).tabletr = []
}
if ((num.length < 3 ? this.planTemplateData[num[0]].attribute[num[1]] : this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]]).tableth.length < result.lieNumber) {
//表格类型新增列数
for (let i = (num.length < 3 ? this.planTemplateData[num[0]].attribute[num[1]] : this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]]).tableth.length; i < result.lieNumber; i++) {
(num.length < 3 ? this.planTemplateData[num[0]].attribute[num[1]] : this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]]).tableth.push('')
if ((num.length < 3 ? this.planTemplateData[num[0]].attribute[num[1]] : this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]]).tabletr != undefined) {
(num.length < 3 ? this.planTemplateData[num[0]].attribute[num[1]] : this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]]).tabletr.forEach(element => {
element.tabletd.push('')
});
}
}
} else {
//表格类型减少列数
for (let i = (num.length < 3 ? this.planTemplateData[num[0]].attribute[num[1]] : this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]]).tableth.length; i > result.lieNumber; i--) {
(num.length < 3 ? this.planTemplateData[num[0]].attribute[num[1]] : this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]]).tableth.splice(i - 1, 1)
if ((num.length < 3 ? this.planTemplateData[num[0]].attribute[num[1]] : this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]]).tabletr != undefined) {
(num.length < 3 ? this.planTemplateData[num[0]].attribute[num[1]] : this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]]).tabletr.forEach((element) => {
element.tabletd.splice(element.tabletd.length - 1, 1)
});
}
}
}
} else if ((num.length < 3 ? this.planTemplateData[num[0]].attribute[num[1]] : this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]]).level == 2) {
//多行文本编辑行列
if ((num.length < 3 ? this.planTemplateData[num[0]].attribute[num[1]] : this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]]).tableth.length < result.hNumber) {
for (let i = (num.length < 3 ? this.planTemplateData[num[0]].attribute[num[1]] : this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]]).tableth.length; i < result.hNumber; i++) {
(num.length < 3 ? this.planTemplateData[num[0]].attribute[num[1]] : this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]]).tableth.push([{ body: '', head: '' }])
}
} else {
for (let i = (num.length < 3 ? this.planTemplateData[num[0]].attribute[num[1]] : this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]]).tableth.length; i > result.hNumber; i--) {
(num.length < 3 ? this.planTemplateData[num[0]].attribute[num[1]] : this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]]).tableth.splice(i - 1, 1)
}
}
(num.length < 3 ? this.planTemplateData[num[0]].attribute[num[1]] : this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]]).tableth.forEach((element, index, value) => {
if (value[index].length < result.lieNumber) {
for (let a = value[index].length; a < result.lieNumber; a++) {
value[index].push({ body: '', head: '' })
}
} else {
for (let a = value[index].length; a > result.lieNumber; a--) {
value[index].splice(index - 1, 1)
}
}
});
}
console.log(this.planTemplateData)
}
});
}
//新建内容向上排序
upPai(zi, attributei) {
var temp
if (attributei != 0) {
for (let index = attributei - 1; index >= 0; index--) {
temp = this.planTemplateData[zi].attribute[index]
this.planTemplateData[zi].attribute[index] = this.planTemplateData[zi].attribute[attributei]
this.planTemplateData[zi].attribute[attributei] = temp
return
}
}
}
//新建内容向下排序
downPai(zi, attributei) {
var temp
if (attributei != this.planTemplateData[zi].attribute.length - 1) {
for (let index = attributei + 1; index < this.planTemplateData[zi].attribute.length; index++) {
temp = this.planTemplateData[zi].attribute[index]
this.planTemplateData[zi].attribute[index] = this.planTemplateData[zi].attribute[attributei]
this.planTemplateData[zi].attribute[attributei] = temp
return
}
}
}
//单位概况左侧建筑点击事件
buildingName
clicki = 0
group
clickBuilding(item, i) {
this.buildingName = item.name
this.clicki = i
// console.log(item, this.clicki)
}
//单位概况增加一行
unitadd(surveyName, attacki, i, fileNum?: number) {
let index = this.getArrayIndex(this.planTemplateData, '单位概况')
this.addNumber++
this.planTemplateData[index].building[attacki].body.forEach((value, bodyi, arr) => {
if (surveyName == arr[bodyi].surveyName) {
console.log(bodyi)
if (arr[bodyi].zdy == undefined) {
if (surveyName == '进攻通道') {
if (this.planTemplateData[index].building[attacki].body[bodyi].attinf == undefined) {
this.planTemplateData[index].building[attacki].body[bodyi].attinf = []
}
if (this.planTemplateData[index].building[attacki].body[bodyi].attinf[i].tabletr == undefined) {
this.planTemplateData[index].building[attacki].body[bodyi].attinf[i].tabletr = []
}
this.planTemplateData[index].building[attacki].body[bodyi].attinf[i].tabletr.push({ tabletd: [] })
for (var j = 0; j < this.planTemplateData[index].building[attacki].body[bodyi].attinf[i].tableth.length; j++) {
if (this.planTemplateData[index].building[attacki].body[bodyi].attinf[i].tabletr != undefined) {
this.planTemplateData[index].building[attacki].body[bodyi].attinf[i].tabletr[this.planTemplateData[index].building[attacki].body[4].attinf[i].tabletr.length - 1].tabletd.push('')
}
else {
this.planTemplateData[index].building[attacki].body[bodyi].attinf[i].tabletr[this.addNumber].tabletd.push('')
}
}
// console.log(this.planTemplateData)
}
else if (surveyName == '功能分区') {
// console.log(attacki)
this.planTemplateData[index].building[attacki].body[bodyi].attinf.push({ name: '', value: '' })
} else if (surveyName == '重点部位') {
this.planTemplateData[index].building[attacki].body[bodyi].attinf.push({ heafName: '', body: [{ name: '重点部位名称', value: '' }, { name: '重点部位所在位置', value: '' }, { name: '建筑结构', value: '' }, { name: '使用性质', value: '' }, { name: '主要危险性', value: '' }] })
}
else if (surveyName == '单位基本信息' || surveyName == '建筑信息') {
if (this.planTemplateData[index].building[attacki].body[bodyi].attinf == undefined) {
this.planTemplateData[index].building[attacki].body[bodyi].attinf = []
}
this.planTemplateData[index].building[attacki].body[bodyi].attinf.push({ propertyName: '', value: '', completed: true, zdy: true })
} else if (surveyName == '四周毗邻') {
this.planTemplateData[index].building[attacki].body[bodyi].attinf.push({ name: '', value: '', completed: true, zdy: false })
this.planTemplateData[index].building[attacki].body[bodyi].attinf.push({ name: '', value: '', completed: true, zdy: true })
} else if (surveyName == '消防设施') {
if (this.planTemplateData[index].building[attacki].body[bodyi].attinf == undefined) {
this.planTemplateData[index].building[attacki].body[bodyi].attinf = []
}
if (fileNum == 0) {
this.planTemplateData[index].building[attacki].body[bodyi].attinf[i].facilityItems.push({ name: '', value: '', completed: true, zdy: true })
} else {
this.planTemplateData[index].building[attacki].body[bodyi].attinf.push({ name: '', value: '', completed: true, zdy: true, facilityItems: [] })
}
}
} else {
this.addAttribute(surveyName, attacki, i, 1, surveyName)
}
}
})
console.log(this.planTemplateData)
}
//单位概况自定义表格新增一行
unitNewadd(...num: number[]) {
console.log(num)
if (this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]].tableth == undefined || this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]].tableth.length == 0) {
//this.planTemplateData[key].attribute[i].tabletr = []
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
this.snackBar.open('请先编辑列!', '确定', config);
} else {
if (this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]].tabletr == undefined) {
this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]].tabletr = []
}
this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]].tabletr.push({ tabletd: [] })
for (var j = 0; j < this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]].tableth.length; j++) {
if (this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]].tabletr != undefined) {
this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]].tabletr[this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]].tabletr.length - 1].tabletd.push('')
}
else {
this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]].tabletr[this.addNumber].tabletd.push('')
}
}
}
console.log(this.planTemplateData)
//this.planTemplateData[num[0]].building[num[1]].body[num[2]].attinf[num[3]].push()
}
//单位概况删除一行
unitDel(surveyName, attacki, i, fileNum?: number) {
let index = this.getArrayIndex(this.planTemplateData, '单位概况')
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
let isTrue = confirm('您确定要删除该条信息吗')
this.planTemplateData[index].building[attacki].body.forEach((value, bodyi, arr) => {
if (surveyName == arr[bodyi].surveyName) {
if (surveyName == '进攻通道') {
if (isTrue) {
if (this.planTemplateData[index].building[attacki].body[bodyi].attinf[i].tabletr != undefined) {
this.planTemplateData[index].building[attacki].body[bodyi].attinf[i].tabletr.splice(this.planTemplateData[index].building[attacki].body[4].attinf[i].tabletr.length - 1, 1)
this.addNumber--
if (this.planTemplateData[index].building[attacki].body[bodyi].attinf[i].tabletr.length == 0) {
this.addNumber = -1
}
} else {
this.snackBar.open('请先增加一行!', '确定', config);
}
}
} else if (surveyName == '功能分区' || surveyName == '重点部位' || surveyName == '单位基本信息' || surveyName == '建筑信息' || surveyName == '消防设施') {
if (isTrue) {
if (surveyName == '消防设施' && fileNum != undefined) {
this.planTemplateData[index].building[attacki].body[bodyi].attinf[i].facilityItems.splice(fileNum, 1)
} else {
this.planTemplateData[index].building[attacki].body[bodyi].attinf.splice(i, 1)
}
}
} else if (surveyName == '四周毗邻') {
this.planTemplateData[index].building[attacki].body[bodyi].attinf.splice(i, 1)
this.planTemplateData[index].building[attacki].body[bodyi].attinf.splice(i - 1, 1)
}
}
});
}
//分段上传
sectionUpload(companyId: string, planId: string, file) {
let data = { filename: file.name }
return new Promise((resolve, reject) => {
this.http.post(`/api/NewMultipartUpload/PlanPlatform/${companyId}/${planId}`, {}, { params: data }).subscribe(async (data: any) => { //初始化分段上传
let objectName = data.objectName
let uploadId = data.uploadId
let PartNumberETag = []; //每次返回需要保存的信息
//分块 处理
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/${objectName}?uploadId=${uploadId}&partNumber=${i + 1}`, formData).subscribe((data: any) => {
let msg = { "partNumber": data.partNumber || null, "eTag": data.eTag || null }
resolve(msg) // 调用 promise 内置方法处理成功
})
});
PartNumberETag.push(result)
if (PartNumberETag.length === allSlice) { //分块上传完成
let data = PartNumberETag
let paramsData = { uploadId: uploadId }
this.http.post(`/api/CompleteMultipartUpload/PlanPlatform/${objectName}`, data, { params: paramsData }).subscribe(data => {
resolve(objectName)
})
}
}//for循环
//分块 处理
})
})
}
//预览
pattern: string = 'edit'
preview() {
this.pattern = 'look'
this.clickTitleItem('单位概况')
}
quitPreview() {
this.pattern = 'edit'
}
//提交
async submit() {
await this.yinRu(0)
//console.log('提交信息', this.planTemplateData)
let body = {
webTextData: JSON.stringify(this.planTemplateData),
webTextStatistics: this.yinJson
}
this.http.put(`/api/PlanComponents/${this.route.snapshot.queryParams.planId}`, body).subscribe(data => {
// console.log('提交成功',data)
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
this.snackBar.open('提交成功', '确定', config);
})
}
//返回顶部
goBack() {
document.querySelector('#mainbox').scrollIntoView(true)
}
//生成word
generatingDoc() {
/* changeImgToDataurl()
function changeImgToDataurl() {
let charImg = document.getElementsByTagName("img");
console.log(charImg)
let imgURLs = "";
for (let i = 0; i < charImg.length; i++) {
let imgURL = charImg[i].currentSrc;
getBase64(imgURL, charImg[i]);
}
}
function getBase64(url, charImg) {
let Img = new Image();
Img.crossOrigin = "Anonymous";//跨域必须使用,且后台也得设置允许跨域
let dataURL = '';
Img.src = url;
Img.onload = function () { //要先确保图片完整获取到,这是个异步事件
let canvas = document.createElement("canvas"), //创建canvas元素
width = Img.width, //确保canvas的尺寸和图片一样
height = Img.height;
canvas.width = width;
canvas.height = height;
canvas.getContext("2d").drawImage(Img, 0, 0, width, height); //将图片绘制到canvas中
dataURL = canvas.toDataURL('image/jpg'); //转换图片为dataURL
condataurl ? condataurl(dataURL, charImg) : null; //调用回调函数
};
}
function condataurl(dataURL, charImg) {
charImg.src = dataURL;
} */
this.planTemplateData.forEach(element => {
if (element.groupName == '交通水源' || element.groupName == '重点图示') {
if (element.attribute[0].imgArr.length > 0) {
for (let i = 0; i < element.attribute[0].imgArr.length; i++) {
console.log(element.attribute[0].imgArr[i])
element.attribute[0].imgArr[i] = String(element.attribute[0].imgArr[i]) + '?x-image-process=image/format,jpg'
}
}
}
});
console.log(this.planTemplateData)
$(".mainbox").wordExport('word文档');
}
//原数据点击
oldData = false
clickoldData() {
this.oldData = !this.oldData
}
//新增功能(社会联动等引用)
searchType = '0'
//打开自定义新增具体内容
tuTrue = false
addAttribute(groupName, attacki?: any, bi?: any, fileNum?: any, surveyName?: string) {
let index = this.getArrayIndex(this.planTemplateData, '单位概况')
const dialogRef = this.dialog.open(disaster, {//调用open方法打开对话框并且携带参数过去
width: '340px',
height: '450px',
disableClose: true,
data: this.planTemplateData
});
dialogRef.afterClosed().subscribe(result => {
if (result != undefined) {
if (surveyName == undefined) {
this.planTemplateData.forEach((value, index, array) => {
if (array[index].groupName == groupName) {
if (array[index].attribute == undefined) {
array[index].attribute = []
array[index].attribute.push(result)
} else {
array[index].attribute.push(result)
}
if (result.level == 2) {
for (let i = 0; i < result.hNumber; i++) {
array[index].attribute[array[index].attribute.length - 1].tableth.push([{ head: '', body: '' }])
for (var j = 0; j < result.lieNumber - 1; j++) {
array[index].attribute[array[index].attribute.length - 1].tableth[i].push({ head: '', body: '' })
}
}
}
}
})
}
else {
this.planTemplateData[index].building[attacki].body[bi].attinf.push(result)
if (result.level == 2) {
for (var i = 0; i < result.hNumber; i++) {
this.planTemplateData[index].building[attacki].body[bi].attinf[this.planTemplateData[index].building[attacki].body[bi].attinf.length - 1].tableth.push([{ head: '', body: '' }])
for (var j = 0; j < result.lieNumber - 1; j++) {
this.planTemplateData[index].building[attacki].body[bi].attinf[this.planTemplateData[index].building[attacki].body[bi].attinf.length - 1].tableth[i].push({ head: '', body: '' })
}
}
}
}
if (result.level == '4') {
this.tuTrue = true
this.getAllBuildings()
this.getSitePlan()
this.getRealPicture()
}
}
console.log(this.planTemplateData)
});
}
//自定义内容删除一条数据
delDisaster(name, i) {
let isTrue = confirm('您确定要删除该条信息吗')
if (isTrue) {
this.planTemplateData.forEach((value, index, array) => {
if (array[index].groupName == name) {
this.planTemplateData[index].attribute.splice(i, 1)
}
})
}
}
//自定义添加表格数据
attackAdd(name, i, level) {
//console.log(name,i)
this.planTemplateData.forEach((value, index, array) => {
if (array[index].groupName == name) {
if (level == 1) {
this.planTemplateData[index].attribute[i].tableth.push('')
} else if (level == 2) {
this.planTemplateData[index].attribute[i].tableth.push({ head: '', body: '' })
}
}
})
//console.log(this.newleftTabledata)
}
//自定义模块删除一张图片
delImg(key, attributei, imgkey) {
let isDelete = window.confirm('确定要删除该分组吗?分组下内容将一同被删除!')
if (isDelete) {
this.planTemplateData[key].attribute[attributei].tableth.json.splice(imgkey, 1)
}
}
//鼠标移入图片显示
showTu(key) {
this.planTemplateData[key].new = true
}
//上传
upload() {
let isTrue = confirm('上传新文件后可能会覆盖原有数据,您确定要继续上传吗')
if (isTrue) {
document.getElementById('up').click()
}
}
//在线文档上传接口
fileData
iftrue = false
fileSc(e) {
this.clickTitleItem(this.planTemplateData[1])
this.iftrue = true
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
let formData = new FormData()
formData.append("file", e.target.files[0])
console.log(formData)
let type = this.unitData.buildingTypes[0].name == '高层建筑' ? 1 : this.unitData.buildingTypes[0].name == '居民小区' ? 2 : this.unitData.buildingTypes[0].name == '厂房' ? 3
: (this.unitData.buildingTypes[0].name == '商市场' || this.unitData.buildingTypes[0].name == '医院' || this.unitData.buildingTypes[0].name == '学校'
|| this.unitData.buildingTypes[0].name == '宾馆' || this.unitData.buildingTypes[0].name == '娱乐场所' || this.unitData.buildingTypes[0].name == '餐饮业'
|| this.unitData.buildingTypes[0].name == '影剧院' || this.unitData.buildingTypes[0].name == '展览建筑' || this.unitData.buildingTypes[0].name == '养老院'
|| this.unitData.buildingTypes[0].name == '会议中心') ? 4 : this.unitData.buildingTypes[0].name == '储罐类' ? 'StorageTankFivePlan' :
this.unitData.buildingTypes[0].name == '化工生产' ? 'ChemicalProductionFivePlan' : this.unitData.buildingTypes[0].name == '轨道交通' ? 'MetroFivePlan' :
this.unitData.buildingTypes[0].name == '地下建筑' ? 'UndergroundBuildingFivePlan' : this.unitData.buildingTypes[0].name == '农村' ? 'CountrysideFivePlan' : ''
this.http.post(`/api/OfficeExtract/ExtractWordPlan?type=${type}`, formData).subscribe((data: any) => {
console.log(data)
if (data == null) {
this.snackBar.open('解析失败,请确定好格式再重新上传!', '确定', config);
} else {
this.fileData = JSON.parse(JSON.stringify(data))
this.fileData.forEach((value, index, array) => {
if (value.groupName == '交通水源' || value.groupName == '重点图示') {
value.attribute.forEach(element => {
if (element.imgArr != undefined && element.imgArr.length > 0) {
element.imgArr[0] = "/api/" + element.imgArr[0].split('/api/')[1]
//element.imgArr[0]=element.imgArr[0].slice(25,element.imgArr[0].length) //+'?x-image-process=image/format,png'
}
});
}
this.planTemplateData.forEach((pvalue, pindex, parr) => {
if (parr[1].building == undefined) {
this.planTemplateData[index].building = []
if (array[index].groupName == parr[pindex].groupName) {
parr[pindex].attribute = array[index].attribute
}
} else {
if (array[index].groupName == parr[pindex].groupName && pindex != 1) {
parr[pindex].attribute = array[index].attribute
} else if (array[index].groupName == parr[pindex].groupName && pindex == 1) {
parr[pindex].building[0].body = array[index].attribute
}
}
});
});
//console.log(this.fileData)
this.snackBar.open('解析成功!', '确定', config);
}
this.iftrue = false
e.target.value = ''
})
}
//消防设施新增一条数据
zdyXf(groupName) {
const dialogRef = this.dialog.open(disaster, {//调用open方法打开对话框并且携带参数过去
width: '340px',
height: '450px',
disableClose: true,
data: this.planTemplateData
});
dialogRef.afterClosed().subscribe(result => {
console.log(result)
if (result != undefined) {
this.planTemplateData.forEach((value, index, array) => {
if (array[index].groupName == groupName) {
if (array[index].attribute == undefined) {
array[index].attribute = []
array[index].attribute.push(result)
} else {
array[index].attribute.push(result)
}
if (result.level == 2) {
for (var i = 0; i < result.hNumber; i++) {
array[index].attribute[array[index].attribute.length - 1].tableth.push([{ head: '', body: '' }])
for (var j = 0; j < result.lieNumber - 1; j++) {
array[index].attribute[array[index].attribute.length - 1].tableth[i].push({ head: '', body: '' })
}
}
}
}
})
if (result.level == '4') {
this.tuTrue = true
this.getAllBuildings()
this.getSitePlan()
this.getRealPicture()
}
}
console.log(this.planTemplateData)
});
}
//单位概况自定义新增数据
unitZdyaaa() {
let list = []
let index = this.getArrayIndex(this.planTemplateData, '单位概况')
const dialogRef = this.dialog.open(adddwsurvey, {//调用open方法打开对话框并且携带参数过去
width: '240px',
height: '420px',
disableClose: true,
data: this.planTemplateData
});
dialogRef.afterClosed().subscribe(result => {
console.log(result)
if (result != undefined) {
if (result.length > this.planTemplateData.length) {
result.forEach((valuer, i, rarr) => {
let temp = 0
this.planTemplateData[index].attribute.forEach((group, gi, garr) => {
if (valuer.surveyName == group.surveyName) {
temp++
}
})
if (temp == 0) {
//将缺少的填上
this.planTemplateData[index].attribute.push(valuer)
}
});
}
result.forEach((valuer, i, rarr) => {
this.planTemplateData[index].attribute.forEach((group, gi, garr) => {
if (garr[gi].surveyName == rarr[i].surveyName) {
garr[gi].completed = rarr[i].completed
}
});
})
this.planTemplateData[index].building[this.clicki].body = this.planTemplateData[index].attribute
}
console.log(this.planTemplateData)
})
}
//建筑信息和消防设施模板信息添加
addBuildingmb(element) {
let index = this.getArrayIndex(this.planTemplateData, '单位概况')
console.log(element, this.buildingsData)
const dialogRef = this.dialog.open(adddwsurveys, {//调用open方法打开对话框并且携带参数过去
width: '290px',
height: '460px',
disableClose: true,
data: { element: element, buildingID: this.buildingsData[0].basicCategoryId, fid: this.route.snapshot.queryParams.unitTypeId }
});
dialogRef.afterClosed().subscribe(result => {
if (result != undefined) {
this.planTemplateData[index].building[this.clicki].body.forEach(item => {
if (item.surveyName == element.surveyName) {
element.attinf = result
}
});
}
})
}
//消防设施具体属性编辑
fileAdd(facilityItems, filei, filename) {
let index = this.getArrayIndex(this.planTemplateData, '单位概况')
if (facilityItems.length != 0) {
const dialogRef = this.dialog.open(adddwsurveys, {//调用open方法打开对话框并且携带参数过去
width: '240px',
height: '400px',
disableClose: true,
data: { facilityItems: facilityItems, filename, fid: this.route.snapshot.queryParams.unitTypeId }
});
dialogRef.afterClosed().subscribe(result => {
console.log(result)
if (result != undefined) {
this.planTemplateData[index].building[this.clicki].body.forEach(element => {
if (element.surveyName == '消防设施') {
element.attinf[filei].facilityItems = result
}
});
}
})
}
}
//单位概况自定义
zdyDw() {
let index = this.getArrayIndex(this.planTemplateData, '单位概况')
const dialogRef = this.dialog.open(zdyaddattinf, {//调用open方法打开对话框并且携带参数过去
width: '340px',
height: '200px',
disableClose: true,
//data:this.planTemplateData
});
dialogRef.afterClosed().subscribe(result => {
if (result != undefined) {
this.planTemplateData[index].building[this.clicki].body.push({ surveyName: result.groupName, completed: true, attinf: [], zdy: true })
}
})
}
}
//查看预案
@Component({
selector: 'lookPlan-dialog',
templateUrl: './openPlanTool.html',
styleUrls: ['./openPlanTool.scss']
})
export class OpenPlanToolDialog {
constructor(public http: HttpClient, public snackBar: MatSnackBar, public dialogRef: MatDialogRef<OpenPlanToolDialog>,
@Inject(MAT_DIALOG_DATA) public data, private render2: Renderer2, public dialog: MatDialog, private route: ActivatedRoute) { }
@ViewChild('plan') plan: any //子组件
type: any//打开的类型 是平面图还是水源
ngOnInit() {
this.type = this.data.type
}
ngAfterViewInit(): void {
if (this.type != '水源' && this.type != '预案') {
this.noticePlan()
}
}
//通知 子组件 传递参数
noticePlan() {
this.plan.isEditPattern = false
let parameter = { //查询 节点 对应 建筑/楼层 index,id
buildingIndex: this.data.key, //总平面图/建筑 index
storeyId: this.data.select.id
}
this.http.get("/api/Buildings", { params: { companyId: this.route.snapshot.queryParams.companyId } }).subscribe((data: any) => {
this.plan.allBuildings = data
this.plan.isGis = this.data.select.isGis
this.plan.seekPanelPoint(parameter)
})
}
//关闭弹窗
closeDiv() {
this.dialogRef.close()
}
}
//查看引用
@Component({
selector: 'yinYong',
templateUrl: './yinyong.html',
styleUrls: ['./create-plan-online-five.component.scss']
})
export class yinYong {
constructor(public http: HttpClient, public snackBar: MatSnackBar, public dialogRef: MatDialogRef<yinYong>,
@Inject(MAT_DIALOG_DATA) public data, public dialog: MatDialog) { }
ngOnInit() {
this.selectedItem = this.data.selectedItem
this.planTemplateData = JSON.parse(this.data.yinruData)
this.yinData()
// console.log(this.planTemplateData)
}
selectedItem//传来的组织指挥或者。。。
planTemplateData//传来的数据
selectData
xuanze: boolean
//imgUrl
//看看查的是哪个标题下的内容
yinData() {
this.planTemplateData.forEach((pvale, pi, parr) => {
if (pvale.groupName == this.selectedItem) {
this.selectData = pvale.attribute
}
});
}
trackByFn(index) {
return index
}
//关闭弹窗
closeDiv() {
let isTrue = confirm('您确定要引用该条预案吗')
if (isTrue) {
this.xuanze = true
this.dialogRef.close(this.selectData)
}
else {
this.xuanze = false
this.dialogRef.close()
}
}
}
//新建模板
@Component({
selector: 'newTitle',
templateUrl: './newTitle.html',
styleUrls: ['./create-plan-online-five.component.scss']
})
export class newTitle {
constructor(private http: HttpClient, public dialogRef: MatDialogRef<newTitle>, @Inject(MAT_DIALOG_DATA) public data, public snackBar: MatSnackBar) { }
ngOnInit() {
console.log(this.data)
if (this.data.planName != undefined) {
this.planname = this.data.planName
}
}
planname//预案名称
//取消按钮
close() {
this.dialogRef.close();
}
//确定按钮
planName() {
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
if (this.planname == '' || this.planname == undefined) {
this.snackBar.open('请输入名称', '确定', config);
} else {
this.data.planTemplateData.forEach(element => {
if (element.groupName == this.planname) {
this.snackBar.open('您输入的名称重复', '确定', config);
this.planname = undefined
this.dialogRef.close();
return
}
});
this.dialogRef.close(this.planname);
}
}
}
//新建模块新增具体内容
@Component({
selector: 'disaster',
templateUrl: './Disaster.html',
styleUrls: ['./addKeyname.scss']
})
export class disaster {
constructor(private http: HttpClient, public dialogRef: MatDialogRef<disaster>, @Inject(MAT_DIALOG_DATA) public data, public snackBar: MatSnackBar) { }
ngOnInit(): void {
//console.log(this.data)
}
level//类型
headName//表头名称
lieNumber//列数
hNumber//行数
//取消按钮
close() {
this.dialogRef.close();
}
//确定按钮
newdisaster() {
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
if (this.level == undefined || this.level == '') {
this.snackBar.open('请选择类型!', '确定', config);
} else if (this.headName == undefined || this.headName == '') {
this.snackBar.open('请输入表头名称!', '确定', config);
} else if (this.level == 2 && (this.lieNumber == undefined || this.lieNumber == '')) {
this.snackBar.open('列数不许为空,并且列数大于0!', '确定', config);
} else if (this.level == 2 && (this.hNumber == undefined || this.hNumber == '')) {
this.snackBar.open('行数不许为空,并且行数大于0!!', '确定', config);
}
else {
let tree = {
json: [],
name: ''
}
let attrubute = {
headName: this.headName,
level: this.level,
tableth: this.level == 1 || this.level == 2 ? [] : this.level == 3 ? '' : tree,
lieNumber: this.lieNumber,
hNumber: this.hNumber,
imgArr: [],
zdy: true
}
this.dialogRef.close(attrubute);
}
}
}
//修改表格,都行文本行列
@Component({
selector: 'updataHl',
templateUrl: './updatal.html',
styleUrls: ['./addKeyname.scss']
})
export class updataHl {
constructor(private http: HttpClient, public dialogRef: MatDialogRef<updataHl>, @Inject(MAT_DIALOG_DATA) public data, public snackBar: MatSnackBar) { }
ngOnInit(): void {
JSON.parse(JSON.stringify(this.data))
this.level = Number(this.data.level)
console.log(this.data)
this.lieNumber = this.level == 2 ? this.data.tableth[0].length : 0//最小列数 this.data.zdy!=undefined?0:
this.hNumber = this.level == 2 ? this.data.tableth.length : 0//行数this.data.zdy!=undefined?0:
}
level//类型
headName = this.data.headName//表头名称
lieNumber
hNumber
//取消按钮
close() {
this.dialogRef.close();
}
inputChange() {
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
if (this.level == 2 && (this.lieNumber == undefined || this.lieNumber == '')) {
this.snackBar.open('请输入列数,并且列数大于0!', '确定', config);
} else if (this.level == 2 && (this.hNumber == undefined || this.hNumber == '')) {
this.snackBar.open('请输入行数,并且行数大于0!!', '确定', config);
}
}
//确定按钮
newdisaster() {
console.log(this.lieNumber, this.hNumber)
let result = {
lieNumber: this.level == 2 ? this.lieNumber : this.data.tableth.length,
hNumber: this.hNumber
}
const config = new MatSnackBarConfig();
config.verticalPosition = 'top';
config.duration = 3000
if (this.level == undefined || this.level == '') {
this.snackBar.open('请选择类型!', '确定', config);
} else if (this.headName == undefined || this.headName == '') {
this.snackBar.open('请输入表头名称!', '确定', config);
} else if (this.level == 2 && (this.lieNumber == undefined || this.lieNumber == '')) {
this.snackBar.open('列数不许为空,并且列数大于0!', '确定', config);
} else if (this.level == 2 && (this.hNumber == undefined || this.hNumber == '')) {
this.snackBar.open('行数不许为空,并且行数大于0!!', '确定', config);
} else if (this.level == 1 && this.data.tableth.length <= 0) {
this.snackBar.open('列数不许为空,并且列数大于0!', '确定', config);
}
else {
this.dialogRef.close(result);
}
}
}
//建筑跟消防设施添加模板数据
@Component({
selector: 'adddwsurveys',
templateUrl: './addattinf.html',
styleUrls: ['./addgroup.scss']
})
export class adddwsurveys {
constructor(private http: HttpClient, public dialogRef: MatDialogRef<adddwsurveys>, @Inject(MAT_DIALOG_DATA) public data, public snackBar: MatSnackBar) { }
addAttinfBuild = []
buildnewDate = []
addAttinfFile//过滤消防设施外层数据
filenewDate = []
facilityItems//过滤消防设施最内层数据
facilityCategoryId//消防设施内容id
zdyData//模板传过来自定义的数据
ngOnInit(): void {
this.getinf()
console.log(this.data)
}
async getinf() {
if (this.data.facilityItems == undefined) {
if (this.data.element.surveyName == '建筑信息' && this.data.element.attinf == undefined) {
this.addAttinfBuild = []
let paramsdata: any = {
categoryId: this.data.buildingID
}
this.http.get("/api/BasicGroups", { params: paramsdata }).subscribe((data: any) => {
data.forEach(buildDate => {
this.addAttinfBuild.push(...buildDate.propertyInfos)
});
this.addAttinfBuild.forEach(element => {
element.completed = false
element.olddata = element.propertyValue
});
console.log(this.addAttinfBuild)
})
} else if (this.data.element.surveyName == '建筑信息' && this.data.element.attinf != undefined) {
this.buildnewDate = [] //接受接口返回的新数据
this.addAttinfBuild = this.data.element.attinf.filter(item => {
return item.zdy == undefined
}) //模板传过来的非自定义数据
this.zdyData = this.data.element.attinf.filter(item => {
return item.zdy != undefined
})//模板传过来自定义数据
this.addAttinfBuild = JSON.parse(JSON.stringify(this.addAttinfBuild))
console.log(this.addAttinfBuild)
let paramsdata: any = {
categoryId: this.data.buildingID
}
/* 请求接口,做差异化对比 */
let restlt = await new Promise((resolve) => {
this.http.get("/api/BasicGroups", { params: paramsdata }).subscribe((data: any) => {
data.forEach((buildDate, buildi, buildarr) => {
this.buildnewDate.push(...buildarr[buildi].propertyInfos)
resolve(data)
});
this.buildnewDate.forEach(element => {
element.completed = false
element.olddata = element.propertyValue
});
})
})
this.buildnewDate = JSON.parse(JSON.stringify(this.buildnewDate))
//差异化比较
let temp = 0
this.buildnewDate.forEach((buildval, buindi, buildarr) => {
temp = 0
this.addAttinfBuild.forEach((addval, addi, addarr) => {
if (buildval.propertyName == addval.propertyName) {
temp++
}
})
if (temp == 0) {
//模板数据少于接口数据
// console.log(buildval)
this.addAttinfBuild.push(buildval)
}
})
this.addAttinfBuild.forEach((addval, addi, addarr) => {
temp = 0
this.buildnewDate.forEach((buildval, buindi, buildarr) => {
if (buildarr[buindi].propertyName == addarr[addi].propertyName) {
temp++
}
})
if (temp == 0) {
console.log(addarr[addi])
//模板数据多了
this.addAttinfBuild.splice(addi, 1)
}
})
this.addAttinfBuild.push(...this.zdyData)
console.log(this.buildnewDate)
console.log(this.addAttinfBuild)
} else if (this.data.element.surveyName == '消防设施' && this.data.element.attinf == undefined) {
this.http.get("/api/BuildingTypes").subscribe((buildData: any) => {
console.log(buildData)
buildData.forEach(element => {
if (element.id == this.data.fid) {
this.facilityCategoryId = element.facilityCategoryId
let paramsdata: any = {
categoryId: this.facilityCategoryId
}
this.http.get("/api/FacilityGroups", { params: paramsdata }).subscribe((data: any) => {
console.log(data)
this.addAttinfFile = data
this.addAttinfFile.forEach(element => {
element.completed = false
element.value = ''
});
console.log(this.addAttinfFile)
})
}
});
})
} else if (this.data.element.surveyName == '消防设施' && this.data.element.attinf != undefined) {
this.filenewDate = []
this.addAttinfFile = this.data.element.attinf.filter(element => {
return element.zdy == false
});
this.zdyData = this.data.element.attinf.filter(element => {
return element.zdy != undefined
});
//this.addAttinfFile=JSON.parse(JSON.stringify(this.addAttinfFile))
console.log(this.addAttinfFile, this.zdyData)
let restlt = await new Promise((resolve) => {
this.http.get("/api/BuildingTypes").subscribe((buildData: any) => {
buildData.forEach(async element => {
if (element.id == this.data.fid) {
this.facilityCategoryId = element.facilityCategoryId
let paramsdata: any = {
categoryId: this.facilityCategoryId
}
this.http.get("/api/FacilityGroups", { params: paramsdata }).subscribe((data: any) => {
data.forEach((buildDate, buildi, buildarr) => {
this.filenewDate.push(buildDate)
resolve(data)
});
this.filenewDate.forEach(element => {
element.completed = false
//element.olddata=element.propertyValue
});
})
}
})
})
})
this.filenewDate = JSON.parse(JSON.stringify(this.filenewDate))
console.log(this.filenewDate)
let temp = 0
this.filenewDate.forEach((buildval, buindi, buildarr) => {
temp = 0
this.addAttinfFile.forEach((addval, addi, addarr) => {
if (buildval.name == addval.name) {
temp++
}
})
if (temp == 0) {
//console.log(buildval)
this.addAttinfFile.push(buildval)
}
})
this.addAttinfFile.forEach((addval, addi, addarr) => {
temp = 0
this.filenewDate.forEach((buildval, buindi, buildarr) => {
if (buildval.name == addval.name) {
temp++
}
})
if (temp == 0) {
this.addAttinfFile.splice(addi, 1)
}
})
this.addAttinfFile.push(...this.zdyData)
}
} else {
//消防设施最里层数据
let apifile
this.facilityItems = this.data.facilityItems.filter(element => {
return element.zdy == undefined
});
this.zdyData = this.data.facilityItems.filter(element => {
return element.zdy != undefined
});
this.facilityItems = JSON.parse(JSON.stringify(this.facilityItems))
console.log(this.facilityItems)
//请求接口,看数据是否有变化
let paramsdata: any = {
categoryId: this.data.fid
}
this.http.get("/api/FacilityGroups", { params: paramsdata }).subscribe((buildData: any) => {
buildData.forEach(async element => {
if (element.id == this.data.fid) {
this.facilityCategoryId = element.facilityCategoryId
let paramsdata: any = {
categoryId: this.facilityCategoryId
}
let fileResult = await new Promise((resolve) => {
this.http.get("/api/FacilityGroups", { params: paramsdata }).subscribe((data: any) => {
resolve(data)
})
})
apifile = fileResult
let apifileData//消防设施最内层数据
apifile.forEach(element => {
if (element.name == this.data.filename) {
apifileData = element.facilityItems
}
});
console.log(apifileData)
let temp = 0
apifileData.forEach((buildval, buindi, buildarr) => {
temp = 0
this.facilityItems.forEach((addval, addi, addarr) => {
if (buildval.name == addval.name) {
temp++
}
})
if (temp == 0) {
console.log(buildval)
this.facilityItems.push(buildval)
}
})
this.facilityItems.forEach((addval, addi, addarr) => {
temp = 0
apifileData.forEach((buildval, buindi, buildarr) => {
if (buildarr[buindi].name == addarr[addi].name) {
temp++
}
if (temp == 0) {
console.log(addarr[addi])
this.facilityItems.splice(addi, 1)
}
})
})
}
})
})
this.facilityItems.push(...this.zdyData)
}
}
//取消按钮
close() {
this.dialogRef.close(undefined);
}
//确定按钮
defineClick() {
this.dialogRef.close(this.data.element != undefined && this.data.element.surveyName == '建筑信息' ?
this.addAttinfBuild : this.data.element != undefined && this.data.element.surveyName == '消防设施' ? this.addAttinfFile : this.facilityItems)
}
}