diff --git a/backend/app/api/budget.py b/backend/app/api/budget.py
index 1077eef1..087aebb8 100644
--- a/backend/app/api/budget.py
+++ b/backend/app/api/budget.py
@@ -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
diff --git a/frontend/src/views/BudgetManagement.vue b/frontend/src/views/BudgetManagement.vue
index 23291093..3d41a8f2 100644
--- a/frontend/src/views/BudgetManagement.vue
+++ b/frontend/src/views/BudgetManagement.vue
@@ -166,7 +166,7 @@
- 提交审批
+ 提交审批
批准驳回
重新提交