You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
2.2 KiB

<template>
<div class="card device-component">
<div class="card-header">
<h3 class="card-title">
{{device.displayName}}
<i v-if="device.isOnline" class="text-success ion ion-ios-wifi"></i>
<i v-else class="text-danger ion ion-ios-wifi"></i>
</h3>
<div class="card-tools">
<span @click="visible = true" title="操作"><i class="ion ion-md-settings"></i></span>
</div>
</div>
<div class="card-body">
<div class="row">
<div class="col-4 align-self-center">
<img class="device-image" :src="device.ioTProduct.image" style="width:48px;" />
</div>
<div class="col-8 align-self-center">
<div class="row">
<span>
状态:{{status}}
</span>
</div>
<div class="row">
<span>电功:{{electricity}} kW‧h</span>
</div>
<div class="row">
<span>功率:{{power}} W</span>
</div>
</div>
</div>
</div>
<a-modal v-model="visible" :title="device.displayName" :footer="null">
<img style="height:32px;" v-if="status==='开'" v-on:click="execApi(device.number,'/Socket/Off')" src="/platform/images/on.svg" />
<img style="height:32px;" v-else v-on:click="execApi(device.number,'/Socket/On')" src="/platform/images/off.svg" />
</a-modal>
</div>
</template>
<script>
({
props: ['device'],
data: function () {
return {
visible: false
}
},
computed: {
status: function () {
return getIoTDataValue(this.device, '状态') === '1' ? '开' : '关';
},
electricity: function () {
return parseFloat(getIoTDataValue(this.device, '电量') || 0).toFixed(2);
},
power: function () {
return parseFloat(getIoTDataValue(this.device, '功率') || 0).toFixed(2);
}
}
});
</script>