首页功率趋势发电量趋势接口调试
This commit is contained in:
parent
c40d2d55b2
commit
b1b986a516
@ -1,5 +1,6 @@
|
|||||||
import createAxios from '/@/utils/axios'
|
import createAxios from '/@/utils/axios'
|
||||||
import {addDataType, getDataReturnType, getDataType, getTreeDataReturnType} from "/@/views/backend/auth/org/type";
|
import {addDataType, getDataReturnType, getDataType, getTreeDataReturnType} from "/@/views/backend/auth/org/type";
|
||||||
|
import {RequestReturnType} from "/@/views/backend/auth/model/type";
|
||||||
|
|
||||||
export const url = '/admin/Dashboard/'
|
export const url = '/admin/Dashboard/'
|
||||||
|
|
||||||
@ -32,3 +33,10 @@ export function getWindTurbineMatrixData(params: object = {}) {
|
|||||||
data: params,
|
data: params,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
export const getHistoryData = (data: { startTime: number, endTime: number, devices: { deviceId: string, attributes?: string[] }[],interval?:string }) => {
|
||||||
|
return createAxios<never, RequestReturnType<any>>({
|
||||||
|
url: '/api/home/getHistoryData',
|
||||||
|
method: 'post',
|
||||||
|
data: data,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
@ -320,7 +320,11 @@ import * as echarts from 'echarts'
|
|||||||
import { useTemplateRefsList,useEventListener } from '@vueuse/core'
|
import { useTemplateRefsList,useEventListener } from '@vueuse/core'
|
||||||
import {useI18n} from "vue-i18n";
|
import {useI18n} from "vue-i18n";
|
||||||
import WindContent from '/@/views/backend/home/windMatrix.vue'
|
import WindContent from '/@/views/backend/home/windMatrix.vue'
|
||||||
import {getWindFarmRealData,getWindTurbineMatrixData,getRealValueRangeReq} from "/@/api/backend/dashboard.ts";
|
import {
|
||||||
|
getWindFarmRealData,
|
||||||
|
getWindTurbineMatrixData,
|
||||||
|
getHistoryData
|
||||||
|
} from "/@/api/backend/dashboard.ts";
|
||||||
import {dayjs, ElMessage, TableInstance} from "element-plus";
|
import {dayjs, ElMessage, TableInstance} from "element-plus";
|
||||||
import { getRealTimeState } from '/@/views/backend/equipment/airBlower/utils.ts'
|
import { getRealTimeState } from '/@/views/backend/equipment/airBlower/utils.ts'
|
||||||
import {useRoute} from "vue-router";
|
import {useRoute} from "vue-router";
|
||||||
@ -507,11 +511,11 @@ const state: {
|
|||||||
pauseWork: false,
|
pauseWork: false,
|
||||||
})
|
})
|
||||||
const powerChartRef = ref()
|
const powerChartRef = ref()
|
||||||
/*const powerChartData: { time: any; values: any } = {
|
const powerChartData: { time: any; values: any } = {
|
||||||
time: {},
|
time: {},
|
||||||
values: {},
|
values: {},
|
||||||
}*/
|
}
|
||||||
const powerChartData = {
|
/*const powerChartData = {
|
||||||
time: {
|
time: {
|
||||||
iGenPower:['00:00','00:05','00:10','00:15'],
|
iGenPower:['00:00','00:05','00:10','00:15'],
|
||||||
iTheoreticalPower:['00:00','00:05','00:10','00:15'],
|
iTheoreticalPower:['00:00','00:05','00:10','00:15'],
|
||||||
@ -522,7 +526,7 @@ const powerChartData = {
|
|||||||
iTheoreticalPower:[0,0,0,0],
|
iTheoreticalPower:[0,0,0,0],
|
||||||
iWindSpeed:[3,8,9,1]
|
iWindSpeed:[3,8,9,1]
|
||||||
},
|
},
|
||||||
}
|
}*/
|
||||||
const initpowerChart = () => {
|
const initpowerChart = () => {
|
||||||
const powerChart = state.charts.powerChart ?? echarts.init(powerChartRef.value as unknown as HTMLElement)
|
const powerChart = state.charts.powerChart ?? echarts.init(powerChartRef.value as unknown as HTMLElement)
|
||||||
const option = {
|
const option = {
|
||||||
@ -565,7 +569,7 @@ const initpowerChart = () => {
|
|||||||
color: '#999999',
|
color: '#999999',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
data: powerChartData.time.iTheoreticalPower,
|
data: powerChartData.time.WindFarmAvgWindSpeed,
|
||||||
},
|
},
|
||||||
yAxis: [
|
yAxis: [
|
||||||
{
|
{
|
||||||
@ -630,24 +634,24 @@ const initpowerChart = () => {
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
legend: {
|
legend: {
|
||||||
data: ['功率', '风速'],
|
data: ['全场总有功功率', '全场平均风速'],
|
||||||
textStyle: {
|
textStyle: {
|
||||||
color: '#73767a',
|
color: '#73767a',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
series: [
|
series: [
|
||||||
{
|
{
|
||||||
name: '功率',
|
name: '全场总有功功率',
|
||||||
type: 'bar',
|
type: 'bar',
|
||||||
barWidth: 20,
|
barWidth: 20,
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
color: '#00A7EB',
|
color: '#00A7EB',
|
||||||
barBorderRadius: 2
|
barBorderRadius: 2
|
||||||
},
|
},
|
||||||
data: powerChartData.values?.iGenPower ?? [],
|
data: powerChartData.values?.WindFarmActivePower ?? [],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: '风速',
|
name: '全场平均风速',
|
||||||
type: 'line',
|
type: 'line',
|
||||||
yAxisIndex: 1,
|
yAxisIndex: 1,
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
@ -664,7 +668,7 @@ const initpowerChart = () => {
|
|||||||
}
|
}
|
||||||
])
|
])
|
||||||
},
|
},
|
||||||
data: powerChartData.values?.iWindSpeed ?? [],
|
data: powerChartData.values?.WindFarmAvgWindSpeed ?? [],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
@ -675,7 +679,7 @@ const initpowerChart = () => {
|
|||||||
|
|
||||||
|
|
||||||
const trendChartRef = ref<VNodeRef>()
|
const trendChartRef = ref<VNodeRef>()
|
||||||
const TrendDataForDay = [
|
/*const TrendDataForDay = [
|
||||||
{
|
{
|
||||||
currentPeriod: 86.3,
|
currentPeriod: 86.3,
|
||||||
samePeriod: 63.5,
|
samePeriod: 63.5,
|
||||||
@ -691,8 +695,47 @@ const TrendDataForDay = [
|
|||||||
samePeriod: 43.5,
|
samePeriod: 43.5,
|
||||||
generationTime: '2024-10-03',
|
generationTime: '2024-10-03',
|
||||||
},
|
},
|
||||||
]
|
]*/
|
||||||
const TrendDataForMonth = [
|
const TrendDataForDay: {
|
||||||
|
currentPeriod: {
|
||||||
|
time: string[]
|
||||||
|
value: number[]
|
||||||
|
}
|
||||||
|
samePeriod: {
|
||||||
|
time: string[]
|
||||||
|
value: number[]
|
||||||
|
}
|
||||||
|
} = {
|
||||||
|
currentPeriod: {
|
||||||
|
time: [],
|
||||||
|
value: [],
|
||||||
|
},
|
||||||
|
samePeriod: {
|
||||||
|
time: [],
|
||||||
|
value: [],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
const TrendDataForMonth :{
|
||||||
|
currentPeriod: {
|
||||||
|
time: string[]
|
||||||
|
value: number[]
|
||||||
|
}
|
||||||
|
samePeriod: {
|
||||||
|
time: string[]
|
||||||
|
value: number[]
|
||||||
|
}
|
||||||
|
} = {
|
||||||
|
currentPeriod: {
|
||||||
|
time: [],
|
||||||
|
value: [],
|
||||||
|
},
|
||||||
|
samePeriod: {
|
||||||
|
time: [],
|
||||||
|
value: [],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
/*const TrendDataForMonth = [
|
||||||
{
|
{
|
||||||
currentPeriod: 26.3,
|
currentPeriod: 26.3,
|
||||||
samePeriod: 53.5,
|
samePeriod: 53.5,
|
||||||
@ -708,13 +751,15 @@ const TrendDataForMonth = [
|
|||||||
samePeriod: 53.5,
|
samePeriod: 53.5,
|
||||||
generationTime: '2024-10-03',
|
generationTime: '2024-10-03',
|
||||||
},
|
},
|
||||||
]
|
]*/
|
||||||
|
|
||||||
const inittrendChart = (type: 'day' | 'month') => {
|
const inittrendChart = (type: 'day' | 'month') => {
|
||||||
const currentPeriod: any =
|
/* const currentPeriod: number[] = type === 'day' ? TrendDataForDay.currentPeriod.value : TrendDataForMonth.map((item) => item.currentPeriod)
|
||||||
type === 'day' ? TrendDataForDay.map((item) => item.currentPeriod) : TrendDataForMonth.map((item) => item.currentPeriod)
|
const samePeriod: number[] = type === 'day' ? TrendDataForDay.samePeriod.value : TrendDataForMonth.map((item) => item.samePeriod)
|
||||||
const samePeriod: any = type === 'day' ? TrendDataForDay.map((item) => item.samePeriod) : TrendDataForMonth.map((item) => item.samePeriod)
|
const xAxisdata: string[] = type === 'day' ? TrendDataForDay.currentPeriod.time : TrendDataForMonth.map((item) => item.generationTime)*/
|
||||||
const xAxisdata: any = type === 'day' ? TrendDataForDay.map((item) => item.generationTime) : TrendDataForMonth.map((item) => item.generationTime)
|
const currentPeriod: number[] = type === 'day' ? TrendDataForDay.currentPeriod.value : TrendDataForMonth.currentPeriod.value
|
||||||
|
const samePeriod: number[] = type === 'day' ? TrendDataForDay.samePeriod.value : TrendDataForMonth.samePeriod.value
|
||||||
|
const xAxisdata: string[] = type === 'day' ? TrendDataForDay.currentPeriod.time : TrendDataForMonth.currentPeriod.time
|
||||||
const trendChart = state.charts?.trendChart ?? echarts.init(trendChartRef.value as unknown as HTMLElement)
|
const trendChart = state.charts?.trendChart ?? echarts.init(trendChartRef.value as unknown as HTMLElement)
|
||||||
|
|
||||||
const option = {
|
const option = {
|
||||||
@ -895,54 +940,184 @@ const createScroll = () => {
|
|||||||
}, 30)
|
}, 30)
|
||||||
}
|
}
|
||||||
|
|
||||||
const getChartData = () => {
|
const getChartData = <T extends string = any>(params: {
|
||||||
powerChartData.time = {
|
startTime: number
|
||||||
iGenPower:['00:00','00:05','00:10','00:15'],
|
endTime: number
|
||||||
iTheoreticalPowe:['00:00','00:05','00:10','00:15'],
|
attr: T[]
|
||||||
iWindSpeed:['00:00','00:05','00:10','00:15']
|
interval: string
|
||||||
}
|
}): Promise<{ times: { [K in T]: string[] }; val: { [K in T]: number[] } }> => {
|
||||||
powerChartData.values = {
|
return new Promise((resolve) => {
|
||||||
iGenPower:[0,5,2,7],
|
|
||||||
iTheoreticalPowe:[0,0,0,0],
|
|
||||||
iWindSpeed:[3,8,9,1]
|
|
||||||
}
|
|
||||||
/*return new Promise((resolve) => {
|
|
||||||
const data = {
|
const data = {
|
||||||
startTime: new Date(new Date().toLocaleDateString()).getTime(),
|
startTime: params.startTime,
|
||||||
endTime: Date.now(),
|
endTime: params.endTime,
|
||||||
devices: [
|
devices: [
|
||||||
{
|
{
|
||||||
//deviceId: route.query.irn as string,
|
deviceId: '',
|
||||||
deviceId: '1846101273013739522',
|
attributes: params.attr,
|
||||||
attributes: ['iGenPower', 'iTheoreticalPower', 'iWindSpeed'],
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
interval: '5m',
|
interval: params.interval,
|
||||||
}
|
}
|
||||||
getRealValueRangeReq(data).then((res) => {
|
console.log(JSON.stringify(data))
|
||||||
console.log(res)
|
getHistoryData(data).then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
//const data = res.data[route.query.irn as string]
|
if (typeof res.data === 'object' && res.data !== null && Object.keys(res.data).length === 0) {
|
||||||
const data = res.data['1846101273013739522']
|
const times: any = {}
|
||||||
|
const val: any = {}
|
||||||
|
resolve({ times, val })
|
||||||
|
} else {
|
||||||
|
const data = res.data['1848624295633317890']
|
||||||
const rangeKeys = Object.keys(data)
|
const rangeKeys = Object.keys(data)
|
||||||
const times: any = {}
|
const times: any = {}
|
||||||
const val: any = {}
|
const val: any = {}
|
||||||
rangeKeys.forEach((key) => {
|
rangeKeys.forEach((key) => {
|
||||||
times[key] = []
|
times[key] = []
|
||||||
val[key] = []
|
val[key] = []
|
||||||
data[key].times.forEach((item: number, index: number) => {
|
data[key].times.forEach((item: number) => {
|
||||||
|
if(params.interval=='5m'){
|
||||||
times[key].push(dayjs(item).format('HH:mm'))
|
times[key].push(dayjs(item).format('HH:mm'))
|
||||||
|
}else if(params.interval=='1d'){
|
||||||
|
times[key].push(dayjs(item).format('DD'))
|
||||||
|
}else if(params.interval=='1n'){
|
||||||
|
times[key].push(dayjs(item).format('MM'))
|
||||||
|
}
|
||||||
})
|
})
|
||||||
data[key].values.forEach((item: number) => {
|
data[key].values.forEach((item: number) => {
|
||||||
val[key].push(item)
|
val[key].push(item)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
powerChartData.time = times
|
resolve({ times, val })
|
||||||
powerChartData.values = val
|
}
|
||||||
resolve(true)
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})*/
|
})
|
||||||
|
}
|
||||||
|
const getThisDayChartData = () => {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
getChartData<'WindFarmActivePower' | 'WindFarmAvgWindSpeed '>({
|
||||||
|
startTime: new Date(new Date().toLocaleDateString()).getTime(),
|
||||||
|
endTime: Date.now(),
|
||||||
|
attr: ['WindFarmActivePower', 'WindFarmAvgWindSpeed '],
|
||||||
|
interval: '5m',
|
||||||
|
}).then(({ times, val }) => {
|
||||||
|
powerChartData.time = { WindFarmActivePower: times.WindFarmActivePower, WindFarmAvgWindSpeed : times.WindFarmAvgWindSpeed }
|
||||||
|
powerChartData.values = { WindFarmActivePower: val.WindFarmActivePower, WindFarmAvgWindSpeed : val.WindFarmAvgWindSpeed }
|
||||||
|
resolve(true)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const getLastYearTodayTimestamp = () => {
|
||||||
|
const now = new Date()
|
||||||
|
const lastYear = now.getFullYear() - 1
|
||||||
|
const lastYearToday = new Date(lastYear, now.getMonth(), now.getDate())
|
||||||
|
return lastYearToday.getTime()
|
||||||
|
}
|
||||||
|
const getLastYearChartData = () => {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
const start = getLastYearTodayTimestamp()
|
||||||
|
const end = new Date()
|
||||||
|
end.setFullYear(end.getFullYear() - 1)
|
||||||
|
end.setMonth(end.getMonth() + 1, 0); // 设置为下个月的第一天,然后减去一天
|
||||||
|
|
||||||
|
getChartData<'WindFarmDayProdEnergy'>({
|
||||||
|
startTime: start,
|
||||||
|
endTime: end.getTime(),
|
||||||
|
attr: ['WindFarmDayProdEnergy'],
|
||||||
|
interval: '1d',
|
||||||
|
}).then(({ times, val }) => {
|
||||||
|
TrendDataForDay.samePeriod.time = times.WindFarmDayProdEnergy
|
||||||
|
TrendDataForDay.samePeriod.value = val.WindFarmDayProdEnergy
|
||||||
|
resolve(true)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const getThisDayChartForHourData = () => {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
getChartData<'WindFarmDayProdEnergy'>({
|
||||||
|
startTime: new Date(new Date().toLocaleDateString()).getTime(),
|
||||||
|
endTime: Date.now(),
|
||||||
|
attr: ['WindFarmDayProdEnergy'],
|
||||||
|
interval: '1d',
|
||||||
|
}).then(({ times, val }) => {
|
||||||
|
TrendDataForDay.currentPeriod.time = times.WindFarmDayProdEnergy
|
||||||
|
TrendDataForDay.currentPeriod.value = val.WindFarmDayProdEnergy
|
||||||
|
resolve(true)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//发电连月
|
||||||
|
const getLastMonthTodayTimestamp = () => {
|
||||||
|
const now = new Date(); // 当前日期
|
||||||
|
const thisYear = now.getFullYear(); // 获取当前年份
|
||||||
|
const lastYear = thisYear - 1; // 计算去年年份
|
||||||
|
const firstDayOfLastYear = new Date(lastYear, 0, 1); // 设置为去年的一月一日
|
||||||
|
return firstDayOfLastYear.getTime()
|
||||||
|
|
||||||
|
}
|
||||||
|
const getThisMonthTodayTimestamp = () => {
|
||||||
|
const now = new Date(); // 当前日期
|
||||||
|
const thisYear = now.getFullYear(); // 获取当前年份
|
||||||
|
const firstDayOfYear = new Date(thisYear, 0, 1); // 设置为今年的一月一日
|
||||||
|
return firstDayOfYear.getTime()
|
||||||
|
}
|
||||||
|
const getLastYear = () => {
|
||||||
|
const now = new Date(); // 当前日期
|
||||||
|
const thisYear = now.getFullYear(); // 获取当前年份
|
||||||
|
const lastYear = thisYear - 1; // 计算去年年份
|
||||||
|
const lastDayOfLastYear = new Date(lastYear, 11, 0); // 设置为去年12月的最后一天
|
||||||
|
return lastDayOfLastYear.getTime()
|
||||||
|
}
|
||||||
|
const getLastMonthChartData = () => {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
const start = getLastMonthTodayTimestamp()
|
||||||
|
const end = getLastYear()
|
||||||
|
getChartData<'WIndFarmMonthProdEnergy'>({
|
||||||
|
startTime: start,
|
||||||
|
endTime: end,
|
||||||
|
attr: ['WIndFarmMonthProdEnergy'],
|
||||||
|
interval: '1n',
|
||||||
|
}).then(({ times, val }) => {
|
||||||
|
TrendDataForMonth.samePeriod.time = times.WIndFarmMonthProdEnergy
|
||||||
|
TrendDataForMonth.samePeriod.value = val.WIndFarmMonthProdEnergy
|
||||||
|
resolve(true)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const getThisMonthChartForHourData = () => {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
const start=getThisMonthTodayTimestamp()
|
||||||
|
getChartData<'WIndFarmMonthProdEnergy'>({
|
||||||
|
startTime: start,
|
||||||
|
endTime: Date.now(),
|
||||||
|
attr: ['WIndFarmMonthProdEnergy'],
|
||||||
|
interval: '1n',
|
||||||
|
}).then(({ times, val }) => {
|
||||||
|
TrendDataForMonth.currentPeriod.time = times.WIndFarmMonthProdEnergy
|
||||||
|
TrendDataForMonth.currentPeriod.value = val.WIndFarmMonthProdEnergy
|
||||||
|
resolve(true)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const getAllChartData = (type: ('power' | 'trend')[] = ['power', 'trend']) => {
|
||||||
|
if (type.includes('power')) {
|
||||||
|
getThisDayChartData().then(() => {
|
||||||
|
initpowerChart()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (type.includes('trend')) {
|
||||||
|
const trendDataForLastYear = getLastYearChartData()
|
||||||
|
const trendDataForThisDay = getThisDayChartForHourData()
|
||||||
|
const trendDataForLastMonth = getLastMonthChartData()
|
||||||
|
const trendDataForThisMonth = getThisMonthChartForHourData()
|
||||||
|
Promise.all([trendDataForLastYear, trendDataForThisDay,trendDataForLastMonth,trendDataForThisMonth]).then(() => {
|
||||||
|
inittrendChart(trendChartType.value)
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const trendChartType = ref<'day' | 'month'>('day')
|
const trendChartType = ref<'day' | 'month'>('day')
|
||||||
@ -953,12 +1128,9 @@ const tabhandleClick = () => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
getAllChartData()
|
||||||
/* getChartData().then(() => {
|
//inittrendChart(trendChartType.value)
|
||||||
initpowerChart()
|
//initpowerChart()
|
||||||
})*/
|
|
||||||
inittrendChart(trendChartType.value)
|
|
||||||
initpowerChart()
|
|
||||||
createScroll()
|
createScroll()
|
||||||
overviewList()
|
overviewList()
|
||||||
StatusListData()
|
StatusListData()
|
||||||
@ -971,18 +1143,34 @@ onMounted(() => {
|
|||||||
}
|
}
|
||||||
})*/
|
})*/
|
||||||
const activeName = ref('first')
|
const activeName = ref('first')
|
||||||
let autoUpdateTimer: any = null
|
//let autoUpdateTimer: any = null
|
||||||
|
let autoUpdateForSecondTimer: any = null
|
||||||
|
let autoUpdateTimerForMinuteTimer: any = null
|
||||||
|
let autoUpdateTimerForHourTimer: any = null
|
||||||
const autoUpdate = () => {
|
const autoUpdate = () => {
|
||||||
if (!autoUpdateTimer) {
|
if (!autoUpdateForSecondTimer) {
|
||||||
autoUpdateTimer = setInterval(() => {
|
autoUpdateForSecondTimer = setInterval(() => {
|
||||||
StatusListData()
|
StatusListData()
|
||||||
|
overviewList()
|
||||||
}, 2000)
|
}, 2000)
|
||||||
}
|
}
|
||||||
|
if (!autoUpdateTimerForMinuteTimer) {
|
||||||
|
autoUpdateTimerForMinuteTimer = setInterval(() => {
|
||||||
|
getAllChartData(['power'])
|
||||||
|
//initpowerChart()
|
||||||
|
}, 60000)
|
||||||
|
}
|
||||||
|
if (!autoUpdateTimerForHourTimer) {
|
||||||
|
autoUpdateTimerForHourTimer = setInterval(() => {
|
||||||
|
getAllChartData(['trend'])
|
||||||
|
//inittrendChart(trendChartType.value)
|
||||||
|
}, 60000 * 30)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onUnmounted(() => {
|
onUnmounted(() => {
|
||||||
clearInterval(timer)
|
clearInterval(timer)
|
||||||
autoUpdateTimer && clearInterval(autoUpdateTimer)
|
autoUpdateForSecondTimer && clearInterval(autoUpdateForSecondTimer)
|
||||||
const chartKeys = Object.keys(state.charts) as Array<keyof typeof state.charts>
|
const chartKeys = Object.keys(state.charts) as Array<keyof typeof state.charts>
|
||||||
chartKeys.forEach((key) => {
|
chartKeys.forEach((key) => {
|
||||||
state.charts[key].dispose()
|
state.charts[key].dispose()
|
||||||
|
@ -242,6 +242,8 @@ const animationDuration=reactive({
|
|||||||
}
|
}
|
||||||
.fanlist-text{
|
.fanlist-text{
|
||||||
margin-top:30px;
|
margin-top:30px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
.content-number{
|
.content-number{
|
||||||
color: #333333;
|
color: #333333;
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
|
Loading…
Reference in New Issue
Block a user