From 8f50c8203c8df64dd0a566b228bae7f69156e109 Mon Sep 17 00:00:00 2001 From: web <candymxq888@outlook.com> Date: 星期二, 15 四月 2025 17:34:08 +0800 Subject: [PATCH] fix:添加季度选择器 --- src/views/screen/temperature/graphic/index.vue | 127 ++++++++++++++++++++++++++++-------------- 1 files changed, 84 insertions(+), 43 deletions(-) diff --git a/src/views/screen/temperature/graphic/index.vue b/src/views/screen/temperature/graphic/index.vue index 3fb2e77..2fc797e 100644 --- a/src/views/screen/temperature/graphic/index.vue +++ b/src/views/screen/temperature/graphic/index.vue @@ -2,16 +2,15 @@ import {ref, reactive, onMounted} from "vue"; import * as echarts from 'echarts/core'; import html2canvas from "html2canvas"; +import {getTemperaturePointList} from '@/api/screen/index.js' +import Quarter from "@/components/Quarter"; +import moment from "moment"; -const startTime = ref() -const endTime = ref() +const menuList = ref([]) +const timeType = ref('date') +const timeRange = ref() const searchVal = ref() -const selectType = ref(1); -const typeOption = ref([ - { label: '水电站流量监测点', value: 1 }, - { label: '新扎口流量监测点', value: 2 }, -]) const graphicRef = ref(null) const chartsRef = ref([]) //动态生成图表ref let charts = [] @@ -99,6 +98,10 @@ } } +const changeType = (type) => { + timeType.value = type; + timeRange.value = '' +} // 初始化图表 const initCharts = () => { @@ -118,7 +121,7 @@ // 一键导出 const handleExport = () => { - chartsRef.value?.forEach(item => { + chartsRef.value?.forEach((item, index) => { html2canvas(item, { scale: 2, // 提高渲染质量 useCORS: true, // 如果需要跨域资源 @@ -127,13 +130,27 @@ }).then(canvas => { const link = document.createElement("a"); link.href = canvas.toDataURL("image/png"); - link.download = '截图.png'; + link.download = `图表分析${index}.png`; link.click() }) }) } +// 获取水温监控点菜单 +const getTempMonitor = () => { + getTemperaturePointList().then(res => { + menuList.value = res.data + }) +} + +// 获取时间 +const getTime = (value) => { + const time = moment(value).format('YYYY-MM-DD') + console.log(time) +} + onMounted(() => { + getTempMonitor() initCharts() }) @@ -144,51 +161,75 @@ <div class="graphic-menu"> <div class="menu-t">监测点列表</div> <el-menu class="el-menu"> - <el-sub-menu index="1"> - <template #title> - <span>可移动监测点</span> + <template v-for="(item, index) in menuList" :key="index+1"> + <template v-if="item?.childrenList?.length === 0"> + <el-menu-item :index="item.id">{{ item.pointName }}</el-menu-item> </template> - <el-menu-item index="1-1">水电站流量监测点</el-menu-item> - </el-sub-menu> - <el-sub-menu index="2"> - <template #title> - <span>固定位监测点</span> + <template v-else> + <el-sub-menu :index="item.id"> + <template #title> + <span>{{ item.pointName }}</span> + </template> + <el-menu-item v-for="(child, cidx) in item.childrenList" :key="cidx" :index="child.id"> + {{ child.pointName }} + </el-menu-item> + </el-sub-menu> </template> - <el-menu-item index="2-1">新扎口流量监测点</el-menu-item> - </el-sub-menu> + </template> </el-menu> </div> <div class="graphic-info"> <div class="graphic-tool"> <div class="tool-l"> - <div class="name">开始时间</div> + <div class="name">类型</div> + <el-button-group class="ml-4"> + <el-button :type="timeType === 'date' ? 'primary' : ''" @click="changeType('date')">日</el-button> + <el-button :type="timeType === 'week' ? 'primary' : ''" @click="changeType('week')">周</el-button> + <el-button :type="timeType === 'month' ? 'primary' : ''" @click="changeType('month')">月</el-button> + <el-button :type="timeType === 'quarter' ? 'primary' : ''" @click="changeType('quarter')">季</el-button> + <el-button :type="timeType === 'year' ? 'primary' : ''" @click="changeType('year')">年</el-button> + </el-button-group> <el-date-picker - v-model="startTime" - type="datetime" - style="width: 12rem" - placeholder="请选择开始时间" + v-if="timeType === 'date'" + v-model="timeRange" + type="date" + placeholder="选择时间" + style="width: 15rem" + @change="getTime" /> - <div class="name">结束时间</div> <el-date-picker - v-model="endTime" - type="datetime" - style="width: 12rem" - placeholder="请选择结束时间" + v-if="timeType === 'week'" + v-model="timeRange" + type="week" + format="YYYY年 ww[周]" + placeholder="选择时间" + style="width: 15rem" + @change="getTime" /> - <div class="name">监测点区域</div> - <el-select - v-model="selectType" - class="tool-select" - placeholder="Select" - style="width: 10rem" - > - <el-option - v-for="item in typeOption" - :key="item.value" - :label="item.label" - :value="item.value" - /> - </el-select> + <el-date-picker + v-if="timeType === 'month'" + v-model="timeRange" + type="month" + placeholder="选择时间" + style="width: 15rem" + @change="getTime" + /> + <Quarter + v-if="timeType === 'quarter'" + placeholder="选择时间" + :default-value="timeRange" + clearable + style="width: 15rem" + @change="getTime" + /> + <el-date-picker + v-if="timeType === 'year'" + v-model="timeRange" + type="year" + placeholder="选择时间" + style="width: 15rem" + @change="getTime" + /> <el-input v-model="searchVal" style="width: 15rem" placeholder="请输入监测点名称" /> <el-button><el-icon><Search /></el-icon>搜索</el-button> <el-button type="success" @click="handleExport">一键导出</el-button> -- Gitblit v1.9.3