From 955d20413b45079e948a40e8718ef9281049a5e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A0=82=E7=B3=96?= Date: Thu, 5 Feb 2026 10:42:50 +0800 Subject: [PATCH] =?UTF-8?q?feat(HRM):=20=E6=96=B0=E5=A2=9EHRM=E5=8A=9E?= =?UTF-8?q?=E5=85=AC=E5=AE=A1=E6=89=B9=E6=A8=A1=E5=9D=97=E5=8F=8A=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E5=8A=9F=E8=83=BD=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增HRM办公审批模块,包括审批中心、抄送我的、我的申请等功能页面和组件。主要变更包括: 1. 添加审批相关API接口文件 2. 新增审批详情展示组件 3. 实现审批流程操作功能 4. 添加Vuex状态管理 5. 新增相关静态资源图片 6. 配置页面路由 7. 实现审批列表展示和筛选功能 8. 添加审批操作弹窗和状态管理 --- api/hrm/attendance.js | 127 +++ api/hrm/cc.js | 35 + api/hrm/certContract.js | 66 ++ api/hrm/empOrgPosition.js | 33 + api/hrm/employee.js | 56 ++ api/hrm/flow.js | 220 +++++ api/hrm/gradePosition.js | 66 ++ api/hrm/index.js | 12 + api/hrm/leave.js | 48 + api/hrm/org.js | 49 + api/hrm/reimburse.js | 49 + api/hrm/seal.js | 99 ++ api/hrm/travel.js | 48 + components/hrm/detailPanels/leave.vue | 132 +++ components/hrm/detailPanels/reimburse.vue | 161 ++++ components/hrm/detailPanels/seal.vue | 113 +++ components/hrm/detailPanels/travel.vue | 148 +++ pages.json | 28 + pages/workbench/hrm/apply/apply.vue | 627 +++++++++++++ pages/workbench/hrm/approve/approve.vue | 604 +++++++++++++ pages/workbench/hrm/cc/cc.vue | 587 ++++++++++++ pages/workbench/hrm/detail/detail.vue | 206 +++++ pages/workbench/hrm/leave/leave.vue | 946 ++++++++++++++++++++ pages/workbench/hrm/reimburse/reimburse.vue | 22 + pages/workbench/hrm/seal/seal.vue | 22 + pages/workbench/hrm/travel/travel.vue | 22 + pages/workbench/index/index.vue | 27 +- static/images/cc.png | Bin 0 -> 7119 bytes static/images/hrm_apply.png | Bin 0 -> 4436 bytes store/getters.js | 2 + store/index.js | 4 +- store/modules/oa.js | 24 + 32 files changed, 4576 insertions(+), 7 deletions(-) create mode 100644 api/hrm/attendance.js create mode 100644 api/hrm/cc.js create mode 100644 api/hrm/certContract.js create mode 100644 api/hrm/empOrgPosition.js create mode 100644 api/hrm/employee.js create mode 100644 api/hrm/flow.js create mode 100644 api/hrm/gradePosition.js create mode 100644 api/hrm/index.js create mode 100644 api/hrm/leave.js create mode 100644 api/hrm/org.js create mode 100644 api/hrm/reimburse.js create mode 100644 api/hrm/seal.js create mode 100644 api/hrm/travel.js create mode 100644 components/hrm/detailPanels/leave.vue create mode 100644 components/hrm/detailPanels/reimburse.vue create mode 100644 components/hrm/detailPanels/seal.vue create mode 100644 components/hrm/detailPanels/travel.vue create mode 100644 pages/workbench/hrm/apply/apply.vue create mode 100644 pages/workbench/hrm/approve/approve.vue create mode 100644 pages/workbench/hrm/cc/cc.vue create mode 100644 pages/workbench/hrm/detail/detail.vue create mode 100644 pages/workbench/hrm/leave/leave.vue create mode 100644 pages/workbench/hrm/reimburse/reimburse.vue create mode 100644 pages/workbench/hrm/seal/seal.vue create mode 100644 pages/workbench/hrm/travel/travel.vue create mode 100644 static/images/cc.png create mode 100644 static/images/hrm_apply.png create mode 100644 store/modules/oa.js diff --git a/api/hrm/attendance.js b/api/hrm/attendance.js new file mode 100644 index 0000000..7e06afb --- /dev/null +++ b/api/hrm/attendance.js @@ -0,0 +1,127 @@ +import request from "@/util/oaRequest" + +// 班次 +export function listShift(query) { + return request({ + url: '/hrm/shift/list', + method: 'get', + params: query + }) +} +export function addShift(data) { + return request({ + url: '/hrm/shift', + method: 'post', + data + }) +} +export function updateShift(data) { + return request({ + url: '/hrm/shift', + method: 'put', + data + }) +} +export function delShift(shiftIds) { + return request({ + url: `/hrm/shift/${shiftIds}`, + method: 'delete' + }) +} + +// 排班 +export function listSchedule(query) { + return request({ + url: '/hrm/schedule/list', + method: 'get', + params: query + }) +} +export function addSchedule(data) { + return request({ + url: '/hrm/schedule', + method: 'post', + data + }) +} +export function updateSchedule(data) { + return request({ + url: '/hrm/schedule', + method: 'put', + data + }) +} +export function delSchedule(scheduleIds) { + return request({ + url: `/hrm/schedule/${scheduleIds}`, + method: 'delete' + }) +} + +// 打卡 +export function listPunch(query) { + return request({ + url: '/hrm/punch/list', + method: 'get', + params: query + }) +} +export function addPunch(data) { + return request({ + url: '/hrm/punch', + method: 'post', + data + }) +} +export function updatePunch(data) { + return request({ + url: '/hrm/punch', + method: 'put', + data + }) +} +export function delPunch(punchIds) { + return request({ + url: `/hrm/punch/${punchIds}`, + method: 'delete' + }) +} + +// 考勤结果 +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 addLeaveBalance(data) { + return request({ + url: '/hrm/leave/balance', + method: 'post', + data + }) +} +export function updateLeaveBalance(data) { + return request({ + url: '/hrm/leave/balance', + method: 'put', + data + }) +} +export function delLeaveBalance(balIds) { + return request({ + url: `/hrm/leave/balance/${balIds}`, + method: 'delete' + }) +} + diff --git a/api/hrm/cc.js b/api/hrm/cc.js new file mode 100644 index 0000000..a55c970 --- /dev/null +++ b/api/hrm/cc.js @@ -0,0 +1,35 @@ +import request from "@/util/oaRequest" + +// 查询抄送记录列表 +export function listCc(query) { + return request({ + url: '/hrm/flow/cc/my', + method: 'get', + params: query + }) +} + +// 标记抄送为已读 +export function readCc(ccId) { + return request({ + url: `/hrm/flow/cc/${ccId}/read`, + method: 'post' + }) +} + +// 手动抄送 +export function addCc(data) { + return request({ + url: '/hrm/flow/cc', + method: 'post', + data: data + }) +} + +// 查询抄送记录详细 +export function getCc(ccId) { + return request({ + url: `/hrm/flow/cc/${ccId}`, + method: 'get' + }) +} diff --git a/api/hrm/certContract.js b/api/hrm/certContract.js new file mode 100644 index 0000000..6da3a13 --- /dev/null +++ b/api/hrm/certContract.js @@ -0,0 +1,66 @@ +import request from "@/util/oaRequest" + +// 证书 +export function listCertificate(query) { + return request({ + url: '/hrm/certificate/list', + method: 'get', + params: query + }) +} + +export function addCertificate(data) { + return request({ + url: '/hrm/certificate', + method: 'post', + data + }) +} + +export function updateCertificate(data) { + return request({ + url: '/hrm/certificate', + method: 'put', + data + }) +} + +export function delCertificate(certIds) { + return request({ + url: `/hrm/certificate/${certIds}`, + method: 'delete' + }) +} + +// 合同 +export function listContract(query) { + return request({ + url: '/hrm/contract/list', + method: 'get', + params: query + }) +} + +export function addContract(data) { + return request({ + url: '/hrm/contract', + method: 'post', + data + }) +} + +export function updateContract(data) { + return request({ + url: '/hrm/contract', + method: 'put', + data + }) +} + +export function delContract(contractIds) { + return request({ + url: `/hrm/contract/${contractIds}`, + method: 'delete' + }) +} + diff --git a/api/hrm/empOrgPosition.js b/api/hrm/empOrgPosition.js new file mode 100644 index 0000000..2b2fa93 --- /dev/null +++ b/api/hrm/empOrgPosition.js @@ -0,0 +1,33 @@ +import request from "@/util/oaRequest" +// 员工组织岗位关系 +export function listEmpOrgPosition(query) { + return request({ + url: '/hrm/empOrg/list', + method: 'get', + params: query + }) +} + +export function addEmpOrgPosition(data) { + return request({ + url: '/hrm/empOrg', + method: 'post', + data + }) +} + +export function updateEmpOrgPosition(data) { + return request({ + url: '/hrm/empOrg', + method: 'put', + data + }) +} + +export function delEmpOrgPosition(relIds) { + return request({ + url: `/hrm/empOrg/${relIds}`, + method: 'delete' + }) +} + diff --git a/api/hrm/employee.js b/api/hrm/employee.js new file mode 100644 index 0000000..7f9d19c --- /dev/null +++ b/api/hrm/employee.js @@ -0,0 +1,56 @@ +import request from "@/util/oaRequest" + +// 员工 +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' + }) +} + +// 根据用户ID获取员工信息 +export function getEmployeeByUserId(userId) { + return request({ + url: `/hrm/employee/byUserId/${userId}`, + method: 'get' + }) +} diff --git a/api/hrm/flow.js b/api/hrm/flow.js new file mode 100644 index 0000000..7880b75 --- /dev/null +++ b/api/hrm/flow.js @@ -0,0 +1,220 @@ +import request from "@/util/oaRequest" + +// 流程任务 +export function listFlowTask(query) { + return request({ + url: '/hrm/flow/task/list', + method: 'get', + params: query + }) +} + +export function updateFlowInstance(data) { + return request({ + url: '/hrm/flow/instance', + method: 'put', + data + }) +} + +export function listTodoFlowTask(assigneeUserId) { + return request({ + url: '/hrm/flow/task/todo', + method: 'get', + params: { assigneeUserId } + }) +} + +// 业务维度:按 bizType + bizId 查询当前待办任务(后端需提供) +export function getTodoTaskByBiz(bizType, bizId, assigneeUserId) { + return request({ + url: '/hrm/flow/task/todoByBiz', + method: 'get', + params: { bizType, bizId, 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 transferFlowTask(taskId, data) { + return request({ + url: `/hrm/flow/task/${taskId}/transfer`, + method: 'post', + params: data + }) +} + +export function ccFlowTask(data) { + return request({ + url: '/hrm/flow/cc', + method: 'post', + data + }) +} + +// 流程动作/表单 +export function listFlowAction(query) { + return request({ + url: '/hrm/flow/action/list', + method: 'get', + params: query + }) +} + +export function listFlowFormData(query) { + return request({ + // 后端 Controller: HrmFlowFormDataController + // @RequestMapping("/hrm/flow/form") + @GetMapping("/list") + url: '/hrm/flow/form/list', + method: 'get', + params: query + }) +} + +// 流程实例 +export function listFlowInstance(query) { + return request({ + url: '/hrm/flow/instance/list', + method: 'get', + params: query + }) +} + +// 我的申请(我发起的流程实例) +export function listMyFlowInstance(query) { + return request({ + url: '/hrm/flow/instance/myList', + method: 'get', + params: query + }) +} + +export function getFlowInstance(instId) { + return request({ + url: `/hrm/flow/instance/${instId}`, + method: 'get' + }) +} + +export function queryInstanceByBiz(bizType, bizId) { + return request({ + url: '/hrm/flow/instance/all', + method: 'get', + params: { bizType, bizId } + }) +} + +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 listFlowTemplate(query) { + return request({ + url: '/hrm/flow/template/list', + method: 'get', + params: query + }) +} + +export function getFlowTemplate(tplId) { + return request({ + url: `/hrm/flow/template/${tplId}`, + method: 'get' + }) +} + +export function addFlowTemplate(data) { + return request({ + url: '/hrm/flow/template', + method: 'post', + data + }) +} + +export function updateFlowTemplate(data) { + return request({ + url: '/hrm/flow/template', + method: 'put', + data + }) +} + +export function delFlowTemplate(tplIds) { + return request({ + url: `/hrm/flow/template/${tplIds}`, + method: 'delete' + }) +} + +// 流程节点 +export function listFlowNode(query) { + return request({ + url: '/hrm/flow/node/list', + method: 'get', + params: query + }) +} + +export function getFlowNode(nodeId) { + return request({ + url: `/hrm/flow/node/${nodeId}`, + method: 'get' + }) +} + +export function addFlowNode(data) { + return request({ + url: '/hrm/flow/node', + method: 'post', + data + }) +} + +export function updateFlowNode(data) { + return request({ + url: '/hrm/flow/node', + method: 'put', + data + }) +} + +export function delFlowNode(nodeIds) { + return request({ + url: `/hrm/flow/node/${nodeIds}`, + method: 'delete' + }) +} diff --git a/api/hrm/gradePosition.js b/api/hrm/gradePosition.js new file mode 100644 index 0000000..3aadd95 --- /dev/null +++ b/api/hrm/gradePosition.js @@ -0,0 +1,66 @@ +import request from "@/util/oaRequest" + +// 职级 +export function listGrade(query) { + return request({ + url: '/hrm/grade/list', + method: 'get', + params: query + }) +} + +export function addGrade(data) { + return request({ + url: '/hrm/grade', + method: 'post', + data + }) +} + +export function updateGrade(data) { + return request({ + url: '/hrm/grade', + method: 'put', + data + }) +} + +export function delGrade(gradeIds) { + return request({ + url: `/hrm/grade/${gradeIds}`, + method: 'delete' + }) +} + +// 岗位 +export function listPosition(query) { + return request({ + url: '/hrm/position/list', + method: 'get', + params: query + }) +} + +export function addPosition(data) { + return request({ + url: '/hrm/position', + method: 'post', + data + }) +} + +export function updatePosition(data) { + return request({ + url: '/hrm/position', + method: 'put', + data + }) +} + +export function delPosition(positionIds) { + return request({ + url: `/hrm/position/${positionIds}`, + method: 'delete' + }) +} + diff --git a/api/hrm/index.js b/api/hrm/index.js new file mode 100644 index 0000000..f45bf75 --- /dev/null +++ b/api/hrm/index.js @@ -0,0 +1,12 @@ +// 导出所有 HRM 模块 API +export * from './employee' +export * from './org' +export * from './certContract' +export * from './empOrgPosition' +export * from './gradePosition' +export * from './attendance' +export * from './leave' +export * from './travel' +export * from './seal' +export * from './reimburse' +export * from './flow' diff --git a/api/hrm/leave.js b/api/hrm/leave.js new file mode 100644 index 0000000..4826b53 --- /dev/null +++ b/api/hrm/leave.js @@ -0,0 +1,48 @@ +import request from "@/util/oaRequest" + +// 请假单 +export function listLeaveReq(query) { + return request({ + url: '/hrm/leave/req/list', + method: 'get', + params: query + }) +} + +export function getLeaveReq(bizId) { + return request({ + url: `/hrm/leave/req/${bizId}`, + method: 'get' + }) +} + +export function addLeaveReq(data) { + return request({ + url: '/hrm/leave/req', + method: 'post', + data + }) +} + +export function editLeaveReq(data) { + return request({ + url: '/hrm/leave/req', + method: 'put', + data + }) +} + +export function delLeaveReq(bizIds) { + return request({ + url: `/hrm/leave/req/${bizIds}`, + method: 'delete' + }) +} + +export function allLeaveReq(query) { + return request({ + url: '/hrm/leave/req/all', + method: 'get', + params: query + }) +} diff --git a/api/hrm/org.js b/api/hrm/org.js new file mode 100644 index 0000000..4d55ee6 --- /dev/null +++ b/api/hrm/org.js @@ -0,0 +1,49 @@ +import request from "@/util/oaRequest" + +// 组织 +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' + }) +} + diff --git a/api/hrm/reimburse.js b/api/hrm/reimburse.js new file mode 100644 index 0000000..ac26548 --- /dev/null +++ b/api/hrm/reimburse.js @@ -0,0 +1,49 @@ +import request from "@/util/oaRequest" + +// 日常报销单 +export function listReimburseReq(query) { + return request({ + url: '/hrm/reimburse/list', + method: 'get', + params: query + }) +} + +export function getReimburseReq(bizId) { + return request({ + url: `/hrm/reimburse/${bizId}`, + method: 'get' + }) +} + +export function addReimburseReq(data) { + return request({ + url: '/hrm/reimburse', + method: 'post', + data + }) +} + +export function editReimburseReq(data) { + return request({ + url: '/hrm/reimburse', + method: 'put', + data + }) +} + +export function delReimburseReq(bizIds) { + return request({ + url: `/hrm/reimburse/${bizIds}`, + method: 'delete' + }) +} + +export function allReimburseReq(query) { + return request({ + url: '/hrm/reimburse/all', + method: 'get', + params: query + }) +} + diff --git a/api/hrm/seal.js b/api/hrm/seal.js new file mode 100644 index 0000000..28a014a --- /dev/null +++ b/api/hrm/seal.js @@ -0,0 +1,99 @@ +import request from "@/util/oaRequest" + +// 用印申请 +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 editSealReq(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) { + // 确保数据正确序列化,特别是 0 值 + const payload = { + targetFileUrl: String(data.targetFileUrl || ''), + stampImageUrl: String(data.stampImageUrl || ''), + pageNo: Number(data.pageNo) || 1, + xPx: Number(data.xPx) || 0, + yPx: Number(data.yPx) || 0, + viewportWidth: data.viewportWidth !== undefined && data.viewportWidth !== null ? Number(data.viewportWidth) : undefined, + viewportHeight: data.viewportHeight !== undefined && data.viewportHeight !== null ? Number(data.viewportHeight) : undefined + } + // 可选字段 + if (data.widthPx !== undefined && data.widthPx !== null) { + payload.widthPx = Number(data.widthPx) + } + if (data.heightPx !== undefined && data.heightPx !== null) { + payload.heightPx = Number(data.heightPx) + } + // viewportWidth/Height:如果是 undefined 则不传(兼容后端校验) + if (payload.viewportWidth === undefined) delete payload.viewportWidth + if (payload.viewportHeight === undefined) delete payload.viewportHeight + console.log('stampSealJava API call, payload:', JSON.stringify(payload, null, 2)) + console.log('yPx in API:', typeof payload.yPx, payload.yPx) + return request({ + url: `/hrm/seal/${bizId}/stamp/java`, + method: 'post', + data: payload + }) +} + +export function stampSealPython(bizId, data) { + return request({ + url: `/hrm/seal/${bizId}/stamp/python`, + method: 'post', + data + }) +} diff --git a/api/hrm/travel.js b/api/hrm/travel.js new file mode 100644 index 0000000..16007b4 --- /dev/null +++ b/api/hrm/travel.js @@ -0,0 +1,48 @@ +import request from "@/util/oaRequest" + +// 出差单 +export function listTravelReq(query) { + return request({ + url: '/hrm/travel/list', + method: 'get', + params: query + }) +} + +export function getTravelReq(bizId) { + return request({ + url: `/hrm/travel/${bizId}`, + method: 'get' + }) +} + +export function addTravelReq(data) { + return request({ + url: '/hrm/travel', + method: 'post', + data + }) +} + +export function editTravelReq(data) { + return request({ + url: '/hrm/travel', + method: 'put', + data + }) +} + +export function delTravelReq(bizIds) { + return request({ + url: `/hrm/travel/${bizIds}`, + method: 'delete' + }) +} + +export function allTravelReq(query) { + return request({ + url: '/hrm/travel/all', + method: 'get', + params: query + }) +} diff --git a/components/hrm/detailPanels/leave.vue b/components/hrm/detailPanels/leave.vue new file mode 100644 index 0000000..834e863 --- /dev/null +++ b/components/hrm/detailPanels/leave.vue @@ -0,0 +1,132 @@ + + + + + \ No newline at end of file diff --git a/components/hrm/detailPanels/reimburse.vue b/components/hrm/detailPanels/reimburse.vue new file mode 100644 index 0000000..276705f --- /dev/null +++ b/components/hrm/detailPanels/reimburse.vue @@ -0,0 +1,161 @@ + + + + + \ No newline at end of file diff --git a/components/hrm/detailPanels/seal.vue b/components/hrm/detailPanels/seal.vue new file mode 100644 index 0000000..6d93154 --- /dev/null +++ b/components/hrm/detailPanels/seal.vue @@ -0,0 +1,113 @@ + + + + + \ No newline at end of file diff --git a/components/hrm/detailPanels/travel.vue b/components/hrm/detailPanels/travel.vue new file mode 100644 index 0000000..c2ba1af --- /dev/null +++ b/components/hrm/detailPanels/travel.vue @@ -0,0 +1,148 @@ + + + + + \ No newline at end of file diff --git a/pages.json b/pages.json index ce9f362..9a44fa4 100644 --- a/pages.json +++ b/pages.json @@ -557,6 +557,34 @@ "navigationBarTitleText" : "采购需求", "navigationStyle": "default" } + }, + { + "path": "pages/workbench/hrm/approve/approve", + "style": { + "navigationBarTitleText": "办公审批", + "navigationStyle": "default" + } + }, + { + "path": "pages/workbench/hrm/cc/cc", + "style": { + "navigationBarTitleText": "抄送我的", + "navigationStyle": "default" + } + }, + { + "path": "pages/workbench/hrm/detail/detail", + "style": { + "navigationBarTitleText": "申请详情", + "navigationStyle": "default" + } + }, + { + "path": "pages/workbench/hrm/apply/apply", + "style": { + "navigationBarTitleText": "我的申请", + "navigationStyle": "default" + } } ], "tabBar": { diff --git a/pages/workbench/hrm/apply/apply.vue b/pages/workbench/hrm/apply/apply.vue new file mode 100644 index 0000000..f175399 --- /dev/null +++ b/pages/workbench/hrm/apply/apply.vue @@ -0,0 +1,627 @@ + + + + + \ No newline at end of file diff --git a/pages/workbench/hrm/approve/approve.vue b/pages/workbench/hrm/approve/approve.vue new file mode 100644 index 0000000..3ecd07b --- /dev/null +++ b/pages/workbench/hrm/approve/approve.vue @@ -0,0 +1,604 @@ + + + + + \ No newline at end of file diff --git a/pages/workbench/hrm/cc/cc.vue b/pages/workbench/hrm/cc/cc.vue new file mode 100644 index 0000000..6540cd2 --- /dev/null +++ b/pages/workbench/hrm/cc/cc.vue @@ -0,0 +1,587 @@ + + + + + \ No newline at end of file diff --git a/pages/workbench/hrm/detail/detail.vue b/pages/workbench/hrm/detail/detail.vue new file mode 100644 index 0000000..3c43b17 --- /dev/null +++ b/pages/workbench/hrm/detail/detail.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/pages/workbench/hrm/leave/leave.vue b/pages/workbench/hrm/leave/leave.vue new file mode 100644 index 0000000..1f29314 --- /dev/null +++ b/pages/workbench/hrm/leave/leave.vue @@ -0,0 +1,946 @@ + + + + + \ No newline at end of file diff --git a/pages/workbench/hrm/reimburse/reimburse.vue b/pages/workbench/hrm/reimburse/reimburse.vue new file mode 100644 index 0000000..87b6899 --- /dev/null +++ b/pages/workbench/hrm/reimburse/reimburse.vue @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file diff --git a/pages/workbench/hrm/seal/seal.vue b/pages/workbench/hrm/seal/seal.vue new file mode 100644 index 0000000..87b6899 --- /dev/null +++ b/pages/workbench/hrm/seal/seal.vue @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file diff --git a/pages/workbench/hrm/travel/travel.vue b/pages/workbench/hrm/travel/travel.vue new file mode 100644 index 0000000..87b6899 --- /dev/null +++ b/pages/workbench/hrm/travel/travel.vue @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file diff --git a/pages/workbench/index/index.vue b/pages/workbench/index/index.vue index 9fb0bbf..b9007cb 100644 --- a/pages/workbench/index/index.vue +++ b/pages/workbench/index/index.vue @@ -121,6 +121,24 @@ export default { url: '/pages/workbench/notice/notice', category: '信息中心' }, + { + text: '我的代办', + icon: '/static/images/todo.png', + url: '/pages/workbench/hrm/approve/approve', + category: '办公管理' + }, + { + text: '抄送我的', + icon: '/static/images/cc.png', + url: '/pages/workbench/hrm/cc/cc', + category: '办公管理' + }, + { + text: '我的申请', + icon: '/static/images/hrm_apply.png', + url: '/pages/workbench/hrm/apply/apply', + category: '办公管理' + }, { text: '库存盘点', icon: '/static/images/stock.png', @@ -171,12 +189,7 @@ export default { url: '/pages/workbench/wms/out', category: '库房管理', }, - // { - // text: '我的申请', - // icon: '/static/images/apply.png', - // url: '/pages/workbench/workflow/apply/apply', - // category: '办公流程' - // }, + // { // text: '代办任务', // icon: '/static/images/todo.png', @@ -234,9 +247,11 @@ export default { uni.showLoading() console.log('开始调用getUserProfile API'); const response = await getUserProfile(); + // console.log('用户个人信息:', response); // 从接口返回数据中提取用户权限(roleKey) const roles = response.data.user?.roles?.map(item => item.roleKey) || []; + this.$store.commit('oa/SET_STATE', response.data.user) console.log('用户权限字段', roles); this.roleGroup = roles; uni.hideLoading() diff --git a/static/images/cc.png b/static/images/cc.png new file mode 100644 index 0000000000000000000000000000000000000000..d55b90a7d35b9fa44af6a2a311bc1d004132d050 GIT binary patch literal 7119 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 U&w0E$&9VUJOe~G7joe8818=+cM*si- literal 0 HcmV?d00001 diff --git a/store/getters.js b/store/getters.js index df90596..458675c 100644 --- a/store/getters.js +++ b/store/getters.js @@ -19,4 +19,6 @@ export default { storeReinstall: (state) => state.user.reinstall, storeProgress: (state) => state.user.progress, storeAuthData: (state) => state.user.authData, + storeOaId: (state) => state.oa.id, + storeOaName: (state) => state.oa.userName, }; diff --git a/store/index.js b/store/index.js index c967061..cb79da2 100644 --- a/store/index.js +++ b/store/index.js @@ -6,6 +6,7 @@ import conversation from "./modules/conversation"; import message from "./modules/message"; import cache from './modules/cache.js' import getters from "./getters"; +import oa from './modules/oa.js' Vue.use(Vuex); @@ -15,7 +16,8 @@ const store = new Vuex.Store({ contact, conversation, message, - cache + cache, + oa }, getters, }); diff --git a/store/modules/oa.js b/store/modules/oa.js new file mode 100644 index 0000000..d4b1659 --- /dev/null +++ b/store/modules/oa.js @@ -0,0 +1,24 @@ +const state = { + id: undefined, + nickName: undefined, + userName: undefined, + roles: [], + dept: undefined, +} + +const mutations = { + SET_STATE(state, value) { + state.id = value.userId; + state.nickName = value.nickName; + state.userName = value.userName; + state.dept = value.dept.deptName; + }, +} + +export default { + namespaced: true, + state, + mutations, +}; + +