Newer
Older
laserPTZFront / src / views / alarmManage / clearAlarm.vue
[wangxitong] on 10 May 2022 3 KB first commit
<template>
  <el-dialog :title="isClearAll?'消除所有报警':'手动消警'" :visible.sync="dialogFormVisible" width="30%" append-to-body @close="cancel">
    <el-form v-loading="loading" ref="dataForm" :rules="rules" :model="alarmForm" label-well-code="right" label-width="160px">
      <el-form-item v-if="!isClearAll" label="监控点位" prop="monitorName">
        <el-input v-model.trim="alarmForm.monitorName" disabled/>
      </el-form-item>
      <el-form-item v-if="!isClearAll" label="报警方位" prop="alarmDirection">
        <el-input v-model.trim="alarmForm.alarmDirection" disabled/>
      </el-form-item>
      <el-form-item v-if="!isClearAll" label="报警浓度值" prop="alarmValue">
        <el-input v-model.trim="alarmForm.alarmValue" disabled/>
      </el-form-item>
      <el-form-item label="消警持续时间(分钟)" prop="resumeTime">
        <el-input v-model.trim="alarmForm.resumeTime" type="number" :min="0"/>
      </el-form-item>
    </el-form>
    <span slot="footer" class="dialog-footer">
      <el-button type="primary" @click="clear">提交</el-button>
      <el-button @click="cancel">取消</el-button>
    </span>
  </el-dialog>
</template>

<script>
import { clearAll } from "@/api/alarm"

export default {
  name: 'ClearAlarm',
  data() {
    const validateResumeTime = (rule, value, callback) => {
      if (value !== '') {
        if ((/^[+]{0,1}(\d+)$|^[+]{0,1}(\d+\.\d+)$/).test(value) === false) {
          callback(new Error('请填写大于0的数字'))
        } else {
          callback()
        }
      } else {
        callback(new Error('消警持续时间不能为空'))
      }
    }
    return {
      isClearAll: false,
      dialogFormVisible: false, // 对话框是否显示
      alarmForm: {
        alarmId: '', // id
        alarmDirection: '', // 报警方位
        monitorName: '', // 报警点位
        alarmValue: '', // 报警值
        resumeTime: '' // 消警持续时间
      }, // 表单
      loading: false, // 加载
      rules: {
        resumeTime: [{required: true, trigger: ['blur', 'change'], validator: validateResumeTime}]
      }
    }
  },
  watch: {
  },
  mounted() {
  },
  methods: {
    // 初始化对话框
    initDialog: function(row = null, isClearAll) {
      this.isClearAll = isClearAll
      this.dialogFormVisible = true
      this.alarmForm = {
        alarmId: row.id, // id
        monitorName: row.monitorName, // 报警点位
        alarmValue: row.alarmValue, // 报警值
        alarmDirection: row.alarmDirection // 报警阈值
      }
      // 清除验证
      this.$nextTick(() => {
        this.$refs['dataForm'].clearValidate()
      })
    },
    clear() {
      this.$refs['dataForm'].validate((valid) => {
        if (valid) {
          clearAll(this.alarmForm).then(response => {
            if (response.code === 200) {
              this.$message.success('操作成功!')
              this.$emit('watchChild')
              this.dialogFormVisible = false
            }
            // 清除验证
            this.$nextTick(() => {
              this.$refs['dataForm'].clearValidate()
            })
          })
        }
      })
    },
    // 重置表单
    resetForm() {
      this.alarmForm = {
        alarmId: '', // id
        alarmDirection: '', // 报警方位
        monitorName: '', // 报警点位
        alarmValue: '', // 报警值
        resumeTime: '' // 消警持续时间
      }
    },
    cancel: function() {
      this.dialogFormVisible = false
      this.$emit('watchChild')
    }
  }
}
</script>

<style rel="stylesheet/scss" lang="scss" scoped>
  .el-select{
    width: 100%;
  }
  .el-date-editor{
    width: 100%;
  }
  .dialog-footer{
    text-align: right;
    margin-top: 10px;
  }
</style>