Echarts+Java实现根据开始时间和结束时间按周或者按月查询

本文介绍了一个使用Echarts、jQuery、jsp和My97日历插件,结合Java SpringMVC后端实现的按周、按月查询功能。用户可以选择开始和结束时间,查询结果以Echarts图表展示。按周查询时,起始日期必须为周一,按月查询则只显示月份。查询过程包括前端表单提交、后端控制器处理、SQL查询以及数据转换为JSON。

前端:jquery,jsp,html,日历插件:my97   后端 java springmvc

该实现方式代码写的很low,欢迎提出意见改正!

实现效果:

(1)按周查询,选择日期只能从周一开始。 这是日历控件my97控制实现的,可到其官网查询使用文档

(2)按月查询,只看到月份

(3)按周查询效果图:横坐标是第几周

(4)按月查询结果图:横坐标是几月

1、引入echarts.js或者echarts.min.js

2、html代码:采用表单提交


<html>
<head>
    <title>绩效管理</title>
    <meta name="decorator" content="default"/>
    <script type="text/javascript" src="${ctxStatic}/echarts/echarts.js"></script>
</head>
<body>
<ul class="nav nav-tabs">
    <li class="active"><a href="${ctx}/bespeakweb/bespeakPerformanceweb/list">绩效管理</a></li>
</ul>
<form:form id="searchForm" modelAttribute="performance" action="${ctx}/bespeakweb/bespeakPerformanceweb/list"
           method="post" class="breadcrumb form-search">
    <input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
    <input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
    <ul class="ul-form">
        <li><label>开始日期:</label>
            <input name="startDate" type="text" id="BeginTime" readonly="readonly" maxlength="20" class="input-medium Wdate"
                   value="${performance.startDate}"
                   onclick="WdatePicker({disabledDays:[2,3,4,5,6,0],dateFmt:'yyyy-MM-dd',isShowClear:true,maxDate:'#F{$dp.$D(\'EndTime\')||\'%y-%M-%d/\'}'});"/>
        </li>
        <li><label>结束日期:</label>
            <input name="endDate" type="text" id="EndTime" readonly="readonly" maxlength="20" class="input-medium Wdate"
                   value="${performance.endDate}"
                   onclick="WdatePicker({disabledDays:[2,3,4,5,6,0],dateFmt:'yyyy-MM-dd',isShowClear:true,minDate:'#F{$dp.$D(\'BeginTime\')}',maxDate:'%y-%M-%d'});"/>
        </li>
        <li style="padding-left: 18px"><label>查询方式:</label>
            <select name="unit" id="selectdep" style="width: 92px;" onchange="editDate()">
                <option value="0" <c:if test="${performance.unit=='0'}">selected</c:if>>按周</option>
                <option value="1" <c:if test="${performance.unit=='1'}">selected</c:if>>按月</option>
            </select>
        </li>
        <li class="btns"><input id="btnSubmit" class="btn btn-primary" type="submit" value="查询"/></li>
        <li class="clearfix"></li>
    </ul>
</form:form>
<sys:message content="${message}"/>
<div id="main" 
### 实现方案 为了实现在 Vue + Spring Boot + MyBatis 项目中使用 ECharts 显示按时间查询的数据折线图,需遵循以下架构: #### 后端配置 (Spring Boot) 创建 RESTful API 来处理来自前端的时间范围请求,并返回相应的数据集。 定义实体类用于映射数据库表结构[^5]。编写对应的 Mapper 接口来执行 SQL 查询语句,特别是针对带有时间条件的查询操作。例如,在 `Mapper.xml` 文件内添加如下代码片段以支持分页查询带参数的时间筛选: ```xml <select id="getTimeSeriesData" parameterType="map" resultType="java.util.Map"> SELECT time_column, value_column FROM data_table WHERE date_format(time_column,'%Y-%m-%d') BETWEEN #{startDate} AND #{endDate} </select> ``` 在 Service 层调用上述方法获取所需时间段内的记录集合,并将其转换成 JSON 格式的响应体发送给客户端应用。 #### 前端逻辑 (Vue.js ECharts) 安装必要的依赖项,包括但不限于 `axios` 用来发起 HTTP 请求以及 `vue-echarts` 组件库以便于集成 ECharts 图形化组件[^3]。 构建视图页面,设置日期选择器允许用户指定起始时间结束时间作为查询条件传递至服务器端接口;当接收到服务端反馈的结果后更新图表实例中的 series 数据源属性从而动态渲染最新的趋势变化情况。 下面是一个简单的例子说明如何初始化 echarts chart 并加载远程取得的数据: ```javascript import { ref } from 'vue'; import axios from 'axios'; export default { setup() { const chartInstance = ref(null); function initChart(data) { let option = { xAxis: { type: 'category', boundaryGap: false, data: data.map(item => item.time_column), }, yAxis: { type: 'value' }, series: [{ name:'Value', type:'line', smooth:true, symbolSize:8, lineStyle:{width:2}, areaStyle:{color:'#f9f'}, data:data.map(item=>item.value_column) }] }; if (!chartInstance.value) return; var myChart = window.echarts.init(chartInstance.value); myChart.setOption(option); } async function fetchData(startDate, endDate){ try{ const response = await axios.get('/api/data', { params:{ startDate, endDate } }); initChart(response.data); }catch(error){ console.error('Error fetching data:', error); } } // Call fetchData with selected dates when needed. return { fetchDateRangeData : fetchData ,chartInstance}; } } ``` 确保前后端交互顺畅,通过合理的错误处理机制提高用户体验质量。
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值