From 5529b2e2b6a76c52b890a074ae895b6f7333fe34 Mon Sep 17 00:00:00 2001 From: zhouzhou <123@qq.com> Date: Tue, 12 Nov 2024 18:22:27 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../models/yuthon_hr_employee.py | 33 ++++++++++++------- yuthon_work_brand/views/work_menus.xml | 11 ++++++- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/yuthon_hr_employee/models/yuthon_hr_employee.py b/yuthon_hr_employee/models/yuthon_hr_employee.py index 9544af961..ab4d9879d 100644 --- a/yuthon_hr_employee/models/yuthon_hr_employee.py +++ b/yuthon_hr_employee/models/yuthon_hr_employee.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- +from dateutil.relativedelta import relativedelta + from odoo import api, fields, models from datetime import date, datetime from odoo.exceptions import UserError, ValidationError @@ -63,11 +65,11 @@ class YuthonHrEmployee(models.Model): new_end_contract_data = fields.Date(string="合同终止日期") open_start_time = fields.Date(string="参加工作时间") social_insurance_date = fields.Date(string="缴纳社保日期") - social_insurance_time = fields.Integer(string="社保时长") + social_insurance_time = fields.Char(string="社保时长", compute='_compute_social_insurance_time', store=True) open_start_time_today = fields.Date(string="工作至今") interrupt_work_month = fields.Integer(string="中断工作月数") - cumulative_work_month = fields.Integer(string="累计工作月数") - cumulative_work_years = fields.Integer(string="累计工作年限") + cumulative_work_month = fields.Integer(string="累计工作月数", compute='_compute_cumulative_work_month', store=True) + cumulative_work_years = fields.Char(string="累计工作年限") # 教育 high_degree = fields.Char(string="最高学历") high_degree2 = fields.Char(string="最高学位") @@ -149,14 +151,6 @@ class YuthonHrEmployee(models.Model): "target": "new", } - @api.onchange('social_insurance_date') - def onchange_insurance_time(self): - for social in self: - if social.social_insurance_date: - social.social_insurance_time = (fields.Datetime.now().date() - social.social_insurance_date).days - else: - social.social_insurance_time = False - @api.depends('entry_date') def _compute_company_old(self): """司龄计算""" @@ -172,6 +166,23 @@ class YuthonHrEmployee(models.Model): else: record.company_old = None + @api.depends('social_insurance_date') + def _compute_cumulative_work_month(self): + for record in self: + if record.social_insurance_time : + today = datetime.now().date() + delta = relativedelta(today, record.social_insurance_date) + record.cumulative_work_month = delta.years * 12 + delta.months + else: + record.cumulative_work_month = 0 + + @api.depends('cumulative_work_month', 'interrupt_work_month') + def _compute_social_insurance_time(self): + for record in self: + record.social_insurance_time = record.cumulative_work_month - record.interrupt_work_month + if record.social_insurance_time < 0: + record.social_insurance_time = 0 + @api.depends('identification_id') # 只依赖身份证号码 def _compute_info(self): for record in self: diff --git a/yuthon_work_brand/views/work_menus.xml b/yuthon_work_brand/views/work_menus.xml index aaf180aa5..bd501c1e5 100644 --- a/yuthon_work_brand/views/work_menus.xml +++ b/yuthon_work_brand/views/work_menus.xml @@ -43,7 +43,16 @@ parent="yuthon_dashboard_setting" action="spreadsheet_dashboard.spreadsheet_dashboard_action_configuration_dashboards" sequence="1"/> - + + From c066ecd1c7bfa4a4aaf4b788119fcce69f4d2e20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Tue, 12 Nov 2024 18:24:30 +0800 Subject: [PATCH 2/2] pengyuthon wechat --- ks_dashboard_ninja/i18n/zh_CN.po | 2 +- .../static/src/dashboard/ks_dashboard_item.xml | 2 +- .../static/src/items/card/kpi.js | 16 ++++++++++++++++ .../static/src/items/card/kpi.xml | 4 ++-- .../static/src/items/card/tile.js | 18 ++++++++++++++++++ .../static/src/items/card/tile.xml | 4 ++-- .../static/src/items/card/todo.js | 17 +++++++++++++++++ .../static/src/items/card/todo.xml | 4 ++-- .../static/src/items/list/list.js | 16 ++++++++++++++++ .../static/src/items/list/list.xml | 2 ++ .../static/src/items/tool_bar.js | 2 +- 11 files changed, 78 insertions(+), 9 deletions(-) diff --git a/ks_dashboard_ninja/i18n/zh_CN.po b/ks_dashboard_ninja/i18n/zh_CN.po index 5d1cc699e..a52511560 100644 --- a/ks_dashboard_ninja/i18n/zh_CN.po +++ b/ks_dashboard_ninja/i18n/zh_CN.po @@ -737,7 +737,7 @@ msgstr "仪表盘" #. module: ks_dashboard_ninja #: model_terms:ir.ui.view,arch_db:ks_dashboard_ninja.item_form_view msgid "Data" -msgstr "日期" +msgstr "数据" #. module: ks_dashboard_ninja #: model_terms:ir.ui.view,arch_db:ks_dashboard_ninja.item_form_view diff --git a/ks_dashboard_ninja/static/src/dashboard/ks_dashboard_item.xml b/ks_dashboard_ninja/static/src/dashboard/ks_dashboard_item.xml index 0671f92d1..e7914161a 100644 --- a/ks_dashboard_ninja/static/src/dashboard/ks_dashboard_item.xml +++ b/ks_dashboard_ninja/static/src/dashboard/ks_dashboard_item.xml @@ -4,7 +4,7 @@ -
diff --git a/ks_dashboard_ninja/static/src/items/card/kpi.js b/ks_dashboard_ninja/static/src/items/card/kpi.js index ef28c4de1..d95780279 100644 --- a/ks_dashboard_ninja/static/src/items/card/kpi.js +++ b/ks_dashboard_ninja/static/src/items/card/kpi.js @@ -22,6 +22,7 @@ export class KsKpi extends Component { } setup() { + this.action = useService('action'); this.kpi_data = JSON.parse(this.props.record.ks_kpi_data); this.count_1 = this.kpi_data[0] ? this.kpi_data[0]?.record_data : undefined; this.count_2 = this.kpi_data[1] ? this.kpi_data[1]?.record_data : undefined; @@ -81,4 +82,19 @@ export class KsKpi extends Component { return mainBodyStyle(rgba_background_color, rgba_font_color, this.props.record).background_style; } + onClickAction() { + const action = { + name: this.props.record.ks_model_display_name, + type: 'ir.actions.act_window', + res_model: this.props.record.ks_model_name, +// res_id: this.props.dashboard_id, +// context: {'create':false}, + domain: this.props.record.ks_domain, + views: [[false, 'tree']], + view_mode: 'tree', + target: 'current', + }; + this.action.doAction(action); + } + } \ No newline at end of file diff --git a/ks_dashboard_ninja/static/src/items/card/kpi.xml b/ks_dashboard_ninja/static/src/items/card/kpi.xml index aacb0c96f..90abef6c2 100644 --- a/ks_dashboard_ninja/static/src/items/card/kpi.xml +++ b/ks_dashboard_ninja/static/src/items/card/kpi.xml @@ -5,8 +5,8 @@ -
diff --git a/ks_dashboard_ninja/static/src/items/card/tile.js b/ks_dashboard_ninja/static/src/items/card/tile.js index 3c1f05f46..a305a6383 100644 --- a/ks_dashboard_ninja/static/src/items/card/tile.js +++ b/ks_dashboard_ninja/static/src/items/card/tile.js @@ -21,6 +21,10 @@ export class KsTile extends Component { KsToolBar } + setup() { + this.action = useService('action'); + } + get container_class() { return "grid-stack-item ui-draggable-disabled ui-resizable-disabled" @@ -51,4 +55,18 @@ export class KsTile extends Component { return mainBodyStyle(rgba_background_color, rgba_font_color, this.props.record).background_style; } + onClickAction() { + this.action.doAction({ + name: this.props.record.ks_model_display_name, + type: 'ir.actions.act_window', + res_model: this.props.record.ks_model_name, +// res_id: this.props.dashboard_id, +// context: {'create':false}, + domain: this.props.record.ks_domain, + views: [[false, 'tree']], + view_mode: 'tree', + target: 'current', + }); + } + } \ No newline at end of file diff --git a/ks_dashboard_ninja/static/src/items/card/tile.xml b/ks_dashboard_ninja/static/src/items/card/tile.xml index e7b4024d6..734e3e0fc 100644 --- a/ks_dashboard_ninja/static/src/items/card/tile.xml +++ b/ks_dashboard_ninja/static/src/items/card/tile.xml @@ -5,8 +5,8 @@ -
-
diff --git a/ks_dashboard_ninja/static/src/items/tool_bar.js b/ks_dashboard_ninja/static/src/items/tool_bar.js index 7a32e81be..346c412e2 100644 --- a/ks_dashboard_ninja/static/src/items/tool_bar.js +++ b/ks_dashboard_ninja/static/src/items/tool_bar.js @@ -81,7 +81,7 @@ export class KsToolBar extends Component { removeItem() { this.dialog.add(ConfirmationDialog, { - body: _t('Do you really want to delete this chart?'), + body: _t('确定删除这个图表吗?'), cancel: () => {}, confirm: () => this.doDelete(), });