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.
228 lines
5.9 KiB
228 lines
5.9 KiB
|
6 months ago
|
import dayjs from 'dayjs'
|
||
|
|
const _app = getApp<IAppOption>()
|
||
|
|
let echarts: any = null
|
||
|
|
|
||
|
|
Page({
|
||
|
|
data: {
|
||
|
|
type: '1',
|
||
|
|
BeginMonth: '',
|
||
|
|
EndMonth: '',
|
||
|
|
},
|
||
|
|
chartComponent1: null as any,
|
||
|
|
chartComponent2: null as any,
|
||
|
|
chartComponent3: null as any,
|
||
|
|
async onLoad() {
|
||
|
|
this.handleChangeType()
|
||
|
|
echarts = await require.async('../../../gift/compontnts/echart/echarts.js')
|
||
|
|
this.chartComponent1 = this.selectComponent('#chart1')
|
||
|
|
this.chartComponent2 = this.selectComponent('#chart2')
|
||
|
|
this.chartComponent3 = this.selectComponent('#chart3')
|
||
|
|
this.initChart()
|
||
|
|
},
|
||
|
|
|
||
|
|
handleChangeType(e?: WechatMiniprogram.CustomEvent) {
|
||
|
|
let type = ''
|
||
|
|
let callback = true
|
||
|
|
if (e) {
|
||
|
|
type = e.currentTarget.dataset.type
|
||
|
|
} else {
|
||
|
|
type = this.data.type
|
||
|
|
callback = false
|
||
|
|
}
|
||
|
|
let EndMonth = ''
|
||
|
|
let BeginMonth = ''
|
||
|
|
if (type == '1') {
|
||
|
|
EndMonth = dayjs().format('YYYY-MM-DD')
|
||
|
|
BeginMonth = dayjs().subtract(6, 'd').format('YYYY-MM-DD')
|
||
|
|
} else if (type == '2') {
|
||
|
|
EndMonth = dayjs().format('YYYY-MM')
|
||
|
|
BeginMonth = dayjs().subtract(1, 'M').format('YYYY-MM')
|
||
|
|
} else if (type == '3') {
|
||
|
|
EndMonth = dayjs().format('YYYY')
|
||
|
|
BeginMonth = dayjs().subtract(1, 'y').format('YYYY')
|
||
|
|
} else if (type == '4' && e) {
|
||
|
|
}
|
||
|
|
this.setData({
|
||
|
|
page: 0,
|
||
|
|
Type: type,
|
||
|
|
Num: '5',
|
||
|
|
EndMonth,
|
||
|
|
BeginMonth,
|
||
|
|
})
|
||
|
|
if (callback) {
|
||
|
|
this.handleTabCallBack()
|
||
|
|
}
|
||
|
|
},
|
||
|
|
initChart(defaultList = []) {
|
||
|
|
const list: any = [
|
||
|
|
{
|
||
|
|
Date: '2025-09-04',
|
||
|
|
TotalScore: '5',
|
||
|
|
},
|
||
|
|
{
|
||
|
|
Date: '2025-09-05',
|
||
|
|
TotalScore: '5',
|
||
|
|
},
|
||
|
|
{
|
||
|
|
Date: '2025-09-06',
|
||
|
|
TotalScore: '5',
|
||
|
|
},
|
||
|
|
]
|
||
|
|
return new Promise((reslove) => {
|
||
|
|
this.chartComponent1.init((canvas, width, height, dpr) => {
|
||
|
|
const chart = echarts.init(canvas, null, {
|
||
|
|
width,
|
||
|
|
height,
|
||
|
|
devicePixelRatio: dpr, // new
|
||
|
|
})
|
||
|
|
canvas.setChart(chart)
|
||
|
|
|
||
|
|
const option: any = {
|
||
|
|
tooltip: {
|
||
|
|
show: false,
|
||
|
|
trigger: 'axis',
|
||
|
|
axisPointer: {
|
||
|
|
type: 'shadow',
|
||
|
|
},
|
||
|
|
confine: true,
|
||
|
|
backgroundColor: 'rgba(0, 0, 0, 0.5)',
|
||
|
|
textStyle: {
|
||
|
|
color: '#fff',
|
||
|
|
fontSize: 10,
|
||
|
|
},
|
||
|
|
order: 'seriesDesc',
|
||
|
|
},
|
||
|
|
grid: {
|
||
|
|
top: '30',
|
||
|
|
left: '0',
|
||
|
|
right: '0',
|
||
|
|
bottom: '10',
|
||
|
|
containLabel: true,
|
||
|
|
},
|
||
|
|
xAxis: [
|
||
|
|
{
|
||
|
|
type: 'category',
|
||
|
|
axisTick: {
|
||
|
|
show: false,
|
||
|
|
inside: true,
|
||
|
|
length: 1,
|
||
|
|
alignWithLabel: true,
|
||
|
|
lineStyle: {
|
||
|
|
type: 'dotted',
|
||
|
|
color: '#D8D8D8',
|
||
|
|
width: 4,
|
||
|
|
cap: 'round',
|
||
|
|
},
|
||
|
|
},
|
||
|
|
axisLine: {
|
||
|
|
lineStyle: {
|
||
|
|
color: '#8C8C8C',
|
||
|
|
type: 'dashed',
|
||
|
|
},
|
||
|
|
},
|
||
|
|
splitLine: {
|
||
|
|
show: true,
|
||
|
|
showMinLine: false,
|
||
|
|
lineStyle: {
|
||
|
|
type: 'dotted',
|
||
|
|
color: 'rgba(137, 141, 151, 0.23)',
|
||
|
|
},
|
||
|
|
},
|
||
|
|
data: list.map((item) => dayjs(item.Date).format('MM-DD')),
|
||
|
|
},
|
||
|
|
],
|
||
|
|
yAxis: [
|
||
|
|
{
|
||
|
|
type: 'value',
|
||
|
|
minInterval: 20,
|
||
|
|
max: 100,
|
||
|
|
axisLine: {
|
||
|
|
show: false,
|
||
|
|
lineStyle: {
|
||
|
|
type: 'solid',
|
||
|
|
color: 'rgba(161, 164, 172, 1)',
|
||
|
|
},
|
||
|
|
},
|
||
|
|
splitLine: {
|
||
|
|
show: true,
|
||
|
|
showMinLine: false,
|
||
|
|
lineStyle: {
|
||
|
|
type: 'dotted',
|
||
|
|
color: 'rgba(137, 141, 151, 0.23)',
|
||
|
|
},
|
||
|
|
},
|
||
|
|
},
|
||
|
|
],
|
||
|
|
series: [
|
||
|
|
{
|
||
|
|
name: '总分',
|
||
|
|
data: list.length ? list.map((item) => item.TotalScore) : [25],
|
||
|
|
barWidth: '16',
|
||
|
|
label: {
|
||
|
|
show: true,
|
||
|
|
position: 'top',
|
||
|
|
color: '#B982FF',
|
||
|
|
},
|
||
|
|
type: 'line',
|
||
|
|
symbolSize: 4,
|
||
|
|
showSymbol: list.length >= 1,
|
||
|
|
connectNulls: true,
|
||
|
|
z: 10,
|
||
|
|
itemStyle: {
|
||
|
|
color: '#B982FF',
|
||
|
|
},
|
||
|
|
markLine: {
|
||
|
|
symbol: ['none', 'none'],
|
||
|
|
data: [
|
||
|
|
{
|
||
|
|
name: '达标区',
|
||
|
|
yAxis: 80,
|
||
|
|
label: {
|
||
|
|
formatter: '{b}',
|
||
|
|
position: 'insideMiddle',
|
||
|
|
color: '#24D8C8',
|
||
|
|
fontSize: '10',
|
||
|
|
},
|
||
|
|
lineStyle: {
|
||
|
|
cap: '',
|
||
|
|
color: '#34D7C7',
|
||
|
|
type: 'dashed',
|
||
|
|
},
|
||
|
|
},
|
||
|
|
],
|
||
|
|
},
|
||
|
|
markArea: {
|
||
|
|
itemStyle: {
|
||
|
|
color: 'rgba(37,217,200,0.19)',
|
||
|
|
},
|
||
|
|
data: [
|
||
|
|
[
|
||
|
|
{
|
||
|
|
yAxis: 80,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
yAxis: 100,
|
||
|
|
},
|
||
|
|
],
|
||
|
|
],
|
||
|
|
},
|
||
|
|
},
|
||
|
|
],
|
||
|
|
dataZoom: {
|
||
|
|
type: 'inside', // 有type这个属性,滚动条在最下面,也可以不行,写y:36,这表示距离顶端36px,一般就是在图上面。
|
||
|
|
startValue: 0,
|
||
|
|
endValue: 4,
|
||
|
|
filterMode: 'none',
|
||
|
|
},
|
||
|
|
}
|
||
|
|
|
||
|
|
chart.setOption(option)
|
||
|
|
reslove(chart)
|
||
|
|
return chart
|
||
|
|
})
|
||
|
|
})
|
||
|
|
},
|
||
|
|
})
|
||
|
|
|
||
|
|
export {}
|