odoo中tree视图添加按钮并弹出框

通过qweb模板给相应模块上的tree视图上添加上⾃定义的按钮。
在’static/src/xml’⽂件下创建⼀个xml⽂件,我的是在demo.xml⾥⾯编写如下代码:
在这里插入图片描述
然后别忘了将该模板xml⽂件添加到__manifest__.py⽂件中:
在这里插入图片描述
创建js文件

odoo.define('bicon_wms_base.bicon_wms_tree_button', function (require) {
    "use strict";
    //这些是调用需要的模块
    var ListView = require('web.ListView');
    var viewRegistry = require('web.view_registry');
    var ListController = require('web.ListController');
    //这块代码是继承ListController在原来的基础上进行了扩展
    var BiconListController = ListController.extend({
        renderButtons: function () {
            console.log('进入按钮渲染方法');
            this._super.apply(this, arguments);
            if(this.$buttons){
                var btn_start_use_by_pos = this.$buttons.find('.start_use_by_pos');
                btn_start_use_by_pos.on('click', this.proxy('start_use_by_pos_create'));
                this.$buttons.find('.block_up_by_pos').on('click', this.proxy('block_up_by_pos_create'));
                this.$buttons.find('.start_use_by_area_pos').on('click', this.proxy('start_use_by_area_pos_create'));
                this.$buttons.find('.block_up_by_area_pos').on('click', this.proxy('block_up_by_area_pos_create'));
                this.$buttons.find('.generate_goods_by_area_pos').on('click', this.proxy('generate_goods_by_area_pos_create'));
            }
        },
        //仓库分区
        generate_goods_by_area_pos_create: function(){
            var self = this;
            var records = _.map(self.selectedRecords, function(id){
                return self.model.localData[id];
            });
            var ids = _.pluck(records, 'res_id');
            this._rpc({
                model: 'base.ware.pos',
                method : 'add_button',
                args: [ids],
            }).then(function (result) {
                self.do_action(result);
            });
        },
        block_up_by_area_pos_create: function(){
            var self = this;
            var records = _.map(self.selectedRecords, function (id) {
                return self.model.localData[id];
            });
            var ids = _.pluck(records, 'res_id');
            this._rpc({
                model: 'base.ware.pos',
                method: 'block_up',
                args: [ids],
            }).then(function () {
                self.reload();
            });
        },
        start_use_by_area_pos_create: function(){
            var self = this;
            var records = _.map(self.selectedRecords, function (id) {
                return self.model.localData[id];
            });
            var ids = _.pluck(records, 'res_id');
            this._rpc({
                model: 'base.ware.pos',
                method: 'start_use',
                args: [ids],
            }).then(function () {
                self.reload();
            });
        },

        //集货位管理
        block_up_by_pos_create: function(){
            var self = this;
            var records = _.map(self.selectedRecords, function (id) {
                return self.model.localData[id];
            });
            var ids = _.pluck(records, 'res_id');
            this._rpc({
                model: 'base.gather.zone.pos',
                method: 'block_up',
                args: [ids],
            }).then(function(){
                self.reload();
            });
        },
        start_use_by_pos_create:function () {
            var self = this;
            var records = _.map(self.selectedRecords, function (id) {
                return self.model.localData[id];
            });
            var ids = _.pluck(records, 'res_id');
            this._rpc({
                model: 'base.gather.zone.pos',
                method: 'start_use',
                args: [ids],
            }).then(function(){
                self.reload();
            });
        },
    });

//    这块代码是继承ListView在原来的基础上进行扩展
//    这块一般只需要再config中添加上自己的Model, Renderer, Controller
//    这里就对原来的Controller进行了扩展编写,所以就配置了一下BiconListController
    var BiconListView = ListView.extend({
        config: _.extend({}, ListView.prototype.config, {
            Controller: BiconListController,
        }),
    });
//    这里用来注册编写的视图BiconListView,第一个字符串是注册名到时候需要根据注册名调用视图
    viewRegistry.add('bicon_wms_tree_button', BiconListView);
    return BiconListView;
});

在模块的views⽂件夹下创建⼀个assets.xml的⽂件编写代码导⼊上⼀步写的js⽂件(css⽂件也是这样导⼊

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <template id="assets_backend_bicon_wms_base_1" inherit_id="web.assets_backend" name="bicon_wms_base_assets_1">
        <xpath expr="link[last()]" position="after">
            <link rel="stylesheet" type="text/scss" href="/bicon_wms_base/static/src/scss/bicon_form_view.scss"/>
        </xpath>
        <xpath expr="script[last()]" position="after">
            <script type="text/javascript" src="/bicon_wms_base/static/src/js/bicon_relationnal_fields.js"/>
            <script type="text/javascript" src="/bicon_wms_base/static/src/js/bicon_form_view.js"/>
            <script type="text/javascript" src="/bicon_wms_base/static/src/js/bicon_list_view_button.js"/>
        </xpath>
    </template>
</odoo>

再将assets.xml⽂件路径添加到__manifest__.py⽂件中
在这里插入图片描述
调用自己的视图通过js-class值是注册的视图名:
在这里插入图片描述
被调用的model中的方法my_function:
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值