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

Odoo15基于hr_org_chart的res.partner组件SCSS不加载问题

Odoo15 中 res.partner 模型无法加载组织架构组件SCSS样式的问题分析

我在Odoo15中基于hr_org_chart模块开发了一个展示公司架构的组件,需求是在res.partner模型中显示公司结构。目前组件可正常运行,但在res.partner模型中无法加载SCSS样式;即使使用原生hr_org_widget,在res.partner中同样无SCSS样式,仅在hr.employee模型中显示正常。涉及代码文件包括__manifest__.py、variables.scss、company_chart.scss、company_chart.js。

可能的原因及排查方向

1. SCSS资源的加载范围未覆盖res.partner模型

Odoo的前端资源(如SCSS)通过模块__manifest__.py的assets字段指定加载场景。原生hr_org_chart的SCSS可能仅绑定了hr.employee相关视图或模型的上下文,导致res.partner视图触发时未加载对应样式。

  • 检查模块__manifest__.py的assets配置,确认是否将SCSS文件添加到web.assets_backend这类全局后端资产包,而非仅关联hr模块专属的资产包(比如hr.assets_hr)。
  • 错误示例:仅把SCSS归入hr.assets_hr,这样只有HR模块视图会加载样式,res.partner属于基础模块视图,不会触发加载。

2. 样式选择器依赖hr.employee视图的专属上下文

原生hr_org_widget的SCSS可能使用了仅在hr.employee视图中存在的父级选择器(比如.o_hr_employee_form),导致样式在res.partner视图中无法匹配生效。

  • 查看company_chart.scss中的选择器,确认是否依赖hr.employee表单特有的类名。如果是,需要修改选择器,使其能匹配res.partner视图中的组件容器。
  • 示例问题:原样式用.o_hr_employee_form .org-chart,但res.partner视图中没有.o_hr_employee_form父容器,样式自然无法生效。

3. 前端资源缓存未更新

Odoo存在前端资源缓存机制,若SCSS文件已更新但缓存未清理,res.partner视图可能仍加载旧的无样式资源。

  • 执行Odoo资产打包命令强制刷新资源:./odoo-bin --addons-path=addons -d your_db --load-web-assets
  • 用Ctrl+Shift+R强制刷新浏览器,清理客户端缓存。

4. 组件挂载容器的DOM结构差异

hr.employee模型中,hr_org_widget挂载的容器有特定样式上下文,而res.partner视图的容器缺少这些上下文类,导致SCSS样式无法继承或生效。

  • 对比hr.employee和res.partner视图中组件挂载容器的DOM结构与类名差异,调整company_chart.scss的选择器适配新容器。

内容的提问来源于stack exchange,提问作者LukaszK

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:33:15