diff --git a/oo_list_manager/static/src/views/list/list_controller.js b/oo_list_manager/static/src/views/list/list_controller.js index aff2c3399..a6efb61e3 100644 --- a/oo_list_manager/static/src/views/list/list_controller.js +++ b/oo_list_manager/static/src/views/list/list_controller.js @@ -1,13 +1,13 @@ /** @odoo-module **/ -import { ListController } from "@web/views/list/list_controller"; -import { patch } from "@web/core/utils/patch"; -import { onWillStart, useState, useRef, useExternalListener } from "@odoo/owl"; -import { Dropdown } from "@web/core/dropdown/dropdown"; -import { CheckBox } from "@web/core/checkbox/checkbox"; -import { useSortable } from "@web/core/utils/sortable_owl"; -import { useService } from "@web/core/utils/hooks"; -import { usePosition } from "@web/core/position_hook"; +import {ListController} from "@web/views/list/list_controller"; +import {patch} from "@web/core/utils/patch"; +import {onWillStart, useState, useRef, useExternalListener} from "@odoo/owl"; +import {Dropdown} from "@web/core/dropdown/dropdown"; +import {CheckBox} from "@web/core/checkbox/checkbox"; +import {useSortable} from "@web/core/utils/sortable_owl"; +import {useService} from "@web/core/utils/hooks"; +import {usePosition} from "@web/core/position_hook"; patch(ListController.prototype, { @@ -35,15 +35,37 @@ patch(ListController.prototype, { }) }); + console.log(this.ooManager.columns) + onWillStart(async () => { const manager_data = await this.orm.call('ir.ui.view', 'get_manager_data', [this.env.config.viewId]); + console.log(manager_data) if (!Object.keys(manager_data).length || !manager_data.columns) { this.ooManager.columns.forEach(val => { val.visibility = !!!val.column_invisible; }) } else { - Object.assign(this.ooManager, manager_data); - this.archInfo.advanced_filter = this.ooManager.filter; + + // 简化逻辑:如果字段不一致(字段名判断),则重置视图 + const currentColumns = this.ooManager.columns; + const savedColumns = manager_data.columns || []; + + // 比较字段名是否一致 + const currentColumnNames = currentColumns.map(col => col.name).sort(); + const savedColumnNames = savedColumns.map(col => col.name).sort(); + + const isFieldConsistent = JSON.stringify(currentColumnNames) === JSON.stringify(savedColumnNames); + + if (!isFieldConsistent) { + // 字段不一致,重置视图配置 + this.ooManager.columns.forEach(val => { + val.visibility = !!!val.column_invisible; + }); + } else { + // 字段一致,使用保存的配置 + Object.assign(this.ooManager, manager_data); + this.archInfo.advanced_filter = this.ooManager.filter; + } } this.ooManager.show = manager_data.show; }) @@ -147,7 +169,7 @@ patch(ListController.prototype, { * @param params */ sortColumnDrop(params) { - const { element, previous } = params; + const {element, previous} = params; const fromId = element.dataset.id; const toId = previous ? previous.dataset.id : null; diff --git a/yuthon_hr_attendance/models/overtime_approval.py b/yuthon_hr_attendance/models/overtime_approval.py index a432d151d..1bc94c8a3 100644 --- a/yuthon_hr_attendance/models/overtime_approval.py +++ b/yuthon_hr_attendance/models/overtime_approval.py @@ -23,12 +23,14 @@ class OvertimeApprovals(models.Model): is_issues = fields.Boolean(string='是否上会') issues_result = fields.Html(string="会议结果") details = fields.Text(string="加班说明") - meal = fields.Selection([('yes', '是'), ('no', '否')], string="误餐费", default=None) - employee_ids = fields.Many2many('hr.employee', string="加班人", default=lambda self: self.env['hr.employee'].search([('user_id', '=', self.env.uid)])) + meal = fields.Selection([('yes', '是'), ('no', '否')], string="误餐费", default=None) + employee_ids = fields.Many2many('hr.employee', string="加班人", default=lambda self: self.env['hr.employee'].search( + [('user_id', '=', self.env.uid)])) related_issues_id = fields.Many2one('issue.library', string="关联议题") documents_ids = fields.Many2many('ir.attachment', string="附件") duration = fields.Float(string="时长", compute='_compute_duration', store=True, help="如果时长大于8则按8小时算") - real_duration = fields.Float(string="实际时长", compute='_compute_duration', store=True, help="如果时长大于8则按实际时长算") + real_duration = fields.Float(string="实际时长", compute='_compute_duration', store=True, + help="如果时长大于8则按实际时长算") overtime_hours = fields.Float(string="本月加班时长") start_time = fields.Datetime(string="开始时间") start_week = fields.Char(string="星期", compute='_compute_weekday') @@ -41,6 +43,7 @@ class OvertimeApprovals(models.Model): active = fields.Boolean('Active', default=True, tracking=True) work_end = fields.Boolean(string="结束") + test_field = fields.Char(string="测试字段") def _get_default_name_title(self): return self._description if self._description else self._name @@ -76,7 +79,7 @@ class OvertimeApprovals(models.Model): rec.duration = 0.0 rec.real_duration = 0.0 - if rec.duration > 8 : + if rec.duration > 8: rec.real_duration = 8 @api.depends('start_time', 'end_time') @@ -98,7 +101,7 @@ class OvertimeApprovals(models.Model): company_id = vals.get('company_id') if company_id: company = self.env['res.company'].browse(company_id) - if company.name == '天河物管' : + if company.name == '天河物管': if vals.get('duration'): if (vals['duration']) % 1 != 0.5: raise ValidationError("时长不对!请重新编辑") @@ -168,16 +171,16 @@ class OvertimeApprovals(models.Model): meal_number = employee_id.meal_number record.overtime_hours = employee_id.holiday_overtime_hours + employee_id.weekend_overtime_hours + employee_id.normal_overtime_hours if self.meal == 'yes': - meal_number +=1 - employee_id.write({'meal_number':meal_number}) + meal_number += 1 + employee_id.write({'meal_number': meal_number}) holiday_status_id = self.env['hr.leave.type'].search([('name', '=', '补休')]) allocation = self.env['hr.leave.allocation'].create({ 'employee_id': employee_id.id, 'name': '补休', - 'number_of_days': self.real_duration/7, + 'number_of_days': self.real_duration / 7, 'holiday_status_id': holiday_status_id.id, 'allocation_type': 'regular', - "number_of_days_display": self.real_duration/7, + "number_of_days_display": self.real_duration / 7, }) if allocation: allocation.sudo().action_validate()