diff --git a/web/src/api/xg/xgss/holidayStay/holidayStay/index-sg.ts b/web/src/api/xg/xgss/holidayStay/holidayStay/index-sg.ts index d759cec3..a7f1ab81 100644 --- a/web/src/api/xg/xgss/holidayStay/holidayStay/index-sg.ts +++ b/web/src/api/xg/xgss/holidayStay/holidayStay/index-sg.ts @@ -83,12 +83,14 @@ export const getStudentOptions = ( /** * 查询单人留宿有效数据 * 获取所有有效的假期留宿数据,筛选出在同一时间段内该宿舍只有一个学生留宿的记录 + * @param query 查询参数,支持宿管员权限过滤 * @returns 单人留宿有效数据列表 */ -export const getSinglePersonValidStay = (): AxiosPromise => { +export const getSinglePersonValidStay = (query?: any): AxiosPromise => { return request({ url: '/holidayStay/holidayStay/singlePersonValidStay', - method: 'get' + method: 'get', + params: query }); }; diff --git a/web/src/views/xg/xgss/holidayStay/holidayStay/index-sg.vue b/web/src/views/xg/xgss/holidayStay/holidayStay/index-sg.vue index b159c075..711a62d6 100644 --- a/web/src/views/xg/xgss/holidayStay/holidayStay/index-sg.vue +++ b/web/src/views/xg/xgss/holidayStay/holidayStay/index-sg.vue @@ -1864,7 +1864,38 @@ const getSinglePersonValidStayData = async () => { singlePersonLoading.value = true; try { console.log('开始获取单人留宿有效数据...'); - const res = await getSinglePersonValidStay(); + + // 确保用户信息已加载 + if (!userStore.userId) { + await userStore.getInfo(); + } + + // 获取宿管员权限楼栋列表 + const buildingIds = await getDormManagerBuildingIds(); + + // 如果没有宿管员权限,直接返回空列表 + if (!hasDormManagerPermission.value || buildingIds.length === 0) { + singlePersonStayList.value = []; + groupedSinglePersonStayList.value = {}; + console.log('当前用户没有宿管员权限或没有分配管理楼栋,单人留宿数据为空'); + return; + } + + // 构建请求参数,添加宿管员权限过滤 + const requestParams: any = {}; + + // 宿管员权限过滤:添加楼栋ID过滤条件 + if (buildingIds.length === 1) { + // 单个楼栋直接设置buildingId + requestParams.buildingId = buildingIds[0]; + } else { + // 多个楼栋使用in查询,通过params传递 + requestParams.params = { + buildingIds: buildingIds.join(',') + }; + } + + const res = await getSinglePersonValidStay(requestParams); console.log('单人留宿数据响应:', res); if (res.code === 200) { diff --git a/web/src/views/xg/xgss/xsssgly/components/AdminDialog.vue b/web/src/views/xg/xgss/xsssgly/components/AdminDialog.vue index 67de5a08..fc6c8e33 100644 --- a/web/src/views/xg/xgss/xsssgly/components/AdminDialog.vue +++ b/web/src/views/xg/xgss/xsssgly/components/AdminDialog.vue @@ -7,7 +7,7 @@