diff --git a/src/app/babylon/controller/inputController.ts b/src/app/babylon/controller/inputController.ts
index 35b8b0e..3fea861 100644
--- a/src/app/babylon/controller/inputController.ts
+++ b/src/app/babylon/controller/inputController.ts
@@ -1304,8 +1304,11 @@ export class Keyboard {
     private constructor() {
         // 添加快捷键
         document.addEventListener('keydown', (e: KeyboardEvent) => {
+            if (e.key == null) {
+                return;
+            }
             let key = e.key.toLocaleLowerCase();
-            console.log(key);
+            // console.log(key);
             if (key == "w" && e.shiftKey) {
                 this.W = true;
             } else if (key == "w") {
diff --git a/src/app/babylon/controller/mode-manager.ts b/src/app/babylon/controller/mode-manager.ts
index 4f3c9fd..27cb259 100644
--- a/src/app/babylon/controller/mode-manager.ts
+++ b/src/app/babylon/controller/mode-manager.ts
@@ -23,12 +23,12 @@ export class ModeManager {
     /**
      * 制作模式代表内部编辑人员,可新增单位、上传模型,查看模式代表交付的模式
      */
-    public static s_isMakeMode = true;
+    public static s_isMakeMode = false;
 
     /**
      * 调试模式
      */
-    public static isDebug = true;
+    public static isDebug = false;
 
 
 
@@ -63,7 +63,7 @@ export class ModeManager {
      */
     static set currentMode(modeType: ModeType) {
         ModeManager.s_currentMode = modeType;
-        ModeManager.log("currentMode" + modeType);
+
     }
 
     //封装打印
diff --git a/src/app/babylon/controller/scene-manager.ts b/src/app/babylon/controller/scene-manager.ts
index 9586ce5..9a3fc03 100644
--- a/src/app/babylon/controller/scene-manager.ts
+++ b/src/app/babylon/controller/scene-manager.ts
@@ -58,6 +58,7 @@ import { MarkData_multiArrow_CT, MarkData_multiArrow_JG } from '../model/data/ma
 import { ModelInfo_mark_multiArrow } from '../model/info/mark/other/mark-plan-multi-arrow';
 import { ModelInfo_mark_particle } from '../model/info/mark/other/mark-plan-particle-info';
 import { FacilityPosType, ModelData_facility } from '../model/data/model-data/model-data-facility';
+import { LoadTool } from '../tool/load-tool';
 
 //场景管理器
 export class SceneManager {
@@ -556,7 +557,7 @@ export class SceneManager {
             }
             SceneManager.endLoadMesh(modelData.resPath, modelData.resName);
             let box = SceneManager.importMeshSuccess(newMeshes, particleSystems, skeletons, animationGroups, modelInfo, needBox, modelData);
-            console.log("加载模型完成", modelData.resName);
+            //console.log("加载模型完成", modelData.resName);
             onSuccess(newMeshes, box, modelInfo);
           }, null,
           function (scene: Scene, message: string, exception?: any) {
@@ -568,14 +569,14 @@ export class SceneManager {
 
               SceneManager.createModel(modelType, modelData, needBox, isNew, tag, onSuccess, onError, l_index);
 
-              console.log("重新开始加载" + l_index, modelData);
+              //console.log("重新开始加载" + l_index, modelData);
               console.log(exception);
             }
             else {
               modelInfo.dispose();
-              console.log(message);
-              console.log(exception);
-              // alert("模型加载失败: " + message + "==" + exception);
+              LoadTool.remove(modelData.resPath + modelData.resName);
+              console.log(message, exception);
+              alert("模型加载失败,请刷新页面重试: " + message + "==" + exception);
               // alert(exception);
               if (onError) {
                 onError(message)
diff --git a/src/app/babylon/controller/serve-manager.ts b/src/app/babylon/controller/serve-manager.ts
index 90cd9ea..b0e2e72 100644
--- a/src/app/babylon/controller/serve-manager.ts
+++ b/src/app/babylon/controller/serve-manager.ts
@@ -53,7 +53,7 @@ export class ServeManager {
         let l_data = classToPlain(institutionData);
 
         console.log("保存单位", l_data);
-        this.buildingBISrv.postBuildingBasicInfos(key, l_data)
+        this.buildingBISrv.postBuildingBasicInfos(key, 1, l_data)
             .subscribe(data => {
                 console.log("保存单位成功:" + key, l_data);
                 if (onSuccess) {
diff --git a/src/app/babylon/controller/status/status-manager.ts b/src/app/babylon/controller/status/status-manager.ts
index bb85945..642d7cb 100644
--- a/src/app/babylon/controller/status/status-manager.ts
+++ b/src/app/babylon/controller/status/status-manager.ts
@@ -54,6 +54,11 @@ export class StatusManager {
         newStatus.onEnter();
         return newStatus;
     }
+
+    static dispose() {
+        StatusManager.s_allStatus = [];
+        StatusManager.s_currentStatus = null;
+    }
 }
 
 
diff --git a/src/app/babylon/game.ts b/src/app/babylon/game.ts
index c331dd7..702b012 100644
--- a/src/app/babylon/game.ts
+++ b/src/app/babylon/game.ts
@@ -38,7 +38,10 @@ export class Game {
 
         // 监听浏览器改变大小的事件,通过调用engine.resize()来自适应窗口大小
         window.addEventListener("resize", function () {
-            Game.instance.engine.resize();
+            if (Game.instance != null) {
+                Game.instance.engine.resize();
+            }
+
         });
 
     }
@@ -54,6 +57,7 @@ export class Game {
 
     dispose() {
         SceneManager.Instance.dispose();
+        StatusManager.dispose();
         this.scene.dispose()
         this.scene = null;
         this.engine.dispose();
diff --git a/src/app/babylon/model/data/institution/facility/property-data/in/property-data-sygx.ts b/src/app/babylon/model/data/institution/facility/property-data/in/property-data-sygx.ts
index a396beb..f3fa99d 100644
--- a/src/app/babylon/model/data/institution/facility/property-data/in/property-data-sygx.ts
+++ b/src/app/babylon/model/data/institution/facility/property-data/in/property-data-sygx.ts
@@ -4,21 +4,22 @@ import { PropertyData_Base_IMG } from "../base/property-data-base-img";
 import { PropertyData_Base } from "../property-data-base";
 
 /**
- * 输油管
+ * 输油管线
  */
 export class PropertyData_SYGX extends PropertyData_Base_IMG {
 
     constructor(key: string) {
-        super(key, "", "", "", FacilityType.JY_SYGX);
-
+      super(key, "", "", "", FacilityType.JY_SYGX);
+      this.name = "未命名";
     }
 
     clone(key: string) {
         let result = new PropertyData_SYGX(key);
+        result.name = this.name;
         result.img = this.img;
         result.pos = this.pos;
         result.info = this.info,
-            result.is360 = this.is360;
+        result.is360 = this.is360;
         return result;
     }
 
diff --git a/src/app/babylon/model/data/institution/facility/property-data/in/property-data-yqhsgx.ts b/src/app/babylon/model/data/institution/facility/property-data/in/property-data-yqhsgx.ts
index 22bdab0..a8c62f0 100644
--- a/src/app/babylon/model/data/institution/facility/property-data/in/property-data-yqhsgx.ts
+++ b/src/app/babylon/model/data/institution/facility/property-data/in/property-data-yqhsgx.ts
@@ -4,22 +4,28 @@ import { PropertyData_Base_IMG } from "../base/property-data-base-img";
 import { PropertyData_Base } from "../property-data-base";
 
 /**
- * 输油管
+ * 油气回收管线
  */
 export class PropertyData_YQHSGX extends PropertyData_Base_IMG {
 
+    VRUType: string = ""; //油气回收系统类型
+    VRUPumpType: string = ""; //油气回收泵类型
+    
     constructor(key: string) {
-        super(key, "", "", "", FacilityType.JY_YQHSGX);
-
+      super(key, "", "", "", FacilityType.JY_YQHSGX);
+      this.name = "未命名";
     }
 
     clone(key: string) {
-        let result = new PropertyData_YQHSGX(key);
-        result.img = this.img;
-        result.pos = this.pos;
-        result.info = this.info,
-            result.is360 = this.is360;
-        return result;
+      let result = new PropertyData_YQHSGX(key);
+      result.name = this.name;
+      result.VRUType = this.VRUType;
+      result.VRUPumpType = this.VRUPumpType;
+      result.img = this.img;
+      result.pos = this.pos;
+      result.info = this.info,
+      result.is360 = this.is360;
+      return result;
     }
 
 }
\ No newline at end of file
diff --git a/src/app/babylon/tool/gizmo-tool.ts b/src/app/babylon/tool/gizmo-tool.ts
index 632c872..a88eb6a 100644
--- a/src/app/babylon/tool/gizmo-tool.ts
+++ b/src/app/babylon/tool/gizmo-tool.ts
@@ -83,6 +83,10 @@ export class GizmoTool {
     GizmoTool.onTransformUITypeChange(TransformUIType.Hide);
   }
 
+  static dispose() {
+
+  }
+
   static onBeforeRender(
     eventData: Scene,
     eventState: EventState
@@ -194,8 +198,7 @@ export class GizmoTool {
 
   //改变Gizmo目标
   static changeGizmoAim(mesh: AbstractMesh, x: boolean = true, y = true, z = true) {
-
-
+    //console.trace("目标", ModeManager.currentMode);
     GizmoTool.s_nowPickAim_mesh = mesh;
     GizmoTool.s_gizmoManager.attachToMesh(mesh);
     GizmoTool.s_gizmoManager.gizmos.positionGizmo.xGizmo.isEnabled = x;
@@ -427,6 +430,7 @@ export class GizmoTool {
 
     if (uiType == TransformUIType.Hide || !ModeManager.s_isMakeMode) { //隐藏选中框
       GizmoTool.s_boundingBoxGizmo.attachedMesh = null;
+
     }
 
   }
diff --git a/src/app/babylon/tool/load-tool.ts b/src/app/babylon/tool/load-tool.ts
index d135607..a92efea 100644
--- a/src/app/babylon/tool/load-tool.ts
+++ b/src/app/babylon/tool/load-tool.ts
@@ -1,3 +1,4 @@
+import { PlanComponent } from "src/app/pages/plan/plan.component";
 
 /**
  * 加载管理器
@@ -49,16 +50,16 @@ export class LoadTool {
      * 开始加载
      */
     static onStart() {
-        console.log("开始加载");
-        //ThreeDimensionalHomeComponent.instance.maskLayerService.sendMessage(true)
+        // console.log("开始加载");
+        PlanComponent.instance.showLoading(true);
     }
 
     /**
      * 全部加载结束
      */
     static onEnd() {
-        console.log("结束加载");
-        //ThreeDimensionalHomeComponent.instance.maskLayerService.sendMessage(false)
+        // console.log("结束加载");
+        PlanComponent.instance.showLoading(false);
     }
 
 }
\ No newline at end of file
diff --git a/src/app/babylon/view/building-window/building-ui-item.ts b/src/app/babylon/view/building-window/building-ui-item.ts
index d7ab98e..53b3f47 100644
--- a/src/app/babylon/view/building-window/building-ui-item.ts
+++ b/src/app/babylon/view/building-window/building-ui-item.ts
@@ -3,6 +3,7 @@
 import { AbstractMesh, Mesh, TransformNode } from "@babylonjs/core";
 import { ConfigManager } from "../../controller/config-manager";
 import { InfoManager } from "../../controller/info-manager";
+import { ModeManager, ModeType } from "../../controller/mode-manager";
 import { SceneManager } from "../../controller/scene-manager";
 import { IndoorStatus } from "../../controller/status/indoor-status";
 import { StatusManager } from "../../controller/status/status-manager";
@@ -161,7 +162,7 @@ export class BuildingUIItem {
      */
     onSelect(select: boolean, animMove = true) {
         if (select) {
-            if (this.buildingInfo.ModelInfo != null && this.buildingInfo.ModelInfo.modelBox != null) {
+            if (this.buildingInfo.ModelInfo != null && this.buildingInfo.ModelInfo.modelBox != null && ModeManager.currentMode == ModeType.Edit) {
                 GizmoTool.onPickMeshInfoObservable.notifyObservers(this.buildingInfo.ModelInfo);
                 //BabylonTool.changeCameraTarget(SceneManager.Instance.defaultCamera, this.buildingInfo.ModelInfo.modelBox, animMove);
             }
diff --git a/src/app/babylon/view/building-window/building-window.ts b/src/app/babylon/view/building-window/building-window.ts
index 485c347..1b852b2 100644
--- a/src/app/babylon/view/building-window/building-window.ts
+++ b/src/app/babylon/view/building-window/building-window.ts
@@ -128,7 +128,7 @@ export class BuildingWindow extends UIBase {
             file.push(manifestFile); //临时关闭缓存文件
         }
 
-
+        PlanComponent.instance.showLoading(true);
         ServeManager.instance.uploadFile(0, file, resPath_out, (name: string, path: string, currentfile) => {
             if (TsTool.stringContain(name, ".gltf")) {
                 if (TsTool.stringContain(name, ".gltf.manifest")) {
@@ -150,6 +150,7 @@ export class BuildingWindow extends UIBase {
             }
         }
             , () => {
+                PlanComponent.instance.showLoading(false);
                 let buildingInfo = buildingWindow.getBuildingInfo(buildingData.normalData.key);
                 buildingWindow.updateBuildingModel(buildingInfo, true);
                 // buildingWindow.three = ThreeDimensionalHomeComponent.instance;
@@ -372,10 +373,10 @@ export class BuildingWindow extends UIBase {
             }
         }
 
-        console.log("选中建筑", modelInfo);
+        // console.log("选中建筑", modelInfo);
         this.showJYZModules(JYZInfoMoudleType.AQSS, false);
         this.showJYZModules(JYZInfoMoudleType.YQHSGX, false);
-        this.showJYZModules(JYZInfoMoudleType.YQHSGX, false);
+        this.showJYZModules(JYZInfoMoudleType.SYG, false);
         this.recoverMoudleShow(null);
 
         //this.onChangeCurrentBuildingItem(item);
@@ -506,7 +507,7 @@ export class BuildingWindow extends UIBase {
             if (firstType == BuildingType.Environment) {
                 instance.createOneBuildingItem(firstItem, 0, (uiItem, index) => {
                     instance.onChangeCurrentBuildingItem(uiItem, false);
-                    uiItem.lookAt(false);
+                    // uiItem.lookAt(false);
                     if (buildingDatas_Environment.length > 1) {
                         instance.addBuildings(BuildingType.Environment, 1);
                     }
@@ -519,7 +520,7 @@ export class BuildingWindow extends UIBase {
             else {
                 instance.createOneBuildingItem(firstItem, 0, (uiItem, index) => {
                     instance.onChangeCurrentBuildingItem(uiItem, false);
-                    uiItem.lookAt(false);
+                    // uiItem.lookAt(false);
                     if (buildingDatas_mormal.length > 1) {
                         instance.addBuildings(BuildingType.Normal, 1);
                     }
diff --git a/src/app/babylon/view/facilityinfoinscene-window/facilityinfo-ui-item.ts b/src/app/babylon/view/facilityinfoinscene-window/facilityinfo-ui-item.ts
index f9126ba..8c2e292 100644
--- a/src/app/babylon/view/facilityinfoinscene-window/facilityinfo-ui-item.ts
+++ b/src/app/babylon/view/facilityinfoinscene-window/facilityinfo-ui-item.ts
@@ -98,10 +98,10 @@ export class FacilityInfoUIItem {
     }
     else {
       this.facilityInfoInSceneWindow.selectFacilityItemToThree([this], false);
-      if (!this.facilityInfoInSceneWindow.getFacilityUIShowType(this.getType())) {
-        this.modelInfo.setIconEnable(select);
+      // if (!this.facilityInfoInSceneWindow.getFacilityUIShowType(this.getType())) {
+      //   this.modelInfo.setIconEnable(select);
 
-      }
+      // }
       this.facilityInfoInSceneWindow.playJYJSelectEffect(select, this.modelInfo)
 
     }
diff --git a/src/app/babylon/view/facilityinfoinscene-window/facilityinfoinscene-window.ts b/src/app/babylon/view/facilityinfoinscene-window/facilityinfoinscene-window.ts
index 49ff7d9..bc28516 100644
--- a/src/app/babylon/view/facilityinfoinscene-window/facilityinfoinscene-window.ts
+++ b/src/app/babylon/view/facilityinfoinscene-window/facilityinfoinscene-window.ts
@@ -178,31 +178,31 @@ export class FacilityInfoInSceneWindow extends UIBase {
      */
     showFacilityByType(facilityType: FacilityType, show: boolean) {
 
-        if (ModeManager.currentMode == ModeType.Look) {
-            for (let i = 0; i < this.facilityInfoUIItemes.length; i++) {
-                let l_facilityData = (this.facilityInfoUIItemes[i].modelInfo.modelData) as ModelData_facility;
-                if (facilityType == null || facilityType == l_facilityData.facilityType) {
-                    this.facilityInfoUIItemes[i].modelInfo.setEnable(show);
-                }
-                else if (show) {
-                    this.facilityInfoUIItemes[i].modelInfo.setEnable(false);
-                }
-            }
-            // for (let i = 0; i < this.facilityInfoUIItemes.length; i++) {
-            //     let l_facilityData = (this.facilityInfoUIItemes[i].modelInfo.modelData) as ModelData_facility;
-            //     if (facilityType == null || facilityType == l_facilityData.facilityType) {
-            //         this.facilityInfoUIItemes[i].modelInfo.setIconEnable(show);
-            //     }
-            // }
-        }
-        else {
-            for (let i = 0; i < this.facilityInfoUIItemes.length; i++) {
-                let l_facilityData = (this.facilityInfoUIItemes[i].modelInfo.modelData) as ModelData_facility;
-                if (facilityType == null || facilityType == l_facilityData.facilityType) {
-                    this.facilityInfoUIItemes[i].modelInfo.setIconEnable(show);
-                }
+        // if (ModeManager.currentMode == ModeType.Look) {
+        //     for (let i = 0; i < this.facilityInfoUIItemes.length; i++) {
+        //         let l_facilityData = (this.facilityInfoUIItemes[i].modelInfo.modelData) as ModelData_facility;
+        //         if (facilityType == null || facilityType == l_facilityData.facilityType) {
+        //             this.facilityInfoUIItemes[i].modelInfo.setEnable(show);
+        //         }
+        //         else if (show) {
+        //             this.facilityInfoUIItemes[i].modelInfo.setEnable(false);
+        //         }
+        //     }
+        //     // for (let i = 0; i < this.facilityInfoUIItemes.length; i++) {
+        //     //     let l_facilityData = (this.facilityInfoUIItemes[i].modelInfo.modelData) as ModelData_facility;
+        //     //     if (facilityType == null || facilityType == l_facilityData.facilityType) {
+        //     //         this.facilityInfoUIItemes[i].modelInfo.setIconEnable(show);
+        //     //     }
+        //     // }
+        // }
+        // else {
+        for (let i = 0; i < this.facilityInfoUIItemes.length; i++) {
+            let l_facilityData = (this.facilityInfoUIItemes[i].modelInfo.modelData) as ModelData_facility;
+            if (facilityType == null || facilityType == l_facilityData.facilityType) {
+                this.facilityInfoUIItemes[i].modelInfo.setIconEnable(show);
             }
         }
+        // }
 
     }
 
@@ -483,7 +483,6 @@ export class FacilityInfoInSceneWindow extends UIBase {
         if (this.currentSelectJYJInfo != null) {
             let facilityItem: FacilityInfoUIItem = FacilityInfoInSceneWindow.instance.getFacilityItem(this.currentSelectJYJInfo);
             facilityItem.onSelect(false);
-            // this.playJYJSelectEffect(false, this.currentSelectJYJInfo);
             this.currentSelectJYJInfo = null;
         }
 
@@ -496,8 +495,6 @@ export class FacilityInfoInSceneWindow extends UIBase {
         try {
             let facilityInfosByType = BuildingWindow.instance.currentBuidngItem.buildingInfo.ModelInfo.facilityInfos;
 
-
-
             for (let i = 0; i < facilityInfosByType.length; i++) {
                 if ((currentMoudle == null || currentMoudle == JYZInfoMoudleType.JYJ) && facilityInfosByType[i].type == FacilityType.JY_JYJ ||
                     (currentMoudle == null || currentMoudle == JYZInfoMoudleType.YG) && facilityInfosByType[i].type == FacilityType.JY_YG) {
@@ -519,28 +516,18 @@ export class FacilityInfoInSceneWindow extends UIBase {
             for (let j = 0; j < childMesh.length; j++) {
                 if (pickInfo.pickedMesh == childMesh[j]) {
                     result = allJYJInfo[i];
-                    console.log("通过点击,找到加油机了");
-
                     break;
                 }
             }
         }
 
-
         if (result != null) {
-
-            //this.playJYJSelectEffect(true, result);
-
             if ((result.modelData as ModelData_facility).facilityType == FacilityType.JY_JYJ && currentMoudle == null) {
                 PlanComponent.instance.toggleHeaderFence(1);//在空状态下,点击加油机,跳转到加油机页签
             }
 
             let facilityItem: FacilityInfoUIItem = FacilityInfoInSceneWindow.instance.getFacilityItem(result);
-            console.log("场景中选中设备", facilityItem);  //通知前端
             this.selectFacilityItem(facilityItem);
-            // facilityItem.onSelect(true);
-            //FacilityInfoInSceneWindow.instance.selectFacilityItemToThree([facilityItem], true);
-            //console.log(facilityItem.getHeadUIPos());
         }
     }
 
diff --git a/src/app/babylon/view/mark-window/mark-window.ts b/src/app/babylon/view/mark-window/mark-window.ts
index 3143d2e..e82d75e 100644
--- a/src/app/babylon/view/mark-window/mark-window.ts
+++ b/src/app/babylon/view/mark-window/mark-window.ts
@@ -189,6 +189,7 @@ export class MarkWindow extends UIBase {
      * 开启界面  
      */
     static openWindow(): MarkWindow {
+        console.log("进入沙盘");
         if (MarkWindow.instance == null) {
             SceneManager.s_markWindow = UIManager.open(MarkWindow);
         }
diff --git a/src/app/pages/left-domain/left-domain.component.html b/src/app/pages/left-domain/left-domain.component.html
index 3bd7838..9ecce0c 100644
--- a/src/app/pages/left-domain/left-domain.component.html
+++ b/src/app/pages/left-domain/left-domain.component.html
@@ -23,22 +23,20 @@
         <div class="positionLeftTop" *ngIf="selectFacilityId === item.getID()"></div><div class="positionLeftBottom" *ngIf="selectFacilityId === item.getID()"></div>
         <div class="positionRightTop" *ngIf="selectFacilityId === item.getID()"></div><div class="positionRightBottom" *ngIf="selectFacilityId === item.getID()"></div>
         <!-- 选中样式 -->
-        <p class="title"><input type="text" class="tableInput" [(ngModel)]="item.getPropertyData().name"></p>
+        <p class="title"><input type="text" class="tableInput" [disabled]="!editMode" [(ngModel)]="item.getPropertyData().name"></p>
         <div class="table">
           <div class="tableHeader">
             <p>品牌</p>
-            <p>超大牌</p>
             <p>油枪数量</p>
             <p>油品品号</p>
             <p>油泵类型</p>
           </div>
           <div class="tableContent">
-            <p><input type="text" class="tableInput" [disabled]="!editModel" [(ngModel)]="item.getPropertyData().brand"></p>
-            <p><input type="text" class="tableInput" [disabled]="!editModel" [(ngModel)]="item.getPropertyData().superBrand"></p>
-            <p><input type="text" class="tableInput" [disabled]="!editModel" [(ngModel)]="item.getPropertyData().oilGunNum"></p>
-            <p><input type="text" class="tableInput" [disabled]="!editModel" [(ngModel)]="item.getPropertyData().oilProductNo"></p>
+            <p><input type="text" class="tableInput" [disabled]="!editMode" [(ngModel)]="item.getPropertyData().brand"></p>
+            <p><input type="text" class="tableInput" [disabled]="!editMode" [(ngModel)]="item.getPropertyData().oilGunNum"></p>
+            <p><input type="text" class="tableInput" [disabled]="!editMode" [(ngModel)]="item.getPropertyData().oilProductNo"></p>
             <p style="padding-left: 8px;">
-              <nz-select class="tableSelect" [nzBorderless]="true" [nzDisabled]="!editModel" [(ngModel)]="item.getPropertyData().oilPumpType">
+              <nz-select class="tableSelect" [nzBorderless]="true" [nzDisabled]="!editMode" [(ngModel)]="item.getPropertyData().oilPumpType">
                 <nz-option nzValue="zxb" nzLabel="自吸泵"></nz-option>
                 <nz-option nzValue="qyb" nzLabel="潜油泵"></nz-option>
               </nz-select>
@@ -49,13 +47,13 @@
     </div>
     <!-- 加油机 -->
     <!-- 油罐设备 -->
-    <div class="publicBox refueller oilTank" *ngIf="beforeFence === 2">
+    <div class="publicBox refueller" *ngIf="beforeFence === 2">
       <div class="interval" *ngFor="let item of FacilityList" (click)="selectFacility(item)">
         <!-- 选中样式 -->
         <div class="positionLeftTop" *ngIf="selectFacilityId === item.getID()"></div><div class="positionLeftBottom" *ngIf="selectFacilityId === item.getID()"></div>
         <div class="positionRightTop" *ngIf="selectFacilityId === item.getID()"></div><div class="positionRightBottom" *ngIf="selectFacilityId === item.getID()"></div>
         <!-- 选中样式 -->
-        <p class="title"><input type="text" class="tableInput" [(ngModel)]="item.getPropertyData().name"></p>
+        <p class="title"><input type="text" class="tableInput" [disabled]="!editMode" [(ngModel)]="item.getPropertyData().name"></p>
         <div class="table">
           <div class="tableHeader">
             <p>油品品号</p>
@@ -66,13 +64,13 @@
             <p>油罐类型</p>
           </div>
           <div class="tableContent">
-            <p><input type="text" class="tableInput" [disabled]="!editModel" [(ngModel)]="item.getPropertyData().oilProductNo"></p>
-            <p><input type="text" class="tableInput" [disabled]="!editModel" [(ngModel)]="item.getPropertyData().oilTankVolume"></p>
-            <p><input type="text" class="tableInput" [disabled]="!editModel" [(ngModel)]="item.getPropertyData().safeVolume"></p>
-            <p><input type="text" class="tableInput" [disabled]="!editModel" [(ngModel)]="item.getPropertyData().quantity"></p>
-            <p><input type="text" class="tableInput" [disabled]="!editModel" [(ngModel)]="item.getPropertyData().tankFarm"></p>
+            <p><input type="text" class="tableInput" [disabled]="!editMode" [(ngModel)]="item.getPropertyData().oilProductNo"></p>
+            <p><input type="text" class="tableInput" [disabled]="!editMode" [(ngModel)]="item.getPropertyData().oilTankVolume"></p>
+            <p><input type="text" class="tableInput" [disabled]="!editMode" [(ngModel)]="item.getPropertyData().safeVolume"></p>
+            <p><input type="text" class="tableInput" [disabled]="!editMode" [(ngModel)]="item.getPropertyData().quantity"></p>
+            <p><input type="text" class="tableInput" [disabled]="!editMode" [(ngModel)]="item.getPropertyData().tankFarm"></p>
             <p style="padding-left: 8px;">
-              <nz-select class="tableSelect" [nzBorderless]="true" [nzDisabled]="!editModel" [(ngModel)]="item.getPropertyData().oilTankType">
+              <nz-select class="tableSelect" [nzBorderless]="true" [nzDisabled]="!editMode" [(ngModel)]="item.getPropertyData().oilTankType">
                 <nz-option nzValue="scg" nzLabel="双层罐"></nz-option>
                 <nz-option nzValue="dcg" nzLabel="单层罐"></nz-option>
                 <nz-option nzValue="fsgc" nzLabel="防渗罐池"></nz-option>
@@ -91,16 +89,63 @@
       </ng-template>
     </div>
     <!-- 消防设施 -->
+    <!-- 输油管线 -->
+    <div class="publicBox refueller" *ngIf="beforeFence === 5">
+      <div class="interval" *ngFor="let item of FacilityList" (click)="selectFacility(item)">
+        <!-- 选中样式 -->
+        <div class="positionLeftTop" *ngIf="selectFacilityId === item.getID()"></div><div class="positionLeftBottom" *ngIf="selectFacilityId === item.getID()"></div>
+        <div class="positionRightTop" *ngIf="selectFacilityId === item.getID()"></div><div class="positionRightBottom" *ngIf="selectFacilityId === item.getID()"></div>
+        <!-- 选中样式 -->
+        <p class="title"><input type="text" class="tableInput" [disabled]="!editMode" [(ngModel)]="item.getPropertyData().name"></p>
+        <div class="propertyImage">
+          <p class="imgTitle" style="margin-top: 0px;">设计图纸</p>
+          <img src="../../../assets/images/upload.png">
+          <a href="javascript:;" class="bottomPlanUpload uploadImgBox" *ngIf="editMode"><input type="file"><i nz-icon nzType="plus" nzTheme="outline"></i></a>
+        </div>
+      </div>
+    </div>
+    <!-- 输油管线 -->
+    <!-- 油气回收 -->
+    <div class="publicBox refueller" *ngIf="beforeFence === 6">
+      <div class="interval" *ngFor="let item of FacilityList" (click)="selectFacility(item)">
+        <!-- 选中样式 -->
+        <div class="positionLeftTop" *ngIf="selectFacilityId === item.getID()"></div><div class="positionLeftBottom" *ngIf="selectFacilityId === item.getID()"></div>
+        <div class="positionRightTop" *ngIf="selectFacilityId === item.getID()"></div><div class="positionRightBottom" *ngIf="selectFacilityId === item.getID()"></div>
+        <!-- 选中样式 -->
+        <p class="title"><input type="text" class="tableInput" [disabled]="!editMode" [(ngModel)]="item.getPropertyData().name"></p>
+        <div class="table">
+          <div class="tableHeader" style="flex: 55%;">
+            <p>油气回收系统类型</p>
+            <p>油气回收泵类型</p>
+          </div>
+          <div class="tableContent" style="flex: 45%;">
+            <p style="padding-left: 8px;">
+              <nz-select class="tableSelect" [nzBorderless]="true" [nzDisabled]="!editMode" [(ngModel)]="item.getPropertyData().VRUType">
+                <nz-option nzValue="fss" nzLabel="分散式"></nz-option>
+                <nz-option nzValue="jzs" nzLabel="集中式"></nz-option>
+              </nz-select>
+            </p>
+            <p><input type="text" class="tableInput" [disabled]="!editMode" [(ngModel)]="item.getPropertyData().VRUPumpType"></p>
+          </div>
+        </div>
+        <div class="propertyImage">
+          <p class="imgTitle">设计图纸</p>
+          <img src="../../../assets/images/upload.png">
+          <a href="javascript:;" class="bottomPlanUpload uploadImgBox" *ngIf="editMode"><input type="file"><i nz-icon nzType="plus" nzTheme="outline"></i></a>
+        </div>
+      </div>
+    </div>
+    <!-- 油气回收 -->
     <!-- 处置预案 -->
     <div class="publicBox disposalPlan" *ngIf="beforeFence === 7 && allMarkPlanData">
       <div class="interval" *ngFor="let item of allMarkPlanData.datas;let key = index;">
         <div class="publicDisposal disposalHeader">
-          {{item.name}}<label><i nz-icon nzType="plus-circle" nzTheme="outline" (click)="addNodePop = item.id;"></i><i nz-icon nzType="delete" nzTheme="outline" (click)="deleteDisposal(item)"></i></label>
+          {{item.name}}<label *ngIf="editMode"><i nz-icon nzType="plus-circle" nzTheme="outline" (click)="addNodePop = item.id;"></i><i nz-icon nzType="delete" nzTheme="outline" (click)="deleteDisposal(item)"></i></label>
         </div>
         <ul>
           <li class="publicDisposal disposalContent" *ngFor="let items of item.nodes;let keys = index;">
             <span (click)='selectNode(item,items)' [ngClass]="{'selectNode': selectNodeId == items.id && selectPlanId == item.id}">{{items.name}}</span>
-            <label><i nz-icon nzType="save" nzTheme="outline" (click)="saveDisposal(item.id,items.id)"></i><i nz-icon nzType="delete" nzTheme="outline" (click)="deleteDisposal(item,items)"></i></label>
+            <label *ngIf="editMode"><i nz-icon nzType="save" nzTheme="outline" (click)="saveDisposal(item.id,items.id)"></i><i nz-icon nzType="delete" nzTheme="outline" (click)="deleteDisposal(item,items)"></i></label>
           </li>
         </ul>
       </div>
@@ -151,7 +196,7 @@
     <!-- 弹窗 -->
   </div>
 
-  <div class="childBottom" *ngIf="beforeFence === 0">
+  <div class="childBottom" *ngIf="beforeFence === 0 && editMode">
     <button (click)="editInfo()"><i nz-icon nzType="edit" nzTheme="outline"></i>编辑信息</button>
     <button (click)="deriveExcel()"><i nz-icon nzType="file-excel" nzTheme="outline"></i>导出Excel</button>
   </div>
diff --git a/src/app/pages/left-domain/left-domain.component.scss b/src/app/pages/left-domain/left-domain.component.scss
index 2c2b629..51eafd9 100644
--- a/src/app/pages/left-domain/left-domain.component.scss
+++ b/src/app/pages/left-domain/left-domain.component.scss
@@ -37,6 +37,12 @@
 .title{ font-size: 16px; height: 20px; line-height: 20px; margin-bottom: 20px; .anticon{ margin-left: 5px; font-size: 16px; } } //头部header
 .tableInput{ border: none; outline: none; background-color: transparent; width: 100%; height: 100%; }
 .tableSelect{ width: 100%; height: 100%; color: #fff; }
+.propertyImage{
+  padding-left: 15px;
+  img{ width: auto; max-height: 130px; display: block; margin-bottom: 10px; }
+  .imgTitle{ font-size: 14px; height: 20px; line-height: 20px; margin: 10px 0; }
+  .uploadImgBox{ margin: 0; width: 50px; height: 50px; line-height: 50px; text-align: center; }
+}
 
 .baseInfo{ //基本信息
   .interval{ margin-top: 10px; border-bottom: 1px solid rgb(197, 226, 245); } //分隔div
@@ -71,9 +77,6 @@
     }
   }
 }
-// .oilTank{ //油管设备
-
-// }
 .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; } } }
 }
diff --git a/src/app/pages/left-domain/left-domain.component.ts b/src/app/pages/left-domain/left-domain.component.ts
index ff45bc5..f0014c3 100644
--- a/src/app/pages/left-domain/left-domain.component.ts
+++ b/src/app/pages/left-domain/left-domain.component.ts
@@ -10,21 +10,28 @@ import { Event_GetAllMarkPlanData } from 'src/app/babylon/controller/event-manag
 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';
 
 @Component({
   selector: 'app-left-domain',
   templateUrl: './left-domain.component.html',
-  styleUrls: ['./left-domain.component.scss']
+  styleUrls: ['./left-domain.component.scss', '../plan/publicPop.scss']
 })
 export class LeftDomainComponent implements OnInit {
 
   constructor(private message: NzMessageService) { }
 
   ngOnInit(): void {
+    let editMode = sessionStorage.getItem('isGasStation')
+    if (editMode == 'false') {
+      this.editMode = true
+    } else {
+      this.editMode = false
+    }
     this.initComponent()
   }
 
-  editModel: boolean = true; //编辑/查看模式
+  editMode: boolean = true; //编辑/查看模式
   beforeFence: number; //当前选中功能栏
   FacilityList: FacilityInfoUIItem[] = []; //统计设备 list
   selectFacilityId: string = null; //选中设备 ID
@@ -43,20 +50,24 @@ 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)=>{
+      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=>{
+    FacilityInfoInSceneWindow.instance.facilityInfoUIItemes.forEach(item => {
       if (this.beforeFence === 1) { //加油机
-        item.getType() === "JY_JYJ"? list.push(item) : null
+        item.getType() === "JY_JYJ" ? list.push(item) : null
       } else if (this.beforeFence === 2) { //油罐设备
-        item.getType() === "JY_YG"? list.push(item) : null
+        item.getType() === "JY_YG" ? list.push(item) : null
       } else if (this.beforeFence === 3) { //消防设施
-        (item.getType()).slice(0,3) === "XF_"? list.push(item) : null
+        (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
       }
     })
     this.FacilityList = list
@@ -83,8 +94,8 @@ export class LeftDomainComponent implements OnInit {
   //处理 treeData
   handleTreeData(list: FacilityInfoUIItem[]) {
     this.treeData = []
-    list.forEach(item=>{
-      let isFind = this.treeData.find(element=>{ return (item.getType()).includes(element.key) })
+    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: [], }
@@ -96,22 +107,22 @@ export class LeftDomainComponent implements OnInit {
           this.treeData.push(primaryNode)
         }
       } else { //存在
-        if (item.getType().includes('XF_MHQ') && !isFind.children.find(elements=>{ return elements.key === item.getType() })) { //灭火器
+        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.editModel) {
+    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 (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)
@@ -125,8 +136,8 @@ export class LeftDomainComponent implements OnInit {
   //获取设备 数量
   getFacilityNum(type: string): number {
     let num = 0
-    this.FacilityList.forEach(item=>{
-      item.getType().includes(type)? num = num + 1 : null
+    this.FacilityList.forEach(item => {
+      item.getType().includes(type) ? num = num + 1 : null
     })
     return num
   }
@@ -139,11 +150,11 @@ export class LeftDomainComponent implements OnInit {
         FacilityInfoInSceneWindow.instance.showFacilityByType(null, false)
         FacilityInfoInSceneWindow.instance.showFacilityByType(FacilityType[event.node.key], event.node.isSelected)
       } else { //显示所有
-        this.treeData.forEach(item=>{
+        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) })
+            item.children.forEach(element => { FacilityInfoInSceneWindow.instance.showFacilityByType(FacilityType[element.key], true) })
           }
         })
       }
@@ -162,7 +173,7 @@ export class LeftDomainComponent implements OnInit {
       MarkWindow.instance.createMarkPlaneData(e.name)
       this.addDisposalPop = false
     } else { //创建节点
-      MarkWindow.instance.createMarkNodeData(this.addNodePop,e.name)
+      MarkWindow.instance.createMarkNodeData(this.addNodePop, e.name)
       this.addNodePop = null
     }
   }
@@ -185,21 +196,28 @@ export class LeftDomainComponent implements OnInit {
       if (!MarkWindow.instance.currentMarkNodeInfo) { //未选中节点
         this.selectPlanId = item.id
         this.selectNodeId = e.id
-        MarkWindow.instance.selectMarkNode(item.id,e.id)
+        MarkWindow.instance.selectMarkNode(item.id, e.id)
       } else { //已选中节点
-        let isTrue = confirm('切换节点后,没保存的信息将会丢失!')
+        let isTrue = true;
+        if (ModeManager.currentMode == ModeType.Edit) {
+          isTrue = confirm('切换节点后,没保存的信息将会丢失!')
+        }
+
         if (isTrue) {
           this.selectPlanId = item.id
           this.selectNodeId = e.id
-          MarkWindow.instance.selectMarkNode(item.id,e.id)
+          MarkWindow.instance.selectMarkNode(item.id, e.id)
         }
       }
     } else if (this.selectPlanId === item.id && this.selectNodeId === e.id) { //取消选中
-      let isTrue = confirm('切换节点后,没保存的信息将会丢失!')
+      let isTrue = true;
+      if (ModeManager.currentMode == ModeType.Edit) {
+        isTrue = confirm('切换节点后,没保存的信息将会丢失!')
+      }
       if (isTrue) {
         this.selectPlanId = null
         this.selectNodeId = null
-        MarkWindow.instance.selectMarkNode(null,null)
+        MarkWindow.instance.selectMarkNode(null, null)
       }
     }
   }
@@ -218,10 +236,10 @@ export class LeftDomainComponent implements OnInit {
       this.saveDisposalDialog = true
     } else {
       if (this.selectPlanId === markPlanId && this.selectNodeId === nodeId) {
-        MarkWindow.instance.saveToOldNode(markPlanId,nodeId)
+        MarkWindow.instance.saveToOldNode(markPlanId, nodeId)
       } else {
         let isTrue = confirm('是否覆盖要保存的节点?')
-        isTrue? MarkWindow.instance.saveToOldNode(markPlanId,nodeId) : null
+        isTrue ? MarkWindow.instance.saveToOldNode(markPlanId, nodeId) : null
       }
     }
   }
@@ -236,7 +254,7 @@ export class LeftDomainComponent implements OnInit {
       this.saveType = 2
       this.allNodeList = []
       MarkWindow.instance.allMarkPlanData.datas.forEach(item => {
-        item.nodes.forEach(element=>{
+        item.nodes.forEach(element => {
           let node = {
             id: element.id,
             parrentId: item.id,
@@ -255,14 +273,14 @@ export class LeftDomainComponent implements OnInit {
         this.message.info('请完善表单')
         return
       }
-      MarkWindow.instance.createNewNodeAndSave(e.root.id,e.name)
+      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)
+      MarkWindow.instance.saveToOldNode(e.node.parrentId, e.node.id)
       this.saveType = null
     }
   }
diff --git a/src/app/pages/pages.module.ts b/src/app/pages/pages.module.ts
index 73d4f96..f60c82d 100644
--- a/src/app/pages/pages.module.ts
+++ b/src/app/pages/pages.module.ts
@@ -31,6 +31,7 @@ import { NzMessageModule } from 'ng-zorro-antd/message';
 import { NzSpinModule } from 'ng-zorro-antd/spin';
 import { NzTreeModule } from 'ng-zorro-antd/tree';
 import { NzCollapseModule } from 'ng-zorro-antd/collapse';
+import { NzStepsModule } from 'ng-zorro-antd/steps';
 import { TodayWarningAdminComponent } from './today-warning-admin/today-warning-admin.component';
 import { CriminalRecordsAdminComponent } from './criminal-records-admin/criminal-records-admin.component';
 import { EquipmentInfoComponent } from './equipment-info/equipment-info.component';
@@ -79,8 +80,8 @@ import { WarningDetailsComponent } from './today-warning-admin/warning-details/w
     NzSpinModule,
     NzTreeModule,
     NzTreeSelectModule,
-    NzCollapseModule
-
+    NzCollapseModule,
+    NzStepsModule
   ],
   entryComponents: [AddequipmentComponent, EditequipmentComponent,GetOutOfLineDetailsComponent],
   schemas: [CUSTOM_ELEMENTS_SCHEMA]
diff --git a/src/app/pages/plan/plan.component.html b/src/app/pages/plan/plan.component.html
index fb92d56..3d3c285 100644
--- a/src/app/pages/plan/plan.component.html
+++ b/src/app/pages/plan/plan.component.html
@@ -16,10 +16,10 @@
     <canvas id="center"></canvas>
 
     <!-- 左侧子组件 -->
-    <div class="leftChildComponent" *ngIf="isShowChildComponent" [ngStyle]="{ 'left': isShowLeftBuilding? '15%' : null }" [ngClass]="{'publicMoveUp': selectFence === 7}">
+    <div class="leftChildComponent" *ngIf="isShowChildComponent && selectFence != 4" [ngStyle]="{ 'left': isShowLeftBuilding && editMode && userMode? '15%' : null }" [ngClass]="{'publicMoveUp': selectFence === 7}">
       <div class="leftChildHeader">
         <div><i nz-icon nzType="star" nzTheme="outline"></i></div>
-        <div>{{allFence[selectFence]}}<i nz-icon nzType="plus-circle" nzTheme="outline" *ngIf="selectFence === 7" (click)="noticeChildComponent(true)"></i><i nz-icon nzType="save" nzTheme="outline" *ngIf="selectFence === 7" (click)="noticeChildComponent(false)"></i></div>
+        <div>{{allFence[selectFence]}}<i nz-icon nzType="plus-circle" nzTheme="outline" *ngIf="selectFence === 7 && editMode" (click)="noticeChildComponent(true)"></i><i nz-icon nzType="save" nzTheme="outline" *ngIf="selectFence === 7 && editMode" (click)="noticeChildComponent(false)"></i></div>
         <div (click)="toggleHeaderFence(selectFence)" title="关闭"><i nz-icon nzType="close-circle" nzTheme="outline"></i></div>
       </div>
       <div class="leftChildCenter"><app-left-domain #leftDomain></app-left-domain></div>
@@ -27,8 +27,8 @@
     <!-- 左侧子组件 -->
 
     <!-- 左侧建筑栏 -->
-    <div class="showLeftBuilding" title="显示" *ngIf="!isShowLeftBuilding" (click)="toggleLeftBuilding(true)"><i nz-icon nzType="right" nzTheme="outline"></i></div>
-    <div class="leftBuilding" [ngClass]="{'isShowLeftBuilding': isShowLeftBuilding === false, 'publicMoveUp': selectFence === 7}">
+    <div class="showLeftBuilding" title="显示" *ngIf="!isShowLeftBuilding && editMode && userMode" (click)="toggleLeftBuilding(true)"><i nz-icon nzType="right" nzTheme="outline"></i></div>
+    <div class="leftBuilding" *ngIf="editMode && userMode" [ngClass]="{'isShowLeftBuilding': isShowLeftBuilding === false, 'publicMoveUp': selectFence === 7}">
       <div class="hideLeft"><i nz-icon nzType="close" nzTheme="outline" title="隐藏" (click)="toggleLeftBuilding(false)"></i></div>
       <div class="leftHeader">
         <h1><label>模型列表</label></h1>
@@ -48,7 +48,7 @@
     <!-- 左侧建筑栏 -->
 
     <!-- 右侧图标栏 -->
-    <div class="rightIcons" *ngIf="selectFence === 0 || selectFence === 7" [ngClass]="{'publicMoveUp': selectFence === 7}">
+    <div class="rightIcons" *ngIf="editMode && (selectFence === 0 || selectFence === 7)" [ngClass]="{'publicMoveUp': selectFence === 7}" [ngStyle]="{'width': selectFence === 0? '60px' : null}">
       <div class="bottomCenter" id="bottomCenter">
         <ng-container *ngIf="selectFence === 0">
           <div class="everyIcon" (click)='selectBottomIcon(item)' *ngFor="let item of allFacilityUIItemes" [ngClass]="{'selectLeftIcon': beforeOneIcon == item.getIconID()}">
@@ -72,19 +72,19 @@
 
     <!-- 右上角快捷栏 -->
     <div class="rightTopFast">
-      <div class="publicFast leftFunction">
+      <div class="publicFast leftFunction" *ngIf="editMode && userMode">
         <button title="获取设备" (click)="getDevice()">获</button>
         <button title="清空设备" (click)="clearDevice()">清</button>
       </div>
-      <div class="publicFast leftFast">
+      <div class="publicFast leftFast" *ngIf="editMode && selectFence === 7">
         <button title="平移" (click)="translation()" [ngClass]="{'selectRightTopFast': selectRightTopFast == 0}"></button>
         <button title="旋转" (click)="revolve()" [ngClass]="{'selectRightTopFast': selectRightTopFast == 1}"></button>
         <button title="缩放" (click)="scale()" [ngClass]="{'selectRightTopFast': selectRightTopFast == 2}"></button>
-        <button title="吸附" (click)="adsorb()" [ngClass]="{'leftFastIsTure': selectAdsorb }"></button>
-        <button title="切换至顶视图" (click)="toggleTopLevelView()" [ngClass]="{'leftFastIsTure': topLevelView }"></button>
+        <!-- <button title="吸附" (click)="adsorb()" [ngClass]="{'leftFastIsTure': selectAdsorb }"></button>
+        <button title="切换至顶视图" (click)="toggleTopLevelView()" [ngClass]="{'leftFastIsTure': topLevelView }"></button> -->
       </div>
-      <div class="save">
-        <button (click)="preserve(false)" title="保存模块"><i nz-icon nzType="file-done" nzTheme="outline"></i></button>
+      <div class="save" *ngIf="editMode">
+        <button (click)="preserve(false)" title="保存模块" *ngIf="userMode"><i nz-icon nzType="file-done" nzTheme="outline"></i></button>
         <button (click)="preserve(true)" title="保存"><i nz-icon nzType="save" nzTheme="outline"></i></button>
       </div>
     </div>
@@ -101,7 +101,23 @@
         <div class="planHeaderVideo"><a href="javascript:;" class="bottomPlanUpload" style="width: 100px;"><input type="file"><img src="../../../assets/images/uploadVideo.png"></a></div>
       </div>
       <div style="height: 5px;"></div>
-      <div class="pulicPlanDiv bottomPlanCenter"></div>
+      <div class="pulicPlanDiv bottomPlanCenter">
+        <label><button>处置预案</button></label>
+        <label>
+          <nz-steps>
+            <nz-step [nzIcon]="iconTemplate"></nz-step>
+            <nz-step [nzIcon]="iconTemplate"></nz-step>
+            <nz-step [nzIcon]="iconTemplate"></nz-step>
+            <ng-template #iconTemplate><img src="../../../assets/images/stepIcon.png"></ng-template>
+          </nz-steps>
+        </label>
+        <label>
+          <i nz-icon nzType="backward" nzTheme="outline"></i>
+          <i nz-icon nzType="pause" nzTheme="outline"></i>
+          <i nz-icon nzType="border" nzTheme="outline"></i>
+          <i nz-icon nzType="forward" nzTheme="outline"></i>
+        </label>
+      </div>
     </div>
     <!-- 底部处置预案 -->
 
diff --git a/src/app/pages/plan/plan.component.scss b/src/app/pages/plan/plan.component.scss
index ea39903..896fb73 100644
--- a/src/app/pages/plan/plan.component.scss
+++ b/src/app/pages/plan/plan.component.scss
@@ -201,10 +201,11 @@
   .bottomCenter{
     width: 100%;
     height: 100%;
+    text-align: center;
     overflow-x: hidden;
     overflow-y: auto;
     .everyIcon {
-      width: 100px;
+      width: 60px;
       height: 58px;
       line-height: normal;
       text-align: center;
@@ -219,7 +220,7 @@
 
 //右上角快捷栏
 .rightTopFast{
-  width: 400px;
+  max-width: 400px;
   height: 38px;
   position: absolute;
   right: 1px;
@@ -292,5 +293,33 @@
   }
   .bottomPlanCenter{
     height: 35px;
+    line-height: 38px;
+    display: flex;
+    overflow: hidden;
+    label{
+      display: block;
+    }
+    label:first-child{
+      width: 15%;
+      height: 100%;
+      text-align: center;
+      button {
+        width: 60%;
+        height: 30px;
+        line-height: 30px;
+        color: #23D9FF;
+        //padding: 0;
+        background: rgba(35, 153, 255, 0.41);
+        border: 1px solid rgba(35, 217, 255, 0.4);
+      }
+    }
+    label:nth-child(2){ flex: 1; overflow: hidden; img{ height: 35px; width: auto; vertical-align: top; } }
+    label:last-child{
+      width: 15%;
+      height: 100%;
+      text-align: center;
+      color: #fff;
+      .anticon{ font-size: 20px; margin: 0 10px; }
+    }
   }
 }
\ No newline at end of file
diff --git a/src/app/pages/plan/plan.component.ts b/src/app/pages/plan/plan.component.ts
index 3b168a1..45827e1 100644
--- a/src/app/pages/plan/plan.component.ts
+++ b/src/app/pages/plan/plan.component.ts
@@ -3,7 +3,7 @@ import { Game } from 'src/app/babylon/game';
 import { LoginSatus } from 'src/app/babylon/controller/status/login-status';
 import { StatusManager } from 'src/app/babylon/controller/status/status-manager';
 import { InsitutionDataSimple } from 'src/app/babylon/model/data/institution/institution-data-simple';
-import { ModeManager } from 'src/app/babylon/controller/mode-manager';
+import { ModeManager, ModeType } from 'src/app/babylon/controller/mode-manager';
 import { ServeManager } from 'src/app/babylon/controller/serve-manager';
 import { BuildingBasicInfosService } from 'src/app/service/babylon/building-basic-infos.service';
 import { ObjectsService } from 'src/app/service/objects.service';
@@ -38,13 +38,23 @@ export class PlanComponent implements OnInit {
   public game: Game = new Game();
   public beforeOneSatus; //当前 satus
   public canvas: HTMLCanvasElement; //canvas 实例
-  public isShowLoading: boolean = false; //显隐 loading加载条
+  public editMode: boolean = true; //编辑/查看 模式
+  public userMode: boolean = ModeManager.s_isMakeMode; //是否为 内部权限
+  public isShowLoading: boolean = true; //显隐 loading加载条
 
   ngOnInit(): void {
     PlanComponent.instance = this;
     ServeManager.Init(this.buildingBISrv, this.objectsSrv);
     this.canvas = this.element.nativeElement.querySelector('#center') as HTMLCanvasElement;
     this.game.init(this.canvas);
+    let editMode = sessionStorage.getItem('isGasStation')
+    if (editMode == 'false') {
+      this.editMode = true
+      ModeManager.currentMode = ModeType.Edit
+    } else {
+      this.editMode = false
+      ModeManager.currentMode = ModeType.Look
+    }
     //监听 delete键盘事件
     this.eventManager.addGlobalEventListener('window', 'keydown', (event: any) => {
       if (event.keyCode == 46) { //delete
@@ -67,9 +77,9 @@ export class PlanComponent implements OnInit {
           this.beforeOneSatus = StatusManager.getStatus<LoginSatus>(LoginSatus);
           this.beforeOneSatus.onSelectInsSuccess(find)
         } else { //如果没有找到对应的单位key,则调用新建单位
-          let isAdd = confirm('没有单位name,是否进行初始化?')
+          let isAdd = confirm('没有单位' + key + ',是否进行初始化?')
           if (isAdd) {
-            let name = 'ceshi';
+            let name = key;
             loginStatus.createInsitution(key, name);
           }
         }
@@ -107,7 +117,7 @@ export class PlanComponent implements OnInit {
     let buildingWindow: BuildingWindow = this.beforeOneSatus.buildingWindow;
     let fenceType: JYZInfoMoudleType = this.getFenceType(type)
     if (this.selectFence != type) {
-      this.isShowChildComponent && this.leftDomain ? this.leftDomain.initComponent(type) : null; //手动初始化子组件
+      this.isShowChildComponent && this.leftDomain && type != 4 ? this.leftDomain.initComponent(type) : null; //手动初始化子组件
       this.selectFence = type
       this.isShowChildComponent = true
       buildingWindow.changeJYZInfoModel(fenceType, true)
@@ -365,14 +375,21 @@ export class PlanComponent implements OnInit {
     this.message.info(title);
   }
 
+  /**
+   * 展示加载遮罩
+   * @param show 
+   */
+  showLoading(show: boolean) {
+    this.isShowLoading = show;
+  }
 
 
 }
 
 // 处置预案 所有图标
 export class planIcons {
-  iconsName: string[] = ["灾情","内部力量","外部力量","其他"]
-  icons: MarkData[][] = [AllMarkData.CreateAllMarkData().marks_Disaster,AllMarkData.CreateAllMarkData().marks_Inside,AllMarkData.CreateAllMarkData().marks_Outside,AllMarkData.CreateAllMarkData().marks_Other,]
+  iconsName: string[] = ["灾情", "内部力量", "外部力量", "其他"]
+  icons: MarkData[][] = [AllMarkData.CreateAllMarkData().marks_Disaster, AllMarkData.CreateAllMarkData().marks_Inside, AllMarkData.CreateAllMarkData().marks_Outside, AllMarkData.CreateAllMarkData().marks_Other,]
 }
 //创建/编辑 建筑dataType
 export class modelBuilding {
diff --git a/src/app/service/babylon/building-basic-infos.service.ts b/src/app/service/babylon/building-basic-infos.service.ts
index 8245839..61f8e45 100644
--- a/src/app/service/babylon/building-basic-infos.service.ts
+++ b/src/app/service/babylon/building-basic-infos.service.ts
@@ -35,8 +35,8 @@ export class BuildingBasicInfosService {
    * @param name 
    * @param data 
    */
-  postBuildingBasicInfos(name: string, data: object): Observable<any> {
-    return this.postInfos(this.api_buildingInfo, name, data);
+  postBuildingBasicInfos(name: string, gasstationId: number, data: object): Observable<any> {
+    return this.postInfos(this.api_buildingInfo, data, { name: name, gasstationId: gasstationId });
   }
 
   /**
@@ -53,7 +53,7 @@ export class BuildingBasicInfosService {
    * @param data 
    */
   postMarkData(name: string, data: object): Observable<any> {
-    return this.postInfos(this.api_sandBox, name, data);
+    return this.postInfos(this.api_sandBox, data, { name: name });
   }
 
 
@@ -92,14 +92,11 @@ export class BuildingBasicInfosService {
    * @param name 
    * @param data 
    */
-  postInfos(api: string, name: string, data: object) {
-    let params = {
-      name: name,
-    };
+  postInfos(api: string, body: object, params = {}) {
 
     let headers = this.headers;
 
-    return this.http.post<any>(api + this.c_post, `'${JSON.stringify(data)}'`, { headers, params })
+    return this.http.post<any>(api + this.c_post, `'${JSON.stringify(body)}'`, { headers, params })
       .pipe(
         catchError((err) => this.handleError(err))
       );
diff --git a/src/assets/images/stepIcon.png b/src/assets/images/stepIcon.png
new file mode 100644
index 0000000..ec576ff
Binary files /dev/null and b/src/assets/images/stepIcon.png differ
diff --git a/src/styles.scss b/src/styles.scss
index 84b7cca..3981db8 100644
--- a/src/styles.scss
+++ b/src/styles.scss
@@ -108,6 +108,7 @@ h1 {
   .ant-tree,.ant-tree-node-content-wrapper:hover,.ant-tree-node-content-wrapper.ant-tree-node-selected { background-color: transparent; } //tree
   .ant-tree-node-content-wrapper { width: 100%; } //tree
 
+  .ant-select-disabled.ant-select-single:not(.ant-select-customize-input) .ant-select-selector { color: #fff; } //select
   .ant-select-single:not(.ant-select-customize-input) .ant-select-selector { border: none; border-radius: 0px; } //select
 
   .ant-collapse,.ant-collapse-item,.ant-collapse-header,.ant-collapse-content{ border-radius: 0px; border: none; } //可展开面板