From 766c2b5c6940fb4373b7b8097b31d2b03aa49ac2 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期一, 10 十一月 2025 21:22:16 +0800
Subject: [PATCH] fix:优化小程序人员加载和后台用户管理中的用户加载
---
app/pages/task/create-emergency.vue | 48 +++++----
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/HospDataController.java | 8
app/api/system/user.js | 10 +
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java | 16 +++
app/pages/login.vue | 7
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml | 77 +++++++-------
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java | 8 +
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java | 8 +
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java | 65 +++++++++++++
app/pages/task/index.vue | 2
10 files changed, 179 insertions(+), 70 deletions(-)
diff --git a/app/api/system/user.js b/app/api/system/user.js
index 421afa0..1ea6103 100644
--- a/app/api/system/user.js
+++ b/app/api/system/user.js
@@ -40,7 +40,7 @@
})
}
-// 鏌ヨ鐢ㄦ埛鍒楄〃
+// 鏌ヨ鐢ㄦ埛鍒楄〃锛堝悗鍙扮鐞嗙敤锛�
export function listUser(query) {
return request({
url: '/system/user/list',
@@ -48,3 +48,11 @@
params: query
})
}
+
+// 鏌ヨ褰撳墠鐢ㄦ埛绠$悊鐨勫垎鍏徃涓嬬殑鎵�鏈夌敤鎴凤紙灏忕▼搴忕涓撶敤锛�
+export function listBranchUsers() {
+ return request({
+ url: '/system/user/branch/users',
+ method: 'get'
+ })
+}
diff --git a/app/pages/login.vue b/app/pages/login.vue
index 3f67b74..f95977e 100644
--- a/app/pages/login.vue
+++ b/app/pages/login.vue
@@ -45,7 +45,7 @@
class="wechat-login-btn cu-btn block bg-green lg round"
style="margin-top: 20rpx;">
<text class="cuIcon-wechat" style="margin-right: 10rpx;"></text>
- 寰俊涓�閿櫥褰�
+ 鎵嬫満鍙风爜蹇嵎鐧诲綍
</button>
<button
v-else-if="isWechat"
@@ -54,7 +54,7 @@
class="wechat-login-btn cu-btn block bg-green lg round"
style="margin-top: 20rpx;">
<text class="cuIcon-wechat" style="margin-right: 10rpx;"></text>
- 寰俊涓�閿櫥褰�
+ 鎵嬫満鍙风爜蹇嵎鐧诲綍
</button>
<!-- #endif -->
</view>
@@ -181,8 +181,9 @@
// 浠庢湰鍦板瓨鍌ㄤ腑鑾峰彇OpenID鍜孶nionID
const savedOpenId = uni.getStorageSync('wechat_openid')
const savedUnionId = uni.getStorageSync('wechat_unionid')
+ const autoLogin=false;
- if (savedOpenId) {
+ if (savedOpenId && autoLogin) {
console.log('妫�娴嬪埌宸蹭繚瀛樼殑OpenID锛屽皾璇曡嚜鍔ㄧ櫥褰�')
this.wechatOpenId = savedOpenId
this.wechatUnionId = savedUnionId // 鍙兘涓簄ull
diff --git a/app/pages/task/create-emergency.vue b/app/pages/task/create-emergency.vue
index 9621a62..933ece3 100644
--- a/app/pages/task/create-emergency.vue
+++ b/app/pages/task/create-emergency.vue
@@ -507,7 +507,7 @@
import { listAvailableVehicles, getUserBoundVehicle } from "@/api/vehicle"
import { calculateDistance, baiduDistanceByAddress, baiduPlaceSuggestion } from "@/api/map"
import { searchHospitals, getFrequentOutHospitals, getFrequentInHospitals, searchHospitalsByDeptRegion } from "@/api/hospital"
-import { listUser } from "@/api/system/user"
+import { listBranchUsers } from "@/api/system/user"
import { searchIcd10 } from "@/api/icd10"
import { getDicts } from "@/api/dict"
@@ -810,7 +810,7 @@
switch(staffType){
case "nurse":
return "鎶ゅ+";
- case "doctor":
+ case "doctor":
return "鍖荤敓";
case "driver":
return "鍙告満";
@@ -1246,24 +1246,14 @@
// 鍔犺浇褰撳墠鐢ㄦ埛鎵�鍦ㄥ垎鍏徃鐨勬墍鏈変汉鍛�
loadDeptStaff() {
- const deptId = this.currentUser.deptId
- if (!deptId) {
- console.error('鏃犳硶鑾峰彇褰撳墠鐢ㄦ埛鎵�鍦ㄩ儴闂�')
- this.$modal.showToast('鏃犳硶鑾峰彇鎵�鍦ㄩ儴闂ㄤ俊鎭�')
- return
- }
+ console.log('寮�濮嬪姞杞戒汉鍛樺垪琛�')
- // 鐩存帴鏌ヨ褰撳墠鐢ㄦ埛閮ㄩ棬涓嬬殑鎵�鏈夌敤鎴�
- // 鍚庣SQL浼氳嚜鍔ㄥ鐞嗭細濡傛灉浼犲叆鐨勬槸瀛愰儴闂紝浼氭煡鎵惧叾鎵�灞炵殑鍒嗗叕鍙稿強鍏舵墍鏈夊瓙閮ㄩ棬鐨勭敤鎴�
- const queryParams = {
- deptId: deptId,
- status: '0', // 鍙煡璇㈡甯哥姸鎬佺殑鐢ㄦ埛
- pageNum: 1,
- pageSize: 10000 // 璁剧疆瓒冲澶х殑椤甸潰澶у皬锛岃幏鍙栨墍鏈夌敤鎴�
- }
-
- listUser(queryParams).then(response => {
- const userList = response.rows || response.data || []
+ // 璋冪敤鏂版帴鍙o紝鑷姩鏍规嵁褰撳墠鐢ㄦ埛鐨刼aOrderClass鑾峰彇鍒嗗叕鍙镐笅鐨勭敤鎴�
+ listBranchUsers().then(response => {
+ console.log('浜哄憳鍒楄〃API鍝嶅簲:', response)
+ const userList = response.data || []
+ console.log('瑙f瀽鍑虹殑鐢ㄦ埛鍒楄〃:', userList, '鏁伴噺:', userList.length)
+
this.allStaffList = userList.map(user => ({
userId: user.userId,
nickName: user.nickName,
@@ -1274,6 +1264,8 @@
// 鏍规嵁宀椾綅鍚嶇О鎴栬鑹插悕绉板垽鏂被鍨�
type: this.getUserType(user)
}))
+
+ console.log('澶勭悊鍚庣殑浜哄憳鍒楄〃:', this.allStaffList, '鏁伴噺:', this.allStaffList.length)
// 鍒濆鍖栬繃婊ゅ垪琛�
this.filterStaffList()
@@ -1293,14 +1285,18 @@
if (postName.includes('鍙告満') || roleName.includes('鍙告満') || deptName.includes('杞﹂槦') || deptName.includes('鍙告満')) {
return 'driver'
}
- // 鍒ゆ柇鏄惁涓哄尰鐢�
- if (postName.includes('鍖荤敓') || roleName.includes('鍖荤敓') || deptName.includes('鍖荤敓')) {
- return 'doctor'
- }
// 鍒ゆ柇鏄惁涓烘姢澹�
if (postName.includes('鎶ゅ+') || roleName.includes('鎶ゅ+') || deptName.includes('鎶ゅ+')) {
return 'nurse'
}
+ // 鍒ゆ柇鏄惁涓哄尰鐢�
+ if (postName.includes('鍖荤敓') || roleName.includes('鍖荤敓') || deptName.includes('鍖荤敓') ) {
+ return 'doctor'
+ }
+ if( deptName.includes("鍖绘姢")){
+ return 'doctor'
+ }
+
// 鍏朵粬绫诲瀷锛岄粯璁や负鍙告満
return 'driver'
},
@@ -1332,6 +1328,7 @@
// 杩囨护浜哄憳鍒楄〃
filterStaffList() {
+ console.log('寮�濮嬭繃婊や汉鍛樺垪琛紝鍘熷鏁伴噺:', this.allStaffList.length)
let list = [...this.allStaffList]
// 鎸夌被鍨嬭繃婊�
@@ -1343,6 +1340,8 @@
list = list.filter(staff => staff.type === 'nurse')
}
+ console.log('鎸夌被鍨嬭繃婊ゅ悗:', this.staffFilterType, '鏁伴噺:', list.length)
+
// 鎸夊叧閿瘝鎼滅储
if (this.staffSearchKeyword && this.staffSearchKeyword.trim() !== '') {
const keyword = this.staffSearchKeyword.trim().toLowerCase()
@@ -1352,7 +1351,10 @@
})
}
+ console.log('鎸夊叧閿瘝杩囨护鍚庯紝鏁伴噺:', list.length)
+
this.filteredStaffList = list
+ console.log('鏈�缁堣繃婊ょ粨鏋�:', this.filteredStaffList)
},
// 鍒囨崲浜哄憳閫変腑鐘舵��
diff --git a/app/pages/task/index.vue b/app/pages/task/index.vue
index c25c86a..0358e7f 100644
--- a/app/pages/task/index.vue
+++ b/app/pages/task/index.vue
@@ -434,7 +434,7 @@
this.loadTaskList()
setTimeout(() => {
this.refreshing = false
- this.$modal.showToast('鍒楄〃宸插埛鏂�');
+ // this.$modal.showToast('鍒楄〃宸插埛鏂�');
// 鍋滄涓嬫媺鍒锋柊
uni.stopPullDownRefresh()
}, 1000)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/HospDataController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/HospDataController.java
index ca8d171..085cdc4 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/HospDataController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/HospDataController.java
@@ -44,15 +44,15 @@
List<HospData> list;
// 濡傛灉keyword涓虹┖锛屼娇鐢ㄩ儴闂ㄥ尯鍩熻繃婊ゆ煡璇�
- if (keyword == null || keyword.trim().isEmpty()) {
+ if (keyword == null || keyword=="") {
if (deptId != null) {
- list = hospDataMapper.searchHospitalsByDeptRegion(null, deptId);
+ list = hospDataMapper.searchHospitalsByDeptRegion("", deptId);
} else {
- list = hospDataMapper.searchHospitals(null, null);
+ list = hospDataMapper.searchHospitals("", "");
}
} else {
- list = hospDataMapper.searchHospitals(keyword, null);
+ list = hospDataMapper.searchHospitals(keyword, "");
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
index fa50273..a4c6be3 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -252,4 +252,69 @@
{
return success(deptService.selectDeptTreeList(dept));
}
+
+ /**
+ * 鑾峰彇褰撳墠鐢ㄦ埛绠$悊鐨勫垎鍏徃涓嬬殑鎵�鏈夌敤鎴凤紙灏忕▼搴忕涓撶敤锛�
+ * 鏍规嵁褰撳墠鐢ㄦ埛鐨刼aOrderClass瀛楁鍖归厤鍒嗗叕鍙革紝杩斿洖杩欎簺鍒嗗叕鍙稿強鍏舵墍鏈夊瓙閮ㄩ棬鐨勭敤鎴�
+ */
+ @GetMapping("/branch/users")
+ public AjaxResult listBranchUsers()
+ {
+ // 鑾峰彇褰撳墠鐢ㄦ埛
+ SysUser currentUser = userService.selectUserById(getUserId());
+ if (currentUser == null) {
+ return error("鐢ㄦ埛涓嶅瓨鍦�");
+ }
+
+ // 鑾峰彇褰撳墠鐢ㄦ埛绠$悊鐨勫垎鍏徃ID鍒楄〃
+ String oaOrderClass = currentUser.getOaOrderClass();
+ List<Long> branchDeptIds = new java.util.ArrayList<>();
+
+ if (StringUtils.isNotEmpty(oaOrderClass)) {
+ // 鏍规嵁oaOrderClass鏌ヨ鍖归厤鐨勫垎鍏徃
+ String[] orderCodes = oaOrderClass.split(",");
+ SysDept queryDept = new SysDept();
+ queryDept.setParentId(100L); // 鍙煡璇㈠垎鍏徃
+ List<SysDept> allBranches = deptService.selectDeptList(queryDept);
+
+ for (SysDept branch : allBranches) {
+ for (String code : orderCodes) {
+ // 鍖归厤serviceOrderClass鎴杁ispatchOrderClass
+ if ((StringUtils.isNotEmpty(branch.getServiceOrderClass()) && branch.getServiceOrderClass().equals(code.trim()))
+ || (StringUtils.isNotEmpty(branch.getDispatchOrderClass()) && branch.getDispatchOrderClass().equals(code.trim()))) {
+ branchDeptIds.add(branch.getDeptId());
+ break;
+ }
+ }
+ }
+ }
+
+ // 濡傛灉娌℃湁鎵惧埌鍖归厤鐨勫垎鍏徃锛屼娇鐢ㄥ綋鍓嶇敤鎴锋墍鍦ㄩ儴闂�
+ if (branchDeptIds.isEmpty()) {
+ Long userDeptId = currentUser.getDeptId();
+ if (userDeptId != null) {
+ // 鏌ユ壘鐢ㄦ埛鎵�鍦ㄩ儴闂ㄧ殑鐖剁骇鍒嗗叕鍙�
+ SysDept userDept = deptService.selectDeptById(userDeptId);
+ if (userDept != null) {
+ // 鍚戜笂鏌ユ壘鐩村埌鎵惧埌parent_id=100鐨勫垎鍏徃
+ while (userDept != null && userDept.getParentId() != 100L) {
+ userDept = deptService.selectDeptById(userDept.getParentId());
+ }
+ if (userDept != null && userDept.getParentId() == 100L) {
+ branchDeptIds.add(userDept.getDeptId());
+ }
+ }
+ }
+ }
+
+ // 濡傛灉杩樻槸娌℃湁鎵惧埌锛岃繑鍥炵┖鍒楄〃
+ if (branchDeptIds.isEmpty()) {
+ return success(new java.util.ArrayList<>());
+ }
+
+ // 鏌ヨ杩欎簺鍒嗗叕鍙稿強鍏舵墍鏈夊瓙閮ㄩ棬鐨勭敤鎴�
+ List<SysUser> users = userService.selectUsersByBranchDeptIds(branchDeptIds);
+
+ return success(users);
+ }
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
index c6a30d0..e67ea91 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
@@ -147,4 +147,12 @@
* @return 鐢ㄦ埛瀵硅薄淇℃伅
*/
public SysUser selectUserByOpenId(@Param("openId") String openId);
+
+ /**
+ * 鏍规嵁鍒嗗叕鍙窱D鍒楄〃鏌ヨ鐢ㄦ埛锛堝寘鍚垎鍏徃鍙婂叾鎵�鏈夊瓙閮ㄩ棬鐨勭敤鎴凤級
+ *
+ * @param branchDeptIds 鍒嗗叕鍙窱D鍒楄〃
+ * @return 鐢ㄦ埛鍒楄〃
+ */
+ public List<SysUser> selectUsersByBranchDeptIds(@Param("branchDeptIds") List<Long> branchDeptIds);
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
index 43a0ec4..3b50ba7 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
@@ -219,4 +219,12 @@
* @return 缁撴灉
*/
public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName);
+
+ /**
+ * 鏍规嵁鍒嗗叕鍙窱D鍒楄〃鏌ヨ鐢ㄦ埛锛堝寘鍚垎鍏徃鍙婂叾鎵�鏈夊瓙閮ㄩ棬鐨勭敤鎴凤級
+ *
+ * @param branchDeptIds 鍒嗗叕鍙窱D鍒楄〃
+ * @return 鐢ㄦ埛鍒楄〃
+ */
+ public List<SysUser> selectUsersByBranchDeptIds(List<Long> branchDeptIds);
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index e6eb938..a302044 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -621,4 +621,20 @@
}
return successMsg.toString();
}
+
+ /**
+ * 鏍规嵁鍒嗗叕鍙窱D鍒楄〃鏌ヨ鐢ㄦ埛锛堝寘鍚垎鍏徃鍙婂叾鎵�鏈夊瓙閮ㄩ棬鐨勭敤鎴凤級
+ *
+ * @param branchDeptIds 鍒嗗叕鍙窱D鍒楄〃
+ * @return 鐢ㄦ埛鍒楄〃
+ */
+ @Override
+ public List<SysUser> selectUsersByBranchDeptIds(List<Long> branchDeptIds)
+ {
+ if (branchDeptIds == null || branchDeptIds.isEmpty()) {
+ return new ArrayList<>();
+ }
+
+ return userMapper.selectUsersByBranchDeptIds(branchDeptIds);
+ }
}
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index 206df95..dbe2adc 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -81,44 +81,11 @@
AND date_format(u.create_time,'%Y%m%d') <= date_format(#{params.endTime},'%Y%m%d')
</if>
<if test="deptId != null and deptId != 0">
- <![CDATA[
- AND u.dept_id IN (
- -- 鏌ヨ鐢ㄦ埛鎵�灞炲垎鍏徃鍙婂叾鎵�鏈夊瓙閮ㄩ棬
- SELECT t.dept_id FROM sys_dept t
- WHERE t.del_flag = '0' AND (
- -- 鎯呭喌1锛氫紶鍏ョ殑閮ㄩ棬灏辨槸鍒嗗叕鍙�(parent_id=100)
- (t.dept_id = ]]>#{deptId}<![CDATA[ AND EXISTS (
- SELECT 1 FROM sys_dept d WHERE d.dept_id = ]]>#{deptId}<![CDATA[ AND d.parent_id = 100
- ))
- OR
- -- 鏌ヨ璇ュ垎鍏徃鐨勬墍鏈夊瓙閮ㄩ棬
- (find_in_set(
- (SELECT d.dept_id FROM sys_dept d WHERE d.dept_id = ]]>#{deptId}<![CDATA[ AND d.parent_id = 100),
- t.ancestors
- ) > 0)
- OR
- -- 鎯呭喌2锛氫紶鍏ョ殑鏄瓙閮ㄩ棬锛屾壘鍒板叾鎵�灞炲垎鍏徃
- (t.dept_id IN (
- SELECT branch.dept_id FROM sys_dept branch
- WHERE branch.parent_id = 100
- AND find_in_set(branch.dept_id, (
- SELECT sub.ancestors FROM sys_dept sub WHERE sub.dept_id = ]]>#{deptId}<![CDATA[
- )) > 0
- ))
- OR
- -- 鏌ヨ璇ュ垎鍏徃鐨勬墍鏈夊瓙閮ㄩ棬
- (find_in_set(
- (SELECT branch.dept_id FROM sys_dept branch
- WHERE branch.parent_id = 100
- AND find_in_set(branch.dept_id, (
- SELECT sub.ancestors FROM sys_dept sub WHERE sub.dept_id = ]]>#{deptId}<![CDATA[
- )) > 0
- ),
- t.ancestors
- ) > 0)
- )
- )
- ]]>
+ -- 鏌ヨ鎸囧畾閮ㄩ棬鍙婂叾鎵�鏈夊瓙閮ㄩ棬鐨勭敤鎴�
+ AND (u.dept_id = #{deptId} OR u.dept_id IN (
+ SELECT dept_id FROM sys_dept
+ WHERE del_flag = '0' AND find_in_set(#{deptId}, ancestors) > 0
+ ))
</if>
<!-- 鏁版嵁鑼冨洿杩囨护 -->
${params.dataScope}
@@ -283,4 +250,38 @@
where u.open_id = #{openId} and u.del_flag = '0'
</select>
+ <!-- 鏍规嵁鍒嗗叕鍙窱D鍒楄〃鏌ヨ鐢ㄦ埛锛堝寘鍚垎鍏徃鍙婂叾鎵�鏈夊瓙閮ㄩ棬鐨勭敤鎴凤級 -->
+ <select id="selectUsersByBranchDeptIds" resultMap="SysUserResult">
+ SELECT DISTINCT
+ u.user_id, u.dept_id, u.user_name, u.nick_name, u.email,
+ u.avatar, u.phonenumber, u.sex, u.status, u.del_flag,
+ d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
+ r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
+ FROM sys_user u
+ LEFT JOIN sys_dept d ON u.dept_id = d.dept_id
+ LEFT JOIN sys_user_role ur ON u.user_id = ur.user_id
+ LEFT JOIN sys_role r ON r.role_id = ur.role_id
+ WHERE u.del_flag = '0'
+ AND u.status = '0'
+ AND u.dept_id IN (
+ -- 鏌ヨ鍒嗗叕鍙稿強鍏舵墍鏈夊瓙閮ㄩ棬
+ SELECT t.dept_id
+ FROM sys_dept t
+ WHERE t.del_flag = '0'
+ AND (
+ -- 鍒嗗叕鍙告湰韬�
+ t.dept_id IN
+ <foreach collection="branchDeptIds" item="deptId" open="(" separator="," close=")">
+ #{deptId}
+ </foreach>
+ OR
+ -- 鍒嗗叕鍙哥殑瀛愰儴闂紙閫氳繃ancestors瀛楁鍖归厤锛�
+ <foreach collection="branchDeptIds" item="deptId" open="(" separator=" OR " close=")">
+ find_in_set(#{deptId}, t.ancestors) > 0
+ </foreach>
+ )
+ )
+ ORDER BY u.create_time DESC
+ </select>
+
</mapper>
\ No newline at end of file
--
Gitblit v1.9.1