|
|
5bd76e99d4
|
fix: 修复采购交易申请日期查询条件未生效问题
问题描述:
- 前后端参数格式不匹配导致日期查询条件无法生效
- 后端期望 applyDateStart/applyDateEnd,前端发送 params.beginApplyDate/params.endApplyDate
- Mapper XML 中同时存在两套参数导致混乱
修复方案:
统一使用扁平化参数格式 applyDateStart/applyDateEnd
前端修改:
1. 新增 addDateRangeFlat 工具方法 (ruoyi-ui/src/utils/ruoyi.js)
- 支持扁平化日期参数格式,不使用 params 包装
- 参数: addDateRangeFlat(params, dateRange, startPropName, endPropName)
2. 全局注册新方法 (ruoyi-ui/src/main.js)
- 导入并挂载到 Vue.prototype.addDateRangeFlat
3. 采购交易页面使用新方法 (ruoyi-ui/src/views/ccdiPurchaseTransaction/index.vue)
- 将 addDateRange() 改为 addDateRangeFlat()
- 传入参数: 'applyDateStart', 'applyDateEnd'
后端修改:
- 删除 Mapper XML 中 params.beginApplyDate/params.endApplyDate 相关条件
- 保留 applyDateStart/applyDateEnd 条件
测试:
- 添加测试脚本 doc/test-data/purchase_transaction/test-date-query.js
- 支持多种日期范围查询场景测试
影响范围:
- 仅影响采购交易管理模块
- 保留原有 addDateRange 方法,其他模块不受影响
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 15:05:12 +08:00 |
|
|
|
084d1b2915
|
feat: 添加导入失败记录对话框
- 添加独立的失败记录对话框组件
- 包含失败记录表格展示(采购事项ID、项目名称、标的物名称、失败原因)
- 支持分页查询失败记录
- 提供清除历史记录功能
- 显示导入摘要信息(总数、成功数、失败数)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 14:02:10 +08:00 |
|
|
|
29bd21094a
|
feat: 添加查看导入失败记录按钮
- 在导出按钮后添加"查看导入失败记录"按钮
- 按钮仅在存在失败记录时显示(v-if="showFailureButton")
- 使用tooltip显示上次导入时间信息
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 14:02:03 +08:00 |
|
|
|
253471f3f9
|
feat: 移除导入对话框loading属性
- 移除 v-loading 绑定
- 移除 element-loading-text
- 移除 element-loading-spinner
- 移除 element-loading-background
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 14:01:57 +08:00 |
|
|
|
2d9cd7c2f6
|
feat(purchase-transaction): 添加clearImportHistory方法
- 添加用户手动清除导入历史功能
- 确认对话框防止误操作
- 清除localStorage中的任务记录
- 重置失败按钮、任务ID和对话框状态
- 操作成功后显示提示消息
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 14:01:19 +08:00 |
|
|
|
e38413cb2e
|
feat(purchase-transaction): 添加getFailureList方法
- 调用API获取失败记录列表
- 支持分页查询
- 完善错误处理机制:
- 404: 记录过期,清除本地状态
- 500: 服务器错误提示
- 网络错误: 检查网络连接
- 其他错误: 显示详细错误信息
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 14:00:51 +08:00 |
|
|
|
a987aa9264
|
feat(purchase-transaction): 添加viewImportFailures方法
- 打开失败记录对话框
- 调用getFailureList获取失败记录列表
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 14:00:43 +08:00 |
|
|
|
cbff94a223
|
feat(purchase-transaction): 添加handleImportComplete方法
- 更新localStorage中的任务状态和统计信息
- 全部成功时显示成功通知并隐藏失败按钮
- 部分失败时显示警告通知并显示失败按钮
- 保存当前任务ID用于查看失败记录
- 导入完成后刷新列表数据
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 14:00:35 +08:00 |
|
|
|
9ae817dc41
|
feat(purchase-transaction): 添加startImportStatusPolling方法
- 实现轮询检查导入任务状态
- 设置最多150次轮询(5分钟超时)
- 使用async/await处理异步请求
- 超时后自动停止轮询并提示用户
- 非PROCESSING状态时调用handleImportComplete处理结果
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 14:00:18 +08:00 |
|
|
|
c620dc8b6d
|
feat(purchase-transaction): 重构handleFileSuccess方法实现异步导入优化
- 增强响应数据验证,确保taskId存在
- 清理旧的轮询定时器,避免内存泄漏
- 保存导入任务初始状态到localStorage
- 使用$notify通知替代弹窗提示
- 重置失败按钮和任务ID状态
- 调用startImportStatusPolling开始轮询
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 14:00:10 +08:00 |
|
|
|
8699559436
|
feat: 添加getLastImportTooltip方法获取上次导入提示信息
在restoreImportState之后添加getLastImportTooltip方法:
- 从localStorage读取保存的导入任务时间
- 格式化时间为易读格式(年-月-日 时:分)
- 返回上次导入时间的提示文本
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 13:59:17 +08:00 |
|
|
|
619b9cca7a
|
feat: 添加restoreImportState方法恢复导入状态
在methods中添加restoreImportState方法,用于在页面加载时恢复之前的导入状态:
- 从localStorage读取保存的导入任务
- 如果有失败记录,恢复显示失败记录按钮
- 恢复当前任务ID
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 13:59:09 +08:00 |
|
|
|
cb5a896fcd
|
feat: 在created钩子中恢复导入状态
- 页面加载时从localStorage恢复导入状态
- 如果有失败记录则显示查看按钮
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 13:57:55 +08:00 |
|
|
|
ee73380faa
|
fix: 提前实现localStorage管理方法
- 添加saveImportTaskToStorage方法
- 添加getImportTaskFromStorage方法
- 添加clearImportTaskFromStorage方法
- 修复lastImportInfo计算属性无法运行的问题
这些方法原本计划在Task 5-7实现,提前到现在以修复Task 2的审查问题。
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 13:55:25 +08:00 |
|
|
|
c3ffccfbf3
|
feat: 添加lastImportInfo计算属性
- 显示上次导入的信息摘要
- 包含导入时间、总数、成功数、失败数
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 13:51:06 +08:00 |
|
|
|
9bba22a720
|
feat: 添加导入轮询相关data属性
- 添加importPollingTimer定时器
- 添加showFailureButton失败记录按钮显示状态
- 添加currentTaskId当前任务ID
- 添加失败记录对话框相关属性(failureDialogVisible等)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-08 13:49:12 +08:00 |
|
|
|
f659913b2f
|
员工采购
|
2026-02-06 17:22:59 +08:00 |
|
|
|
a6ed4d9989
|
feat: 添加采购交易前端API和页面组件
- 新建前端API文件 (ccdiPurchaseTransaction.js)
* 实现完整的CRUD接口
* 支持导入导出功能
* 实现异步导入状态查询接口
- 新建前端页面组件 (index.vue)
* 完整的查询表单(项目名称、标的物、申请人、日期范围)
* 数据列表展示(采购类别、项目、标的物、供应商、金额等)
* 新增/编辑对话框(包含所有字段,分组布局)
* 详情对话框(使用el-descriptions展示)
* 导入功能(支持异步导入轮询)
* 导出功能
* 删除确认
- 异步导入轮询逻辑
* 每2秒轮询导入状态
* 导入完成后显示成功/失败统计
* 失败记录详情展示
* 自动清理定时器
字段匹配后端实体类CcdiPurchaseTransaction的所有属性
|
2026-02-06 16:44:05 +08:00 |
|
|
|
f22dd4f0ce
|
feat: 添加UI优化和用户体验增强
- 新增lastImportInfo计算属性显示导入统计
- 失败记录按钮添加tooltip显示导入时间
- 失败记录对话框添加统计信息展示
- 对话框添加清除历史记录按钮
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 12:37:27 +08:00 |
|
|
|
210196437e
|
feat: 增强失败记录查询的错误处理
- 添加404错误处理(记录过期)
- 添加500错误和500错误的友好提示
- 错误时自动清除localStorage并隐藏按钮
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 12:35:38 +08:00 |
|
|
|
989f8de19a
|
fix: 改进导入处理逻辑的健壮性
- 添加response验证,防止taskId缺失
- 添加轮询超时机制,防止无限轮询(5分钟)
- 完善状态处理逻辑,成功时清除失败按钮
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 12:33:31 +08:00 |
|
|
|
cb12f1db70
|
feat: 修改导入处理逻辑以支持状态持久化
- handleFileSuccess: 清除旧数据,保存新任务初始状态
- handleImportComplete: 更新localStorage中的完整任务状态
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 12:31:17 +08:00 |
|
|
|
0c9627617c
|
fix: 在handleImportComplete中添加状态保存逻辑
- 导入完成时保存任务状态到localStorage
- 修复getLastImportTooltip中的字段名不一致问题(saveTime)
- 确保导入状态持久化功能正常工作
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 12:26:57 +08:00 |
|
|
|
beaa59c1d3
|
fix: 移除restoreImportState不必要的async关键字
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 12:21:54 +08:00 |
|
|
|
8bf2792fd7
|
feat: 添加导入状态恢复和用户交互方法
- restoreImportState: 从localStorage恢复导入状态
- getLastImportTooltip: 获取导入时间提示信息
- clearImportHistory: 用户手动清除历史记录
- created(): 添加状态恢复调用
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 12:19:32 +08:00 |
|
|
|
3bb50077db
|
feat: 添加localStorage工具方法用于导入状态持久化
- saveImportTaskToStorage: 保存导入任务到localStorage
- getImportTaskFromStorage: 读取并校验导入任务数据
- clearImportTaskFromStorage: 清除localStorage数据
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 12:15:30 +08:00 |
|
|
|
765ab7bc8d
|
feat: 实现员工信息异步导入功能前端
- 添加导入状态查询API (getImportStatus)
- 添加导入失败记录查询API (getImportFailures)
- 实现导入状态轮询机制 (每2秒轮询一次)
- 添加轮询定时器生命周期管理 (beforeDestroy销毁)
- 添加导入完成通知功能
- 添加查看导入失败记录按钮 (有失败时显示)
- 添加失败记录对话框及分页查询功能
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-06 09:51:01 +08:00 |
|
|
|
8b6967bf32
|
fix: 修复ImportDialog模板根元素问题
- 添加div根元素包裹两个dialog组件
- 解决Vue 2 'Component template should contain exactly one root element'编译错误
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-05 16:33:33 +08:00 |
|
|
|
9aa3faf452
|
refactor: 抽离导入结果弹窗为通用组件并适配所有导入页面
新增组件:
- ImportResultDialog.vue: 通用导入结果弹窗组件
* 支持HTML内容渲染
* 60vh高度限制,内容独立滚动
* 美化滚动条样式(6px宽度、圆角设计)
* 提供visible、content、title等props配置
适配页面:
1. 员工信息管理页面 (ccdiEmployee)
- 使用ImportResultDialog组件替代内嵌Dialog
- 简化数据状态管理(importResultVisible、importResultContent)
- 添加handleImportResultClose方法处理关闭事件
2. 员工招聘信息页面 (ccdiStaffRecruitment)
- 使用ImportResultDialog替代$modal.msgSuccess/msgError
- 统一导入结果展示方式
- 支持HTML格式的错误列表展示
3. 中介黑名单导入组件 (ccdiIntermediary/ImportDialog)
- 使用ImportResultDialog替代$msgbox
- 保留原有的消息解析逻辑(成功/失败分类处理)
- 移除内联样式,使用组件样式
优势:
- 统一导入结果展示样式和交互体验
- 组件复用,减少代码重复
- 便于维护和扩展(一处修改,全局生效)
- 自适应滚动,支持大量失败数据展示
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-05 16:31:01 +08:00 |
|
|
|
bb0e0b5dc9
|
refactor: 使用Dialog组件替代MessageBox优化导入结果弹窗
变更说明:
- 添加importResult数据状态管理弹窗显示和内容
- 创建专用Dialog组件展示导入结果,使用v-html渲染HTML
- 修改handleFileSuccess方法,使用Dialog替代$alert
- 添加Dialog专用样式,内容区域60vh高度支持独立滚动
- 美化滚动条样式(6px宽度、圆角设计、hover效果)
- 删除旧的MessageBox全局样式
修复问题:
- 解决CSS覆盖Element UI MessageBox样式不生效的问题
- 导入失败数据较多时,弹窗自适应页面高度
优势:
- 样式100%可控,无CSS优先级冲突
- Dialog组件自带良好的响应式布局
- 代码结构清晰,易于维护和扩展
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-05 16:20:53 +08:00 |
|
|
|
f3a999c6aa
|
fix: 优化员工信息导入结果弹窗自适应布局
- 提升弹窗高度至70vh,宽度至700px,提升可读性
- 使用Flexbox布局确保标题、内容、按钮三部分结构稳定
- 添加美化的滚动条样式(6px宽度、圆角设计、hover效果)
- 内容区域使用calc精确计算高度,支持独立滚动
- 添加响应式媒体查询,适配小屏幕和移动端
- 标题和按钮区域添加分隔边框,增强视觉层次
修复问题:导入失败数据较多时,弹窗超出视口,确定按钮不可见
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-05 16:11:58 +08:00 |
|
|
|
1e691f9697
|
docs: 添加员工信息导入结果弹窗自适应优化设计文档
- 分析现有问题:弹窗内容过多时超出视口
- 设计固定高度+内容可滚动的Flexbox布局方案
- 提供完整的CSS样式和响应式设计
- 包含实施计划、验收标准和技术要点
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-05 16:09:40 +08:00 |
|
|
|
07dea1bf0c
|
feat: 员工信息必填项优化 - 柜员号、所属部门、电话设为必填
## 后端修改
- AddDTO: deptId和phone添加@NotNull/@NotBlank注解
- EditDTO: deptId和phone添加@NotNull/@NotBlank注解
- Service: 导入验证添加deptId和phone必填校验
## 前端修改
- 表单校验规则: deptId和phone添加required校验
- 自动显示必填标记(红色星号)
## API文档更新
- 新增接口字段说明: deptId和phone标记为必填
- 导入模板: 标注必填项(*标记)
- 业务错误信息: 添加部门和电话相关错误提示
## 必填字段清单
1. employeeId(柜员号) - 7位数字
2. name(姓名)
3. deptId(所属部门)
4. idCard(身份证号)
5. phone(电话) - 11位手机号
6. status(状态)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-05 14:26:40 +08:00 |
|
|
|
da663fb635
|
feat: 员工柜员号优化 - 移除tellerNo,employeeId作为7位数字柜员号
## 数据库修改
- 删除teller_no字段
- employee_id改为非自增,手动输入7位数字
- 更新字段注释
## 后端修改
- Entity: 移除tellerNo,employeeId改为INPUT类型
- DTO: Add/Edit/Query/Excel全部使用employeeId
- VO: 移除tellerNo字段
- Service: 添加柜员号唯一性校验(使用selectById)
- Mapper XML: 移除teller_no查询和映射
## 前端修改
- 查询表单: tellerNo改为employeeId,添加7位数字限制
- 表格列: 显示employeeId作为柜员号
- 对话框: 新增可输入,编辑只读
- JavaScript: 数据结构和校验规则更新
## 文档更新
- API文档: 完整更新所有接口说明
- 实施报告: 生成详细实施报告
## 测试
- 生成测试脚本(9个测试用例)
- 测试账号: admin/admin123
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
2026-02-05 14:18:28 +08:00 |
|
|
|
81d4038302
|
中介黑名单更新
|
2026-02-05 13:33:27 +08:00 |
|
|
|
16dc95de06
|
添加按钮
|
2026-01-30 15:50:30 +08:00 |
|
|
|
29a2e60ee1
|
变更项目缩写
|
2026-01-30 14:15:21 +08:00 |
|
|
|
e99b05acc2
|
项管首页
|
2026-01-30 11:01:13 +08:00 |
|
|
|
ac4e02e8c5
|
中介新增 修改接口
|
2026-01-29 22:03:42 +08:00 |
|
|
|
2c146c026a
|
员工代码
|
2026-01-29 09:07:50 +08:00 |
|
|
|
6946744ab9
|
中介库管理
|
2026-01-28 09:58:31 +08:00 |
|
|
|
5b0c338b5e
|
导出excel替换
|
2026-01-27 17:55:53 +08:00 |
|
|
|
6e4ab22d4c
|
init
|
2026-01-26 18:20:13 +08:00 |
|