1.0.0-rc.103

Former-commit-id: 5dd5c2fccb4e2a0a396cabe925d361d104e272fc
TangShanKaiPing
wanggang 6 years ago
parent 754b468358
commit 77438e6f7d

@ -417,15 +417,14 @@ namespace IoTCenter.Controllers
/************************************************************/
public IActionResult AllPowerOn(string connectionId, string[] nodes)
public IActionResult Power(string token,string connectionId, string method,string[] numbers)
{
this.Power(connectionId, nodes, "On", o => o.Name.Contains("开关") || o.Name.Contains("插座"));
return Json(ApiResponse.AsyncSuccess());
}
public IActionResult AllPowerOff(string connectionId, string[] nodes)
{
this.Power(connectionId, nodes, "Off", o => o.Name.Contains("开关") || o.Name.Contains("插座"));
var userName = this.GetUserName(token);
if (string.IsNullOrEmpty(userName))
{
return Forbid();
}
this.Power(connectionId, numbers, method, o => o.Name.Contains("开关") || o.Name.Contains("插座") || o.Name.Contains("灯"));
return Json(ApiResponse.AsyncSuccess());
}

@ -3,10 +3,27 @@
}
<br />
<div class="row">
<div class="col-md-12" v-if="model.length">
<div class="card">
<div class="card-header">
<div class="card-title">
<input type="checkbox" id="All" class="checkall" v-on:change="SelectNode($event)" />
<label for="All" class="btn btn-sm btn-info" style="height:31px;margin-bottom:0;">全选</label>
<button class="btn btn-sm btn-info uncheck" v-on:click="SelectNode($event)">反选</button>
</div>
<div class="card-tools">
<button class="btn btn-success" v-on:click="Power('On')">开</button>
<button class="btn btn-success" v-on:click="Power('Off')">关</button>
</div>
</div>
</div>
</div>
<div class="col-md-2 col-sm-4 col-xs-6" v-for="item in GetNodes()">
<div class="card">
<div class="card-header">
<h3 class="card-title">{{item.Name}}</h3>
<h3 class="card-title">
<label style="font-weight:normal;"><input type="checkbox" name="numbers[]" class="item" :value="item.Number" v-on:change="SelectNode($event)">{{item.Name}}</label>
</h3>
<div class="card-tools"><span data-toggle="tooltip" class="badge bg-green">{{item.DeviceCount}}</span></div>
</div>
<a class="card-body" :href="'/Home/Node/?number='+item.Number" style="display:block;text-align:center;">

@ -1,5 +1,5 @@
{
"version": "1.0.0-rc.102",
"version": "1.0.0-rc.103",
"Logging": {
"LogLevel": {
"Default": "Warning",

@ -15,6 +15,19 @@ data = function data() {
methods = {
GetNodes() {
return Enumerable.from(this.model).orderBy('o=>o.DisplayOrder').toArray();
},
SelectNode: Select,
Power(method) {
var numbers = [];
$('.item:checked').each(function () {
numbers.push($(this).val());
});
if (numbers.length) {
ajax('/App/Power', { token: token, connectionId: connectionId, method: method, numbers: numbers }, 'post');
}
else {
toastr.error('没有选中任何项');
}
}
};
function onMessage(method, json, to, from) {

@ -604,4 +604,32 @@ $(document).on('click', '.segmented .button', function (e) {
current.parent().find('.button-active').removeClass('button-active');
current.addClass('button-active');
}
});
});
function Select(e) {
var checkbox = $(e.target);
if (checkbox.hasClass('checkall')) {
if (e.target.checked) {
$('input.item:visible').not(':checked').prop("checked", true);
}
else {
$('input.item:visible').filter(':checked').prop("checked", false);
}
}
else if (checkbox.hasClass('uncheck')) {
$('input.item:visible').each(function () {
$(this).prop("checked", !$(this).prop("checked")).change();
});
}
var parent = $('input.checkall');
if ($('input.item').not(':checked').length === 0) {
parent.prop("indeterminate", false);
parent.prop("checked", true);
}
else if ($('input.item').filter(':checked').length === 0) {
parent.prop("indeterminate", false);
parent.prop("checked", false);
}
else {
parent.prop("indeterminate", true);
}
}

@ -33,40 +33,18 @@ methods = {
}
return null;
},
SelectDevice(e) {
var checkbox = $(e.target);
if (checkbox.hasClass('checkall')) {
if (e.target.checked) {
$('input.item').not(':checked').prop("checked", true);
}
else {
$('input.item').filter(':checked').prop("checked", false);
}
}
else if (checkbox.hasClass('uncheck')) {
$('input.item').each(function () {
$(this).prop("checked", !$(this).prop("checked")).change();
});
}
var parent = $('input.checkall');
if ($('input.item').not(':checked').length === 0) {
parent.prop("indeterminate", false);
parent.prop("checked", true);
}
else if ($('input.item').filter(':checked').length === 0) {
parent.prop("indeterminate", false);
parent.prop("checked", false);
}
else {
parent.prop("indeterminate", true);
}
},
SelectDevice:Select,
CallApiAll(method) {
var numbers = [];
$('.item:checked').each(function () {
numbers.push($(this).val());
});
ajax('/App/ExecApiAll', { token: token, connectionId: connectionId, method: vm.model.Path + method, numbers: numbers }, 'post');
if (numbers.length) {
ajax('/App/ExecApiAll', { token: token, connectionId: connectionId, method: vm.model.Path + method, numbers: numbers }, 'post');
}
else {
toastr.error('没有选中任何项');
}
}
};
function onMessage(method, json, to, from) {

@ -28,18 +28,37 @@
search-container=".search-list"
search-in=".item-title"></f7-searchbar>
</f7-navbar>
<div class="col-100" v-if="model.length">
<div class="card">
<div class="card-header">
<div>
<input type="checkbox" id="All" class="checkall" v-on:change="SelectNode($event)" />
<label for="All" class="button button-raised" style="display:inline-block;">全选</label>
<label class="button button-raised uncheck" style="display:inline-block;" v-on:click="SelectNode($event)">反选</label>
</div>
<div class="row">
<label class="button button-raised" v-on:click="Power('On')"></label>
<label class="button button-raised" v-on:click="Power('Off')"></label>
</div>
</div>
</div>
</div>
<f7-list class="searchbar-not-found">
<f7-list-item title="没有匹配的结果"></f7-list-item>
</f7-list>
<f7-list class="search-list searchbar-found">
<li style="width:33.3%;display:inline-block;" v-if="model" v-for="n in GetNodes()">
<a :href="'node.html?number='+n.Number" class="card external" style="display:block;text-align:center;">
<li style="width:33.3%;display:inline-block;" v-if="model" v-for="item in GetNodes()">
<div class="card" >
<div class="card-header">
<span class="item-title">{{n.Name}}</span>
<span class="right"><span class="badge color-green">{{n.DeviceCount}}</span></span>
<h3 class="card-title">
<label style="font-weight:normal;"><input type="checkbox" name="numbers[]" class="item" :value="item.Number" v-on:change="SelectNode($event)"><span class="item-title">{{item.Name}}</span></label>
</h3>
<span class="right"><span class="badge color-green">{{item.DeviceCount}}</span></span>
</div>
<img style="margin:0 auto;max-width:64px;" :src="server+'/IoTCenter'+n.Image" />
</a>
<a class="external" style="display:block;text-align:center;" :href="'node.html?number='+item.Number" >
<img style="margin:0 auto;max-width:64px;" :src="server+'/IoTCenter'+item.Image" />
</a>
</div>
</li>
</f7-list>
<f7-toolbar tabbar labels position="bottom">

@ -1,5 +1,5 @@
{
"version": "1.0.0-rc.102",
"version": "1.0.0-rc.103",
"Logging": {
"LogLevel": {
"Default": "Warning",

Loading…
Cancel
Save