From 869b389420b20b55f137a9a5d4c80f996ff3f816 Mon Sep 17 00:00:00 2001 From: mgw <1392924357@qq.com> Date: Wed, 1 Nov 2023 09:01:49 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E7=A0=94=E7=A9=B6=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E5=92=8C=E5=88=97=E5=AE=BD=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jikimo_frontend/__manifest__.py | 11 +- .../static/src/list/custom_width.js | 172 ++++++++++++++++++ .../static/src/list/list_up_down_button.xml | 20 ++ .../static/src/scss/rowno_in_tree.scss | 3 +- .../static/src/views/list_nums/list_nums.xml | 2 +- sf_plan/models/custom_plan.py | 8 + .../static/src/xlsx/sf_production_plan.xlsx | Bin 0 -> 10244 bytes 7 files changed, 210 insertions(+), 6 deletions(-) create mode 100644 jikimo_frontend/static/src/list/custom_width.js create mode 100644 jikimo_frontend/static/src/list/list_up_down_button.xml create mode 100644 sf_plan/static/src/xlsx/sf_production_plan.xlsx diff --git a/jikimo_frontend/__manifest__.py b/jikimo_frontend/__manifest__.py index ea28cb5f..81eb73e0 100644 --- a/jikimo_frontend/__manifest__.py +++ b/jikimo_frontend/__manifest__.py @@ -24,12 +24,15 @@ 'jikimo_frontend/static/src/fields/custom_many2many_checkboxes/*', 'jikimo_frontend/static/src/scss/custom_style.scss', # 'jikimo_frontend/static/src/views/list_nums/list_nbCols.js', - # 'jikimo_frontend/static/src/views/list_nums/list_nums.xml', - # 'jikimo_frontend/static/src/views/list_nums/list_nums2.xml', - # 'jikimo_frontend/static/src/views/list_nums/list_nums3.xml', + 'jikimo_frontend/static/src/views/list_nums/list_nums.xml', + 'jikimo_frontend/static/src/views/list_nums/list_nums2.xml', + 'jikimo_frontend/static/src/views/list_nums/list_nums3.xml', 'jikimo_frontend/static/src/js/custom_form_status_indicator.js', 'jikimo_frontend/static/src/scss/rowno_in_tree.scss', - 'jikimo_frontend/static/src/views/list_nums/list_render.xml', + # 'jikimo_frontend/static/src/views/list_nums/list_render.xml', + 'jikimo_frontend/static/src/list/list_up_down_button.xml', + 'jikimo_frontend/static/src/list/custom_import.js', + 'jikimo_frontend/static/src/list/custom_width.js', ], diff --git a/jikimo_frontend/static/src/list/custom_width.js b/jikimo_frontend/static/src/list/custom_width.js new file mode 100644 index 00000000..e7cc7b68 --- /dev/null +++ b/jikimo_frontend/static/src/list/custom_width.js @@ -0,0 +1,172 @@ +/** @odoo-module */ + +import {patch} from '@web/core/utils/patch'; +import {ListRenderer} from "@web/views/list/list_renderer" + +// var {patch} = require("web.utils") 这句话也行 + +patch(ListRenderer.prototype, 'jikimo_frontend.ListRenderer', { + // 你可以重写或者添加一些方法和属性 + // The following code manipulates the DOM directly to avoid having to wait for a + // render + patch which would occur on the next frame and cause flickering. + freezeColumnWidths() { + if (!this.keepColumnWidths) { + this.columnWidths = null; + } + + const table = this.tableRef.el; + const headers = [...table.querySelectorAll("thead th:not(.o_list_actions_header)")]; + // 列数+1 + const columnsLength = headers.length + 1; + + if (!this.columnWidths || !this.columnWidths.length) { + // no column widths to restore + // Set table layout auto and remove inline style to make sure that css + // rules apply (e.g. fixed width of record selector) + table.style.tableLayout = "auto"; + headers.forEach((th) => { + th.style.width = null; + th.style.maxWidth = null; + }); + + this.setDefaultColumnWidths(columnsLength); + + // Squeeze the table by applying a max-width on largest columns to + // ensure that it doesn't overflow + this.columnWidths = this.computeColumnWidthsFromContent(); + table.style.tableLayout = "fixed"; + } + headers.forEach((th, index) => { + if (!th.style.width) { + th.style.width = `${Math.floor(this.columnWidths[index])}px`; + } + }); + }, + + setDefaultColumnWidths(columnsLength) { + const widths = this.state.columns.map((col) => this.calculateColumnWidth(col)); + const sumOfRelativeWidths = widths + .filter(({ type }) => type === "relative") + .reduce((sum, { value }) => sum + value, 0); + + // // 计算新增列的权重 + // const newColumnWeight = 0.1; + // + // // 新增列后的总权重 + // const totalWeights = sumOfRelativeWidths + newColumnWeight; + + // 1 because nth-child selectors are 1-indexed, 2 when the first column contains + // the checkboxes to select records. + const columnOffset = this.hasSelectors ? 2 : 1; + // widths.forEach(({ type, value }, i) => { + // const headerEl = this.tableRef.el.querySelector(`th:nth-child(${i + columnOffset})`); + // if (type === "absolute") { + // if (this.isEmpty) { + // headerEl.style.width = value; + // } else { + // headerEl.style.minWidth = value; + // } + // } else if (type === "relative" && this.isEmpty) { + // // headerEl.style.width = `${((value / sumOfRelativeWidths) * 100).toFixed(2)}%`; + // headerEl.style.width = `${100 / columnsLength}%`; + // } + // }); + + // widths.forEach(({ type, value }, i) => { + // const headerEl = this.tableRef.el.querySelector(`th:nth-child(${i + columnOffset})`); + // if (type === "absolute") { + // if (this.isEmpty) { + // headerEl.style.width = value; + // } else { + // headerEl.style.minWidth = value; + // } + // } else if (type === "relative" && this.isEmpty) { + // + // if (i === 0) { + // // 第一列 + // headerEl.style.width = `3.2%`; + // + // } else { + // headerEl.style.width = `${100 / columnsLength}%`; + // } + // + // } + // + // }); + + widths.forEach(({ type, value }, i) => { + const headerEl = this.tableRef.el.querySelector(`th:nth-child(${i + columnOffset})`); + const column = this.state.columns[i]; // 获取当前列的对象 + if (type === "absolute") { + if (this.isEmpty) { + headerEl.style.width = value; + } else { + headerEl.style.minWidth = value; + } + } else if (type === "relative" && this.isEmpty) { + + if (i === 0) { + // 第一列 + headerEl.style.width = `${1}%`; + } else if (column.name === "sequence") { + // sequence列 + headerEl.style.width = `${1}%`; + } else if (column.name === "name") { + // name列 + headerEl.style.width = `${20}%`; + + } else { + headerEl.style.width = `${100 / columnsLength}%`; + } + + } else { + headerEl.style.width = `${100 / columnsLength}%`; + } + + }); + + + + + + + // widths.forEach(({type, value}, i) => { + // + // const headerEl = this.tableRef.el.querySelector(`th:nth-child(${i + columnOffset})`); + // + // if (type === 'absolute') { + // // 原有绝对宽度逻辑 + // } else if (type === 'relative' && this.isEmpty) { + // + // if (i === columnsLength - 1) { + // // 新增列按权重分配 + // headerEl.style.width = `${(newColumnWeight/totalWeights) * 100}%`; + // + // } else { + // // 原相对列按权重分配 + // headerEl.style.width = `${(value/totalWeights) * 100}%`; + // } + // + // } + // + // }); + }, + // calculateColumnWidth(column) { + // if (column.options && column.rawAttrs.width) { + // return { type: "absolute", value: column.rawAttrs.width }; + // } + // + // if (column.type !== "field") { + // return { type: "relative", value: 1 }; + // } + // + // const type = column.widget || this.props.list.fields[column.name].type; + // if (type in FIXED_FIELD_COLUMN_WIDTHS) { + // return { type: "absolute", value: FIXED_FIELD_COLUMN_WIDTHS[type] }; + // } + // + // return { type: "relative", value: 1 }; + // } + +} +); diff --git a/jikimo_frontend/static/src/list/list_up_down_button.xml b/jikimo_frontend/static/src/list/list_up_down_button.xml new file mode 100644 index 00000000..8bd28f5e --- /dev/null +++ b/jikimo_frontend/static/src/list/list_up_down_button.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jikimo_frontend/static/src/scss/rowno_in_tree.scss b/jikimo_frontend/static/src/scss/rowno_in_tree.scss index f5aa2914..c244ad7d 100644 --- a/jikimo_frontend/static/src/scss/rowno_in_tree.scss +++ b/jikimo_frontend/static/src/scss/rowno_in_tree.scss @@ -1,3 +1,4 @@ .row_no { - width:4% !important; + width: 3.2% !important; + vertical-align: middle; } diff --git a/jikimo_frontend/static/src/views/list_nums/list_nums.xml b/jikimo_frontend/static/src/views/list_nums/list_nums.xml index 6424887a..d2ad6824 100644 --- a/jikimo_frontend/static/src/views/list_nums/list_nums.xml +++ b/jikimo_frontend/static/src/views/list_nums/list_nums.xml @@ -5,7 +5,7 @@ - + diff --git a/sf_plan/models/custom_plan.py b/sf_plan/models/custom_plan.py index 064a1e20..e80a7783 100644 --- a/sf_plan/models/custom_plan.py +++ b/sf_plan/models/custom_plan.py @@ -63,6 +63,14 @@ class sf_production_plan(models.Model): # picking_type_id = fields.Many2one('stock.picking.type', 'Operation Type', compute='_compute_orderpoint_id') # move_dest_ids = fields.One2many('stock.move', 'created_production_id', compute='_compute_orderpoint_id') + @api.model + def get_import_templates(self): + """returns the xlsx import template file""" + return [{ + 'label': _('导入计划数据'), + 'template': '/sf_plan/static/src/xlsx/sf_production_plan.xlsx' + }] + @api.model def _compute_orderpoint_id(self): pass diff --git a/sf_plan/static/src/xlsx/sf_production_plan.xlsx b/sf_plan/static/src/xlsx/sf_production_plan.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..a82cab58a678156619c9d084e7dfeff554f08a9b GIT binary patch literal 10244 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 V&mQ9gU{%?35GbJB*2~9#{{tE27DfO7 literal 0 HcmV?d00001 From fc35ef687b7cad0e9a99094a438fad206eb46856 Mon Sep 17 00:00:00 2001 From: mgw <1392924357@qq.com> Date: Wed, 1 Nov 2023 12:15:26 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=BA=8F=E5=8F=B7?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E5=AD=97=E6=AE=B5label=E5=8F=98=E5=BD=A2?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../static/src/list/custom_width.js | 122 ++---------------- 1 file changed, 13 insertions(+), 109 deletions(-) diff --git a/jikimo_frontend/static/src/list/custom_width.js b/jikimo_frontend/static/src/list/custom_width.js index e7cc7b68..3a1443a4 100644 --- a/jikimo_frontend/static/src/list/custom_width.js +++ b/jikimo_frontend/static/src/list/custom_width.js @@ -10,14 +10,13 @@ patch(ListRenderer.prototype, 'jikimo_frontend.ListRenderer', { // The following code manipulates the DOM directly to avoid having to wait for a // render + patch which would occur on the next frame and cause flickering. freezeColumnWidths() { + console.log('ccccccccccccccccccccccccccc') if (!this.keepColumnWidths) { this.columnWidths = null; } const table = this.tableRef.el; const headers = [...table.querySelectorAll("thead th:not(.o_list_actions_header)")]; - // 列数+1 - const columnsLength = headers.length + 1; if (!this.columnWidths || !this.columnWidths.length) { // no column widths to restore @@ -29,7 +28,7 @@ patch(ListRenderer.prototype, 'jikimo_frontend.ListRenderer', { th.style.maxWidth = null; }); - this.setDefaultColumnWidths(columnsLength); + this.setDefaultColumnWidths(); // Squeeze the table by applying a max-width on largest columns to // ensure that it doesn't overflow @@ -43,60 +42,25 @@ patch(ListRenderer.prototype, 'jikimo_frontend.ListRenderer', { }); }, - setDefaultColumnWidths(columnsLength) { + setDefaultColumnWidths() { const widths = this.state.columns.map((col) => this.calculateColumnWidth(col)); - const sumOfRelativeWidths = widths + const sumOfRelativeWidths = (widths .filter(({ type }) => type === "relative") - .reduce((sum, { value }) => sum + value, 0); + .reduce((sum, { value }) => sum + value, 0)) + 1; - // // 计算新增列的权重 - // const newColumnWeight = 0.1; - // - // // 新增列后的总权重 - // const totalWeights = sumOfRelativeWidths + newColumnWeight; + // 获取数组的最后一项 + const lastItem = widths[widths.length - 1]; + // 复制最后一项 + const newItem = { ...lastItem }; + + // 将新的对象添加到数组的末尾 + widths.push(newItem); // 1 because nth-child selectors are 1-indexed, 2 when the first column contains // the checkboxes to select records. const columnOffset = this.hasSelectors ? 2 : 1; - // widths.forEach(({ type, value }, i) => { - // const headerEl = this.tableRef.el.querySelector(`th:nth-child(${i + columnOffset})`); - // if (type === "absolute") { - // if (this.isEmpty) { - // headerEl.style.width = value; - // } else { - // headerEl.style.minWidth = value; - // } - // } else if (type === "relative" && this.isEmpty) { - // // headerEl.style.width = `${((value / sumOfRelativeWidths) * 100).toFixed(2)}%`; - // headerEl.style.width = `${100 / columnsLength}%`; - // } - // }); - - // widths.forEach(({ type, value }, i) => { - // const headerEl = this.tableRef.el.querySelector(`th:nth-child(${i + columnOffset})`); - // if (type === "absolute") { - // if (this.isEmpty) { - // headerEl.style.width = value; - // } else { - // headerEl.style.minWidth = value; - // } - // } else if (type === "relative" && this.isEmpty) { - // - // if (i === 0) { - // // 第一列 - // headerEl.style.width = `3.2%`; - // - // } else { - // headerEl.style.width = `${100 / columnsLength}%`; - // } - // - // } - // - // }); - widths.forEach(({ type, value }, i) => { const headerEl = this.tableRef.el.querySelector(`th:nth-child(${i + columnOffset})`); - const column = this.state.columns[i]; // 获取当前列的对象 if (type === "absolute") { if (this.isEmpty) { headerEl.style.width = value; @@ -104,69 +68,9 @@ patch(ListRenderer.prototype, 'jikimo_frontend.ListRenderer', { headerEl.style.minWidth = value; } } else if (type === "relative" && this.isEmpty) { - - if (i === 0) { - // 第一列 - headerEl.style.width = `${1}%`; - } else if (column.name === "sequence") { - // sequence列 - headerEl.style.width = `${1}%`; - } else if (column.name === "name") { - // name列 - headerEl.style.width = `${20}%`; - - } else { - headerEl.style.width = `${100 / columnsLength}%`; - } - - } else { - headerEl.style.width = `${100 / columnsLength}%`; + headerEl.style.width = `${((value / sumOfRelativeWidths) * 100).toFixed(2)}%`; } - }); - - - - - - - // widths.forEach(({type, value}, i) => { - // - // const headerEl = this.tableRef.el.querySelector(`th:nth-child(${i + columnOffset})`); - // - // if (type === 'absolute') { - // // 原有绝对宽度逻辑 - // } else if (type === 'relative' && this.isEmpty) { - // - // if (i === columnsLength - 1) { - // // 新增列按权重分配 - // headerEl.style.width = `${(newColumnWeight/totalWeights) * 100}%`; - // - // } else { - // // 原相对列按权重分配 - // headerEl.style.width = `${(value/totalWeights) * 100}%`; - // } - // - // } - // - // }); }, - // calculateColumnWidth(column) { - // if (column.options && column.rawAttrs.width) { - // return { type: "absolute", value: column.rawAttrs.width }; - // } - // - // if (column.type !== "field") { - // return { type: "relative", value: 1 }; - // } - // - // const type = column.widget || this.props.list.fields[column.name].type; - // if (type in FIXED_FIELD_COLUMN_WIDTHS) { - // return { type: "absolute", value: FIXED_FIELD_COLUMN_WIDTHS[type] }; - // } - // - // return { type: "relative", value: 1 }; - // } - } ); From 74523c710f1428712a1f0091efbe89473ebff987 Mon Sep 17 00:00:00 2001 From: mgw <1392924357@qq.com> Date: Wed, 1 Nov 2023 16:52:26 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AE=8C=E5=BA=8F=E5=8F=B7=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=8C=E5=87=86=E5=A4=87=E7=BA=BF=E4=B8=8A?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jikimo_frontend/__manifest__.py | 3 ++- jikimo_frontend/static/src/list/custom_width.js | 16 ++++++++++++---- .../src/views/list_nums/extent_purchase.xml | 7 +++++++ 3 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 jikimo_frontend/static/src/views/list_nums/extent_purchase.xml diff --git a/jikimo_frontend/__manifest__.py b/jikimo_frontend/__manifest__.py index 81eb73e0..a90a374e 100644 --- a/jikimo_frontend/__manifest__.py +++ b/jikimo_frontend/__manifest__.py @@ -10,7 +10,7 @@ """, 'category': 'sf', 'website': 'https://www.sf.jikimo.com', - 'depends': ['web'], + 'depends': ['web', 'purchase'], 'data': [ ], @@ -33,6 +33,7 @@ 'jikimo_frontend/static/src/list/list_up_down_button.xml', 'jikimo_frontend/static/src/list/custom_import.js', 'jikimo_frontend/static/src/list/custom_width.js', + 'jikimo_frontend/static/src/views/list_nums/extent_purchase.xml', ], diff --git a/jikimo_frontend/static/src/list/custom_width.js b/jikimo_frontend/static/src/list/custom_width.js index 3a1443a4..512abc44 100644 --- a/jikimo_frontend/static/src/list/custom_width.js +++ b/jikimo_frontend/static/src/list/custom_width.js @@ -17,6 +17,7 @@ patch(ListRenderer.prototype, 'jikimo_frontend.ListRenderer', { const table = this.tableRef.el; const headers = [...table.querySelectorAll("thead th:not(.o_list_actions_header)")]; + const column_num = headers.length if (!this.columnWidths || !this.columnWidths.length) { // no column widths to restore @@ -28,7 +29,7 @@ patch(ListRenderer.prototype, 'jikimo_frontend.ListRenderer', { th.style.maxWidth = null; }); - this.setDefaultColumnWidths(); + this.setDefaultColumnWidths(column_num); // Squeeze the table by applying a max-width on largest columns to // ensure that it doesn't overflow @@ -42,11 +43,12 @@ patch(ListRenderer.prototype, 'jikimo_frontend.ListRenderer', { }); }, - setDefaultColumnWidths() { + setDefaultColumnWidths(column_num) { + const bbb = this.state.columns[0].name const widths = this.state.columns.map((col) => this.calculateColumnWidth(col)); const sumOfRelativeWidths = (widths .filter(({ type }) => type === "relative") - .reduce((sum, { value }) => sum + value, 0)) + 1; + .reduce((sum, { value }) => sum + value, 0)); // 获取数组的最后一项 const lastItem = widths[widths.length - 1]; @@ -56,6 +58,12 @@ patch(ListRenderer.prototype, 'jikimo_frontend.ListRenderer', { // 将新的对象添加到数组的末尾 widths.push(newItem); + + // 判断销售的sequence + if (this.state.columns[0].name === "sequence") { + widths[1] = { type: "relative", value: 0.1 }; + } + // 1 because nth-child selectors are 1-indexed, 2 when the first column contains // the checkboxes to select records. const columnOffset = this.hasSelectors ? 2 : 1; @@ -68,7 +76,7 @@ patch(ListRenderer.prototype, 'jikimo_frontend.ListRenderer', { headerEl.style.minWidth = value; } } else if (type === "relative" && this.isEmpty) { - headerEl.style.width = `${((value / sumOfRelativeWidths) * 100).toFixed(2)}%`; + headerEl.style.width = `${((value / column_num) * 100).toFixed(2)}%`; } }); }, diff --git a/jikimo_frontend/static/src/views/list_nums/extent_purchase.xml b/jikimo_frontend/static/src/views/list_nums/extent_purchase.xml new file mode 100644 index 00000000..f9c25a3d --- /dev/null +++ b/jikimo_frontend/static/src/views/list_nums/extent_purchase.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file