From ede2fd01f13260e6668dd1628019e331890bf192 Mon Sep 17 00:00:00 2001 From: pengyuthon Date: Sun, 18 Jan 2026 12:49:07 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=89=8B=E6=9C=BA=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E7=BD=AE=E5=BA=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- soong_workflow/__manifest__.py | 1 + soong_workflow/models/soong_workflow_mixin.py | 10 ++++++ soong_workflow/static/src/css/button_css.scss | 31 +++++++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 soong_workflow/static/src/css/button_css.scss diff --git a/soong_workflow/__manifest__.py b/soong_workflow/__manifest__.py index 6da57042f..e41d722c7 100644 --- a/soong_workflow/__manifest__.py +++ b/soong_workflow/__manifest__.py @@ -46,6 +46,7 @@ 'assets': { 'web.assets_backend': [ 'soong_workflow/static/src/css/record_scss.scss', + 'soong_workflow/static/src/css/button_css.scss', ], }, "installable": True, diff --git a/soong_workflow/models/soong_workflow_mixin.py b/soong_workflow/models/soong_workflow_mixin.py index 4259bd5fd..74e9c88ef 100644 --- a/soong_workflow/models/soong_workflow_mixin.py +++ b/soong_workflow/models/soong_workflow_mixin.py @@ -896,32 +896,42 @@ class SoongWorkflowMixin(models.AbstractModel): btn_invisible = self.sudo().env[button.workflow_id.model_id.model].search(domain).ids invisible += " or id not in {0} ".format(str(btn_invisible)) if button.name == '确认': + btn_exec_action_el.set("class", "btn btn-confirm") id_el = etree.Element("field") id_el.set("name", "log_ids") id_el.set("invisible", "1") invisible += "or not is_confirm" if button.name == '结束': + btn_exec_action_el.set("class", "btn btn-finish") id_el = etree.Element("field") id_el.set("name", "log_ids") id_el.set("invisible", "1") invisible += "or not is_end" if button.name == "退回": + btn_exec_action_el.set("class", "btn btn-return") id_el = etree.Element("field") id_el.set("name", "log_ids") id_el.set("invisible", "1") invisible += " or not log_ids " if button.name == "分发": + btn_exec_action_el.set("class", "btn btn-distribute") invisible += " or is_send" + if button.name == "转交": + btn_exec_action_el.set("class", "btn btn-transfer") if button.name == "收回": + btn_exec_action_el.set("class", "btn btn-recall") id_el = etree.Element("field") id_el.set("name", "log_ids") id_el.set("invisible", "1") invisible += " or not log_ids or not is_back" if button.name == '归档': + btn_exec_action_el.set("class", "btn btn-archive") id_el = etree.Element("field") id_el.set("name", "log_ids") id_el.set("invisible", "1") invisible += "or not is_active" + custom_class = btn_exec_action_el.get("class", "") + btn_exec_action_el.set("class", custom_class) if model == 'purchase.order': invisible = invisible.replace("询价", "draft") btn_exec_action_el.set("invisible", invisible) diff --git a/soong_workflow/static/src/css/button_css.scss b/soong_workflow/static/src/css/button_css.scss new file mode 100644 index 000000000..b24e0fb6b --- /dev/null +++ b/soong_workflow/static/src/css/button_css.scss @@ -0,0 +1,31 @@ +/* Odoo 流程按钮 转交/收回/结束/确认/分发/退回 专用样式 - 完整最终版 */ +/* 公共基础样式:统一大小、间距、圆角、加粗,醒目+不拥挤,适配Odoo表单头部 */ +.o_form_button.btn-flow { + min-width: 96px !important; + height: 38px !important; + margin: 0 3px !important; + border-radius: 5px !important; + font-size: 13px !important; + font-weight: bold !important; + border: 0 !important; +} +/* 鼠标悬浮统一特效:放大+阴影+亮一点,层次感拉满,必加 */ +.o_form_button.btn-flow:hover { + transform: scale(1.02); + box-shadow: 0 2px 8px rgba(0,0,0,0.18); + filter: brightness(1.05); + transition: all 0.2s ease; +} + +/* 确认按钮 - 主色深蓝 最醒目【核心操作】 */ +.btn-confirm { background: #2563eb !important; color: #fff !important; } +/* 结束按钮 - 宝蓝色 权重高【完成操作】 */ +.btn-finish { background: #1d4ed8 !important; color: #fff !important; } +/* 转交按钮 - 深绿色 友好【流转操作】 */ +.btn-transfer { background: #166534 !important; color: #fff !important; } +/* 分发按钮 - 翠绿色 清爽【下发操作】 */ +.btn-distribute { background: #16a34a !important; color: #fff !important; } +/* 收回按钮 - 暖橙色 提醒【轻度逆向】 */ +.btn-recall { background: #f59e0b !important; color: #fff !important; } +/* 退回按钮 - 警示红 醒目【高危逆向】 */ +.btn-return { background: #ef4444 !important; color: #fff !important; } \ No newline at end of file From 2b97ed8511819c9e1f1876a018d717ca62fcc74c Mon Sep 17 00:00:00 2001 From: pengyuthon Date: Sun, 18 Jan 2026 16:03:06 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=8C=89=E9=92=AE=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- soong_workflow/__manifest__.py | 1 + soong_workflow/static/src/js/view_button.js | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) create mode 100644 soong_workflow/static/src/js/view_button.js diff --git a/soong_workflow/__manifest__.py b/soong_workflow/__manifest__.py index e41d722c7..18916e712 100644 --- a/soong_workflow/__manifest__.py +++ b/soong_workflow/__manifest__.py @@ -47,6 +47,7 @@ 'web.assets_backend': [ 'soong_workflow/static/src/css/record_scss.scss', 'soong_workflow/static/src/css/button_css.scss', + 'soong_workflow/static/src/js/view_button.js', ], }, "installable": True, diff --git a/soong_workflow/static/src/js/view_button.js b/soong_workflow/static/src/js/view_button.js new file mode 100644 index 000000000..408062d6a --- /dev/null +++ b/soong_workflow/static/src/js/view_button.js @@ -0,0 +1,16 @@ +/** @odoo-module **/ + +import { ViewButton } from "@web/views/view_button/view_button"; +import { patch } from "@web/core/utils/patch"; + +const WKF_BTN = "btn_exec_action"; + +patch(ViewButton.prototype, { + getClassName() { + const { className, clickParams } = this.props; + if (clickParams?.name !== WKF_BTN) { + return super.getClassName(); + } + return className; + } +}); \ No newline at end of file