提交代码

This commit is contained in:
zlwu committed 2025-09-09 00:25:49 +08:00
1 parent 8ddd3a0d09
commit 9ae3f78a26
3 files changed
+60 -8

No files matched your search

@@ -83,12 +83,14 @@ export const getStudentOptions = (
/**
* 查询单人留宿有效数据
* 获取所有有效的假期留宿数据,筛选出在同一时间段内该宿舍只有一个学生留宿的记录
* @param query 查询参数,支持宿管员权限过滤
* @returns 单人留宿有效数据列表
*/
export const getSinglePersonValidStay = (): AxiosPromise<HolidayStayVO[]> => {
export const getSinglePersonValidStay = (query?: any): AxiosPromise<HolidayStayVO[]> => {
return request({
url: '/holidayStay/holidayStay/singlePersonValidStay',
method: 'get'
method: 'get',
params: query
});
};
@@ -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) {
@@ -7,7 +7,7 @@
</template>
<template v-else>
<el-select
v-model="form.name"
v-model="selectedTeacherId"
filterable
remote
reserve-keyword
@@ -75,6 +75,7 @@ export default defineComponent({
setup(props, { emit }) {
const loading = ref(false);
const teacherOptions = ref<any[]>([]);
const selectedTeacherId = ref(''); // 专门用于下拉框选择的字段
// 根据类型获取对话框标题
const getDialogTitle = () => {
@@ -142,7 +143,7 @@ export default defineComponent({
teacherOptions.value = res.data.map((item: any) => {
return {
value: item.value,
label: item.label,
label: item.username ? `${item.label}(${item.username})` : item.label,
username: item.username,
nickName: item.label,
userId: item.value, // 直接使用API返回的value作为userId
@@ -171,11 +172,28 @@ export default defineComponent({
// 确保性别值为数字类型
form.sex = Number(form.sex);
}
// 在编辑模式下,设置选中的教师ID
if (props.mode === 'edit' && newVal.userId) {
selectedTeacherId.value = newVal.userId;
}
}
},
{ deep: true, immediate: true }
);
// 监听选择的教师ID变化
watch(selectedTeacherId, (newVal) => {
if (!newVal) {
// 清空选择时重置相关字段
form.userId = null;
form.name = '';
form.nickName = '';
form.phone = '';
form.sex = 0;
form.remark = '';
}
});
// 选择教师后处理逻辑
const handleTeacherSelect = (value: any) => {
const selectedTeacher = teacherOptions.value.find((item) => item.value === value);
@@ -186,7 +204,7 @@ export default defineComponent({
// 确保性别值为数字类型
form.sex = selectedTeacher.sex !== undefined ? Number(selectedTeacher.sex) : 0;
form.nickName = selectedTeacher.nickName;
form.name = selectedTeacher.label;
form.name = selectedTeacher.nickName; // 存储纯粹的姓名
// form.id = selectedTeacher.userId;
form.remark = '';
console.log('选中教师信息:', selectedTeacher, '转换后性别值:', form.sex);
@@ -218,7 +236,7 @@ export default defineComponent({
teacherOptions.value = res.data.map((item: any) => {
return {
value: item.value,
label: item.label,
label: item.username ? `${item.label}(${item.username})` : item.label,
username: item.username,
userId: item.value,
nickName: item.label,
@@ -258,7 +276,7 @@ export default defineComponent({
teacherOptions.value = res.data.map((item: any) => {
return {
value: item.value,
label: item.label,
label: item.username ? `${item.label}(${item.username})` : item.label,
username: item.username,
userId: item.value,
nickName: item.label,
@@ -337,6 +355,7 @@ export default defineComponent({
formRef,
loading,
teacherOptions,
selectedTeacherId,
rules,
getDialogTitle,
queryTeachers,