大概有如下三种情况:
第一个定义需求单里tree视图的按钮
第二获取勾选的数据
第三接收传递过来的参数,因为tree视图的按钮odoo12没有提供接口
那么我们开工吧:
1:在static\src\js文件夹里面创建tree_button.js文件(没有这些文件夹就自己创建,正常是没有)
如下图所示:
具体js文件如下:
odoo.define('dadian_u8.add_tree_view_button', function (require) {
"use strict";
var ListController = require('web.ListController'); // 这个是要用的插件默认写法
ListController.include({
renderButtons: function ($node){
var $buttons = this._super.apply(this, arguments);
// if 语句解释 this.modelName是当前模型 将 dc.transport.dzd 换成你想在哪个模型tree上加按钮
// 如你要在sale.order 上加按钮 代码如下
// if (this.modelName === "sale.order")
if (this.modelName === "dc.transport.dzd") {
// button_01 是你加上去的按钮 button 的属性是可以增加 .click(this.proxy("xxxx")) xxxx 是你绑定的js方法
var button_01 = $("<button id='btn' type='button' class='btn btn-secondary btn_margin'>确认</button>").click(this.proxy("deal_things"))
// 下一句 是将 button_01添加到tree按钮的最后面一个位置
this.$buttons.append(button_01);
}
return $buttons;
},
// 这是按钮绑定的方法
deal_things: function () {
var self = this;
var records = this.getSelectedIds();
// alert("records==",records)
// 使用odoo rpc调用模型的方法
// model:你要调用的模型
// method:对应模型的方法
self._rpc({
model: 'dc.transport.dzd',
method: 'fq_queren',
args: [records]
},
[]
);
},
});
// viewRegistry.add('custom_import_tree_dashboard_upload', ExpensesListViewDashboardUpload);
});
2:在views文件夹下创建add_button.xml文件引入上面所写的js文件(不要忘了在manifest文件里导入这个xml文件)
xml文件内容如下:
<odoo>
<template id="assets_backend_bicon_wms_base_2" inherit_id="web.assets_backend" name="bicon_wms_base_assets_1">
<xpath expr="script[last()]" position="after">
<!--src是你自己的路径 /当前项目/static....-->
<script type="text/javascript" src="/dc_transport/static/src/js/tree_button.js"/>
</xpath>
</template>
</odoo>
3:在__manifest__.py文件中引用template.xml文件
效果如下:
选择对账单然后点击自定义按钮在对账单后台就可获取你要点击的内容:
对账单py文件对应的方法如下
然后些你想要的逻辑。。。。。。