odoo在Tree试图自定义按钮。。。

XML

<?xml version="1.0" encoding="UTF-8"?>
<template id="template" xml:space="preserve">
  <t t-name="WageManageListView.employee_performance_manage">
        <button type="button" class="btn btn-secondary employee_performance_manage_submit_review">
            批量提交审核
        </button>
        <button type="button" class="btn btn-secondary employee_performance_manage_review_confirmed" groups="wage_manage.performance_review_group">
            批量确认审核
        </button>
    </t>

    <t t-extend="ListView.buttons" t-name="WageManageListView.employee_performance_manage_buttons">
        <t t-jquery="button.o_list_button_add" t-operation="after">
            <t t-js="ctx">
                if (window.odoo._modules.indexOf("base_import") >= 0) {
                    r.push(context.engine.tools.call(context, 'ImportView.import_button', dict));
                };
            </t>
            <t t-call="WageManageListView.employee_performance_manage"/>
        </t>
    </t>
</template>

Js文件监听按钮,触发事件

odoo.define('employee.performance.manage.tree.button', function (require) {
    "use strict";

    let ListController = require('web.ListController');
    let ListView = require('web.ListView');
    let viewRegistry = require('web.view_registry');

    let EmployeePerformanceManageViewController = ListController.extend({
        buttons_template: 'WageManageListView.employee_performance_manage_buttons',
        renderButtons: function () {
            this._super.apply(this, arguments);
            if (this.$buttons) {
                var self = this;
                // 提交审核
                this.$buttons.on('click', '.employee_performance_manage_submit_review', function () {
                    let view_type = self.viewType;
                    let actived_ids = [];
                    let state = self.model.get(self.handle, {raw: true});
                    for (let i = 0; i < $('tbody .o_list_record_selector input').length; i++) {
                        if ($('tbody .o_list_record_selector input')[i].checked === true) {
                            actived_ids.push(state.res_ids[i]);
                        }
                    }
                    console.log(actived_ids);
                    // 至此已经获取到了勾选的项的ID,可以去调用后台的方法,或者打开一个新的页面,一个新的wizard
                    let ctx = state.context;
                    ctx['active_ids'] = actived_ids;
                      // 我这里是打开了一个新的wizard 将选中的id通过context传递过去进行相应的处理
                    self.do_action({
                        type: 'ir.actions.act_window',
                        res_model: 'employee.performance.manage.review',
                        target: 'new',
                        views: [[false, 'form']],
                        context: {
                            view_type: view_type,
                            active_ids: actived_ids,
                        },
                    },{
                        on_reverse_breadcrumb: function () {
                            self.reload();
                        },
                        on_close: function () {
                            self.reload();
                        }
                    });
                });
                // 确认审核
                this.$buttons.on('click', '.employee_performance_manage_review_confirmed', function () {
                    let view_type = self.viewType;
                    let actived_ids = [];
                    let state = self.model.get(self.handle, {raw: true});
                    for (let i = 0; i < $('tbody .o_list_record_selector input').length; i++) {
                        if ($('tbody .o_list_record_selector input')[i].checked === true) {
                            actived_ids.push(state.res_ids[i]);
                        }
                    }
                    // 至此已经获取到了勾选的项的ID,可以去调用后台的方法,或者打开一个新的页面,一个新的wizard
                    let ctx = state.context;
                    ctx['active_ids'] = actived_ids;
                      // 我这里是打开了一个新的wizard 将选中的id通过context传递过去进行相应的处理
                    self.do_action({
                        type: 'ir.actions.act_window',
                        res_model: 'employee.performance.manage.confirmed',
                        target: 'new',
                        views: [[false, 'form']],
                        context: {
                            view_type: view_type,
                            active_ids: actived_ids,
                        },
                    },{
                        on_reverse_breadcrumb: function () {
                            self.reload();
                        },
                        on_close: function () {
                            self.reload();
                        }
                    });
                });
            }
        }
    });

    let EmployeePerformanceeView = ListView.extend({
        config: _.extend({}, ListView.prototype.config, {
            Controller: EmployeePerformanceManageViewController,
        }),
    });

    viewRegistry.add('employee_performance_manage_class', EmployeePerformanceeView);
});

.py文件

# -*- coding: utf-8 -*-
import logging
from odoo import api, fields, models
from odoo.exceptions import UserError

_logger = logging.getLogger(__name__)


class EmployeePerformanceTran(models.TransientModel):
    _name = 'employee.performance.manage.review'
    _description = "批量提交审核"

    performance_ids = fields.Many2many('employee.performance.manage', 'performance_manage_review_list_rel', string=u'员工绩效管理')

    @api.multi
    def submit_review(self):
        """
        批量提交审核
        :return:
        """
        self.ensure_one()
        self.performance_ids.write({'state': 'wait'})
        return {'type': 'ir.actions.act_window_close'}

    @api.model
    def default_get(self, fields):
        context = dict(self._context or {})
        view_type = context.get('view_type')
        active_ids = context.get('active_ids')
        if not active_ids:
            raise UserError("未选择要提交的记录!")
        result = super(EmployeePerformanceTran, self).default_get(fields)
        if 'performance_ids' in fields:
            result['performance_ids'] = [(6, 0, active_ids)]
        return result

 不要忘了把XML加载到 __manifest__.py里面

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值