diff --git a/header_search_panel/static/src/search/header_search/components/quick_filter/quick_filter.js b/header_search_panel/static/src/search/header_search/components/quick_filter/quick_filter.js index d41858434..e19836058 100644 --- a/header_search_panel/static/src/search/header_search/components/quick_filter/quick_filter.js +++ b/header_search_panel/static/src/search/header_search/components/quick_filter/quick_filter.js @@ -1,12 +1,11 @@ /** @odoo-module **/ -import { Component, useState, onWillStart } from "@odoo/owl"; +import { Component, onWillStart } from "@odoo/owl"; import { useService } from "@web/core/utils/hooks"; export class QuickFilter extends Component { setup() { super.setup(); this.orm = useService("orm"); - this.state = useState({ filters: [] }); this.activeFilterIds = this.env.searchModel.headerSearchInfo.quickFilter[this.props.groupId]?.filters || []; onWillStart(async () => { await this.loadFilters(); @@ -17,8 +16,13 @@ export class QuickFilter extends Component { * 返回过滤器列表 */ get filters() { - // 这里直接返回 state,避免在 getter 里做异步 - return this.state.filters; + // 通过ID查询过滤器列表 + const filters = this.env.searchModel.headerSearchInfo.headerQuickFilter[this.props.id].filters || []; + filters.forEach((filter, fdx) => { + filter.isChecked = this.activeFilterIds.includes(filter.inputId); + filter.index = fdx + 1; + }); + return filters; } async loadFilters() { @@ -27,12 +31,11 @@ export class QuickFilter extends Component { const filters = searchModel.headerSearchInfo.headerQuickFilter[this.props.id]?.filters || []; for (let [idx, filter] of filters.entries()) { const domain = this.safeParseDomain(filter.domain); - const count = await this.orm.searchCount(resModel, domain); - filter.count = count; - filter.isChecked = this.activeFilterIds.includes(filter.inputId); - filter.index = idx + 1; + if (filter.show_number) { + const count = await this.orm.searchCount(resModel, domain); + filter.count = count; + } } - this.state.filters = filters; } /** * 设置活动的过滤器 diff --git a/yuthon_hr_attendance/models/hr_attendance.py b/yuthon_hr_attendance/models/hr_attendance.py index b61211249..e25a25d9d 100644 --- a/yuthon_hr_attendance/models/hr_attendance.py +++ b/yuthon_hr_attendance/models/hr_attendance.py @@ -59,6 +59,7 @@ class HrAttendance(models.Model): is_month = fields.Boolean(string="是否为本月数据", compute='_compute_month_status', store=True) is_last_month = fields.Boolean(string="是否为上月数据", compute='_compute_month_status', store=True) is_holiday = fields.Boolean(string="是否是假期") + correct_result = fields.Text(string="修正原因") def create_attendance_data_holiday(self): """ diff --git a/yuthon_hr_attendance/views/hr_attendance_views.xml b/yuthon_hr_attendance/views/hr_attendance_views.xml index 7eafacc95..9ecaac926 100644 --- a/yuthon_hr_attendance/views/hr_attendance_views.xml +++ b/yuthon_hr_attendance/views/hr_attendance_views.xml @@ -41,7 +41,8 @@ - + + diff --git a/yuthon_hr_attendance/wizard/attendance_correct_wizard.py b/yuthon_hr_attendance/wizard/attendance_correct_wizard.py index 72e411e63..d0c4944d6 100644 --- a/yuthon_hr_attendance/wizard/attendance_correct_wizard.py +++ b/yuthon_hr_attendance/wizard/attendance_correct_wizard.py @@ -13,11 +13,13 @@ class AttendanceCorrectWizard(models.TransientModel): _description = "考勤修正弹窗" attendance_id = fields.Many2one('hr.attendance', string="考勤记录") + correct_result = fields.Text(string="修正原因") def confirm(self): for record in self: # 准备更新的值 values = { + 'correct_result': self.correct_result, 'is_approval': True, 'is_abnormal': False, 'is_no_card': False, diff --git a/yuthon_hr_attendance/wizard/attendance_correct_wizard.xml b/yuthon_hr_attendance/wizard/attendance_correct_wizard.xml index 8edd72165..b70a49eaf 100644 --- a/yuthon_hr_attendance/wizard/attendance_correct_wizard.xml +++ b/yuthon_hr_attendance/wizard/attendance_correct_wizard.xml @@ -6,6 +6,9 @@
你确定要修正吗?
+ + +