fix(budget): 版本管理UI字段/状态机对齐 active→draft映射+plan_count/last_updated别名

- list_budget_versions 输出 approval_status(active映射draft)+plan_count+last_updated
- 保留 status/kpi_count/updated_at 原字段兼容(下拉'当前'标记/测试契约)
- 前端提交审批按钮兜底 active(双端保险)
- 修复: 版本行仅复选框无按钮/状态恒草稿/条目数空白/最后更新空白
This commit is contained in:
Hermes CI Fix
2026-09-07 11:01:56 +08:00
parent 1fa08364ad
commit b01a108874
2 changed files with 12 additions and 3 deletions
+11 -2
View File
@@ -1435,14 +1435,23 @@ def list_budget_versions(
result = []
for key, v in version_map.items():
raw_status = v["status"]
# 状态机对齐(2026-09-07 UI修复):DB 默认态是 active(当前在用/草稿态),
# 前端审批按钮语义用 draft=可提交审批/submitted=待审批/approved=已批准只读/rejected=已驳回
# → approval_status 把 active 映射为 draft,同时保留 status 原字段兼容其他引用(下拉"当前"标记等)
approval_status = "draft" if raw_status == "active" else raw_status
updated_str = v["updated_at"].strftime("%Y-%m-%d %H:%M") if v["updated_at"] else ""
result.append({
"version": v["version"],
"status": v["status"],
"status": raw_status,
"approval_status": approval_status,
"kpi_count": v["kpi_count"],
"plan_count": v["kpi_count"], # 前端列 prop 别名(BudgetManagement.vue versions tab)
"total_budget": round(v["total_budget"], 2),
"period_count": len(v["periods"]),
"year": year,
"updated_at": v["updated_at"].strftime("%Y-%m-%d %H:%M") if v["updated_at"] else "",
"updated_at": updated_str,
"last_updated": updated_str, # 前端列 prop 别名
})
result.sort(key=lambda x: x["version"], reverse=True)
return result