Odoo14自定义模块中如何修改搜索视图默认查询条件
联系人仪表盘默认当年数据筛选失效的解决办法
核心排查点与修复步骤
盯紧组件触发时机
别等仪表盘渲染完再插筛选条件,必须在页面初始化的最早期执行——比如Vue里的beforeMount、React的componentWillMount,或者平台自带的页面加载前置钩子。晚一步的话,仪表盘已经用原始数据渲染了,你的条件自然不生效。核对筛选格式是否匹配
当年时间范围的格式必须和数据源的时间字段完全对齐:- 是
YYYY-MM-DD就老老实实生成${new Date().getFullYear()}-01-01到${new Date().getFullYear()}-12-31; - 要是用时间戳,就转成对应毫秒数,别搞混格式。
- 是
确认筛选条件真的绑定到数据源了
别光在组件内部存条件,得调用平台官方的API把条件塞到仪表盘的搜索参数里。比如有些平台要调用setDefaultFilters这类方法,不是自己拼个参数就有用的。先确认你拿到了仪表盘的实例对象,再把条件传进去。检查有没有默认规则冲突
看看仪表盘本身是不是已经设了其他默认筛选,或者平台全局有覆盖自定义筛选的配置,把你的条件冲掉了。先把其他默认筛选清掉,单独测你的自定义条件。先写极简代码测逻辑
别上来就套组件,先在控制台跑一段测试代码:// 生成当年时间范围 const currentYear = new Date().getFullYear(); const filterParams = { contactCreateTime: [`${currentYear}-01-01`, `${currentYear}-12-31`] }; // 调用平台设置筛选的API(替换成你用的平台方法) getDashboardInstance().setFilters(filterParams);要是这段手动执行能生效,再把逻辑移到组件里,排除组件本身的问题。
额外提醒
要是用的是低代码平台,先去看官方文档有没有原生的「当年默认筛选」配置——很多平台直接在仪表盘的筛选设置里选「动态默认值-当年」就行,比自定义组件靠谱多了,没必要自己造轮子。
内容的提问来源于stack exchange,提问作者user23256668
相关产品推荐
相关产品推荐

