Newer
Older
shipFront / src / views / device / left.vue
[wangxitong] on 30 May 2022 8 KB v1.1.2
<template>
  <div class="container">
    <div class="content block-flex" style="height: 70%">
      <div style="width: 100%;height: 40px;display: flex;">
        <el-image :src="img" style="width: 30px;height: 30px;"/>
        <div class="position">{{position.lng}},{{position.lat}}</div>
      </div>
      <div class="block" v-for="(value,key,index) in device" :key="index">
        <item :data="value"/>
      </div>
    </div>
    <div class="content" style="height: 30%">
      <item class="block" style="height: 40px" :data="task"/>
      <div class="block" style="height: 40px" v-for="(value,key,index) in list" :key="index">
        <item :data="value"/>
      </div>
      <div style="color: white;font-size: 15px">
        <div class="block" style="height: 25px">{{spend.name}}</div>
        <div class="block" style="height: 25px;font-weight: bold">{{spend.value}}</div>
      </div>


    </div>
  </div>
</template>

<script>

  import { getRobotDetail } from '@/api/robot'
  import Item from "./components/item";
  import Guage from "./components/guage";
  import Guage1 from "./components/guage1";
export default {
  name: 'Left',
  components: {Guage,Guage1, Item},
  data() {
    return {
      img:require('@/assets/images/local.png'),
      position:{
        lng:'*****',
        lat:'*****'
      },
      device:[
        {name:'航行状态',value:'*****', unit:'',color:'#ffffff'},
        {name:'浮力值',value:'*****', unit:'',color:'#ffffff'},
        {name:'滑块位置',value:'*****', unit:'',color:'#ffffff'},
        {name:'横滚角',value:'*****', unit:'°',color:'#00DAE2'},
        {name:'俯仰角',value:'*****', unit:'°',color:'#00DAE2'},
        {name:'航向角',value:'*****', unit:'°',color:'#00DAE2'},
        {name:'历史最大深度',value:'****', unit:'m',color:'#ffffff'},
        {name:'探测目标距离',value:'****', unit:'m',color:'#ffffff'},
        {name:'目标方位',value:'****',unit:'°',color:'#ffffff'},
        {name:'目标频率',value:'****',unit:'Hz',color:'#ffffff'}
      ],
      timer: null, // 定时器
      clock: 1, // 定时时间
      data:[
        {
          title:'仪表电容量',
          data: 100,
          color:'#ffffff'
        },
        {
          title:'动力电余量',
          data: 100,
          color:'#ffffff'
        },
        ],
      data0:[
        {
          title:'仪表电电压',
          data: 100,
          max:27,
          color:'#ffffff'
        },
        {
          title:'动力电电压',
          data: 100,
          max:260,
          color:'#ffffff'
        },
        ],
      data1:[
        {name:'历史最大深度',value:'****', unit:'m',color:'#ffffff'},
        {name:'探测目标距离',value:'****', unit:'m',color:'#00DAE2'},
        {name:'目标方位',value:'****',unit:'°',color:'#00DAE2'},
        {name:'目标频率',value:'****',unit:'Hz',color:'#00DAE2'}
      ],
      data2:[
        {name:'任务深度',value:'120', unit:'m',color:'#ffffff'},
        {name:'航向角',value:'93', unit:'°',color:'#ffffff'},
        {name:'驻留位置',value:'116.876473,39.342181', unit:'',color:'#ffffff'},
        {name:'驻留深度',value:'120', unit:'m',color:'#ffffff'},
        {name:'投放位置',value:'116.876473,39.342181', unit:'',color:'#ffffff'},
        {name:'投放深度',value:'120', unit:'m',color:'#ffffff'},
      ],
      task: {name:'当前任务类型',value:'定向', unit:'',color:'#00DAE2'},
      spend: {name:'当前剖面耗时(任务开始正计时)',value:'', unit:'',color:'#ffffff'},
      list:[]
    }
  },
  created() {
      // this.initTask()
  },
  beforeDestroy(){
    this.stopTimer()
  },
  methods: {
    init(val){
          this.position.lat = val.lat.toFixed(8)
          this.position.lng = val.lng.toFixed(8)
          this.device[0].value= val.navigateState
          this.device[1].value= val.buoyancy
          this.device[2].value= val.position
          this.device[3].value = val.rollAngle
          this.device[4].value = val.pitchAngle
          this.device[5].value = val.headingAngle

          this.data[0].data= val.instrumentE
          this.data[1].data= val.powerE

          this.data0[0].data= val.instrumentV
          this.data0[1].data= val.powerV
          // this.data1[0].value= val.powerV
          this.device[7].value= val.targetDistance
          this.device[8].value= val.targetDirection
          this.device[9].value= val.targetHertz
    },
    setTime(createTime,endTime){
      var dateBegin = new Date(createTime.replace(/-/g, "/"))
      var dateEnd = new Date()
      if(endTime!==''){
        dateEnd = new Date(endTime.replace(/-/g, "/"))
      }
      var dateDiff = dateEnd.getTime() - dateBegin.getTime();//时间差的毫秒数
      var dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000));//计算出相差天数
      var leave1=dateDiff%(24*3600*1000) //计算天数后剩余的毫秒数
      var hours=Math.floor(leave1/(3600*1000))//计算出小时数
      //计算相差分钟数
      var leave2=leave1%(3600*1000) //计算小时数后剩余的毫秒数
      var minutes=Math.floor(leave2/(60*1000))//计算相差分钟数
      //计算相差秒数
      var leave3=leave2%(60*1000) //计算分钟数后剩余的毫秒数
      var seconds=Math.round(leave3/1000)
      this.spend.value = dayDiff+"天 "+hours+"小时 "+minutes+"分钟 "+seconds+"秒 "
    },
    openTimer(createTime){
      let that = this
      this.timer = setInterval(function(){
        that.setTime(createTime,'')
      }, 1000);
    }, // 停止定时器
    stopTimer(){
      if (this.timer){
        clearTimeout(this.timer)
        this.timer = null
      }
    },
    initTask(val){
      this.stopTimer()
      if(val===''){
        this.list = []
        this.task = {name:'当前任务类型',value:'', unit:'',color:'#00DAE2'}
        this.spend.value = ''
      }
      this.setTime(val.createTime,val.endTime)
      if(val.endTime === ''){
        this.openTimer(val.createTime)
      }
      switch (val.taskType) {
        case '1':
          this.task.value='定向'
          let str = ''
          for(let i=0;i<val.directedTask.directCount;i++){
            str = str + val.directedTask.headingAngle[i] + '°;'
          }
          this.list = [
            {name:'任务深度',value:val.directedTask.taskDepth.toFixed(2), unit:'m',color:'#ffffff'},
            {name:'航向角',value:str, unit:'',color:'#ffffff'}
            ]
          break
        case '2':
          this.task.value='航路点'
          // const tmp = val.routeTask.robotRoutes.toString()
          this.list = [
            {name:'任务深度',value:val.routeTask.taskDepth, unit:'m',color:'#ffffff'},
            {name:'航路点',
              value: val.routeTask.routeCount,
              unit:'个',color:'#ffffff'},
          ]
          break
        case '3':
          this.task.value='定深直航'
          this.list = [
            {name:'任务深度',value:val.flightTask.taskDepth, unit:'m',color:'#ffffff'},
            {name:'航向角',value:val.flightTask.headingAngle.toFixed(2), unit:'°',color:'#ffffff'}
          ]
          break
        case '4':
          this.task.value='驻留'
          this.list = [
            {name:'驻留位置',value:Number(val.resideTask.lng).toFixed(6)+','+Number(val.resideTask.lat).toFixed(6), unit:'',color:'#ffffff'},
            {name:'驻留深度',value:val.resideTask.depth, unit:'m',color:'#ffffff'}
            ]
          break
        case '5':
          this.task.value='投放'
          this.list = [
            {name:'投放位置',value:Number(val.putTask.lng).toFixed(6)+','+Number(val.putTask.lat).toFixed(6), unit:'',color:'#ffffff'},
            {name:'投放时间',value:val.createTime, unit:'',color:'#ffffff'}
            ]
          break
        default:
          this.task.value='任务终止'
          this.list = []
          break
      }
    }
  }
}
</script>

<style rel="stylesheet/scss" lang="scss" scoped>
  .container{
    display: flex;
    flex-direction: column;
    .guage-title{
      color: #ffffff;
      height: 15px;
      text-align: center;
      line-height: 15px;
      font-size: 15px;
      font-weight: bold;
      margin-top: -30px;
    }
    .position{
      color: #00DAE2;
      font-size: 18px;
      padding-left: 10px;
      line-height: 30px;
      text-align: center;
      font-weight: bold;
    }
    .block-flex{
      display: flex;
      flex-wrap: wrap;
    }
    .content{
      margin: 10px 0px;
      width: 100%;
      padding: 20px;
      background: url("../../assets/images/bg.png") no-repeat;
      -webkit-background-size: 100% 100%;
      background-size: 100% 100%;
      .block{
        width: 100%;
      }
    }
  }
</style>