当前位置: 首页 > news >正文

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

需求描述

一、业务需求背景

  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);
http://www.jsqmd.com/news/1113287/

相关文章:

  • 2026年7月更新 | 关键词:企业AI落地避坑指南 · AI服务商怎么选 · PDCA陪跑
  • 如何在通达信中实现智能缠论自动化分析:ChanlunX插件完整指南
  • 云克隆 Luminex 多因子技术在细胞因子领域是应用
  • 5分钟打造智能媒体库:MetaTube插件为Jellyfin/Emby提供完整元数据解决方案
  • 手机木马取证实战:从安装源定位到行为特征分析的完整指南
  • MySQL 自动安装Python脚本操作手册
  • Meta 掀翻桌子进军云计算!“Meta Compute”曝光:AI 拼的不是模型,而是算力所有权
  • 5G基站与终端射频验收——思仪这套仪器组合为什么成了主流
  • DigitalOcean 推出大模型自动化评测功能,上线前精准避坑
  • 基于STM32的智能手环设计与实现
  • AI信息过载时代的信息筛选与落地实践指南
  • 2026青岛AI数字人公司排行榜:本地服务商技术实力与落地能力盘点
  • SOHOTHEME外贸SOHO独立站WordPress主题
  • 强化学习入门:从回报、价值函数到贝尔曼方程的工程化理解
  • 【计算机Java毕业设计案例】基于 SpringBoot 的高校学生组织资源资料整合系统的设计与实现 基于 SpringBoot 的校园学生活动策划与落地管理系统(程序+文档+讲解+定制)
  • Hermes-Agent :Windows 环境完整安装与 API 中转配置
  • CSRF攻击原理与防御实战:从DVWA靶场到企业级防护方案
  • 【Java课程设计/毕业设计】基于 SpringBoot 的 “图书森林” 馆藏图书智能借阅系统的设计与实现 基于 SpringBoot 的共享图书资源可视化管理系统【附源码、数据库、万字文档】
  • 深度强化学习算法实战:从Q-Learning到PPO的工程落地指南
  • CNC加工厂为什么总是延期?从订单跟踪、生产进度到排产管理看问题根源
  • 小程序商城哪个平台好?适合零售、餐饮和服务商家的选型逻辑
  • ClaudeCode模型选型指南:如何为真实编码场景匹配最优AI模型
  • Oracle与Java安全实战:从SQL注入防御到TDE加密的纵深防护体系
  • LINUX编译地图软件GDAL
  • GB_T_27930_报文大全
  • A类系统车桩充电通信流程
  • 携程酒店详情信息一键获取,item_get_appAPI接口讲解
  • Virbox Protector 从何而来:深盾科技的软件保护演进
  • 手把手教你用代码夺回 AI 时代的“被定义权”:广州企业 GEO 实战指南
  • GLM5、千问Coder、Kimi2.5:程序员真实编码场景下的AI模型选型指南