diff --git a/src/app/pages/left-domain/left-domain.component.html b/src/app/pages/left-domain/left-domain.component.html
index d0782a8..3bd7838 100644
--- a/src/app/pages/left-domain/left-domain.component.html
+++ b/src/app/pages/left-domain/left-domain.component.html
@@ -91,6 +91,64 @@
+
+
diff --git a/src/app/pages/left-domain/left-domain.component.scss b/src/app/pages/left-domain/left-domain.component.scss
index 5f39ec6..2c2b629 100644
--- a/src/app/pages/left-domain/left-domain.component.scss
+++ b/src/app/pages/left-domain/left-domain.component.scss
@@ -76,4 +76,43 @@
// }
.fireFacilities{ //消防设施
.treeRow{ width: 100%; display: flex; height: 30px; line-height: 30px; p:first-child{ flex: 1; }; p{ margin: 0; padding: 0; .anticon{ margin-right: 5px; font-size: 16px; } } }
+}
+.disposalPlan{ //处置预案
+ .interval{ margin-top: 10px; } //分隔div
+ font-size: 15px;
+ ul,li { width: 100%; }
+ li:before{ content: ""; width: 5px; height: 5px; border-radius: 50%; display: inline-block; vertical-align: 3px; background: #23D9FF; margin-right: 10px; }
+ .publicDisposal{
+ height: 35px;
+ line-height: 35px;
+ color: #23D9FF;
+ padding-left: 20px;
+ label{ float: right; .anticon{ margin-right: 15px; font-size: 18px; cursor: pointer; } }
+ span{ cursor: pointer; }
+ }
+ .disposalContent { color: #fff; .anticon{ color: #23D9FF; } }
+ .disposalHeader {
+ background: rgba(35, 153, 255, 0.41);
+ border: 1px solid rgba(35, 217, 255, 0.4);
+ }
+ .selectNode{ color: red; } //选中节点样式
+}
+//弹窗
+.submitBottom{
+ button {
+ cursor: pointer;
+ padding: 0;
+ width: 150px;
+ height: 30px;
+ line-height: 30px;
+ box-shadow: 0 3px 1px -2px rgb(0 0 0 / 20%), 0 2px 2px 0 rgb(0 0 0 / 14%), 0 1px 5px 0 rgb(0 0 0 / 12%);
+ background: #e2e8f0;
+ color: #000;
+ border: none;
+ outline: none;
+ }
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: space-evenly; /* 水平居中 */
}
\ No newline at end of file
diff --git a/src/app/pages/left-domain/left-domain.component.ts b/src/app/pages/left-domain/left-domain.component.ts
index e6dd912..ff45bc5 100644
--- a/src/app/pages/left-domain/left-domain.component.ts
+++ b/src/app/pages/left-domain/left-domain.component.ts
@@ -5,6 +5,11 @@ 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';
@Component({
selector: 'app-left-domain',
@@ -13,7 +18,7 @@ import { FacilityType } from 'src/app/babylon/model/data/model-data/model-data-f
})
export class LeftDomainComponent implements OnInit {
- constructor() { }
+ constructor(private message: NzMessageService) { }
ngOnInit(): void {
this.initComponent()
@@ -23,8 +28,6 @@ export class LeftDomainComponent implements OnInit {
beforeFence: number; //当前选中功能栏
FacilityList: FacilityInfoUIItem[] = []; //统计设备 list
selectFacilityId: string = null; //选中设备 ID
- @ViewChild('nzTreeComponent', { static: false }) nzTreeComponent!: NzTreeComponent;
- treeData: NzTreeNodeOptions[] = []; //tree data
//初始化组件
initComponent(type?: number) {
@@ -39,6 +42,13 @@ export class LeftDomainComponent implements OnInit {
//处理 设备data
handleFacility() {
+ if (this.beforeFence === 7) { //应急预案
+ MarkWindow.instance? this.allMarkPlanData= MarkWindow.instance.allMarkPlanData : null
+ EventManager.addListener(Event_GetAllMarkPlanData, (data: Event_GetAllMarkPlanData)=>{
+ this.allMarkPlanData = data.data
+ })
+ return
+ }
let list: FacilityInfoUIItem[] = []
FacilityInfoInSceneWindow.instance.facilityInfoUIItemes.forEach(item=>{
if (this.beforeFence === 1) { //加油机
@@ -67,6 +77,9 @@ export class LeftDomainComponent implements OnInit {
}
}
+ @ViewChild('nzTreeComponent', { static: false }) nzTreeComponent!: NzTreeComponent;
+ treeData: NzTreeNodeOptions[] = []; //tree data
+
//处理 treeData
handleTreeData(list: FacilityInfoUIItem[]) {
this.treeData = []
@@ -137,6 +150,123 @@ export class LeftDomainComponent implements OnInit {
}
}
+ allMarkPlanData: AllMarkPlanData; //处置预案节点数据
+ selectPlanId: number;
+ selectNodeId: number;
+ addDisposalPop: boolean = false; //显示/隐藏 创建预案 弹窗
+ addNodePop: number = null; //显示/隐藏 创建节点 父节点ID
+
+ //创建预案/节点
+ addDisposal(e) {
+ if (this.addDisposalPop) { //创建预案
+ MarkWindow.instance.createMarkPlaneData(e.name)
+ this.addDisposalPop = false
+ } else { //创建节点
+ MarkWindow.instance.createMarkNodeData(this.addNodePop,e.name)
+ this.addNodePop = null
+ }
+ }
+
+ //删除预案/节点
+ deleteDisposal(item: MarkPlanData, e?: MarkNodeData) {
+ 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) {
+ if (this.selectPlanId != item.id || this.selectNodeId != e.id) { //选中
+ if (!MarkWindow.instance.currentMarkNodeInfo) { //未选中节点
+ this.selectPlanId = item.id
+ this.selectNodeId = e.id
+ MarkWindow.instance.selectMarkNode(item.id,e.id)
+ } else { //已选中节点
+ let isTrue = confirm('切换节点后,没保存的信息将会丢失!')
+ if (isTrue) {
+ this.selectPlanId = item.id
+ this.selectNodeId = e.id
+ MarkWindow.instance.selectMarkNode(item.id,e.id)
+ }
+ }
+ } else if (this.selectPlanId === item.id && this.selectNodeId === e.id) { //取消选中
+ let isTrue = confirm('切换节点后,没保存的信息将会丢失!')
+ if (isTrue) {
+ this.selectPlanId = null
+ this.selectNodeId = null
+ MarkWindow.instance.selectMarkNode(null,null)
+ }
+ }
+ }
+
+ 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
+ }
+ }
+
//编辑信息
editInfo() {
diff --git a/src/app/pages/plan/plan.component.html b/src/app/pages/plan/plan.component.html
index 1716fe8..9fd0863 100644
--- a/src/app/pages/plan/plan.component.html
+++ b/src/app/pages/plan/plan.component.html
@@ -19,7 +19,7 @@
-
-
-
-
+
+
+
{{item.getIconName()}}
-
-
+
diff --git a/src/app/pages/plan/plan.component.scss b/src/app/pages/plan/plan.component.scss
index 789ec7e..e429778 100644
--- a/src/app/pages/plan/plan.component.scss
+++ b/src/app/pages/plan/plan.component.scss
@@ -100,6 +100,8 @@
letter-spacing: 3px;
font-style: italic;
flex: 1;
+ .anticon{ margin-left: 65px; font-size: 18px; color: #23D9FF; vertical-align: -4px; }
+ .anticon:last-child { margin-left: 10px; }
}
div:last-child{
width: 30px;
@@ -176,28 +178,29 @@
transition: margin-left 0.5s;
}
-//底部图标栏
-.bottomIcons{
- width: 80%;
- height: 60px;
- line-height: 60px;
+//右侧图标栏
+.rightIcons{
+ width: 60px;
+ height: 70%;
position: absolute;
- left: 0;
- right: 0;
- bottom: 0px;
+ top: 0;
+ bottom: 0;
+ right: 1%;
margin: auto;/*这行代码是关键*/
color: #fff;
background: rgba(0,17,33,0.7);
- border-radius: 10px 10px 0px 0px;
+ border-radius: 10px;
display: flex;
- box-sizing: border-box;
- padding: 1px;
+ flex-direction: column;
+ align-items: center;
+ overflow: hidden;
.autoScroll{ width: 30px; text-align: center; }
.bottomCenter{
flex: 1;
- overflow: hidden;
+ overflow-x: hidden;
+ overflow-y: auto;
.everyIcon {
- width: 100px;
+ width: 60px;
height: 58px;
line-height: normal;
text-align: center;
diff --git a/src/app/pages/plan/plan.component.ts b/src/app/pages/plan/plan.component.ts
index f7e05ab..21b3608 100644
--- a/src/app/pages/plan/plan.component.ts
+++ b/src/app/pages/plan/plan.component.ts
@@ -59,17 +59,14 @@ export class PlanComponent implements OnInit {
loginStatus.getInstitutionListFromServe((result: InsitutionDataSimple[], data: any) => {
if (ModeManager.institutionDemoKey == ModeManager.c_demoKey_null) { //无指定测试单位,则为正式启动,根据当前单位key寻找
let key = 'ceshi';
- // console.log("获取数据", data);
let find = data.find(item => { return item.key === key })
if (find) { //如果在data中找到了对应的单位key,则表示已经有三维数据,直接进入
- // console.log("找到已有单位" + key);
this.beforeOneSatus = StatusManager.getStatus(LoginSatus);
this.beforeOneSatus.onSelectInsSuccess(find)
} else { //如果没有找到对应的单位key,则调用新建单位
let isAdd = confirm('没有单位name,是否进行初始化?')
if (isAdd) {
let name = 'ceshi';
- console.log("没找到单位,新建" + key);
loginStatus.createInsitution(key, name);
}
}
@@ -94,7 +91,7 @@ export class PlanComponent implements OnInit {
//开发模式 选择单位 弹窗
modelInit(InsList) { }
- allFence: string[] = ["基本信息", "加油机", "油罐设备", "消防设施", "安全疏散", "输油管线", "油气回收", "应急处置"]; //头部 功能栏
+ allFence: string[] = ["基本信息", "加油机", "油罐设备", "消防设施", "安全疏散", "输油管线", "油气回收", "应急预案"]; //头部 功能栏
selectFence: number = -1; //选中 头部功能栏
isShowChildComponent: boolean = false; //是否 显示左侧子组件
@ViewChild('leftDomain') leftDomain: LeftDomainComponent; //子组件引用
@@ -141,6 +138,17 @@ export class PlanComponent implements OnInit {
return fenceType
}
+ //子组件 创建预案/保存
+ noticeChildComponent(type: boolean) {
+ if (this.isShowChildComponent && this.leftDomain) {
+ if (type) { //创建预案
+ this.leftDomain.addDisposalPop = true
+ } else { //整体保存
+ this.leftDomain.saveDisposal()
+ }
+ }
+ }
+
//切换 头部罩棚
toggleHeaderAwning(isOpen: boolean) {
this.isOpenAwning = isOpen;