From 86401c7753add725c2081e30237760d496f76818 Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Tue, 23 Dec 2025 23:11:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xg/controller/XgStudentMsgController.java | 11 +++ .../xg/xsjcxx/studentMsg/studentMsg/index.vue | 88 +++++++++++-------- 2 files changed, 62 insertions(+), 37 deletions(-) diff --git a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStudentMsgController.java b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStudentMsgController.java index 186c7943..f7de75c4 100644 --- a/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStudentMsgController.java +++ b/backend/ruoyi-modules/ruoyi-xg/src/main/java/org/dromara/xg/controller/XgStudentMsgController.java @@ -122,6 +122,12 @@ public class XgStudentMsgController extends BaseController { deptIdValue = requestBody.get("dept_id"); } + // 如果请求体中显式包含 dept_id 且值为 null,则按需求返回空数据 + if (requestBody.containsKey("dept_id") && requestBody.get("dept_id") == null) { + log.info("listByDeptId - 请求中 dept_id 为 null,返回空分页数据"); + return TableDataInfo.build(new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>()); + } + if (deptIdValue != null) { deptParams.put("dept_id", deptIdValue); } @@ -786,6 +792,11 @@ public class XgStudentMsgController extends BaseController { @PostMapping("/advancedSearch") public TableDataInfo advancedSearch(@RequestBody XgStudentMsgAdvancedSearchBo bo) { log.info("接收到高级检索请求,检索条件: {}", bo); + // 如果前端显式传入 deptIds 且为一个空列表,按需求直接返回空分页数据 + if (bo != null && bo.getDeptIds() != null && bo.getDeptIds().isEmpty()) { + log.info("advancedSearch - 请求中 deptIds 为空列表,返回空分页数据"); + return TableDataInfo.build(new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>()); + } return xgStudentMsgService.advancedSearch(bo); } diff --git a/web/src/views/xg/xsjcxx/studentMsg/studentMsg/index.vue b/web/src/views/xg/xsjcxx/studentMsg/studentMsg/index.vue index 8d05ba21..ed4947a0 100644 --- a/web/src/views/xg/xsjcxx/studentMsg/studentMsg/index.vue +++ b/web/src/views/xg/xsjcxx/studentMsg/studentMsg/index.vue @@ -12,27 +12,30 @@ {{ normalClassStatusLabel }} - - - + +
暂无数据
@@ -2423,20 +2426,24 @@ const getDeptTree = async () => { await rebuildDeptTree(treeData, true); return; } - console.warn('部门树数据格式不符合预期,尝试使用备选接口'); - const backup = await api.deptTreeSelect(); - const backupTree = extractDeptTreeData(backup); - if (backupTree.length > 0) { - await rebuildDeptTree(backupTree, true); - } + + // 主接口返回空数据:保持树为空,但仍需触发学生列表查询(dept_id 为 null) + rawDeptOptions.value = []; + deptOptions.value = []; + currentSelectedNode.value = null; + queryParams.deptId = undefined; + deptTreeRef.value?.setCurrentKey(undefined); + // 触发学生列表查询(允许后端根据 dept_id 为 null 返回空或全部数据) + getList(); } catch (error) { console.error('获取部门树失败:', error); - // 如果API调用失败,可以使用默认的deptTreeSelect作为备选 - const backup = await api.deptTreeSelect(); - const backupTree = extractDeptTreeData(backup); - if (backupTree.length > 0) { - await rebuildDeptTree(backupTree, true); - } + // 出错时也不要调用备选接口或使用 mock 数据,保持树为空,但仍触发学生列表查询 + rawDeptOptions.value = []; + deptOptions.value = []; + currentSelectedNode.value = null; + queryParams.deptId = undefined; + deptTreeRef.value?.setCurrentKey(undefined); + getList(); } }; @@ -2473,12 +2480,19 @@ const setDefaultRootNode = (treeData: any[]) => { // 触发数据查询 getList(); } else { - // 如果没有找到可用节点,则直接查询全部数据 - getList(); + // 如果没有找到可用节点(例如仅有占位节点或所有节点都被禁用),不要自动查询学生列表 + currentSelectedNode.value = null; + queryParams.deptId = undefined; + deptTreeRef.value?.setCurrentKey(undefined); } } else { - // 如果没有树数据,则直接查询全部数据 - getList(); + // 如果没有树数据,则保持树数据为空并且不要触发学生列表查询 + currentSelectedNode.value = null; + queryParams.deptId = undefined; + rawDeptOptions.value = []; + deptOptions.value = []; + // 清除树选择 + deptTreeRef.value?.setCurrentKey(undefined); } };