添加功能

This commit is contained in:
李鹏宇
2026-02-03 22:38:34 +08:00
parent c8812bf192
commit 25cf43f388
6 changed files with 32 additions and 72 deletions
+20 -3
View File
@@ -155,16 +155,22 @@ class IssueMeetingLine(models.Model):
if self.decision_results == 'agree':
is_agree = 'pass'
agree_name = '(通过)'
issue_state = 'on_meet'
is_push = True
else:
is_agree = 'reject'
agree_name = '(未通过)'
issue_state = 'will'
is_push = False
self.issue_library_id.issue_state = issue_state
self.issue_library_id.issue_state = 'will'
# 2. 党委会相关:先清理旧后缀,再拼接新后缀
if '党' in meeting_type_name:
if self.issue_library_id.is_class:
self.issue_library_id.is_push_class = is_push
elif self.issue_library_id.is_boss:
self.issue_library_id.is_push_boss = is_push
self.issue_library_id.is_party_passed = is_agree
original_party_char = self.issue_library_id.party_char or ""
# 清理原有后缀(避免重复拼接)
@@ -173,8 +179,14 @@ class IssueMeetingLine(models.Model):
clean_party_char = clean_party_char.removesuffix(suffix)
self.issue_library_id.party_char = clean_party_char + agree_name
if self.issue_library_id.is_boss == False and self.issue_library_id.is_class == False:
self.issue_library_id.issue_state = 'on_meet'
# 3. 班子会相关:先清理旧后缀,再拼接新后缀
if '班子' in meeting_type_name:
if self.issue_library_id.is_boss:
self.issue_library_id.is_push_boss = is_push
self.issue_library_id.is_class_passed = is_agree
original_class_char = self.issue_library_id.class_char or ""
# 清理原有后缀
@@ -184,8 +196,13 @@ class IssueMeetingLine(models.Model):
# 拼接新后缀
self.issue_library_id.class_char = clean_class_char + agree_name
if self.issue_library_id.is_boss:
self.issue_library_id.issue_state = 'on_meet'
# 4. 董事会相关:先清理旧后缀,再拼接新后缀
if '董事' in meeting_type_name:
self.issue_library_id.issue_state = 'on_meet'
self.issue_library_id.is_push_boss = is_push
self.issue_library_id.is_boss_passed = is_agree
original_boss_char = self.issue_library_id.boss_char or ""
# 清理原有后缀
@@ -29,8 +29,6 @@ class IssueBossApproval(models.Model):
for record in self:
if record.line_ids:
for line in record.line_ids:
if line.issue_id.is_state_updated == False:
line.issue_id.is_state_updated = True
line.issue_id.issue_state = 'will'
class IssueBossApprovalLine(models.Model):
@@ -29,8 +29,6 @@ class IssueClassApproval(models.Model):
for record in self:
if record.line_ids:
for line in record.line_ids:
if line.issue_id.is_state_updated == False:
line.issue_id.is_state_updated = True
line.issue_id.issue_state = 'will'
class IssueClassApprovalLine(models.Model):
+3 -58
View File
@@ -68,15 +68,13 @@ class IssueLibrary(models.Model):
is_party_passed = fields.Selection([('',''), ('pass', '通过'), ('reject', '未通过')])
is_class_passed = fields.Selection([('',''), ('pass', '通过'), ('reject', '未通过')])
is_boss_passed = fields.Selection([('',''), ('pass', '通过'), ('reject', '未通过')])
push_invisible = fields.Boolean(string="推送隐藏", compute='_compute_push_invisible')
push_invisible = fields.Boolean(string="推送隐藏")
is_push_party = fields.Boolean(string="党推送")
is_push_class = fields.Boolean(string="班子推送")
is_push_boss = fields.Boolean(string="董事推送")
is_push_depart = fields.Boolean(string="部门推送")
is_state_updated = fields.Boolean(string='状态是否已更新', default=False)
def meeting_record(self):
self.ensure_one()
domain = [
@@ -203,51 +201,6 @@ class IssueLibrary(models.Model):
}
}
@api.depends(
'is_party', 'is_class', 'is_boss',
'is_push_party', 'is_party_passed',
'is_push_class', 'is_class_passed',
'is_push_boss', 'is_boss_passed',
'is_push_depart'
)
def _compute_push_invisible(self):
for record in self:
record.push_invisible = False
type_mapping = {
'party': (record.is_party, record.is_party_passed),
'class': (record.is_class, record.is_class_passed),
'boss': (record.is_boss, record.is_boss_passed),
}
# 筛选开关为True的类型,收集其passed值
active_passed_values = []
for type_key, (type_switch, type_passed) in type_mapping.items():
if type_switch:
active_passed_values.append(type_passed)
# 所有激活类型的passed都为pass → 设为True
if active_passed_values and all(passed == 'pass' for passed in active_passed_values):
record.push_invisible = True
continue
if record.is_party:
if not record.is_push_party and (record.is_party_passed == 'reject' or not record.is_party_passed):
record.push_invisible = True
continue
if record.is_class:
if not record.is_push_class and (record.is_class_passed == 'reject' or not record.is_class_passed):
record.push_invisible = True
continue
if record.is_boss:
if not record.is_push_boss and (record.is_boss_passed == 'reject' or not record.is_boss_passed):
record.push_invisible = True
continue
if record.issue_state in ['will', 'on_meet']:
if record.push_invisible :
record.issue_state = 'on_meet'
else:
record.issue_state = 'will'
@api.depends('issue_library_line_ids',
'issue_library_line_ids.issue_approval_decision_id',
'issue_library_line_ids.district_state_id',
@@ -297,7 +250,7 @@ class IssueLibrary(models.Model):
def depart_push(self):
for rec in self:
rec.is_push_depart = True
rec.is_push_depart = True
def library_push(self):
for rec in self:
@@ -312,16 +265,8 @@ class IssueLibrary(models.Model):
push_update_vals['is_push_boss'] = True
if push_update_vals:
rec.push_invisible = True
rec.write(push_update_vals)
if not rec.is_state_updated:
rec.write({
'issue_state': 'to_approval',
})
else:
rec.write({
'issue_state': 'will'}
)
@api.onchange('is_legal_trial')
def _onchange_is_legal_trial(self):
@@ -35,8 +35,6 @@ class IssuePartyApproval(models.Model):
for record in self:
if record.line_ids:
for line in record.line_ids:
if line.issue_id.is_state_updated == False:
line.issue_id.is_state_updated = True
line.issue_id.issue_state = 'will'
class IssuePartyApprovalLine(models.Model):
+9 -5
View File
@@ -69,7 +69,7 @@
<field name="is_push_depart" column_invisible="1"/>
<field name="push_invisible" column_invisible="1"/>
<!-- <button name="single_issue_pull" string="提交" type="object" class="oe_highlight"/>-->
<button name="library_push" string="推送" type="object" class="oe_highlight" invisible="not push_invisible"/>
<button name="library_push" string="推送" type="object" class="oe_highlight" invisible="push_invisible"/>
<button name="revoke" string="撤销" type="object" class="oe_highlight" invisible="issue_state == 'draft'"/>
<button name="issue_cancel" string="取消" type="object" class="oe_highlight"/>
<button name="unlink" string="删除" type="object" class="oe_highlight"/>
@@ -308,8 +308,9 @@
<field name="is_district_government"/>
<field name="is_district_party"/>
<field name="issue_state"/>
<field name="is_party_passed" column_invisible="1"/>
<field name="company_id" optional="hide"/>
<button name="single_meeting_issue" string="上会" type="object" class="oe_highlight" invisible="issue_state != 'will'"/>
<button name="single_meeting_issue" string="上会" type="object" class="oe_highlight" invisible="issue_state != 'will' or is_party_passed == 'pass'"/>
<button name="meeting_record" string="会议详情" type="object" class="oe_highlight" invisible="issue_state not in ['meeting', 'on_meet']"/>
<button name="correction" string="修正提醒" type="object" class="oe_highlight"/>
<button name="issue_cancel" string="取消" type="object" class="oe_highlight"/>
@@ -340,8 +341,9 @@
<field name="is_district_government"/>
<field name="is_district_party"/>
<field name="issue_state"/>
<field name="is_party_passed" column_invisible="1"/>
<field name="company_id" optional="hide"/>
<button name="single_meeting_issue" string="上会" type="object" class="oe_highlight" invisible="issue_state != 'will'"/>
<button name="single_meeting_issue" string="上会" type="object" class="oe_highlight" invisible="issue_state != 'will' or is_party_passed == 'pass'"/>
<button name="meeting_record" string="会议详情" type="object" class="oe_highlight" invisible="issue_state not in ['meeting', 'on_meet']"/>
<button name="correction" string="修正提醒" type="object" class="oe_highlight"/>
<button name="issue_cancel" string="取消" type="object" class="oe_highlight"/>
@@ -502,7 +504,8 @@
<field name="is_district_party"/>
<field name="issue_state"/>
<field name="company_id" optional="hide"/>
<button name="single_meeting_issue" string="上会" type="object" class="oe_highlight" invisible="issue_state != 'will'"/>
<field name="is_class_passed" invisible="1"/>
<button name="single_meeting_issue" string="上会" type="object" class="oe_highlight" invisible="issue_state != 'will' or is_class_passed == 'pass'"/>
<button name="meeting_record" string="会议详情" type="object" class="oe_highlight" invisible="issue_state not in ['meeting', 'on_meet']"/>
<button name="correction" string="修正提醒" type="object" class="oe_highlight"/>
<button name="issue_cancel" string="取消" type="object" class="oe_highlight"/>
@@ -651,7 +654,8 @@
<field name="is_district_party"/>
<field name="issue_state"/>
<field name="company_id" optional="hide"/>
<button name="single_meeting_issue" string="上会" type="object" class="oe_highlight" invisible="issue_state != 'will'"/>
<field name="is_class_passed" invisible="1"/>
<button name="single_meeting_issue" string="上会" type="object" class="oe_highlight" invisible="issue_state != 'will' or is_boss_passed == 'pass'"/>
<button name="meeting_record" string="会议详情" type="object" class="oe_highlight" invisible="issue_state not in ['meeting', 'on_meet']"/>
<button name="correction" string="修正提醒" type="object" class="oe_highlight"/>
<button name="issue_cancel" string="取消" type="object" class="oe_highlight"/>