|  | @@ -0,0 +1,156 @@
 | 
	
		
			
				|  |  | +<template>
 | 
	
		
			
				|  |  | +  <card style="font-size: 15px">
 | 
	
		
			
				|  |  | +    <van-cell-group>
 | 
	
		
			
				|  |  | +      <van-cell :title="data.equipmentName" @click="onTitleClicked">
 | 
	
		
			
				|  |  | +        <template #default>
 | 
	
		
			
				|  |  | +          <van-tag v-if="data.state == 0" type="success">正常</van-tag>
 | 
	
		
			
				|  |  | +          <van-tag v-else-if="data.state == 1" type="warning">异常</van-tag>
 | 
	
		
			
				|  |  | +          <van-tag v-else type="primary">未知</van-tag>
 | 
	
		
			
				|  |  | +          <van-icon style="margin-left: 10px" :name="expanded ? 'arrow-up' : 'arrow-down'"></van-icon>
 | 
	
		
			
				|  |  | +        </template>
 | 
	
		
			
				|  |  | +      </van-cell>
 | 
	
		
			
				|  |  | +      <van-cell title="所属机构" :value="data.orgName" />
 | 
	
		
			
				|  |  | +      <van-cell
 | 
	
		
			
				|  |  | +        title="诊断时间"
 | 
	
		
			
				|  |  | +        :value="dayjs(data.stateUpdateTime).format('YYYY年M月D日H时m分')"
 | 
	
		
			
				|  |  | +        v-if="data.stateUpdateTime"
 | 
	
		
			
				|  |  | +      />
 | 
	
		
			
				|  |  | +      <van-cell value-class="cell-disklist" v-if="expanded">
 | 
	
		
			
				|  |  | +        <template #default>
 | 
	
		
			
				|  |  | +          <div v-for="(disk, index) in data.diskInfos" :key="disk.id" class="diskInfo">
 | 
	
		
			
				|  |  | +            <div>
 | 
	
		
			
				|  |  | +              {{ renderDiskDesc(disk, index) }}
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +            <van-progress pivot-text="" :percentage="diskProgress(disk)" :color="progressColor(disk)"> </van-progress>
 | 
	
		
			
				|  |  | +          </div>
 | 
	
		
			
				|  |  | +        </template>
 | 
	
		
			
				|  |  | +      </van-cell>
 | 
	
		
			
				|  |  | +    </van-cell-group>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    <!-- <van-row>
 | 
	
		
			
				|  |  | +      <van-col span="24">
 | 
	
		
			
				|  |  | +        <span v-show="expanded" class="cell-channel-item" v-for="channel in data.channels" :key="channel.channelCode">
 | 
	
		
			
				|  |  | +          <van-button
 | 
	
		
			
				|  |  | +            style="width: 20vw"
 | 
	
		
			
				|  |  | +            size="small"
 | 
	
		
			
				|  |  | +            v-if="channel.state == 0"
 | 
	
		
			
				|  |  | +            type="primary"
 | 
	
		
			
				|  |  | +            @click="itemClick(data.hostCode, channel.channelCode)"
 | 
	
		
			
				|  |  | +          >
 | 
	
		
			
				|  |  | +            {{ '通道' + channel.channelCode }}</van-button
 | 
	
		
			
				|  |  | +          >
 | 
	
		
			
				|  |  | +          <van-button
 | 
	
		
			
				|  |  | +            style="width: 20vw"
 | 
	
		
			
				|  |  | +            size="small"
 | 
	
		
			
				|  |  | +            v-else-if="channel.state == 1"
 | 
	
		
			
				|  |  | +            type="warning"
 | 
	
		
			
				|  |  | +            @click="itemClick(data.hostCode, channel.channelCode)"
 | 
	
		
			
				|  |  | +          >
 | 
	
		
			
				|  |  | +            {{ '通道' + channel.channelCode }}</van-button
 | 
	
		
			
				|  |  | +          >
 | 
	
		
			
				|  |  | +          <van-button
 | 
	
		
			
				|  |  | +            style="width: 20vw"
 | 
	
		
			
				|  |  | +            size="small"
 | 
	
		
			
				|  |  | +            v-else-if="channel.state == 2 || channel.state == null"
 | 
	
		
			
				|  |  | +            type="default"
 | 
	
		
			
				|  |  | +            @click="itemClick(data.hostCode, channel.channelCode)"
 | 
	
		
			
				|  |  | +          >
 | 
	
		
			
				|  |  | +            {{ '通道' + channel.channelCode }}</van-button
 | 
	
		
			
				|  |  | +          >
 | 
	
		
			
				|  |  | +        </span>
 | 
	
		
			
				|  |  | +      </van-col>
 | 
	
		
			
				|  |  | +    </van-row> -->
 | 
	
		
			
				|  |  | +  </card>
 | 
	
		
			
				|  |  | +</template>
 | 
	
		
			
				|  |  | +<script>
 | 
	
		
			
				|  |  | +import { mapGetters } from 'vuex'
 | 
	
		
			
				|  |  | +import Card from '@/components/card/index.vue'
 | 
	
		
			
				|  |  | +import dayjs from 'dayjs'
 | 
	
		
			
				|  |  | +export default {
 | 
	
		
			
				|  |  | +  components: { Card },
 | 
	
		
			
				|  |  | +  data() {
 | 
	
		
			
				|  |  | +    return {
 | 
	
		
			
				|  |  | +      expanded: this.defaultExpanded
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  computed: {
 | 
	
		
			
				|  |  | +    ...mapGetters(['orgName', 'orgId', 'dictionary'])
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  watch: {
 | 
	
		
			
				|  |  | +    defaultExpanded: {
 | 
	
		
			
				|  |  | +      immediate: true,
 | 
	
		
			
				|  |  | +      handler: function (v) {
 | 
	
		
			
				|  |  | +        this.expanded = v
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  props: {
 | 
	
		
			
				|  |  | +    data: {},
 | 
	
		
			
				|  |  | +    defaultExpanded: {
 | 
	
		
			
				|  |  | +      type: Boolean,
 | 
	
		
			
				|  |  | +      default: true
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  methods: {
 | 
	
		
			
				|  |  | +    dayjs,
 | 
	
		
			
				|  |  | +    // itemClick(hostCode, channelCode) {
 | 
	
		
			
				|  |  | +    //   this.$router.push(`/iot/videoDiagnosis/detail?hostCode=${hostCode}&channelCode=${channelCode}`)
 | 
	
		
			
				|  |  | +    // },
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    onTitleClicked(){
 | 
	
		
			
				|  |  | +      this.expanded=!this.expanded
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    renderDiskDesc(disk, index) {
 | 
	
		
			
				|  |  | +      return `(${index + 1})${(disk.available / 1024).toFixed(0)}G剩余/(共${(disk.total / 1024).toFixed(0)}G)`
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    diskProgress(disk) {
 | 
	
		
			
				|  |  | +      if (!disk.total) {
 | 
	
		
			
				|  |  | +        return 0
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      return (((disk.total - disk.available) / disk.total) * 100).toFixed(2)
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    progressColor(disk) {
 | 
	
		
			
				|  |  | +      if (!disk.total) {
 | 
	
		
			
				|  |  | +        return 'success'
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +      let rate = this.diskProgress(disk)
 | 
	
		
			
				|  |  | +      if (rate > 90) {
 | 
	
		
			
				|  |  | +        return 'rgb(245,108,108)'
 | 
	
		
			
				|  |  | +      } else if (rate > 80) {
 | 
	
		
			
				|  |  | +        return 'rgb(230,162,60)'
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        return 'rgb(103,194,58)'
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  async created() {},
 | 
	
		
			
				|  |  | +  async mounted() {}
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +</script>
 | 
	
		
			
				|  |  | +<style lang="scss" scoped>
 | 
	
		
			
				|  |  | +.row {
 | 
	
		
			
				|  |  | +  height: 8vw;
 | 
	
		
			
				|  |  | +  display: flex;
 | 
	
		
			
				|  |  | +  flex-direction: row;
 | 
	
		
			
				|  |  | +  align-items: center;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +.cell-disklist {
 | 
	
		
			
				|  |  | +  width: 100%;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  >div{
 | 
	
		
			
				|  |  | +    width: 50%;
 | 
	
		
			
				|  |  | +  display: inline-block;
 | 
	
		
			
				|  |  | +  margin-bottom: 3vw;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  >div:nth-child(odd){
 | 
	
		
			
				|  |  | +    padding-right: 3vw;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  >div:nth-child(even){
 | 
	
		
			
				|  |  | +    padding-left: 3vw;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +</style>
 |