From 75de9bcec08eff4725d07fc4b472ce4b9a26514c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= <9664676+pengyuthon@user.noreply.gitee.com> Date: Tue, 4 Aug 2026 16:34:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../models/soong_workflow_record.py | 28 +++++++++++++++++++ .../views/soong_workflow_record.xml | 2 +- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/soong_workflow/models/soong_workflow_record.py b/soong_workflow/models/soong_workflow_record.py index 4014113e1..b9de1f3a9 100644 --- a/soong_workflow/models/soong_workflow_record.py +++ b/soong_workflow/models/soong_workflow_record.py @@ -75,6 +75,12 @@ class SoongWorkflowRecord(models.Model): search='_search_special_member_visible', help="当前用户属于『本部-角色-人事专员』或『考勤-用户』用户组时,可查看对应的(仅本公司的)人事/考勤流程", ) + dept_query_visible = fields.Boolean( + "部门查询可见(排除考勤/人事)", + compute='_compute_dept_query_visible', + search='_search_dept_query_visible', + help="本部门可见,但排除审批分组为考勤/人事的流程(二者仅对特殊权限组可见)", + ) # 人力资源流程的发生日期 workflow_happen_date = fields.Date(string="发生日期") @@ -666,6 +672,28 @@ class SoongWorkflowRecord(models.Model): domain = ['!'] + domain return domain + # ------------------------------------------------------------------ + # 部门查询可见(排除考勤/人事):本部门数据 且 审批分组不是考勤/人事 + # ------------------------------------------------------------------ + @api.depends_context('uid', 'company') + @api.depends('member_of_department', 'approvals_group_id') + def _compute_dept_query_visible(self): + for record in self: + record.dept_query_visible = bool( + record.member_of_department + and record.approvals_group_id + and record.approvals_group_id.name not in ('考勤', '人事') + ) + + def _search_dept_query_visible(self, operator, value): + # 本部门数据 且 审批分组不是考勤/人事(member_of_department 由 search 方法内联展开,无嵌套) + domain = ['&', + ('approvals_group_id.name', 'not in', ['考勤', '人事']), + ('member_of_department', '=', True)] + if (operator == '=' and not value) or (operator == '!=' and value): + domain = ['!'] + domain + return domain + @api.model def create(self, vals_list): res = super().create(vals_list) diff --git a/soong_workflow/views/soong_workflow_record.xml b/soong_workflow/views/soong_workflow_record.xml index c6c5cb3d3..63a885a48 100644 --- a/soong_workflow/views/soong_workflow_record.xml +++ b/soong_workflow/views/soong_workflow_record.xml @@ -465,7 +465,7 @@ '|', '|', ('users_ids', 'in', [uid]), - ['&', ('member_of_department', '=', True), ('approvals_group_id.name', 'not in', ['考勤', '人事'])], + ('dept_query_visible', '=', True), ('special_member_visible', '=', True) ] {'search_default_my_department_shifts': True, 'default_order': 'display_end_time desc'}