diff --git a/projects/WebApp/WebApp.csproj b/projects/WebApp/WebApp.csproj index 3edfc6b4..406ace23 100644 --- a/projects/WebApp/WebApp.csproj +++ b/projects/WebApp/WebApp.csproj @@ -3,4 +3,11 @@ netcoreapp3.1 + + + + true + PreserveNewest + + \ No newline at end of file diff --git a/projects/WebApp/wwwroot/favicon.ico b/projects/WebApp/wwwroot/favicon.ico index 20e937b8..a3a79998 100644 Binary files a/projects/WebApp/wwwroot/favicon.ico and b/projects/WebApp/wwwroot/favicon.ico differ diff --git a/projects/WebApp/wwwroot/index.html b/projects/WebApp/wwwroot/index.html index 387a4d4b..12f98009 100644 --- a/projects/WebApp/wwwroot/index.html +++ b/projects/WebApp/wwwroot/index.html @@ -20,6 +20,7 @@

加载中

+ @@ -29,6 +30,9 @@ + + + \ No newline at end of file diff --git a/projects/WebApp/wwwroot/js/app.js b/projects/WebApp/wwwroot/js/app.js index fcc0bd6b..be7ef359 100644 --- a/projects/WebApp/wwwroot/js/app.js +++ b/projects/WebApp/wwwroot/js/app.js @@ -1,58 +1,5 @@ -Vue.use(Vuex); -const store = new Vuex.Store({ - state: { - accessToken: localStorage.getItem("accessToken"), - refreshToken: localStorage.getItem("refreshToken"), - user: null, - products: [], - nodes: [], - }, - mutations: { - setToken(state, data) { - state.accessToken = data.accessToken; - localStorage.setItem("accessToken", state.accessToken); - state.refreshToken = data.refreshToken; - localStorage.setItem("refreshToken", state.refreshToken); - }, - logout(state) { - state.accessToken = null; - state.refreshToken = null; - localStorage.removeItem('accessToken'); - localStorage.removeItem('refreshToken'); - }, - setUser(state, user) { - state.user = user; - }, - setProducts(state, products) { - state.products = products; - }, - setNodes(state, nodes) { - state.nodes = nodes; - }, - }, -}) -/// -var userAgent = navigator.userAgent; +var userAgent = navigator.userAgent; var isApp = userAgent.indexOf('isapp') !== -1; -var hubUrl = "/IoTCenter/hub?group=page"; -var connection = new signalR.HubConnectionBuilder().withUrl(hubUrl).build(); -connection.on('Connected', function (id) { - connectionId = id; - console.log('signalR 连接Id:' + connectionId); -}); -connection.on("ServerToClient", function (method, json, to, from) { - console.log(method + ':' + json); -}); -function connect() { - if (connection.state === signalR.HubConnectionState.Disconnected) { - connection.start().then(function () { - console.log('signalR 连接成功'); - }).catch(function (err) { - console.log(err); - setTimeout(connect, 15 * 1000); - }); - } -} axios.interceptors.request.use( function (config) { diff --git a/projects/WebApp/wwwroot/js/message.js b/projects/WebApp/wwwroot/js/message.js new file mode 100644 index 00000000..54ec8f97 --- /dev/null +++ b/projects/WebApp/wwwroot/js/message.js @@ -0,0 +1,25 @@ +var hubUrl = "/IoTCenter/hub?group=page"; +var connection = new signalR.HubConnectionBuilder().withUrl(hubUrl).build(); +function connect() { + if (connection.state === signalR.HubConnectionState.Disconnected) { + connection.start().then(function () { + console.log('signalR 连接成功'); + }).catch(function (err) { + console.log(err); + setTimeout(connect, 15 * 1000); + }); + } +} +connection.on('Connected', function (id) { + connectionId = id; + console.log('signalR 连接Id:' + connectionId); +}); +connection.on("ServerToClient", function (method, json, to, from) { + console.log(method); + console.log(json); + var model = JSON.parse(json); + if (method === 'NodeEntityUpdated') { + store.commit('setNode', model); + } + +}); \ No newline at end of file diff --git a/projects/WebApp/wwwroot/js/store.js b/projects/WebApp/wwwroot/js/store.js new file mode 100644 index 00000000..26054dcd --- /dev/null +++ b/projects/WebApp/wwwroot/js/store.js @@ -0,0 +1,36 @@ +Vue.use(Vuex); +const store = new Vuex.Store({ + state: { + accessToken: localStorage.getItem("accessToken"), + refreshToken: localStorage.getItem("refreshToken"), + user: null, + products: null, + nodes: null, + }, + mutations: { + setToken(state, data) { + state.accessToken = data.accessToken; + localStorage.setItem("accessToken", state.accessToken); + state.refreshToken = data.refreshToken; + localStorage.setItem("refreshToken", state.refreshToken); + }, + logout(state) { + state.accessToken = null; + state.refreshToken = null; + localStorage.removeItem('accessToken'); + localStorage.removeItem('refreshToken'); + }, + setUser(state, user) { + state.user = user; + }, + setProducts(state, products) { + state.products = products; + }, + setNodes(state, nodes) { + state.nodes = nodes; + }, + setNode(state, node) { + findByNumberCopy(state.nodes, node); + }, + }, +}) \ No newline at end of file diff --git a/projects/WebApp/wwwroot/js/util.js b/projects/WebApp/wwwroot/js/util.js new file mode 100644 index 00000000..c2233a53 --- /dev/null +++ b/projects/WebApp/wwwroot/js/util.js @@ -0,0 +1,13 @@ +function copy(from, to) { + for (var attr in to) { + if (from.hasOwnProperty(attr)) { + to[attr] = from[attr]; + } + } +} +function findByNumberCopy(list, from) { + var to = Enumerable.from(list).where(function (o) { return o.number === from.number; }).firstOrDefault(); + if (to) { + copy(from, to); + } +} \ No newline at end of file