zhouchong vor 2 Jahren
Ursprung
Commit
5ec6deaf85
39 geänderte Dateien mit 2051 neuen und 56 gelöschten Zeilen
  1. BIN
      src/assets/ZDimages/evacuation3_2/icon_bjgl_fj.png
  2. BIN
      src/assets/ZDimages/evacuation3_2/icon_bjgl_gd.png
  3. BIN
      src/assets/ZDimages/evacuation3_2/icon_bjgl_jt.png
  4. BIN
      src/assets/ZDimages/evacuation3_2/icon_bjgl_lcs.png
  5. BIN
      src/assets/ZDimages/evacuation3_2/icon_bjgl_td.png
  6. BIN
      src/assets/ZDimages/evacuation3_2/icon_bjgl_xjt.png
  7. BIN
      src/assets/ZDimages/evacuation3_2/icon_bjgl_zk.png
  8. BIN
      src/assets/ZDimages/evacuation3_2/icon_shang_hs.png
  9. BIN
      src/assets/ZDimages/evacuation3_2/icon_sjt.png
  10. BIN
      src/assets/ZDimages/evacuation3_2/icon_sysbjt_m.png
  11. BIN
      src/assets/ZDimages/evacuation3_2/icon_wsctp.png
  12. BIN
      src/assets/ZDimages/evacuation3_2/icon_xia_hs.png
  13. BIN
      src/assets/ZDimages/evacuation3_2/icon_xjt.png
  14. BIN
      src/assets/ZDimages/evacuation3_2/icon_yjtd.png
  15. BIN
      src/assets/ZDimages/evacuation3_2/icon_you_hs.png
  16. BIN
      src/assets/ZDimages/evacuation3_2/icon_yuo.png
  17. BIN
      src/assets/ZDimages/evacuation3_2/icon_znwl_bj.png
  18. BIN
      src/assets/ZDimages/evacuation3_2/icon_znwl_sc.png
  19. BIN
      src/assets/ZDimages/evacuation3_2/icon_znwl_sybz.png
  20. BIN
      src/assets/ZDimages/evacuation3_2/icon_zou_hs.png
  21. BIN
      src/assets/ZDimages/evacuation3_2/icon_zuo.png
  22. BIN
      src/assets/ZDimages/evacuation3_2/img_dzya_hzyj.png
  23. BIN
      src/assets/ZDimages/evacuation3_2/img_dzya_ldss.png
  24. BIN
      src/assets/ZDimages/evacuation3_2/img_xgbj_ch.png
  25. BIN
      src/assets/ZDimages/evacuation3_2/img_xgbj_fj.png
  26. BIN
      src/assets/ZDimages/evacuation3_2/img_xgbj_fjm.png
  27. BIN
      src/assets/ZDimages/evacuation3_2/img_xgbj_gd.png
  28. BIN
      src/assets/ZDimages/evacuation3_2/img_xgbj_ssd.png
  29. BIN
      src/assets/ZDimages/evacuation3_2/img_xgbj_syl.png
  30. BIN
      src/assets/ZDimages/evacuation3_2/img_xgbj_yjck.png
  31. BIN
      src/assets/ZDimages/evacuation3_2/img_znwl_jt.png
  32. BIN
      src/assets/ZDimages/evacuation3_2/img_znwl_jtt.png
  33. 38 0
      src/views/comprehensive/laboratoryManagement/building/buildingDetails.vue
  34. 916 0
      src/views/comprehensive/laboratoryManagement/building/buildingManagement.vue
  35. 46 0
      src/views/comprehensive/laboratoryManagement/building/newIndex.vue
  36. 284 0
      src/views/comprehensive/message/content/addPage.vue
  37. 121 0
      src/views/comprehensive/message/content/newIndex.vue
  38. 60 56
      src/views/emergencyManagement/plan/index.vue
  39. 586 0
      src/views/emergencyManagement/plan/newAddPlan.vue

BIN
src/assets/ZDimages/evacuation3_2/icon_bjgl_fj.png


BIN
src/assets/ZDimages/evacuation3_2/icon_bjgl_gd.png


BIN
src/assets/ZDimages/evacuation3_2/icon_bjgl_jt.png


BIN
src/assets/ZDimages/evacuation3_2/icon_bjgl_lcs.png


BIN
src/assets/ZDimages/evacuation3_2/icon_bjgl_td.png


BIN
src/assets/ZDimages/evacuation3_2/icon_bjgl_xjt.png


BIN
src/assets/ZDimages/evacuation3_2/icon_bjgl_zk.png


BIN
src/assets/ZDimages/evacuation3_2/icon_shang_hs.png


BIN
src/assets/ZDimages/evacuation3_2/icon_sjt.png


BIN
src/assets/ZDimages/evacuation3_2/icon_sysbjt_m.png


BIN
src/assets/ZDimages/evacuation3_2/icon_wsctp.png


BIN
src/assets/ZDimages/evacuation3_2/icon_xia_hs.png


BIN
src/assets/ZDimages/evacuation3_2/icon_xjt.png


BIN
src/assets/ZDimages/evacuation3_2/icon_yjtd.png


BIN
src/assets/ZDimages/evacuation3_2/icon_you_hs.png


BIN
src/assets/ZDimages/evacuation3_2/icon_yuo.png


BIN
src/assets/ZDimages/evacuation3_2/icon_znwl_bj.png


BIN
src/assets/ZDimages/evacuation3_2/icon_znwl_sc.png


BIN
src/assets/ZDimages/evacuation3_2/icon_znwl_sybz.png


BIN
src/assets/ZDimages/evacuation3_2/icon_zou_hs.png


BIN
src/assets/ZDimages/evacuation3_2/icon_zuo.png


BIN
src/assets/ZDimages/evacuation3_2/img_dzya_hzyj.png


BIN
src/assets/ZDimages/evacuation3_2/img_dzya_ldss.png


BIN
src/assets/ZDimages/evacuation3_2/img_xgbj_ch.png


BIN
src/assets/ZDimages/evacuation3_2/img_xgbj_fj.png


BIN
src/assets/ZDimages/evacuation3_2/img_xgbj_fjm.png


BIN
src/assets/ZDimages/evacuation3_2/img_xgbj_gd.png


BIN
src/assets/ZDimages/evacuation3_2/img_xgbj_ssd.png


BIN
src/assets/ZDimages/evacuation3_2/img_xgbj_syl.png


BIN
src/assets/ZDimages/evacuation3_2/img_xgbj_yjck.png


BIN
src/assets/ZDimages/evacuation3_2/img_znwl_jt.png


BIN
src/assets/ZDimages/evacuation3_2/img_znwl_jtt.png


+ 38 - 0
src/views/comprehensive/laboratoryManagement/building/buildingDetails.vue

@@ -0,0 +1,38 @@
+<template>
+  <div class="buildingDetails">
+
+  </div>
+</template>
+
+<script>
+  export default {
+    name: "builDingDetails",
+    data() {
+      return {
+
+      }
+    },
+    created() {
+
+    },
+    mounted(){
+
+    },
+    methods:{
+
+    }
+  }
+</script>
+
+<style scoped lang="scss">
+  .buildingDetails{
+    flex:1;
+    display: flex!important;
+    flex-direction: column;
+    overflow: hidden;
+    *{
+      margin:0;
+      font-weight:500;
+    }
+  }
+</style>

+ 916 - 0
src/views/comprehensive/laboratoryManagement/building/buildingManagement.vue

@@ -0,0 +1,916 @@
+<template>
+  <div class="buildingManagement">
+    <div class="max-left-box">
+      <div class="tree-box scrollbar-box">
+        <div class="terr-max-box" v-for="(item,index) in treeList" :key="index">
+          <div class="max-name-box">
+            <p class="max-name" :class="checkTreeId==item.id?'check-color':''" @click="clickCheckTree(item.id,1)">{{item.name}}</p>
+            <el-dropdown @command="(command)=>handleCommand(command,item)">
+              <img src="@/assets/ZDimages/evacuation3_2/icon_bjgl_gd.png" style="cursor:pointer;width:16px;height:4px;margin-top:7px;">
+              <el-dropdown-menu slot="dropdown">
+                <el-dropdown-item command="1">编辑</el-dropdown-item>
+                <el-dropdown-item command="2">删除</el-dropdown-item>
+              </el-dropdown-menu>
+            </el-dropdown>
+          </div>
+          <div class="terr-big-box" v-for="(itemOne,indexOne) in item.childList" :key="indexOne">
+            <div class="big-name-box">
+              <img v-if="!itemOne.type" src="@/assets/ZDimages/evacuation3_2/icon_bjgl_jt.png" @click="terrClick(itemOne)">
+              <img v-if="itemOne.type" src="@/assets/ZDimages/evacuation3_2/icon_bjgl_xjt.png" @click="terrClick(itemOne)">
+              <p :class="checkTreeId==itemOne.id?'check-color':''" @click="clickCheckTree(itemOne.id,2)">{{itemOne.name}}</p>
+            </div>
+            <div v-if="itemOne.type" class="terr-min-box" v-for="(itemTwo,indexTwo) in itemOne.childList" :key="indexTwo">
+              <p class="min-name" :class="checkTreeId==itemTwo.id?'check-color':''" @click="clickCheckTree(itemTwo.id,3)">{{itemTwo.name}}</p>
+            </div>
+          </div>
+        </div>
+      </div>
+      <p class="max-left-big-button" @click="handleCommand(3)">+ 新增校院</p>
+    </div>
+    <div class="max-right-box">
+      <div class="school-box" v-if="checkTreeType == 1">
+        <div class="max-right-button-box">
+          <p class="null-p"></p>
+          <p class="max-right-big-button" @click="handleCommand(4)">+ 新增楼栋</p>
+        </div>
+        <div class="right-big-list-box scrollbar-box">
+          <div class="for-max-box" v-for="(item,index) in buildingList" :key="index"
+               @dragover.prevent="dragoverPrevent(item)">
+            <div class="for-big-box">
+              <div class="for-big-box-left">
+                <img src="@/assets/ZDimages/evacuation3_2/icon_bjgl_td.png" class="for-img-one"
+                     draggable="true"
+                     @dragstart="dragstartPlay($event)"
+                     @dragend="dragEnterOver($event, item)">
+                <p class="for-text-one">{{item.name}}</p>
+                <img src="@/assets/ZDimages/evacuation3_2/icon_bjgl_lcs.png" class="for-img-two">
+                <div class="for-text-box-one">
+                  <p>6</p>
+                  <p>楼层数</p>
+                </div>
+                <img src="@/assets/ZDimages/evacuation3_2/icon_bjgl_fj.png" class="for-img-three">
+                <div class="for-text-box-two">
+                  <p>160</p>
+                  <p>房间数</p>
+                </div>
+              </div>
+              <div class="for-button-min-box">
+                <div>
+                  <img src="@/assets/ZDimages/evacuation3_2/icon_znwl_bj.png">
+                  <p @click="handleCommand(8)">编辑</p>
+                </div>
+                <div>
+                  <img src="@/assets/ZDimages/evacuation3_2/icon_znwl_sc.png">
+                  <p @click="handleCommand(9)">删除</p>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+      <div class="building-box" v-if="checkTreeType == 2">
+        <div class="max-right-button-box">
+          <p class="null-p"></p>
+          <p class="max-right-big-button" style="margin-right:20px;" @click="handleCommand(7)">+ 新增楼层</p>
+          <p class="max-right-big-button" @click="floorZK(1)">{{floorZkType==1?'一键收起':'一键展开'}}</p>
+        </div>
+        <div class="right-big-list-box scrollbar-box">
+          <div class="for-max-box" v-for="(item,index) in buildingList" :key="index"
+               @dragover.prevent="dragoverPrevent(item)">
+            <div class="for-big-box">
+              <div class="for-big-box-left">
+                <img src="@/assets/ZDimages/evacuation3_2/icon_bjgl_td.png" class="for-img-one"
+                     draggable="true"
+                     @dragstart="dragstartPlay($event)"
+                     @dragend="dragEnterOver($event, item)">
+                <p class="for-text-one">{{item.name}}</p>
+              </div>
+              <div class="for-button-min-box">
+                <div>
+                  <img src="@/assets/ZDimages/evacuation3_2/icon_znwl_bj.png">
+                  <p @click="handleCommand(8)">编辑</p>
+                </div>
+                <div>
+                  <img src="@/assets/ZDimages/evacuation3_2/icon_znwl_sc.png">
+                  <p @click="handleCommand(9)">删除</p>
+                </div>
+                <div>
+                  <img src="@/assets/ZDimages/evacuation3_2/icon_bjgl_zk.png">
+                  <p @click="floorZK(2,index)">{{item.type?'收起':'展开'}}</p>
+                </div>
+              </div>
+            </div>
+            <p v-if="item.type" style="border:1px solid #000;text-align: center;margin-left:36px;">暂无数据</p>
+          </div>
+        </div>
+      </div>
+      <div class="floor-box" v-if="checkTreeType == 3">
+        <div class="map-max-big-box">
+          <p class="position-button-p">设置布局</p>
+        </div>
+        <div class="table-box">
+          <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
+            <el-form-item label="关键字" prop="searchValue" style="margin-right:20px;margin-bottom:20px;">
+              <el-input
+                v-model="queryParams.searchValue"
+                placeholder="请输入关键字"
+                clearable
+                size="small"
+              />
+            </el-form-item>
+            <el-form-item label="房间类型" prop="searchValue" style="margin-right:20px;margin-bottom:20px;">
+              <el-input
+                v-model="queryParams.searchValue"
+                placeholder="请选择关键字"
+                clearable
+                size="small"
+              />
+            </el-form-item>
+            <el-form-item>
+              <p class="inquire-button-one" @click="handleQuery" style="margin-right:20px;margin-bottom:20px;">查询</p>
+              <p class="reset-button-one" @click="resetQuery">重置</p>
+            </el-form-item>
+          </el-form>
+          <el-table v-loading="loading" border :data="dataList">
+            <el-table-column label="房间号" align="left" prop="moldName" width="100"/>
+            <el-table-column label="房间名称" align="left" prop="createBy"/>
+            <el-table-column label="房间类型" align="left" prop="createBy" width="200"/>
+            <el-table-column label="创建人" align="left" prop="createBy" width="200"/>
+            <el-table-column label="创建时间" align="left" prop="createTime" width="200"/>
+            <el-table-column label="操作" align="left" class-name="small-padding fixed-width" width="200">
+              <template slot-scope="scope">
+                <div class="button-box">
+                  <p class="table-min-button" @click="roomClick(1,item)">编辑</p>
+                  <p class="table-min-button" @click="roomClick(3)">删除</p>
+                </div>
+              </template>
+            </el-table-column>
+          </el-table>
+          <pagination
+            style="margin-top:20px;"
+            v-show="total>0"
+            :total="total"
+            :page.sync="queryParams.pageNum"
+            :limit.sync="queryParams.pageSize"
+            @pagination="getList"
+          />
+        </div>
+      </div>
+    </div>
+    <!-- 新增/编辑院校 -->
+    <el-dialog :title="dialogTitle" v-if="dialogOpen" :visible.sync="dialogOpen" width="600px" append-to-body>
+      <el-form ref="dialogForm" :model="dialogForm" :rules="rules" label-width="110px">
+        <el-form-item label="院校名称:" prop="nameOne">
+          <el-input v-model="dialogForm.nameOne" maxlength="10" placeholder="请输入院校名称" :disabled="dialogType==2 || dialogType==3"/>
+        </el-form-item>
+        <el-form-item label="楼栋名称:" prop="nameTwo" v-if="dialogType==2 || dialogType==3">
+          <el-input v-model="dialogForm.nameTwo" maxlength="10" placeholder="请输入楼栋名称" :disabled="dialogType==3"/>
+        </el-form-item>
+        <el-form-item label="楼层名称:" prop="nameThree" v-if="dialogType==3">
+          <el-input v-model="dialogForm.nameThree" maxlength="10" placeholder="请输入楼层名称" />
+        </el-form-item>
+        <el-form-item label="排序序号:" prop="key">
+          <el-input v-model="dialogForm.key" maxlength="10" placeholder="请输入排序序号" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <div style="display: flex">
+          <p style="flex:1;"></p>
+          <p style="border-radius:6px;width:70px;line-height:30px;font-size:12px;text-align:center;margin-right:17px;color:#999999;background:#E0E0E0;" @click="cancel">取消</p>
+          <p style="border-radius:6px;width:70px;line-height:30px;font-size:12px;text-align:center;color:#fff;background:#0045AF;" @click="submitForm">确定</p>
+          <p style="flex:1;"></p>
+        </div>
+      </div>
+    </el-dialog>
+    <el-dialog title="房间配置" v-if="dialogOpenRoom" :visible.sync="dialogOpenRoom" width="600px" append-to-body>
+      <el-form ref="dialogForm" :model="dialogForm" :rules="rules" label-width="110px">
+        <el-form-item label="楼栋名称:" prop="nameTwo">
+          <el-input v-model="dialogForm.nameTwo" maxlength="10" placeholder="请输入楼栋名称" disabled/>
+        </el-form-item>
+        <el-form-item label="楼层名称:" prop="nameThree">
+          <el-input v-model="dialogForm.nameThree" maxlength="10" placeholder="请输入楼层名称" />
+        </el-form-item>
+        <el-form-item label="房间类型:" prop="key">
+          <el-input v-model="dialogForm.key" maxlength="10" placeholder="请输入排序序号" />
+        </el-form-item>
+        <el-form-item label="房间号:" prop="key">
+          <el-input v-model="dialogForm.key" maxlength="10" placeholder="请输入排序序号" />
+        </el-form-item>
+        <el-form-item label="房间名称:" prop="key">
+          <el-input v-model="dialogForm.key" maxlength="10" placeholder="请输入排序序号" />
+        </el-form-item>
+        <el-form-item label="房间选择:" prop="key">
+          <el-input v-model="dialogForm.key" maxlength="10" placeholder="请输入排序序号" />
+        </el-form-item>
+        <el-form-item label="房间位置:" prop="key">
+          <el-input v-model="dialogForm.key" maxlength="10" placeholder="请输入排序序号" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <div style="display: flex">
+          <p style="flex:1;"></p>
+          <p style="border-radius:6px;width:70px;line-height:30px;font-size:12px;text-align:center;margin-right:17px;color:#999999;background:#E0E0E0;" @click="cancel">取消</p>
+          <p style="border-radius:6px;width:70px;line-height:30px;font-size:12px;text-align:center;color:#fff;background:#0045AF;" @click="submitForm">确定</p>
+          <p style="flex:1;"></p>
+        </div>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  export default {
+    name: "buildingManagement",
+    data() {
+      return {
+        //拖拽起始Y点(用于计算朝向)
+        clientY:null,
+        clientId:null,
+        treeList:[
+          {
+            id:'1',
+            name:'西安电子科技大学东校区',
+            childList:[
+              {
+                id:'2',
+                name:'一号实验楼',
+                type:false,
+                childList:[
+                  {
+                    id:'3',
+                    name:'二层',
+                    childList:[]
+                  }
+                ]
+              },
+              {
+                id:'4',
+                name:'一号实验楼',
+                type:false,
+                childList:[
+                  {
+                    id:'5',
+                    name:'二层',
+                    childList:[]
+                  }
+                ]
+              },
+            ]
+          }
+        ],
+        //选中状态
+        checkTreeId:1,
+        checkTreeType:1,
+        buildingList:[
+          {id:1,name:"名称1",type:false},{id:2,name:"名称2",type:true},{id:3,name:"名称3",type:false},{id:4,name:"名称1",type:false},{id:5,name:"名称2",type:true},{id:6,name:"名称3",type:false},{id:7,name:"名称1",type:false},{id:8,name:"名称2",type:true},{id:9,name:"名称3",type:false},
+        ],
+        //楼层展开/关闭状态
+        floorZkType:null, //1.全部展开 2.全部关闭 3.有关有开
+        //编辑弹窗开关
+        dialogOpen:false,
+        dialogType:null,
+        dialogTitle:'',
+        // 表单参数
+        dialogForm: {},
+        // 表单校验
+        rules: {
+          nameOne: [
+            { required: true, message: "请输入院校名称", trigger: "blur" },
+            { required: true, message: "请输入院校名称", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+          nameTwo: [
+            { required: true, message: "请输入楼栋名称", trigger: "blur" },
+            { required: true, message: "请输入楼栋名称", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+          nameThree: [
+            { required: true, message: "请输入楼层名称", trigger: "blur" },
+            { required: true, message: "请输入楼层名称", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+          key: [
+            { required: true, message: "请输入排序序号", trigger: "blur" },
+            { required: true, message: "请输入排序序号", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+        },
+        // 显示搜索条件
+        showSearch: true,
+        loading:false,
+        //楼层查询数据
+        queryParams:{},
+        //楼层表单数据
+        dataList:[],
+        total:10,
+        //房间配置相关
+        dialogOpenRoom:false,
+      }
+    },
+    created() {
+
+    },
+    mounted(){
+      this.floorZkFor();
+    },
+    methods:{
+      //房间操作按钮
+      roomClick(type){
+        if(type == 1){
+          this.dialogOpenRoom = true;
+        }else if(type == 2){
+          this.$confirm('确定要删除该房间吗?', "警告", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(function() {
+            console.log('删除院校',item)
+          }).then(() => {
+          }).catch(() => {});
+        }else if(type == 3){
+          this.dialogOpenRoom = true;
+        }
+      },
+      //楼栋弹出下啦列表选中事件
+      handleCommand(command,item){
+        if (command == 1){
+          //编辑院校
+          this.$set(this,'dialogTitle','编辑院校');
+          this.$set(this,'dialogType',1);
+          this.$set(this,'dialogOpen',true);
+        }else if(command == 2){
+          //删除院校
+          this.$confirm('确定要删除该院校吗?', "警告", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(function() {
+            console.log('删除院校',item)
+          }).then(() => {
+          }).catch(() => {});
+        }else if(command == 3){
+          //新增院校
+          this.$set(this,'dialogTitle','新增院校');
+          this.$set(this,'dialogType',1);
+          this.$set(this,'dialogOpen',true);
+        }else if(command == 4){
+          //新增楼栋
+          this.$set(this,'dialogTitle','新增楼栋');
+          this.$set(this,'dialogType',2);
+          this.$set(this,'dialogOpen',true);
+        }else if(command == 5){
+          //编辑楼栋
+          this.$set(this,'dialogTitle','编辑楼栋');
+          this.$set(this,'dialogType',2);
+          this.$set(this,'dialogOpen',true);
+        }else if(command == 6){
+          //删除楼栋
+          this.$confirm('确定要删除该楼栋吗?', "警告", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(function() {
+            console.log('删除楼栋',item)
+          }).then(() => {
+          }).catch(() => {});
+        }else if(command == 7){
+          //新增楼层
+          this.$set(this,'dialogTitle','新增楼层');
+          this.$set(this,'dialogType',3);
+          this.$set(this,'dialogOpen',true);
+        }else if(command == 8){
+          //编辑楼层
+          this.$set(this,'dialogTitle','编辑楼层');
+          this.$set(this,'dialogType',3);
+          this.$set(this,'dialogOpen',true);
+        }else if(command == 9){
+          //删除楼层
+          this.$confirm('确定要删除该楼层吗?', "警告", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(function() {
+            console.log('删除楼层',item)
+          }).then(() => {
+          }).catch(() => {});
+        }
+      },
+      //树状结构选中
+      clickCheckTree(id,type){
+        this.$set(this,'checkTreeId',id)
+        this.$set(this,'checkTreeType',type)
+      },
+      // 取消按钮
+      cancel() {
+        this.$set(this,'dialogOpen',false);
+        this.$set(this,'dialogForm',{});
+        this.$set(this,'dialogType',null);
+      },
+      //确定按钮
+      submitForm(){
+
+      },
+      //树状结构展开收回
+      terrClick(itemOne){
+        itemOne.type = !itemOne.type;
+      },
+      //展开/收起开关
+      floorZK(type,index){
+        let self = this;
+        //type等于1时全部开关功能 等于2时单个开关
+        if(type == 1){
+          let list = JSON.parse(JSON.stringify(self.buildingList))
+          for(let i=0;i<list.length;i++){
+            if(self.floorZkType == 1){
+              list[i].type = false;
+              console.log('self.floorZkType == 1',list[i].type)
+            }else if(self.floorZkType == 2){
+              list[i].type = true;
+              console.log('self.floorZkType == 2',list[i].type)
+            }else if(self.floorZkType == 3){
+              list[i].type = true;
+              console.log('self.floorZkType == 3',list[i].type)
+            }
+          }
+          this.$set(this,'buildingList',list);
+          this.floorZkFor();
+        }else if(type == 2){
+          this.$set(this.buildingList[index],'type',this.buildingList[index].type?false:true)
+          this.floorZkFor();
+        }
+      },
+      //层展开关闭判断
+      floorZkFor(){
+        let self = this;
+        let numOne = 0;
+        let numTwo = 0;
+        for(let i=0;i<self.buildingList.length;i++){
+          if(self.buildingList[i].type){
+            numOne++
+          }else{
+            numTwo++
+          }
+        }
+        console.log('numOne',numOne)
+        console.log('numTwo',numTwo)
+        console.log('self.buildingList.length',self.buildingList.length)
+        if(numOne == self.buildingList.length){
+          this.$set(this,'floorZkType',1);
+        }else if(numTwo == self.buildingList.length){
+          this.$set(this,'floorZkType',2);
+        }else{
+          this.$set(this,'floorZkType',3);
+        }
+        console.log('floorZkType',self.floorZkType)
+      },
+      //拖拽抓取时触发
+      dragstartPlay(event) {
+        this.$set(this,'clientY',event.clientY)
+      },
+      //拖拽途径触发
+      dragoverPrevent(item){
+        this.$set(this,'clientId',item.id)
+      },
+      //拖拽释放触发
+      dragEnterOver(event,item) {
+        let self = this;
+        if(this.clientId && item.id != this.clientId){
+          let list = [];
+          let obj = null;
+          for(let i=0;i<self.buildingList.length;i++){
+            if(self.buildingList[i].id == item.id){
+              obj = JSON.parse(JSON.stringify(self.buildingList[i]))
+            }
+          }
+          if(event.clientY>this.clientY){
+            for(let i=0;i<self.buildingList.length;i++){
+              if(self.buildingList[i].id != item.id && self.buildingList[i].id != this.clientId){
+                list.push(self.buildingList[i]);
+              }else if(self.buildingList[i].id == this.clientId){
+                list.push(self.buildingList[i]);
+                list.push(obj);
+              }
+            }
+          }else if(event.clientY<this.clientY){
+            for(let i=0;i<self.buildingList.length;i++){
+              if(self.buildingList[i].id == this.clientId){
+                list.push(obj);
+                list.push(self.buildingList[i]);
+              }else if(self.buildingList[i].id != item.id && self.buildingList[i].id != this.clientId){
+                list.push(self.buildingList[i]);
+              }
+            }
+          }
+          this.$set(this,'buildingList',list);
+          this.$set(this,'clientId',null);
+        }
+      },
+      getList(){
+
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        // this.resetForm("queryForm");
+        this.$set(this,'queryParams',{
+          pageNum: 1,
+          pageSize:20,
+          typeName:"",
+          title: '',
+        });
+        this.handleQuery();
+      },
+    }
+  }
+</script>
+
+<style scoped lang="scss">
+  .buildingManagement{
+    flex:1;
+    display: flex!important;
+    overflow: hidden;
+    padding:22px 28px 22px 32px;
+    *{
+      margin:0;
+      font-weight:100;
+    }
+    .max-left-box{
+      width:281px;
+      border-right:1px dashed #A2A2A2;
+      display: flex;
+      flex-direction: column;
+      .tree-box{
+        flex:1;
+        .terr-max-box{
+          .max-name-box{
+            display: flex;
+            margin-right:20px;
+            margin-bottom:10px;
+            color:#D8D8D8;
+            font-size:20px;
+            .max-name{
+              flex:1;
+              margin-right:19px;
+              color:#333;
+              font-size:16px;
+              line-height:16px;
+              margin-top:3px;
+              cursor: pointer;
+            }
+          }
+          .terr-big-box{
+            margin-left:30px;
+            .big-name-box{
+              cursor: pointer;
+              height:40px;
+              line-height:40px;
+              display: flex;
+              font-size:16px;
+              color:#333;
+              img{
+                width:16px;
+                height:16px;
+                margin-top:12px;
+                margin-right:4px;
+              }
+            }
+            .terr-min-box{
+              margin-left:30px;
+              .min-name{
+                cursor: pointer;
+                height:40px;
+                line-height:40px;
+                display: flex;
+                font-size:16px;
+                color:#333;
+              }
+            }
+          }
+          .check-color{
+            color:#0183FA!important;
+          }
+        }
+      }
+      .max-left-big-button{
+        color:#0183FA;
+        border:1px dashed #0183FA;
+        -webkit-border-radius: 6px;
+        -moz-border-radius: 6px;
+        border-radius: 6px;
+        width:180px;
+        line-height:40px;
+        margin: 20px 0 20px 40px;
+        text-align: center;
+        font-size:14px;
+        cursor: pointer;
+      }
+      .max-left-big-button:hover{
+        color:#fff;
+        background: #0183FA;
+        border:1px solid #0183FA;
+      }
+    }
+    .max-right-box{
+      flex:1;
+      display: flex;
+      flex-direction: column;
+      overflow: hidden;
+      .school-box{
+        flex:1;
+        display: flex;
+        flex-direction: column;
+        overflow: hidden;
+        .max-right-button-box{
+          height:40px;
+          display: flex;
+          margin-bottom:22px;
+          .null-p{
+            flex:1;
+          }
+          .max-right-big-button{
+            color:#fff;
+            background: #0045AF;
+            -webkit-border-radius: 6px;
+            -moz-border-radius: 6px;
+            border-radius: 6px;
+            width:130px;
+            line-height:40px;
+            text-align: center;
+            font-size:14px;
+            cursor: pointer;
+          }
+          .max-right-big-button:hover{
+            color:#fff;
+            background: #0183FA;
+          }
+        }
+        .right-big-list-box{
+          flex:1;
+          .for-max-box{
+            .for-big-box{
+              display: flex;
+              border:1px solid #dedede;
+              height:100px;
+              box-shadow: 0px 3px 8px 0px rgba(0,0,0,0.16);
+              margin-bottom:30px;
+              margin-left:36px;
+              border-radius:6px;
+              .for-big-box-left{
+                flex:1;
+                display: flex;
+                .for-img-one{
+                  cursor: pointer;
+                  height:30px;
+                  width:30px;
+                  margin:35px 0 0 30px;
+                }
+                .for-text-one{
+                  font-size:16px;
+                  line-height:100px;
+                  margin-left:95px;
+                  width:230px;
+                  font-weight:500;
+                }
+                .for-img-two{
+                  height:48px;
+                  width:48px;
+                  margin:26px 23px 0 30px;
+                }
+                .for-text-box-one{
+                  width:88px;
+                  margin-right:73px;
+                  p{
+                    text-align: center;
+                  }
+                  p:nth-child(1){
+                    margin-top:20px;
+                    font-size:24px;
+                    line-height:30px;
+                    color:#0183FA;
+                  }
+                  p:nth-child(2){
+                    margin-top:10px;
+                    font-size:16px;
+                    line-height:16px;
+                    color:#333;
+                  }
+                }
+                .for-img-three{
+                  height:48px;
+                  width:48px;
+                  margin:26px 23px 0 0;
+                }
+                .for-text-box-two{
+                  width:88px;
+                  p{
+                    text-align: center;
+                  }
+                  p:nth-child(1){
+                    margin-top:20px;
+                    font-size:24px;
+                    line-height:30px;
+                    color:#0183FA;
+                  }
+                  p:nth-child(2){
+                    margin-top:10px;
+                    font-size:16px;
+                    line-height:16px;
+                    color:#333;
+                  }
+                }
+              }
+              .for-button-min-box{
+                width:220px;
+                margin-top:9px;
+                height:82px;
+                border-left:1px dashed rgba(0,0,0,0.3);
+                display: flex;
+                line-height:82px;
+                div{
+                  margin-left: 34px;
+                  display: flex;
+                  width: 60px;
+                  cursor: pointer;
+                  img{
+                    width:16px;
+                    height:16px;
+                    margin-right:8px;
+                    margin-top:33px;
+                  }
+                  p{
+                    font-size:14px;
+                    color:#333;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+      .building-box{
+        flex:1;
+        display: flex;
+        flex-direction: column;
+        overflow: hidden;
+        .max-right-button-box{
+          height:40px;
+          display: flex;
+          margin-bottom:22px;
+          .null-p{
+            flex:1;
+          }
+          .max-right-big-button{
+            color:#fff;
+            background: #0045AF;
+            -webkit-border-radius: 6px;
+            -moz-border-radius: 6px;
+            border-radius: 6px;
+            width:130px;
+            line-height:40px;
+            text-align: center;
+            font-size:14px;
+            cursor: pointer;
+          }
+          .max-right-big-button:hover{
+            color:#fff;
+            background: #0183FA;
+          }
+        }
+        .right-big-list-box{
+          flex:1;
+          .for-max-box{
+            margin-bottom:30px;
+            .for-big-box{
+              display: flex;
+              border:1px solid #dedede;
+              height:100px;
+              box-shadow: 0px 3px 8px 0px rgba(0,0,0,0.16);
+              margin-left:36px;
+              border-radius:6px;
+              .for-big-box-left{
+                flex:1;
+                display: flex;
+                .for-img-one{
+                  cursor: pointer;
+                  height:30px;
+                  width:30px;
+                  margin:35px 0 0 30px;
+                }
+                .for-text-one{
+                  font-size:16px;
+                  line-height:100px;
+                  margin-left:95px;
+                  width:230px;
+                  font-weight:500;
+                }
+                .for-img-two{
+                  height:48px;
+                  width:48px;
+                  margin:26px 23px 0 30px;
+                }
+                .for-text-box-one{
+                  width:88px;
+                  margin-right:73px;
+                  p{
+                    text-align: center;
+                  }
+                  p:nth-child(1){
+                    margin-top:20px;
+                    font-size:24px;
+                    line-height:30px;
+                    color:#0183FA;
+                  }
+                  p:nth-child(2){
+                    margin-top:10px;
+                    font-size:16px;
+                    line-height:16px;
+                    color:#333;
+                  }
+                }
+                .for-img-three{
+                  height:48px;
+                  width:48px;
+                  margin:26px 23px 0 0;
+                }
+                .for-text-box-two{
+                  width:88px;
+                  p{
+                    text-align: center;
+                  }
+                  p:nth-child(1){
+                    margin-top:20px;
+                    font-size:24px;
+                    line-height:30px;
+                    color:#0183FA;
+                  }
+                  p:nth-child(2){
+                    margin-top:10px;
+                    font-size:16px;
+                    line-height:16px;
+                    color:#333;
+                  }
+                }
+              }
+              .for-button-min-box{
+                width:330px;
+                margin-top:9px;
+                height:82px;
+                border-left:1px dashed rgba(0,0,0,0.3);
+                display: flex;
+                line-height:82px;
+                div{
+                  margin-left: 34px;
+                  display: flex;
+                  width: 60px;
+                  cursor: pointer;
+                  img{
+                    width:16px;
+                    height:16px;
+                    margin-right:8px;
+                    margin-top:33px;
+                  }
+                  p{
+                    font-size:14px;
+                    color:#333;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+      .floor-box{
+        flex:1;
+        display: flex;
+        flex-direction: column;
+        overflow: hidden;
+        .map-max-big-box{
+          height:400px;
+          position:relative;
+          border:1px solid #E0E0E0;
+          margin-bottom:20px;
+          margin-left:36px;
+          .position-button-p{
+            position:absolute;
+            right:12px;
+            top:13px;
+            width:100px;
+            line-height:40px;
+            font-size:14px;
+            color:#fff;
+            background: #0045AF;
+            border-radius:6px;
+            text-align: center;
+          }
+        }
+        .table-box{
+          margin-left:36px;
+          flex:1;
+          display: flex;
+          flex-direction: column;
+          overflow: hidden;
+        }
+      }
+    }
+  }
+</style>

+ 46 - 0
src/views/comprehensive/laboratoryManagement/building/newIndex.vue

@@ -0,0 +1,46 @@
+<!--新版布局管理-->
+<template>
+  <div class="app-container building">
+    <building-management v-if="pageType == 1"></building-management>
+    <building-details v-if="pageType == 2"></building-details>
+  </div>
+</template>
+
+<script>
+  import buildingManagement from "./buildingManagement.vue";
+  import buildingDetails from "./buildingDetails.vue";
+  export default {
+    name: "newIndex",
+    components: {
+      buildingManagement,
+      buildingDetails,
+    },
+    data() {
+      return {
+        pageType: 1,
+      }
+    },
+    created() {
+
+    },
+    mounted(){
+
+    },
+    methods:{
+
+    }
+  }
+</script>
+
+<style scoped lang="scss">
+  .building{
+    flex:1;
+    display: flex!important;
+    flex-direction: column;
+    overflow: hidden;
+    *{
+      margin:0;
+      font-weight:500;
+    }
+  }
+</style>

+ 284 - 0
src/views/comprehensive/message/content/addPage.vue

@@ -0,0 +1,284 @@
+<template>
+  <div class="noticeConfig-addPage">
+    <div class="title-box">
+      <p>配置</p>
+      <p class="add-button-one-90" @click="backClick">返回</p>
+    </div>
+    <div class="addPage-big scrollbar-box">
+      <div class="max-for-box" v-for="(item,index) in dataList" :key="index">
+        <el-form :model="form" ref="form" :rules="rules" label-width="100px" class="form-box">
+          <el-form-item label="通知方式:" prop="name" style="margin:40px 0;">
+            <el-checkbox-group v-model="checkList" style="margin-top:2px;">
+              <el-checkbox label="复选框 A"></el-checkbox>
+              <el-checkbox label="复选框 B"></el-checkbox>
+              <el-checkbox label="复选框 C"></el-checkbox>
+              <el-checkbox label="禁用" disabled></el-checkbox>
+              <el-checkbox label="选中且禁用" disabled></el-checkbox>
+            </el-checkbox-group>
+          </el-form-item>
+          <el-form-item label="通知内容:" prop="name" style="margin:40px 0;">
+            <div class="for-list-box">
+              <div class="for-min-box" v-for="(minItem,minIndex) in item.list" :key="minIndex">
+                <div>
+                  <p>{{minItem.type==1?'文字':(minItem.type==2?'变量':'')}}</p>
+                  <p>{{minItem.name}}</p>
+                  <p class="el-icon-error" @click="delBL(index,minIndex)"></p>
+                </div>
+              </div>
+              <p class="add-button-p" @click="buttonDialogClick(1,index)">插入</p>
+            </div>
+          </el-form-item>
+        </el-form>
+      </div>
+      <p class="add-obj-button-p" @click="addButton">+ 新增通知规则</p>
+    </div>
+    <el-dialog title='新增变量' v-if="dialogOpen" :visible.sync="dialogOpen" width="600px">
+      <el-form :model="dialogForm" ref="dialogForm" :rules="rules" label-width="100px">
+        <el-form-item label="内容类型:" prop="name">
+          <el-radio-group v-model="dialogForm.type1">
+            <el-radio :label="1" style="width:160px;">文字</el-radio>
+            <el-radio :label="2" style="width:160px;">变量</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="变量类型:" prop="name">
+          <el-radio-group v-model="dialogForm.type1">
+            <el-radio :label="1" style="width:160px;">一般变量</el-radio>
+            <el-radio :label="2" style="width:160px;">比较</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="变量定义:" prop="name">
+          <el-select v-model="value" placeholder="请选择" style="width:420px;">
+            <el-option
+              v-for="item in options"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="变量定义:" prop="name">
+          <div style="display: flex">
+            <el-select v-model="value" class="variable-select-left" placeholder="请选择" style="width:160px;">
+              <el-option
+                v-for="item in options"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value">
+              </el-option>
+            </el-select>
+            <el-select v-model="value" class="variable-select-center" placeholder="请选择" style="width:100px;">
+              <el-option
+                v-for="item in options"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value">
+              </el-option>
+            </el-select>
+            <el-select v-model="value" class="variable-select-right" placeholder="请选择" style="width:160px;">
+              <el-option
+                v-for="item in options"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value">
+              </el-option>
+            </el-select>
+          </div>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <div style="display: flex">
+          <p style="flex:1;"></p>
+          <p style="cursor: pointer;border-radius:6px;width:70px;line-height:30px;font-size:12px;text-align:center;margin-right:17px;color:#999999;background:#E0E0E0;" @click="buttonDialogClick(2)">取消</p>
+          <p style="cursor: pointer;border-radius:6px;width:70px;line-height:30px;font-size:12px;text-align:center;color:#fff;background:#0045AF;" @click="submitForm">确定</p>
+          <p style="flex:1;"></p>
+        </div>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  export default {
+    name: "addPage",
+    data() {
+      return {
+        checkList:[],
+        dataList:[
+          {
+            type:1,
+            list:[{name:'我是名字',type:1},{name:'我是名字',type:2},],
+          },
+          {
+            type:2,
+            list:[{name:'我是名字',type:1},{name:'我是名字',type:2},],
+          },
+          {
+            type:2,
+            list:[{name:'我是名字',type:1},{name:'我是名字',type:2},],
+          },
+          {
+            type:2,
+            list:[{name:'我是名字',type:1},{name:'我是名字',type:2},],
+          },
+          {
+            type:2,
+            list:[{name:'我是名字',type:1},{name:'我是名字',type:2},],
+          }
+        ],
+        listIndex:null,
+        form:{},
+        // 表单校验
+        rules: {
+          name: [
+            { required: true, message: "请输入预案名称", trigger: "blur" },
+            { required: true, message: "请输入预案名称", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+        },
+        //弹窗
+        dialogOpen:false,
+        dialogForm:{},
+        value:'',
+        options:[{value:'11',label:'111'},{value:'22',label:'222'},]
+      }
+    },
+    methods: {
+      backClick(){
+        this.$parent.goPage(1);
+      },
+      addButton(){
+        this.dataList.push({type:1, list:[]});
+      },
+      //弹窗开关
+      buttonDialogClick(type,index){
+        if(type == 1){
+          this.$set(this,'listIndex',index);
+          this.$set(this,'dialogOpen',true);
+        }else if(type == 2){
+          this.$set(this,'dialogOpen',false);
+        }
+      },
+      submitForm(){
+        this.dataList[this.listIndex].list.push({name:'我是名字',type:1});
+        this.$set(this,'dialogOpen',false);
+      },
+      delBL(index,minIndex){
+        this.dataList[index].list.splice(minIndex,1)
+      },
+    }
+  }
+</script>
+
+<style scoped lang="scss">
+  .noticeConfig-addPage {
+    flex: 1;
+    display: flex !important;
+    flex-direction: column;
+    overflow: hidden;
+    p{
+      margin:0;
+      font-weight:500;
+    }
+    .title-box{
+      display: flex;
+      color:#0045AF;
+      padding-left:20px;
+      border-bottom:1px solid #e0e0e0;
+      p:nth-child(1){
+        flex:1;
+        line-height:80px;
+        font-size:16px;
+        font-weight:500;
+      }
+      p:nth-child(2){
+        margin:20px;
+        width:70px;
+        line-height:40px;
+        font-size:14px;
+      }
+
+    }
+    .addPage-big{
+      flex: 1;
+      display: flex !important;
+      flex-direction: column;
+      .max-for-box:nth-child(1){
+        border:none;
+      }
+      .max-for-box{
+        margin:0 80px;
+        border-top:1px solid #e0e0e0;
+        .for-list-box{
+          flex:1;
+          .for-min-box{
+            display: inline-block;
+            font-size:14px;
+            font-weight:500;
+            border:1px solid #e0e0e0;
+            border-radius:6px;
+            margin: 0 20px 20px 0;
+            div{
+              display: flex;
+              padding-right:10px;
+              p:nth-child(1){
+                text-align: center;
+                border-right:1px solid #e0e0e0;
+                width:40px;
+                line-height:40px;
+              }
+              p:nth-child(2){
+                line-height:20px;
+                padding:10px 10px;
+              }
+              p:nth-child(3){
+                margin-top:14px;
+                cursor: pointer;
+                color:#666;
+              }
+              .el-icon-error:hover{
+                color:#FE2B2B;
+              }
+            }
+          }
+          .add-button-p{
+            border-radius:6px;
+            width:100px;
+            line-height:40px;
+            text-align: center;
+            display: inline-block;
+            border:1px solid #0045AF;
+            color:#0045AF;
+            font-size:14px;
+            cursor: pointer;
+          }
+        }
+      }
+      .add-obj-button-p{
+        width:300px;
+        line-height:40px;
+        margin:40px auto;
+        text-align: center;
+        font-size:14px;
+        color:#0183FA;
+        border-radius:4px;
+        border:1px dashed #0183FA;
+        font-weight:500;
+        cursor: pointer;
+      }
+    }
+  }
+</style>
+<style lang="scss">
+  .variable-select-left input{
+    border-top-right-radius: 0;
+    border-bottom-right-radius: 0;
+  }
+  .variable-select-center input{
+    border-radius:0;
+    border-left:0;
+    border-right:0;
+  }
+  .variable-select-right input{
+    border-top-left-radius: 0;
+    border-bottom-left-radius: 0;
+  }
+</style>

+ 121 - 0
src/views/comprehensive/message/content/newIndex.vue

@@ -0,0 +1,121 @@
+<template>
+  <div class="app-container noticeConfig">
+    <div class="noticeConfig-page" v-if="pageType == 1">
+      <p class="noticeConfig-title">通知配置</p>
+      <div class="for-max-big-box scrollbar-box">
+        <div class="for-max-box" v-for="(item,index) in dataList" :key="index">
+          <p class="for-name-p">{{item.name}}</p>
+          <div class="for-min-box" v-for="(minItem,minIndex) in item.list" :key="minIndex">
+            <img v-if="minItem.type == 1" src="@/assets/ZDimages/evacuation3_2/icon_znwl_bj.png">
+            <img v-if="minItem.type == 2" src="@/assets/ZDimages/evacuation3_2/icon_znwl_bj.png">
+            <img v-if="minItem.type == 3" src="@/assets/ZDimages/evacuation3_2/icon_znwl_bj.png">
+            <img v-if="minItem.type == 4" src="@/assets/ZDimages/evacuation3_2/icon_znwl_bj.png">
+            <img v-if="minItem.type == 5" src="@/assets/ZDimages/evacuation3_2/icon_znwl_bj.png">
+            <p>{{minItem.type==1?'系统通知':(minItem.type==2?'短信通知':(minItem.type==3?'电话通知':(minItem.type==4?'广播通知':(minItem.type==5?'一体机报警':''))))}}</p>
+          </div>
+          <p class="time-box">2022年11月26日 15:00:21</p>
+          <p class="button-p" @click="goPage(2)">配置</p>
+        </div>
+      </div>
+    </div>
+    <add-page v-if="pageType == 2"></add-page>
+  </div>
+</template>
+
+<script>
+  import addPage from "./addPage.vue";
+  export default {
+    name: "noticeconfig",
+    components: {
+      addPage
+    },
+    data() {
+      return {
+        pageType:1,
+        dataList:[
+          {name:'化学品违规带离实验室',list:[{type:1},{type:2},{type:3},{type:4},{type:5}],},
+          {name:'化学品领用超时未归还',list:[{type:1},{type:2},{type:3},{type:4},{type:5}],},
+          {name:'气瓶违规带离实验室',list:[{type:1},{type:2},{type:3},{type:4},{type:5}],},
+          {name:'气瓶超时未归还',list:[{type:1},{type:2},{type:3},{type:4},{type:5}],},
+          {name:'预案报警通知',list:[{type:1},{type:2},{type:3},{type:4},{type:5}],},
+          {name:'门禁授权通知',list:[{type:1},{type:2},{type:3},{type:4},{type:5}],},
+        ],
+      }
+    },
+    methods: {
+      goPage(type){
+        if(type == 1){
+          this.$set(this,'pageType',1);
+        }else if(type == 2){
+          this.$set(this,'pageType',2);
+        }
+      },
+    }
+  }
+</script>
+
+<style scoped lang="scss">
+  .noticeConfig {
+    flex: 1;
+    display: flex !important;
+    flex-direction: column;
+    overflow: hidden;
+    p{
+      margin:0;
+    }
+    .noticeConfig-page{
+      flex: 1;
+      display: flex !important;
+      flex-direction: column;
+      overflow: hidden;
+      .noticeConfig-title{
+        line-height:80px;
+        font-size:16px;
+        padding-left:20px;
+        font-weight:700;
+        border-bottom:1px solid #e0e0e0;
+        color:#0045AF;
+      }
+      .for-max-big-box{
+        margin:56px 20px;
+        font-weight: 500;
+        .for-max-box:nth-child(1){
+          border-top:1px solid #e0e0e0;
+        }
+        .for-max-box{
+          display: flex;
+          color:#333;
+          line-height:60px;
+          font-size:14px;
+          border-bottom:1px solid #e0e0e0;
+          .for-name-p{
+            width:285px;
+            margin-left:63px;
+            font-size:16px;
+          }
+          .for-min-box{
+            flex:1;
+            display: flex;
+            img{
+              width:14px;
+              height:14px;
+              margin:24px 8px 0 0;
+            }
+            p{
+              font-size:14px;
+            }
+          }
+          .time-box{
+            width:235px;
+            color:#999;
+          }
+          .button-p{
+            margin-right:87px;
+            color:#0183FA;
+            cursor: pointer;
+          }
+        }
+      }
+    }
+  }
+</style>

+ 60 - 56
src/views/emergencyManagement/plan/index.vue

@@ -12,67 +12,68 @@
             size="small"
           />
         </el-form-item>
-        <el-form-item label="创建时间">
-          <el-date-picker
-            :clearable="false"
-            v-model="dateRange"
-            size="small"
-            style="width: 240px"
-            value-format="yyyy-MM-dd"
-            type="daterange"
-            range-separator="-"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
-          ></el-date-picker>
+        <el-form-item label="启动条件" prop="deptId" label-width="100px">
+          <el-select v-model="param.deptId" placeholder="请选择启动条件" clearable size="small">
+            <el-option
+              v-for="dict in deptOptions"
+              :key="dict.deptId"
+              :label="dict.deptName"
+              :value="dict.deptId"
+            ></el-option>
+          </el-select>
         </el-form-item>
+        <!--<el-form-item label="创建时间">-->
+          <!--<el-date-picker-->
+            <!--:clearable="false"-->
+            <!--v-model="dateRange"-->
+            <!--size="small"-->
+            <!--style="width: 240px"-->
+            <!--value-format="yyyy-MM-dd"-->
+            <!--type="daterange"-->
+            <!--range-separator="-"-->
+            <!--start-placeholder="开始日期"-->
+            <!--end-placeholder="结束日期"-->
+          <!--&gt;</el-date-picker>-->
+        <!--</el-form-item>-->
         <el-form-item style="float: right;" v-hasPermi="['laboratory:plan:add']">
-          <el-button
-            style="float: left"
-            type="primary"
-            plain
-            icon="el-icon-plus"
-            size="mini"
-            @click="handleClick('', '', 'add')"
-          >新增预案</el-button>
+          <p class="inquire-button-one" style="width:130px;" @click="handleClick('', '', 'add')">定制预案</p>
         </el-form-item>
         <el-form-item>
           <p class="inquire-button-one" @click="onSearch">查询</p>
           <p class="reset-button-one" @click="resetForm">重置</p>
         </el-form-item>
       </el-form>
-      <el-table v-loading="loading" border :data="tableData">
-        <el-table-column label="预案名称" align="left" prop="name" />
-        <el-table-column label="启动条件" align="left" prop="funNum" />
-        <el-table-column label="创建人" align="left" prop="createBy" />
-        <el-table-column label="创建时间" align="left" prop="createTime" />
-        <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="160" v-if="tableButtonType">
+      <el-table v-loading="loading" border :data="tableData" @selection-change="handleSelectionChange">
+        <el-table-column label="预案名称" align="center" prop="name" :show-overflow-tooltip="true"/>
+        <el-table-column label="启动条件" align="center" prop="funNum" :show-overflow-tooltip="true" width="340"/>
+        <el-table-column label="创建人" align="center" prop="createBy" width="180"/>
+        <el-table-column label="创建时间" align="center" prop="createTime" width="200"/>
+        <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="340" v-if="tableButtonType">
           <template slot-scope="scope">
             <div class="button-box">
-              <p class="table-min-button" style="margin-right:10px;" v-hasPermi="['laboratory:plan:query']"
-                 @click="handleClick(scope.$index, scope.row,'detail')">查看</p>
-              <el-dropdown @command="moreClick">
-                <p class="table-min-button">更多>></p>
-                <el-dropdown-menu slot="dropdown">
-                  <el-dropdown-item style="margin:0 10px;" :command="{index:scope.$index,row:scope.row,command:1}"
-                                    v-hasPermi="['laboratory:planjoin:edit']">关联实验室</el-dropdown-item>
-                  <el-dropdown-item style="margin:0 10px;" :command="{index:scope.$index,row:scope.row,command:2}"
-                                    v-hasPermi="['laboratory:distribution:list']">关联记录</el-dropdown-item>
-                  <el-dropdown-item style="margin:0 10px;" :command="{index:scope.$index,row:scope.row,command:3}"
-                                    v-show="userId==scope.row.userId"
-                                    v-hasPermiAnd="['laboratory:plan:query','laboratory:plan:edit']">编辑</el-dropdown-item>
-                  <el-dropdown-item style="margin:0 10px;" :command="{index:scope.$index,row:scope.row,command:4}"
-                                    v-show="userId==scope.row.userId"
-                                    v-hasPermi="['laboratory:plan:remove']">删除</el-dropdown-item>
-                </el-dropdown-menu>
-              </el-dropdown>
-              <!--<p class="table-min-button" style="margin-right:10px;" v-hasPermi="['laboratory:planjoin:edit']"-->
-                 <!--@click="handleClick(scope.$index, scope.row,'relevanceLab')">关联实验室</p>-->
-              <!--<p class="table-min-button" style="margin-right:10px;" v-hasPermi="['laboratory:distribution:list']"-->
-                 <!--@click="handleClick(scope.$index, scope.row,'relevanceRecord')">关联记录</p>-->
-              <!--<p class="table-min-button" style="margin-right:10px;" v-hasPermiAnd="['laboratory:plan:query','laboratory:plan:edit']"-->
-                 <!--v-show="userId==scope.row.userId" @click="handleClick(scope.$index, scope.row,'edit')">编辑</p>-->
-              <!--<p class="table-min-button" v-hasPermi="['laboratory:plan:remove']"-->
-                 <!--v-show="userId==scope.row.userId" @click="handleClick(scope.$index, scope.row,'delete')" >删除</p>-->
+              <p class="table-min-button" style="margin-left:20px!important;" v-hasPermi="['laboratory:planjoin:edit']">关联实验室</p>
+              <p class="table-min-button" style="margin-left:40px!important;" v-show="userId==scope.row.userId" v-hasPermiAnd="['laboratory:plan:query','laboratory:plan:edit']">编辑</p>
+              <p class="table-min-button" style="margin-left:40px!important;color:#FE2B2B;" v-show="userId==scope.row.userId" v-hasPermi="['laboratory:plan:remove']">删除</p>
+
+
+
+              <!--<p class="table-min-button" style="margin-right:10px;" v-hasPermi="['laboratory:plan:query']"-->
+                 <!--@click="handleClick(scope.$index, scope.row,'detail')">查看</p>-->
+              <!--<el-dropdown @command="moreClick">-->
+                <!--<p class="table-min-button">更多>></p>-->
+                <!--<el-dropdown-menu slot="dropdown">-->
+                  <!--<el-dropdown-item style="margin:0 10px;" :command="{index:scope.$index,row:scope.row,command:1}"-->
+                                    <!--v-hasPermi="['laboratory:planjoin:edit']">关联实验室</el-dropdown-item>-->
+                  <!--<el-dropdown-item style="margin:0 10px;" :command="{index:scope.$index,row:scope.row,command:2}"-->
+                                    <!--v-hasPermi="['laboratory:distribution:list']">关联记录</el-dropdown-item>-->
+                  <!--<el-dropdown-item style="margin:0 10px;" :command="{index:scope.$index,row:scope.row,command:3}"-->
+                                    <!--v-show="userId==scope.row.userId"-->
+                                    <!--v-hasPermiAnd="['laboratory:plan:query','laboratory:plan:edit']">编辑</el-dropdown-item>-->
+                  <!--<el-dropdown-item style="margin:0 10px;" :command="{index:scope.$index,row:scope.row,command:4}"-->
+                                    <!--v-show="userId==scope.row.userId"-->
+                                    <!--v-hasPermi="['laboratory:plan:remove']">删除</el-dropdown-item>-->
+                <!--</el-dropdown-menu>-->
+              <!--</el-dropdown>-->
             </div>
           </template>
         </el-table-column>
@@ -113,7 +114,7 @@ import {
   delPlan,
   getUserRoleBySubOperation
 } from "@/api/laboratory/plan";
-import addPlanPage from "./addPlan.vue";
+import addPlanPage from "./newAddPlan.vue";
 import detailPlanPage from "./detailPlan.vue";
 import associationPage from "./associationPage.vue";
 import relevanceRecordPage from "../distribution/index";
@@ -139,6 +140,8 @@ export default {
       // 遮罩层
       loading: false,
       dateRange: [],
+      //启动条件
+      deptOptions:[],
       // 查询参数
       param: {
         pageNum: 1,
@@ -293,24 +296,25 @@ export default {
 
 
   .control{
+    flex: 1;
     display: flex!important;
     flex-direction: column;
+    overflow: hidden;
     box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
-    padding:20px!important;
     .scrollbar-box{
+      overflow: hidden;
       display: flex!important;
       flex-direction: column;
       height: 100%;
       width: 100%;
-      padding-bottom: 20px;
+      padding:20px!important;
       box-sizing: border-box;
      /* box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
       padding:20px!important;*/
     }
     .button-box{
-      width:auto;
+      width:326px;
       display: flex;
-      justify-content: center;
     }
     .form-box{
       display:flex;

+ 586 - 0
src/views/emergencyManagement/plan/newAddPlan.vue

@@ -0,0 +1,586 @@
+<template>
+  <div class="newAddPlan">
+    <div class="newAddPlan-title-box">
+      <p>定制预案</p>
+      <p class="add-button-two-90" @click="backPage">返回</p>
+      <p class="inquire-button-one">不关联仅保存</p>
+      <p class="inquire-button-one" @click="associatedDialogClick(1)">保存并关联实验室</p>
+    </div>
+    <div class="plan-for-max-box scrollbar-box">
+      <el-form :model="form" ref="form" :rules="rules" :inline="true" label-width="90px" class="form-box">
+        <el-form-item label="预案名称:" prop="name" style="margin:40px 0;">
+          <el-input
+            v-model="form.name"
+            placeholder="请输入预案名称"
+            clearable
+            size="small"
+            maxLength="50"
+          />
+        </el-form-item>
+        <div class="for-plan-box" v-for="(item,index) in form.list" :key="index">
+          <p class="position-title-type" :class="item.type==1?'type-color-a':(item.type==2?'type-color-b':(item.type==3?'type-color-c':(item.type==4?'type-color-d':'')))">
+            {{item.type==1?'低风险':(item.type==2?'中风险':(item.type==3?'较高风险':(item.type==4?'高风险':'')))}}
+          </p>
+          <div class="for-plan-img-box">
+            <p class="for-plan-img-null-p"></p>
+            <div class="for-plan-img-box-big">
+              <div class="for-plan-img-box-one">
+                <img src="@/assets/ZDimages/evacuation3_2/img_dzya_ldss.png">
+                <p>联动疏散</p>
+              </div>
+              <div class="for-plan-img-box-two">
+                <img src="@/assets/ZDimages/evacuation3_2/img_dzya_hzyj.png">
+                <p>火灾预案</p>
+              </div>
+            </div>
+            <p class="for-plan-img-null-p"></p>
+          </div>
+          <div class="min-for-text-box">
+            <div class="min-for-text-box-one">
+              <div>
+                <p>启动条件:</p>
+                <p>监测区间:</p>
+              </div>
+            </div>
+            <div class="min-for-text-box-two">
+              <div>
+                <p>执行动作:</p>
+                <p>执行办法:</p>
+                <p>结束操作:</p>
+              </div>
+            </div>
+          </div>
+          <div class="for-button-max-box">
+            <div @click="buttonClick(2)">
+              <img src="@/assets/ZDimages/evacuation3_2/icon_znwl_bj.png">
+              <p>编辑</p>
+            </div>
+            <div @click="buttonClick(3)">
+              <img src="@/assets/ZDimages/evacuation3_2/icon_znwl_sc.png">
+              <p>删除</p>
+            </div>
+          </div>
+        </div>
+      </el-form>
+      <div class="plan-for-max-button-box">
+        <p class="plan-for-max-button-null"></p>
+        <p class="plan-for-max-button" @click="buttonClick(1)">+ 新增预案规则</p>
+        <p class="plan-for-max-button-null"></p>
+      </div>
+    </div>
+    <el-dialog :title='dialogTitle' v-if="dialogOpen" :visible.sync="dialogOpen" width="800px">
+      <div class="scrollbar-box" style="height:600px;">
+        <el-form :model="dialogForm" ref="dialogForm" :rules="rules" label-width="100px">
+          <el-form-item label="预案等级:" prop="type1">
+            <el-radio-group v-model="dialogForm.type1">
+              <el-radio :label="1">低风险</el-radio>
+              <el-radio :label="2">中风险</el-radio>
+              <el-radio :label="3">较高风险</el-radio>
+              <el-radio :label="4">高风险</el-radio>
+            </el-radio-group>
+          </el-form-item>
+          <div style="display: flex">
+            <el-form-item label="执行疏散:" prop="name">
+              <el-radio-group v-model="dialogForm.type2">
+                <el-radio :label="1">否</el-radio>
+                <el-radio :label="2">是</el-radio>
+              </el-radio-group>
+            </el-form-item>
+            <el-form-item label="火灾预案:" prop="name" style="margin-left:220px;">
+              <el-radio-group v-model="dialogForm.type3">
+                <el-radio :label="1">否</el-radio>
+                <el-radio :label="2">是</el-radio>
+              </el-radio-group>
+            </el-form-item>
+          </div>
+          <div style="border-top:1px solid #e0e0e0;">
+            <p style="line-height:60px;font-size:14px;margin-left:19px;">启动条件:</p>
+            <div style="display: flex" v-for="(item,index) in dialogForm.list1" :key="index">
+              <div style="flex:1;">
+                <el-form-item label="监测设备:" prop="type4">
+                  <el-select v-model="item.type4" placeholder="请选择">
+                    <el-option
+                      v-for="item in options"
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value">
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </div>
+              <div style="flex:1;display: flex">
+                <el-form-item label="监测区间:" prop="name">
+                  <el-input-number v-model="item.type5" style="width:90px;" :min="1" :max="999" :controls="false" label="描述文字"></el-input-number>
+                </el-form-item>
+                <p style="width:30px;text-align: center;line-height:40px;">-</p>
+                <el-form-item label="" prop="name" label-width="0">
+                  <el-input-number v-model="item.type6" style="width:90px;" :min="1" :max="999" :controls="false" label="描述文字"></el-input-number>
+                </el-form-item>
+                <p class="el-icon-delete" style="cursor: pointer;line-height:30px;width:30px;text-align:center;margin:5px 0 0 20px;"></p>
+              </div>
+            </div>
+            <p style="cursor: pointer;width:200px;line-height:30px;border-radius:4px;border: 1px dashed #E0E0E0;color:#333333;text-align: center;margin:20px auto;"
+               @click="addMinData(1)">+ 新增监测规则</p>
+          </div>
+          <div style="border-top:1px solid #e0e0e0;">
+            <p style="line-height:60px;font-size:14px;margin-left:19px;">执行动作:</p>
+            <div style="display: flex" v-for="(item,index) in dialogForm.list2" :key="index">
+              <div style="flex:1;display: flex">
+                <el-form-item label="执行设备:" prop="type4">
+                  <el-select v-model="item.type4" placeholder="请选择" style="width:130px;">
+                    <el-option
+                      v-for="item in options"
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value">
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+                <el-form-item label="执行办法:" prop="type4">
+                  <el-select v-model="item.type4" placeholder="请选择" style="width:130px;">
+                    <el-option
+                      v-for="item in options"
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value">
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+                <el-form-item label="结束操作:" prop="type4">
+                  <el-select v-model="item.type4" placeholder="请选择" style="width:130px;">
+                    <el-option
+                      v-for="item in options"
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value">
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+                <p class="el-icon-delete" style="cursor: pointer;line-height:30px;width:30px;text-align:center;margin:5px 0 0 20px;"></p>
+              </div>
+            </div>
+            <p style="cursor: pointer;width:200px;line-height:30px;border-radius:4px;border: 1px dashed #E0E0E0;color:#333333;text-align: center;margin:20px auto;"
+               @click="addMinData(2)">+ 新增执行动作</p>
+          </div>
+        </el-form>
+      </div>
+      <div slot="footer" class="dialog-footer">
+        <div style="display: flex">
+          <p style="flex:1;"></p>
+          <p style="cursor: pointer;border-radius:6px;width:70px;line-height:30px;font-size:12px;text-align:center;margin-right:17px;color:#999999;background:#E0E0E0;" @click="cancel">取消</p>
+          <p style="cursor: pointer;border-radius:6px;width:70px;line-height:30px;font-size:12px;text-align:center;color:#fff;background:#0045AF;" @click="submitForm">确定</p>
+          <p style="flex:1;"></p>
+        </div>
+      </div>
+    </el-dialog>
+    <el-dialog title='关联实验室' v-if="dialogAssociatedOpen" :visible.sync="dialogAssociatedOpen" width="1200px">
+      <div style="height: 600px;overflow: hidden;display: flex;flex-direction: column;flex:1;">
+        <el-form :model="param" ref="queryForm" :inline="true" label-width="80px">
+          <el-form-item label="关键字" prop="name">
+            <el-input
+              maxlength="10"
+              v-model="param.searchValue"
+              placeholder="实验室/危险源"
+              clearable
+              size="small"
+            />
+          </el-form-item>
+          <el-form-item label="安全分类" prop="deptId" label-width="80px">
+            <el-select v-model="param.deptId" placeholder="请选择安全分类" clearable size="small">
+              <el-option
+                v-for="dict in options"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="安全分级" prop="deptId" label-width="80px">
+            <el-select v-model="param.deptId" placeholder="请选择安全分级" clearable size="small">
+              <el-option
+                v-for="dict in options"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item>
+            <p class="inquire-button-one" style="margin-right:10px;" @click="onSearch">查询</p>
+            <p class="reset-button-one" @click="resetForm">重置</p>
+          </el-form-item>
+        </el-form>
+        <div style="display: flex;background: rgb(202,229,253);height:40px;line-height:40px;font-size:16px;padding:0 82px;">
+          <p style="margin-right:24px;">已选择 <span style="color:#0183FA;">1</span> 项</p>
+          <p style="color:#0183FA;cursor: pointer;" >全选本页</p>
+          <p style="color:#0183FA;margin:0 32px 0 30px;cursor: pointer;" >选择全部</p>
+          <p style="color:#FF8F1F;cursor: pointer;" >清除选项</p>
+        </div>
+        <el-table v-loading="loading" border :data="tableData">
+          <el-table-column type="selection" width="55" align="center" />
+          <el-table-column label="实验室" width="220" align="center" prop="id" />
+          <el-table-column label="安全分类" width="100" align="center" prop="id" />
+          <el-table-column label="安全分级" width="100" align="center" prop="id" />
+          <el-table-column label="危险源" align="left">
+            <div style="margin-bottom:10px;">
+              <div style="display: inline-block;padding:0 10px;border:1px solid #E0E0E0;margin:10px 10px 0 0;">
+                <span style="line-height:40px;font-size:14px;">马弗炉 - 马弗炉温度传感器</span>
+                <span class="el-icon-circle-close" style="cursor: pointer;width:14px;height:14px;margin-left:10px;margin-top:14px;color:#666;"></span>
+              </div>
+              <p style="color:#0183FA;font-size:16px;border:1px solid #0183FA;
+              border-radius:4px;width:88px;height:30px;line-height:30px;
+              display: inline-block;margin:5px 0 0 10px;text-align: center;cursor: pointer;">新增危险源</p>
+              <div style="display: flex;margin-top:10px;">
+                <el-select v-model="param.deptId" placeholder="请选择安全分类" clearable style="width:168px;">
+                  <el-option
+                    v-for="dict in options"
+                    :key="dict.value"
+                    :label="dict.label"
+                    :value="dict.value"
+                  ></el-option>
+                </el-select>
+                <p style="width:30px;text-align: center;line-height:40px;">-</p>
+                <el-select v-model="param.deptId" placeholder="请选择安全分类" clearable style="width:168px;">
+                  <el-option
+                    v-for="dict in options"
+                    :key="dict.value"
+                    :label="dict.label"
+                    :value="dict.value"
+                  ></el-option>
+                </el-select>
+                <p style="color:#CCCCCC;font-size:16px;border:1px solid #E0E0E0;
+                border-radius:4px;width:80px;height:30px;line-height:30px;
+                display: inline-block;margin:5px 0 0 10px;text-align: center;cursor: pointer;">取消</p>
+                <p style="color:#0183FA;font-size:16px;border:1px solid #0183FA;
+                border-radius:4px;width:80px;height:30px;line-height:30px;
+                display: inline-block;margin:5px 0 0 10px;text-align: center;cursor: pointer;">确定</p>
+              </div>
+            </div>
+          </el-table-column>
+        </el-table>
+        <pagination
+          v-show="total>0"
+          :total="total"
+          :page.sync="param.pageNum"
+          :limit.sync="param.pageSize"
+          @pagination="getList"
+        />
+      </div>
+      <div slot="footer" class="dialog-footer">
+        <div style="display: flex">
+          <p style="flex:1;"></p>
+          <p style="cursor: pointer;border-radius:6px;width:70px;line-height:30px;font-size:12px;text-align:center;margin-right:17px;color:#999999;background:#E0E0E0;" @click="associatedDialogClick(2)">取消</p>
+          <p style="cursor: pointer;border-radius:6px;width:70px;line-height:30px;font-size:12px;text-align:center;color:#fff;background:#0045AF;" @click="associatedDialogClick(3)">确定</p>
+          <p style="flex:1;"></p>
+        </div>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  export default {
+    name: "newAddPlan",
+    data() {
+      return {
+        form:{
+          list:[
+            {type:1},{type:2},{type:3},{type:4},
+          ],
+        },
+        dialogTitle:'',
+        dialogOpen:false,
+        dialogForm:{
+          list1:[{}],
+          list2:[{}],
+        },
+        // 表单校验
+        rules: {
+          name: [
+            { required: true, message: "请输入预案名称", trigger: "blur" },
+            { required: true, message: "请输入预案名称", validator: this.spaceJudgment, trigger: "blur" }
+          ],
+        },
+        //检测设备列表
+        options:[{value: '选项1', label: '黄金糕'},{value: '选项1', label: '黄金糕'},],
+        /***************关联危险源开始****************/
+        // 遮罩层
+        loading: false,
+        // 选中数组
+        ids: [],
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 查询数据
+        param:{},
+        total:5,
+        //关联实验室
+        dialogAssociatedOpen:false,
+        tableData:[{}],
+        /***************关联危险源结束****************/
+      }
+    },
+    methods: {
+      /***************关联危险源开始****************/
+      // 开关
+      associatedDialogClick(type){
+        if(type == 1){
+          this.$set(this,'dialogAssociatedOpen',true);
+        }else if (type == 2){
+          this.$set(this,'dialogAssociatedOpen',false);
+        }else if(type == 3){
+          //提交
+        }
+      },
+      //查询
+      onSearch(){
+
+      },
+      //重置
+      resetForm(){
+
+      },
+      //勾选
+      handleSelectionChange(selection){
+        this.ids = selection.map(item => item.id)
+        this.single = selection.length!==1
+        this.multiple = !selection.length
+      },
+      /***************关联危险源结束****************/
+      addMinData(type){
+        if(type == 1){
+          this.dialogForm.list1.push({})
+        }else if(type == 2){
+          this.dialogForm.list2.push({})
+        }
+      },
+      //提交
+      submitForm(){
+
+      },
+      //取消
+      cancel(){
+        this.$set(this,'dialogOpen',false);
+      },
+      //切换页面
+      backPage() {
+        this.$parent.handleClick('', '', 'back');
+      },
+      //新增/编辑预案
+      buttonClick(type){
+        if(type == 1){
+          this.$set(this,'dialogTitle','新增预案规则');
+          this.$set(this,'dialogOpen',true);
+        }else if(type == 2){
+          this.$set(this,'dialogTitle','编辑预案规则');
+          this.$set(this,'dialogOpen',true);
+        }else if(type == 3){
+          this.$confirm('确定要删除该预案规则吗?', "警告", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(function() {
+            console.log('删除该预案规则')
+          }).then(() => {
+          }).catch(() => {});
+        }
+      },
+    }
+  }
+</script>
+
+<style scoped lang="scss">
+  .newAddPlan {
+    flex: 1;
+    display: flex !important;
+    flex-direction: column;
+    overflow: hidden;
+    p {
+      margin: 0;
+      font-weight: 500;
+    }
+    .newAddPlan-title-box {
+      height: 80px;
+      display: flex;
+      border-bottom: 1px solid #E0E0E0;
+      p:nth-child(1) {
+        flex: 1;
+        margin-left: 20px;
+        font-size: 16px;
+        color: #0045AF;
+        line-height: 80px;
+        font-weight: 700;
+      }
+      p:nth-child(2) {
+        font-size: 14px;
+        margin-top: 20px;
+        margin-right: 20px;
+      }
+      p:nth-child(3) {
+        font-size: 14px;
+        width: 130px;
+        margin-top: 20px;
+      }
+      p:nth-child(4) {
+        font-size: 14px;
+        width: 150px;
+        margin: 20px;
+      }
+    }
+    .plan-for-max-box {
+      flex: 1;
+      padding:0 20px 20px 20px;
+      .for-plan-box{
+        position: relative;
+        border-radius:10px;
+        overflow: hidden;
+        box-shadow: 0px 4px 10px 0px rgba(0,0,0,0.302);
+        margin-bottom:24px;
+        display: flex;
+        .position-title-type{
+          position:absolute;
+          left:0;
+          top:0;
+          border-bottom-right-radius: 10px;
+          width:84px;
+          line-height:30px;
+          font-size:14px;
+          text-align: center;
+        }
+        .type-color-a{
+          color:#0183FA;
+          background: #CCE6FE;
+        }
+        .type-color-b{
+          color:#FF9900;
+          background: rgb(256,232,206);
+        }
+        .type-color-c{
+          color:#FF4800;
+          background: rgb(251,228,206);
+        }
+        .type-color-d{
+          color:#FF0000;
+          background:  rgba(248,206,205);;
+        }
+        .for-plan-img-box{
+          width:411px;
+          display: flex;
+          flex-direction: column;
+          .for-plan-img-null-p{
+            flex:1;
+          }
+          .for-plan-img-box-big{
+            display: flex;
+            .for-plan-img-box-one{
+              margin-left:81px;
+              width:168px;
+              display: flex;
+              img{
+                height:50px;
+                width:50px;
+              }
+              p{
+                line-height:50px;
+                font-size:14px;
+                color:#333;
+              }
+            }
+            .for-plan-img-box-two{
+              display: flex;
+              img{
+                height:50px;
+                width:50px;
+              }
+              p{
+                line-height:50px;
+                font-size:14px;
+                color:#333;
+              }
+            }
+          }
+        }
+        .min-for-text-box{
+          width:900px;
+          padding-top:21px;
+          .min-for-text-box-one{
+            width:400px;
+            line-height:30px;
+            margin-bottom:21px;
+            margin-right:40px;
+            border-radius:6px;
+            color:#0183FA;
+            background:rgb(209,229,253);
+            display: inline-block;
+            div{
+              display: flex;
+              p:nth-child(1){
+                margin-right:15px;
+                margin-left:9px;
+              }
+            }
+          }
+          .min-for-text-box-two{
+            width:400px;
+            line-height:30px;
+            margin-bottom:21px;
+            margin-right:40px;
+            border-radius:6px;
+            color:#333;
+            background:rgb(253,242,227);
+            div{
+              display: flex;
+              p:nth-child(1){
+                margin-right:15px;
+                margin-left:9px;
+              }
+              p:nth-child(2){
+                margin-right:15px;
+              }
+            }
+          }
+        }
+        .for-button-max-box{
+          flex:1;
+          margin:19px 0;
+          border-left:1px dashed #D8D8D8;
+          display: flex;
+          div{
+            margin:auto 0 auto 34px;
+            width:85px;
+            display: flex;
+            height:20px;
+            cursor: pointer;
+            img{
+              height:14px;
+              margin-top:3px;
+            }
+            p{
+              font-size:14px;
+              margin-left:9px;
+            }
+          }
+        }
+      }
+      .plan-for-max-button-box{
+        margin:30px auto;
+        display: flex;
+        .plan-for-max-button-null{
+          flex:1;
+        }
+        .plan-for-max-button{
+          cursor: pointer;
+          color:#0183FA;
+          border:1px dashed #0183FA;
+          border-radius:4px;
+          width:300px;
+          line-height:40px;
+          text-align: center;
+          font-size:14px;
+        }
+
+      }
+    }
+  }
+</style>