From 176b50dbb77c14a0080a40287f6e121d49994c17 Mon Sep 17 00:00:00 2001 From: Yangk Date: Tue, 30 Dec 2025 11:19:00 +0800 Subject: [PATCH] =?UTF-8?q?feat(erp/timesheetReport):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=B7=A5=E6=97=B6=E7=BB=9F=E8=AE=A1=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 实现项目工时统计报表的查询和展示功能 - 集成日期范围选择器支持周维度查询 - 实现表格数据展示和跨部门工时统计 - 添加导出功能支持Excel报表导出 - 实现合计行计算和数据汇总显示 - 集成字典标签显示项目类别信息 - 添加表格行合并功能优化展示效果 --- src/api/oa/erp/timesheetReport.ts | 56 ++++ .../timesheetReport/projectManHour/index.vue | 270 ++++++++++++++++++ 2 files changed, 326 insertions(+) create mode 100644 src/api/oa/erp/timesheetReport.ts create mode 100644 src/views/oa/erp/timesheetReport/projectManHour/index.vue diff --git a/src/api/oa/erp/timesheetReport.ts b/src/api/oa/erp/timesheetReport.ts new file mode 100644 index 0000000..c036da1 --- /dev/null +++ b/src/api/oa/erp/timesheetReport.ts @@ -0,0 +1,56 @@ +import request from '@/utils/request'; + +/** + * 项目工时统计报表查询参数 + */ +export interface ProjectManHourReportQuery { + pageNum?: number; + pageSize?: number; + startTime?: string; + endTime?: string; + projectName?: string; + projectCode?: string; + projectCategory?: string; + deptName?: string; // 使用部门名称模糊查询 +} + +/** + * 项目工时统计报表 VO + */ +export interface ProjectManHourReportVO { + projectId: number; + deptName: string; + managerName: string; + projectName: string; + projectCode: string; + projectCategory: string; + totalHours: number; + crossDeptHours: number; +} + +/** + * 查询项目工时统计列表 + * @param query + * @returns + */ +export function listProjectManHourReport(query: ProjectManHourReportQuery) { + return request({ + url: '/oa/erp/timesheetReport/projectManHourList', + method: 'get', + params: query + }); +} + +/** + * 导出项目工时统计报表 + * @param query + * @returns + */ +export function exportProjectManHourReport(query: ProjectManHourReportQuery) { + return request({ + url: '/oa/erp/timesheetReport/exportProjectManHour', + method: 'post', + params: query, + responseType: 'blob' + }); +} diff --git a/src/views/oa/erp/timesheetReport/projectManHour/index.vue b/src/views/oa/erp/timesheetReport/projectManHour/index.vue new file mode 100644 index 0000000..9f093f0 --- /dev/null +++ b/src/views/oa/erp/timesheetReport/projectManHour/index.vue @@ -0,0 +1,270 @@ + + +