Former-commit-id: 70a7efd3cd6fcc2b76d813004cd1461ba3ce0465
TangShanKaiPing
wanggang 6 years ago
parent a7293757c1
commit 3a116f3499

@ -18,7 +18,7 @@
</div>
</div>
</div>
<div class="col-md-2 col-sm-4 col-xs-6" v-for="item in model.Products">
<div class="col-md-2 col-sm-4 col-xs-6" v-for="item in GetProducts()">
<div class="card">
<div class="card-header">
<h3 class="card-title">{{item.Name}}</h3>
@ -39,9 +39,6 @@
</style>
}
@section scripts{
<script src="/js/page.js"></script>
<script src="/js/index.js"></script>
<script>
var debug = true;
loadData();
</script>
}

@ -56,15 +56,17 @@
<script type="text/javascript" src="lib/framework7/js/framework7-vue.bundle.min.js"></script>
<script type="text/javascript" src="lib/flv.js/flv.min.js"></script>
<script type="text/javascript" src="lib/toastr/toastr.min.js"></script>
<script type="text/javascript" src="js/page.js"></script>
<script type="text/javascript">
isDebug = true;
useSingalR = false;
function data() {
data = function data() {
return {
f7params: f7params,
server: localStorage.getItem('server')
};
}
var methods = {
};
methods = {
submit: function (e) {
if (!$(e.target).valid()) {
return;
@ -81,7 +83,7 @@
});
}
};
start();
</script>
<script type="text/javascript" src="js/page.js"></script>
</body>
</html>

@ -32,7 +32,7 @@
<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 model.Products">
<li style="width:33.3%;display:inline-block;" v-if="model" v-for="n in GetProducts()">
<a :href="'product.html?number='+n.Number" class="card external" style="display:block;text-align:center;">
<div class="card-header">
<span class="item-title">{{n.Name}}</span>
@ -62,96 +62,17 @@
</div>
<script type="text/javascript" src="lib/signalr/signalr.min.js"></script>
<script type="text/javascript" src="lib/axios/axios.min.js"></script>
<script type="text/javascript" src="lib/urijs/URI.min.js"></script>
<script type="text/javascript" src="lib/linq/linq.min.js"></script>
<script type="text/javascript" src="lib/jquery/jquery.min.js"></script>
<script type="text/javascript" src="lib/jquery-validation/jquery.validate.min.js"></script>
<script type="text/javascript" src="lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
<script type="text/javascript" src="lib/vue/vue.min.js"></script>
<script type="text/javascript" src="lib/framework7/js/framework7.bundle.min.js"></script>
<script type="text/javascript" src="lib/framework7/js/framework7-vue.bundle.min.js"></script>
<script>
var debug = true;
var wsUrl = localStorage.getItem('server') + '/IoTCenter/hub?group=page';
var connectionId;
const connection = new signalR.HubConnectionBuilder()
.withUrl(wsUrl)
.build();
function connect() {
if (debug) { console.log('start connect to server:' + Date()); }
connection.start().then(function () {
}).catch(function (err) {
console.error(err.toString());
setTimeout(connect, 15 * 1000);
});
}
connection.on('Connected', function (id) {
connectionId = id;
console.log(connectionId);
});
connection.onclose(function (err) {
setTimeout(connect, 15 * 1000);
});
connection.on("ServerToClient", function (method, json, from) {
console.log(method + ':' + json);
if (method == 'ProductEntityInserted' ||
method == 'DeviceEntityInserted' ||
method == 'DeviceEntityDeleted') {
vm.load();
}
});
</script>
<script type="text/javascript">
Framework7.use(Framework7Vue);
var app;
var vm = new Vue({
el: '#app',
data() {
return {
f7params: {
routes: [],
name: 'My App',
id: 'com.myapp.test',
theme: 'ios',
},
server: localStorage.getItem('server'),
token: localStorage.getItem('token'),
model: null
};
},
mounted() {
if (!this.server) {
location.href = "config.html";
}
if (!this.token) {
location.href = "login.html";
}
this.$f7ready((f7) => {
app = this.$f7;
app.preloader.show();
});
connect();
this.load();
},
methods: {
load: function () {
var url = this.server + '/IoTCenter/App/GetProducts';
var data = new FormData();
data.append('token', this.token);
axios.post(url, data)
.then(function (response) {
console.log(response);
var data = response.data;
vm.model = data;
})
.catch(function (error) {
app.dialog.alert(error, '警告', function () { })
})
.then(function () {
app.preloader.hide();
});
}
}
})
</script>
<script type="text/javascript" src="lib/flv.js/flv.min.js"></script>
<script type="text/javascript" src="lib/toastr/toastr.min.js"></script>
<script type="text/javascript" src="js/page.js"></script>
<script type="text/javascript" src="js/index.js"></script>
</body>
</html>

@ -1,164 +1,56 @@
/*var*/
var isApp = location.href.indexOf('http') !== 0;
var server = isApp ? localStorage.getItem('server') : null;
var iotCenter = isApp ? server + '/IoTCenter' : '';
var dataUrl = iotCenter + '/App/GetProducts';
var token = isApp ? localStorage.getItem('token') : null;
var wsUrl = iotCenter + '/hub?group=page';
var connectionId;
const connection = new signalR.HubConnectionBuilder()
.withUrl(wsUrl)
.build();
var app;
var vm;
//
if (isApp) {
Framework7.use(Framework7Vue);
isDebug = true;
useSingalR = false; dataUrl = iotCenter + '/App/GetProducts';
data = function data() {
return {
f7params: f7params,
server: localStorage.getItem('server'),
token: localStorage.getItem('token'),
model: {
Products: [],
Scenes: []
}
};
}
toastr.options.timeOut = 500;
toastr.options.positionClass = "toast-top-center";
/*fun*/
function alert(message, title) {
function mounted() {
if (isApp) {
title = title || '消息';
app.dialog.alert(message, title);
}
else {
alert(message);
}
}
function hideLoading(message) {
toastr.success(message || '请求成功');
$('.overlay').hide();
}
function ajax(url, data, type) {
url = iotCenter + url
console.log(url);
type = type || 'get';
$('.overlay').show();
$.ajax({
type: type,
url: url,
data: data,
success: AjaxCallBack
}).fail(function (result) {
toastr.error('请求发送失败!');
console.log(result);
}).always(function () {
$('.overlay').hide();
});
}
function AjaxCallBack(response) {
var result = response;
if (result.code === 0) {
if (result.type === 0) {
if (result.format === 1) {
console.log('format/1/base64 jpeg image');
$('#callback .page-content').html('<img class="shot" src="' + result.data + '">');
}
else {
console.log('format/0/json object');
$('#callback .page-content').html(result.data);
}
app.popup.open('#callback');
if (!this.server) {
location.href = "config.html";
}
if (!this.token) {
location.href = "login.html";
}
}
}
/*ws*/
function connect() {
if (debug) {
console.log('start connect to server:' + Date());
}
if (connection.state === signalR.HubConnectionState.Disconnected) {
connection.start().then(function () {
toastr.success('客户端与服务器连接成功!');
}).catch(function (err) {
toastr.error('客户端与服务器连接失败!');
setTimeout(connect, 15 * 1000);
});
}
}
connection.on('Connected', function (id) {
connectionId = id;
});
connection.onclose(function (err) {
setTimeout(connect, 15 * 1000);
});
connection.on("ServerToClient", function (method, json, to, from) {
console.log(method + ':' + json);
onMessage(method, json, to, from);
});
};
methods = {
GetProducts() {
return Enumerable.from(this.model.Products).orderBy('o=>o.DisplayOrder').toArray();
},
GetScenes() {
return Enumerable.from(this.model.Scenes).orderBy('o=>o.DisplayOrder').toArray();
},
CallScene(id) {
ajax('/App/ExecGlobalScene', { token: token, connectionId: connectionId, id: id }, 'post');
}
};
function onMessage(method, json, to, from) {
debug(method + ':' + json);
var item = JSON.parse(json);
if (method === 'ExecApiRsponse') {
console.log(json);
toastr.success('操作调用成功');
}
else if (method === 'ExecSceneRsponse') {
console.log(json);
toastr.success('场景调用成功');
}
else if (method == 'ProductEntityInserted' ||
console.log(method + ':' + json);
var item = JSON.parse(json);
if (method == 'ProductEntityInserted' ||
method == 'ProductEntityUpdated' ||
method == 'ProductEntityDeleted' ||
method == 'DeviceEntityInserted' ||
method == 'DeviceEntityDeleted' ||
method == 'SceneEntityInserted' ||
method == 'DeviceEntityDeleted') {
loadData();
}
else if (method == 'SceneEntityInserted' ||
method == 'SceneEntityUpdated' ||
method == 'SceneEntityDeleted') {
vm.load();
}
}
/*vue*/
function loadData() {
vm = new Vue({
el: '#app',
data() {
return {
f7params: {
routes: [],
name: 'My App',
id: 'com.myapp.test',
theme: 'ios',
},
model: null
};
},
mounted() {
if (isApp) {
if (!server) {
location.href = "config.html";
}
if (!token) {
location.href = "login.html";
}
this.$f7ready((f7) => {
app = this.$f7;
});
}
this.load();
},
methods: {
load() {
connect();
axios.post(dataUrl)
.then(function (response) {
vm.model = response.data;
})
.catch(function (error) {
toastr.error('数据加载失败!');
})
.then(hideLoading);
},
CallApi(number, method, query) {
ajax('/App/ExecApi', { token: token, connectionId: connectionId, number: number, method: method, query: query }, 'post');
},
GetScenes() {
return Enumerable.from(this.model.Scenes).orderBy('o=>o.DisplayOrder').toArray();
},
CallScene(id) {
ajax('/App/ExecGlobalScene', { token: token, connectionId: connectionId, id: id }, 'post');
}
if (item.NodeId == null) {
loadData();
}
});
}
}
start();

@ -25,6 +25,12 @@ if (isApp) {
}
toastr.options.timeOut = 500;
toastr.options.positionClass = "toast-top-center";
var f7params = isApp? {
routes: [],
name: 'My App',
id: 'com.myapp.test',
theme: 'ios',
}:null;
//
//log
function debug(message) {
@ -62,7 +68,9 @@ function loadTemplate() {
axios.post(templateUrl, { crossDomain: true })
.then(function (response) {
var html = response.data;
$('#template').html(html);
if (html) {
$('#template').html(html);
}
init();
})
.catch(function (error) {
@ -80,7 +88,7 @@ function loadData() {
axios.post(dataUrl, formData)
.then(function (response) {
debug(response);
data.model = response.data;
vm.model = response.data;
toastr.success('数据加载成功!');
})
.catch(function (error) {
@ -103,19 +111,13 @@ function start() {
}
}
//初始化vue
var mounted = mounted || function () { };
var data = function () { };
var mounted = function () { };
var methods ={ };
function init() {
$('#template style').each(function (i, n) {
$('head').append(n);
});
if (isApp) {
data['f7params'] = {
root: '#app',
id: 'io.framework7.testapp',
name: 'Framework7',
theme: 'ios',
};
}
vm = new Vue({
el: '#app',
data: data,
@ -131,8 +133,6 @@ function init() {
loadData();
}
},
methods:methods
methods: methods
});
}
//
start();
}

@ -68,10 +68,12 @@
<script type="text/javascript" src="lib/framework7/js/framework7-vue.bundle.min.js"></script>
<script type="text/javascript" src="lib/flv.js/flv.min.js"></script>
<script type="text/javascript" src="lib/toastr/toastr.min.js"></script>
<script type="text/javascript" src="js/page.js"></script>
<script type="text/javascript">
isDebug = true;
function data() {
data = function data() {
return {
f7params: f7params,
server: localStorage.getItem('server'),
username: localStorage.getItem('username')
};
@ -106,7 +108,7 @@
});
}
};
start();
</script>
<script type="text/javascript" src="js/page.js"></script>
</body>
</html>
Loading…
Cancel
Save