尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

【功能开发】添加按月按日查询器,禁用当月当天之后的选择

【功能开发】添加按月按日查询器,禁用当月当天之后的选择
📅 发布时间:2026/7/3 5:02:41

需求描述

一、业务需求背景

  1. 原始项目现状
    目前项目为Vue2后台管理系统,项目二次封装通用业务组件w-range-picker(业务自定义组件,底层封装el-date-picker),原有仅支持时间范围查询,存在两个线上问题:
  • 缺少按日、按月查询切换功能,报表、能耗统计只能固定时间筛选,查询灵活性差
  • 未做日期限制,用户可选择当月、当天之后的未来日期,后端无数据,频繁报接口空数据、参数异常
  • 原生el-date-picker禁用逻辑存在时区bug,零点判断不准,偶尔出现当天无法选中问题
  1. 本次开发需求
  2. 优化自研组件 w-range-picker,新增维度切换:按日查询 / 按月查询
  3. 时间强校验:禁止选择当天之后日期;按月模式禁止选择当月之后月份
  4. 保留原有水务大屏样式、组件双向绑定逻辑,零侵入改造,兼容历史所有业务页面
  5. 修复日期时间戳时区偏移bug,避免临界日期禁用异常

二、前置知识点科普

  1. w-range-picker组件来源
    很多小伙伴疑惑该组件不是Element、AntD官方组件,这里统一说明:
  • w前缀含义:项目自定义业务前缀,区分UI库原生组件
  • 底层封装:二次封装 ElementUI el-date-picker,拓展业务快捷时间、样式适配、日期格式化通用逻辑
  • 存放地址:src/components/w/ 全局注册公共业务组件,全局无需手动引入
  1. 日期禁用核心原理
    el-date-picker 提供 disabledDate 回调函数:
  • 返回 true:禁用当前日期,不可点击
  • 返回 false:放开日期,正常可选
  • 踩坑重点:禁止直接使用 Date.now() 判断!携带时分秒,会造成当天傍晚触发禁用,必须归一化日期零点比对

代码解决

1.为w-range-picker组件加入:disabledDate属性并绑定对应method

:disabledDate="disableMonthFn"
<template#ticketTime><divstyle="display:flex;gap:8px;align-items:center;width:100%;"><!-- 切换开关 --><w-radio-groupv-model="dateMode"@change="handleDateModeChange"><w-radiovalue="month">按月</w-radio><w-radiovalue="day">按日</w-radio></w-radio-group><!-- 月份选择器 --><w-range-pickerv-if="dateMode === 'month'":mode="['month', 'month']"format="YYYY-MM"v-model="yearMode":open="yearShowOne"cell-class-name="cellClassName":allowClear="false":disabledDate="disableMonthFn"@openChange="openChangeOne"@panelChange="panelChangeOne"style="flex:1;min-width:280px"/><!-- 日期选择器 --><w-range-pickerv-elseformat="YYYY-MM-DD"v-model="dayRange":allowClear="false":disabledDate="disableDayFn"@change="handleDayChange"style="flex:1;min-width:280px"/></div></template>

2.在method下写入对应方法

disableDayFn(currentDate){if(!currentDate)returnfalse;consttoday=moment().startOf('day');constisDisabled=currentDate.isAfter(today);returnisDisabled;},

效果展示

拓展

只禁用明天及以后,今天可选:

constisDisabled=currentDate.isAfter(today);

想禁用今天 + 未来,只能选过去:

constisDisabled=currentDate.isSameOrAfter(today);

禁用所有过去日期,只能选今天和未来:

constisDisabled=currentDate.isBefore(today);

相关新闻

  • Meta 掀翻桌子进军云计算!“Meta Compute”曝光:AI 拼的不是模型,而是算力所有权
  • 【Java课程设计/毕业设计】基于 SpringBoot 的 “图书森林” 馆藏图书智能借阅系统的设计与实现 基于 SpringBoot 的共享图书资源可视化管理系统【附源码、数据库、万字文档】
  • CSRF攻击原理与防御实战:从DVWA靶场到企业级防护方案

最新新闻

  • SysDVR终极指南:如何实现Switch游戏画面高清投屏与录制
  • Feed流笔记及项目心得
  • Ollama迁移到vLLM:高并发AI服务生产化重构指南
  • 混凝土裂缝检测数据集与AI算法实战指南
  • 华为nova16系列实测:修图、旅行、解题,学生党们日常使用真的够方便!
  • Linux 内存多维治理:从 cgroup v2 水位线到 DAMON 与 THP 碎片化的企业级调优实战

日新闻

  • JMeter接口测试实战:从核心元件到复杂场景构建
  • Java Applet版刽子手游戏源码:含完整项目结构、吊杆绘图与胜负逻辑
  • 使用Apache JMeter对RoadRunner PHP应用进行性能测试与调优指南

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号