.xml
<view >
<van-row style="margin:15px">
<van-col span="24">
<van-field readonly value="{{ name }}" border="{{ false }}" disabled is-link bindtap="showPopup" label="传感器类别:"/>
<van-popup show="{{show}}" position="top">
<van-picker columns="{{categoryArr}}" show-toolbar bind:cancel="categoryOnClose" bind:confirm="onConfirm"
value-key="name" />
</van-popup>
</van-col>
<!-- <van-col span="4">
<van-button type="primary" size="small" style=" line-height: 90rpx;" bindtap="getCategoryArr">查询</van-button>
</van-col> -->
</van-row>
<van-row>
<van-col span="9"> <pickerYMDHM class="fl" placeholder="{{placeholder}}" date="{{date}}" disabled="{{disabled}}"
bind:onPickerChange="onPickerChange" startDate="{{startDate}}" endDate="{{endDate}}">
</pickerYMDHM> </van-col>
<van-col span="9"><pickerYMDHM class="fl" placeholder="{{placeholder1}}" date="{{date1}}" disabled="{{disabled}}"
bind:onPickerChange="onPickerChange1" startDate="{{startDate1}}" endDate="{{endDate1}}">
</pickerYMDHM></van-col>
<van-col span="6"><van-button type="primary" size="small" style="line-height: 40px;margin-left:20px" bindtap="getCategoryArrqqqqq">查询</van-button></van-col>
</van-row>
<!-- 循环多个图表 -->
<view class="boxxx" wx:for="{{ecLine}}" wx:key="index">
<ec-canvas wx:if="{{!show}}" id="{{'myecharts' + index}}" canvas-id="{{'myecharts' + index}}" ec="{{ ecLine[index] }}"></ec-canvas>
</view>
</view>
.js
const api = require('../../utils/api.js') // 引入api接口管理文件
import * as echarts from '../../ec-canvas/echarts';
var lessonChart = null;
function getOption(xAxis, yAxis1, yAxis2, yAxis3,nameN) {
var option = {
title: {
text: nameN,
left: 'center',
textStyle: {
fontSize: 14,
color: '#696969'
},
},
legend: {
data: ['最大值', '最小值', '典型值'],
top: 25,
left: 'center',
z: 0
},
xAxis: {
type: 'category',
boundaryGap: false,
data: xAxis,
axisLabel: {
interval: 2, //x轴间隔多少显示刻度
fontSize: 8,
}
},
yAxis: {
type: 'value'
},
series: [{
name: '最大值',
type: 'line',
smooth: true,
data: yAxis1,
}, {
name: '最小值',
type: 'line',
smooth: true,
data: yAxis2,
}, {
name: '典型值',
type: 'line',
smooth: true,
data: yAxis3,
}]
};
return option;
}
Page({
data: {
categoryArr: [],
ecLine: [],
// //弹出层控制
show: false,
id: '',
name: '',
date: '2021-11-20 9:00',
disabled: false, //设置是否能点击 false可以 true不能点击
startDate: '2021-11-20 9:00',
endDate: '2028-03-12 12:38',
placeholder: '查询开始时间',
date1: '2021-11-20 9:00',
startDate1:'2021-11-20 9:00',
endDate1: '2028-03-12 12:38',
placeholder1: '查询结束时间',
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (option) {
this.getinfo() ;
},
onPickerChange: function (e) {
this.setData({
date: e.detail.dateString,
})
},
onPickerChange1: function (e) {
console.log(e.detail);
this.setData({
date1: e.detail.dateString
})
},
//按时间查询 这个先不用管
getCategoryArrqqqqq(){
var _this = this;
// 模拟请求后台接口之后返回的数据
if(this.data.id ==""){
wx.showToast({
title: '请选择传感器类别!',
icon: 'none',
duration: 2000
})
return false
}
api._get('/oil/tranInfoMax/'+this.data.id, {
starTime:this.data.date,
endTime:this.data.date1
}).then(res => {
let ecLineArr = [];
// 先清掉旧的canvas的缓存
_this.setData({
ecLine: ecLineArr
})
let dataArr = res.paramList;
let nameList = res.nameList;
var arr = []; //定义数组
//字符串转数组
for (var i in dataArr) {
arr.push(dataArr[i]);
}
for (let i = 0; i < arr.length; i++) {
let objAttr = {};
for (let j = 0; j < arr[i].length; j++) {
//给对象赋属性名,属性值
if (0 == j) {
var key = "yAxis1";
var value = arr[i][j]
objAttr[key] = value;
}
if (1 == j) {
var key = "yAxis2";
var value = arr[i][j]
objAttr[key] = value;
}
if (2 == j) {
var key = "yAxis3";
var value = arr[i][j]
objAttr[key] = value;
}
if (3 == j) {
var key = "xAxis";
var value = arr[i][j];
var arryTime=[];
value.forEach(element => {
var element= element.substring(5,10);
arryTime.push(element)
});
objAttr[key] = arryTime;
}
}
let obj = {
onInit: function (canvas, width, height) {
//初始化echarts元素
lessonChart = echarts.init(canvas, null, {
width: width,
height: height
});
canvas.setChart(lessonChart);
var option = getOption(objAttr.xAxis, objAttr.yAxis1, objAttr.yAxis2, objAttr.yAxis3,nameList[i].title);
console.log(objAttr.yAxis3, )
lessonChart.clear();
lessonChart.setOption(option,true);
return lessonChart;
}
}
ecLineArr.push(obj);
}
_this.setData({
ecLine: ecLineArr
})
}).catch(e => {
console.log(e)
})
},
getDetail: function () {
var _this = this;
// 模拟请求后台接口之后返回的数据
let dataArrone = [
// {
// xAxis: ['02-11', '02-13', '02-15', '02-17', '02-23', '02-25', '02-28'],
// yAxis1: [1.4, 1.3, 1.6, 1.9, 1.8, 1.6, 2.0],
// yAxis2: [1.8, 1.6, 1.7, 1.8, 1.0, 1.6, 3.0],
// yAxis3: [2.4, 2.3, 2.6, 1.9, 1.8, 2.6, 2.0],
// },
// {
// xAxis: ['03-11', '03-13', '03-15', '03-17', '03-23', '03-25', '03-28'],
// yAxis1: [2.4, 2.3, 2.6, 1.9, 1.8, 2.6, 2.0],
// yAxis2: [1.8, 1.6, 1.7, 1.8, 1.0, 1.6, 3.0],
// yAxis3: [1.4, 1.3, 1.6, 1.9, 1.8, 1.6, 2.0],
// }
]
//类别查询
api._get('/oil/tranInfoMax/'+this.data.id, ).then(res => {
let ecLineArr = [];
// 先清掉旧的canvas的缓存
_this.setData({
ecLine: ecLineArr
})
let dataArr = res.paramList;
let nameList = res.nameList;
var arr = []; //定义数组
//字符串转数组
for (var i in dataArr) {
arr.push(dataArr[i]);
}
console.log(2)
for (let i = 0; i < arr.length; i++) {
let objAttr = {};
for (let j = 0; j < arr[i].length; j++) {
//给对象赋属性名,属性值
if (0 == j) {
var key = "yAxis1";
var value = arr[i][j]
objAttr[key] = value;
}
if (1 == j) {
var key = "yAxis2";
var value = arr[i][j]
objAttr[key] = value;
}
if (2 == j) {
var key = "yAxis3";
var value = arr[i][j]
objAttr[key] = value;
}
if (3 == j) {
var key = "xAxis";
var value = arr[i][j];
var arryTime=[];
value.forEach(element => {
var element= element.substring(5,10);
arryTime.push(element)
});
objAttr[key] = arryTime;
}
}
let obj = {
onInit: function (canvas, width, height) {
//初始化echarts元素
console.log(lessonChart)
lessonChart = echarts.init(canvas, null, {
width: width,
height: height
});
canvas.setChart(lessonChart);
// debugger //这里只执行了一次
console.log(3)
var option = getOption(objAttr.xAxis, objAttr.yAxis1, objAttr.yAxis2, objAttr.yAxis3,nameList[i].title);
lessonChart.setOption(option,true);
console.log(4)
return lessonChart;
}
}
ecLineArr.push(obj);
console.log("ecLineArr",ecLineArr)
}
_this.setData({
ecLine: ecLineArr
})
}).catch(e => {
console.log(e)
})
},
// 获取 下拉框信息
getinfo() {
api._get('/oil/queryTranList/' + wx.getStorageSync('userId'), {}).then(res => {
this.setData({
categoryArr: Object.assign([], res.tranList),
})
}).catch(e => {
console.log(e)
})
},
// 查询获取
getCategoryArr() {
if(this.data.id ==""){
wx.showToast({
title: '请选择传感器类别!',
icon: 'none',
duration: 2000
})
return false
}
api._get('/oil/tranInfo/' + this.data.id, ).then(res => {
let arr = []
res.bodyList.forEach((item, index) => {
for (const key in item) {
item[key] = item[key] ? item[key] : '-'
}
arr.push(item)
})
this.setData({
headerList: Object.assign([], res.headerList),
bodyList: Object.assign([], res.bodyList),
})
var _this = this;
console.log(1)
_this.getDetail();
}).catch(e => {
console.log(e)
})
},
//选择器 点击完成按钮时触发
onConfirm(event) {
this.setData({
'id': event.detail.value.id,
'name': event.detail.value.name,
show: false,
});
this.getCategoryArr();
},
//选择器 点击取消按钮时触发
categoryOnClose() {
this.setData({
show: false
});
},
//点击触发弹出框
showPopup() {
this.setData({
show: true
});
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
})