提交代码
This commit is contained in:
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,
|
||||
|
||||
Reference in new issue
Block a user