This commit is contained in:
仲么了
2024-01-05 11:35:17 +08:00
4 changed files with 349 additions and 29 deletions

View File

@@ -25,6 +25,8 @@ import { DArrowLeft, VideoPause, DArrowRight } from '@element-plus/icons-vue'
import { ref, onMounted } from 'vue'
const interval = ref(3)
const timeFlag = ref(1)
const count = ref(0)
const disabledPicker = ref(true)
const timeValue = ref()
const backDisabled = ref(false)
@@ -70,8 +72,12 @@ onMounted(() => {
})
// 选择时间范围
const timeChange = (e: number) => {
backDisabled.value = false
preDisabled.value = false
count.value = 0
if (e == 1) {
disabledPicker.value = true
timeValue.value = [setTime(1), setTime()]
} else if (e == 2) {
disabledPicker.value = true
@@ -84,14 +90,298 @@ const timeChange = (e: number) => {
timeValue.value = [setTime(0, 7), setTime()]
} else if (e == 5) {
disabledPicker.value = false
backDisabled.value = true
preDisabled.value = true
timeValue.value = [setTime(), setTime()]
}
if (e == 1 || e == 2) {
timeFlag.value = 0
} else {
timeFlag.value = 1
}
}
// 上一个
const preClick = () => {}
// 当前
const nowTime = () => {}
const nowTime = () => {
timeChange(interval.value)
}
// 上一个
const preClick = () => {
let startTime = timeValue.value[0]
let endTime = timeValue.value[1]
let year = parseInt(startTime.substring(0, 4))
let month = parseInt(startTime.substring(5, 7))
let date = parseInt(startTime.substring(8, 10))
//按月
if (interval.value == 3) {
// 换年份
if (month == 1) {
year = year - 1
startTime = year + '-12-01'
endTime = year + '-12-31'
} else if (month <= 10) {
month = month - 1
startTime = year + '-0' + month + '-01'
let day = getDays(year, month)
endTime = year + '-0' + month + '-' + day
} else {
month = month - 1
startTime = year + '-' + month + '-01'
let day = getDays(year, month)
endTime = year + '-' + month + '-' + day
}
//按周
} else if (interval.value == 4) {
//根据开始时间推
let start = new Date(year, month - 1, date)
start.setDate(start.getDate() - 7)
startTime = formatTime(start)
var end = new Date(start)
end.setDate(start.getDate() + 6)
endTime = formatTime(end)
//按季度
} else if (interval.value == 2) {
// 换年份
if (month == 1) {
year = year - 1
startTime = year + '-10-01'
endTime = year + '-12-31'
} else {
// 还是本年
month = month - 3
startTime = year + '-0' + month + '-01'
month = month + 2
var day = getDays(year, month)
endTime = year + '-0' + month + '-' + day
}
//自定义
} else if (interval.value == 1) {
year = year - 1
startTime = year + '-01-01'
endTime = year + '-12-31'
}
timeValue.value = [startTime, endTime]
// 判断向后键的状态
// var temp = NowgetEndTime()
// timeStatus(temp, endTime)
}
//下一个
const next = () => {}
const next = () => {
//向后
let startTime = timeValue.value[0]
let endTime = timeValue.value[1]
let year = parseInt(startTime.substring(0, 4))
let month = parseInt(startTime.substring(5, 7))
let date = parseInt(startTime.substring(8, 10))
var now = new Date()
// 获取当前年份
var presentY = now.getFullYear()
// 获取当前月份
var presentM = now.getMonth() + 1
// 获取当前日期
var presentD = now.getDate()
if (interval == 3) {
if (month == 12) {
year = year + 1
// 年份进位后,大于当前的年份,是不科学的
if (presentY < year) {
startTime = presentY + '-12-01'
if (presentD < 10) {
endTime = presentY + '-12' + '-0' + presentD
} else {
endTime = presentY + '-12' + '-' + presentD
}
// 年份进位后,等于当前的年份
} else if (presentY == year) {
startTime = year + '-01-01'
if (presentM > 1) {
endTime = year + '-01-31'
} else {
if (presentD < 10) {
endTime = year + '-01' + '-0' + presentD
} else {
endTime = year + '-01' + '-' + presentD
}
}
// 年份进位后,依旧小于当前的年份
} else {
startTime = year + '-01-01'
endTime = year + '-01-31'
}
} else {
month = month + 1
// 年份等于当前年份
if (presentY == year) {
// 月份超过当前月份,是不科学的
if (month >= presentM) {
if (presentM < 10) {
startTime = year + '-0' + presentM + '-01'
if (presentD < 10) {
endTime = year + '-0' + presentM + '-0' + presentD
} else {
endTime = year + '-0' + presentM + '-' + presentD
}
} else {
startTime = year + '-' + presentM + '-01'
if (presentD < 10) {
endTime = year + '-' + presentM + '-0' + presentD
} else {
endTime = year + '-' + presentM + '-' + presentD
}
}
} else {
if (month < 10) {
startTime = year + '-0' + month + '-01'
var day = getDays(year, month)
endTime = year + '-0' + month + '-' + day
} else {
startTime = year + '-' + month + '-01'
var day = getDays(year, month)
endTime = year + '-' + month + '-' + day
}
}
// 年份小于当前的年份
} else {
if (month < 10) {
startTime = year + '-0' + month + '-01'
var day = getDays(year, month)
endTime = year + '-0' + month + '-' + day
} else {
startTime = year + '-' + month + '-01'
var day = getDays(year, month)
endTime = year + '-' + month + '-' + day
}
}
}
} else if (interval == 2) {
// 前进需要年份进位
if (month == 10) {
year = year + 1
// 年份进位后大于当前年份是不科学的
if (year > presentY) {
startTime = presentY + '-10-01'
if (presentD < 10) {
endTime = year + '-' + presentM + '-0' + presentD
} else {
endTime = year + '-' + presentM + '-' + presentD
}
} else if (year == presentY) {
startTime = year + '-01-01'
// 当前月份大约3月份
if (presentM > 3) {
endTime = year + '-03-31'
} else {
// 当前月份也在第一季度里
if (presentD < 10) {
endTime = year + '-0' + presentM + '-0' + presentD
} else {
endTime = year + '-0' + presentM + '-' + presentD
}
}
} else {
startTime = year + '-01-01'
endTime = year + '-03-31'
}
} else {
month = month + 3
// 季度进位后,超过当前月份是不科学的
if (year == presentY) {
if (month >= presentM) {
// 当季度进位后大于当前月,以当前月的时间显示季度
if (presentM > 0 && presentM < 4) {
// 第一季度
startTime = year + '-01-01'
if (presentD < 10) {
endTime = year + '-0' + presentM + '-0' + presentD
} else {
endTime = year + '-0' + presentM + '-' + presentD
}
} else if (presentM > 3 && presentM < 7) {
// 第二季度
startTime = year + '-04-01'
if (presentD < 10) {
endTime = year + '-0' + presentM + '-0' + presentD
} else {
endTime = year + '-0' + presentM + '-' + presentD
}
} else if (presentM > 6 && presentM < 10) {
// 第三季度
startTime = year + '-07-01'
if (presentD < 10) {
endTime = year + '-0' + presentM + '-0' + presentD
} else {
endTime = year + '-0' + presentM + '-' + presentD
}
} else {
// 第四季度
startTime = year + '-10-01'
if (presentD < 10) {
endTime = year + '-' + presentM + '-0' + presentD
} else {
endTime = year + '-' + presentM + '-' + presentD
}
}
} else {
if (month == 10) {
startTime = year + '-' + month + '-01'
} else {
startTime = year + '-0' + month + '-01'
}
month = month + 2
if (month >= presentM) {
endTime = NowgetEndTime()
} else {
var day = getDays(year, month)
endTime = year + '-' + month + '-' + day
}
}
} else {
if (month == 10) {
startTime = year + '-' + month + '-01'
month = month + 2
var day = getDays(year, month)
endTime = year + '-' + month + '-' + day
} else {
startTime = year + '-0' + month + '-01'
month = month + 2
var day = getDays(year, month)
endTime = year + '-0' + month + '-' + day
}
}
}
} else if (interval == 5) {
} else if (interval == 4) {
//根据开始时间推
var start = new Date(year, month - 1, date)
start.setDate(start.getDate() + 7)
startTime = formatTime(start)
var end = new Date(start)
end.setDate(start.getDate() + 6)
endTime = formatTime(end)
} else {
year = year + 1
// 年份进位后大于当前年份,是不科学的
if (year >= presentY) {
startTime = presentY + '-01-01'
if (presentM < 10) {
if (presentD < 10) {
endTime = presentY + '-0' + presentM + '-0' + presentD
} else {
endTime = presentY + '-0' + presentM + '-' + presentD
}
} else {
endTime = presentY + '-' + presentM + '-' + presentD
}
} else {
startTime = year + '-01-01'
endTime = year + '-12-31'
}
}
timeValue.value = [startTime, endTime]
}
const setTime = (flag = 0, e = 0) => {
let dd = window.XEUtils.toDateString(new Date().getTime() - e * 3600 * 1000 * 24, 'dd')
@@ -101,12 +391,11 @@ const setTime = (flag = 0, e = 0) => {
} else {
data = window.XEUtils.toDateString(new Date().getTime() - e * 3600 * 1000 * 24, 'yyyy-MM-dd')
}
console.log('🚀 ~ file: index.vue:98 ~ setTime ~ data:', dd < 4, data)
if (flag == 1) {
data = data.slice(0, 5) + '01-01'
} else if (flag == 2) {
let quarter = data.slice(5, 7) - 0
let quarter = parseInt(data.slice(5, 7))
if (0 < quarter && quarter <= 3) {
data = data.slice(0, 5) + '01-01'
} else if (3 < quarter && quarter <= 6) {
@@ -124,7 +413,41 @@ const setTime = (flag = 0, e = 0) => {
return data
}
defineExpose({ timeValue })
// 获取月份的天数
const getDays = (year: any, month: any) => {
let max = new Date(year, month, 0).getDate()
return max
}
// 时间格式化
const formatTime = (time: any) => {
return (
time.getFullYear() +
'-' +
(time.getMonth() + 1 < 10 ? '0' : '') +
(time.getMonth() + 1) +
'-' +
(time.getDate() < 10 ? '0' : '') +
time.getDate()
)
}
const NowgetEndTime = () => {
let now = new Date()
let sep = '-'
let year = now.getFullYear()
let month: any = now.getMonth() + 1
if (month < 10) {
month = '0' + month
}
let date: any = now.getDate()
if (date < 10) {
date = '0' + date
}
// 拼接当前的日期
let endTime = year + sep + month + sep + date
return endTime
}
defineExpose({ timeValue, interval, timeFlag })
</script>
<style scoped>

View File

@@ -76,7 +76,6 @@ defineOptions({
const EchartMap = ref()
const dictData = useDictData()
const options = dictData.getBasicData('Statistical_Type', ['Report_Type'])
console.log('🚀 ~ file: distribution.vue:76 ~ options:', options)
const echartMapList = ref({})
const echartList = ref({})
const titleA = ref('')

View File

@@ -127,11 +127,9 @@ const Grade = (list: any) => {
name: '电压等级',
data: echartsndArr
},
yAxis: [
{
type: 'value'
}
],
yAxis: {
name: '次数' // 给X轴加单位
},
options: {
series: [
{
@@ -160,7 +158,7 @@ const Grade = (list: any) => {
}
}
//时间
const Relation = (list: any) => {
const Relation = (list: any, interval: number) => {
let echartsndArr: string[] = []
let echartsArr: string[] = []
let echartswArr: string[] = []
@@ -194,7 +192,7 @@ const Relation = (list: any) => {
})
monthlyStatistics.value = {
title: {
text: '月份'
text: interval == 1 ? '年份' : interval == 2 ? '季度' : interval == 3 ? '月份' : ''
},
tooltip: {
formatter: function (params: any) {
@@ -220,7 +218,9 @@ const Relation = (list: any) => {
name: '月份', // 给X轴加单位
data: echartsndArr
},
yAxis: {
name: '次数' // 给X轴加单位
},
options: {
series: [
{

View File

@@ -5,7 +5,7 @@
<Area v-model="formInline.deptIndex" />
</el-form-item>
<el-form-item label="时间">
<el-date-picker v-model="formInline.searchBeginTime" type="date" placeholder="请选择时间" />
<DatePicker ref="Picker" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">查询</el-button>
@@ -25,6 +25,7 @@ import Area from '@/components/form/area/index.vue'
import { useDictData } from '@/stores/dictData'
import Echart from '@/views/dashboard/components/echart.vue'
import Tableabove from '@/views/dashboard/components/Tableabove.vue'
import DatePicker from '@/components/form/datePicker/index.vue'
import { onMounted, reactive, ref, onBeforeMount } from 'vue'
import { mainHeight } from '@/utils/layout'
defineOptions({
@@ -34,6 +35,7 @@ const activeName = ref('1')
import { getAreaCalculation } from '@/api/test'
const list = ref([])
const echarts = ref()
const Picker = ref()
const table = ref()
const dictData = useDictData()
const loading = ref(true)
@@ -43,27 +45,23 @@ const formInline = reactive({
monitorFlag: 2,
powerFlag: 2,
serverName: 'event-boot',
searchBeginTime: '2023-12-01',
searchEndTime: '2023-12-26',
statisticalType: {
name: '电网拓扑',
id: 'cc28974d259ad22642f6a1bff708f967',
code: 'Power_Network',
value: 'cc28974d259ad22642f6a1bff708f967',
gvalue: null,
label: '电网拓扑',
sort: 0
},
searchBeginTime: '',
searchEndTime: '',
statisticalType: dictData.getBasicData('Statistical_Type', ['Load_Type'])[3],
timeFlag: 1
})
// const locale=zhCn
const onSubmit = async () => {
loading.value = true
formInline.searchBeginTime = Picker.value.timeValue[0]
formInline.searchEndTime = Picker.value.timeValue[1]
formInline.timeFlag = Picker.value.timeFlag
await getAreaCalculation(formInline).then(res => {
list.value = res.data
echarts.value.Processing(res.data.areaStatistics)
echarts.value.Grade(res.data.voltageStatistics)
echarts.value.Relation(res.data.monthlyStatistics)
echarts.value.Relation(res.data.monthlyStatistics,Picker.value.interval)
table.value.info(res.data)
loading.value = false
})