工作流节点更新时间,分发排版

This commit is contained in:
李鹏宇
2026-01-24 12:09:51 +08:00
parent 647deba68e
commit 3c5e12db26
4 changed files with 43 additions and 13 deletions
+22 -5
View File
@@ -659,11 +659,28 @@ class SoongWorkflowMixin(models.AbstractModel):
self.env["soong.workflow.record"].create(values)
if record_obj:
record_obj.update({"workflow_id": rec.workflow_id.id,
"node_id": rec.node_id.id,
"done_by": self.env.uid,
"write_date2": fields.Datetime.now(),
})
# 获取上一节点的结束时间(即log_ids最后一条记录的lase_click_date)
node_update_time = False
try:
if hasattr(rec, 'log_ids') and rec.log_ids:
# 按ID排序获取最后一条日志
sorted_logs = rec.log_ids.sorted(lambda log: log.id)
if sorted_logs and sorted_logs[-1].lase_click_date:
node_update_time = sorted_logs[-1].lase_click_date
except Exception as e:
_logger.debug(f"Failed to get node_update_time: {e}")
# 更新记录
update_vals = {
"workflow_id": rec.workflow_id.id,
"node_id": rec.node_id.id,
"done_by": self.env.uid,
"write_date2": fields.Datetime.now(),
}
if node_update_time:
update_vals["node_update_time"] = node_update_time
record_obj.update(update_vals)
def find_fields_by_string(self,record_id):
"""
@@ -82,6 +82,9 @@ class SoongWorkflowRecord(models.Model):
is_company = fields.Boolean(string="本公司", default=True, compute='_compute_is_company',search='_search_part_of_company')
# 节点更新时间(上一节点的结束时间)
node_update_time = fields.Datetime(string="节点更新时间")
@api.depends_context('uid', 'company')
@api.depends('company_id')
def _compute_is_company(self):
@@ -243,7 +243,7 @@
decoration-danger="approve_state == 'end'" decoration-success="approve_state == 'pending'"/>
<field name="create_uid"/>
<field name="employee_ids" widget="many2many_tags" string="当前经办人" class="list_ids_width"/>
<field name="soong_state"/>
<field name="soong_state"/><field name="node_update_time" string="节点更新时间" optional="show"/>
<field name="is_manager" column_invisible="1"/>
<field name="is_unlink" column_invisible="1"/>
<field name="is_log2" column_invisible="1"/>
@@ -105,13 +105,23 @@
<div invisible="node_btn_name != '收回'">
<h2>当前流程是否收回,请确认</h2>
</div>
<group invisible="node_btn_name != '分发'">
<field name="employee_ids" widget="many2many_tags" string="董事长" domain="[('user_role_id.name', '=', '董事长')]" options="{'no_create': True}" groups="yuthon_salary.group_jtbb_user"/>
<!-- 分发弹窗:本公司开关控制人员筛选范围 -->
<field name="is_this_company"/>
<field name="dep_manager_employee_ids" widget="many2many_tags" string="承办" options="{'no_create': True}" domain="[('company_id', '=', company_id)] if is_this_company else []"/>
<field name="circulated_employee_ids" widget="many2many_tags" options="{'no_create': True}" domain="[('company_id', '=', company_id), ('id', 'not in' , filter_personnel_ids)] if is_this_company else [('id', 'not in' , filter_personnel_ids)]"/>
<field name="supervising_employee_ids" widget="many2many_tags" invisible="not is_supervising" options="{'no_create': True}"/>
<group invisible="node_btn_name != '分发'" col="1">
<group>
<field name="employee_ids" widget="many2many_tags" string="董事长" domain="[('user_role_id.name', '=', '董事长')]" options="{'no_create': True}" groups="yuthon_salary.group_jtbb_user"/>
</group>
<group>
<!-- 分发弹窗:本公司开关控制人员筛选范围 -->
<field name="is_this_company"/>
</group>
<group>
<field name="dep_manager_employee_ids" widget="many2many_tags" string="承办" options="{'no_create': True}" domain="[('company_id', '=', company_id)] if is_this_company else []"/>
</group>
<group>
<field name="circulated_employee_ids" widget="many2many_tags" options="{'no_create': True}" domain="[('company_id', '=', company_id), ('id', 'not in' , filter_personnel_ids)] if is_this_company else [('id', 'not in' , filter_personnel_ids)]"/>
</group>
<group>
<field name="supervising_employee_ids" widget="many2many_tags" invisible="not is_supervising" options="{'no_create': True}"/>
</group>
</group>
<footer>
<button name="add_comment" string="确认" type="object" class="oe_highlight"/>