Newer
Older
smartwell_front_dz / src / components / alarmDialog.vue
lyg on 29 Sep 3 KB 20240929需求修改
<!--报警提醒弹窗-->
<template>
  <el-dialog :title="title" :visible.sync="dialogFormVisible" width="25%" custom-class="warning-dialog" append-to-body
    :show-close="true" :close-on-click-modal="false" :close-on-press-escape="false" @close="cancel">
    <div class="dialog-container">
      <div class="right-div">
        <div><span class="label">报警设备: </span> <span class="value">{{ alarm.deviceNo }}</span></div>
        <div><span class="label">报警值: </span> <span class="value">{{ alarm.value }} ppm</span></div>
        <!-- <div v-show="alarm.deviceNo"><span class="label">设备编号: </span> <span class="value">{{ alarm.deviceNo }}</span> -->
        <!-- </div> -->
        <!-- <div><span class="label">报警等级: </span> <span class="value">{{ alarm.level }}</span></div> -->
        <!-- <div><span class="label">报警分类: </span> <span class="value">{{ alarm.typeName }}</span></div> -->
        <div><span class="label">报警内容: </span> <span class="value">{{ alarm.message }}</span></div>
        <div><span class="label">报警时间: </span> <span class="value">{{ alarm.alarmTime }}</span></div>
        <div><span class="label">报警状态: </span> <span class="value">正在报警</span></div>
      </div>
    </div>
    <!-- <div class="btn-div">
      <el-button type="danger" @click="handleAlarm">
        查看
      </el-button>
      <el-button type="danger" @click="cancel">
        忽略
      </el-button>
    </div> -->
  </el-dialog>
</template>

<script>
import { getSearchLastDayTime } from '@/utils/dateutils'
export default {
  name: 'AlarmInfoDialog',
  data() {
    return {
      dialogFormVisible: false, // 对话框是否显示
      title: '报警详情', // 表头显示标题
      alarm: {
        deviceName: '--',
        typeName: '--',
        level: '--',
        system: '--',
        content: '--',
        alarmTime: '--',
        cancelTime: '--'
      },
      isHidden: false, // 页面是否被切走
    }
  },
  methods: {
    // 初始化对话框
    initDialog: function (alarm) {
      this.dialogFormVisible = true
      this.alarm = alarm
      alarm.alarmTime = getSearchLastDayTime()[1] || ''
      // 播放音效
      if (!this.isHidden) {
        this.playAudio()
      }
      else {
        this.pauseAudio()
      }
      setTimeout(() => {
        this.cancel()
      }, 1000 * 5)
    }, // 处理报警
    handleAlarm() {
      this.dialogFormVisible = false
      this.pauseAudio()
      this.$router.push({
        path: '/alarmNow',
        // query: { refresh: true }
      })
    }, // 忽略
    cancel() {
      console.log('关闭报警弹窗')
      this.pauseAudio()
      this.dialogFormVisible = false
    },
    handleTabVisibility() {
      if (document.visibilityState === 'visible') {
        console.log('页面被切回来,alarmDialog')
        this.isHidden = false
        // 执行当Tab回到前台时的逻辑
      } else if (document.visibilityState === 'hidden') {
        console.log('页面被切走,alarmDialog')
        this.isHidden = true
      }
    }
  },
  mounted() {
    document.addEventListener('visibilitychange', this.handleTabVisibility)
  }
}
</script>

<style rel="stylesheet/scss" lang="scss" scoped>
::v-deep(.el-dialog__title) {
  color: #fff;
  font-weight: 700;
  padding-left: 10px;
}

.dialog-container {
  display: flex;
  line-height: 2;
  align-items: center;
  margin-bottom: 10px;
  color: #fff;

  .left-div {
    width: 30%;
    text-align: center;
  }

  .right-div {
    margin-left: 30px;
    flex: 1;
    font-size: 18px;

    .label {
      font-weight: 700;
    }

    .value {
      margin-left: 10px;
      color: #fcfcfc;
    }
  }
}

.btn-div {
  margin-bottom: 10px;
  text-align: center;
}
</style>

<style>
.warning-dialog {
  background-color: #00000000;
  background-image: url('./../assets/global_images/1级.png');
  background-repeat: no-repeat;
  background-size: 100% 100%;
  color: #fff;
  opacity: 0.9;
}
</style>