Newer
Older
shipFront / src / views / setting / alarm.vue
[wangxitong] on 30 May 2022 5 KB v1.1.2
<template>
  <div>
    <el-form ref="dataForm" :model="form" :rules="rules" label-width="160px">
      <div class="alarm-title">气象水文</div>
      <el-row>
        <el-col :span="10">
          <el-form-item label="台风报警" prop="typhoonDistance">
              <el-input v-model="form.typhoonDistance">
                <template slot="prepend">小于</template>
                <template slot="append">海里</template>
              </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="10">
          <el-form-item label="风速报警" prop="typhoonSpeed">
              <el-input v-model="form.typhoonSpeed">
                <template slot="prepend">大于</template>
                <template slot="append">m/s</template>
              </el-input>
          </el-form-item>
        </el-col>
      </el-row>
      <div class="alarm-title">AIS&电子海图</div>
      <el-row>
        <el-col :span="10">
          <el-form-item label="船舶报警" prop="shipDistance">
              <el-input v-model="form.shipDistance" @keyup.native="value = oninput(value)">
                <template slot="prepend">小于</template>
                <template slot="append">海里</template>
              </el-input>
          </el-form-item>
        </el-col>
      </el-row>
      <div class="alarm-title">水下机器人</div>
      <el-row>
        <el-col :span="10">
          <el-form-item label="电量报警" prop="robotBattery">
              <el-input v-model="form.robotBattery">
                <template slot="prepend">小于</template>
                <template slot="append">%</template>
              </el-input>
          </el-form-item>
        </el-col>
        <el-col :span="10">
          <el-form-item label="位置报警" prop="robotDistance">
              <el-input v-model="form.robotDistance">
                <template slot="prepend">大于</template>
                <template slot="append">海里</template>
              </el-input>
          </el-form-item>
        </el-col>
      </el-row>
      <div class="alarm-title">通信信号</div>
      <el-row>
        <el-col :span="10">
          <el-form-item label="通信信号强度" prop="satelliteSignal">
              <el-input v-model="form.satelliteSignal" >
                <template slot="prepend">小于</template>
                <template slot="append">kb/s</template>
              </el-input>
          </el-form-item>
        </el-col>
      </el-row>
      <div style="text-align: center;">
        <el-button class="setting-btn" type="primary" @click="onSubmit">应 用</el-button>
        <el-button class="setting-btn" @click="read" style="margin-left: 20px">读取配置</el-button>
        <!--<el-button @click="save">保存配置</el-button>-->
      </div>
    </el-form>
  </div>
</template>

<script>
  import axios from 'axios'
  import { alarmUpdate,alarmRecentValue } from "@/api/alarm"
  export default {
    name: 'Alarm',
    components: {},
    data() {
      const validatePoint = (rule, value, callback) => {
        if ((/^(([1-9][0-9]*|0)\.([0-9]{1,100})$)|^([1-9][0-9]*|0)$/).test(value) === false) {
          callback(new Error('请输入正数'))
        } else {
          callback()
        }
      }
      return {
        list: [],
        rules: {
          satelliteSignal:[{validator: validatePoint, trigger: ['blur', 'change'] }],
          typhoonDistance:[{validator: validatePoint, trigger: ['blur', 'change'] }],
          typhoonSpeed:[{validator: validatePoint, trigger: ['blur', 'change'] }],
          shipDistance:[{validator: validatePoint, trigger: ['blur', 'change'] }],
          robotBattery :[{validator: validatePoint, trigger: ['blur', 'change'] }],
          robotDistance:[{validator: validatePoint, trigger: ['blur', 'change'] }]
        },
        form: {
          typhoonDistance:'',
          typhoonSpeed:'',
          shipDistance:'',
          robotBattery :'',
          robotDistance:'',
          satelliteSignal:''
        }
      }
    },
    created() {
      this.init()
    },
    mounted() {
      this.init()
    },
    methods: {
      onSubmit(){
        alarmUpdate(this.form).then(res => {
          if (res.code === 200) {
            this.$message.success('阈值设置成功')
             this.init()
          }
        })
      },
      init(){
        console.log('获取当前值')
        this.$nextTick(() => {
          this.$refs['dataForm'].clearValidate()
        })
        alarmRecentValue().then(res => {
          if (res.code === 200) {
            this.form = res.data
          }
        })
      },
      read(){
        var that = this
        axios.get('./config/alarm.json').then((result) => {
          that.form = result.data
        }).catch((error) => {
          console.error('get baseConfig error...' + error)
        })
      }
    }
  }
</script>

<style rel="stylesheet/scss" lang="scss">
  .el-input-group__append, .el-input-group__prepend {
    padding: 5px !important;
    min-width: 40px;
    font-size: 12px;
    background-color: white !important;
    /*border: 1px solid #DCDFE6;*/
  }
  .alarm-title{
    text-align: center;
    margin: 7px;
    margin-top:0px;
    font-size: 15px;
    font-weight: bold;
    max-width: 120px;
    color: white;
    padding: 5px;
    background-color: #409effee;
    border-radius: 6px;
  }
  .setting-btn{
    width: 100px;
  }
</style>