Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
@@ -209,6 +209,31 @@ class SoongWorkflowMixin(models.AbstractModel):
|
||||
soong_record_ids = fields.One2many(comodel_name="soong.workflow.line", inverse_name="res_id", string=" ",)
|
||||
project_ids = fields.One2many(comodel_name="project.project.line", inverse_name="res_id", string=" ",)
|
||||
|
||||
def get_logs_for_print(self, applicant_first=False):
|
||||
"""
|
||||
返回用于打印的审批日志列表:
|
||||
- 按与界面相同的顺序(sequence 升序)
|
||||
- 同名节点只保留最新一条
|
||||
- 可选:申请人置顶
|
||||
"""
|
||||
self.ensure_one()
|
||||
logs = self.log_ids.sorted('sequence')
|
||||
seen = set()
|
||||
ordered = []
|
||||
# 逆序去重,保留最新
|
||||
for log in reversed(logs):
|
||||
key = log.name or ''
|
||||
if key in seen:
|
||||
continue
|
||||
seen.add(key)
|
||||
ordered.append(log)
|
||||
ordered.reverse() # 恢复原有顺序(去重后)
|
||||
if applicant_first:
|
||||
applicants = [l for l in ordered if (l.name or '') == '申请人']
|
||||
others = [l for l in ordered if (l.name or '') != '申请人']
|
||||
ordered = applicants + others
|
||||
return ordered
|
||||
|
||||
# @api.model_create_multi
|
||||
# def create(self, vals_list):
|
||||
# res = super().create(vals_list)
|
||||
|
||||
@@ -695,7 +695,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
|
||||
recipients = [emp for emp in employees]
|
||||
for employee in recipients:
|
||||
target_url = f'https://oa.thtzjt.com/web#id={record_id.id}&cids=2&active_id={action_id.id}&model={record_id._name}&view_type=form'
|
||||
url = self.sudo().env["wecom.apps"].generate_oauth_login_url(target_url)
|
||||
url = self.sudo().env["wecom.apps"].generate_oauth_login_url(target_url, employee.user_id.id)
|
||||
if self.res_model == 'purchase.order':
|
||||
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa',
|
||||
user_id=employee.wecom_userid,
|
||||
@@ -716,7 +716,6 @@ class SoongWorkflowCommentWizard(models.TransientModel):
|
||||
workflow_record_id = self.env['soong.workflow.record'].search([('code', '=', record_id.code)])
|
||||
action_id = self.env['ir.actions.act_window'].search([('res_model', '=', self.res_model)])[0]
|
||||
target_url = f'https://oa.thtzjt.com/web#id={record_id.id}&cids=2&menu_id={menu_id.id}&active_id={action_id.id}&model={record_id._name}&view_type=form'
|
||||
url = self.sudo().env["wecom.apps"].generate_oauth_login_url(target_url)
|
||||
description = "标题: {}\n".format(record_id.name) + self.env.user.name + ' ' + str(fields.Datetime.now() + timedelta(hours=8))
|
||||
if self.employee_ids:
|
||||
workflow_record_id.users_ids = [(4, employee.user_id.id) for employee in self.employee_ids if employee.user_id]
|
||||
@@ -731,6 +730,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
|
||||
"done_by": self.employee_ids.user_id.id,
|
||||
"node_btn_name": "0",
|
||||
})
|
||||
url = self.sudo().env["wecom.apps"].generate_oauth_login_url(target_url, self.employee_ids.user_id.id)
|
||||
result_data = self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa', user_id=self.employee_ids.wecom_userid, title=record_id._description, description=description, url=url, btntxt="查看详情")
|
||||
if result_data and 'msgid' in result_data[-1]:
|
||||
msg_id = result_data[-1]['msgid']
|
||||
@@ -747,6 +747,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
|
||||
"done_by": emp.user_id.id,
|
||||
"node_btn_name": "4",
|
||||
})
|
||||
url = self.sudo().env["wecom.apps"].generate_oauth_login_url(target_url, emp.user_id.id)
|
||||
result_data = self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa', user_id=emp.wecom_userid, title=record_id._description + "承办", description=description, url=url, btntxt="查看详情")
|
||||
if result_data and 'msgid' in result_data[-1]:
|
||||
msg_id = result_data[-1]['msgid']
|
||||
@@ -781,6 +782,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
|
||||
"node_btn_id": self.node_btn_id.id,
|
||||
"approval_state": "0",
|
||||
})
|
||||
url = self.sudo().env["wecom.apps"].generate_oauth_login_url(target_url, employee.user_id.id)
|
||||
result_data = self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa', user_id=employee.wecom_userid, title=record_id._description + "传阅/抄送",description=description, url=url, btntxt="查看详情")
|
||||
if result_data and 'msgid' in result_data[-1]:
|
||||
msg_id = result_data[-1]['msgid']
|
||||
@@ -839,7 +841,6 @@ class SoongWorkflowCommentWizard(models.TransientModel):
|
||||
menu_id = self.env['ir.ui.menu'].search([('name', '=', '行政收文')])
|
||||
action_id = self.env['ir.actions.act_window'].search([('res_model', '=', self.res_model)])[0]
|
||||
target_url = f'https://oa.thtzjt.com/web#id={record_id.id}&cids=2&menu_id={menu_id.id}&active_id={action_id.id}&model={record_id._name}&view_type=form'
|
||||
url = self.sudo().env["wecom.apps"].generate_oauth_login_url(target_url)
|
||||
description = "标题: {}\n".format(record_id.name) + self.env.user.name + ' ' + str(fields.Datetime.now() + timedelta(hours=8))
|
||||
record = self.env[self.res_model].search([('id', '=', self.res_id)])
|
||||
record.log_ids[-1].write({'is_active_operate': True,
|
||||
@@ -875,6 +876,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
|
||||
"node_btn_id": self.node_btn_id.id,
|
||||
"approval_state": "0",
|
||||
})
|
||||
url = self.sudo().env["wecom.apps"].generate_oauth_login_url(target_url, employee.user_id.id)
|
||||
result_data = self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa',
|
||||
user_id=employee.wecom_userid,
|
||||
title=record_id._description + "传阅/抄送",
|
||||
|
||||
@@ -131,7 +131,8 @@
|
||||
<tr>
|
||||
<td class="section-cell" colspan="4">审批详情</td>
|
||||
</tr>
|
||||
<t t-foreach="doc.log_ids.sorted('sequence')" t-as="log">
|
||||
<t t-set="logs_ordered" t-value="doc.get_logs_for_print()"/>
|
||||
<t t-foreach="logs_ordered" t-as="log">
|
||||
<tr>
|
||||
<!-- 节点名称:保留center -->
|
||||
<!-- 若节点名称带“(物管)”等后缀,这里只取左侧文字 -->
|
||||
|
||||
@@ -67,7 +67,8 @@
|
||||
|
||||
<!-- 审批详情 -->
|
||||
<tr><td class="section" colspan="3">审批详情</td></tr>
|
||||
<t t-foreach="doc.log_ids.sorted('sequence')" t-as="log">
|
||||
<t t-set="logs_ordered" t-value="doc.get_logs_for_print()"/>
|
||||
<t t-foreach="logs_ordered" t-as="log">
|
||||
<tr>
|
||||
<td class="cell-content approval-name approval-col1" style="text-align:center;"><span t-esc="log.name"/></td>
|
||||
<td class="cell-content approval-col2 no-right-border approval-center"><span t-esc="log.comment"/></td>
|
||||
|
||||
@@ -92,7 +92,8 @@
|
||||
<tr>
|
||||
<td colspan="4" style="background-color: #d4e6f1; text-align: center;"><strong>审批详情</strong></td>
|
||||
</tr>
|
||||
<t t-foreach="doc.log_ids.sorted('sequence')" t-as="log">
|
||||
<t t-set="logs_ordered" t-value="doc.get_logs_for_print()"/>
|
||||
<t t-foreach="logs_ordered" t-as="log">
|
||||
<tr>
|
||||
<td colspan="1"><span t-esc="log.name"/></td>
|
||||
<!-- 核心修改:隐藏意见列右侧边框 -->
|
||||
|
||||
@@ -119,7 +119,8 @@
|
||||
<td class="header-cell" colspan="5" style="text-align:center;"><strong>审批详情</strong></td>
|
||||
</tr>
|
||||
<t t-if="doc.log_ids">
|
||||
<t t-foreach="doc.log_ids.sorted('sequence')" t-as="log">
|
||||
<t t-set="logs_ordered" t-value="doc.get_logs_for_print()"/>
|
||||
<t t-foreach="logs_ordered" t-as="log">
|
||||
<tr>
|
||||
<td class="approval-col1" style="text-align:center;"><span t-esc="log.name"/></td>
|
||||
<!-- 仅修改此处colspan为3,让approval-col2和approval-col3相邻 -->
|
||||
|
||||
@@ -116,7 +116,8 @@
|
||||
<div class="section">审批详情</div>
|
||||
<table class="po">
|
||||
<t t-if="doc.log_ids">
|
||||
<t t-foreach="doc.log_ids.sorted('sequence')" t-as="log">
|
||||
<t t-set="logs_ordered" t-value="doc.get_logs_for_print()"/>
|
||||
<t t-foreach="logs_ordered" t-as="log">
|
||||
<tr>
|
||||
<td class="text-center"><span t-esc="log.name or ''"/></td>
|
||||
<!-- 隐藏意见列右侧边框 + 内容居中 -->
|
||||
|
||||
@@ -42,29 +42,7 @@
|
||||
<tr t-if="doc.is_chapter == 'yes'"><td class="hdr"><strong>用章范围</strong></td><td colspan="2" class="cell-content"><t t-foreach="doc.scope_chapter_ids" t-as="scope"><span t-esc="scope.name"/><t t-if="not scope_last">、</t></t></td></tr>
|
||||
<tr><td class="hdr"><strong>附件清单</strong></td><td colspan="2" class="cell-content attachment-list"><t t-foreach="doc.document_ids" t-as="att"><div><t t-esc="att.name"/></div></t></td></tr>
|
||||
<tr><td class="section" colspan="3"><strong>审批详情</strong></td></tr>
|
||||
<!-- 按 sequence 逆序去重(同名节点保留最新) -->
|
||||
<t t-set="logs_sorted" t-value="doc.log_ids.sorted('sequence', reverse=True)"/>
|
||||
<t t-set="seen" t-value="set()"/>
|
||||
<t t-set="logs_dedup" t-value="[]"/>
|
||||
<t t-foreach="logs_sorted" t-as="log_tmp">
|
||||
<t t-if="(log_tmp.name or '') not in seen">
|
||||
<t t-set="seen" t-value="seen | {log_tmp.name or ''}"/>
|
||||
<t t-set="logs_dedup" t-value="logs_dedup + [log_tmp]"/>
|
||||
</t>
|
||||
</t>
|
||||
<t t-set="logs_final" t-value="logs_dedup"/>
|
||||
<!-- 申请人优先:拆分后重组,保证申请人行在最前 -->
|
||||
<t t-set="logs_applicant" t-value="[]"/>
|
||||
<t t-set="logs_rest" t-value="[]"/>
|
||||
<t t-foreach="logs_final" t-as="log_tmp2">
|
||||
<t t-if="(log_tmp2.name or '') == '申请人'">
|
||||
<t t-set="logs_applicant" t-value="logs_applicant + [log_tmp2]"/>
|
||||
</t>
|
||||
<t t-else="">
|
||||
<t t-set="logs_rest" t-value="logs_rest + [log_tmp2]"/>
|
||||
</t>
|
||||
</t>
|
||||
<t t-set="logs_ordered" t-value="logs_applicant + logs_rest"/>
|
||||
<t t-set="logs_ordered" t-value="doc.get_logs_for_print(True)"/>
|
||||
<t t-foreach="logs_ordered" t-as="log">
|
||||
<tr>
|
||||
<td class="cell-content approval-name approval-col1"><span t-esc="log.name"/></td>
|
||||
|
||||
@@ -104,7 +104,8 @@
|
||||
<td class="header-cell" colspan="7" style="text-align:center; background-color: #d4e6f1;"><strong>审批详情</strong></td>
|
||||
</tr>
|
||||
<t t-if="doc.log_ids">
|
||||
<t t-foreach="doc.log_ids.sorted('sequence')" t-as="log">
|
||||
<t t-set="logs_ordered" t-value="doc.get_logs_for_print()"/>
|
||||
<t t-foreach="logs_ordered" t-as="log">
|
||||
<tr>
|
||||
<td class="approval-col1 approval-center" colspan="1" style="width:6em;"><span t-esc="log.name"/></td>
|
||||
<td class="approval-col2 no-right-border approval-center" colspan="4"><span t-esc="log.comment"/></td>
|
||||
|
||||
Reference in New Issue
Block a user