271 lines
8.0 KiB
JavaScript
271 lines
8.0 KiB
JavaScript
|
var wxCharts = require('../../../../utils/wxcharts.js');
|
||
|
var lineChart = null;
|
||
|
Page({
|
||
|
|
||
|
/**
|
||
|
* 页面的初始数据
|
||
|
*/
|
||
|
data: {
|
||
|
business:
|
||
|
[
|
||
|
{ businesser: 1, time: 6, num: null }, { businesser: 1, time: 7, num: null },
|
||
|
{ businesser: 1, time: 8, num: null }, { businesser: 1, time: 9, num: null },
|
||
|
{ businesser: 1, time: 10, num: null }, { businesser: 1, time: 11, num: null },
|
||
|
{ businesser: 1, time: 12, num: null }, { businesser: 1, time: 13, num: null },
|
||
|
{ businesser: 1, time: 14, num: null }, { businesser: 1, time: 15, num: null },
|
||
|
{ businesser: 1, time: 16, num: null }, { businesser: 1, time: 17, num: null },
|
||
|
{ businesser: 1, time: 18, num: null }, { businesser: 1, time: 19, num: null },
|
||
|
{ businesser: 1, time: 20, num: null }, { businesser: 1, time: 21, num: null },
|
||
|
{ businesser: 1, time: 22, num: null },
|
||
|
{ businesser: 2, time: 6, num: null }, { businesser: 2, time: 7, num: null },
|
||
|
{ businesser: 2, time: 8, num: null }, { businesser: 2, time: 9, num: null },
|
||
|
{ businesser: 2, time: 10, num: null }, { businesser: 2, time: 11, num: null },
|
||
|
{ businesser: 2, time: 12, num: null }, { businesser: 2, time: 13, num: null },
|
||
|
{ businesser: 2, time: 14, num: null }, { businesser: 2, time: 15, num: null },
|
||
|
{ businesser: 2, time: 16, num: null }, { businesser: 2, time: 17, num: null },
|
||
|
{ businesser: 2, time: 18, num: null }, { businesser: 2, time: 19, num: null },
|
||
|
{ businesser: 2, time: 20, num: null }, { businesser: 2, time: 21, num: null },
|
||
|
{ businesser: 2, time: 22, num: null },
|
||
|
{ businesser: 3, time: 6, num: null }, { businesser: 3, time: 7, num: null },
|
||
|
{ businesser: 3, time: 8, num: null }, { businesser: 3, time: 9, num: null },
|
||
|
{ businesser: 3, time: 10, num: null }, { businesser: 3, time: 11, num: null },
|
||
|
{ businesser: 3, time: 12, num: null }, { businesser: 3, time: 13, num: null },
|
||
|
{ businesser: 3, time: 14, num: null }, { businesser: 3, time: 15, num: null },
|
||
|
{ businesser: 3, time: 16, num: null }, { businesser: 3, time: 17, num: null },
|
||
|
{ businesser: 3, time: 18, num: null }, { businesser: 3, time: 19, num: null },
|
||
|
{ businesser: 3, time: 20, num: null }, { businesser: 3, time: 21, num: null },
|
||
|
{ businesser: 3, time: 22, num: null }
|
||
|
|
||
|
],
|
||
|
predict:
|
||
|
[
|
||
|
{ time: 6, num: null }, { time: 7, num: null },
|
||
|
{ time: 8, num: null }, { time: 9, num: null },
|
||
|
{ time: 10, num: null }, { time: 11, num: null },
|
||
|
{ time: 12, num: null }, { time: 13, num: null },
|
||
|
{ time: 14, num: null }, { time: 15, num: null },
|
||
|
{ time: 16, num: null }, { time: 17, num: null },
|
||
|
{ time: 18, num: null }, { time: 19, num: null },
|
||
|
{ time: 20, num: null }, { time: 21, num: null },
|
||
|
{ time: 22, num: null }
|
||
|
],
|
||
|
area:
|
||
|
[
|
||
|
{ time: 6, num: null }, { time: 7, num: null },
|
||
|
{ time: 8, num: null }, { time: 9, num: null },
|
||
|
{ time: 10, num: null }, { time: 11, num: null },
|
||
|
{ time: 12, num: null }, { time: 13, num: null },
|
||
|
{ time: 14, num: null }, { time: 15, num: null },
|
||
|
{ time: 16, num: null }, { time: 17, num: null },
|
||
|
{ time: 18, num: null }, { time: 19, num: null },
|
||
|
{ time: 20, num: null }, { time: 21, num: null },
|
||
|
{ time: 22, num: null }
|
||
|
]
|
||
|
},
|
||
|
|
||
|
createSimulationData: function () {
|
||
|
var categories = [];
|
||
|
var data = [];
|
||
|
var predictdata = [];
|
||
|
for (var i = 0; i < 17; i++) {
|
||
|
categories.push("time:"+(i+6));
|
||
|
|
||
|
data.push(this.data.area[i].num);
|
||
|
predictdata.push(this.data.predict[i].num);
|
||
|
}
|
||
|
// data[4] = null;
|
||
|
return {
|
||
|
categories: categories,
|
||
|
data: data,
|
||
|
predictdata: predictdata
|
||
|
}
|
||
|
},
|
||
|
touchHandler: function (e) {
|
||
|
console.log(lineChart.getCurrentDataIndex(e));
|
||
|
lineChart.showToolTip(e, {
|
||
|
// background: '#7cb5ec',
|
||
|
format: function (item, category) {
|
||
|
return category + ' ' + item.name + ':' + item.data
|
||
|
}
|
||
|
});
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 生命周期函数--监听页面加载
|
||
|
*/
|
||
|
onLoad: function () {
|
||
|
this.getbusinessnum();
|
||
|
this.getareanum();
|
||
|
this.predicrtnum();
|
||
|
var windowWidth = 200;
|
||
|
try {
|
||
|
var res = wx.getSystemInfoSync();
|
||
|
windowWidth = res.windowWidth;
|
||
|
} catch (e) {
|
||
|
console.error('getSystemInfoSync failed!');
|
||
|
}
|
||
|
|
||
|
var simulationData = this.createSimulationData();
|
||
|
lineChart = new wxCharts({
|
||
|
canvasId: 'lineCanvas',
|
||
|
type: 'line',
|
||
|
categories: simulationData.categories,
|
||
|
animation: true,
|
||
|
// background: '#f5f5f5',
|
||
|
series: [{
|
||
|
name: '实时数据',
|
||
|
data: simulationData.data,
|
||
|
format: function (val, name) {
|
||
|
return val.toFixed(2) + '人';
|
||
|
}
|
||
|
}, {
|
||
|
name: '预测数据',
|
||
|
data: simulationData.predictdata,
|
||
|
format: function (val, name) {
|
||
|
return val.toFixed(2) + '人';
|
||
|
}
|
||
|
}],
|
||
|
xAxis: {
|
||
|
disableGrid: true
|
||
|
},
|
||
|
yAxis: {
|
||
|
title: '游客人数 (人)',
|
||
|
format: function (val) {
|
||
|
return val.toFixed(2);
|
||
|
},
|
||
|
min: 0
|
||
|
},
|
||
|
width: 310,
|
||
|
height: 150,
|
||
|
dataLabel: false,
|
||
|
dataPointShape: true,
|
||
|
extra: {
|
||
|
lineStyle: 'curve'
|
||
|
}
|
||
|
});
|
||
|
|
||
|
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 生命周期函数--监听页面初次渲染完成
|
||
|
*/
|
||
|
onReady: function () {
|
||
|
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 生命周期函数--监听页面显示
|
||
|
*/
|
||
|
onShow: function () {
|
||
|
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 生命周期函数--监听页面隐藏
|
||
|
*/
|
||
|
onHide: function () {
|
||
|
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 生命周期函数--监听页面卸载
|
||
|
*/
|
||
|
onUnload: function () {
|
||
|
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 页面相关事件处理函数--监听用户下拉动作
|
||
|
*/
|
||
|
onPullDownRefresh: function () {
|
||
|
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 页面上拉触底事件的处理函数
|
||
|
*/
|
||
|
onReachBottom: function () {
|
||
|
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 用户点击右上角分享
|
||
|
*/
|
||
|
onShareAppMessage: function () {
|
||
|
|
||
|
},
|
||
|
getbusinessnum: function (e) {
|
||
|
|
||
|
for (var i = 0; i < 51; i++) {
|
||
|
if (this.data.business[i].time < 11) {
|
||
|
var random = Math.ceil(Math.random() * 20);
|
||
|
var str = "business[" + i + "].num";
|
||
|
this.setData({ [str]: random });
|
||
|
}
|
||
|
else if (this.data.business[i].time < 14) {
|
||
|
random = Math.ceil(Math.random() * 100);
|
||
|
str = "business[" + i + "].num";
|
||
|
this.setData({ [str]: random })
|
||
|
if (this.data.business[i].num < 50)
|
||
|
i--;
|
||
|
}
|
||
|
|
||
|
else if (this.data.business[i].time < 18) {
|
||
|
random = Math.ceil(Math.random() * 60);
|
||
|
str = "business[" + i + "].num";
|
||
|
this.setData({ [str]: random })
|
||
|
if (this.data.business[i].num < 30)
|
||
|
i--;
|
||
|
}
|
||
|
|
||
|
else if (this.data.business[i].time < 20) {
|
||
|
random = Math.ceil(Math.random() * 100);
|
||
|
str = "business[" + i + "].num";
|
||
|
this.setData({ [str]: random })
|
||
|
if (this.data.business[i].num < 50)
|
||
|
i--;
|
||
|
}
|
||
|
else {
|
||
|
random = Math.ceil(Math.random() * 20);
|
||
|
str = "business[" + i + "].num";
|
||
|
this.setData({ [str]: random })
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|
||
|
}
|
||
|
,
|
||
|
|
||
|
getareanum: function (e) {
|
||
|
|
||
|
for (var i = 0; i < this.data.area.length; i++) {
|
||
|
var str = "area[" + i + "].num";
|
||
|
this.setData({ [str]: Math.ceil((this.data.business[i].num + this.data.business[i + 17].num + this.data.business[i + 34].num) / 3) })
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
},
|
||
|
predicrtnum: function () {
|
||
|
var avenum = 0
|
||
|
var avetime = 0
|
||
|
var powtime = 0
|
||
|
var timenum = 0
|
||
|
var a = 0
|
||
|
var b = 0
|
||
|
for(var i=0;i<17;i++){
|
||
|
if (this.data.predict[i].time < 11) {
|
||
|
for (var j = 0; j < this.data.predict[i].time - 5; j++)
|
||
|
{ this.data.predict[i].num += this.data.area[j].num }
|
||
|
this.data.predict[i].num = Math.ceil(this.data.predict[i].num / (this.data.predict[i].time - 5))
|
||
|
}
|
||
|
else if(this.data.predict[i].time==11)
|
||
|
this.data.predict[i].num = Math.ceil(this.data.area[i-1].num*8);
|
||
|
else {
|
||
|
this.data.predict[i].num =Math.ceil (this.data.area[i - 1].num*0.9 + this.data.area[i - 2].num*0.05 + this.data.area[i - 3].num*0.05);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
})
|