添加功能

This commit is contained in:
李鹏宇
2026-08-04 19:03:10 +08:00
parent 92b66e4cf2
commit 828e415271
2 changed files with 36 additions and 116 deletions
@@ -553,7 +553,7 @@ class SoongWorkflowMixin(models.AbstractModel):
'link_type': 'return',
'record_id': self.id,
})
if btn_rec.name == '转交':
if btn_rec.name in ['转交', '加签']:
required_fields = [
field.name for field in current_node.field_ids
if field.required and field.name
@@ -16,13 +16,10 @@
<field name="res_model" invisible="1"/>
<field name="comment"/>
</group>
<group invisible="node_btn_name in ['分发', '结束', '收回', '确认', '归档', '加签', '加签确认']">
<div class="oe_comment_block"
style=" width:1200%; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; margin-bottom: 16px;">
<label for="comment_note_id" string="常用意见"
style="font-weight: bold; margin-bottom: 8px; display: block;"/>
<field name="comment_note_id" class="mb-3" style="width: 100%;" options="{'no_create': True, 'no_open': True}"
domain="[('note_setting_id.users_role_ids', 'in', user_role_ids)]"/>
<group invisible="node_btn_name in ['分发', '结束', '收回', '确认', '归档', '加签确认']">
<div class="oe_comment_block" style=" width:1200%; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; margin-bottom: 16px;">
<label for="comment_note_id" string="常用意见" style="font-weight: bold; margin-bottom: 8px; display: block;"/>
<field name="comment_note_id" class="mb-3" style="width: 100%;" options="{'no_create': True, 'no_open': True}" domain="[('note_setting_id.users_role_ids', 'in', user_role_ids)]"/>
<field name="comment_note" placeholder="请输入意见内容..." style="width: 100%;"/>
</div>
<group>
@@ -33,121 +30,59 @@
<div>
<h2>当前流程是否归档,请确认</h2>
</div>
<div class="oe_comment_block"
style=" width:1200%; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; margin-bottom: 16px;">
<label for="comment_note_id" string="归档意见"
style="font-weight: bold; margin-bottom: 8px; display: block;"/>
<field name="comment_note_id" class="mb-3" style="width: 100%;" options="{'no_create': True}"
domain="[('note_setting_id.users_role_ids', 'in', user_role_ids)]"/>
<div class="oe_comment_block" style=" width:1200%; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; margin-bottom: 16px;">
<label for="comment_note_id" string="归档意见" style="font-weight: bold; margin-bottom: 8px; display: block;"/>
<field name="comment_note_id" class="mb-3" style="width: 100%;" options="{'no_create': True}" domain="[('note_setting_id.users_role_ids', 'in', user_role_ids)]"/>
<field name="comment_note" placeholder="请输入意见内容..." style="width: 100%;"/>
</div>
<group>
<field name="document_ids" widget="preview_many2many" force_save="1"/>
<field name="document_ids" widget="preview_many2many" force_save="1" invisible="is_return"/>
</group>
<group>
<field name="scope_type"/>
<field name="circulated_employee_ids" widget="many2many_tags" options="{'no_create': True}"
domain="[('id', 'in', employee_ids2)]"/>
<field name="circulated_employee_ids" widget="many2many_tags" options="{'no_create': True}" domain="[('id', 'in', employee_ids2)]"/>
</group>
</group>
<group invisible="node_btn_name != '加签确认'">
<div class="oe_comment_block"
style=" width:1200%; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; margin-bottom: 16px;">
<label for="comment_note_id" string="加签意见"
style="font-weight: bold; margin-bottom: 8px; display: block;"/>
<field name="comment_note_id" class="mb-3" style="width: 100%;" options="{'no_create': True}"
domain="[('note_setting_id.users_role_ids', 'in', user_role_ids)]"/>
<div class="oe_comment_block" style=" width:1200%; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; margin-bottom: 16px;">
<label for="comment_note_id" string="加签意见" style="font-weight: bold; margin-bottom: 8px; display: block;"/>
<field name="comment_note_id" class="mb-3" style="width: 100%;" options="{'no_create': True}" domain="[('note_setting_id.users_role_ids', 'in', user_role_ids)]"/>
<field name="comment_note" placeholder="请输入意见内容..." style="width: 100%;"/>
</div>
</group>
<group invisible="node_btn_name != '加签'">
<div class="oe_comment_block"
style=" width:1200%; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; margin-bottom: 16px;">
<label for="comment_note_id" string="意见"
style="font-weight: bold; margin-bottom: 8px; display: block;"/>
<field name="comment_note_id" class="mb-3" style="width: 100%;" options="{'no_create': True}"
domain="[('note_setting_id.users_role_ids', 'in', user_role_ids)]"/>
<field name="comment_note" placeholder="请输入意见内容..." style="width: 100%;"/>
</div>
<group>
<field name="is_return"/>
<field name="document_ids" widget="preview_many2many" force_save="1" invisible="is_return"/>
</group>
<group invisible="is_return">
<!-- 转交人员 -->
<field name="trans_link_id" string="转交节点" invisible="node_btn_name == '退回'"
domain="[('id', 'not in', invalid_link_ids), ('workflow_record_id', '=', workflow_record_id)]"
options="{'no_open': True}" widget="radio" force_save="1"/>
<field name="employee_trans_domain_ids" invisible="1"/>
<!-- 退回意见退回类型 -->
<div invisible="node_btn_name != '退回'" style="white-space: nowrap; color: #dc3545; font-weight: bold; font-size: 14px; padding: 2px 8px; border-left: 3px solid #dc3545; margin-bottom: 6px;">退回节点</div>
<field name="return_link_id" invisible="node_btn_name != '退回'" string="退回节点" nolabel="1"
domain="[('link_type', '=', 'return'), ('workflow_record_id', '=', workflow_record_id)]"
options="{'no_open': True, 'fg_color': 'red'}" widget="radio" force_save="1"/>
</group>
<group invisible="is_return">
<label for="scope_type" string="范围"/>
<field name="scope_type" nolabel="1"/>
<label for="is_selection" string="是否自动选择"/>
<field name="is_selection" nolabel="1"/>
<field name="company_id" invisible="1"/>
<field name="employee_ids1" widget="many2many_tags" string="人员" invisible="1"/>
<field name="employee_ids2" widget="many2many_tags" invisible="1"/>
<field name="add_employee_filter_ids" widget="many2many_tags" invisible="1"/>
<field name="employee_ids" widget="many2many_tags" string="人员"
domain="[('id', 'in', employee_ids1)]"
options="{'no_create': True}"
context="{'tree_view_ref':'yuthon_hr_employee.view_employee_phone_tree', 'kanban_view_ref':'yuthon_hr_employee.view_employee_phone_kanban_no_avatar'}"/>
<field name="circulated_employee_ids" invisible="node_btn_name == '退回'"
widget="many2many_tags" options="{'no_create': True}"
domain="[('id', 'in', employee_ids2)]"/>
</group>
<group invisible="not is_return">
<field name="add_employee_ids" invisible="node_btn_name == '退回'"
widget="many2many_tags" options="{'no_create': True}"
domain="[('id', 'in', add_employee_filter_ids)]"/>
</group>
<field name="is_return"/>
<field name="add_employee_ids" invisible="node_btn_name == '退回'" widget="many2many_tags" options="{'no_create': True}" domain="[('id', 'in', add_employee_filter_ids)]"/>
</group>
<group invisible="node_btn_name != '结束'">
<div>
<h2>当前流程是否结束,请确认</h2>
</div>
<div class="oe_comment_block"
style=" width:1200%; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; margin-bottom: 16px;">
<label for="comment_note_id" string="结束意见"
style="font-weight: bold; margin-bottom: 8px; display: block;"/>
<field name="comment_note_id" class="mb-3" style="width: 100%;" options="{'no_create': True}"
domain="[('note_setting_id.users_role_ids', 'in', user_role_ids)]"/>
<div class="oe_comment_block" style=" width:1200%; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; margin-bottom: 16px;">
<label for="comment_note_id" string="结束意见" style="font-weight: bold; margin-bottom: 8px; display: block;"/>
<field name="comment_note_id" class="mb-3" style="width: 100%;" options="{'no_create': True}" domain="[('note_setting_id.users_role_ids', 'in', user_role_ids)]"/>
<field name="comment_note" placeholder="请输入意见内容..." style="width: 100%;"/>
</div>
<group>
<field name="document_ids" widget="preview_many2many"/>
<field name="circulated_employee_ids" widget="many2many_tags" options="{'no_create': True}"
domain="[('id', 'in', employee_ids2)]"/>
<field name="circulated_employee_ids" widget="many2many_tags" options="{'no_create': True}" domain="[('id', 'in', employee_ids2)]"/>
</group>
</group>
<group invisible="node_btn_name != '确认'">
<div class="oe_comment_block"
style=" width:1200%; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; margin-bottom: 16px;">
<label for="comment_note_id" string="确认意见"
style="font-weight: bold; margin-bottom: 8px; display: block;"/>
<field name="comment_note_id" class="mb-3" style="width: 100%;" options="{'no_create': True}"
domain="[('note_setting_id.users_role_ids', 'in', user_role_ids)]"/>
<div class="oe_comment_block" style=" width:1200%; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; margin-bottom: 16px;">
<label for="comment_note_id" string="确认意见" style="font-weight: bold; margin-bottom: 8px; display: block;"/>
<field name="comment_note_id" class="mb-3" style="width: 100%;" options="{'no_create': True}" domain="[('note_setting_id.users_role_ids', 'in', user_role_ids)]"/>
<field name="comment_note" placeholder="请输入意见内容..." style="width: 100%;"/>
</div>
<group>
<field name="scope_type"/>
<field name="circulated_employee_ids" widget="many2many_tags" options="{'no_create': True}"
domain="[('id', 'in', employee_ids2)]"/>
<field name="circulated_employee_ids" widget="many2many_tags" options="{'no_create': True}" domain="[('id', 'in', employee_ids2)]"/>
</group>
</group>
<group invisible="node_btn_name != '分发'">
<div class="oe_comment_block"
style=" width:1200%; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; margin-bottom: 16px;">
<label for="comment_note_id" string="分发意见"
style="font-weight: bold; margin-bottom: 8px; display: block;"/>
<field name="comment_note_id" class="mb-3" style="width: 100%;" options="{'no_create': True}"
domain="[('note_setting_id.users_role_ids', 'in', user_role_ids)]"/>
<div class="oe_comment_block" style=" width:1200%; border: 1px solid #dee2e6; border-radius: 4px; padding: 12px; margin-bottom: 16px;">
<label for="comment_note_id" string="分发意见" style="font-weight: bold; margin-bottom: 8px; display: block;"/>
<field name="comment_note_id" class="mb-3" style="width: 100%;" options="{'no_create': True}" domain="[('note_setting_id.users_role_ids', 'in', user_role_ids)]"/>
<field name="comment_note" placeholder="请输入意见内容..." style="width: 100%;"/>
</div>
</group>
@@ -161,18 +96,14 @@
<field name="is_automatic" invisible="1"/>
<field name="is_supervising" invisible="1"/>
</group>
<group col="2" invisible="node_btn_name in ['分发', '结束', '收回', '确认', '归档', '加签', '加签确认']">
<group col="2" invisible="node_btn_name in ['分发', '结束', '收回', '确认', '归档', '加签确认'] or is_return == True">
<group>
<!-- 转交人员 -->
<field name="trans_link_id" string="转交节点" invisible="node_btn_name == '退回'"
domain="[('id', 'not in', invalid_link_ids), ('workflow_record_id', '=', workflow_record_id)]"
options="{'no_open': True}" widget="radio" force_save="1"/>
<field name="trans_link_id" string="转交节点" invisible="node_btn_name == '退回'" domain="[('id', 'not in', invalid_link_ids), ('workflow_record_id', '=', workflow_record_id)]" options="{'no_open': True}" widget="radio" force_save="1"/>
<field name="employee_trans_domain_ids" invisible="1"/>
<!-- 退回意见退回类型 -->
<div invisible="node_btn_name != '退回'" style="white-space: nowrap; color: #dc3545; font-weight: bold; font-size: 14px; padding: 2px 8px; border-left: 3px solid #dc3545; margin-bottom: 6px;">退回节点</div>
<field name="return_link_id" invisible="node_btn_name != '退回'" string="退回节点" nolabel="1"
domain="[('link_type', '=', 'return'), ('workflow_record_id', '=', workflow_record_id)]"
options="{'no_open': True, 'fg_color': 'red'}" widget="radio" force_save="1"/>
<field name="return_link_id" invisible="node_btn_name != '退回'" string="退回节点" nolabel="1" domain="[('link_type', '=', 'return'), ('workflow_record_id', '=', workflow_record_id)]" options="{'no_open': True, 'fg_color': 'red'}" widget="radio" force_save="1"/>
</group>
<group>
<label for="scope_type" string="范围"/>
@@ -181,15 +112,10 @@
<field name="is_selection" nolabel="1"/>
<field name="company_id" invisible="1"/>
<field name="employee_ids1" widget="many2many_tags" string="人员" invisible="1"/>
<field name="employee_ids2" widget="many2many_tags" invisible="1"/>
<field name="employee_ids2" widget="many2many_tags" invisible="1"/>
<field name="add_employee_filter_ids" widget="many2many_tags" invisible="1"/>
<field name="employee_ids" widget="many2many_tags" string="人员"
domain="[('id', 'in', employee_ids1)]"
options="{'no_create': True}"
context="{'tree_view_ref':'yuthon_hr_employee.view_employee_phone_tree', 'kanban_view_ref':'yuthon_hr_employee.view_employee_phone_kanban_no_avatar'}"/>
<field name="circulated_employee_ids" invisible="node_btn_name == '退回'"
widget="many2many_tags" options="{'no_create': True}"
domain="[('id', 'in', employee_ids2)]"/>
<field name="employee_ids" widget="many2many_tags" string="人员" domain="[('id', 'in', employee_ids1)]" options="{'no_create': True}" context="{'tree_view_ref':'yuthon_hr_employee.view_employee_phone_tree', 'kanban_view_ref':'yuthon_hr_employee.view_employee_phone_kanban_no_avatar'}"/>
<field name="circulated_employee_ids" invisible="node_btn_name == '退回'" widget="many2many_tags" options="{'no_create': True}" domain="[('id', 'in', employee_ids2)]"/>
</group>
</group>
<div invisible="node_btn_name != '收回'">
@@ -197,26 +123,20 @@
</div>
<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"/>
<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="scope_type"/>
</group>
<group>
<field name="dep_manager_employee_ids" widget="many2many_tags" string="承办"
options="{'no_create': True}"
domain="[('id', 'in', employee_ids2)]"/>
<field name="dep_manager_employee_ids" widget="many2many_tags" string="承办" options="{'no_create': True}" domain="[('id', 'in', employee_ids2)]"/>
</group>
<group>
<field name="circulated_employee_ids" widget="many2many_tags" options="{'no_create': True}"
domain="[('id', 'in', employee_ids2)]"/>
<field name="circulated_employee_ids" widget="many2many_tags" options="{'no_create': True}" domain="[('id', 'in', employee_ids2)]"/>
</group>
<group>
<field name="supervising_employee_ids" widget="many2many_tags" invisible="not is_supervising"
options="{'no_create': True}"/>
<field name="supervising_employee_ids" widget="many2many_tags" invisible="not is_supervising" options="{'no_create': True}"/>
</group>
</group>
<footer>