0

在 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);

});
4

0 回答 0