添加功能

This commit is contained in:
李鹏宇
2026-01-10 17:21:19 +08:00
parent 0aaca7a4dd
commit f0cba55ac2
11 changed files with 133 additions and 9 deletions
+1
View File
@@ -35,6 +35,7 @@
"wizard/soong_workflow_apostille_wizard_view.xml",
"wizard/workflow_line_wizard_viwes.xml",
"wizard/role_group_wizard_views.xml",
"wizard/soong_workflow_log2_wizard_views.xml",
"wizard/soong_workflow_apostille_ok_wizard_view.xml",
"wizard/soong_workflow_record_revoke_wizard_view.xml",
"wizard/soong_workflow_record_delete_wizard_view.xml",
@@ -29,7 +29,6 @@ class SoongWorkflowLog(models.Model):
date_create = fields.Datetime(string="时间", default=lambda self: fields.Datetime.now())
document_ids = fields.Many2many('ir.attachment', string="附件")
active = fields.Boolean(string="归档", default=True)
msg_id = fields.Char()
display_field = fields.Char(string="显示字段", compute="_compute_display_field")
+39 -1
View File
@@ -23,6 +23,14 @@ class SoongWorkflowRecord(models.Model):
]
return self.search_count(domain)
def get_is_logs2_count(self):
domain = [
('is_log2', '=', True),
('users_ids', 'in', self.env.user.id),
('reclaim_state', '=', False)
]
return self.search_count(domain)
def read(self, fields=None, load='_classic_read'):
for re in self:
res_name = self.env[re.res_model].search([('id', '=', re.res_id)]).name
@@ -37,12 +45,20 @@ class SoongWorkflowRecord(models.Model):
res_model = fields.Char(string="Res Model", required=True)
res_id = fields.Integer(string="Res ID", required=True)
users_ids = fields.Many2many('res.users', string="用户")
employee_ids = fields.Many2many('hr.employee', string="当前经办人", default=lambda self: [(6, 0, [self.env.user.id])])
text = fields.Text(string="正文")
documents_ids = fields.Many2many('ir.attachment', string="附件")
workflow_id = fields.Many2one(comodel_name="soong.workflow", string="类型", ondelete="restrict")
node_id = fields.Many2one(comodel_name="soong.workflow.node", string="当前节点")
company_id = fields.Many2one(related="create_uid.company_id", string="公司")
is_log2 = fields.Boolean(string="是否是抄送流程")
employee_ids = fields.Many2many('hr.employee', string="当前经办人", default=lambda self: [(6, 0, [self.env.user.id])])
employee2_ids = fields.Many2many(
'hr.employee',
relation='soong_workflow_record_employee2_rel',
column1='record_id',
column2='employee2_id',
string='抄送/传阅人员'
)
approve_state = fields.Selection([("start", "草稿"), ("pending", "审批中"), ("end", "结束")], default="start", string="状态")
reclaim_state = fields.Boolean(string="回收")
meal = fields.Selection([('yes', '是'), ('no', '否')], string="误餐费", default=None)
@@ -86,6 +102,28 @@ class SoongWorkflowRecord(models.Model):
else:
record.is_unlink = False
def greater_record(self):
self.ensure_one()
target_record = self.env[self.res_model].browse(self.res_id)
log2_line_list = []
for log2 in target_record.log_ids2:
log2_line_list.append((0, 0, {
'employee_id': log2.done_by.employee_ids.id,
'log2_time': log2.lase_click_date,
'commit': log2.commit,
'approval_state': log2.approval_state,
}))
return {
"type": "ir.actions.act_window",
"name": "更多详情",
"res_model": "soong.workflow.log2.wizard",
"view_mode": "form",
"target": "new",
"context": {
"default_log2_line_ids": log2_line_list,
}
}
def _get_valid_employee_for_user(self):
user = self.env.user
employee = user.employee_ids
+3 -1
View File
@@ -52,4 +52,6 @@ access_project_project_line,project_project_line,model_project_project_line,soon
access_soong_bounced_wizard,soong_bounced_wizard,model_soong_bounced_wizard,base.group_user,1,1,1,1
access_workflow_line_wizard,workflow_line_wizard,model_workflow_line_wizard,soong_workflow.group_soong_workflow_user,1,1,1,1
access_change_opinions_wizard,change_opinions_wizard,model_change_opinions_wizard,soong_workflow.group_soong_workflow_user,1,1,1,1
access_change_opinions_wizard,change_opinions_wizard,model_change_opinions_wizard,soong_workflow.group_soong_workflow_user,1,1,1,1
access_soong_workflow_log2_wizard,soong_workflow_log2_wizard,model_soong_workflow_log2_wizard,soong_workflow.group_soong_workflow_user,1,1,1,1
access_soong_workflow_log2_line,soong_workflow_log2_line,model_soong_workflow_log2_line,soong_workflow.group_soong_workflow_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
52
53
54
55
56
57
@@ -184,6 +184,27 @@
</tree>
</field>
</record>
<!-- 抄送流程 -->
<record id="soong_workflow_record_log2_tree" model="ir.ui.view">
<field name="name">soong.workflow.log2.record.tree</field>
<field name="model">soong.workflow.record</field>
<field name="arch" type="xml">
<tree string="流程查询" action="open_record" type="object"
decoration-danger="approve_state == 'end'" delete="false"
create="false" default_order="write_date2 desc, id desc" expand="1" limit="15">
<field name="code"/>
<field name="workflow_id" string="审批类型"/>
<field name="name"/>
<field name="approve_state" string="审批状态" widget="badge" 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="is_manager" column_invisible="1"/>
<field name="is_log2" column_invisible="1"/>
<button name="greater_record" type="object" string="更多" class="btn-primary" invisible="not is_log2"/>
</tree>
</field>
</record>
<record id="soong_workflow_record_department_tree" model="ir.ui.view">
<field name="name">soong.workflow.department.tree</field>
<field name="model">soong.workflow.record</field>
@@ -280,6 +301,16 @@
<!-- <field name="search_view_id" ref="soong_workflow_record_search"/>-->
<!-- <field name="view_id" ref="soong_workflow_record_my_tree"/>-->
<!-- </record>-->
<record id="soong_workflow_record_is_logs_action" model="ir.actions.act_window">
<field name="name">抄送流程</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">soong.workflow.record</field>
<field name="view_mode">tree,kanban,search</field>
<field name="context">{'header_search_default_approve_state': 1, 'header_search_default_to_do':1, 'check_employee': 1}</field>
<field name="domain">[('users_ids', 'in', uid), ('reclaim_state', '=', False), ('is_log2', '=', True)]</field>
<field name="search_view_id" ref="soong_workflow_record_search1"/>
<field name="view_id" ref="soong_workflow_record_log2_tree"/>
</record>
<record id="soong_workflow_record_todo_action" model="ir.actions.act_window">
<field name="name">待办</field>
<field name="type">ir.actions.act_window</field>
+1 -1
View File
@@ -10,5 +10,5 @@ from . import role_group_wizard
from . import workflow_line_wizard
from . import soong_bounced_wizard
from . import change_opinions_wizard
from . import soong_workflow_log2_wizard
@@ -442,6 +442,9 @@ class SoongWorkflowCommentWizard(models.TransientModel):
user_ids = [employee.user_id.id for employee in self.employee_ids if employee.user_id]
related_record.self_users_ids = [(6, 0, user_ids)] if user_ids else [(5,)]
record_id.write({'state': self.trans_link_id.name})
if self.circulated_employee_ids:
workflow_record_id.is_log2 = True
workflow_record_id.employee2_ids = [(6, 0, self.circulated_employee_ids.ids)]
for employee in self.employee_ids:
action_id = self.env['ir.actions.act_window'].search([('res_model', '=', self.res_model)])[0]
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'
@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api, _
from odoo.exceptions import ValidationError, UserError
import logging
from datetime import datetime, date, time, timedelta
import re
_logger = logging.getLogger(__name__)
class SoongWorkflowLog2Wizard(models.Model):
_name = 'soong.workflow.log2.wizard'
_description = '抄送流程弹窗'
log2_line_ids = fields.One2many('soong.workflow.log2.line', 'log2_wizard_id', string='抄送流程')
class SoongWorkflowLog2Line(models.Model):
_name = 'soong.workflow.log2.line'
_description = '抄送流程弹窗行'
log2_wizard_id = fields.Many2one('soong.workflow.log2.wizard', string='抄送流程弹窗')
employee_id = fields.Many2one('hr.employee', string='人员')
log2_time = fields.Datetime(string='抄送时间')
commit = fields.Char(string='意见')
approval_state = fields.Selection([('0', '待办理'), ('1', '办理中'), ('2', '已办结')], string='状态', default='0')
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="view_soong_workflow_log2_wizard_form" model="ir.ui.view">
<field name="name">soong.workflow.log2.wizard.form</field>
<field name="model">soong.workflow.log2.wizard</field>
<field name="arch" type="xml">
<form string="抄送详情">
<sheet>
<field name="log2_line_ids">
<tree editable="bottom">
<field name="log2_wizard_id" column_invisible="1"/>
<field name="employee_id"/>
<field name="log2_time"/>
<field name="commit"/>
<field name="approval_state"/>
</tree>
</field>
</sheet>
</form>
</field>
</record>
</odoo>
+2
View File
@@ -178,6 +178,8 @@ class IrUiMenu(models.Model):
badge_count = self.env[res_model].read_coming_count()
elif hasattr(res_model, 'read_due_count'):
badge_count = self.env[res_model].read_due_count()
elif hasattr(res_model, 'get_is_logs2_count'):
badge_count = self.env[res_model].get_is_logs2_count()
web_menus[menu['id']] = {
"id": menu['id'],
+5 -5
View File
@@ -729,11 +729,11 @@
parent="holiday_manage_menu_root_board"
action="soong_workflow.soong_workflow_hr_employee_action"
sequence="5"/>
<!-- <menuitem id="menu_soong_workflow_department_record_copy"-->
<!-- name="抄送/传阅流程"-->
<!-- parent="holiday_manage_menu_root_board"-->
<!-- action="soong_workflow.soong_workflow_record_action_copy"-->
<!-- sequence="5"/>-->
<menuitem id="menu_soong_workflow_department_record_copy"
name="抄送流程"
parent="holiday_manage_menu_root_board"
action="soong_workflow.soong_workflow_record_is_logs_action"
sequence="6"/>
<!-- <menuitem id="menu_soong_workflow_department_record_add"-->
<!-- name="加签流程"-->
<!-- parent="holiday_manage_menu_root_board"-->