From 1048d9e4dbd6b2ac4b9269c98ed2fb771dac91eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=9C=E6=9C=AA=E5=A4=AE?= <2996985766@qq.com> Date: Sun, 24 Aug 2025 22:17:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=88=86=E9=A1=B5=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../static/src/views/list/list_controller.js | 62 +++++++------------ 1 file changed, 22 insertions(+), 40 deletions(-) diff --git a/oo_list_manager/static/src/views/list/list_controller.js b/oo_list_manager/static/src/views/list/list_controller.js index de7fa59bf..da091208f 100644 --- a/oo_list_manager/static/src/views/list/list_controller.js +++ b/oo_list_manager/static/src/views/list/list_controller.js @@ -2,13 +2,12 @@ import { ListController } from "@web/views/list/list_controller"; import { patch } from "@web/core/utils/patch"; -import { onWillStart, useState, useRef, useExternalListener, onWillRender } from "@odoo/owl"; +import { onWillStart, useState, useRef, useExternalListener, onMounted } from "@odoo/owl"; import { Dropdown } from "@web/core/dropdown/dropdown"; import { CheckBox } from "@web/core/checkbox/checkbox"; import { useSortable } from "@web/core/utils/sortable_owl"; import { useService } from "@web/core/utils/hooks"; import { usePosition } from "@web/core/position_hook"; -import { usePager } from "@web/search/pager_hook"; patch(ListController.prototype, { setup() { @@ -36,6 +35,27 @@ patch(ListController.prototype, { return column.name }) }); + onMounted(async () => { + if (this.ooManager.default_page_size > 0) { + const limit = this.ooManager.default_page_size || 80; + if (this.ooManager.default_order_field && this.model.config.limit != this.ooManager.default_page_size) { + this.model.config.orderBy = [{ + name: this.ooManager.default_order_field, + [this.ooManager.default_order_type || 'asc']: true + }]; + this.model.config.limit = limit; + await this.model.root.load(); + } + } else { + if (this.ooManager.default_order_field) { + this.model.config.orderBy = [{ + name: this.ooManager.default_order_field, + [this.ooManager.default_order_type || 'asc']: true + }]; + await this.model.root.load(); + } + } + }); onWillStart(async () => { const manager_data = await this.orm.call('ir.ui.view', 'get_manager_data', [this.env.config.viewId]); if (!Object.keys(manager_data).length || !manager_data.columns) { @@ -63,14 +83,6 @@ patch(ListController.prototype, { } this.ooManager.show = manager_data.show; }) - onWillRender(async() => { - if (this.ooManager.default_order_field) { - this.model.config.orderBy = [{ - name: this.ooManager.default_order_field, - [this.ooManager.default_order_type || 'asc']: true - }] - } - }) usePosition('ooListRef', () => this.ooManagerRef.el, { position: "bottom-start", }) @@ -83,36 +95,6 @@ patch(ListController.prototype, { onDrop: (params) => this.sortColumnDrop(params) }) useExternalListener(window, "click", this.onGlobalClick.bind(this)); - usePager(() => { - if (this.model.useSampleModel) { - return; - } - const { count, hasLimitedCount, isGrouped, offset } = this.model.root; - let { limit } = this.model.root; - limit = this.ooManager.default_page_size > 0 - ? this.ooManager.default_page_size - : limit; - return { - offset, - limit, - total: count, - onUpdate: async ({ offset, limit }, hasNavigated) => { - if (this.editedRecord) { - if (!(await this.editedRecord.save())) { - return; - } - } - await this.model.root.load({ limit, offset }); - if (hasNavigated) { - this.onPageChangeScroll(); - } - }, - updateTotal: - !isGrouped && hasLimitedCount - ? () => this.model.root.fetchCount() - : undefined, - }; - }); }, onGlobalClick(ev) { if (this.ooListRef.el && !this.ooListRef.el.contains(ev.target)) {