From 66de4ea5745bd7e5ee831d0432df910865e5ecca Mon Sep 17 00:00:00 2001 From: pengyuthon Date: Wed, 14 Jan 2026 10:03:43 +0800 Subject: [PATCH 1/2] 1 --- yuthon_base/__manifest__.py | 2 ++ yuthon_base/static/src/js/datetime_picker.js | 35 +++++++++++++++++++ .../status_bar_buttons/datetime_picker.xml | 8 +++++ 3 files changed, 45 insertions(+) create mode 100644 yuthon_base/static/src/js/datetime_picker.js create mode 100644 yuthon_base/static/src/views/form/status_bar_buttons/datetime_picker.xml diff --git a/yuthon_base/__manifest__.py b/yuthon_base/__manifest__.py index bc4e3f528..ff8205825 100644 --- a/yuthon_base/__manifest__.py +++ b/yuthon_base/__manifest__.py @@ -11,11 +11,13 @@ 'views/system_version_views.xml', 'views/ir_cron_act_views.xml', 'views/yuthon_timed_tasks_views.xml', + 'views/yuthon_timed_tasks_views.xml', 'views/menu.xml', ], 'assets': { 'web.assets_backend': [ 'yuthon_base/static/src/views/**/*', + 'yuthon_base/static/src/js/datetime_picker.js', # 'yuthon_base/static/src/scss/base.css', ] }, diff --git a/yuthon_base/static/src/js/datetime_picker.js b/yuthon_base/static/src/js/datetime_picker.js new file mode 100644 index 000000000..27dabe5b3 --- /dev/null +++ b/yuthon_base/static/src/js/datetime_picker.js @@ -0,0 +1,35 @@ +/** @odoo-module **/ + +import { patch } from "@web/core/utils/patch"; +import { DateTimePicker } from "@web/core/datetime/datetime_picker"; +import { isMobileOS } from "@web/core/browser/feature_detection"; +import { useEffect, useRef, reactive } from "@odoo/owl"; + +patch(DateTimePicker.prototype, { + setup() { + super.setup(); + this.forMoblieRef = useRef("for_mobile_ref"); + + if (isMobileOS()) { + const activeInputEl = document?.activeElement; + useEffect( + (el, value) => { + if (!el) { + return; + } + activeInputEl.blur(); + setTimeout(() => { + const popover = document.querySelector("div.o_popover"); + if (popover) { + const left = popover.style.left; + if (left.startsWith("-")) { + popover.style.left = "0px"; + } + } + }, 250); + }, + () => [this.forMoblieRef.el, activeInputEl.value] + ); + } + }, +}); diff --git a/yuthon_base/static/src/views/form/status_bar_buttons/datetime_picker.xml b/yuthon_base/static/src/views/form/status_bar_buttons/datetime_picker.xml new file mode 100644 index 000000000..317e6248c --- /dev/null +++ b/yuthon_base/static/src/views/form/status_bar_buttons/datetime_picker.xml @@ -0,0 +1,8 @@ + + + + + for_mobile_ref + + + From ead6516ece4b7f0680f0e172b92afdbd0faca869 Mon Sep 17 00:00:00 2001 From: pengyuthon Date: Wed, 14 Jan 2026 10:13:17 +0800 Subject: [PATCH 2/2] 1 --- soong_workflow/models/soong_workflow_mixin.py | 6 +++--- yuthon_purchase/models/inherit_purchase_order.py | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/soong_workflow/models/soong_workflow_mixin.py b/soong_workflow/models/soong_workflow_mixin.py index 88c4faa6f..585bfa577 100644 --- a/soong_workflow/models/soong_workflow_mixin.py +++ b/soong_workflow/models/soong_workflow_mixin.py @@ -805,10 +805,10 @@ class SoongWorkflowMixin(models.AbstractModel): if button.has_icon: btn_exec_action_el.set("icon", button.icon) invisible_condition = "state != '%s'" % node.node_name - if model == 'purchase.order': - invisible_condition = invisible_condition.replace("询价", "draft") + # if model == 'purchase.order': + # invisible_condition = invisible_condition.replace("询价", "draft") btn_exec_action_el.set("invisible", invisible_condition) - btn_exec_action_el.set("context","{'btn_key':'%s','active_model':'%s'}" % (button.btn_key, self._name), ) + btn_exec_action_el.set("context", "{'btn_key':'%s','active_model':'%s'}" % (button.btn_key, self._name), ) else: is_apostille = False if button.btn_hide: diff --git a/yuthon_purchase/models/inherit_purchase_order.py b/yuthon_purchase/models/inherit_purchase_order.py index 0f0be886a..9e97a0a2e 100644 --- a/yuthon_purchase/models/inherit_purchase_order.py +++ b/yuthon_purchase/models/inherit_purchase_order.py @@ -17,10 +17,10 @@ class InheritPurchaseOrder(models.Model): ) name_title = fields.Char(string="默认标题", default='采购申请单', readonly=True) code = fields.Char(string="流水号", default=lambda self: self.env['ir.sequence'].next_by_code('purchase_workflow_approval_code')) - state = fields.Selection(selection_add=[('部门经理', '部门经理'), ('工会主席', '工会主席'), + state = fields.Selection(selection_add=[('申请人', '申请人'), ('部门经理', '部门经理'), ('工会主席', '工会主席'), ('协办', '协办'), ('分管领导', '分管领导'), - ('总经理', '总经理'), ('归档', '归档')], default='draft') + ('总经理', '总经理'), ('归档', '归档')], default='申请人') work_end = fields.Boolean(string="结束") user_id = fields.Many2one('res.users', string="申请人", default=lambda self: self.env.user) company_id = fields.Many2one(related='user_id.employee_ids.company_id', string="公司")