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 @@