|
|
|
import { ChangeDetectorRef, Component, ElementRef, OnInit, ViewChild } from '@angular/core';
|
|
|
|
import { NzFormatEmitEvent, NzTreeComponent, NzTreeNodeOptions } from 'ng-zorro-antd/tree';
|
|
|
|
import { FacilityInfoInSceneWindow } from 'src/app/babylon/view/facilityinfoinscene-window/facilityinfoinscene-window';
|
|
|
|
import { PlanComponent } from '../plan/plan.component';
|
|
|
|
import { FacilityInfoUIItem } from "../../babylon/view/facilityinfoinscene-window/facilityinfo-ui-item";
|
|
|
|
import { ConfigManager } from 'src/app/babylon/controller/config-manager';
|
|
|
|
import { FacilityType } from 'src/app/babylon/model/data/model-data/model-data-facility';
|
|
|
|
import { EventManager } from 'src/app/babylon/controller/event-manager/event-manager';
|
|
|
|
import { Event_GetAllMarkPlanData } from 'src/app/babylon/controller/event-manager/events/event-get-markplandata-success';
|
|
|
|
import { AllMarkPlanData, MarkNodeData, MarkPlanData } from 'src/app/babylon/model/data/mark/mark-plan-data';
|
|
|
|
import { MarkWindow } from 'src/app/babylon/view/mark-window/mark-window';
|
|
|
|
import { NzMessageService } from 'ng-zorro-antd/message';
|
|
|
|
import { ModeManager, ModeType } from 'src/app/babylon/controller/mode-manager';
|
|
|
|
import { DataManager } from 'src/app/babylon/controller/data-manager';
|
|
|
|
import { ServeManager } from 'src/app/babylon/controller/serve-manager';
|
|
|
|
import { ObjectsService } from 'src/app/service/objects.service';
|
|
|
|
import Viewer from 'viewerjs';
|
|
|
|
import { HttpClient } from '@angular/common/http';
|
|
|
|
import { MarkTemplate } from 'src/app/babylon/model/data/mark/mark-template-data';
|
|
|
|
|
|
|
|
@Component({
|
|
|
|
selector: 'app-left-domain',
|
|
|
|
templateUrl: './left-domain.component.html',
|
|
|
|
styleUrls: ['./left-domain.component.scss', '../plan/publicPop.scss']
|
|
|
|
})
|
|
|
|
export class LeftDomainComponent implements OnInit {
|
|
|
|
|
|
|
|
constructor(private message: NzMessageService, private element: ElementRef, private http: HttpClient, private cd: ChangeDetectorRef) { }
|
|
|
|
|
|
|
|
ngOnInit(): void {
|
|
|
|
this.editMode = PlanComponent.instance.editMode
|
|
|
|
this.initComponent()
|
|
|
|
}
|
|
|
|
|
|
|
|
editMode: boolean = true; //编辑/查看模式
|
|
|
|
userMode: boolean = ModeManager.s_isMakeMode; //是否为 内部权限
|
|
|
|
beforeFence: number; //当前选中功能栏
|
|
|
|
FacilityList: FacilityInfoUIItem[] = []; //统计设备 list
|
|
|
|
selectFacilityId: string = null; //选中设备 ID
|
|
|
|
baseInfo: any; //基本信息
|
|
|
|
isShowBaseDialog: boolean = false; //显隐 编辑信息/导出Excel 弹窗
|
|
|
|
|
|
|
|
//初始化组件
|
|
|
|
initComponent(type?: number) {
|
|
|
|
if (type != undefined && type != null) {
|
|
|
|
this.beforeFence = type
|
|
|
|
this.handleFacility()
|
|
|
|
} else {
|
|
|
|
this.beforeFence = PlanComponent.instance.selectFence
|
|
|
|
this.handleFacility()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//处理 设备data
|
|
|
|
handleFacility() {
|
|
|
|
if (this.beforeFence === 0) { //基本信息
|
|
|
|
if (!this.baseInfo) {
|
|
|
|
let params = { organizationUnitId: PlanComponent.instance.companyData.id }
|
|
|
|
this.http.get('/api/services/app/GasStation/Get', { params: params }).subscribe((data: any) => {
|
|
|
|
data.result.govUnitDetail ? data.result.govUnitDetail = JSON.parse(data.result.govUnitDetail) : null
|
|
|
|
this.baseInfo = data.result
|
|
|
|
})
|
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if (this.beforeFence === 8) { //应急预案
|
|
|
|
this.selectPlanId = null
|
|
|
|
this.selectNodeId = null
|
|
|
|
if (MarkWindow.instance) {
|
|
|
|
this.allMarkPlanData = MarkWindow.instance.allMarkPlanData
|
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|
|
|
|
let list: FacilityInfoUIItem[] = []
|
|
|
|
FacilityInfoInSceneWindow.instance.facilityInfoUIItemes.forEach(item => {
|
|
|
|
if (this.beforeFence === 1) { //加油机
|
|
|
|
item.getType() === "JY_JYJ" ? list.push(item) : null
|
|
|
|
} else if (this.beforeFence === 2) { //油罐设备
|
|
|
|
item.getType() === "JY_YG" ? list.push(item) : null
|
|
|
|
} else if (this.beforeFence === 3) { //消防设施
|
|
|
|
(item.getType()).slice(0, 3) === "XF_" ? list.push(item) : null
|
|
|
|
} else if (this.beforeFence === 5) { //输油管线
|
|
|
|
item.getType() === "JY_SYGX" ? list.push(item) : null
|
|
|
|
} else if (this.beforeFence === 6) { //油气回收
|
|
|
|
item.getType() === "JY_YQHSGX" ? list.push(item) : null
|
|
|
|
} else if (this.beforeFence === 7) { //阀门
|
|
|
|
item.getType() === "JY_FM" ? list.push(item) : null
|
|
|
|
}
|
|
|
|
})
|
|
|
|
this.FacilityList = list
|
|
|
|
this.selectFacilityId = null
|
|
|
|
if (this.beforeFence === 1 || this.beforeFence === 2 || this.beforeFence === 6 || this.beforeFence === 7) { //加油机/油罐设备/油气回收/阀门
|
|
|
|
this.FacilityList.forEach(item => {
|
|
|
|
window.setTimeout(()=>{
|
|
|
|
this.textInput(item)
|
|
|
|
},0)
|
|
|
|
if (this.beforeFence === 2) {
|
|
|
|
item.getPropertyData().oilTankType = this.setNewData(item.getPropertyData().oilTankType)
|
|
|
|
item.getPropertyData().oilPumpType = this.setNewData(item.getPropertyData().oilPumpType)
|
|
|
|
} else if (this.beforeFence === 6) {
|
|
|
|
item.getPropertyData().VRUType_2 = this.setNewData(item.getPropertyData().VRUType_2)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
if (this.beforeFence === 3) { //消防设施
|
|
|
|
this.handleTreeData(this.FacilityList)
|
|
|
|
}
|
|
|
|
if (this.beforeFence === 2) { //油罐设备
|
|
|
|
PlanComponent.instance.tankFarm.isHave = false;
|
|
|
|
this.FacilityList.forEach(item => {
|
|
|
|
if (item.getPropertyData().tankFarm != undefined) {
|
|
|
|
PlanComponent.instance.tankFarm.isHave = true
|
|
|
|
PlanComponent.instance.tankFarm.content = item.getPropertyData().tankFarm
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
if (this.beforeFence === 5 || this.beforeFence === 6) { //初始化 Viewer
|
|
|
|
let id: string = this.beforeFence === 5 ? "pipelineViewer" : "orvrViewer"
|
|
|
|
this.FacilityList.forEach(item => {
|
|
|
|
if (item.getPropertyData() && item.getPropertyData().img) {
|
|
|
|
window.setTimeout(() => {
|
|
|
|
new Viewer(this.element.nativeElement.querySelector(`#${id}${item.getID()}`), { url: 'data-original', navbar: false });
|
|
|
|
}, 0)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//处理 油罐罐区/油气回收 select框老数据
|
|
|
|
setNewData(e: string):string {
|
|
|
|
if(e === "scg") {
|
|
|
|
e = "双层罐"
|
|
|
|
} else if (e === "dcg") {
|
|
|
|
e = "单层罐+防渗罐池"
|
|
|
|
} else if (e === "zxb") {
|
|
|
|
e = "自吸泵"
|
|
|
|
} else if (e === "qyb") {
|
|
|
|
e = "潜油泵"
|
|
|
|
} else if (e === "fss") {
|
|
|
|
e = "分散式"
|
|
|
|
} else if (e === "jzs") {
|
|
|
|
e = "集中式"
|
|
|
|
}
|
|
|
|
return e
|
|
|
|
}
|
|
|
|
|
|
|
|
//选中 设备
|
|
|
|
selectFacility(event, item: FacilityInfoUIItem) {
|
|
|
|
if (event.target.localName == 'img') {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if (this.selectFacilityId != item.getID()) {
|
|
|
|
this.selectFacilityId = item.getID()
|
|
|
|
FacilityInfoInSceneWindow.instance.selectFacilityItem(item);
|
|
|
|
} else {
|
|
|
|
this.selectFacilityId = null
|
|
|
|
item.onSelect(false)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//阻止 事件冒泡
|
|
|
|
stopBubbling(event) {
|
|
|
|
event.stopPropagation();
|
|
|
|
//event.preventDefault();
|
|
|
|
}
|
|
|
|
|
|
|
|
//上传设备 图片
|
|
|
|
uploadLeftDomainImg(e, item: FacilityInfoUIItem) {
|
|
|
|
if (e.target.files.length) {
|
|
|
|
let maxSize = 30 * 1024 * 1024 //限制30MB
|
|
|
|
let file = e.target.files[0]
|
|
|
|
if (file.size > maxSize) { //超出限制
|
|
|
|
this.message.info("上传资源需小于30MB");
|
|
|
|
return
|
|
|
|
}
|
|
|
|
PlanComponent.instance.isShowLoading = true //打开遮罩
|
|
|
|
let institutionKey = `${PlanComponent.instance.companyData.id}` || "ceshi"; //单位id
|
|
|
|
let buildingKey = PlanComponent.instance.buildingUIItems.find(item => { return item.getBuildingID() == PlanComponent.instance.beforeOneBuildingID })
|
|
|
|
let url = DataManager.getResPath_facilityProperty(institutionKey, buildingKey ? buildingKey.getBuildingID() : "building", item.getType(), item.getID(), null)
|
|
|
|
ServeManager.instance.openFileSelect(file, url, (name: string, path: string) => { //上传
|
|
|
|
item.getPropertyData().img = ObjectsService.getFullPath(path + name)
|
|
|
|
if (this.beforeFence === 5) {
|
|
|
|
window.setTimeout(() => {
|
|
|
|
new Viewer(this.element.nativeElement.querySelector(`#pipelineViewer${item.getID()}`), { url: 'data-original', navbar: false });
|
|
|
|
}, 0)
|
|
|
|
} else if (this.beforeFence === 6) {
|
|
|
|
window.setTimeout(() => {
|
|
|
|
new Viewer(this.element.nativeElement.querySelector(`#orvrViewer${item.getID()}`), { url: 'data-original', navbar: false });
|
|
|
|
}, 0)
|
|
|
|
}
|
|
|
|
PlanComponent.instance.isShowLoading = false //关闭遮罩
|
|
|
|
this.message.info("上传成功!");
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//删除设备 图片
|
|
|
|
deleteImg(item: FacilityInfoUIItem) {
|
|
|
|
let isDelete = confirm("您确定要删除吗?")
|
|
|
|
if (isDelete) {
|
|
|
|
this.http.delete(`${item.getPropertyData().img}`).subscribe(data => {
|
|
|
|
item.getPropertyData().img = ""
|
|
|
|
this.message.info("删除成功!");
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@ViewChild('nzTreeComponent', { static: false }) nzTreeComponent!: NzTreeComponent;
|
|
|
|
treeData: NzTreeNodeOptions[] = []; //tree data
|
|
|
|
|
|
|
|
//处理 treeData
|
|
|
|
handleTreeData(list: FacilityInfoUIItem[]) {
|
|
|
|
this.treeData = []
|
|
|
|
list.forEach(item => {
|
|
|
|
let isFind = this.treeData.find(element => { return (item.getType()).includes(element.key) })
|
|
|
|
if (!isFind) { //不存在
|
|
|
|
if (item.getType().includes('XF_MHQ')) { //灭火器
|
|
|
|
let primaryNode = { title: '灭火器', key: 'XF_MHQ', selectable: false, expanded: true, children: [], }
|
|
|
|
let treeNode = { title: ConfigManager.getFacilityTypeName(item.getType()), key: item.getType(), selectable: false, }
|
|
|
|
primaryNode.children.push(treeNode)
|
|
|
|
this.treeData.push(primaryNode)
|
|
|
|
} else {
|
|
|
|
let primaryNode = { title: ConfigManager.getFacilityTypeName(item.getType()), key: item.getType(), selectable: false, }
|
|
|
|
this.treeData.push(primaryNode)
|
|
|
|
}
|
|
|
|
} else { //存在
|
|
|
|
if (item.getType().includes('XF_MHQ') && !isFind.children.find(elements => { return elements.key === item.getType() })) { //灭火器
|
|
|
|
let treeNode = { title: ConfigManager.getFacilityTypeName(item.getType()), key: item.getType(), selectable: false, }
|
|
|
|
isFind.children.push(treeNode)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
//编辑模式
|
|
|
|
if (this.editMode) {
|
|
|
|
let isFind = this.treeData.find(item => { return item.key === 'XF_MHQ' })
|
|
|
|
if (!isFind) {
|
|
|
|
let primaryNode = { title: '灭火器', key: 'XF_MHQ', selectable: false, }
|
|
|
|
this.treeData.push(primaryNode)
|
|
|
|
}
|
|
|
|
for (let facility in FacilityType) {
|
|
|
|
if (facility.slice(0, 3) === "XF_" && !facility.includes('XF_MHQ')) {
|
|
|
|
let isFind = this.treeData.find(item => { return item.key === facility })
|
|
|
|
if (!isFind) {
|
|
|
|
let primaryNode = { title: ConfigManager.getFacilityTypeName(FacilityType[facility]), key: facility, selectable: false, }
|
|
|
|
this.treeData.push(primaryNode)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//编辑模式
|
|
|
|
}
|
|
|
|
|
|
|
|
//监听textarea 输入事件
|
|
|
|
textInput(item: FacilityInfoUIItem) {
|
|
|
|
window.setTimeout(()=>{
|
|
|
|
let title: HTMLCanvasElement = this.element.nativeElement.querySelector(`#title${item.modelInfo.key}`)
|
|
|
|
let content: HTMLCanvasElement = this.element.nativeElement.querySelector(`#content${item.modelInfo.key}`)
|
|
|
|
if (title && content) {
|
|
|
|
title.style.height = this.getTextareaHeight(item)
|
|
|
|
title.style.lineHeight = this.getTextareaHeight(item)
|
|
|
|
content.style.height = this.getTextareaHeight(item)
|
|
|
|
}
|
|
|
|
if (this.beforeFence === 6) { //油气回收
|
|
|
|
let orvrTitle: HTMLCanvasElement = this.element.nativeElement.querySelector(`#orvrTitle${item.modelInfo.key}`)
|
|
|
|
let orvrContent: HTMLCanvasElement = this.element.nativeElement.querySelector(`#orvrContent${item.modelInfo.key}`)
|
|
|
|
if (orvrTitle && orvrContent) {
|
|
|
|
orvrTitle.style.height = `${this.element.nativeElement.querySelector(`#orvrNum${item.modelInfo.key}`).getBoundingClientRect().height}px` || `32px`
|
|
|
|
orvrTitle.style.lineHeight = `${this.element.nativeElement.querySelector(`#orvrNum${item.modelInfo.key}`).getBoundingClientRect().height}px` || `32px`
|
|
|
|
orvrContent.style.height = `${this.element.nativeElement.querySelector(`#orvrNum${item.modelInfo.key}`).getBoundingClientRect().height}px` || `32px`
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},0)
|
|
|
|
}
|
|
|
|
|
|
|
|
//获取textarea 高度
|
|
|
|
getTextareaHeight(item: FacilityInfoUIItem):string {
|
|
|
|
let html: HTMLCanvasElement = this.element.nativeElement.querySelector(`#num${item.modelInfo.key}`)
|
|
|
|
if (html) {
|
|
|
|
return `${html.getBoundingClientRect().height}px`
|
|
|
|
} else {
|
|
|
|
return `32px`
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//获取设备 数量
|
|
|
|
getFacilityNum(type: string): string {
|
|
|
|
let num = 0
|
|
|
|
this.FacilityList.forEach(item => {
|
|
|
|
item.getType().includes(type) ? num = num + 1 : null
|
|
|
|
})
|
|
|
|
let unit = type === 'XF_MHQ'? '具' : ConfigManager.getFacilityNumUnit(FacilityType[type])
|
|
|
|
let facilityNum = `${num}${unit}`
|
|
|
|
if (type === FacilityType.XF_XFS) {
|
|
|
|
facilityNum = `${num*2}${unit}`
|
|
|
|
}
|
|
|
|
return facilityNum
|
|
|
|
}
|
|
|
|
|
|
|
|
//点击tree节点
|
|
|
|
nzClick(event: NzFormatEmitEvent) {
|
|
|
|
if (event.node.key != 'XF_MHQ') {
|
|
|
|
event.node.isSelected = !event.node.isSelected
|
|
|
|
if (event.node.isSelected) { //显示当前, 隐藏所有
|
|
|
|
FacilityInfoInSceneWindow.instance.showFacilityByType(null, false)
|
|
|
|
FacilityInfoInSceneWindow.instance.showFacilityByType(FacilityType[event.node.key], event.node.isSelected)
|
|
|
|
} else { //显示所有
|
|
|
|
this.treeData.forEach(item => {
|
|
|
|
if (item.key != 'XF_MHQ') {
|
|
|
|
FacilityInfoInSceneWindow.instance.showFacilityByType(FacilityType[item.key], true)
|
|
|
|
} else {
|
|
|
|
item.children.forEach(element => { FacilityInfoInSceneWindow.instance.showFacilityByType(FacilityType[element.key], true) })
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
allMarkPlanData: AllMarkPlanData; //处置预案节点数据
|
|
|
|
allSandBoxTemplate: MarkTemplate[] = []; //所有模板
|
|
|
|
selectPlanId: number;
|
|
|
|
selectNodeId: number;
|
|
|
|
addDisposalPop: boolean = false; //显示/隐藏 创建预案 弹窗
|
|
|
|
addNodePop: number = null; //显示/隐藏 创建节点 父节点ID
|
|
|
|
|
|
|
|
//创建预案/节点
|
|
|
|
addDisposal(e) {
|
|
|
|
if (this.addDisposalPop) { //创建预案
|
|
|
|
if (e.selectMould) {
|
|
|
|
MarkWindow.instance.addMarkPlanByTemplate(e.selectMould)
|
|
|
|
this.addDisposalPop = false
|
|
|
|
} else {
|
|
|
|
if (!e.name) {
|
|
|
|
this.message.info('请填写名称!');
|
|
|
|
return
|
|
|
|
}
|
|
|
|
MarkWindow.instance.createMarkPlaneData(e.name)
|
|
|
|
this.addDisposalPop = false
|
|
|
|
}
|
|
|
|
} else { //创建节点
|
|
|
|
if (!e.name) {
|
|
|
|
this.message.info('请填写名称!');
|
|
|
|
return
|
|
|
|
}
|
|
|
|
MarkWindow.instance.createMarkNodeData(this.addNodePop, e.name)
|
|
|
|
this.addNodePop = null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
editSelectDisposal: MarkPlanData = null; //编辑预案名称 选中预案
|
|
|
|
editDisposalName: string = null; //显示/隐藏 编辑预案名称 弹窗
|
|
|
|
|
|
|
|
//打开 创建预案弹窗
|
|
|
|
openAddDisposal(event, id: number) {
|
|
|
|
event.stopPropagation()
|
|
|
|
this.addNodePop = id
|
|
|
|
}
|
|
|
|
|
|
|
|
selectMould: number = 0; //当前选择模板
|
|
|
|
|
|
|
|
//删除模板
|
|
|
|
deleteMould(e) {
|
|
|
|
if (e.selectMould) {
|
|
|
|
let isTrue = confirm('您确定要删除当前选中模板吗')
|
|
|
|
if (isTrue) {
|
|
|
|
MarkWindow.instance.deleteSandBoxTemplate(e.selectMould)
|
|
|
|
this.allSandBoxTemplate.splice(this.allSandBoxTemplate.findIndex(item => item.id === e.selectMould), 1)
|
|
|
|
this.selectMould = 0
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//保存为模板
|
|
|
|
saveMould() {
|
|
|
|
MarkWindow.instance.saveToSandBoxTemplate(this.editSelectDisposal)
|
|
|
|
this.message.info('保存成功!')
|
|
|
|
}
|
|
|
|
|
|
|
|
//打开 编辑预案名称弹窗
|
|
|
|
openEditDisposal(event, item: MarkPlanData) {
|
|
|
|
event.stopPropagation()
|
|
|
|
this.editSelectDisposal = item;
|
|
|
|
this.editDisposalName = JSON.parse(JSON.stringify(item.name))
|
|
|
|
}
|
|
|
|
|
|
|
|
//编辑预案名称
|
|
|
|
editDisposal(e) {
|
|
|
|
this.editSelectDisposal.name = e.name
|
|
|
|
this.editSelectDisposal = null
|
|
|
|
}
|
|
|
|
|
|
|
|
//删除预案/节点
|
|
|
|
deleteDisposal(event, item: MarkPlanData, e?: MarkNodeData) {
|
|
|
|
event.stopPropagation()
|
|
|
|
let isTrue = confirm('您确定要删除吗')
|
|
|
|
if (isTrue) {
|
|
|
|
if (!e) {
|
|
|
|
MarkWindow.instance.deleteMarkPlaneData(item.id)
|
|
|
|
} else {
|
|
|
|
MarkWindow.instance.deleteMarkNodeData(item.id, e.id)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//选中 数据节点
|
|
|
|
selectNode(item: MarkPlanData, e: MarkNodeData, index: number) {
|
|
|
|
if (this.selectPlanId != item.id || this.selectNodeId != e.id) { //选中
|
|
|
|
this.selectPlanId = item.id
|
|
|
|
this.selectNodeId = e.id
|
|
|
|
PlanComponent.instance.beforeEmergencyPlan = item
|
|
|
|
PlanComponent.instance.beforePlanNode = e
|
|
|
|
if (PlanComponent.instance.progressList.length != item.nodes.length) {
|
|
|
|
PlanComponent.instance.updateProgressList()
|
|
|
|
}
|
|
|
|
this.updateFatherData(index) //更新/初始化父组件 数据
|
|
|
|
PlanComponent.instance.initViewer()
|
|
|
|
MarkWindow.instance.selectMarkNode(item.id, e.id)
|
|
|
|
} else if (this.selectPlanId === item.id && this.selectNodeId === e.id) { //取消选中
|
|
|
|
this.selectPlanId = null
|
|
|
|
this.selectNodeId = null
|
|
|
|
PlanComponent.instance.beforeEmergencyPlan = new MarkPlanData(-99, "请选择应急预案")
|
|
|
|
PlanComponent.instance.beforePlanNode = new MarkNodeData(-99, "请选择应急预案")
|
|
|
|
this.updateFatherData(index) //更新/初始化父组件 数据
|
|
|
|
MarkWindow.instance.selectMarkNode(null, null)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//更新/初始化父组件 数据
|
|
|
|
updateFatherData(index) {
|
|
|
|
PlanComponent.instance.updateTimer ? window.clearTimeout(PlanComponent.instance.updateTimer) : null //清除定时器
|
|
|
|
PlanComponent.instance.progressList.forEach((item, key) => { key >= index ? PlanComponent.instance.progressList[key] = 0 : PlanComponent.instance.progressList[key] = 100 })
|
|
|
|
PlanComponent.instance.nzCurrent = index
|
|
|
|
PlanComponent.instance.isSuspend = true //暂停
|
|
|
|
}
|
|
|
|
|
|
|
|
saveDisposalDialog: boolean = false; //整体保存预案 弹窗
|
|
|
|
saveType: number = null; //新建保存/保存到已有 弹窗
|
|
|
|
allNodeList: any[] = []; //所有根节点/节点
|
|
|
|
|
|
|
|
//保存-1
|
|
|
|
saveDisposal(markPlanId: number = null, nodeId: number = null) {
|
|
|
|
if (!MarkWindow.instance.currentMarkNodeInfo) { //未选中节点
|
|
|
|
this.message.info('还没有进行标绘,无法保存');
|
|
|
|
return
|
|
|
|
}
|
|
|
|
if (markPlanId === null && nodeId === null) { // 整体弹窗保存
|
|
|
|
this.saveDisposalDialog = true
|
|
|
|
} else {
|
|
|
|
if (this.selectPlanId === markPlanId && this.selectNodeId === nodeId) {
|
|
|
|
MarkWindow.instance.saveToOldNode(markPlanId, nodeId)
|
|
|
|
} else {
|
|
|
|
let isTrue = confirm('是否覆盖要保存的节点?')
|
|
|
|
isTrue ? MarkWindow.instance.saveToOldNode(markPlanId, nodeId) : null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//保存-2
|
|
|
|
saveNode(isNew: boolean) {
|
|
|
|
this.saveDisposalDialog = false
|
|
|
|
if (isNew) { //新建节点并保存
|
|
|
|
this.saveType = 1
|
|
|
|
this.allNodeList = MarkWindow.instance.allMarkPlanData.datas
|
|
|
|
} else { //保存到已有节点
|
|
|
|
this.saveType = 2
|
|
|
|
this.allNodeList = []
|
|
|
|
MarkWindow.instance.allMarkPlanData.datas.forEach(item => {
|
|
|
|
item.nodes.forEach(element => {
|
|
|
|
let node = {
|
|
|
|
id: element.id,
|
|
|
|
parrentId: item.id,
|
|
|
|
name: element.name,
|
|
|
|
}
|
|
|
|
this.allNodeList.push(node)
|
|
|
|
})
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//保存-3
|
|
|
|
saveDisposalNode(e) {
|
|
|
|
if (this.saveType === 1) { //新建节点并保存
|
|
|
|
if (!e.name || !e.root) {
|
|
|
|
this.message.info('请完善表单')
|
|
|
|
return
|
|
|
|
}
|
|
|
|
MarkWindow.instance.createNewNodeAndSave(e.root.id, e.name)
|
|
|
|
this.saveType = null
|
|
|
|
} else { //保存到已有节点
|
|
|
|
if (!e.node) {
|
|
|
|
this.message.info('请完善表单')
|
|
|
|
return
|
|
|
|
}
|
|
|
|
MarkWindow.instance.saveToOldNode(e.node.parrentId, e.node.id)
|
|
|
|
this.saveType = null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
originalData: any; //sessionStorage 原始数据
|
|
|
|
|
|
|
|
//编辑信息
|
|
|
|
editInfo() {
|
|
|
|
this.originalData = sessionStorage.getItem('userdata')
|
|
|
|
let userdata = { organization: PlanComponent.instance.companyData, hideCloseBtn: true }
|
|
|
|
sessionStorage.setItem('userdata', JSON.stringify(userdata))
|
|
|
|
this.isShowBaseDialog = true
|
|
|
|
}
|
|
|
|
|
|
|
|
//导出Excel
|
|
|
|
deriveExcel() {
|
|
|
|
// this.originalData = sessionStorage.getItem('userdata')
|
|
|
|
// let userdata = { organization: PlanComponent.instance.companyData, hideCloseBtn: true }
|
|
|
|
// sessionStorage.setItem('userdata', JSON.stringify(userdata))
|
|
|
|
// this.isShowBaseDialog = true
|
|
|
|
let threeData = JSON.parse(sessionStorage.getItem('3dSceneData'));
|
|
|
|
const httpOptions = {
|
|
|
|
responseType: 'blob' as 'json'
|
|
|
|
};
|
|
|
|
this.http.get(`/api/services/app/GasStation/ExportExcelFile?gasStationId=${threeData.id}`, httpOptions).subscribe((data: any) => {
|
|
|
|
// 文件名中有中文 则对文件名进行转码
|
|
|
|
const link = document.createElement('a');
|
|
|
|
const blob = new Blob([data], { type: 'application/vnd.ms-excel' });
|
|
|
|
link.setAttribute('href', window.URL.createObjectURL(blob));
|
|
|
|
link.setAttribute('download', threeData.stationName + '基本信息' + '.xls');
|
|
|
|
link.style.visibility = 'hidden';
|
|
|
|
document.body.appendChild(link);
|
|
|
|
link.click();
|
|
|
|
document.body.removeChild(link);
|
|
|
|
this.message.create('success', '导出成功!');
|
|
|
|
}, err => {
|
|
|
|
this.message.create('error', '导出失败!');
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
//关闭 编辑信息/导出Excel 弹窗
|
|
|
|
closeBaseInfoDialog() {
|
|
|
|
PlanComponent.instance.isShowLoading = true
|
|
|
|
let params = { organizationUnitId: PlanComponent.instance.companyData.id }
|
|
|
|
this.http.get('/api/services/app/GasStation/Get', { params: params }).subscribe((data: any) => {
|
|
|
|
data.result.govUnitDetail ? data.result.govUnitDetail = JSON.parse(data.result.govUnitDetail) : null
|
|
|
|
this.baseInfo = data.result
|
|
|
|
sessionStorage.setItem('userdata', this.originalData)
|
|
|
|
this.isShowBaseDialog = false
|
|
|
|
PlanComponent.instance.isShowLoading = false
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
export class treeData {
|
|
|
|
static nodes: NzTreeNodeOptions[] = []
|
|
|
|
}
|