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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user