odoo16修改js加载中的提示

 有的时候odoo在向导界面执行一些后端操作比如接口调用会比较慢,界面上会出现加载中转圈等字样,有可能会导致用户误以为界面卡顿坏了。

可以通过js修改处理下面的两个方法实现后端处理数据中前端显示的文案自定义,以及后端处理完毕后前端解除锁定时界面上弹出一条提示消息。

这样能给用户一个更好的交互体验

/** @odoo-module **/

import { browser } from "@web/core/browser/browser";
import { patch } from "@web/core/utils/patch";
import {BlockUI} from "@web/core/ui/block_ui"
import { useService } from "@web/core/utils/hooks";

patch(BlockUI.prototype, 'ocr_loading', {
    setup(){
        this._super(); // 调用原方法
        this.action = useService("action");
        this.notification = useService("notification");
    },
    replaceMessage(index) {
        let that = this;
        this.log();
        // that._super(index); // 调用父类此方法

        const message = this.messagesByDuration[index];
        this.state.line1 = message.l1;
        this.state.line2 = message.l2 || "";
        if(document.querySelector('button[name=action_confirm_ocr]')){
            this.state.line1 = '正在进行发票OCR识别';
            this.state.line2 = '请稍等...';
        }
        if (message.time !== null) {
            this.msgTimer = browser.setTimeout(() => {
                this.replaceMessage(index + 1);
            }, message.time * 1000);
        }
    },
    unblock() {
        this._super(); // 调用原方法
        if(document.querySelector('button[name=action_confirm_ocr]')){
            // let msg = {
            //     'type': 'ir.actions.client',
            //     'tag': 'display_notification',
            //     'params': {
            //         'type': 'success',
            //         'message': _("OCR识别完毕,可以进行保存操作了"),
            //         'next': {'type': 'ir.actions.act_window_close'},
            //     }
            // };
            //
            // this.action.doAction(msg);

            this.notification.add(this.env._t("OCR识别完毕!"), {
            type: "success",
            });
        }
    },

    log(){
        console.log('执行了修改后的loading...');
    }
});

你可能感兴趣的:(javascript,odoo,odoo16)