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