feat: 费用模块重构 + 项目模块优化 + 数据库迁移

费用模块:
- 字段精简为5个:费用类型(下拉6选)、月份(3年36月下拉)、金额、已发生金额、费用说明(textarea)
- 三视图切换(总/季度/月度),按expense_month筛选,汇总卡片实时更新
- 类型筛选功能,Toolbar+汇总+表格三段式布局
- 删除按钮移至关闭按钮左侧,间距8px
- 费用记录删除合计行,列宽固定200px,居中

项目模块:
- 卡片网格6→7列(14卡片7×2满排),配置驱动 METRIC_CARDS
- 新增费用/利润字段,利润=毛利-费用
- 表格行添加费用、利润列,比率列text-xs→text-sm
- 项目流水tab费用与已付列对调,汇总卡片6→1×6
- 修复月度/季度切换时汇总卡片不更新
- 筛选区统一为卡片,去除'筛选:'前缀

数据库:
- expense_records新增expense_type/expense_month/incurred_amount列
- migrations/columns.py幂等迁移,启动时自动执行
This commit is contained in:
mac
2026-07-06 17:31:34 +08:00
parent 8a78c756b7
commit 7ab0c71b54
6 changed files with 189 additions and 90 deletions

View File

@@ -98,6 +98,13 @@ def migrate_add_columns():
"ALTER TABLE project_finances ADD COLUMN contact_phone VARCHAR(50) NOT NULL DEFAULT ''")
_add_column_if_missing(conn, "project_finances", "other_info",
"ALTER TABLE project_finances ADD COLUMN other_info VARCHAR(500) NOT NULL DEFAULT ''")
# expense_records 字段迁移(重构为费用类型+月份+金额+已发生金额+费用说明)
_add_column_if_missing(conn, "expense_records", "expense_type",
"ALTER TABLE expense_records ADD COLUMN expense_type VARCHAR(100) NOT NULL DEFAULT ''")
_add_column_if_missing(conn, "expense_records", "expense_month",
"ALTER TABLE expense_records ADD COLUMN expense_month VARCHAR(20) NOT NULL DEFAULT ''")
_add_column_if_missing(conn, "expense_records", "incurred_amount",
"ALTER TABLE expense_records ADD COLUMN incurred_amount DOUBLE NOT NULL DEFAULT 0")
conn.commit()
print("[migrate] 加列迁移完成")