diff --git a/ks_dashboard_ninja/static/src/components/ks_dashboard_graphs/ks_dashboard_graphs.js b/ks_dashboard_ninja/static/src/components/ks_dashboard_graphs/ks_dashboard_graphs.js index 930785a12..eea9c923c 100644 --- a/ks_dashboard_ninja/static/src/components/ks_dashboard_graphs/ks_dashboard_graphs.js +++ b/ks_dashboard_ninja/static/src/components/ks_dashboard_graphs/ks_dashboard_graphs.js @@ -9,6 +9,7 @@ import { localization } from "@web/core/l10n/localization"; import {formatDate,formatDateTime} from "@web/core/l10n/dates"; import {parseDateTime,parseDate,} from "@web/core/l10n/dates"; import { renderToElement } from "@web/core/utils/render"; +import { session } from "@web/session"; export class Ksdashboardgraph extends Component{ setup(){ @@ -16,6 +17,7 @@ export class Ksdashboardgraph extends Component{ this.actionService = useService("action"); this._rpc = useService("rpc"); this.state = useState({item_data:"",list_view_data:""}) + this.isAdmin = session.is_system; onMounted(() => this._update_view()); onPatched(() => this.update_list_view()); this.item = this.props.item diff --git a/ks_dashboard_ninja/static/src/components/ks_dashboard_graphs/ks_dashboard_graphs.xml b/ks_dashboard_ninja/static/src/components/ks_dashboard_graphs/ks_dashboard_graphs.xml index 38559a0a6..c15453d01 100644 --- a/ks_dashboard_ninja/static/src/components/ks_dashboard_graphs/ks_dashboard_graphs.xml +++ b/ks_dashboard_ninja/static/src/components/ks_dashboard_graphs/ks_dashboard_graphs.xml @@ -1,6 +1,5 @@ - @@ -9,50 +8,46 @@ -
-
- - +
- - - - + +
- -
- - -
-
- - + + + - +
-
+ +
+
-

-

+

+ +

+

+ +

@@ -217,7 +212,6 @@
-
@@ -233,7 +227,6 @@ Export to CSV
-
Save as PDF diff --git a/ks_dashboard_ninja/static/src/components/ks_dashboard_kpi_view/ks_dashboard_kpi.js b/ks_dashboard_ninja/static/src/components/ks_dashboard_kpi_view/ks_dashboard_kpi.js index 25633d2af..b8ae68314 100644 --- a/ks_dashboard_ninja/static/src/components/ks_dashboard_kpi_view/ks_dashboard_kpi.js +++ b/ks_dashboard_ninja/static/src/components/ks_dashboard_kpi_view/ks_dashboard_kpi.js @@ -6,7 +6,7 @@ import { formatInteger } from "@web/views/fields/formatters"; import { useService } from "@web/core/utils/hooks"; import { jsonrpc } from "@web/core/network/rpc_service"; import { _t } from "@web/core/l10n/translation"; - +import { session } from "@web/session"; export class Ksdashboardkpiview extends Component{ file_type_magic_word= {'/': 'jpg','R': 'gif','i': 'png','P': 'svg+xml'} setup(){ @@ -15,6 +15,7 @@ export class Ksdashboardkpiview extends Component{ this.actionService = useService("action"); this.ks_kpi = useRef('ks_kpi') this.state = useState({item_info_kpi1:{},item_info_kpi2:{},item_info_kpi3:{}}) + this.isAdmin = session.is_system; onMounted(() => this._update_view()); this.item = this.props.item this.ks_dashboard_data = this.props.dashboard_data diff --git a/ks_dashboard_ninja/static/src/components/ks_dashboard_kpi_view/ks_dashboard_kpi.xml b/ks_dashboard_ninja/static/src/components/ks_dashboard_kpi_view/ks_dashboard_kpi.xml index 9e6f8a354..014a67147 100644 --- a/ks_dashboard_ninja/static/src/components/ks_dashboard_kpi_view/ks_dashboard_kpi.xml +++ b/ks_dashboard_ninja/static/src/components/ks_dashboard_kpi_view/ks_dashboard_kpi.xml @@ -113,7 +113,7 @@
+ t-att-data-item_id="state.item_info_kpi1.item.id" t-if="isAdmin"> - -
- -
@@ -202,16 +196,12 @@
- -
-
-
@@ -232,7 +222,6 @@
@@ -350,7 +335,6 @@ - - @@ -404,10 +387,8 @@
-
- \ No newline at end of file diff --git a/sh_backmate_theme_adv_enterprise/static/src/views/form/form_controller.xml b/sh_backmate_theme_adv_enterprise/static/src/views/form/form_controller.xml index 330cf5cab..2f2c0f8a2 100644 --- a/sh_backmate_theme_adv_enterprise/static/src/views/form/form_controller.xml +++ b/sh_backmate_theme_adv_enterprise/static/src/views/form/form_controller.xml @@ -59,7 +59,7 @@
- +
@@ -72,8 +72,9 @@
-
diff --git a/soong_workflow/models/soong_workflow_mixin.py b/soong_workflow/models/soong_workflow_mixin.py index 74e9c88ef..92cedca45 100644 --- a/soong_workflow/models/soong_workflow_mixin.py +++ b/soong_workflow/models/soong_workflow_mixin.py @@ -209,6 +209,31 @@ class SoongWorkflowMixin(models.AbstractModel): soong_record_ids = fields.One2many(comodel_name="soong.workflow.line", inverse_name="res_id", string=" ",) project_ids = fields.One2many(comodel_name="project.project.line", inverse_name="res_id", string=" ",) + def get_logs_for_print(self, applicant_first=False): + """ + 返回用于打印的审批日志列表: + - 按与界面相同的顺序(sequence 升序) + - 同名节点只保留最新一条 + - 可选:申请人置顶 + """ + self.ensure_one() + logs = self.log_ids.sorted('sequence') + seen = set() + ordered = [] + # 逆序去重,保留最新 + for log in reversed(logs): + key = log.name or '' + if key in seen: + continue + seen.add(key) + ordered.append(log) + ordered.reverse() # 恢复原有顺序(去重后) + if applicant_first: + applicants = [l for l in ordered if (l.name or '') == '申请人'] + others = [l for l in ordered if (l.name or '') != '申请人'] + ordered = applicants + others + return ordered + # @api.model_create_multi # def create(self, vals_list): # res = super().create(vals_list) diff --git a/soong_workflow/models/soong_workflow_record.py b/soong_workflow/models/soong_workflow_record.py index c1dc7ccc9..67ffa2ed4 100644 --- a/soong_workflow/models/soong_workflow_record.py +++ b/soong_workflow/models/soong_workflow_record.py @@ -16,10 +16,7 @@ class SoongWorkflowRecord(models.Model): def get_workflow_count(self): domain = [ - ('soong_state', 'in', ['to_do', 'active']), - ('employee_ids.user_id', '=', self.env.user.id), - ('users_ids', 'in', self.env.user.id), - ('reclaim_state', '=', False) + ('is_to_do', '=', True), ] return self.search_count(domain) @@ -74,6 +71,41 @@ class SoongWorkflowRecord(models.Model): # 人力资源流程的发生日期 workflow_happen_date = fields.Date(string="发生日期") is_unlink = fields.Boolean(string="是否可删", compute='_compute_is_unlink') + is_to_do = fields.Boolean( + string="是否是待办流程", + compute='_compute_is_to_do', + search='_search_is_to_do', + ) + @api.depends('employee_ids', 'soong_state', 'reclaim_state') + def _compute_is_to_do(self): + current_uid = self.env.user.id + for record in self: + record.is_to_do = False + condition1 = record.soong_state in ['to_do', 'to_active'] + condition2 = not record.reclaim_state + condition3 = False + if record.employee_ids: + condition3 = current_uid in record.employee_ids.mapped('user_id.id') + if condition1 and condition2 and condition3: + record.is_to_do = True + + def _search_is_to_do(self, operator, value): + current_uid = self.env.user.id + current_employee_ids = self.env['hr.employee'].search([ + ('user_id', '=', current_uid) + ]).ids + base_domain = [ + ('soong_state', 'in', ['to_do', 'to_active']), + ('reclaim_state', '=', False), + ('employee_ids', 'in', current_employee_ids) + ] + if (operator == '=' and value) or (operator == '!=' and not value): + domain = base_domain + elif (operator == '=' and not value) or (operator == '!=' and value): + domain = ['!'] + base_domain + else: + domain = [] + return domain @api.depends_context('uid', 'company') @api.depends('department_id', 'employee_ids') diff --git a/soong_workflow/templates/soong_workflow_templates.xml b/soong_workflow/templates/soong_workflow_templates.xml index 4a0cb1b8f..70ab7f10e 100644 --- a/soong_workflow/templates/soong_workflow_templates.xml +++ b/soong_workflow/templates/soong_workflow_templates.xml @@ -4,7 +4,7 @@ - + @@ -20,7 +20,7 @@ - + @@ -32,7 +32,7 @@ - + diff --git a/soong_workflow/views/soong_workflow_record.xml b/soong_workflow/views/soong_workflow_record.xml index 4e63e02c6..4cbfb45d7 100644 --- a/soong_workflow/views/soong_workflow_record.xml +++ b/soong_workflow/views/soong_workflow_record.xml @@ -76,7 +76,7 @@ + create="false" default_order="write_date2 desc, id desc" expand="1" limit="10">