diff --git a/projects/IoTCenter/Api/NodeController.cs b/projects/IoTCenter/Api/NodeController.cs
index bad6eb10..f0621fab 100644
--- a/projects/IoTCenter/Api/NodeController.cs
+++ b/projects/IoTCenter/Api/NodeController.cs
@@ -5,6 +5,7 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using System;
+using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace UserCenter.Controllers
@@ -32,16 +33,6 @@ namespace UserCenter.Controllers
{
try
{
- //var model = this._nodeCategoryRepo.ReadOnlyTable()
- // .Include(o => o.CategoryNodes)
- // .ThenInclude(o => o.Node)
- // .OrderBy(o => o.DisplayOrder)
- // .Select(o => new
- // {
- // o.Name,
- // o.DisplayOrder,
- // Nodes = o.CategoryNodes.Select(o => o.Node)
- // });
var model = this._nodeRepo.ReadOnlyTable()
.Select(o => new
{
@@ -60,5 +51,26 @@ namespace UserCenter.Controllers
return Problem(ex.Message);
}
}
+
+ [HttpPost]
+ public ActionResult GetNode([Required]string number)
+ {
+ try
+ {
+ var model = this._nodeRepo.ReadOnlyTable()
+ .Include(o => o.Devices)
+ .ThenInclude(o => o.Product)
+ .Include(o => o.Devices)
+ .ThenInclude(o => o.Data)
+ .Where(o => o.Number == number)
+ .FirstOrDefault();
+ return Ok(model);
+ }
+ catch (Exception ex)
+ {
+ ex.PrintStack();
+ return Problem(ex.Message);
+ }
+ }
}
}
\ No newline at end of file
diff --git a/projects/IoTCenter/Api/ProductController.cs b/projects/IoTCenter/Api/ProductController.cs
index 57e05718..f51899c3 100644
--- a/projects/IoTCenter/Api/ProductController.cs
+++ b/projects/IoTCenter/Api/ProductController.cs
@@ -2,6 +2,7 @@
using Infrastructure.Data;
using Infrastructure.Extensions;
using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using System;
using System.ComponentModel.DataAnnotations;
@@ -53,22 +54,15 @@ namespace UserCenter.Controllers
}
[HttpPost]
- public ActionResult GetDevices([Required]string number)
+ public ActionResult GetProduct([Required]string number)
{
try
{
- var model = this._deviceRepo.ReadOnlyTable()
- .Where(o => o.Product.Number == number)
- .OrderBy(o => o.DisplayOrder)
- .Select(o => new
- {
- o.Name,
- o.Number,
- o.DisplayName,
- Image = o.Product.Image,
- o.DisplayOrder,
- o.Data
- });
+ var model = this._productRepo.ReadOnlyTable()
+ .Include(o => o.Devices)
+ .ThenInclude(o => o.Data)
+ .Where(o => o.Number == number)
+ .FirstOrDefault();
return Ok(model);
}
catch (Exception ex)
diff --git a/projects/WebApp/wwwroot/js/store.js b/projects/WebApp/wwwroot/js/store.js
index a96bb2ee..60ec2d07 100644
--- a/projects/WebApp/wwwroot/js/store.js
+++ b/projects/WebApp/wwwroot/js/store.js
@@ -6,7 +6,9 @@ const store = new Vuex.Store({
user: null,
products: [],
nodes: [],
- devices:[],
+ product: null,
+ node: null,
+ device:null
},
mutations: {
setToken(state, data) {
@@ -30,9 +32,17 @@ const store = new Vuex.Store({
setNodes(state, model) {
state.nodes = model;
},
+ setProduct(state, model) {
+ state.product = model;
+ },
+ setDevice(state, model) {
+ state.device = model;
+ },
+ setNode(state, model) {
+ state.node = model;
+ },
updateNode(state, model) {
updateByNumber(state.nodes, model);
-
},
insertDevice(state, model) {
updateByNumber(state.devices, model);
diff --git a/projects/WebApp/wwwroot/pages/iot/device.html b/projects/WebApp/wwwroot/pages/iot/device.html
index 75720fab..8bbebb33 100644
--- a/projects/WebApp/wwwroot/pages/iot/device.html
+++ b/projects/WebApp/wwwroot/pages/iot/device.html
@@ -1,18 +1,17 @@
-
-
+
+
back
-
-
-
-
![]()
+
+
+
-
{{device.displayName}}
-
+
diff --git a/projects/WebApp/wwwroot/pages/iot/device.js b/projects/WebApp/wwwroot/pages/iot/device.js
index b82af3f3..a7541daf 100644
--- a/projects/WebApp/wwwroot/pages/iot/device.js
+++ b/projects/WebApp/wwwroot/pages/iot/device.js
@@ -5,17 +5,13 @@
template: response.data,
data() {
return {
- model: null
+ url: '/IoTCenter/api/v1/device/getDevice?number=' + this.$route.query.number
};
},
mounted: function () {
- console.log('当前路由:');
- console.log(this.$route);
- var url = '/IoTCenter/api/v1/product/getDevices?number='+this.$route.query.number;
- var component = this;
- axios.post(url)
+ axios.post(this.url)
.then(function (response) {
- component.model = response.data;
+ store.commit('setDevice',response.data);
})
.catch(function (error) {
})
@@ -23,7 +19,15 @@
});
},
+ destroyed: function () {
+ store.commit('setDevice',null);
+ },
methods: {
+ },
+ computed: {
+ device: function () {
+ return store.state.device;
+ }
}
})
});
diff --git a/projects/WebApp/wwwroot/pages/iot/node.html b/projects/WebApp/wwwroot/pages/iot/node.html
index 52e1c3d8..47bc68dd 100644
--- a/projects/WebApp/wwwroot/pages/iot/node.html
+++ b/projects/WebApp/wwwroot/pages/iot/node.html
@@ -1,18 +1,18 @@
-
-
+
+
back
-
-
+
+
-
![]()
+
{{device.displayName}}
-
+
diff --git a/projects/WebApp/wwwroot/pages/iot/node.js b/projects/WebApp/wwwroot/pages/iot/node.js
index f42563ba..29780057 100644
--- a/projects/WebApp/wwwroot/pages/iot/node.js
+++ b/projects/WebApp/wwwroot/pages/iot/node.js
@@ -1,21 +1,17 @@
function pages_iot_node() {
return Vue.component(arguments.callee.toString(), function (resolve, reject) {
- axios.get("/IoTCenter/node.html").then(function (response) {
+ axios.get("/pages/iot/node.html").then(function (response) {
resolve({
template: response.data,
data() {
return {
- model: null
+ url: '/IoTCenter/api/v1/node/getNode?number=' + this.$route.query.number
};
},
mounted: function () {
- console.log('当前路由:');
- console.log(this.$route);
- var url = '/IoTCenter/api/v1/product/getDevices?number='+this.$route.query.number;
- var component = this;
- axios.post(url)
+ axios.post(this.url)
.then(function (response) {
- component.model = response.data;
+ store.commit('setNode', response.data);
})
.catch(function (error) {
})
@@ -23,8 +19,17 @@
});
},
+ destroyed: function () {
+ store.commit('setNode', null);
+ },
methods: {
- }
+ },
+ computed: {
+ node: function () {
+ return store.state.node;
+ }
+ },
+
})
});
});
diff --git a/projects/WebApp/wwwroot/pages/iot/nodes.html b/projects/WebApp/wwwroot/pages/iot/nodes.html
index fad74c7d..b14e2b96 100644
--- a/projects/WebApp/wwwroot/pages/iot/nodes.html
+++ b/projects/WebApp/wwwroot/pages/iot/nodes.html
@@ -6,7 +6,7 @@
-
+
diff --git a/projects/WebApp/wwwroot/pages/iot/product.html b/projects/WebApp/wwwroot/pages/iot/product.html
index c4463ec4..d66f62ee 100644
--- a/projects/WebApp/wwwroot/pages/iot/product.html
+++ b/projects/WebApp/wwwroot/pages/iot/product.html
@@ -1,15 +1,15 @@
-
+
back
-
-
+
+
-
![]()
+
{{device.displayName}}
diff --git a/projects/WebApp/wwwroot/pages/iot/product.js b/projects/WebApp/wwwroot/pages/iot/product.js
index e54aa7e9..ac85c959 100644
--- a/projects/WebApp/wwwroot/pages/iot/product.js
+++ b/projects/WebApp/wwwroot/pages/iot/product.js
@@ -5,15 +5,13 @@
template: response.data,
data() {
return {
- model: null
+ url: '/IoTCenter/api/v1/product/getProduct?number=' + this.$route.query.number
};
},
mounted: function () {
- var url = '/IoTCenter/api/v1/product/getDevices?number='+this.$route.query.number;
- var component = this;
- axios.post(url)
+ axios.post(this.url)
.then(function (response) {
- component.model = response.data;
+ store.commit('setProduct', response.data);
})
.catch(function (error) {
})
@@ -21,8 +19,16 @@
});
},
+ destroyed: function () {
+ store.commit('setProduct', null);
+ },
methods: {
- }
+ },
+ computed: {
+ product: function () {
+ return store.state.product;
+ }
+ },
})
});
});