diff --git a/soong_workflow/__manifest__.py b/soong_workflow/__manifest__.py index f87a30909..c38276846 100644 --- a/soong_workflow/__manifest__.py +++ b/soong_workflow/__manifest__.py @@ -47,8 +47,11 @@ 'web.assets_backend': [ 'soong_workflow/static/src/css/record_scss.scss', 'soong_workflow/static/src/css/button_css.scss', + 'soong_workflow/static/src/css/urgency_level.scss', 'soong_workflow/static/src/js/view_button.js', 'soong_workflow/static/src/js/select_create_dialog.js', + 'soong_workflow/static/src/js/urgency_level_widget.js', + 'soong_workflow/static/src/js/urgency_level_widget.xml', 'soong_workflow/static/src/diagram_plus_dialog/*', ], }, diff --git a/soong_workflow/models/soong_workflow_record.py b/soong_workflow/models/soong_workflow_record.py index f7680c16a..4df2a92d6 100644 --- a/soong_workflow/models/soong_workflow_record.py +++ b/soong_workflow/models/soong_workflow_record.py @@ -79,12 +79,33 @@ class SoongWorkflowRecord(models.Model): ) priority = fields.Selection([('0', 'Normal'), ('1', 'Urgent')], 'Priority', default='0', index=True) + + urgency_level = fields.Selection( + [('normal', '普件'), ('urgent', '急件'), ('emergency', '特急件')], + string='紧急度', + compute='_compute_urgency_level', + store=False + ) is_company = fields.Boolean(string="本公司", default=True, compute='_compute_is_company',search='_search_part_of_company') # 办结时间(上一节点的结束时间) node_update_time = fields.Datetime(string="办结时间") + @api.depends('res_model', 'res_id') + def _compute_urgency_level(self): + """从关联的业务模型中获取urgency_level值""" + for record in self: + record.urgency_level = 'normal' # 默认值 + if record.res_model and record.res_id: + try: + target_record = self.env[record.res_model].browse(record.res_id) + if target_record.exists() and hasattr(target_record, 'urgency_level'): + record.urgency_level = target_record.urgency_level or 'normal' + except Exception as e: + _logger.warning(f"Failed to get urgency_level from {record.res_model}: {e}") + record.urgency_level = 'normal' + @api.depends_context('uid', 'company') @api.depends('company_id') def _compute_is_company(self): diff --git a/soong_workflow/views/soong_workflow_record.xml b/soong_workflow/views/soong_workflow_record.xml index c4178c9af..3da7be2c6 100644 --- a/soong_workflow/views/soong_workflow_record.xml +++ b/soong_workflow/views/soong_workflow_record.xml @@ -241,7 +241,8 @@