1.0.0.20092802

Former-commit-id: f2e6447a9a1d1e7906d71b2795bb54ba458cc0bc
Former-commit-id: 036bc081b2d6b3f244da352fe9719785f39a0cf0
TSXN
wanggang 5 years ago
parent 85c3d0e05a
commit 0082905b4e

@ -53,7 +53,7 @@ namespace Infrastructure.Extensions
var ret = new StringBuilder();
foreach (var item in ms.ToArray())
{
ret.AppendFormat("{0:X2}", item);
ret.AppendFormat(CultureInfo.InvariantCulture, "{0:X2}", item);
}
return ret.ToString();
}

@ -1,4 +1,4 @@
using Application.Domain.Entities;
using Application.Domain.Entities;
using Application.Models;
using Infrastructure.Application;
using Infrastructure.Data;
@ -37,8 +37,8 @@ namespace IoT.Shared.Areas.Admin.Controlls
.WhereIf(!string.IsNullOrEmpty(model.Query.Type), o => o.Type.Contains(model.Query.Type, StringComparison.OrdinalIgnoreCase))
.WhereIf(!string.IsNullOrEmpty(model.Query.Name), o => o.Name.Contains(model.Query.Name, StringComparison.OrdinalIgnoreCase))
.WhereIf(!string.IsNullOrEmpty(model.Query.Description), o => o.Description.Contains(model.Query.Description, StringComparison.OrdinalIgnoreCase))
.WhereIf(!string.IsNullOrEmpty(model.Query.Maxinum), o => o.Maxinum == model.Query.Maxinum)
.WhereIf(!string.IsNullOrEmpty(model.Query.Minimum), o => o.Minimum == model.Query.Maxinum);
.WhereIf(!string.IsNullOrEmpty(model.Query.Minimum), o => o.Minimum == model.Query.Minimum)
.WhereIf(!string.IsNullOrEmpty(model.Query.Maxinum), o => o.Maxinum == model.Query.Maxinum);
}
public override void ToDisplayModel(Parameter entity, EditParameterModel model)

@ -1,4 +1,4 @@
using Application.Domain.Entities;
using Application.Domain.Entities;
using Application.Models;
using Infrastructure.Application;
using Infrastructure.Data;
@ -33,9 +33,9 @@ namespace IoT.Shared.Areas.Admin.Controlls
return base.Query(model, query)
.WhereIf(model.Query.CategoryId.HasValue, o => o.CategoryId == model.Query.CategoryId.Value)
.WhereIf(!string.IsNullOrEmpty(model.Query.Name), o => o.Name.Contains(model.Query.Name, StringComparison.OrdinalIgnoreCase))
.WhereIf(!string.IsNullOrEmpty(model.Query.Number), o => o.Name.Contains(model.Query.Number, StringComparison.OrdinalIgnoreCase))
.WhereIf(!string.IsNullOrEmpty(model.Query.Path), o => o.Name.Contains(model.Query.Path, StringComparison.OrdinalIgnoreCase))
.WhereIf(!string.IsNullOrEmpty(model.Query.ApiJson), o => o.Name.Contains(model.Query.ApiJson, StringComparison.OrdinalIgnoreCase));
.WhereIf(!string.IsNullOrEmpty(model.Query.Number), o => o.Number.Contains(model.Query.Number, StringComparison.OrdinalIgnoreCase))
.WhereIf(!string.IsNullOrEmpty(model.Query.Path), o => o.Path.Contains(model.Query.Path, StringComparison.OrdinalIgnoreCase))
.WhereIf(!string.IsNullOrEmpty(model.Query.ApiJson), o => o.ApiJson.Contains(model.Query.ApiJson, StringComparison.OrdinalIgnoreCase));
}
public override void ToDisplayModel(Product entity, EditProductModel model)

@ -1,4 +1,4 @@
using Application.Domain.Entities;
using Application.Domain.Entities;
using Infrastructure.Application;
using Infrastructure.Data;
using Infrastructure.Extensions;
@ -32,6 +32,7 @@ namespace IoTCenter.Areas.Admin.Controllers
{
ViewData.SelectList(o => model.Query.OrganId, () => this._ajax.GetOrganSelectList(model.Query.OrganId));
return query
.WhereIf(model.Query.OrganId.HasValue, o => o.OrganId == model.Query.OrganId.Value)
.WhereIf(!string.IsNullOrEmpty(model.Query.Name), o => o.Name.Contains(model.Query.Name))
.WhereIf(model.Query.Hidden.HasValue, o => o.Hidden == model.Query.Hidden.Value)
.OrderBy(o => o.DisplayOrder);

@ -1,4 +1,4 @@
using Application.Domain.Entities;
using Application.Domain.Entities;
using Infrastructure.Application;
using Infrastructure.Data;
using Infrastructure.Extensions;
@ -37,6 +37,7 @@ namespace IoTCenter.Areas.Admin.Controllers
public override IQueryable<OrganSceneTigger> Query(PagedListModel<EditOrganSceneTiggerModel> model, IQueryable<OrganSceneTigger> query)
{
return query
.WhereIf(model.Query.OrganId.HasValue, o => o.OrganScene.OrganId == model.Query.OrganId.Value)
.WhereIf(model.Query.NodeId.HasValue, o => o.Data.Device.NodeId == model.Query.NodeId.Value)
.WhereIf(model.Query.OrganSceneId.HasValue, o => o.OrganSceneId == model.Query.OrganSceneId.Value)
.WhereIf(model.Query.DeviceId.HasValue, o => o.Data.DeviceId == model.Query.DeviceId.Value)

@ -1,4 +1,4 @@
using Application.Domain.Entities;
using Application.Domain.Entities;
using Infrastructure.Application;
using Infrastructure.Data;
using Infrastructure.Extensions;
@ -7,7 +7,6 @@ using IoT.Shared.Areas.Admin.Controlls;
using IoTCenter.Application.Models;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.ModelBinding.Binders;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;
@ -31,10 +30,10 @@ namespace IoTCenter.Areas.Admin.Controllers
public override IQueryable<OrganSceneTimer> Query(PagedListModel<EditOrganSceneTimerModel> model, IQueryable<OrganSceneTimer> query)
{
return query
.WhereIf(model.Query.OrganId.HasValue, o => o.OrganScene.OrganId == model.Query.OrganId.Value)
.WhereIf(model.Query.OrganSceneId.HasValue, o => o.OrganSceneId == model.Query.OrganSceneId.Value)
.WhereIf(!string.IsNullOrEmpty(model.Query.Name), o => o.Name.Contains(model.Query.Name))
.WhereIf(model.Query.Disabled.HasValue, o => o.Disabled == model.Query.Disabled.Value);
;
}
public override IQueryable<OrganSceneTimer> Include(IQueryable<OrganSceneTimer> query)

@ -486,7 +486,7 @@ namespace IoTNode.DeviceServices.FBee
if (deviceId == 0x000a)
{
}
if (deviceType != null)
if (deviceType != null && zoneType != 0x0000)
{
var deviceIcon = deviceType.Icon;
var deviceName = deviceType.Name;
@ -623,7 +623,7 @@ namespace IoTNode.DeviceServices.FBee
}
else
{
this._logger.LogDebug($"unknown device id :{deviceId}");
this._logger.LogDebug($"unknown device id or zone type :{deviceId} {zoneType}");
}
}
catch (Exception ex)

@ -1,4 +1,4 @@
using System.Reflection;
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0.20092702")]
[assembly: AssemblyInformationalVersion("1.0.0.20092801")]

@ -1,4 +1,4 @@
using System.Reflection;
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0.20092702")]
[assembly: AssemblyInformationalVersion("1.0.0.20092802")]

@ -1,5 +1,5 @@
<template>
<layout :title="data.schema.title">
<template>
<layout :htmltitle="data.schema.title">
<h1 style="font-size:1.5rem;margin:.5em 0;">{{data.schema.title}}详情页</h1>
<slot></slot>
<div class="row">
@ -85,4 +85,4 @@
}
}
}
</script>
</script>

@ -1,4 +1,4 @@
<template>
<template>
<div>
<select class="col-xs-10 col-sm-5 MultiSelectList" multiple ref="select" :name="currentName" v-model="currentValue">
<template v-for="(item,index) in list">
@ -28,6 +28,7 @@
$(this.$refs.select).treeMultiselect({
enableSelectAll: true,
searchable: true,
searchParams: ['section', 'text'],
selectAllText: "全选",
unselectAllText: "反选"
});

@ -286,6 +286,14 @@
</li>
<template v-if="data.roles.indexOf('超级管理员')===0">
<li class="nav-header">运维</li>
<li class="nav-item">
<router-link :key="$route.fullPath" to="/routes/admin/system.html?area=admin" :class="getLinkClass('LiveRecord')">
<i class="far fa-circle nav-icon"></i>
<p>
运维
</p>
</router-link>
</li>
<li class="nav-item">
<a class="nav-link" target="_blank" href="/JobServer/job">
<i class="far fa-circle nav-icon"></i>
@ -382,7 +390,8 @@
</footer>
</div>
</template>
<script>export default {
<script>
export default {
data: function () {
return {
version: config.version,
@ -406,7 +415,7 @@
}
},
mounted: function () {
document.querySelector('title').innerText = this.$attrs.title;
document.querySelector('title').innerText = this.$attrs.htmltitle;
var vm = this;
axios.post(this.url).then(function (response) {
vm.data = response.data;

@ -1,5 +1,5 @@
<template>
<layout :title="title">
<template>
<layout :htmltitle="title">
<div class="row mb-2">
<div class="col-sm-6">
<h1 style="font-size:1.5rem;margin:.5em 0;">{{title}}</h1>
@ -34,7 +34,7 @@
<div class="dataTables_wrapper dt-bootstrap4">
<!--list table-->
<div class="row">
<div class="col-12">
<div class="col-12" style="overflow-x:auto;">
<table ref="list" class="table table-bordered table-striped dataTable dtr-inline">
<thead>
<tr>
@ -179,7 +179,7 @@
return key !== 'id' && value.type !== 'array';
},
onSubmit: function () {
this.load();
this.load(1);
},
deleteAll: function () {
var vm = this;
@ -194,11 +194,11 @@
axios.post(url, data).then(function (response) {
if (response.status === 204) {
setTimeout(function () {
vm.load();
vm.load(1);
}, 1000);
}
else {
Swal.fire(response.data).then(o => vm.load());
Swal.fire(response.data).then(o => vm.load(1));
}
});
}
@ -207,4 +207,4 @@
}
}
}
</script>
</script>

@ -1,5 +1,5 @@
<template>
<layout :title="title">
<template>
<layout :htmltitle="title">
<h1 style="font-size:1.5rem;margin:.5em 0;">{{title}}</h1>
<div class="row">
<div class="col-12">
@ -158,4 +158,4 @@
}
}
}
</script>
</script>

@ -33,7 +33,7 @@
<script src="lib/jquery/jquery.min.js"></script>
<script src="lib/lodash/lodash.min.js"></script>
<script src="lib/qs/qs.min.js"></script>
<script src="lib/vue/vue.js"></script>
<script src="lib/vue/vue.min.js"></script>
<script src="lib/vuex/vuex.min.js"></script>
<script src="lib/vue-router/vue-router.min.js"></script>
<script src="lib/linq.js/linq.min.js"></script>

@ -1,5 +1,5 @@
var config = {
version: '1.0.0.20091501',
version: '1.0.0.20092802',
debug: window.location.search.indexOf('debug') > -1,
baseUrl: window.location.protocol + '//' + window.location.host,
uploadUrl: window.location.protocol + '//' + window.location.host + '/IoTCenter/File/Upload',

@ -1,5 +1,5 @@
<template>
<layout :title="title">
<template>
<layout :htmltitle="title">
<h1 style="font-size:1.5rem;margin:.5em 0;">{{title}}</h1>
<div class="row">
<div class="col-12">
@ -420,4 +420,4 @@
}
}
}
</script>
</script>

@ -1,5 +1,5 @@
<template>
<layout title="后台首页">
<template>
<layout htmltitle="后台首页">
<div v-if="model">
<h2 style="font-size:1.5rem;margin:.5em 0;">产品</h2>
<div class="row">
@ -33,7 +33,6 @@
</div>
</div>
</div>
<button class="btn btn-success" @click="updateTimer">更新定时器</button>
</div>
</layout>
</template>

@ -1,5 +1,5 @@
<template>
<layout :title="title">
<template>
<layout :htmltitle="title">
<h1 style="font-size:1.5rem;margin:.5em 0;">{{title}}</h1>
<div class="row">
<div class="col-12">
@ -210,4 +210,4 @@
}
}
}
</script>
</script>

@ -0,0 +1,35 @@
<template>
<layout :htmltitle="title">
<div class="row overlay-wrapper">
<div class="col-md-12">
<div class="card">
<button class="btn btn-success" @click="updateTimer">更新定时器</button>
</div>
</div>
</div>
</layout>
</template>
<script>
export default {
data: function () {
return {
title: '运维',
}
},
mounted: function () {
},
methods: {
updateTimer: function () {
axios.post(this.baseUrl + '/IoTCenter/api/v1/site/UpdateTimer')
.then(function (response) {
Swal.fire({ title: '操作完成', timer: 1500 });
})
.catch(function (error) {
Swal.fire({ title: '操作失败', timer: 1500 });
});
}
},
beforeDestroy: function () {
}
}
</script>

@ -1,5 +1,5 @@
<template>
<layout :title="title">
<template>
<layout :htmltitle="title">
<h2 style="font-size:1.5rem;margin:.5em 0;">产品<span data-toggle="tooltip" class="badge bg-green">{{products.length}}</span></h2>
<div class="row">
<div class="col-md-2 col-sm-4 col-xs-6" v-for="item in products">
@ -72,4 +72,4 @@
unsubscribe();
}
}
</script>
</script>

@ -1,5 +1,5 @@
<template>
<layout :title="title">
<layout :htmltitle="title">
<div v-if="device">
<div class="row">
<div class="col">
@ -14,9 +14,9 @@
<div class="card-header">
<h3 class="card-title">{{data.name}}(单位:{{data.unit}})</h3>
<ul role="tablist" class="nav nav-tabs card-tools">
<li class="nav-item"><a href="#tab_11165f469-8f244804008d1500" data-toggle="tab" class="nav-link active" @click="changeTime(data.key,'1d',data.name)">近24小时</a></li>
<li class="nav-item"><a href="#tab_21165f469-8f244804008d1500" data-toggle="tab" class="nav-link" @click="changeTime(data.key,'7d',data.name)">近7日</a></li>
<li class="nav-item"><a href="#tab_31165f469-8f244804008d1500" data-toggle="tab" class="nav-link" @click="changeTime(data.key,'30d',data.name)">近30日</a></li>
<li class="nav-item"><a href="javascript:;" data-toggle="tab" class="nav-link active" @click="tabClick($event,data.key,'1d',data.name)">近24小时</a></li>
<li class="nav-item"><a href="javascript:;" data-toggle="tab" class="nav-link" @click="tabClick($event,data.key,'7d',data.name)">近7日</a></li>
<li class="nav-item"><a href="javascript:;" data-toggle="tab" class="nav-link" @click="tabClick($event,data.key,'30d',data.name)">近30日</a></li>
</ul>
</div>
<div class="card-body">
@ -70,6 +70,14 @@
this.changeTime(dataList[i].key, '1d', dataList[i].name);
}
},
tabClick: function (event, key, time, title) {
this.changeTime(key, time, title);
var link = $(event.currentTarget);
if (!link.hasClass('active')) {
link.parent().siblings().find('a.active').removeClass('active');
link.addClass('active');
}
},
changeTime: function (key, time, title) {
var vm = this;
var url = this.baseUrl + '/IoTCenter/api/v1/Device/GetChartData';
@ -153,4 +161,4 @@
this.unsubscribe();
}
}
</script>
</script>

@ -1,5 +1,5 @@
<template>
<layout :title="title">
<template>
<layout :htmltitle="title">
<!--场景-->
<div class="row" v-if="node.scenes.length">
<div class="col">
@ -202,4 +202,4 @@
}
}
};
</script>
</script>

@ -1,5 +1,5 @@
<template>
<layout :title="title">
<template>
<layout :htmltitle="title">
<div class="row overlay-wrapper">
<div class="col-md-12" v-if="nodes.length">
<div class="card">
@ -89,4 +89,4 @@
unsubscribe();
}
}
</script>
</script>

@ -1,5 +1,5 @@
<template>
<layout :title="title">
<template>
<layout :htmlTitle="title">
<div class="row overlay-wrapper">
<div class="col-md-2 col-sm-4 col-xs-6" v-for="item in organs">
<div class="card">
@ -50,4 +50,4 @@
this.unsubscribe();
}
}
</script>
</script>

@ -1,5 +1,5 @@
<template>
<layout :title="title">
<template>
<layout :htmltitle="title">
<div class="row mb-2">
<div class="col-sm-6">
<h1>{{product.name}}</h1>
@ -177,4 +177,4 @@
this.unsubscribe();
}
}
</script>
</script>

@ -1,5 +1,5 @@
<template>
<layout :title="title">
<template>
<layout :htmltitle="title">
<h1>{{title}}</h1>
<div class="row">
<div class="col-12">
@ -38,7 +38,6 @@
</div>
<div class="col-sm-10">
<button type="submit" class="btn btn-primary">确定</button>
<router-link :to="{path:base+'index.html',query:{area:area,entity:entity}}" class="btn btn-default">返回</router-link>
</div>
</div>
</div>
@ -142,6 +141,7 @@
if (response.status === 200) {
if (response.data.errors) {
this.data = response.data;
Swal.fire(response.data.errors[0].value.errors[0].errorMessage)
}
else {
store.commit('login', response.data);

@ -46,3 +46,4 @@ vhost __defaultVhost__ {
}
}
# ffmpeg -re -f video4linux2 -i /dev/video10 -c:v libx264 -c:a aac -f flv rtmp://localhost/live/test

@ -54,6 +54,6 @@ fi
if uname -a | grep -q "NanoPC-T4"
then
echo "nanopc-t4"
nmcli connection modify 'Wired connection 1' connection.autoconnect yes ipv4.method manual ipv4.address 192.168.1.3/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8 223.5.5.5 119.29.29.29 180.76.76.76"
nmcli connection modify 'Wired connection 1' connection.autoconnect yes ipv4.method manual ipv4.address 192.168.1.3/24 ipv4.gateway 192.168.1.1 ipv4.dns "223.5.5.5 119.29.29.29 180.76.76.76"
nmcli c up 'Wired connection 1'
fi
Loading…
Cancel
Save