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.
iot/projects/IoTCenter/Views/Home/Node.cshtml

724 lines
54 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

@{
HideBread = true;
}
<br />
<div id="template">
<style>
h3 img {
height: 32px;
margin: -8px 8px -8px -8px;
}
.card-tools img, .card-body img {
height: 32px;
cursor: pointer;
}
.content-wrapper {
/*background-color: lightblue;*/
}
input.switch {
display: none;
}
label.switch {
display: inline-block;
width: 60px;
height: 30px;
border-radius: 30px;
}
label.switch.on {
background-color: green;
}
label.switch.off {
background-color: grey;
}
label.switch.on::before {
content: '';
display: block;
width: 30px;
height: 30px;
border-radius: 30px;
background-color: white;
position: absolute;
left: 0;
}
label.switch.off::after {
content: '';
display: block;
width: 30px;
height: 30px;
border-radius: 30px;
background-color: white;
position: absolute;
right: 0;
}
.ir label input {
display: none;
}
.danger {
color: red;
}
.normal {
color: green;
}
.ptz {
width: 100%;
}
.ptz td {
text-align: center;
height: 46px;
}
.ir td {
width: 11%;
text-align: center;
}
.keyboard {
table-layout: fixed;
}
input[type='range'] {
-webkit-appearance: none;
outline: none;
background: cadetblue;
display: inline-block;
width: 100%;
height: 15px;
margin: 10px 0;
}
input[type='range'].hue {
background: -webkit-linear-gradient(left, #F00 0%, #FF0 16.66%, #0F0 33.33%, #0FF 50%,#00F 66.66%, #F0F 83.33%, #F00 100%);
}
input[type='range'].saturation {
background: -webkit-linear-gradient(left, #fff 0%, green 100%);
}
input[type='range'].brightness {
background: -webkit-linear-gradient(left, #000 0%, #fff 100%);
}
input[type='range']::-webkit-slider-thumb {
-webkit-appearance: none;
background-color: transparent;
height: 30px;
width: 30px;
border: 15px solid rgba(230,230,230,0.8);
border-radius: 50%;
}
canvas {
width: 100%;
height: 215px;
}
.ir label {
margin: 2px 0 2px 2px;
}
.card-body button.btn {
margin-right: 5px;
}
.card {
margin-bottom: 20px;
}
</style>
<template v-if="model">
<div class="row">
<!--场景-->
<div class="col-md-12">
<div class="card">
<div class="card-header">
<h3 class="card-title"><img src="/images/batch.png" />{{model.Name}}</h3>
</div>
<div class="card-body" v-if="model.Scenes.length>0">
<button class="btn btn-success" v-for="scene in GetScenes()" v-on:click="CallScene(scene.Id)">{{scene.Name}}</button>
</div>
</div>
</div>
<!--环境-->
<!--温湿度传感器-->
<template v-for="device in GetDevices('温湿度传感器')">
<div class="col-md-3 col-xs-6">
<div class="card">
<div class="row">
<div class="col-md-4 col-xs-4" style="text-align:center;">
<img src="/images/temperature.png" style="max-width:48px;margin-top:19px;" />
</div>
<div class="col-md-8 col-xs-8" style="height:100px;">
<h3 style="line-height:100px;margin:0;" :class="GetDeviceDataValue(device.Number,'温度','Description')==='适中'?'normal':'danger'">
{{GetDeviceDataValue(device.Number,'温度','Description')}}
</h3>
</div>
</div>
<div class="row">
<span style="display:inline-block;position:absolute;right:20px;bottom:5px;white-space: nowrap;">温度:{{GetDeviceDataValue(device.Number,'温度','Value')}}{{ GetDeviceDataValue(device.Number,'温度','Unit')}}</span>
</div>
</div>
</div>
<div class="col-md-3 col-xs-6">
<div class="card">
<div class="row">
<div class="col-md-4 col-xs-4" style="text-align:center;">
<img src="/images/humidity.png" style="max-width:48px;margin-top:19px;" />
</div>
<div class="col-md-8 col-xs-8" style="height:100px;">
<h3 style="line-height:100px;margin:0;" :class="GetDeviceDataValue(device.Number,'湿度','Description')==='适中'?'normal':'danger'">
{{GetDeviceDataValue(device.Number,'湿度','Description')}}
</h3>
</div>
</div>
<div class="row">
<span style="display:inline-block;position:absolute;right:20px;bottom:5px;white-space: nowrap;">湿度:{{GetDeviceDataValue(device.Number,'湿度','Value')}}{{ GetDeviceDataValue(device.Number,'湿度','Unit')}}</span>
</div>
</div>
</div>
</template>
<!--PM2.5感应器-->
<template v-for="device in GetDevices('PM2.5感应器')">
<div class="col-md-3 col-xs-6">
<div class="card">
<div class="row">
<div class="col-md-4 col-xs-4" style="text-align:center;">
<img src="/images/pm25.png" style="max-width:48px;margin-top:19px;" />
</div>
<div class="col-md-8 col-xs-8" style="height:100px;">
<h3 style="line-height:100px;margin:0;" :class="GetDeviceDataValue(device.Number,'PM2.5','Description')==='污染'?'danger':'normal'">
{{GetDeviceDataValue(device.Number,'PM2.5','Description')}}
</h3>
</div>
</div>
<div class="row">
<span style="display:inline-block;position:absolute;right:20px;bottom:5px;white-space: nowrap;">PM2.5{{GetDeviceDataValue(device.Number,'PM2.5','Value')}}{{ GetDeviceDataValue(device.Number,'PM2.5','Unit')}}</span>
</div>
</div>
</div>
</template>
<!--光强检测器-->
<div class="col-md-3 col-xs-6" v-for="device in GetDevices('光强检测器')" :data-device-number="device.Number">
<div class="card">
<div class="row">
<div class="col-md-4 col-xs-4" style="text-align:center;">
<img src="/images/light.png" style="max-width:48px;margin-top:19px;" />
</div>
<div class="col-md-8 col-xs-8" style="height:100px;">
<h3 style="line-height:100px;margin:0;" :class="GetDeviceDataValue(device.Number,'光照度','Description')==='适中'?'normal':'danger'">
{{GetDeviceDataValue(device.Number,'光照度','Description')}}
</h3>
</div>
</div>
<div class="row">
<span style="display:inline-block;position:absolute;right:20px;bottom:5px;white-space: nowrap;">光照 {{GetDeviceDataValue(device.Number,'光照度','Value')}}{{ GetDeviceDataValue(device.Number,'光照度','Unit')}}</span>
</div>
</div>
</div>
<!--人体感应器-->
<div class="col-md-3 col-xs-6" v-for="device in GetDevices('人体感应器')" :data-device-number="device.Number">
<div class="card">
<div class="row">
<div class="col-md-4 col-xs-4" style="text-align:center;">
<img src="/images/person.png" style="max-width:48px;margin-top:19px;" />
</div>
<div class="col-md-8 col-xs-8" style="height:100px;">
<img src="/images/warn.png" style="width:36px;height:36px;margin:32px 0 0 0;" v-if="GetDeviceDataValue(device.Number,'状态','Value')==='警报'" />
<h3 style="line-height:100px;margin:0;" class="normal" v-else>正常</h3>
</div>
</div>
<div class="row">
<span style="display:inline-block;position:absolute;right:20px;bottom:5px;white-space: nowrap;">红外 {{GetDeviceDataValue(device.Number,'状态','Value') }}</span>
</div>
</div>
</div>
<!--烟雾报警器-->
<div class="col-md-3 col-xs-6" v-for="device in GetDevices('烟雾报警器')" :data-device-number="device.Number">
<div class="card">
<div class="row">
<div class="col-md-4 col-xs-4" style="text-align:center;">
<img src="/images/smoke.png" style="max-width:48px;margin-top:19px;" />
</div>
<div class="col-md-8 col-xs-8" style="height:100px;">
<img src="/images/warn.png" style="width:36px;height:36px;margin:32px 0 0 0;" v-if="GetDeviceDataValue(device.Number,'状态','Value')==='警报'" />
<h3 style="line-height:100px;margin:0;" class="normal" v-else>正常</h3>
</div>
</div>
<div class="row">
<span style="display:inline-block;position:absolute;right:20px;bottom:5px;white-space: nowrap;">烟雾 {{GetDeviceDataValue(device.Number,'状态','Value') }}</span>
</div>
</div>
</div>
</div>
<div class="row">
<!--摄像头-->
<template v-if="HasDevices('摄像头')">
<div class="col-md-6">
<div class="row">
<div class="col-md-12">
<div class="card">
<select class="form-control" id="camera" v-on:change="CameraSelected" style="height:40px;">
<option v-for="c in GetDevices('摄像头')" :value="c.Number">{{c.DisplayName||c.Name}}</option>
</select>
<div style="width:100%;height:180px;margin:0;padding:0;background:#000;">
<video id="liveVideo" class="video" controls autoplay style="width:100%;max-width:100%;height:100%;"></video>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="row" id="ptz">
<div class="col-md-12">
<div class="card" style="height:220px;">
<div class="card-header">
<h3 class="card-title"><img src="/images/ptz.png" />云台操作</h3>
</div>
<div class="card-body" style="height:178px;">
<table class="ptz" style="width:100%;">
<tr>
<td></td>
<td></td>
<td><img class="ajax camera" data-cmd="Up" :src="iotCenter+'/images/up.png'" /></td>
<td></td>
<td></td>
</tr>
<tr>
<td><img class="ajax camera" data-cmd="Zoomin" :src="iotCenter+'/images/zoomin.png'" /></td>
<td><img class="ajax camera" data-cmd="Left" :src="iotCenter+'/images/left.png'" /></td>
<td><img class="ajax camera" data-cmd="Stop" :src="iotCenter+'/images/stop.png'" /></td>
<td><img class="ajax camera" data-cmd="Right" :src="iotCenter+'/images/right.png'" /></td>
<td><img class="ajax camera" data-cmd="Zoomout" :src="iotCenter+'/images/zoomout.png'" /></td>
</tr>
<tr>
<td></td>
<td></td>
<td><img class="ajax camera" data-cmd="Down" :src="iotCenter+'/images/down.png'" /></td>
<td></td>
<td></td>
</tr>
</table>
</div>
</div>
</div>
</div>
</div>
</template>
<!--调色灯-->
<div class="col-md-6" v-for="device in GetDevices('调色灯')">
<div class="row">
<div class="col-md-12">
<div class="card btns" style="height:220px;">
<div class="card-header">
<h3 class="card-title">
<img src="/images/light.png" />{{device.DisplayName||device.Name}}
</h3>
<div class="card-tools">
<img v-if="GetDataValue(device.Number,'状态')=='开'" v-on:click="CallApi(device.Number,'/ColorLight/Off')" src="/images/on.png" />
<img v-if="GetDataValue(device.Number,'状态')=='关'" v-on:click="CallApi(device.Number,'/ColorLight/On')" src="/images/off.png" />
</div>
</div>
<div class="card-body">
<form method="get" action="/App/ExecApi">
<input type="hidden" name="Number" :value="device.Number" />
<input type="hidden" name="Method" value="/ColorLight/SetColor" />
<div class="row">
<div class="col-md-3 col-xs-4">
<label class="btn">色调</label>
</div>
<div class="col-md-9 col-xs-8">
<input v-on:change="AjaxSubmit($event,device.Number,'色调')" type="range" min="0" step="1" max="255" name="Hue" class="hue" :value="GetDataValue(device.Number,'色调')" />
</div>
</div>
<div class="row">
<div class="col-md-3 col-xs-4">
<label class="btn">饱和度</label>
</div>
<div class="col-md-9 col-xs-8">
<input v-on:change="AjaxSubmit($event,device.Number,'饱和度')" type="range" min="0" step="1" max="254" name="Saturation" class="saturation" :value="GetDataValue(device.Number,'饱和度')" />
</div>
</div>
</form>
<form method="get" action="/App/ExecApi">
<input type="hidden" name="Number" :value="device.Number" />
<input type="hidden" name="Method" value="/ColorLight/SetBrightness" />
<div class="row">
<div class="col-md-3 col-xs-4">
<label class="btn">亮度</label>
</div>
<div class="col-md-9 col-xs-8">
<input v-on:change="AjaxSubmit($event,device.Number,'亮度')" type="range" min="0" step="1" max="254" name="Brightness" class="brightness" :value="GetDataValue(device.Number,'亮度')" />
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<!--红外转发器-->
<div class="col-md-6" v-for="device in GetDevices('红外转发器')">
<div class="row">
<div class="col-md-12">
<div class="card" style="height:220px;">
<div class="card-header" style="padding-bottom:0;">
<h3 class="card-title">
<img src="/images/control.png" />
{{device.DisplayName||device.Name}}
</h3>
<ul class="nav nav-tabs card-tools" role="tablist">
<li class="nav-item"><a class="nav-link active" :href="'#tab_1'+device.Number" data-toggle="tab">空调</a></li>
<li class="nav-item"><a class="nav-link" :href="'#tab_2'+device.Number" data-toggle="tab">电视</a></li>
<li class="nav-item"><a class="nav-link" :href="'#tab_3'+device.Number" data-toggle="tab">图影仪</a></li>
<li class="nav-item"><a class="nav-link" :href="'#tab_4'+device.Number" data-toggle="tab">自定义</a></li>
</ul>
</div>
<div class="card-body">
<div class="tab-content" style="min-height:176px;">
<div class="tab-pane active" :id="'tab_1'+device.Number">
<form class="device ir type1" method="get" action="/App/ExecApi">
<input type="hidden" name="Number" :value="device.Number" />
<input type="hidden" name="Method" value="/Ir/Send" />
<input type="hidden" name="Type" value="1" />
<input type="hidden" name="Code" :value="GetDataValue(device.Number,'按键')" />
<div class="row">
<div class="col-md-12">
<label class="btn">电源</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="power" type="radio" value="2" v-model="getCode1(GetDataValue(device.Number,'按键')).power" />开</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="power" type="radio" value="1" v-model="getCode1(GetDataValue(device.Number,'按键')).power" />关</label>
<label class="btn">模式</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="pattern" type="radio" value="0" v-model="getCode1(GetDataValue(device.Number,'按键')).pattern" />制冷</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="pattern" type="radio" value="120" v-model="getCode1(GetDataValue(device.Number,'按键')).pattern" />自动</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="pattern" type="radio" value="240" v-model="getCode1(GetDataValue(device.Number,'按键')).pattern" />制热</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="pattern" type="radio" value="360" v-model="getCode1(GetDataValue(device.Number,'按键')).pattern" />抽湿</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="pattern" type="radio" value="480" v-model="getCode1(GetDataValue(device.Number,'按键')).pattern" />送风</label>
</div>
</div>
<div class="row">
<div class="col-md-2">
<span class="btn">温度</span>
</div>
<div class="col-md-10">
<input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="temperature" type="range" step="1" min="1" max="15" :value="getCode1(GetDataValue(device.Number,'按键')).temperature" />
</div>
</div>
<div class="row">
<div class="col-md-12">
<lable class="btn">风向</lable>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="direction" type="radio" value="0" v-model="getCode1(GetDataValue(device.Number,'按键')).direction" />任意</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="direction" type="radio" value="60" v-model="getCode1(GetDataValue(device.Number,'按键')).direction" />手动</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="direction" type="radio" value="75" v-model="getCode1(GetDataValue(device.Number,'按键')).direction" />自动</label>
<lable class="btn">风量</lable>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="wind" type="radio" value="0" v-model="getCode1(GetDataValue(device.Number,'按键')).wind" />自动</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="wind" type="radio" value="15" v-model="getCode1(GetDataValue(device.Number,'按键')).wind" />高</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="wind" type="radio" value="30" v-model="getCode1(GetDataValue(device.Number,'按键')).wind" />中</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="wind" type="radio" value="45" v-model="getCode1(GetDataValue(device.Number,'按键')).wind" />低</label>
</div>
</div>
</form>
</div>
<div class="tab-pane" :id="'tab_2'+device.Number">
<form class="device ir type2" method="get" action="/App/ExecApi">
<input type="hidden" name="Number" :value="device.Number" />
<input type="hidden" name="Method" value="/Ir/Send" />
<input type="hidden" name="Type" value="2" />
<div class="row">
<div class="col-md-12 col-xs-12">
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="1" />POWR</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="2" />AV</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="3" />1</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="4" />2</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="5" />3</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="6" />4</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="7" />5</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="8" />6</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="9" />7</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="10" />8</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="11" />9</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="12" />0</label>
</div>
</div>
<div class="row">
<div class="col-md-12 col-xs-12">
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="13" />返回</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="14" />退出</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="15" />静音</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="16" />菜单</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="17" />音量+</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="18" />音量-</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="19" />上</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="20" />下</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="21" />左</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="22" />右</label>
</div>
</div>
<div class="row">
<div class="col-md-12 col-xs-12">
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="26" />快退</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="27" />播放</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="28" />快进</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="29" />录像</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="30" />暂停</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="31" />停止</label>
</div>
</div>
<div class="row">
<div class="col-md-12 col-xs-12">
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="23" />OK</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="24" />ch+</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="25" />ch-</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="32" />A</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="33" />B</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="34" />C</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="35" />D</label>
</div>
</div>
</form>
</div>
<div class="tab-pane" :id="'tab_3'+device.Number">
<form class="device ir type3" method="get" action="/App/ExecApi">
<input type="hidden" name="Number" :value="device.Number" />
<input type="hidden" name="Method" value="/Ir/Send" />
<input type="hidden" name="Type" value="3" />
<div class="row">
<div class="col-md-12 col-xs-12">
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="1" />PW-ON</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="2" />PW-OFF</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="3" />1</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="4" />2</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="5" />3</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="6" />4</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="7" />5</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="8" />6</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="9" />7</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="10" />8</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="11" />9</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="12" />0</label>
</div>
</div>
<div class="row">
<div class="col-md-12 col-xs-12">
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="13" />CLEAR</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="14" />退出</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="15" />静音</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="16" />菜单</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="17" />音量+</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="18" />音量-</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="19" />上</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="20" />下</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="21" />左</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="22" />右</label>
</div>
</div>
<div class="row">
<div class="col-md-12 col-xs-12">
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="26" />鼠标L</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="27" />节能</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="28" />鼠标R</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="29" />局部放大+</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="30" />局部放大-</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="31" />冻结</label>
</div>
</div>
<div class="row">
<div class="col-md-12 col-xs-12">
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="23" />ENTER</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="24" />page+</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="25" />page-</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="32" />梯形修正</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="33" />图像</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="34" />ID SET</label>
<label class="btn btn-sm btn-success"><input v-on:click="SendCode1($event)" v-on:change="SendCode1($event)" name="Code" type="radio" value="35" />自动调整</label>
</div>
</div>
</form>
</div>
<div class="tab-pane" :id="'tab_4'+device.Number">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!--电器-->
<div class="row">
<!--批量操作-->
<div class="col-md-12" v-if="model.Scenes&&model.Scenes.length>0">
<div class="card">
<div class="card-header">
<h3 class="card-title"><img src="/images/batch.png" />批量操作</h3>
<div class="card-tools">
<button class="btn btn-sm btn-success ajax NodePowerOn" :data-node-number="model.Number">一键开</button>
<button class="btn btn-sm btn-success ajax NodePowerOff" :data-node-number="model.Number">一键关</button>
</div>
</div>
<div class="card-body">
<button class="btn btn-success margin ajax SwitchOn">开灯</button>
<button class="btn btn-success margin ajax SwitchOff">关灯</button>
<button class="btn btn-success margin ajax SwitchOn">开关开</button>
<button class="btn btn-success margin ajax SwitchOff">开关关</button>
<button class="btn btn-success margin ajax SocketOn">插座开</button>
<button class="btn btn-success margin ajax SocketOff">插座关</button>
</div>
</div>
</div>
<div class="col-md-3 col-xs-6 control" v-for="device in GetDevices('一路开关')" :data-device-number="device.Number">
<div class="card">
<div class="card-header">
<h3 class="card-title"><img src="/images/switch1.png" />{{device.DisplayName||device.Name}}</h3>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-12">
<div class="row" style="text-align:center;padding:3px 0;justify-content:center;">
<img v-if="GetDataValue(device.Number,'L1状态')=='开'" v-on:click="CallApi(device.Number,'/Switch/L1Off')" src="/images/on.png" />
<img v-if="GetDataValue(device.Number,'L1状态')=='关'" v-on:click="CallApi(device.Number,'/Switch/L1On')" src="/images/off.png" />
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-3 col-xs-6 control" v-for="device in GetDevices('二路开关')" :data-device-number="device.Number">
<div class="card">
<div class="card-header">
<h3 class="card-title"><img src="/images/switch2.png" />{{device.DisplayName||device.Name}}</h3>
<div class="card-tools">
<button class="btn btn-sm btn-success" v-on:click="CallApi(device.Number,'/Switch3/On')" :data-node-number="model.Number">一键开</button>
<button class="btn btn-sm btn-success" v-on:click="CallApi(device.Number,'/Switch3/Off')" :data-node-number="model.Number">一键关</button>
</div>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-12">
<div class="row" style="text-align:center;padding:3px 0;justify-content:center;">
<img v-if="GetDataValue(device.Number,'L1状态')=='开'" v-on:click="CallApi(device.Number,'/Switch2/L1Off')" src="/images/on.png" />
<img v-if="GetDataValue(device.Number,'L1状态')=='关'" v-on:click="CallApi(device.Number,'/Switch2/L1On')" src="/images/off.png" />
<img v-if="GetDataValue(device.Number,'L2状态')=='开'" v-on:click="CallApi(device.Number,'/Switch2/L2Off')" src="/images/on.png" />
<img v-if="GetDataValue(device.Number,'L2状态')=='关'" v-on:click="CallApi(device.Number,'/Switch2/L2On')" src="/images/off.png" />
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-3 col-xs-6 control" v-for="device in GetDevices('三路开关')" :data-device-number="device.Number">
<div class="card">
<div class="card-header">
<h3 class="card-title"><img src="/images/switch3.png" />{{device.DisplayName||device.Name}}</h3>
<div class="card-tools">
<button class="btn btn-sm btn-success" v-on:click="CallApi(device.Number,'/Switch3/On')" :data-node-number="model.Number">一键开</button>
<button class="btn btn-sm btn-success" v-on:click="CallApi(device.Number,'/Switch3/Off')" :data-node-number="model.Number">一键关</button>
</div>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-12">
<div class="row" style="text-align:center;padding:3px 0;justify-content:center;">
<img v-if="GetDataValue(device.Number,'L1状态')=='开'" v-on:click="CallApi(device.Number,'/Switch3/L1Off')" src="/images/on.png" />
<img v-if="GetDataValue(device.Number,'L1状态')=='关'" v-on:click="CallApi(device.Number,'/Switch3/L1On')" src="/images/off.png" />
<img v-if="GetDataValue(device.Number,'L2状态')=='开'" v-on:click="CallApi(device.Number,'/Switch3/L2Off')" src="/images/on.png" />
<img v-if="GetDataValue(device.Number,'L2状态')=='关'" v-on:click="CallApi(device.Number,'/Switch3/L2On')" src="/images/off.png" />
<img v-if="GetDataValue(device.Number,'L3状态')=='开'" v-on:click="CallApi(device.Number,'/Switch3/L3Off')" src="/images/on.png" />
<img v-if="GetDataValue(device.Number,'L3状态')=='关'" v-on:click="CallApi(device.Number,'/Switch3/L3On')" src="/images/off.png" />
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-3 col-xs-6 control" v-for="device in GetDevices('插座')" :data-device-number="device.Number">
<div class="card">
<div class="card-header">
<h3 class="card-title"><img src="/images/socket.png" />{{device.DisplayName||device.Name}}</h3>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-12">
<div class="row" style="text-align:center;padding:3px 0;justify-content:center;">
<img v-if="GetDataValue(device.Number,'状态')==='开'" v-on:click="CallApi(device.Number,'/Socket/Off')" src="/images/on.png" :data-status="GetDataValue(device.Number,'状态')" />
<img v-if="GetDataValue(device.Number,'状态')==='关'" v-on:click="CallApi(device.Number,'/Socket/On')" src="/images/off.png" :data-status="GetDataValue(device.Number,'状态')" />
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-3 col-xs-6 control" v-for="device in GetDevices('智能插座')" :data-device-number="device.Number">
<div class="card">
<div class="card-header">
<h3 class="card-title"><img src="/images/socket.png" />{{device.DisplayName||device.Name}}</h3>
<div class="card-tools">
{{parseFloat(GetDataValue(device.Number,'电量')).toFixed(2)}} kWh
</div>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-12">
<div class="row" style="text-align:center;padding:3px 0;justify-content:center;">
<img v-if="GetDataValue(device.Number,'状态')==='开'" v-on:click="CallApi(device.Number,'/Socket/Off')" src="/images/on.png" :data-status="GetDataValue(device.Number,'状态')" />
<img v-if="GetDataValue(device.Number,'状态')==='关'" v-on:click="CallApi(device.Number,'/Socket/On')" src="/images/off.png" :data-status="GetDataValue(device.Number,'状态')" />
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-3 col-xs-6 control" v-for="device in GetDevices('窗帘电机')" :data-device-number="device.Number">
<div class="card">
<div class="card-header">
<h3 class="card-title"><img src="/images/curtain.png" />{{device.DisplayName||device.Name}}</h3>
<div class="card-tools">
{{GetDataValue(device.Number,'状态')}}
</div>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-12">
<div class="row" style="text-align:center;padding:3px 0;justify-content:center;">
<img style="height:32px;" v-on:click="CallApi(device.Number,'/Curtain/On')" src="/images/left.png" />
<img style="height:32px;" v-on:click="CallApi(device.Number,'/Curtain/Stop')" src="/images/stop.png" />
<img style="height:32px;" v-on:click="CallApi(device.Number,'/Curtain/Off')" src="/images/right.png" />
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6" v-for="device in GetChartDevices()">
<div class="card" style="height:306px;">
<div class="card-header">
<div class="card-title">
{{device.DisplayName}}
</div>
</div>
<div class="card-body">
<canvas class="chart" :id="device.Number"></canvas>
</div>
</div>
</div>
</div>
</template>
</div>
@section scripts{
<script src="/js/node.js"></script>
<script>
var debug = true;
loadData();
</script>
}