Commit Graph

123 Commits

Author SHA1 Message Date
wkc
60e836163e docs: 添加采购交易导入功能优化变更日志
- 详细的前端交互变更说明
- 技术实现细节
- 测试验证结果
- 后续优化建议

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 14:04:48 +08:00
wkc
22514b6509 docs: 更新API文档,添加导入交互说明
- 详细的前端交互流程
- 状态持久化说明
- 与员工信息导入的对比

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 14:04:25 +08:00
wkc
591e8b9ebb test: 添加导入功能测试脚本
- 测试流程框架
- 包含主要测试步骤

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 14:04:07 +08:00
wkc
e3dfc08cc7 test: 添加测试环境信息文档
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 14:03:56 +08:00
wkc
fcb7d0bdfe test: 语法验证通过
- Vue文件语法检查通过
- 无未定义变量
- 所有方法已正确添加

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 14:03:03 +08:00
wkc
084d1b2915 feat: 添加导入失败记录对话框
- 添加独立的失败记录对话框组件
- 包含失败记录表格展示(采购事项ID、项目名称、标的物名称、失败原因)
- 支持分页查询失败记录
- 提供清除历史记录功能
- 显示导入摘要信息(总数、成功数、失败数)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 14:02:10 +08:00
wkc
29bd21094a feat: 添加查看导入失败记录按钮
- 在导出按钮后添加"查看导入失败记录"按钮
- 按钮仅在存在失败记录时显示(v-if="showFailureButton")
- 使用tooltip显示上次导入时间信息

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 14:02:03 +08:00
wkc
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
wkc
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
wkc
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
wkc
a987aa9264 feat(purchase-transaction): 添加viewImportFailures方法
- 打开失败记录对话框
- 调用getFailureList获取失败记录列表

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 14:00:43 +08:00
wkc
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
wkc
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
wkc
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
wkc
8699559436 feat: 添加getLastImportTooltip方法获取上次导入提示信息
在restoreImportState之后添加getLastImportTooltip方法:
- 从localStorage读取保存的导入任务时间
- 格式化时间为易读格式(年-月-日 时:分)
- 返回上次导入时间的提示文本

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 13:59:17 +08:00
wkc
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
wkc
cb5a896fcd feat: 在created钩子中恢复导入状态
- 页面加载时从localStorage恢复导入状态
- 如果有失败记录则显示查看按钮

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 13:57:55 +08:00
wkc
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
wkc
c3ffccfbf3 feat: 添加lastImportInfo计算属性
- 显示上次导入的信息摘要
- 包含导入时间、总数、成功数、失败数

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 13:51:06 +08:00
wkc
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
wkc
d4f2f01d20 docs: 添加采购交易导入功能优化实施计划
实施计划包含:
- 24个详细任务,每个任务2-5分钟完成
- 分11个阶段:前置准备、data属性、computed属性、生命周期、
  localStorage管理、状态恢复、上传逻辑、轮询机制、
  失败记录查看、UI修改、验证测试、文档更新
- 每个任务包含:文件路径、完整代码、验证步骤、提交命令
- TDD原则、频繁提交、完整文档

预期工作量: 2-3小时

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 13:44:13 +08:00
wkc
e120f836b2 docs: 添加采购交易导入功能优化设计文档
设计目标:
- 采用后台异步处理+通知提示,避免弹窗阻塞用户操作
- 完全复用员工信息维护的导入逻辑
- 支持查看导入失败记录
- 实现状态持久化

主要设计内容:
- 整体架构和用户交互流程
- 前端组件结构和状态管理
- UI组件修改方案
- 核心方法实现(10个方法)
- 完整修改清单和测试要点

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-08 13:40:32 +08:00
wkc
89399cab67 Merge remote-tracking branch 'origin/dev' into dev
# Conflicts:
#	doc/plans/2026-02-06-ccdi_purchase_transaction.md
2026-02-06 17:23:59 +08:00
wkc
f659913b2f 员工采购 2026-02-06 17:22:59 +08:00
wkc
b38c1121e6 docs: 添加采购交易最终验证清单
- 功能测试清单(前端8大功能模块详细检查点)
  - 页面访问、查询、新增、编辑、详情、删除、导出、导入
  - 后端10个接口测试要点
  - 权限测试(菜单权限、按钮权限、数据权限)
- 代码审查清单(后端7个方面、前端6个方面、数据库3个方面)
- 性能测试建议(查询/写入/导入导出/并发/压力测试)
- 部署前检查项(代码/配置/数据/文档/测试/部署)
- 验收标准(7个维度)
- 验收流程(4个阶段)
- Bug分级标准

文件路径: doc/plans/2026-02-06-ccdi_purchase_transaction-verification.md

Task 21: 最终验证清单

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 16:52:20 +08:00
wkc
0f325e06b5 docs: 添加采购交易API接口文档
- 接口列表(10个接口完整列表)
- 接口详情(请求/响应/参数/示例)
  1. 查询采购交易列表
  2. 获取采购交易详情
  3. 新增采购交易
  4. 修改采购交易
  5. 删除采购交易
  6. 导出采购交易
  7. 下载导入模板
  8. 导入采购交易
  9. 查询导入状态
  10. 查询导入失败记录
- 数据模型定义(DTO/VO/Excel对象)
- 错误码说明
- 接口调用示例(curl/Postman)
- 数据库表结构
- 菜单权限配置说明

文件路径: doc/api/ccdi_purchase_transaction_api.md

Task 20: 生成API文档

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 16:52:12 +08:00
wkc
f121516bd9 docs: 添加采购交易测试说明文档
- 测试环境说明(系统环境、服务地址)
- 测试账号信息(admin/admin123)
- 接口测试说明(10个接口详细说明)
- 前端功能测试(查询/新增/编辑/详情/删除/导出/导入)
- 导入导出测试要点
- 性能测试建议
- 常见问题及解决方案
- 测试报告模板
- 测试完成标准

文件路径: doc/test-data/purchase_transaction/README.md

Task 19: 创建测试说明

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 16:52:05 +08:00
wkc
3ef6651345 feat: 添加采购交易管理菜单配置SQL
- 添加CCDI管理下采购交易管理菜单
- 配置菜单路径和组件
- 添加6个按钮权限(查询/新增/修改/删除/导出/导入)
- 设置菜单图标和显示顺序
- 包含结果验证查询

Task 17: 配置菜单和权限

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 16:51:59 +08:00
wkc
a6ed4d9989 feat: 添加采购交易前端API和页面组件
- 新建前端API文件 (ccdiPurchaseTransaction.js)
  * 实现完整的CRUD接口
  * 支持导入导出功能
  * 实现异步导入状态查询接口

- 新建前端页面组件 (index.vue)
  * 完整的查询表单(项目名称、标的物、申请人、日期范围)
  * 数据列表展示(采购类别、项目、标的物、供应商、金额等)
  * 新增/编辑对话框(包含所有字段,分组布局)
  * 详情对话框(使用el-descriptions展示)
  * 导入功能(支持异步导入轮询)
  * 导出功能
  * 删除确认

- 异步导入轮询逻辑
  * 每2秒轮询导入状态
  * 导入完成后显示成功/失败统计
  * 失败记录详情展示
  * 自动清理定时器

字段匹配后端实体类CcdiPurchaseTransaction的所有属性
2026-02-06 16:44:05 +08:00
wkc
4a560bd4e4 refactor: 更新采购交易导入使用专门的失败记录VO
将通用的ImportFailureVO替换为专门的PurchaseTransactionImportFailureVO,
以提供更明确的类型安全和更好的API文档。

修改文件:
- ICcdiPurchaseTransactionImportService.java: 更新接口方法返回类型
- CcdiPurchaseTransactionImportServiceImpl.java: 更新实现类使用专门的VO
- CcdiPurchaseTransactionController.java: 更新Controller使用专门的VO

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 16:11:30 +08:00
wkc
1aa0d15ee8 feat: 添加采购交易导入失败记录VO
创建 PurchaseTransactionImportFailureVO 类,用于采购交易信息批量导入时的失败记录展示。

包含字段:
- 采购事项ID、采购类别、项目名称、标的物名称
- 采购方式、预算金额
- 申请人信息(工号、姓名、部门)
- 采购申请日期、错误信息

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 16:08:18 +08:00
wkc
9df2b5a8e5 fix: 添加采购交易导入的Redis状态初始化 2026-02-06 15:59:08 +08:00
wkc
4ba0803622 feat: 添加采购交易Controller控制器 2026-02-06 15:51:45 +08:00
wkc
a4c21b83e9 feat: 添加采购交易异步导入Service实现类 2026-02-06 15:51:41 +08:00
wkc
a2764fd3eb feat: 添加采购交易Service实现类 2026-02-06 15:51:38 +08:00
wkc
179901759f feat: 添加采购交易异步导入Service接口 2026-02-06 15:51:34 +08:00
wkc
584581e720 feat: 添加采购交易Service接口 2026-02-06 15:51:29 +08:00
wkc
d9f1b5293f feat: 添加采购交易Mapper XML映射文件 2026-02-06 15:51:00 +08:00
wkc
b0bd66da91 feat: 添加采购交易Mapper接口 2026-02-06 15:50:38 +08:00
wkc
ac3b9cd740 fix: 修复DTO工号验证规范问题
- 申请人工号验证从@Size改为@Pattern正则表达式
- 采购负责人工号验证从@Size改为@Pattern正则表达式
- 统一使用7位数字格式验证(^\d{7}$)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 15:36:05 +08:00
wkc
1d09c88bec feat: 添加采购交易Excel类
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 15:30:56 +08:00
wkc
39032ebe63 feat: 添加采购交易VO类
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 15:30:54 +08:00
wkc
c1de614cb2 feat: 添加采购交易编辑DTO
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 15:30:51 +08:00
wkc
ad369e7789 feat: 添加采购交易新增DTO
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 15:30:49 +08:00
wkc
f80a58fa75 feat: 添加采购交易查询DTO
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 15:30:46 +08:00
wkc
913e5e5dfd feat: 添加采购交易信息实体类
- 创建 CcdiPurchaseTransaction 实体类
- 使用 java.time.LocalDate 和 LocalDateTime 替代 Date
- 使用 BigDecimal 处理金额和数量字段
- 使用 @TableField 实现审计字段自动填充
- 符合若依框架和 MyBatis Plus 规范

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 15:17:05 +08:00
wkc
a2c9c14092 docs: 添加中介库异步导入功能实施计划 2026-02-06 15:13:22 +08:00
wkc
636a3a7c47 chore: 忽略Excel临时文件
- 在.gitignore中添加规则忽略Excel临时文件(~$*)
- 避免Excel打开时生成的临时文件被提交到版本控制

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 15:13:06 +08:00
wkc
9232a9f10f feat: 实现招聘信息异步导入功能
- 添加异步导入服务接口和实现
- 创建导入失败记录VO类
- 添加导入设计文档和测试数据生成脚本
- 支持大批量招聘数据的异步处理

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 15:12:40 +08:00
wkc
fac41d4711 feat: 实现招聘信息异步导入功能
- 添加异步导入服务接口和实现
- 创建导入失败记录VO类
- 添加导入设计文档和测试数据生成脚本
- 支持大批量招聘数据的异步处理

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 15:04:19 +08:00