智慧园区前端大屏
shuishen
2025-02-12 94791ca7adf3101a9935d9740ef3b718cf5f1dd1
突发事件模拟显示三级防控体系介绍
1 files modified
3 files added
235 ■■■■■ changed files
src/views/pd/components/box/fireSource.vue 132 ●●●●● patch | view | raw | blame | history
src/views/pd/components/box/publicContent.vue 26 ●●●●● patch | view | raw | blame | history
src/views/pd/components/rightContainer.vue 65 ●●●●● patch | view | raw | blame | history
src/views/pd/index.vue 12 ●●●● patch | view | raw | blame | history
src/views/pd/components/box/fireSource.vue
New file
@@ -0,0 +1,132 @@
<!--
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-13 14:54:26
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-11-27 14:30:53
 * @FilePath: \bigScreen\src\views\pac\components\box\fireSource.vue
 * @Description:
 *
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
-->
<script setup>
import { Picture } from '@element-plus/icons-vue'
import publicContent from './publicContent.vue'
import { getAssetsFile } from 'utils/utils'
const one = getAssetsFile('one.png', '/img')
const two = getAssetsFile('two.png', '/img')
const three = getAssetsFile('three.png', '/img')
import { usePointStore } from 'store/usepoint'
const pointStore = usePointStore()
const sharedData = computed(() => pointStore.sharedData)
let indexValue = ref(1)
watch(sharedData, (newValue) => {
  indexValue.value = newValue
})
</script>
<template>
  <public-content>
    <template #content>
      <div class="content_box">
        <div v-if="indexValue == 1">
          <div>
            <!-- <img :src="one" alt=""> -->
            <el-image :src="one" :zoom-rate="1.2" :max-scale="7" :min-scale="0.2" :preview-src-list="[one]"
              :initial-index="4" fit="cover">
              <template #error>
                <div class="image-slot">
                  <el-icon>
                    <Picture />
                  </el-icon>
                </div>
              </template>
            </el-image>
          </div>
          <div class="content_text">
            第一级应急防控体系,即事故废水不出企业,事故发生时,首先启动一级防控。关闭所有可能外溢事故污水的外排口,利用企业自身的围堰、应急池等环境应急防控设施,将污水控制在企业厂区内部。园区内所有企业均设置相应的事故应急池,企业雨水(清下水)排口设有监管部门控制的阀门。一旦发生物料泄漏及火灾等安全生产事故,相关企业快速断开雨水排口,联动打开事故应急池,将事故废水和消防尾水导入事故应急池。事故结束后,应急事故池中的废水进入厂区自身污水处理站处理,无污水处理站的企业按照监测结果进入园区污水处理厂处理。
          </div>
        </div>
        <div v-if="indexValue == 2" class="content_img_text">
          <div>
            <!-- <img :src="two" alt=""> -->
            <el-image :src="two" :zoom-rate="1.2" :max-scale="7" :min-scale="0.2" :preview-src-list="[two]"
              :initial-index="4" fit="cover">
              <template #error>
                <div class="image-slot">
                  <el-icon>
                    <Picture />
                  </el-icon>
                </div>
              </template>
            </el-image>
          </div>
          <div class="content_text_box">
            <div class="content_text">
              一级防控能力不足时,启动二级防控。通过专用管道或临时转输措施,与相邻企业应急池、园区公共应急池等互联互通,拦截处置事故污水。第二级应急防控体系,即事故废水不出园区,事故废水储存在园区公共应急池及园区内雨水管网公共空间内。
            </div>
            <div class="content_text">
              (1)公共应急池的选址。建设园区公共应急池或利用园区内干枯河道、低洼地带等进行改造,并设置独立管网进行事故废水的收集和输送,保证每家企业内部应急池与公共应急池有效连通;在事故废水超过设计标准的情况下,也可有效利用雨水管网分段建设闸门井进行废水容纳。一旦园区内企业发生事故,且消防尾水过量超出企业自身防控能力时,开启园区公共应急池阀门,企业内部无法收纳的消防事故水将通过应急管网流入公共应急池,将事故废水控制在园区应急池内,不进入区内河道。事故结束后,对公共应急池内收纳的事故废水进行监测,若达标,则就近排入河道;若不达标,则分批次用槽车送入园区污水处理厂处理。
            </div>
            <div class="content_text">
              (2)公共应急池容量设计。根据《化工园区事故应急设施(池)建设标准》(T/CPCIF 0049—2020)进行公共应急池设置,以化工集中区产生事故废水外排量最大的一个企业计算。
            </div>
          </div>
        </div>
        <div v-if="indexValue == 3">
          <div>
            <!-- <img :src="three" alt=""> -->
            <el-image :src="three" :zoom-rate="1.2" :max-scale="7" :min-scale="0.2" :preview-src-list="[three]"
              :initial-index="4" fit="cover">
              <template #error>
                <div class="image-slot">
                  <el-icon>
                    <Picture />
                  </el-icon>
                </div>
              </template>
            </el-image>
          </div>
          <div class="content_text">
            事态进一步扩大,污水进入园区内水体,启动三级防控。利用化工集中区内的坑塘、河道、沟渠以及周边水系等,构建环境应急防控空间,对进出园区的水体实施封闭或分段管控。结合化工集中区区实际,确定事故废水通过雨污管网在进入赣江前有效拦截,当发生重大企业突发环境事故或危化品运输车辆侧翻等事故时,事故废水流入化工集中区内水体,立即关闭应急闸坝,污染河道使用移动闸截断污染团(带);同时根据污染团(带)所在位置,就近闸断园区内部河道形成临时应急池,防止污染团从园区内水系进一步扩散至外环境。事故结束后,对临时应急空间内水质进行监测,若达标,则开启河道应急闸坝;若不达标,则将临时应急空间内污水由水泵将河水分批次送入公共应急池,进一步送园区污水处理厂处理。
          </div>
        </div>
      </div>
    </template>
  </public-content>
</template>
<style lang="scss" scoped>
.content_box {
  color: #fff;
  // overflow: scroll;
}
.content_box img {
  width: 100%;
}
.content_text_box {
  height: 530px;
  overflow: hidden;
  overflow-y: auto;
}
.content_box .content_text {
  // 首行缩进
  text-indent: 2em;
  width: 100%;
  line-height: 25px;
  // 字间距
  letter-spacing: 2px;
  font-size: 16px;
}
</style>
src/views/pd/components/box/publicContent.vue
New file
@@ -0,0 +1,26 @@
<!--
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-13 14:54:26
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-10-25 18:33:46
 * @FilePath: \bigScreen\src\views\statistics\components\box\publicContent.vue
 * @Description:
 *
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
-->
<script setup>
</script>
<template>
  <div class="content">
    <slot name="content"></slot>
  </div>
</template>
<style lang="scss" scoped>
.content {
  padding: 20px 0;
  height: calc(100% - 32px);
}
</style>
src/views/pd/components/rightContainer.vue
New file
@@ -0,0 +1,65 @@
<!--
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-10 15:27:59
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-10-26 14:49:05
 * @FilePath: \bigScreen\src\views\survey\components\rightContainer.vue
 * @Description:
 *
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
-->
<script setup>
import fireSource from './box/fireSource.vue'
</script>
<template>
  <div class="right-container">
    <div class="fire-source box">
      <title-box>
        <template #titleName>
        </template>
      </title-box>
      <fire-source></fire-source>
    </div>
  </div>
</template>
<style lang="scss" scoped>
.right-container {
  display: flex;
  flex-direction: column;
  padding: 20px;
  position: absolute;
  top: 0;
  right: 0;
  width: 440px;
  height: 100%;
  pointer-events: auto;
  // background: none;
  .box {
    margin-top: 20px;
    .header {
      height: 32px;
      background: url(/img/bg/sub-title.png) no-repeat;
    }
  }
  .fire-source {
    flex: 3;
  }
  .occur-statistics {
    flex: 3;
  }
  .fire-trend {
    flex: 4;
  }
  .box:first-child {
    margin-top: 0;
  }
}
</style>
src/views/pd/index.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-10 15:27:59
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-11-25 20:33:22
 * @LastEditTime: 2025-02-12 19:37:16
 * @FilePath: \bigScreen\src\views\pd\index.vue
 * @Description: 综合设计
 * 
@@ -13,6 +13,10 @@
import dynamicPanel from './components/dynamicPanel.vue'
import { CaretLeft, CaretRight } from '@element-plus/icons-vue'
import { nextTick, onUnmounted } from 'vue'
import rightContainer from './components/rightContainer.vue'
import { useMap } from 'store/map'
const mapStore = useMap()
const showPanel = ref(true)
@@ -21,11 +25,11 @@
}
nextTick(() => {
  EventBus.emit('restHandleCheckChange', `3-3-4`)
  EventBus.emit('restHandleCheckChange', `3-9`)
})
onUnmounted(() => {
  EventBus.emit('restHandleDelChange', `3-3-4`)
  EventBus.emit('restHandleDelChange', `3-9`)
})
</script>
@@ -41,6 +45,8 @@
    </div>
    <dynamic-panel v-show="showPanel" @closePanel="showPanelChange"></dynamic-panel>
    <right-container v-show="mapStore.showPreLevel"></right-container>
  </div>
</template>