首先在 xml 的动作窗口上增加:<field name="context">{}<field/>
列如:
<record id="cashier_pay_report_view_action" model="ir.actions.act_window">
<field name="name">出纳付款</field>
<field name="res_model">cashier.pay.report</field>
<field name="view_mode">tree,form</field>
<field name="domain">[]</field>
<field name="context">
{
"list_style_controller": [{
"model": "cashier.pay.report",
"domain": [('latest_payment_date', '<=', 'a_week_later'),
('payment_state_name', '=', '未付款'),
('document_status', '!=', '5')],
"style": {"color": "red"}
}],
"form_button": {
"edit": ['|', ('document_status', 'in', ['1', '2', '5']), ('edit_button', '=', False)],
"create": [('create_button', '=', False)]},
}
</field>
<field name="help" type="html">
<p class="o_view_nocontent_empty_folder">
No module found!
</p>
<p>
You should try other search criteria.
</p>
</field>
</record>
JS代码:
odoo.define('xz_fund_settlement.hide_edit_btn', function (require) {
"use strict";
var FormController = require('web.FormController');
var ListController = require('web.ListController');
var Domain = require('web.Domain');
// form表单的显示与影藏的控制
FormController.include({
updateButtons: function () {
try {
this._super.apply(this, arguments);
// 获取窗口的context值
var from_button = this.controlPanelProps.action.context.form_butto
const entries = Object.entries(from_button);
for (const [key, values] of entries) {
// 判断context的domain返回的值
var result = new Domain(values).compute(this.renderer.state.evalContext)
// .o_form_button_create 是创建按钮
// .o_form_button_edit 是编辑按钮
if (result) {
// 隐藏form表单的编辑(创建)按钮
this.$buttons.find(`.o_form_button_${key}`).hide();
} else {
// 显示form表单的编辑(创建)按钮
this.$buttons.find(`.o_form_button_${key}`).show();
}
}
} catch (e) {
// console.log(e)
}
},
});
// tree视图的显示与影藏的控制
ListController.include({
updateButtons: function () {
try {
this._super.apply(this, arguments);
// 获取窗口的context值
var tree_button = this.controlPanelProps.action.context.tree_button
// 判断context的domain返回的值
var result = new Domain(tree_button['create']).compute(this.renderer.state.evalContext)
if (result) {
// 隐藏tree视图的创建按钮
this.$buttons.find('.o_list_button_add').hide();
} else {
// 显示tree视图的创建按钮
this.$buttons.find('.o_list_button_add').show();
}
} catch (e) {
// console.log(e);
}
},
});
});
js文件记得导入:
最后在 __manifest__.py 文件中引入 js导入的xml文件
完成