odoo看板视图拓展

文章描述了如何通过阅读和修改原生服务台代码来扩展看板视图,特别是在审批模块中添加了一个4列的表格,用于显示待审批、已审批和我的提交等状态。主要涉及模板定义、JS文件的修改以及KanbanRenderer的渲染方法重写,最后通过引入JS和CSS文件实现在看板中的呈现。
摘要由CSDN通过智能技术生成

通过阅读原生的服务台代码,拓展看板视图,对审批模块进行优化,实现如下效果: 

主要思路:

其实就是在看板视图的基础上加了一个表格,这个表格由4个td标签组成。

首先呢先定义好表格的template:

<?xml version="1.0" encoding="UTF-8"?>
<templates>
    <t t-name="approval.Dashboard">
        <div class="o_approval_dashboard">
            <div>
                <table class="approval_table table-sm">
                    <tr>
                        <td class="o_text">
                            <div class="o_highlight">我的审批</div>
                        </td>
                        <!-- 此处的name对应相应的动作视图的id js中获取跳转-->
                        <td class="o_approval_main o_approval_dashboard_action" title="To approve"
                            name="approval.approval_my_task_action">
                            <a href="#">
                                <span class="o_highlight">
                                    <t t-esc="values['to_approve']"/>
                                </span>
                                <br/>

                                待审批
                            </a>
                        </td>
                        <td class="o_approval_main o_approval_dashboard_action" title="Approved"
                            name="approval.approval_approved_task_action">
                            <a href="#">
                                <span class="o_highlight">
                                    <t t-esc="values['approved']"/>
                                </span>
                                <br/>
                                已审批
                            </a>
                        </td>
                        <td class="o_approval_main o_approval_dashboard_action" title="My submits"
                            name="approval.approval_my_submit_action">
                            <a href="#">
                                <span class="o_highlight">
                                    <t t-esc="values['submitted']"/>
                                </span>
                                <br/>
                                我的提交
                            </a>
                        </td>
                    </tr>
                </table>

            </div>

        </div>
    </t>
</templates>

其次是js文件:

主要代码:


        _render: function () {
            var self = this;
            return this._super.apply(this, arguments).then(function () {
                var values = self.state.dashboardValues;
                var helpdesk_dashboard = QWeb.render('approval.Dashboard', {
                    widget: self,
                    show_demo: values.show_demo,
                    rating_enable: values.rating_enable,
                    values: values,
                });
                if (!self.$el.parent('.o_kanban_view_wrapper').length) {
                    self.$el.wrap('<div class="o_kanban_view_wrapper d-flex flex-column align-items-start"></div>');
                }
                self.$el.parent().find(".o_approval_dashboard").remove();
                self.$el.before(helpdesk_dashboard);
                self.$el.parent().find('.o_approval_dashboard_action').on('click', self, self._onDashboardActionClicked.bind(self));
            });
        },

主要是对 web.KanbanRenderer进行拓展,重写它的_rander渲染方法

QWeb.render 方法将之前定义好的template生成一个dom节点,然后插入该节点。

最后别忘记在 看板视图中引入该js_class

<kanban string="审批" class="oe_background_grey o_kanban_dashboard" default_group_by="approval_type_id"
                        js_class="approval_dashboard"
                        archivable="false">

然后在xml中引入js和css文件

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <data>
        <template id="assets_backend" name="approval extension assets" inherit_id="web.assets_backend">
            <xpath expr="//script[last()]" position="after">
                <script type="text/javascript" src="/approval/static/src/js/approval.js"/>
                <link rel="stylesheet" href="/approval/static/src/css/header_dashboard.css"/>
                <script type="text/javascript" src="/approval/static/src/js/approval_strategy_kanban_view.js"/>
            </xpath>
        </template>
    </data>
</odoo>

以下积分商城的实现原理也大致一样:

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值