1. 整理 只处理 oo_list_manager 在视图中增加字段,不显示问题.
2. 调整方案: 如果字段名和 视图的字段名不一致,则重置已经通过oo_list_manger 设置的方案. 原因: oo_l 模块 设置保存了方案, 不会再通过 视图去取字段.
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user