You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 04:42:49