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

如何在Odoo 16中隐藏crm_lead的归档、取消归档及导出操作?

Odoo 16 隐藏CRM线索的归档、取消归档及导出操作方案

方法一:通过XML视图继承修改(推荐,无需JS)

这种方法直接修改视图结构,移除目标按钮/菜单项,稳定且易于维护。

1. 隐藏归档/取消归档按钮

在自定义模块的XML视图文件中添加以下代码,继承CRM线索的列表和表单视图,移除归档相关按钮:

<odoo>
    <!-- 继承列表视图,移除归档按钮 -->
    <record id="crm_lead_tree_inherit_hide_archive" model="ir.ui.view">
        <field name="name">crm.lead.tree.inherit.hide.archive</field>
        <field name="model">crm.lead</field>
        <field name="inherit_id" ref="crm.crm_lead_view_tree"/>
        <field name="arch" type="xml">
            <xpath expr="//button[@name='toggle_active']" position="replace"/>
        </field>
    </record>

    <!-- 继承表单视图,移除归档按钮 -->
    <record id="crm_lead_form_inherit_hide_archive" model="ir.ui.view">
        <field name="name">crm.lead.form.inherit.hide.archive</field>
        <field name="model">crm.lead</field>
        <field name="inherit_id" ref="crm.crm_lead_view_form"/>
        <field name="arch" type="xml">
            <xpath expr="//button[@name='toggle_active']" position="replace"/>
        </field>
    </record>
</odoo>

2. 隐藏导出操作

同样在XML视图文件中添加代码,移除列表视图中的导出菜单项:

<odoo>
    <record id="crm_lead_tree_inherit_hide_export" model="ir.ui.view">
        <field name="name">crm.lead.tree.inherit.hide.export</field>
        <field name="model">crm.lead</field>
        <field name="inherit_id" ref="crm.crm_lead_view_tree"/>
        <field name="arch" type="xml">
            <!-- 移除导出按钮 -->
            <xpath expr="//button[@name='action_export']" position="replace"/>
            <!-- 若导出项在下拉菜单中,移除对应菜单项 -->
            <xpath expr="//menuitem[@name='Export']" position="replace"/>
        </field>
    </record>
</odoo>

方法二:通过权限控制彻底禁用

如果需要针对特定用户组限制操作,可通过权限设置实现:

1. 禁用导出权限

进入设置 > 用户与公司 > 用户组,找到目标用户组,在「权限」标签下,取消勾选crm.lead模型的「导出」权限。

2. 禁用归档/取消归档权限

归档操作本质是修改active字段,可通过记录规则禁止用户修改该字段:

<odoo>
    <record id="crm_lead_rule_no_active_edit" model="ir.rule">
        <field name="name">CRM Lead: 禁止修改归档状态</field>
        <field name="model_id" ref="crm.model_crm_lead"/>
        <field name="groups" eval="[(4, ref('base.group_user'))]"/> <!-- 指定目标用户组 -->
        <field name="domain_force">[('id', '=', False)]</field>
        <field name="perm_write">0</field>
        <field name="fields">active</field>
    </record>
</odoo>

方法三:通过JavaScript隐藏(适合特殊场景)

若之前尝试JS未成功,可检查路径和模块依赖,以下是正确的JS实现:

  1. 在模块的static/src/js/目录下创建hide_lead_actions.js:
odoo.define('your_module_name.hide_lead_actions', function(require) {
    "use strict";

    const ListController = require('web.ListController');

    ListController.include({
        renderButtons: function($node) {
            this._super.apply(this, arguments);
            // 仅对CRM线索列表生效
            if (this.modelName === 'crm.lead') {
                // 隐藏归档/取消归档按钮
                this.$buttons.find('.o_list_button_archive').hide();
                this.$buttons.find('.o_list_button_unarchive').hide();
                // 隐藏导出按钮
                this.$buttons.find('.o_button_export').hide();
            }
        }
    });
});
  1. 在模块的views/assets.xml中引入该JS:
<odoo>
    <template id="assets_backend_hide_actions" inherit_id="web.assets_backend">
        <xpath expr="." position="inside">
            <script type="text/javascript" src="/your_module_name/static/src/js/hide_lead_actions.js"/>
        </xpath>
    </template>
</odoo>

操作步骤

  1. 确保自定义模块依赖crm模块(在__manifest__.py的depends中添加'crm')
  2. 将上述代码放入对应文件,更新模块列表
  3. 安装/升级自定义模块,刷新页面即可生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 11:08:13