完善招投标导入测试与文档

This commit is contained in:
wkc
2026-04-22 16:20:37 +08:00
parent 0c5fa6b2c8
commit 5a9b79d4ee
42 changed files with 1814 additions and 707 deletions

View File

@@ -0,0 +1,35 @@
# 招投标信息维护后端实施计划
## 目标
- 将现有 `purchaseTransaction` 后端链路改造为“招投标主信息 + 供应商明细子表”结构。
- 保留原有 URL、权限前缀和内部类名统一用户可见文案为“招投标信息维护”。
- 支持详情查询返回全部供应商明细,列表返回中标供应商摘要和参与供应商数。
- 支持双 Sheet 导入模板与按 `purchaseId` 聚合校验的异步导入。
## 实施内容
- 数据层
- 新增 `ccdi_purchase_transaction_supplier` 明细表初始化 SQL 与增量迁移脚本。
- 迁移脚本回填历史中标供应商数据,并将菜单名称更新为“招投标信息维护”。
- 领域模型
- 新增供应商 entity、DTO、VO、Excel 模型。
- 主 DTO/VO 增加 `supplierList`,主 VO 增加 `supplierCount`
- 主 Excel 模板改为仅承载招投标主信息,供应商明细独立建模。
- 接口与服务
- 列表 SQL 增加供应商数聚合。
- 详情查询补充供应商明细列表。
- 新增/修改时由 `supplierList` 自动回填主表中标供应商摘要字段。
- 删除主记录时级联删除供应商明细。
- 导入链路改为“双 Sheet 读取 + 按事项聚合校验 + 主从同落库”。
- 项目专项核查
- 项目采购详情 VO、Mapper、Service 增加供应商明细查询能力,保持项目详情与信息维护详情口径一致。
## 验证
- `mvn -pl ccdi-info-collection,ccdi-project -am -DskipTests compile`
- `./bin/restart_java_backend.sh restart`
- 浏览器验证列表接口、详情接口与项目详情供应商明细展示。
## 产出文件
- `sql/ccdi_purchase_transaction.sql`
- `sql/ccdi_purchase_transaction_menu.sql`
- `sql/migration/2026-04-22-bidding-info-maintenance-supplier-detail.sql`
- `ccdi-info-collection``ccdi-project` 相关后端代码

View File

@@ -0,0 +1,24 @@
# 招投标信息维护弹窗宽度与供应商序号前端实施计划
## 保存路径确认
- 前端实施计划保存到 `docs/plans/frontend/`
## 目标
- 新增、编辑弹窗宽度调整为页面宽度的 `80%`
- 供应商明细不再录入排序,改为页面按当前行顺序自动生成序号与提交顺序
## 实施范围
- 文件:`ruoyi-ui/src/views/ccdiPurchaseTransaction/index.vue`
## 实施步骤
1. 将新增/编辑共用弹窗宽度从固定像素改为 `80%`
2. 将供应商明细表中的“排序”输入列改为只读“序号”展示列
3. 调整供应商新增与提交逻辑,提交时按当前行顺序自动补齐 `sortOrder`
4. 清理空白供应商行判断,避免隐藏排序字段后把空白行误判为有效数据
5. 使用真实页面验证新增/编辑弹窗显示与供应商录入行为
## 验证点
- 新增/编辑弹窗宽度明显放大至页面宽度的 `80%`
- 供应商明细不再出现排序输入框
- 新增供应商后可正常录入供应商名称、统一信用代码、联系人、联系电话、银行账户
- 编辑已有数据时供应商顺序按当前表格行顺序提交

View File

@@ -0,0 +1,33 @@
# 招投标信息维护前端实施计划
## 目标
- 将信息维护下“采购交易管理”页面改造为“招投标信息维护”。
- 列表页展示中标供应商和参与供应商数,新增/编辑弹窗支持维护全部供应商明细。
- 详情弹窗与项目详情采购弹窗统一展示供应商明细表。
- 导入入口文案和模板命名改为招投标信息维护语义。
## 实施内容
- 页面改造
- 重写 `ruoyi-ui/src/views/ccdiPurchaseTransaction/index.vue`
- 将原单供应商表单替换为可增删行的供应商明细表格。
- 使用单选方式标记唯一中标供应商,并在提交时写回 `supplierList.isBidWinner`
- 列表页新增“参与供应商数”列,保留“中标供应商”摘要列。
- 详情展示
- 页面详情弹窗改为供应商明细表展示。
- 项目专项核查采购详情弹窗同步改为供应商明细表展示。
- 导入交互
- 导入弹窗文案更新为“招投标信息导入”。
- 模板下载文件名与提示改为双 Sheet 模板。
## 验证
- `source ~/.nvm/nvm.sh && nvm use 14.21.3 >/dev/null && cd ruoyi-ui && npm run build:prod`
- `source ~/.nvm/nvm.sh && nvm use 14.21.3 >/dev/null && cd ruoyi-ui && npm run dev -- --port 8080`
- 使用 Playwright 打开真实页面:
- 验证菜单显示“招投标信息维护”
- 验证列表显示“中标供应商”“参与供应商数”
- 验证新增弹窗可添加供应商明细
- 验证详情弹窗展示供应商明细表
## 产出文件
- `ruoyi-ui/src/views/ccdiPurchaseTransaction/index.vue`
- `ruoyi-ui/src/views/ccdiProject/components/detail/ExtendedPurchaseDetailDialog.vue`

View File

@@ -0,0 +1,36 @@
# 招聘信息新增编辑弹窗宽度调整前端实施计划
> **For agentic workers:** REQUIRED: Use superpowers:subagent-driven-development (if subagents available) or superpowers:executing-plans to implement this plan. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:** 将招聘信息管理页“新增招聘信息”“修改招聘信息”共用弹窗的宽度从固定 `900px` 调整为页面宽度的 `80%`,提升表单内容展示空间。
**Architecture:** 本次仅调整 `ccdiStaffRecruitment` 页面新增/编辑弹窗的 `el-dialog` 宽度配置,不新增字段、不改动详情弹窗、不调整提交逻辑和接口交互。
**Tech Stack:** Vue 2, Element UI, JavaScript, Markdown
---
## 文件结构与职责
- `ruoyi-ui/src/views/ccdiStaffRecruitment/index.vue`
调整新增/编辑招聘信息弹窗宽度配置。
## 实施步骤
- [x] 定位招聘信息管理页新增/编辑弹窗的实际模板位置
- [x] 将新增/编辑弹窗宽度从固定像素改为 `80%`
- [x] 确认详情弹窗与其他弹窗保持原样,不扩大影响范围
- [x] 运行前端构建校验模板改动未引入语法问题
- [x] 使用浏览器实际打开新增/编辑弹窗,确认宽度按页面宽度 `80%` 展示
## 验证
```bash
source ~/.nvm/nvm.sh && nvm use 14.21.3 >/dev/null && cd ruoyi-ui && npm run build:prod
```
## 完成标准
- 招聘信息管理页新增/编辑弹窗宽度调整为页面宽度的 `80%`
- 招聘信息详情弹窗和页面其他交互保持不变
- 页面构建成功,且浏览器实测可正常打开新增/编辑弹窗

View File

@@ -0,0 +1,24 @@
# 招投标信息维护弹窗宽度与供应商序号实施记录
## 保存路径确认
- 实施记录保存到 `docs/reports/implementation/`
## 本次修改
- 将招投标信息新增/编辑弹窗宽度由固定 `1200px` 调整为 `80%`
- 将供应商明细中的“排序”录入列改为只读“序号”展示列
- 供应商新增行不再预填可编辑排序值
- 提交时按供应商当前行顺序自动回填 `sortOrder`
- 空白供应商行判定不再依赖 `sortOrder`
## 影响范围
- `ruoyi-ui/src/views/ccdiPurchaseTransaction/index.vue`
## 验证方式
- 启动前端开发服务进行页面热更新验证
- 使用 Playwright 打开真实页面 `http://localhost:8080/maintain/purchaseTransaction`
- 验证编辑弹窗宽度、供应商明细列展示与新增供应商录入行为
## 结果
- 弹窗宽度调整生效
- 供应商排序输入已移除
- 供应商录入功能正常

View File

@@ -0,0 +1,47 @@
# 招投标信息维护实施记录
## 本次改动
- 将信息维护下“采购交易管理”改为“招投标信息维护”,保留原有 `purchaseTransaction` 技术标识。
- 新增供应商明细子表 `ccdi_purchase_transaction_supplier`,支持维护全部参标供应商,并使用 `is_bid_winner` 标记中标方。
- 主表继续保留中标供应商摘要字段,新增/修改/导入时从供应商明细自动回填。
- 列表查询新增供应商数聚合;详情查询和项目专项核查采购详情新增供应商明细返回。
- 导入模板改为“招投标主信息 + 供应商明细”双 Sheet并按 `purchaseId` 聚合校验。
- 前端页面改造为多供应商明细表单,详情弹窗与项目详情弹窗改为供应商明细表展示。
## 关键文件
- 后端
- `ccdi-info-collection/src/main/java/com/ruoyi/info/collection/service/impl/CcdiPurchaseTransactionServiceImpl.java`
- `ccdi-info-collection/src/main/java/com/ruoyi/info/collection/service/impl/CcdiPurchaseTransactionImportServiceImpl.java`
- `ccdi-info-collection/src/main/resources/mapper/info/collection/CcdiPurchaseTransactionMapper.xml`
- `ccdi-project/src/main/resources/mapper/ccdi/project/CcdiProjectSpecialCheckMapper.xml`
- 前端
- `ruoyi-ui/src/views/ccdiPurchaseTransaction/index.vue`
- `ruoyi-ui/src/views/ccdiProject/components/detail/ExtendedPurchaseDetailDialog.vue`
- SQL
- `sql/ccdi_purchase_transaction.sql`
- `sql/ccdi_purchase_transaction_menu.sql`
- `sql/migration/2026-04-22-bidding-info-maintenance-supplier-detail.sql`
## 验证结果
- 后端编译
- 命令:`mvn -pl ccdi-info-collection,ccdi-project -am -DskipTests compile`
- 结果:通过。
- 前端构建
- 命令:`source ~/.nvm/nvm.sh && nvm use 14.21.3 >/dev/null && cd ruoyi-ui && npm run build:prod`
- 结果:通过,仅有既有产物体积 warning。
- 数据迁移
- 命令:`bin/mysql_utf8_exec.sh sql/migration/2026-04-22-bidding-info-maintenance-supplier-detail.sql`
- 结果:执行成功,本地联调库菜单名已更新为“招投标信息维护”。
- Playwright 实页验证
- 验证页面:`http://localhost:8080/maintain/purchaseTransaction`
- 结果:
- 菜单与面包屑显示“招投标信息维护”
- 列表显示“中标供应商”“参与供应商数”
- 新增弹窗显示供应商明细表,并可新增供应商行
- 详情弹窗显示供应商明细表与中标标识
- 联调过程中发现列表 SQL 因 join 后字段未加别名导致 `purchase_id is ambiguous`,已修复并复验通过。
## 测试进程清理
- 已关闭 Playwright 浏览器会话。
- 已停止前端 `npm run dev` 进程。
- 已停止测试期间启动的后端进程。

View File

@@ -0,0 +1,28 @@
# ruoyi-ui 添加 .nvmrc 实施记录
## 文档信息
- 保存路径:`docs/reports/implementation/2026-04-22-ruoyi-ui-nvmrc-implementation.md`
- 实施日期2026-04-22
- 关联范围:`ruoyi-ui` 前端工程本地 Node 版本约束
## 本次修改内容
1. 确认 `docs/` 内近期前端实施计划与实施记录均使用 `nvm use 14.21.3` 作为 `ruoyi-ui` 的实际 Node 版本。
2.`ruoyi-ui` 目录新增 `.nvmrc`,写入 `14.21.3`,统一本地开发、构建与测试时的 Node 版本入口。
3. 保持 `package.json` 现有 `engines` 配置不变,本次仅补充 `nvm` 版本声明文件,不扩展其他构建配置。
## 影响范围
- 前端:`ruoyi-ui/.nvmrc`
- 文档:本实施记录
## 验证情况
1. 版本依据核对:
- 已核对 `docs/plans/frontend/``docs/reports/implementation/` 中近期前端构建命令,当前统一使用 `nvm use 14.21.3`
2. 本地命令校验:
- 执行命令:`source ~/.nvm/nvm.sh && cd ruoyi-ui && nvm use`
- 预期结果:自动读取 `.nvmrc` 并切换到 `v14.21.3`
3. 说明:
- 本次为 Node 版本声明文件补充,不涉及业务代码、页面交互或接口行为变更,未执行额外前端构建与页面测试。

View File

@@ -0,0 +1,30 @@
# 招聘信息新增编辑弹窗宽度调整实施记录
## 文档信息
- 保存路径:`docs/reports/implementation/2026-04-22-staff-recruitment-dialog-width-implementation.md`
- 实施日期2026-04-22
- 关联范围:招聘信息管理前端页面
## 本次修改内容
1. 定位到招聘信息管理页新增/编辑共用同一个 `el-dialog`,原宽度固定为 `900px`
2. 将新增/编辑弹窗宽度改为 `80%`,使弹窗按页面可视宽度自适应放大。
3. 保持招聘信息详情弹窗宽度和原有表单提交流程不变,避免影响非本次需求范围的交互。
4. 新增本次前端实施计划与实施记录,沉淀改动背景、影响范围与验证结论。
## 影响范围
- 前端:`ruoyi-ui/src/views/ccdiStaffRecruitment/index.vue` 新增/编辑招聘信息弹窗。
- 文档:新增前端实施计划与实施记录。
## 验证情况
1. 前端构建校验:
- 执行命令:`source ~/.nvm/nvm.sh && nvm use 14.21.3 >/dev/null && cd ruoyi-ui && npm run build:prod`
- 结果:构建成功;存在项目原有的 bundle size warnings本次改动未引入新的构建错误。
2. Playwright 浏览器实测:
- 执行方式:通过 `nvm use 25.9.0` 启动 `playwright-cli`,打开 `http://127.0.0.1:1025/prototype/staff-recruitment?preview=1&mode=add``http://127.0.0.1:1025/prototype/staff-recruitment?preview=1&mode=edit`,在真实浏览器中读取可见 `el-dialog` 的实际宽度。
- 结果:新增弹窗标题为“添加招聘信息”,页面宽度 `1280px`、弹窗宽度 `1024px`、宽度占比 `0.8`;编辑弹窗标题为“修改招聘信息”,页面宽度 `1280px`、弹窗宽度 `1024px`、宽度占比 `0.8`,与需求一致。
3. 测试进程清理:
- 已关闭本次测试过程中临时启动的 Playwright 浏览器与前端 dev server。