From cede31b97e7753de2b8f022ba94e2c4fe78a2fe2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Mon, 16 Mar 2026 18:11:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B8=B8=E7=94=A8=E6=84=8F=E8=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- soong_workflow/models/soong_note.py | 40 ++++++++++++++++++++--- soong_workflow/views/soong_note_views.xml | 36 ++++++++++++++++++-- 2 files changed, 69 insertions(+), 7 deletions(-) diff --git a/soong_workflow/models/soong_note.py b/soong_workflow/models/soong_note.py index 152819dbe..d48ed686a 100644 --- a/soong_workflow/models/soong_note.py +++ b/soong_workflow/models/soong_note.py @@ -13,6 +13,7 @@ class SoongNote(models.Model): create_note = fields.Text(string="创建信息", readonly=True) write_note = fields.Text(string="修改信息", readonly=True) use_info = fields.Text(string="使用信息", readonly=True) + use_count = fields.Integer(string="使用次数", default=0, readonly=True) def _get_tz_now(self): """返回东八区当前时间字符串""" @@ -28,20 +29,51 @@ class SoongNote(models.Model): line = f"{user_name} {now} {note_name}" vals['create_note'] = line vals['write_note'] = line + vals['use_count'] = 1 return super().create(vals_list) def write(self, vals): now = self._get_tz_now() user_name = self.env.user.name + _TRACK_FIELDS = {'create_note', 'write_note', 'use_info'} for rec in self: - note_name = vals.get('name', rec.name or '') - line = f"{user_name} {now} {note_name}" - old = rec.write_note or '' vals_copy = dict(vals) - vals_copy['write_note'] = (old + '\n' + line) if old else line + # 有信息字段变化时追加 write_note 并计数 + if 'name' in vals or not (_TRACK_FIELDS & set(vals)): + note_name = vals.get('name', rec.name or '') + line = f"{user_name} {now} {note_name}" + old = rec.write_note or '' + vals_copy['write_note'] = (old + '\n' + line) if old else line + # 统计本次写入中有多少跟踪字段发生变化 + changed = len(_TRACK_FIELDS & set(vals_copy)) + if changed > 0: + vals_copy['use_count'] = (rec.use_count or 0) + changed super(SoongNote, rec).write(vals_copy) return True + def action_open_form(self): + """详情按钮:以 target=new 方式打开 form""" + self.ensure_one() + return { + 'type': 'ir.actions.act_window', + 'name': '审批意见详情', + 'res_model': 'soong.note', + 'res_id': self.id, + 'view_mode': 'form', + 'target': 'new', + } + + def action_reset(self): + """重置按钮:清空使用次数、创建信息、修改信息、使用信息""" + for rec in self: + super(SoongNote, rec).write({ + 'use_count': 0, + 'create_note': False, + 'write_note': False, + 'use_info': False, + }) + return True + # type = fields.Selection([('agree', '同意'), ('return', '退回'), ('refuse', '拒绝'), ('super', '督办')], # string="意见类型") # return_type = fields.Char(string="退回类型") diff --git a/soong_workflow/views/soong_note_views.xml b/soong_workflow/views/soong_note_views.xml index 28971e1b9..28205f9ba 100644 --- a/soong_workflow/views/soong_note_views.xml +++ b/soong_workflow/views/soong_note_views.xml @@ -1,5 +1,27 @@ + + soong.note.form + soong.note + +
+ + + + + + + + + + + + + +
+
+
+ soong.note.tree soong.note @@ -8,9 +30,8 @@ - - - + +