46 lines
1.9 KiB
Markdown
46 lines
1.9 KiB
Markdown
# 拉取本行信息日期范围限制设计
|
|
|
|
## 背景
|
|
项目详情页“上传数据”中的“拉取本行信息”弹窗当前允许选择今天及未来日期,这与业务规则不符。用户只能拉取截止到当前日期前一天的数据。
|
|
|
|
## 目标
|
|
- 日期范围组件中禁用今天及未来日期
|
|
- 提交时兜底校验,阻止异常方式带入今天或未来日期
|
|
- 保持现有接口、文件解析和弹窗结构不变
|
|
|
|
## 非目标
|
|
- 不调整后端接口
|
|
- 不修改现有日期范围字段格式
|
|
- 不改变“至少输入一个身份证号”和“必须完整选择时间跨度”的现有校验
|
|
|
|
## 方案对比
|
|
|
|
### 方案一:仅在日期面板禁选
|
|
- 优点:改动最小,交互直观
|
|
- 缺点:若后续通过脚本赋值或异常回填带入无效日期,提交时缺少保护
|
|
|
|
### 方案二:仅在提交时校验
|
|
- 优点:实现简单
|
|
- 缺点:用户仍然可以在面板中选到无效日期,体验较差
|
|
|
|
### 方案三:日期面板禁选 + 提交兜底校验
|
|
- 优点:同时覆盖交互层和数据层,最稳妥
|
|
- 缺点:多一小段前端校验逻辑
|
|
|
|
## 最终方案
|
|
采用方案三。
|
|
|
|
在前端日期范围选择器上增加 `picker-options.disabledDate`,将本地当前日期零点及之后的日期全部禁用。以 `2026-03-12` 为例,最晚只能选择到 `2026-03-11`。
|
|
|
|
在提交逻辑中新增“最大可选日期”为昨天的兜底校验。如果开始日期或结束日期晚于昨天,则阻止提交并提示“时间跨度最晚只能选择到昨天”。
|
|
|
|
## 影响范围
|
|
- 前端组件:`ruoyi-ui/src/views/ccdiProject/components/detail/UploadData.vue`
|
|
- 前端测试:`ruoyi-ui/tests/unit/`
|
|
- 后端:无代码改动,仅保留接口契约不变
|
|
|
|
## 验收标准
|
|
- 日期面板无法选择今天和未来日期
|
|
- 通过异常赋值带入今天或未来日期时,提交会被拦截
|
|
- 原有弹窗交互和上传相关逻辑无回归
|