在Odoo开发中,常常需要在用户完成某个操作(如审批)后,跳转到特定页面并显示操作成功的提示消息。
具体实现:
1. Python方法示例:
在你的审批方法中,返回一个包含以下信息的字典:
from odoo import api, models
class YourModel(models.Model):
_name = 'your.model'
@api.model
def approve_document(self):
# 审批逻辑...
return {
'type': 'ir.actions.client',
'tag': 'do_action',
'params': {
'action': {
'type': 'ir.actions.act_window',
'view_mode': 'form',
'res_model': 'your.model',
'res_id': record_id,
'target': 'current',
'context': {'show_approval_message': True}
}
}
}
2. 创建JavaScript文件:
创建一个JS文件,扩展FormController来检查上下文标志并显示消息。
// 在 your_module/static/src/js 目录下创建 approval_message.js 文件
odoo.define('your_module.approval_message', function (require) {
"use strict";
var FormController = require('web.FormController');
FormController.include({
init: function () {
this._super.apply(this, arguments);
this._checkApprovalMessage()
//this.on('view_loaded', this, this._checkApprovalMessage);
},
_checkApprovalMessage: function () {
if (this.initialState.context.show_approval_message) {
this.displayNotification({
type: 'success',
title: "审批完成",
message: "审批已成功完成。",
sticky: false,
});
}
}
});
});
3. 在manifest文件和assets.xml中添加JS文件:
在__manifest__.py
文件中添加:
{
# 其他配置...
'data': [
# 其他数据文件...
'views/assets.xml',
],
}
在assets.xml
文件中添加:
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="assets_backend" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript" src="/your_module/static/src/js/approval_message.js"/>
</xpath>
</template>
</odoo>
通过以上步骤,我们实现了审批后跳转并显示提示消息的功能。这种方法既保持了后端逻辑的清晰,又通过前端展示增强了用户体验。