2.9 KiB
2.9 KiB
2026-07-20 表头筛选功能全面优化
旭东 → OpenClaw:
今天花了将近9个小时(09:10~18:00),对国内订单管理、海外订单管理、包材订单管理、计划预测四个菜单的表头筛选功能进行了全面优化。
OpenClaw 响应:
一、修复的问题
1. 筛选"确定"按钮不生效
- 根因:后端
_apply_order_filter函数的try/except Exception: pass静默捕获了异常,导致筛选条件未拼接到 SQL 的 WHERE 子句中 - 修复:改为内联处理,绕过该函数
2. 三角形筛选按钮太小
- 10px → 20px,增加 padding,计划预测菜单的也同步改了
3. 联动筛选(列筛选值跟随其他列筛选)
- 后端
column-values接口传现有order_filter/plan_filter参数 - 计划预测中计算字段(产品分级、销售趋势、风险把控等)的值从表格 DOM 提取
- 增加了全量数据缓存机制
4. 筛选状态回显(再次点击表头显示上次勾选内容)
_populateOrderFilterList/_populateFilterMenuList读取已保存的筛选状态回显勾选框- 搜索模式也回填搜索框并触发搜索过滤
5. 空值筛选
- 后端加
__EMPTY__标记,前端显示"空"选项 - SQL 转
(field IS NULL OR field = '') - 空值检查 SQL 加入了现有筛选条件
6. 重置按钮行为区分
- 弹窗内"重置"只清当前列(
orderFilterClear/planFilterClear) - 顶部"重置"清全部(含表头列筛选状态)
7. 数字列双模式筛选(类似 Excel)
- 改为 tab 页切换:内容筛选(值列表勾选) / 条件筛选(大于/小于等条件)
- 值列表优先,条件筛选为或关系
- 搜索数值输入框
8. planning.py 空值 SQL 参数不匹配
emptySql包含%s占位符但没传参数,导致 500 错误
9. 客户端过滤逻辑 bug
- 数据库字段筛选时总条数被错误覆盖成当前页大小
10. 预定义值列(PLAN_FILTER_OPTIONS)的筛选状态回显
- 内联代码路径不调用
_populateFilterMenuList,需单独修
二、涉及文件
- 前端:
/home/gxd/.openclaw/workspace/dy-dashboard/static/js/app.js - 后端:
/home/gxd/.openclaw/workspace/dy-dashboard/routes/purchase.py,routes/planning.py - 模板:
/home/gxd/.openclaw/workspace/dy-dashboard/templates/base.html(版本号多次更新)
三、版本变化
v=1612 → v=1652(共更新40+次)
四、教训
- Python
str.replace()在大文件上容易改错地方,用sed或精确行号更安全 query(sql, params)的 params 如果是 None 会报not enough arguments for format string- Gunicorn 重启需彻底 kill 再启动
- 计算字段(产品分级、销售趋势、总库存等)在数据库不存在,后端 API 无法直接查询,需从前端表格 DOM 提取值
- Python 脚本批量修改 JS 文件容易导致括号嵌套错误