From 5c6bc63f7df0dffac236a7c166abd2570208bfc7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?=
Date: Sun, 1 Dec 2024 14:35:08 +0800
Subject: [PATCH] pengyuthon wechat
---
.../components/multi_tab/akl_multi_tab.scss | 2 +-
soong_workflow/__manifest__.py | 2 +-
soong_workflow/data/notice_template_data.xml | 18 +++++++
soong_workflow/models/soong_workflow_mixin.py | 7 ++-
.../models/soong_workflow_record.py | 11 +++-
soong_workflow/views/menuitem.xml | 26 ++++++----
.../views/soong_workflow_record.xml | 42 ++++++++++++---
.../wizard/soong_workflow_comment_wizard.py | 52 ++++++++++++-------
.../soong_workflow_comment_wizard_view.xml | 2 +-
.../models/yuthon_offficial_incoming_party.py | 2 +-
yuthon_official/models/yuthon_official.py | 2 +-
.../models/yuthon_official_incoming_labor.py | 2 +-
.../models/yuthon_official_incoming_normal.py | 4 +-
.../models/yuthon_official_labor.py | 9 +---
.../yuthon_official_incoming_labor_views.xml | 4 +-
.../yuthon_official_incoming_normal_views.xml | 4 +-
.../yuthon_official_incoming_party_views.xml | 4 +-
.../views/yuthon_official_labor_views.xml | 6 +--
.../views/yuthon_official_party_views.xml | 6 +--
yuthon_wechat/models/wecom_apps.py | 37 +++++++++----
20 files changed, 156 insertions(+), 86 deletions(-)
diff --git a/akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.scss b/akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.scss
index 88fa81136..e455e1206 100644
--- a/akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.scss
+++ b/akl_multi_tab_plugin/static/src/components/multi_tab/akl_multi_tab.scss
@@ -111,7 +111,7 @@
}
&.active {
- background-color: #f6f6f6;
+ background-color: #b8d7f3;
}
}
}
diff --git a/soong_workflow/__manifest__.py b/soong_workflow/__manifest__.py
index 8459d9f6c..5665153ac 100644
--- a/soong_workflow/__manifest__.py
+++ b/soong_workflow/__manifest__.py
@@ -5,7 +5,7 @@
"author": "soong bo",
"license": "AGPL-3",
"version": "17.0.0.1.0",
- "depends": ["base", "crnd_web_diagram_plus", "hr"],
+ "depends": ["base", "crnd_web_diagram_plus", "hr", 'mail'],
"data": [
"data/soong_workflow_note_data.xml",
"data/soong_workflow_inspector_code.xml",
diff --git a/soong_workflow/data/notice_template_data.xml b/soong_workflow/data/notice_template_data.xml
index 32b83688d..9d3da9201 100644
--- a/soong_workflow/data/notice_template_data.xml
+++ b/soong_workflow/data/notice_template_data.xml
@@ -17,4 +17,22 @@
+
+
+
+ 尊敬的用户,
+
+ 您有一条新的审批消息请及时查看
+
+ 请查看详情。
+
+
+
+
+ 查看
+
+
+
+
\ No newline at end of file
diff --git a/soong_workflow/models/soong_workflow_mixin.py b/soong_workflow/models/soong_workflow_mixin.py
index 09ddd0758..e1db1c84c 100644
--- a/soong_workflow/models/soong_workflow_mixin.py
+++ b/soong_workflow/models/soong_workflow_mixin.py
@@ -208,10 +208,9 @@ class SoongWorkflowMixin(models.AbstractModel):
for employee in employee_ids:
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa',
user_id=employee.wecom_userid,
- title=self.name,
- description="您有新的审批单{}请及时处理".format(
- self.name),
- url=url, btntxt="详情")
+ title=self._description,
+ description="您有新的审批单 {} 请及时处理\n".format(self.name) + self.env.user.name + ' ' + str(fields.Datetime.now() + timedelta(hours=8)),
+ url=url, btntxt="查看详情")
partner_ids = employee_ids.user_id.partner_id.ids
self.with_context(lang=self.env.lang)._message_auto_subscribe_notify(partner_ids, 'soong_workflow.message_soong_workflow_users_data')
return btn_rec.with_context(cx).run()
diff --git a/soong_workflow/models/soong_workflow_record.py b/soong_workflow/models/soong_workflow_record.py
index cf0d248a1..2f52fa101 100644
--- a/soong_workflow/models/soong_workflow_record.py
+++ b/soong_workflow/models/soong_workflow_record.py
@@ -25,7 +25,16 @@ class SoongWorkflowRecord(models.Model):
users_ids = fields.Many2many('res.users', string="用户")
workflow_id = fields.Many2one(comodel_name="soong.workflow", string="审批类型", ondelete="restrict")
node_id = fields.Many2one(comodel_name="soong.workflow.node", string="当前节点")
- approve_state = fields.Selection([("start", "开始"), ("pending", "审批中"), ("end", "结束")], default="start", string="审批状态", compute="_compute_node_id",)
+ approve_state = fields.Selection([("start", "开始"), ("pending", "审批中"), ("end", "结束")], default="start", string="审批状态", compute="_compute_node_id")
+ reclaim_state = fields.Boolean(string="回收")
+
+ def reclaim_record(self):
+ for rec in self:
+ rec.reclaim_state = True
+
+ def restore_record(self):
+ for rec in self:
+ rec.reclaim_state = False
@api.depends("node_id")
def _compute_node_id(self):
diff --git a/soong_workflow/views/menuitem.xml b/soong_workflow/views/menuitem.xml
index 799c91747..b8d408646 100644
--- a/soong_workflow/views/menuitem.xml
+++ b/soong_workflow/views/menuitem.xml
@@ -2,24 +2,32 @@
-
+
+
+
+
+
+
-
-
diff --git a/soong_workflow/wizard/soong_workflow_comment_wizard.py b/soong_workflow/wizard/soong_workflow_comment_wizard.py
index 6aab89d8b..889659936 100644
--- a/soong_workflow/wizard/soong_workflow_comment_wizard.py
+++ b/soong_workflow/wizard/soong_workflow_comment_wizard.py
@@ -3,6 +3,7 @@
from odoo import fields, models, api
from odoo.exceptions import UserError, ValidationError
+from datetime import datetime, date, time, timedelta
class SoongApprovalNoticeWizard(models.TransientModel):
@@ -13,7 +14,9 @@ class SoongApprovalNoticeWizard(models.TransientModel):
class SoongWorkflowCommentWizard(models.TransientModel):
_name = "soong.workflow.comment.wizard"
_description = "Soong Workflow Comment Wizard"
+ _inherit = ['mail.thread.main.attachment', 'mail.activity.mixin']
+ name = fields.Char(string="name")
res_model = fields.Char()
res_id = fields.Integer()
log_ids = fields.Many2many(comodel_name="soong.workflow.log")
@@ -112,11 +115,13 @@ class SoongWorkflowCommentWizard(models.TransientModel):
url = "https://oa.thtzjt.com/mail/view?model={}&res_id={}".format(self.res_model, record_id.id)
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa',
user_id=employee.wecom_userid,
- title=record_id.name + "审批抄送提醒",
- description="您有新的抄送提醒请及时查看",
- url=url, btntxt="详细信息")
+ title=record_id._description,
+ description="您有新的抄送审批单 {} 请及时查看\n".format(
+ record_id.name) + self.env.user.name + ' ' + str(
+ fields.Datetime.now() + timedelta(hours=8)),
+ url=url, btntxt="查看详情")
partner_ids = self_node_id.employee_ids.user_id.partner_id.ids
- self.with_context(lang=self.env.lang)._message_auto_subscribe_notify(partner_ids, 'soong_workflow.message_soong_workflow_users_data')
+ self.with_context(lang=self.env.lang)._message_auto_subscribe_notify(partner_ids, 'soong_workflow.message_soong_workflow_distribute')
# 转交逻辑--单线
if not self.node_link_len:
state = self.node_btn_id.node_id.out_link_ids.name.split('-> ')[-1]
@@ -126,23 +131,31 @@ class SoongWorkflowCommentWizard(models.TransientModel):
record_id.write({'state': 'end' if self.trans_link_id.name == '结束' else self.trans_link_id.name})
url = 'https://oa.thtzjt.com/mail/view?model={}&res_id={}'.format(self.res_model, self.res_id)
for employee in self.employee_ids:
- self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa', user_id=employee.wecom_userid,
- title=record_id.name,
- description="您有新的审批单请及时处理",
- url=url, btntxt="详情")
+ self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa',
+ user_id=employee.wecom_userid,
+ title=record_id._description,
+ description="您有新的审批单 {} 请及时查看\n".format(
+ record_id.name) + self.env.user.name + ' ' + str(
+ fields.Datetime.now() + timedelta(
+ hours=8)),
+ url=url, btntxt="查看详情")
partner_ids = self.employee_ids.user_id.partner_id.ids
- self.with_context(lang=self.env.lang)._message_auto_subscribe_notify(partner_ids, 'soong_workflow.message_soong_workflow_users_data')
+ self.with_context(lang=self.env.lang)._message_auto_subscribe_notify(partner_ids, 'soong_workflow.message_soong_workflow_distribute')
return self.node_btn_id.with_context(cx).run()
if self.node_btn_name == '退回':
record_id.write({'state': 'start' if self.return_link_id.name == '拟办' else self.return_link_id.name})
url = 'https://oa.thtzjt.com/mail/view?model={}&res_id={}'.format(self.res_model, self.res_id)
for employee in self.employee_ids:
- self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa', user_id=employee.wecom_userid,
- title=record_id.name,
- description="您的审批单已被退回,请查看详情",
- url=url, btntxt="详情")
+ self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa',
+ user_id=employee.wecom_userid,
+ title=record_id._description,
+ description="您有新的审批单 {} 被退回请及时查看\n".format(
+ record_id.name) + self.env.user.name + ' ' + str(
+ fields.Datetime.now() + timedelta(
+ hours=8)),
+ url=url, btntxt="查看详情")
partner_ids = self.employee_ids.user_id.partner_id.ids
- self.with_context(lang=self.env.lang)._message_auto_subscribe_notify(partner_ids, 'soong_workflow.message_soong_workflow_users_data')
+ self.with_context(lang=self.env.lang)._message_auto_subscribe_notify(partner_ids, 'soong_workflow.message_soong_workflow_distribute')
return self.node_btn_id.with_context(cx).run()
# 填写审批记录
if self.node_btn_name != '加签':
@@ -156,12 +169,13 @@ class SoongWorkflowCommentWizard(models.TransientModel):
for employee in self.circulated_employee_ids:
self.sudo().env["wecom.apps"].sync_send_message_textcard(category='oa',
user_id=employee.wecom_userid,
- title=record_id.name,
- description="传阅审批单,请知晓",
- url=url, btntxt="详情")
+ title=record_id._description,
+ description="您有新的传阅审批单 {} 请及时查看\n".format(
+ record_id.name) + self.env.user.name + ' ' + str(
+ fields.Datetime.now() + timedelta(hours=8)),
+ url=url, btntxt="查看详情")
partner_ids = self.circulated_employee_ids.user_id.partner_id.ids
- self.with_context(lang=self.env.lang)._message_auto_subscribe_notify(partner_ids,'soong_workflow.message_soong_workflow_users_data')
-
+ self.with_context(lang=self.env.lang)._message_auto_subscribe_notify(partner_ids,'soong_workflow.message_soong_workflow_distribute')
if self.employee_ids:
state = self.node_btn_id.node_id.out_link_ids.name.split('-> ')[-1]
record_id.write({'state': 'end' if state == '结束' else state})
diff --git a/soong_workflow/wizard/soong_workflow_comment_wizard_view.xml b/soong_workflow/wizard/soong_workflow_comment_wizard_view.xml
index 234ceaadc..410b78ddc 100644
--- a/soong_workflow/wizard/soong_workflow_comment_wizard_view.xml
+++ b/soong_workflow/wizard/soong_workflow_comment_wizard_view.xml
@@ -9,6 +9,7 @@
diff --git a/yuthon_official/views/yuthon_official_incoming_normal_views.xml b/yuthon_official/views/yuthon_official_incoming_normal_views.xml
index 56553958b..f1fa6937a 100644
--- a/yuthon_official/views/yuthon_official_incoming_normal_views.xml
+++ b/yuthon_official/views/yuthon_official_incoming_normal_views.xml
@@ -30,6 +30,7 @@
+
@@ -42,9 +43,6 @@
-
-
-
diff --git a/yuthon_official/views/yuthon_official_incoming_party_views.xml b/yuthon_official/views/yuthon_official_incoming_party_views.xml
index ca4e61080..485b5a3d3 100644
--- a/yuthon_official/views/yuthon_official_incoming_party_views.xml
+++ b/yuthon_official/views/yuthon_official_incoming_party_views.xml
@@ -35,6 +35,7 @@
+
@@ -45,9 +46,6 @@
-
-
-
diff --git a/yuthon_official/views/yuthon_official_labor_views.xml b/yuthon_official/views/yuthon_official_labor_views.xml
index 93996e72a..00eeff98c 100644
--- a/yuthon_official/views/yuthon_official_labor_views.xml
+++ b/yuthon_official/views/yuthon_official_labor_views.xml
@@ -35,11 +35,7 @@
-
-
-
-
-
+
diff --git a/yuthon_official/views/yuthon_official_party_views.xml b/yuthon_official/views/yuthon_official_party_views.xml
index d63b81ec6..2075eba37 100644
--- a/yuthon_official/views/yuthon_official_party_views.xml
+++ b/yuthon_official/views/yuthon_official_party_views.xml
@@ -43,11 +43,7 @@
-
-
-
-
-
+
diff --git a/yuthon_wechat/models/wecom_apps.py b/yuthon_wechat/models/wecom_apps.py
index 5d832a870..3a4d0de71 100644
--- a/yuthon_wechat/models/wecom_apps.py
+++ b/yuthon_wechat/models/wecom_apps.py
@@ -135,17 +135,32 @@ class WeComApps(models.Model):
:return:
"""
wecom_app = self.sudo().env["wecom.apps.config"].search([("wecom_apps_type", "=", "message_send"), ("wecom_apps_category", "=", category)], limit=1).wecom_apps_id
- data = {
- 'touser': user_id,
- 'msgtype': 'textcard',
- 'agentid': wecom_app.agent_id,
- "textcard": {
- "title": title,
- "description": description,
- "url": url,
- "btntxt": btntxt
- },
- }
+ # 类型,标题
+ # 人名:时间
+ if category == 'oa':
+ data = {
+ 'touser': user_id,
+ 'msgtype': 'textcard',
+ 'agentid': wecom_app.agent_id,
+ "textcard": {
+ "title": title,
+ "description": description,
+ "url": url,
+ "btntxt": btntxt
+ },
+ }
+ else:
+ data = {
+ 'touser': user_id,
+ 'msgtype': 'textcard',
+ 'agentid': wecom_app.agent_id,
+ "textcard": {
+ "title": title,
+ "description": description,
+ "url": url,
+ "btntxt": btntxt
+ },
+ }
result_data = self.sync_function_api("message_send", "MESSAGE_SEND", data, category)
if result_data.get("errcode", None) == 0:
return True, result_data