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/Demo/Demo/wwwroot/js/app.js

150 lines
9.7 KiB

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

$.ajaxSetup({
cache: false,
timeout:5000
});
// Init F7 Vue Plugin
Framework7.use(Framework7Vue);
// Init Page Components
Vue.component('page-login', {
template: '#page-login',
data(){
return {
Server: localStorage.getItem('Server')||'http://192.168.3.83:8000',
UserName: localStorage.getItem('UserName'),
Password: null,
RememberMe: localStorage.getItem('RememberMe')
};
},
mounted() {
$('form').removeData('validator');
$('form').removeData('unobtrusiveValidation');
$.validator.unobtrusive.parse('form');
},
methods: {
OnSubmit:function(e) {
if (!$('form').valid()) {
return;
}
var url = e.target.action;
var data = $(e.target).serialize();
var current = this;
$.post(url, data, function (response) {
if (response.Code === 0) {
vm.Token = response.Token || 'token';
if (current.RememberMe === true) {
localStorage.setItem("Token", response.Token || 'token');
localStorage.setItem("Server", current.Server);
localStorage.setItem("UserName", current.UserName);
localStorage.setItem("NickName", response.NickName);
localStorage.setItem("IoTServer", _.trimEnd(response.IoTServer,['/']));
}
else {
localStorage.removeItem("Token");
}
vm.Server = current.Server;
vm.RememberMe = current.RememberMe;
vm.UserName = current.UserName;
vm.NickName = response.NickName;
vm.IoTServer = _.trimEnd(response.IoTServer, ['/']);
vm.$f7.view.current.router.back();
}
else {
app.dialog.alert(response.Message, "消息");
}
}).fail(function (e) {
var message;
if (e.status === 0) {
message = "不是有效的服务器地址";
}
else {
message = e.status + ":" + e.statusText;
}
vm.$f7.dialog.alert(message, "消息");
});
}
}
});
Vue.component('page-index', {
template: '#page-index'
});
Vue.component('page-node', {
template: '#page-node'
});
Vue.component('page-device', {
template: '#page-device'
});
Vue.component('page-not-found', {
template: '#page-not-found'
});
// Init App
var vm = new Vue({
el: '#app',
data(){
return {
// Framework7 parameters here
f7params: {
root: '#app', // App root element
id: 'io.framework7.testapp', // App bundle ID
name: 'Framework7', // App name
theme: 'auto', // Automatic theme detection
// App routes
routes: [
{
path: '/login/',
component: 'page-login'
},
{
path: '/index/',
component: 'page-index'
},
{
path: '/node/:id/',
component: 'page-node'
},
{
path: '/device/:id/',
component: 'page-device'
},
{
path: '(.*)',
component: 'page-not-found',
},
],
},
Server: localStorage.getItem('Server'),
Token: localStorage.getItem('Token'),
UserName: localStorage.getItem('UserName'),
RememberMe: localStorage.getItem('RememberMe'),
NickName: localStorage.getItem('NickName'),
IoTServer: localStorage.getItem('IoTServer'),
User: null,
Nodes: [],
Messages:[],
}
},
mounted() {
this.$f7ready((f7) => {
if (this.Token) {
this.init();
}
else {
f7.view.current.router.navigate('/login/')
}
});
},
methods: {
init() {
var baseUrl = vm.IoTServer;
var wsUrl = baseUrl + "/hub?group=nodes";
var ajaxUrl = baseUrl + "/Home/GetNodes";
Framework7.request.json(ajaxUrl, null, function (response) {
vm.Nodes = response;
}, null, 'json');
}
}
});