在 Odoo 版本 15 中,我基于按钮 Accept 和 Deny 创建了一个 Js cod,并在res users 模型中创建了一个布尔字段。工作流程是:如果用户单击“接受”按钮,则布尔字段为 True,然后单击“拒绝”按钮,它将变为 False 状态。功能运行良好。目前,我面临的问题是两个按钮都显示在页面刷新时间上。如何解决这个问题......实际上我只想根据用户可用性显示一个按钮(基于布尔字段)
在 XML 方面:
<templates>
<t t-extend="ListView.buttons" t-name="AttendenceMarkListView.buttons">
<t t-jquery="button.o_list_button_add" t-operation="after">
<!-- <t t-if="widget.isAvailable()">-->
<button t-if="widget.modelName == 'helpdesk.ticket'" type="button" class="btn btn-secondary btn-secondary-new o_button_accept_ticket">
Accept
</button>
<button t-if="widget.modelName == 'helpdesk.ticket'" type="button" class="btn btn-secondary btn-secondary-new o_button_deny_ticket">
Deny
</button>
<!-- </t>-->
</t>
</t>
</templates>
在 JS 方面:
odoo.define('attendance.button.tree', function (require) {
"use strict";
var core = require('web.core');
var ListController = require('web.ListController');
var ListView = require('web.ListView');
var viewRegistry = require('web.view_registry');
var rpc = require('web.rpc')
var includeDict = {
buttons_template: 'AttendenceMarkListView.buttons',
renderButtons: function ($node) {
this._super.apply(this, arguments);
var self = this;
this.$buttons.on('click', '.o_button_accept_ticket', this._onAcceptAttendance.bind(this));
this.$buttons.on('click', '.o_button_deny_ticket', this._onDeclineAttendance.bind(this));
},
_onAcceptAttendance: function(){
var self = this;
this.$('.o_button_accept_ticket').hide();
this.$('.o_button_deny_ticket').show();
rpc.query({
model: 'helpdesk.ticket',
method: 'user_accept_ticket',
args: [],
}, {
shadow: true,
}).then(function () {
});
},
_onDeclineAttendance: function(){
var self = this;
this.$('.o_button_deny_ticket').hide();
this.$('.o_button_accept_ticket').show();
rpc.query({
model: 'helpdesk.ticket',
method: 'user_decline_ticket',
args: [],
}, {
shadow: true,
}).then(function () {
});
},
};
ListController.include(includeDict);
});