el-button type="danger" plain 的“清空数据…”按钮与说明“按报表期清库,用于整月重导”,与“刷新”物理分开,降低误触。el-select multiple filterable,按分组列出可选类型并标注“(已导入 N 行/未导入)”;底部红色警示语说明会同步删除审核结果、已审核标记与导入批次(投资项目主档保留)且不可撤销。POST /api/import/clear 增加可选参数 types(逗号分隔):为空 = 清空该报表期全部类型(原行为不变);非空 = 只清空指定数据类型,并同步清理其关联的 audit_result / audit_run / import_batch。DataImportService:clearPeriod(period, types) 重载;新增静态映射 CLEAR_TYPE_TO_OP(类型→数据表操作键,同表归并去重)、CLEAR_TYPE_TO_AUDIT(类型→审核规则类型)、CLEAR_TYPE_TO_BATCH(类型→importType);新增 clearTypeData(op, period) 分派与 deleteInvestmentMonthly(period, category)(投资月度按项目类别过滤,仅删本期明细,投资主档保留)。返回值新增 scope 与 types,便于前端提示清空范围。DataImportController:clearData 增加 types 参数解析(空串/空项忽略)。DataImport.vue:移除 .side-head-btns 与旧 clearPeriodData();新增 .side-danger 危险操作区、清空弹窗、openClearDialog()/clearableGroups()/confirmClear() 与 clearDialog/clearScope/clearTypes 状态;确认后再走一次 $confirm 二次确认,成功提示带删除行数。start-dev.ps1 启动,PID 21884,启动时间 2026-09-10 08:54:02,加载 target/classes 最新编译产物)。frontend.log 最近一次 Compiled successfully in 347ms(08:53:29),热更新已生效。localhost:3308/traffic_audit,mysql CLI 直查核对;登录账号 admin/123456。2099-01 / 2099-02,使用 docs/货运需导入的数据/货运/2026年1-7月报/道路货物运输月度生产情况(2026年6月).xls(636 行)与 2026-07 城市公交样本;真实月份仅做回归对比,不被写入或删除。| # | 用例 | 输入 | 预期 | 实际 | 结论 |
|---|---|---|---|---|---|
| 1 | 编译 | mvn -o -q compile |
通过 | 无报错 | 通过 |
| 2 | 正向-按类型清空 | POST /import/clear?period=2099-01&types=h2032 |
只删 h2032 及其 H2032 审核结果/批次 | dataRows=636、auditRows=31、auditRunRows=1、batchRows=1;DB 核对 h2032=0、H2032 规则审核结果=0、audit_run(H2032)=0、批次(H2032)=0 | 通过 |
| 3 | 隔离性-其它类型不受影响 | 同上,清 h2032 后查 cityBus | cityBus 数据与审核/批次保留 | cityBus 业务 142 行、CITY_BUS 审核 53 行、audit_run(CITY_BUS)=1、批次(CITY_BUS)=1 均保留 | 通过 |
| 4 | 隔离性-其它报表期不受影响 | 同上,查 2099-02 | 2099-02 数据不受影响 | 2099-02 数据完好 | 通过 |
| 5 | 负向-非法类型 | types=notAType |
拒绝并提示 | HTTP 500,清空失败: 未指定有效的数据类型 |
通过 |
| 6 | 边界-有效+未知混合 | types=cityBus,notAType |
忽略未知、按有效类型执行 | 成功,返回 scope=types, types=[cityBus,notAType],删除 0 行(该期无数据) |
通过 |
| 7 | 边界-空类型列表 | 不传 types |
按全部类型清空(原行为) | 成功,scope=all |
通过 |
| 8 | 投资按类别 | 插入 2099-01 客运站场/物流园区测试行后分别清空 | 只删对应类别,投资主档保留 | types=investment 只删客运站场、types=investmentLogistics 只删物流园区,investment_project 主档保留 |
通过 |
| 9 | UI-按钮位置 | 打开数据导入页,展开“导入进度” | “刷新”旁无清空;清空按钮在独立红色危险区 | 与预期一致(可访问性树可读到“清空数据…”按钮与提示文案) | 通过 |
| 10 | UI-弹窗选项 | 点“清空数据…” | 弹窗含报表期、全部/指定类型单选、类型下拉带导入状态 | 选中“道路货物运输月度生产情况(已导入 636 行)”,选项标签与状态一致 | 通过 |
| 11 | UI-确认清空 | 选中 h2032 后点“确认清空” | 二次确认 → 成功提示含行数、进度回“未导入” | 提示“已清空 2099-01 数据:业务数据 636 行、审核结果 0 行、导入批次 1 条,可以重新导入”,进度回“未导入” | 通过 |
| 12 | 回归-真实月份 | 清空前后对比 | 无变化 | 2099-01 残留=0;2026-09=636、2026-07=636、2025-07=664 未变;真实批次总数 239 未变 | 通过 |
admin 密码为 123456(admin123 在本机不匹配)。