From 40f96069ab5fd598225c678ba6dff0550a0c9aa8 Mon Sep 17 00:00:00 2001 From: 86156 <823267011@qq.com> Date: Mon, 22 Dec 2025 10:57:47 +0800 Subject: [PATCH] =?UTF-8?q?hrm=E5=89=8D=E7=AB=AF=E4=B8=80=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- klp-ui/src/api/hrm/index.js | 341 ++++++++++++++++++ klp-ui/src/views/hrm/attendance/index.vue | 226 ++++++++++++ klp-ui/src/views/hrm/index.vue | 396 +++++++++++++++++++++ klp-ui/src/views/hrm/org/index.vue | 190 ++++++++++ klp-ui/src/views/hrm/payroll/index.vue | 213 +++++++++++ klp-ui/src/views/hrm/requests/index.vue | 407 ++++++++++++++++++++++ klp-ui/src/views/hrm/workbench/index.vue | 11 + 7 files changed, 1784 insertions(+) create mode 100644 klp-ui/src/api/hrm/index.js create mode 100644 klp-ui/src/views/hrm/attendance/index.vue create mode 100644 klp-ui/src/views/hrm/index.vue create mode 100644 klp-ui/src/views/hrm/org/index.vue create mode 100644 klp-ui/src/views/hrm/payroll/index.vue create mode 100644 klp-ui/src/views/hrm/requests/index.vue create mode 100644 klp-ui/src/views/hrm/workbench/index.vue diff --git a/klp-ui/src/api/hrm/index.js b/klp-ui/src/api/hrm/index.js new file mode 100644 index 00000000..3b8a7089 --- /dev/null +++ b/klp-ui/src/api/hrm/index.js @@ -0,0 +1,341 @@ +import request from '@/utils/request' + +// 组织 +export function listOrg(query) { + return request({ + url: '/hrm/org/list', + method: 'get', + params: query + }) +} +export function allOrg(query) { + return request({ + url: '/hrm/org/all', + method: 'get', + params: query + }) +} +export function addOrg(data) { + return request({ + url: '/hrm/org', + method: 'post', + data + }) +} +export function updateOrg(data) { + return request({ + url: '/hrm/org', + method: 'put', + data + }) +} +export function delOrg(orgIds) { + return request({ + url: `/hrm/org/${orgIds}`, + method: 'delete' + }) +} +export function getOrg(orgId) { + return request({ + url: `/hrm/org/${orgId}`, + method: 'get' + }) +} + +// 员工 +export function listEmployee(query) { + return request({ + url: '/hrm/employee/list', + method: 'get', + params: query + }) +} +export function allEmployee(query) { + return request({ + url: '/hrm/employee/all', + method: 'get', + params: query + }) +} +export function addEmployee(data) { + return request({ + url: '/hrm/employee', + method: 'post', + data + }) +} +export function updateEmployee(data) { + return request({ + url: '/hrm/employee', + method: 'put', + data + }) +} +export function delEmployee(empIds) { + return request({ + url: `/hrm/employee/${empIds}`, + method: 'delete' + }) +} +export function getEmployee(empId) { + return request({ + url: `/hrm/employee/${empId}`, + method: 'get' + }) +} + +// 证书与合同 +export function listCertificate(query) { + return request({ + url: '/hrm/certificate/list', + method: 'get', + params: query + }) +} +export function listContract(query) { + return request({ + url: '/hrm/contract/list', + method: 'get', + params: query + }) +} + +// 员工组织岗位关系 +export function listEmpOrgPosition(query) { + return request({ + url: '/hrm/empOrg/list', + method: 'get', + params: query + }) +} + +// 职级/岗位 +export function listGrade(query) { + return request({ + url: '/hrm/grade/list', + method: 'get', + params: query + }) +} +export function listPosition(query) { + return request({ + url: '/hrm/position/list', + method: 'get', + params: query + }) +} + +// 班次/排班/打卡/考勤 +export function listShift(query) { + return request({ + url: '/hrm/shift/list', + method: 'get', + params: query + }) +} +export function listSchedule(query) { + return request({ + url: '/hrm/schedule/list', + method: 'get', + params: query + }) +} +export function listPunch(query) { + return request({ + url: '/hrm/punch/list', + method: 'get', + params: query + }) +} +export function listAttendCalc(query) { + return request({ + url: '/hrm/attend/list', + method: 'get', + params: query + }) +} +export function listLeaveBalance(query) { + return request({ + url: '/hrm/leave/balance/list', + method: 'get', + params: query + }) +} + +// 申请单 +export function listLeaveReq(query) { + return request({ + url: '/hrm/leave/req/list', + method: 'get', + params: query + }) +} +export function listOvertimeReq(query) { + return request({ + url: '/hrm/overtime/req/list', + method: 'get', + params: query + }) +} +export function listTravelReq(query) { + return request({ + url: '/hrm/travel/req/list', + method: 'get', + params: query + }) +} +export function listSealReq(query) { + return request({ + url: '/hrm/seal/list', + method: 'get', + params: query + }) +} +export function getSealReq(bizId) { + return request({ + url: `/hrm/seal/${bizId}`, + method: 'get' + }) +} +export function addSealReq(data) { + return request({ + url: '/hrm/seal', + method: 'post', + data + }) +} +export function updateSealReq(data) { + return request({ + url: '/hrm/seal', + method: 'put', + data + }) +} +export function delSealReq(bizIds) { + return request({ + url: `/hrm/seal/${bizIds}`, + method: 'delete' + }) +} +export function approveSealReq(bizId) { + return request({ + url: `/hrm/seal/${bizId}/approve`, + method: 'post' + }) +} +export function rejectSealReq(bizId) { + return request({ + url: `/hrm/seal/${bizId}/reject`, + method: 'post' + }) +} +export function cancelSealReq(bizId) { + return request({ + url: `/hrm/seal/${bizId}/cancel`, + method: 'post' + }) +} +export function stampSealJava(bizId, data) { + return request({ + url: `/hrm/seal/${bizId}/stamp/java`, + method: 'post', + data + }) +} +export function stampSealPython(bizId, data) { + return request({ + url: `/hrm/seal/${bizId}/stamp/python`, + method: 'post', + data + }) +} + +// 流程任务 +export function listFlowTask(query) { + return request({ + url: '/hrm/flow/task/list', + method: 'get', + params: query + }) +} +export function listTodoFlowTask(assigneeUserId) { + return request({ + url: '/hrm/flow/task/todo', + method: 'get', + params: { assigneeUserId } + }) +} +export function approveFlowTask(taskId, data) { + return request({ + url: `/hrm/flow/task/${taskId}/approve`, + method: 'post', + data + }) +} +export function rejectFlowTask(taskId, data) { + return request({ + url: `/hrm/flow/task/${taskId}/reject`, + method: 'post', + data + }) +} +export function withdrawFlowTask(taskId, data) { + return request({ + url: `/hrm/flow/task/${taskId}/withdraw`, + method: 'post', + data + }) +} + +export function listFlowAction(query) { + return request({ + url: '/hrm/flow/action/list', + method: 'get', + params: query + }) +} +export function listFlowForm(query) { + return request({ + url: '/hrm/flow/form/list', + method: 'get', + params: query + }) +} +export function getFlowForm(formId) { + return request({ + url: `/hrm/flow/form/${formId}`, + method: 'get' + }) +} + +// 薪酬 +export function listPayPlan(query) { + return request({ + url: '/hrm/pay/plan/list', + method: 'get', + params: query + }) +} +export function listPayRun(query) { + return request({ + url: '/hrm/pay/run/list', + method: 'get', + params: query + }) +} +export function listPayslip(query) { + return request({ + url: '/hrm/payslip/list', + method: 'get', + params: query + }) +} + +// 指标快照 +export function listStatSnapshot(query) { + return request({ + url: '/hrm/stat/snapshot/list', + method: 'get', + params: query + }) +} diff --git a/klp-ui/src/views/hrm/attendance/index.vue b/klp-ui/src/views/hrm/attendance/index.vue new file mode 100644 index 00000000..bdcd2eed --- /dev/null +++ b/klp-ui/src/views/hrm/attendance/index.vue @@ -0,0 +1,226 @@ + + + + + + 班次 + 刷新 + + + + + {{ scope.row.startTime }} - {{ scope.row.endTime }} + + + + + {{ scope.row.nightShift ? '是' : '否' }} + + + + + + + + + + 排班 + + + 查询 + + + + + + + + + + + + + 打卡与考勤结果 + + + + + + + 打卡记录 + + + {{ formatDate(scope.row.punchTime) }} + + + + + + + 考勤结果 + + + + + + + + + {{ scope.row.exceptionMsg || '正常' }} + + + + + + + + + + + + + + diff --git a/klp-ui/src/views/hrm/index.vue b/klp-ui/src/views/hrm/index.vue new file mode 100644 index 00000000..66dbbb58 --- /dev/null +++ b/klp-ui/src/views/hrm/index.vue @@ -0,0 +1,396 @@ + + + + + HRM 工作台 + 汇总视图 · 快速进入各子模块 + + + 组织与员工 + + + 考勤与排班 + + + 申请与审批 + + + 薪酬与指标 + + + + + + {{ card.label }} + {{ card.value }} + {{ card.desc }} + + + + + + + + 我的待办 + 刷新 + + + + + {{ scope.row.taskId }} + 实例: {{ scope.row.instId }} + + + + + + {{ scope.row.status || '-' }} + + + + {{ formatDate(scope.row.expireTime) }} + + + + + + + + 流程历史 + + + 查询 + + + + + + {{ scope.row.action }} + + + + + + {{ formatDate(scope.row.createTime) }} + + + + + + + + + 组织与员工概览 + 进入 + + + 组织数量{{ summary.orgCount }} + 员工数量{{ summary.empCount }} + 在职员工{{ summary.activeEmp }} + + + + + + 考勤与排班概览 + 进入 + + + 班次{{ summary.shiftCount }} + 排班记录{{ summary.scheduleCount }} + 异常考勤{{ summary.attendException }} + + + + + + 申请与审批概览 + 进入 + + + 请假单{{ summary.leaveCount }} + 加班单{{ summary.otCount }} + 待审批{{ summary.pendingReq }} + + + + + + 薪酬与指标概览 + 进入 + + + 薪酬方案{{ summary.planCount }} + 批次{{ summary.runCount }} + 工资条{{ summary.payslipCount }} + + + + + + + + + diff --git a/klp-ui/src/views/hrm/org/index.vue b/klp-ui/src/views/hrm/org/index.vue new file mode 100644 index 00000000..76b720c5 --- /dev/null +++ b/klp-ui/src/views/hrm/org/index.vue @@ -0,0 +1,190 @@ + + + + + + 组织树 + 刷新 + + + + {{ data.orgName }} + {{ data.orgType || '组织' }} + + + + + + + 员工档案 + + + + + + + 查询 + + + + + + + + + + + {{ scope.row.status || '-' }} + + + + {{ formatDate(scope.row.hireDate) }} + + + + + + + + + + + diff --git a/klp-ui/src/views/hrm/payroll/index.vue b/klp-ui/src/views/hrm/payroll/index.vue new file mode 100644 index 00000000..5342d943 --- /dev/null +++ b/klp-ui/src/views/hrm/payroll/index.vue @@ -0,0 +1,213 @@ + + + + + + 薪酬方案 + 刷新 + + + + + + + {{ scope.row.status || '-' }} + + + + + + + + + 薪酬批次 + 刷新 + + + + + + + {{ scope.row.status || '-' }} + + + + + + + + + 工资条 & 指标 + + + 查询 + + + + + 工资条 + + + + ¥{{ formatNumber(scope.row.amountGross) }} + + + ¥{{ formatNumber(scope.row.amountNet) }} + + + + {{ scope.row.status || '-' }} + + + + + + 指标快照 + + + + + + + + + + + + + + + + diff --git a/klp-ui/src/views/hrm/requests/index.vue b/klp-ui/src/views/hrm/requests/index.vue new file mode 100644 index 00000000..c47a9c79 --- /dev/null +++ b/klp-ui/src/views/hrm/requests/index.vue @@ -0,0 +1,407 @@ + + + + + + {{ item.title }} + + + + + + + + 刷新 + + + + + + + {{ formatDate(scope.row.startTime) }} + + + {{ formatDate(scope.row.endTime) }} + + + + {{ scope.row.status || '-' }} + + + + + + 通过 + 驳回 + 撤销 + 盖章 + + + + + + + + + + + + + + + + + + + + + + + + X: {{ stampForm.xPx || '-' }} px + Y: {{ stampForm.yPx || '-' }} px + + + 宽: {{ stampForm.widthPx || stampImageNatural.width || '-' }} px + 高: {{ stampForm.heightPx || stampImageNatural.height || '-' }} px + + 点击右侧预览即可定位,尺寸默认取章图原始大小 + + + + + + 图形化定位(点击预览设置坐标) + + + + + 请先填写待盖章文件URL(建议提供图片预览) + + + + + + + + + + + diff --git a/klp-ui/src/views/hrm/workbench/index.vue b/klp-ui/src/views/hrm/workbench/index.vue new file mode 100644 index 00000000..3c778f02 --- /dev/null +++ b/klp-ui/src/views/hrm/workbench/index.vue @@ -0,0 +1,11 @@ + + + + +
汇总视图 · 快速进入各子模块