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.
214 lines
13 KiB
214 lines
13 KiB
<div class="page js_show" v-if="node">
|
|
<div class="weui-header">
|
|
<router-link to="/pages/iot/nodes" class="weui-header-left">
|
|
<i class="ion ion-ios-arrow-back"></i>
|
|
</router-link>
|
|
<h1 class="weui-header-title">{{node.name}}</h1>
|
|
</div>
|
|
<div class="main">
|
|
<!--环境-->
|
|
<div class="row" style="background-color: #35A9FE;padding:5px 0;">
|
|
<!--光强检测器-->
|
|
<div v-for="device in getDevices('光强检测器')" class="col-3" style="padding:5px">
|
|
<template>
|
|
<div class="light align-self-center" style="box-sizing:border-box;">
|
|
<div class="row" style="height:100%;margin: 0 auto;padding:0px;">
|
|
<div class="col-12 align-self-center " style="text-align:center; padding-bottom:15px;">
|
|
<img class="mh-100" src="/images/white-light.svg" style="width:24px;" />
|
|
</div>
|
|
<div class="col-12 align-self-center" style="line-height:14px;text-align:center;font-size:12px;padding:5px;color: #ffffff;">
|
|
<span style="display: block; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; word-break: break-all;">{{getDeviceData(device,'光照度')}}</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
({
|
|
props: ['device']
|
|
});
|
|
</script>
|
|
</div>
|
|
<!--温湿度传感器-->
|
|
<div v-for="device in getDevices('温湿度传感器')" class="col-3" style="padding:5px">
|
|
<template>
|
|
<div class="light align-self-center" style="box-sizing:border-box;">
|
|
<div class="row" style="height:100%;margin: 0 auto; padding:0px;">
|
|
<div class="col-12 align-self-center " style="text-align:center; padding-bottom:15px;">
|
|
<img class="mh-100" src="/images/white-humiture.svg" style="width:24px" />
|
|
</div>
|
|
<div class="col-12 align-self-center" style="line-height:14px;text-align:center;font-size:12px;padding:5px;color: #ffffff;">
|
|
<span>
|
|
{{getDeviceData(device,'温度')}}
|
|
</span>
|
|
<span>
|
|
{{getDeviceData(device,'湿度')}}
|
|
</span>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</template>
|
|
<script>
|
|
({
|
|
props: ['device']
|
|
});
|
|
</script>
|
|
</div>
|
|
<!--烟雾报警器-->
|
|
<!--<div v-for="device in getDevices('烟雾报警器')" class="col" style="min-width:320px;">
|
|
<iot-smoke v-bind:device="device"></iot-smoke>
|
|
</div>-->
|
|
<!--人体感应器-->
|
|
<div v-for="device in getDevices('人体感应器')" class="col-3" style="padding:5px">
|
|
<template>
|
|
<div class="light align-self-center" style="box-sizing:border-box;">
|
|
<div class="row" style="height:100%;margin: 0 auto;padding:0px;">
|
|
<div class="col-12 align-self-center " style="text-align:center; padding-bottom:15px;">
|
|
<img src="/images/white-person.svg" class="mh-100" style="width:24px;" />
|
|
</div>
|
|
<div class="col-12 align-self-center" style="line-height:14px;text-align:center;font-size:12px;padding:5px;color: #ffffff;">
|
|
<span>
|
|
<span v-if="getDeviceDataValue(device,'状态')==='正常'">
|
|
{{getDeviceDataValue(device,'状态')}}
|
|
</span>
|
|
<span v-else>
|
|
{{getDeviceDataValue(device,'状态')}}
|
|
</span>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
({
|
|
props: ['device']
|
|
});
|
|
</script>
|
|
</div>
|
|
</div>
|
|
<!--场景-->
|
|
<div class="row" v-if="scenes.length">
|
|
<div class="col col-md-12" style="padding:5px 5px 0">
|
|
<div class="card" style="margin: 5px;">
|
|
<div class="card-header" style="background-color: #fff;border-bottom-color: #fff; font-size: 14px;padding:10px 15px;">场景</div>
|
|
<div class="card-body" style="padding:0 0 15px 0">
|
|
<div class="row">
|
|
<div class="col-md-2 col-sm-4 col-4 p-1" v-for="scene in scenes" v-on:click="execScene(scene.id)">
|
|
<div class="weui-grid__icon">
|
|
<img class="weui-tabbar__icon" :src="scene.image.replace('.png', '.svg')" style="width:48px;margin: auto auto" />
|
|
</div>
|
|
<p class="weui-grid__label" style="text-align: center;margin-bottom: 5px;">{{scene.name}}</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!--控制-->
|
|
<div class="row" style="padding:0px 5px 0">
|
|
<!--调色灯-->
|
|
<div v-for="device in getDevices('调色灯')" class="col" style="padding:5px">
|
|
<iot-color-light v-bind:device="device"></iot-color-light>
|
|
</div>
|
|
<!--窗帘电机-->
|
|
<div v-for="device in getDevices('窗帘电机')" class="col" style="padding:5px">
|
|
<iot-curtain v-bind:device="device"></iot-curtain>
|
|
</div>
|
|
<!--一路开关-->
|
|
<div v-for="device in getDevices('一路开关')" class="col-6" style="padding:5px">
|
|
<template>
|
|
<div class="card switch" style="box-sizing:border-box;height:130px;">
|
|
<div class="card-header" style="background-color: #fff;border-bottom-color: #fff; font-size: 14px;padding:10px 15px;">
|
|
{{device.displayName}}
|
|
<span class="float-right text-success" v-if="device.isOnline"><i class="ion ion-ios-wifi"></i></span>
|
|
<span class="float-right text-danger" v-else><i class="ion ion-ios-wifi"></i></span>
|
|
</div>
|
|
<div class="card-body" style="padding:0px">
|
|
<div class="row" style="height:100%;margin: 0 auto;">
|
|
<div class="col-7 align-self-center">
|
|
<img class="mh-100" src="/images/switch1.svg" style="width:32px;" />
|
|
</div>
|
|
<div class="col-5 align-self-center">
|
|
<div class="row" style="line-height:28px; text-align: right;">
|
|
<img style="height:32px;width:32px;padding:5px;border:solid #cccccc 1px;border-radius:50%;margin-left: 0px;" v-if="getDeviceDataValue(device,'状态')=='开'" v-on:click="execApi(device.number,'/Switch/Off')" src="/images/on.svg" />
|
|
<img style="height:32px;width:32px;padding:5px;border:solid #cccccc 1px;border-radius:50%;margin-left: 0px;" v-if="getDeviceDataValue(device,'状态')=='关'" v-on:click="execApi(device.number,'/Switch/On')" src="/images/off.svg" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
({
|
|
props: ['device']
|
|
});
|
|
</script>
|
|
</div>
|
|
|
|
<!--三路开关-->
|
|
<div v-for="device in getDevices('三路开关')" class="col" style="padding:5px">
|
|
<iot-switch3 v-bind:device="device"></iot-switch3>
|
|
</div>
|
|
<!--智能插座-->
|
|
<div v-for="device in getDevices('智能插座')" class="col-6" style="padding:5px">
|
|
<template>
|
|
<div class="card socket" style="box-sizing:border-box;height:130px;">
|
|
<div class="card-header" style="background-color: #fff;border-bottom-color: #fff; font-size: 14px;padding:10px 15px;">
|
|
{{device.displayName}}
|
|
<span class="float-right text-success" v-if="device.isOnline"><i class="ion ion-ios-wifi"></i></span>
|
|
<span class="float-right text-danger" v-else><i class="ion ion-ios-wifi"></i></span>
|
|
</div>
|
|
<div class="card-body"style="padding:0px">
|
|
<div class="row" style="height:50%;margin: 0 auto;">
|
|
<div class="col-7 align-self-center">
|
|
<img class="mh-100" src="/images/socket.svg" style="width:32px;" />
|
|
</div>
|
|
<div class="col-5 align-self-center">
|
|
<div class="row" style="line-height:28px;">
|
|
<img style="height:32px;width:32px;padding:5px;border:solid #cccccc 1px;border-radius:50%;margin-left: 0px;" v-if="getDeviceDataValue(device,'状态')==='开'" v-on:click="execApi(device.number,'/Socket/Off')" :src="config.apigateway+'/IoTCenter/images/on.png'" />
|
|
<img style="height:32px;width:32px;padding:5px;border:solid #cccccc 1px;border-radius:50%;margin-left: 0px;" v-else="getDeviceDataValue(device,'状态')==='关'" v-on:click="execApi(device.number,'/Socket/On')" :src="config.apigateway+'/IoTCenter/images/off.png'" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row" style="margin: 0 auto;">
|
|
<span class="badge badge-info" style="line-height:14px;margin: 10px 0px 5px 15px;color: #666;background-color: #f5f5f5;font-weight: normal;" v-if="getDeviceDataValue(device, '电量')">{{parseFloat(getDeviceDataValue(device, '电量')||0).toFixed(2)}} kW‧h</span>
|
|
<span class="badge badge-info" style="line-height:14px;margin: 10px 0px 5px 15px;color: #666;background-color: #f5f5f5;font-weight: normal;" >{{parseFloat(getDeviceDataValue(device, '功率')||0).toFixed(2)}} W</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
<script>
|
|
({
|
|
props: ['device'],
|
|
});
|
|
</script>
|
|
</div>
|
|
</div>
|
|
<!--<div class="col col-md-12 my-2 px-3">遥控器</div>-->
|
|
<div class="row">
|
|
<!--摄像头-->
|
|
<div v-for="device in getDevices('摄像头')" class="col" style="min-width:320px;">
|
|
<iot-camera v-bind:device="device"></iot-camera>
|
|
</div>
|
|
<!--红外转发器-->
|
|
<div v-for="device in getDevices('红外转发器')" class="col" style="min-width:320px;">
|
|
<iot-ir v-bind:device="device"></iot-ir>
|
|
</div>
|
|
<!--串口控制器-->
|
|
<div v-if="getShowFlag('串口控制器')" v-for="device in getDevices('串口控制器')" class="col" style="min-width:320px;">
|
|
<iot-serial-port v-bind:device="device"></iot-serial-port>
|
|
</div>
|
|
</div>
|
|
<!--test-->
|
|
<!--<hr />
|
|
<div class="row" v-if="node">
|
|
<div v-for="device in node.devices" class="col-lg-3 col col-md-4 col-sm-6">
|
|
<div class="weui-grid__icon">
|
|
<img :src="'/IoTCenter'+device.product.image" />
|
|
</div>
|
|
<p class="weui-grid__label">{{device.displayName}}</p>
|
|
</div>
|
|
</div>-->
|
|
</div>
|
|
</div> |