From fd72c18d4801af0c86b55a5a606ab9123bdd301c Mon Sep 17 00:00:00 2001
From: zuqijia <2924963185@qq.com>
Date: Thu, 16 Apr 2026 15:37:08 +0800
Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=E5=AE=8C=E6=88=90=E5=87=BA?=
=?UTF-8?q?=E5=B7=AE=E7=9B=AE=E7=9A=84=E5=9C=B0=E9=AB=98=E5=BE=B7=E5=9C=B0?=
=?UTF-8?q?=E5=9B=BE=E9=80=89=E6=8B=A9=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ruoyi-ui/package.json | 1 +
ruoyi-ui/public/index.html | 6 +-
ruoyi-ui/src/api/hrm/flow.js | 5 -
.../src/components/AmapCitySelect/index.vue | 306 ++++++++++++++++++
ruoyi-ui/src/views/hrm/requests/travel.vue | 8 +-
5 files changed, 316 insertions(+), 10 deletions(-)
create mode 100644 ruoyi-ui/src/components/AmapCitySelect/index.vue
diff --git a/ruoyi-ui/package.json b/ruoyi-ui/package.json
index 59b6547..3939739 100644
--- a/ruoyi-ui/package.json
+++ b/ruoyi-ui/package.json
@@ -37,6 +37,7 @@
"url": "https://gitee.com/KonBAI-Q/ruoyi-flowable-plus.git"
},
"dependencies": {
+ "@amap/amap-jsapi-loader": "^1.0.1",
"@babel/parser": "7.7.4",
"@handsontable/vue": "^15.3.0",
"@jiaminghi/data-view": "^2.10.0",
diff --git a/ruoyi-ui/public/index.html b/ruoyi-ui/public/index.html
index 4d71211..0733f44 100644
--- a/ruoyi-ui/public/index.html
+++ b/ruoyi-ui/public/index.html
@@ -10,6 +10,8 @@
<%= webpackConfig.name %>
+
+
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/hrm/requests/travel.vue b/ruoyi-ui/src/views/hrm/requests/travel.vue
index f6ffcf3..9edd6b0 100644
--- a/ruoyi-ui/src/views/hrm/requests/travel.vue
+++ b/ruoyi-ui/src/views/hrm/requests/travel.vue
@@ -65,8 +65,8 @@
-
- 请填写具体目的地,便于审批人判断出差必要性
+
+ 请通过地图或搜索选择具体城市,便于审批人判断出差必要性
出差说明
@@ -223,13 +223,15 @@ import { ccFlowTask, listFlowNode, listFlowTemplate } from '@/api/hrm/flow'
import FileUpload from '@/components/FileUpload'
import UserMultiSelect from '@/components/UserSelect/multi.vue'
import UserSelect from '@/components/UserSelect/single.vue'
+import AmapCitySelect from '@/components/AmapCitySelect/index.vue'
export default {
name: 'HrmTravelRequest',
components: {
UserSelect,
FileUpload,
- UserMultiSelect
+ UserMultiSelect,
+ AmapCitySelect
},
data () {
return {
From 5d0c0564491406928912ec22346280c38bba8ec4 Mon Sep 17 00:00:00 2001
From: zuqijia <2924963185@qq.com>
Date: Thu, 16 Apr 2026 16:22:05 +0800
Subject: [PATCH 2/4] =?UTF-8?q?feat:=20=E5=AE=8C=E6=88=90=E5=87=BA?=
=?UTF-8?q?=E5=B7=AE=E7=9B=AE=E7=9A=84=E5=9C=B0=E9=AB=98=E5=BE=B7=E5=9C=B0?=
=?UTF-8?q?=E5=9B=BE=E9=80=89=E6=8B=A9=E5=8A=9F=E8=83=BD=EF=BC=882?=
=?UTF-8?q?=EF=BC=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../controller/HrmTravelReqController.java | 9 +++++++-
ruoyi-ui/src/api/hrm/travel.js | 7 ++++++
.../src/components/AmapCitySelect/index.vue | 22 +++++++++++++------
3 files changed, 30 insertions(+), 8 deletions(-)
diff --git a/fad-hrm/src/main/java/com/ruoyi/hrm/controller/HrmTravelReqController.java b/fad-hrm/src/main/java/com/ruoyi/hrm/controller/HrmTravelReqController.java
index 0dce55d..2476c0b 100644
--- a/fad-hrm/src/main/java/com/ruoyi/hrm/controller/HrmTravelReqController.java
+++ b/fad-hrm/src/main/java/com/ruoyi/hrm/controller/HrmTravelReqController.java
@@ -11,6 +11,7 @@ import com.ruoyi.hrm.domain.bo.HrmTravelReqBo;
import com.ruoyi.hrm.domain.vo.HrmTravelReqVo;
import com.ruoyi.hrm.service.IHrmTravelReqService;
import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -31,6 +32,9 @@ public class HrmTravelReqController extends BaseController {
private final IHrmTravelReqService service;
private final IHrmTravelReqService hrmTravelReqService;
+ @Value("${fad.amap.key}")
+ private String amapKey;
+
@GetMapping("/list")
public TableDataInfo list(HrmTravelReqBo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
@@ -62,7 +66,10 @@ public class HrmTravelReqController extends BaseController {
public R earlyEnd(@PathVariable Long bizId) {
return toAjax(hrmTravelReqService.earlyEnd(bizId));
}
-
+ @GetMapping("/amapKey")
+ public R getAmapKey() {
+ return R.ok(amapKey);
+ }
@GetMapping("/all")
public R> all(HrmTravelReqBo bo) {
return R.ok(service.queryList(bo));
diff --git a/ruoyi-ui/src/api/hrm/travel.js b/ruoyi-ui/src/api/hrm/travel.js
index fc49024..4ed055e 100644
--- a/ruoyi-ui/src/api/hrm/travel.js
+++ b/ruoyi-ui/src/api/hrm/travel.js
@@ -52,3 +52,10 @@ export function earlyEndTravel(bizId) {
method: 'put'
})
}
+
+export function getAmapKey() {
+ return request({
+ url: '/hrm/travel/amapKey',
+ method: 'get'
+ })
+}
diff --git a/ruoyi-ui/src/components/AmapCitySelect/index.vue b/ruoyi-ui/src/components/AmapCitySelect/index.vue
index f25aee9..dad912e 100644
--- a/ruoyi-ui/src/components/AmapCitySelect/index.vue
+++ b/ruoyi-ui/src/components/AmapCitySelect/index.vue
@@ -88,6 +88,7 @@
\ No newline at end of file
From 1584d7e06d78926bcc99e2c3e0bf3910a56826f1 Mon Sep 17 00:00:00 2001
From: 86156 <823267011@qq.com>
Date: Fri, 17 Apr 2026 12:05:15 +0800
Subject: [PATCH 4/4] =?UTF-8?q?=E6=8F=90=E4=BA=A4app=E5=90=8C=E6=AD=A5?=
=?UTF-8?q?=E5=90=8E=E7=AB=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../service/impl/HrmFlowTaskServiceImpl.java | 53 +++++++++++++++----
.../resources/mapper/HrmEmployeeMapper.xml | 5 +-
2 files changed, 47 insertions(+), 11 deletions(-)
diff --git a/fad-hrm/src/main/java/com/ruoyi/hrm/service/impl/HrmFlowTaskServiceImpl.java b/fad-hrm/src/main/java/com/ruoyi/hrm/service/impl/HrmFlowTaskServiceImpl.java
index 73a5ce4..f2a945d 100644
--- a/fad-hrm/src/main/java/com/ruoyi/hrm/service/impl/HrmFlowTaskServiceImpl.java
+++ b/fad-hrm/src/main/java/com/ruoyi/hrm/service/impl/HrmFlowTaskServiceImpl.java
@@ -13,10 +13,12 @@ import com.ruoyi.hrm.domain.*;
import com.ruoyi.hrm.domain.bo.HrmFlowTaskBo;
import com.ruoyi.hrm.domain.bo.HrmSealStampBo;
import com.ruoyi.hrm.domain.vo.HrmFlowTaskVo;
+import com.ruoyi.hrm.domain.vo.HrmEmployeeVo;
import com.ruoyi.hrm.mapper.*;
import com.ruoyi.hrm.service.IHrmFlowTaskService;
import com.ruoyi.hrm.service.IHrmSealReqService;
import com.ruoyi.hrm.service.IHrmFlowCcService;
+import com.ruoyi.hrm.service.IHrmEmployeeService;
import com.ruoyi.hrm.domain.bo.HrmFlowCcBo;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@@ -47,6 +49,7 @@ public class HrmFlowTaskServiceImpl implements IHrmFlowTaskService {
private final HrmAppropriationReqMapper appropriationReqMapper;
private final ObjectMapper objectMapper; // Spring Boot 默认提供
private final UserService userService;
+ private final IHrmEmployeeService employeeService;
@Override
public HrmFlowTaskVo queryById(Long taskId) {
@@ -74,7 +77,7 @@ public class HrmFlowTaskServiceImpl implements IHrmFlowTaskService {
return tasks;
}
- private void fillBizData(List tasks) {
+private void fillBizData(List tasks) {
// 1. 按 bizType 分组,并收集 bizId
Map> bizIdsByType = tasks.stream()
.filter(t -> t.getBizType() != null && t.getBizId() != null)
@@ -90,19 +93,39 @@ public class HrmFlowTaskServiceImpl implements IHrmFlowTaskService {
if (bizIds.isEmpty()) return;
switch (bizType) {
case "leave":
- leaveReqMapper.selectBatchIds(bizIds).forEach(d -> bizDataMap.put("leave_" + d.getBizId(), d));
+ leaveReqMapper.selectBatchIds(bizIds).forEach(d -> {
+ Map dataMap = objectMapper.convertValue(d, Map.class);
+ fillEmpName(dataMap, d.getEmpId());
+ bizDataMap.put("leave_" + d.getBizId(), dataMap);
+ });
break;
case "travel":
- travelReqMapper.selectBatchIds(bizIds).forEach(d -> bizDataMap.put("travel_" + d.getBizId(), d));
+ travelReqMapper.selectBatchIds(bizIds).forEach(d -> {
+ Map dataMap = objectMapper.convertValue(d, Map.class);
+ fillEmpName(dataMap, d.getEmpId());
+ bizDataMap.put("travel_" + d.getBizId(), dataMap);
+ });
break;
case "seal":
- sealReqMapper.selectBatchIds(bizIds).forEach(d -> bizDataMap.put("seal_" + d.getBizId(), d));
+ sealReqMapper.selectBatchIds(bizIds).forEach(d -> {
+ Map dataMap = objectMapper.convertValue(d, Map.class);
+ fillEmpName(dataMap, d.getEmpId());
+ bizDataMap.put("seal_" + d.getBizId(), dataMap);
+ });
break;
case "reimburse":
- reimburseReqMapper.selectBatchIds(bizIds).forEach(d -> bizDataMap.put("reimburse_" + d.getBizId(), d));
+ reimburseReqMapper.selectBatchIds(bizIds).forEach(d -> {
+ Map dataMap = objectMapper.convertValue(d, Map.class);
+ fillEmpName(dataMap, d.getEmpId());
+ bizDataMap.put("reimburse_" + d.getBizId(), dataMap);
+ });
break;
case "appropriation":
- appropriationReqMapper.selectBatchIds(bizIds).forEach(d -> bizDataMap.put("appropriation_" + d.getBizId(), d));
+ appropriationReqMapper.selectBatchIds(bizIds).forEach(d -> {
+ Map dataMap = objectMapper.convertValue(d, Map.class);
+ fillEmpName(dataMap, d.getEmpId());
+ bizDataMap.put("appropriation_" + d.getBizId(), dataMap);
+ });
break;
}
});
@@ -112,13 +135,20 @@ public class HrmFlowTaskServiceImpl implements IHrmFlowTaskService {
String key = task.getBizType() + "_" + task.getBizId();
Object data = bizDataMap.get(key);
if (data != null) {
- // 将实体对象转换为 Map,方便前端使用
- Map dataMap = objectMapper.convertValue(data, Map.class);
- task.setBizData(dataMap);
+ task.setBizData((Map) data);
}
});
}
+ private void fillEmpName(Map dataMap, Long empId) {
+ if (empId != null) {
+ HrmEmployeeVo emp = employeeService.queryById(empId);
+ if (emp != null && emp.getEmpName() != null) {
+ dataMap.put("empName", emp.getEmpName());
+ }
+ }
+ }
+
@Override
@Transactional(rollbackFor = Exception.class)
@@ -416,6 +446,11 @@ public class HrmFlowTaskServiceImpl implements IHrmFlowTaskService {
if (result.getRecords() != null && !result.getRecords().isEmpty()) {
fillBizData(result.getRecords());
+ result.getRecords().forEach(task -> {
+ if (task.getAssigneeUserId() != null) {
+ task.setAssigneeNickName(userService.selectNickNameById(task.getAssigneeUserId()));
+ }
+ });
}
return TableDataInfo.build(result);
diff --git a/fad-hrm/src/main/resources/mapper/HrmEmployeeMapper.xml b/fad-hrm/src/main/resources/mapper/HrmEmployeeMapper.xml
index 04763e6..c6d8593 100644
--- a/fad-hrm/src/main/resources/mapper/HrmEmployeeMapper.xml
+++ b/fad-hrm/src/main/resources/mapper/HrmEmployeeMapper.xml
@@ -51,12 +51,13 @@
SELECT
e.emp_id, e.user_id, e.emp_no, e.emp_name, e.gender, e.mobile, e.email, e.id_no,
- e.hire_date, e.employment_type, e.status, e.dept_id, e.post_id, e.remark,
+ e.hire_date, e.employment_type, e.status, su.dept_id, e.post_id, e.remark,
e.create_by, e.create_time, e.update_by, e.update_time,
d.dept_name,
p.post_name
FROM hrm_employee e
- LEFT JOIN sys_dept d ON e.dept_id = d.dept_id AND d.del_flag = '0'
+ left join sys_user su on su.user_id = e.user_id
+ LEFT JOIN sys_dept d ON su.dept_id = d.dept_id AND d.del_flag = 0
LEFT JOIN sys_post p ON e.post_id = p.post_id
WHERE e.del_flag = 0