diff --git a/soong_workflow/models/soong_workflow_record.py b/soong_workflow/models/soong_workflow_record.py
index ca8239de7..3354c239f 100644
--- a/soong_workflow/models/soong_workflow_record.py
+++ b/soong_workflow/models/soong_workflow_record.py
@@ -101,6 +101,13 @@ class SoongWorkflowRecord(models.Model):
store=True # 存储到数据库,以便用于排序
)
+ # 流程待办人员:从关联记录的log_ids和log_ids2中取出待办/办理中的审批人,逗号拼接
+ pending_users = fields.Text(
+ string="流程待办人员",
+ compute='_compute_pending_users',
+ store=False,
+ )
+
@api.returns('self', lambda value: value.id)
def copy(self, default=None):
default = default or {}
@@ -116,6 +123,37 @@ class SoongWorkflowRecord(models.Model):
for record in self:
record.display_end_time = record.node_update_time or record.write_date2
+ @api.depends('res_model', 'res_id', 'approve_state')
+ def _compute_pending_users(self):
+ for record in self:
+ record.pending_users = ''
+ # 只有审批中状态才显示流程待办人员
+ if record.approve_state != 'pending':
+ continue
+ if not record.res_model or not record.res_id:
+ continue
+ try:
+ target = self.env[record.res_model].browse(record.res_id).exists()
+ if not target:
+ continue
+ names = []
+ # 从log_ids中获取待办/办理中的审批人
+ if hasattr(target, 'log_ids'):
+ for log in target.log_ids:
+ if log.approval_state in ('0', '1') and log.done_by and log.done_by.name:
+ if log.done_by.name not in names:
+ names.append(log.done_by.name)
+ # 从log_ids2中获取待办/办理中的审批人
+ if hasattr(target, 'log_ids2'):
+ for log2 in target.log_ids2:
+ if log2.approval_state in ('0', '1') and log2.done_by and log2.done_by.name:
+ if log2.done_by.name not in names:
+ names.append(log2.done_by.name)
+ record.pending_users = ','.join(names)
+ except Exception as e:
+ _logger.warning(f"Failed to compute pending_users for record {record.id}: {e}")
+ record.pending_users = ''
+
@api.depends('res_model', 'res_id')
def _compute_urgency_level(self):
"""从关联的业务模型中获取urgency_level值"""
diff --git a/soong_workflow/views/soong_workflow_record.xml b/soong_workflow/views/soong_workflow_record.xml
index bcc890629..f1687987c 100644
--- a/soong_workflow/views/soong_workflow_record.xml
+++ b/soong_workflow/views/soong_workflow_record.xml
@@ -103,8 +103,8 @@
-
-
+
+
@@ -119,6 +119,7 @@
+
-
-
+
+
@@ -170,6 +171,7 @@
+
-
-
+
+
@@ -254,7 +256,7 @@
decoration-danger="approve_state == 'end'" decoration-success="approve_state == 'pending'"/>
-
+
@@ -323,8 +325,8 @@
-
-
+
+
-
+