From 93731a4777a2d608a08ec8b5cf30b81c7ddac666 Mon Sep 17 00:00:00 2001 From: mgw <1392924357@qq.com> Date: Fri, 10 Nov 2023 16:20:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=BE=E6=96=87=E9=A1=B9=E7=9B=AE=E5=8D=95?= =?UTF-8?q?=E9=80=89=E5=8A=9F=E8=83=BD=E6=9C=AC=E5=9C=B0=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=AE=8C=E6=88=90=EF=BC=8C=E6=8E=A8=E9=80=81?= =?UTF-8?q?=E7=BA=BF=E4=B8=8A=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 | 1 + .../many2one_radio_field.css | 3 + .../many2one_radio_field.js | 56 +++++++++++++++++++ .../many2one_radio_field.xml | 35 ++++++++++++ 4 files changed, 95 insertions(+) create mode 100644 jikimo_frontend/static/src/fields/Many2OneRadioField/many2one_radio_field.css create mode 100644 jikimo_frontend/static/src/fields/Many2OneRadioField/many2one_radio_field.js create mode 100644 jikimo_frontend/static/src/fields/Many2OneRadioField/many2one_radio_field.xml diff --git a/jikimo_frontend/__manifest__.py b/jikimo_frontend/__manifest__.py index a90a374e..d9885897 100644 --- a/jikimo_frontend/__manifest__.py +++ b/jikimo_frontend/__manifest__.py @@ -22,6 +22,7 @@ ], 'web.assets_backend': [ 'jikimo_frontend/static/src/fields/custom_many2many_checkboxes/*', + 'jikimo_frontend/static/src/fields/Many2OneRadioField/*', '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', diff --git a/jikimo_frontend/static/src/fields/Many2OneRadioField/many2one_radio_field.css b/jikimo_frontend/static/src/fields/Many2OneRadioField/many2one_radio_field.css new file mode 100644 index 00000000..72d877a0 --- /dev/null +++ b/jikimo_frontend/static/src/fields/Many2OneRadioField/many2one_radio_field.css @@ -0,0 +1,3 @@ +.many2one_radio_field { + display: inline-block; +} \ No newline at end of file diff --git a/jikimo_frontend/static/src/fields/Many2OneRadioField/many2one_radio_field.js b/jikimo_frontend/static/src/fields/Many2OneRadioField/many2one_radio_field.js new file mode 100644 index 00000000..836ee6d8 --- /dev/null +++ b/jikimo_frontend/static/src/fields/Many2OneRadioField/many2one_radio_field.js @@ -0,0 +1,56 @@ +/** @odoo-module **/ + +import { RadioField } from "@web/views/fields/radio/radio_field"; // 导入单选按钮组件 +import { registry } from "@web/core/registry"; + +export class Many2OneRadioField extends RadioField { + // 你可以重写或者添加一些方法和属性 + // 例如,你可以重写setup方法来添加一些事件监听器或者初始化一些变量 + setup() { + super.setup(); // 调用父类的setup方法 + // 你自己的代码 + } + + + onImageClick(event) { + // 放大图片逻辑 + // 获取图片元素 + const img = event.target; + const close = img.nextSibling + + // 实现放大图片逻辑 + // 比如使用 CSS 放大 + img.parentElement.classList.add('zoomed'); + close.classList.add('img_close') + } + + onCloseClick(event) { + const close = event.target; + const img = close.previousSibling + img.parentElement.classList.remove('zoomed') + close.classList.remove('img_close') + } + + get items() { + return Many2OneRadioField.getItems(this.props.name, this.props.record); + } + + static getItems(fieldName, record) { + switch (record.fields[fieldName].type) { + case "selection": + return record.fields[fieldName].selection; + case "many2one": { + const value = record.preloadedData[fieldName] || []; + return value.map((item) => [item.id, item.display_name, item.image]); + } + default: + return []; + } + } + +} + +Many2OneRadioField.template = "jikimo_frontend.Many2OneRadioField" +// MyCustomWidget.supportedTypes = ['many2many']; + +registry.category("fields").add("many2one_radio", Many2OneRadioField); diff --git a/jikimo_frontend/static/src/fields/Many2OneRadioField/many2one_radio_field.xml b/jikimo_frontend/static/src/fields/Many2OneRadioField/many2one_radio_field.xml new file mode 100644 index 00000000..3d797eb0 --- /dev/null +++ b/jikimo_frontend/static/src/fields/Many2OneRadioField/many2one_radio_field.xml @@ -0,0 +1,35 @@ + + + + +
+ +
+ +
+
+
+
+ +