From 27e9904cb39cbce62faf73d43959f63199eec8e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=9C=E6=9C=AA=E5=A4=AE?= <2996985766@qq.com> Date: Mon, 11 Aug 2025 00:12:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=85=8D=E7=BD=AE=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E6=8E=92=E5=BA=8F=E5=8D=A1=E6=AD=BB=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复配置默认排序卡死问题以及注释Table_Layout代码 --- .../static/src/views/list/list_controller.js | 50 ++++++++++++++----- .../static/src/views/list/list_renderer.js | 6 +-- 2 files changed, 39 insertions(+), 17 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 7cead7e9c..de7fa59bf 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,13 @@ 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, onWillRender } 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() { @@ -63,19 +63,14 @@ patch(ListController.prototype, { } this.ooManager.show = manager_data.show; }) - onWillRender(() => { - if (this.ooManager.default_page_size>0) { - this.model.config.limit = this.ooManager.default_page_size; - // this.model.load(); - } + onWillRender(async() => { if (this.ooManager.default_order_field) { - this.model.config.orderBy = []; - this.model.config.orderBy.push({ + this.model.config.orderBy = [{ name: this.ooManager.default_order_field, - [this.ooManager.default_order_type]: true - }); + [this.ooManager.default_order_type || 'asc']: true + }] } - }); + }) usePosition('ooListRef', () => this.ooManagerRef.el, { position: "bottom-start", }) @@ -87,8 +82,37 @@ patch(ListController.prototype, { cursor: "move", 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)) { diff --git a/oo_list_manager/static/src/views/list/list_renderer.js b/oo_list_manager/static/src/views/list/list_renderer.js index 1785d77ff..6b1bd0662 100644 --- a/oo_list_manager/static/src/views/list/list_renderer.js +++ b/oo_list_manager/static/src/views/list/list_renderer.js @@ -14,13 +14,11 @@ patch(ListRenderer.prototype, { } const computeFunction = this.computeFreeze.bind(this); const resizeObserver = new ResizeObserver(computeFunction); - - useEffect( (tableEl) => { if (tableEl) { - // Lucky by 2025/08/08添加此行:设置 table-layout: fixed - tableEl.style.setProperty('table-layout', 'fixed', 'important'); + // Lucky by 2025/08/08添加此行:设置 table-layout: fixed,先注释反馈有Bug + // tableEl.style.setProperty('table-layout', 'fixed', 'important'); resizeObserver.observe(tableEl); return () => resizeObserver.unobserve(tableEl); }