diff --git a/soong_workflow/models/soong_workflow.py b/soong_workflow/models/soong_workflow.py
index b5cf7f736..081f875a6 100644
--- a/soong_workflow/models/soong_workflow.py
+++ b/soong_workflow/models/soong_workflow.py
@@ -53,6 +53,21 @@ class SoongWorkflow(models.Model):
approvals_group_id = fields.Many2one('soong.approval.group', string="审批分组")
user_role_ids = fields.Many2many('soong.user.role', string="授权范围", store=True,
default=lambda self: [(6, 0, [self.env.ref('soong_workflow.soong_user_role_workflow_admin').id])], domain=[('user_type', '!=', 'lv_role')])
+ department_role_ids = fields.Many2many('hr.department', string="授权部门范围", store=True)
+ is_user_department_role = fields.Boolean(string="是否有权限查看", store=False, search="_search_is_user_department_role")
+
+ def _search_is_user_department_role(self, operator, value):
+ id_list = []
+ if self.env.user.has_group("soong_workflow.group_soong_workflow_user"):
+ for user_role_id in self.env.user.employee_id.user_role_ids.ids:
+ id_list += self.sudo().with_context(active_test=False).search([("user_role_ids", "in", [user_role_id])]).ids
+
+ for department_id in self.env.user.employee_id.department_id.ids:
+ id_list += self.sudo().with_context(active_test=False).search([("department_role_ids", "in", [department_id])]).ids
+
+ if self.env.user.has_group("soong_workflow.group_soong_workflow_manager"):
+ id_list += self.sudo().with_context(active_test=False).search([]).ids
+ return [('id', "in", id_list)]
def copy(self, default=None):
workflow_id = self.search([('model_id', '=', self.model_id.id)])
diff --git a/soong_workflow/models/soong_workflow_node.py b/soong_workflow/models/soong_workflow_node.py
index 376d3a115..cefa71191 100644
--- a/soong_workflow/models/soong_workflow_node.py
+++ b/soong_workflow/models/soong_workflow_node.py
@@ -122,6 +122,8 @@ class SoongWorkflowNode(models.Model):
def onchange_is_end(self):
for record in self:
if record.is_end:
+ record.use_custom_colors = True
+ record.bg_color = END_BG_COLOR_1
record.res_bg_color = END_BG_COLOR_1
sequence = max([r.sequence for r in record.button_ids] if record.button_ids else [1])
record.button_ids = [
@@ -136,6 +138,8 @@ class SoongWorkflowNode(models.Model):
})
]
else:
+ record.use_custom_colors = True
+ record.bg_color = DEFAULT_BG_COLOR
record.res_bg_color = DEFAULT_BG_COLOR
remove_ids = record.button_ids.filtered(lambda r: r.name in ["结束"])
record.button_ids = [(3, remove_id.id) for remove_id in remove_ids]
diff --git a/soong_workflow/views/kklw_workflow_approval_views.xml b/soong_workflow/views/kklw_workflow_approval_views.xml
index 52f5eed25..21f66eeae 100644
--- a/soong_workflow/views/kklw_workflow_approval_views.xml
+++ b/soong_workflow/views/kklw_workflow_approval_views.xml
@@ -33,5 +33,6 @@
审批
soong.workflow
kanban,tree
+ [('is_user_department_role','=',True)]
diff --git a/soong_workflow/views/soong_workflow_node_views.xml b/soong_workflow/views/soong_workflow_node_views.xml
index f94478a9d..79ae4e364 100644
--- a/soong_workflow/views/soong_workflow_node_views.xml
+++ b/soong_workflow/views/soong_workflow_node_views.xml
@@ -238,7 +238,8 @@
-
+
+
diff --git a/soong_workflow/views/soong_workflow_views.xml b/soong_workflow/views/soong_workflow_views.xml
index 56a1911f8..3442d008a 100644
--- a/soong_workflow/views/soong_workflow_views.xml
+++ b/soong_workflow/views/soong_workflow_views.xml
@@ -36,6 +36,7 @@
+