在Odoo8.0中,所有弹窗位置都是固定的,不可以移动,因实际业务需求,用户在操作弹窗时,需要看到底下的原来浏览出来的数据,如果弹窗不能移动,就会挡住这些数据。

经过分析odoo的弹窗处理代码,并参考bootstrap处理机制,我在弹窗的js处理中增加一个指令来实现可移动功能。

此功能主要是使用js来实现,主要代码如下:

instance.web.Dialog.include({
            open: function () {
                var self = this;
                this._super.apply(this, arguments);
                $(".modal.in").draggable({
                    handle: ".modal-header"
                });
                return this;
            }
        }
    );

 
实现原理就是重载instance.web.Dialog的open方法,在执行完原来的业务以后,新增加draggable方法处理可移动功能。