提交代码

This commit is contained in:
zlwu committed 2025-08-25 01:25:04 +08:00
1 parent 6bffe5fa08
commit 900ca0ad19
11 files changed
+791 -45

No files matched your search

+262 -2
View File
@@ -581,8 +581,30 @@
</view>
</view>
<view class="info-item">
<text class="label">宿舍房间号</text>
<text class="value">{{ form.dormitoryRoom || '-' }}</text>
<text class="label">宿舍房间</text>
<view class="value">
<view v-if="roomDisplayName" class="room-info">
<u-tag
:text="roomDisplayName"
:type="getRoomTagType(form.dormitoryRoom)"
size="mini"
></u-tag>
</view>
<text v-else>-</text>
</view>
</view>
<view class="info-item">
<text class="label">床位</text>
<view class="value">
<view v-if="bedDisplayName" class="bed-info">
<u-tag
:text="bedDisplayName"
:type="getBedTagType(form.extField1)"
size="mini"
></u-tag>
</view>
<text v-else>-</text>
</view>
</view>
</view>
</view>
@@ -724,6 +746,7 @@ export default {
classTeacherName: '',
dormitoryBuilding: '',
dormitoryRoom: '',
extField1: '', // 新增床位信息字段
// 银行卡信息字段
bankCardNo: '',
@@ -751,6 +774,14 @@ export default {
// 行政区划和宿舍楼栋数据
regionOptions: [],
dormBuildingOptions: [],
// 房间和床位数据
dormRoomOptions: [],
dormBedOptions: [],
// 显示名称(异步加载)
roomDisplayName: '',
bedDisplayName: '',
};
},
@@ -770,6 +801,13 @@ export default {
console.error('区域和宿舍数据加载出错:', error);
}
try {
await this.loadDormRoomAndBedData();
console.log('✓ 房间和床位数据加载完成');
} catch (error) {
console.error('房间和床位数据加载出错:', error);
}
try {
await this.getPersonalInfoData();
console.log('✓ 个人信息加载完成');
@@ -1224,6 +1262,33 @@ export default {
});
},
// 加载房间和床位数据(改为按需加载)
async loadDormRoomAndBedData() {
console.log('房间和床位数据改为按需加载模式,不再预加载所有数据');
// 初始化空数组,数据将在需要时按需查询
this.dormRoomOptions = [];
this.dormBedOptions = [];
},
// 异步加载房间和床位显示名称
async loadRoomAndBedDisplayNames() {
try {
// 加载房间名称
if (this.form.dormitoryRoom) {
this.roomDisplayName = await this.getRoomName(this.form.dormitoryRoom);
console.log('房间名称加载完成:', this.roomDisplayName);
}
// 加载床位名称
if (this.form.extField1) {
this.bedDisplayName = await this.getBedName(this.form.extField1);
console.log('床位名称加载完成:', this.bedDisplayName);
}
} catch (error) {
console.error('加载房间和床位显示名称失败:', error);
}
},
// 获取学生个人信息
async getPersonalInfoData() {
try {
@@ -1257,6 +1322,17 @@ export default {
// 将API返回的数据映射到表单
Object.assign(this.form, data);
// 调试日志:检查宿舍相关字段
console.log('宿舍信息字段检查:', {
dormitoryBuilding: this.form.dormitoryBuilding,
dormitoryRoom: this.form.dormitoryRoom,
extField1: this.form.extField1,
extField1Type: typeof this.form.extField1,
});
// 异步加载房间和床位信息
await this.loadRoomAndBedDisplayNames();
} else {
uni.showToast({
title: response.msg || '获取个人信息失败',
@@ -1468,6 +1544,178 @@ export default {
return findBuilding(this.dormBuildingOptions, buildingId);
},
// 根据房间ID获取房间名称(含性别标识)
async getRoomName(roomId) {
// 防护性检查
if (!roomId) {
return '';
}
// 如果本地缓存中没有数据,则按需查询
if (!this.dormRoomOptions || this.dormRoomOptions.length === 0) {
try {
const response = await request({
url: `/xgss/dormRoom/${roomId}`,
method: 'GET',
});
if (response.code === 200 && response.data) {
const roomData = response.data;
// 缓存房间数据
if (!this.dormRoomOptions) {
this.dormRoomOptions = [];
}
this.dormRoomOptions.push(roomData);
// 返回房间名称
return roomData.roomName || roomData.name || `房间${roomId}`;
} else {
console.warn(`查询房间信息失败,房间ID: ${roomId}`);
return `房间${roomId}`;
}
} catch (error) {
console.error(`查询房间信息异常,房间ID: ${roomId}`, error);
return `房间${roomId}`;
}
}
// 从本地缓存中查找
const room = this.dormRoomOptions.find((item) => String(item.id) === String(roomId));
if (room) {
return room.roomName || room.name || `房间${roomId}`;
}
// 如果本地缓存中没有找到,则按需查询
try {
const response = await request({
url: `/xgss/dormRoom/${roomId}`,
method: 'GET',
});
if (response.code === 200 && response.data) {
const roomData = response.data;
// 缓存房间数据
this.dormRoomOptions.push(roomData);
// 返回房间名称
return roomData.roomName || roomData.name || `房间${roomId}`;
} else {
console.warn(`查询房间信息失败,房间ID: ${roomId}`);
return `房间${roomId}`;
}
} catch (error) {
console.error(`查询房间信息异常,房间ID: ${roomId}`, error);
return `房间${roomId}`;
}
},
// 根据房间ID获取房间标签类型
getRoomTagType(roomId) {
if (!roomId) {
return 'info'; // 默认类型
}
// 从本地缓存中查找
const room = this.dormRoomOptions.find((item) => String(item.id) === String(roomId));
if (room) {
// 根据房间类型设置标签类型
if (room.roomType === '1') {
// 男生房间
return 'warning';
} else if (room.roomType === '2') {
// 女生房间
return 'error';
}
}
return 'info'; // 默认类型
},
// 根据床位ID获取床位名称(含性别标识)
async getBedName(bedId) {
// 防护性检查
if (!bedId) {
return '';
}
// 如果本地缓存中没有数据,则按需查询
if (!this.dormBedOptions || this.dormBedOptions.length === 0) {
try {
const response = await request({
url: `/dormbed/dormBed/${bedId}`,
method: 'GET',
});
if (response.code === 200 && response.data) {
const bedData = response.data;
// 缓存床位数据
if (!this.dormBedOptions) {
this.dormBedOptions = [];
}
this.dormBedOptions.push(bedData);
// 返回床位名称
return bedData.bedName || bedData.name || `床位${bedId}`;
} else {
console.warn(`查询床位信息失败,床位ID: ${bedId}`);
return `床位${bedId}`;
}
} catch (error) {
console.error(`查询床位信息异常,床位ID: ${bedId}`, error);
return `床位${bedId}`;
}
}
// 从本地缓存中查找
const bed = this.dormBedOptions.find((item) => String(item.id) === String(bedId));
if (bed) {
return bed.bedName || bed.name || `床位${bedId}`;
}
// 如果本地缓存中没有找到,则按需查询
try {
const response = await request({
url: `/dormbed/dormBed/${bedId}`,
method: 'GET',
});
if (response.code === 200 && response.data) {
const bedData = response.data;
// 缓存床位数据
this.dormBedOptions.push(bedData);
// 返回床位名称
return bedData.bedName || bedData.name || `床位${bedId}`;
} else {
console.warn(`查询床位信息失败,床位ID: ${bedId}`);
return `床位${bedId}`;
}
} catch (error) {
console.error(`查询床位信息异常,床位ID: ${bedId}`, error);
return `床位${bedId}`;
}
},
// 根据床位ID获取床位标签类型
getBedTagType(bedId) {
if (!bedId) {
return 'info'; // 默认类型
}
// 从本地缓存中查找
const bed = this.dormBedOptions.find((item) => String(item.id) === String(bedId));
if (bed) {
// 根据床位类型设置标签类型
if (bed.bedType === '1') {
// 男生床位
return 'warning';
} else if (bed.bedType === '2') {
// 女生床位
return 'error';
}
}
return 'info'; // 默认类型
},
},
};
</script>
@@ -1655,6 +1903,18 @@ export default {
gap: 8rpx;
}
.room-info {
display: flex;
align-items: center;
gap: 8rpx;
}
.bed-info {
display: flex;
align-items: center;
gap: 8rpx;
}
// uview组件样式调整
::v-deep .u-tag {
margin: 0;
@@ -747,9 +747,15 @@
</text>
</view>
<view class="info-item">
<text class="label">宿舍房间号:</text>
<text class="label">宿舍房间:</text>
<text class="value">
{{ studentInfo.dormitoryRoom || '-' }}
{{ dormRoomName || '-' }}
</text>
</view>
<view class="info-item">
<text class="label">床位:</text>
<text class="value">
{{ dormBedName || '-' }}
</text>
</view>
</view>
@@ -881,6 +887,10 @@ export default {
// 新增:行政区划和宿舍楼栋数据
regionOptions: [], // 行政区划选项
dormBuildingOptions: [], // 宿舍楼栋选项
// 宿舍房间和床位显示名称
dormRoomName: '',
dormBedName: '',
};
},
@@ -1293,6 +1303,42 @@ export default {
}
},
// 获取宿舍房间名称
async getDormRoomName(roomId) {
if (!roomId) return '-';
try {
const response = await request({
url: `/xgss/dormRoom/${roomId}`,
method: 'GET',
});
if (response.code === 200 && response.data) {
return response.data.roomName || '-';
}
return roomId; // 如果没有找到,返回原始ID
} catch (error) {
console.error('获取宿舍房间名称失败:', error);
return roomId;
}
},
// 获取床位名称
async getDormBedName(bedId) {
if (!bedId) return '-';
try {
const response = await request({
url: `/dormbed/dormBed/${bedId}`,
method: 'GET',
});
if (response.code === 200 && response.data) {
return response.data.bedName || '-';
}
return bedId; // 如果没有找到,返回原始ID
} catch (error) {
console.error('获取床位名称失败:', error);
return bedId;
}
},
// 根据行政区划代码获取完整路径(省/市/区)
getRegionFullPath(code) {
if (!code || !this.regionOptions) return code || '';
@@ -1336,6 +1382,21 @@ export default {
return findBuilding(this.dormBuildingOptions, buildingId) || buildingId;
},
// 设置宿舍房间和床位显示名称
async setDormDisplayNames() {
if (this.studentInfo.dormitoryRoom) {
this.dormRoomName = await this.getDormRoomName(this.studentInfo.dormitoryRoom);
} else {
this.dormRoomName = '-';
}
if (this.studentInfo.extField1) {
this.dormBedName = await this.getDormBedName(this.studentInfo.extField1);
} else {
this.dormBedName = '-';
}
},
// 加载数据
async loadData() {
if (!this.batchInfo || !this.batchInfo.batchId) {
@@ -1407,6 +1468,9 @@ export default {
if (this.studentInfo.photoPath) {
this.loadPhoto();
}
// 设置宿舍房间和床位显示名称
await this.setDormDisplayNames();
} else {
console.log('未获取到学生信息或数据为空');
}
+121 -24
View File
@@ -77,8 +77,8 @@
</view>
</view>
<!-- 快捷操作按钮 v-if="isWechatBrowser"-->
<view class="photo-quick-actions" >
<!-- 快捷操作按钮 -->
<view class="photo-quick-actions">
<view class="placeholder-tips">
<text class="tip-item">• 建议尺寸:2寸证件照 • 支持格式:JPG、PNG • 文件大小:不超过10MB</text>
</view>
@@ -1086,20 +1086,21 @@
<u-picker
:columns="[trainingModeOptions]"
keyName="label"
:disabled="true"
:defaultIndex="trainingModeIndex"
:show="showTrainingModePicker"
:closeOnClickOverlay="true"
@confirm="onTrainingModeConfirm"
@cancel="onTrainingModeClose"
></u-picker>
<view class="picker-input" @click="showTrainingModePicker = true">
<view class="picker-input disabled">
<text class="picker-text">
{{
getDictLabel(trainingModeOptions, form.trainingType) ||
'请选择培养方式'
}}
</text>
<u-icon name="arrow-down" size="16" color="#c0c4cc"></u-icon>
<u-icon name="arrow-down" size="16" color="#e4e7ed"></u-icon>
</view>
</view>
</view>
@@ -1109,13 +1110,14 @@
<u-picker
:columns="[admissionCategoryOptions]"
keyName="label"
:disabled="true"
:defaultIndex="admissionCategoryIndex"
:show="showAdmissionCategoryPicker"
:closeOnClickOverlay="true"
@confirm="onAdmissionCategoryConfirm"
@cancel="onAdmissionCategoryClose"
></u-picker>
<view class="picker-input" @click="showAdmissionCategoryPicker = true">
<view class="picker-input disabled">
<text class="picker-text">
{{
getDictLabel(
@@ -1124,7 +1126,7 @@
) || '请选择录取类别'
}}
</text>
<u-icon name="arrow-down" size="16" color="#c0c4cc"></u-icon>
<u-icon name="arrow-down" size="16" color="#e4e7ed"></u-icon>
</view>
</view>
<view class="form-item-half">
@@ -1132,37 +1134,38 @@
<u-picker
:columns="[studentStatusOptions]"
keyName="label"
:disabled="true"
:defaultIndex="studentStatusIndex"
:show="showStudentStatusPicker"
:closeOnClickOverlay="true"
@confirm="onStudentStatusConfirm"
@cancel="onStudentStatusClose"
></u-picker>
<view class="picker-input" @click="showStudentStatusPicker = true">
<view class="picker-input disabled">
<text class="picker-text">
{{
getDictLabel(studentStatusOptions, form.studentStatus) ||
'请选择学籍状态'
}}
</text>
<u-icon name="arrow-down" size="16" color="#c0c4cc"></u-icon>
<u-icon name="arrow-down" size="16" color="#e4e7ed"></u-icon>
</view>
</view>
</view>
<view class="form-item">
<text class="form-label">是否住校</text>
<u-radio-group v-model="form.isBoarder">
<u-radio
v-for="item in yesNoOptions"
:key="item.value"
:name="item.value"
:disabled="true"
>
{{ item.label }}
</u-radio>
</u-radio-group>
</view>
<view class="form-row">
<view class="form-item-half">
<text class="form-label">是否住校</text>
<u-radio-group v-model="form.isBoarder">
<u-radio
v-for="item in yesNoOptions"
:key="item.value"
:name="item.value"
:disabled="true"
>
{{ item.label }}
</u-radio>
</u-radio-group>
</view>
<view class="form-item-half">
<text class="form-label">宿舍楼栋</text>
<u-picker
@@ -1185,11 +1188,22 @@
<u-icon name="arrow-down" size="16" color="#e4e7ed"></u-icon>
</view>
</view>
</view>
<view class="form-row">
<view class="form-item-half">
<text class="form-label">宿舍房间号</text>
<text class="form-label">宿舍房间</text>
<u-input
v-model="form.dormitoryRoom"
placeholder="请输入宿舍房间号"
:value="dormRoomName"
placeholder="宿舍房间"
:disabled="true"
border-bottom
></u-input>
</view>
<view class="form-item-half">
<text class="form-label">床位</text>
<u-input
:value="dormBedName"
placeholder="床位"
:disabled="true"
border-bottom
></u-input>
@@ -1387,6 +1401,7 @@ export default {
classTeacherName: '',
dormitoryBuilding: '',
dormitoryRoom: '',
extField1: '',
// 银行卡信息字段
bankCardNo: '',
@@ -1453,6 +1468,14 @@ export default {
showStudentStatusPicker: false,
showDormBuildingPicker: false,
showSourceRegionPicker: false,
// 缓存
roomNameCache: {},
bedNameCache: {},
// 宿舍房间和床位显示名称
dormRoomName: '',
dormBedName: '',
};
},
@@ -2106,6 +2129,9 @@ export default {
// 同步picker索引
this.syncPickerIndexes();
// 设置宿舍房间和床位显示名称
await this.setDormDisplayNames();
} else {
uni.showToast({
title: response.msg || '获取个人信息失败',
@@ -3127,6 +3153,77 @@ export default {
this.debugMode = !this.debugMode;
this.addWechatLog(`调试模式已${this.debugMode ? '开启' : '关闭'}`, 'info');
},
// 获取宿舍房间名称
async getDormRoomName(roomId) {
if (!roomId) return '-';
// 检查缓存
if (this.roomNameCache && this.roomNameCache[roomId]) {
return this.roomNameCache[roomId];
}
try {
const response = await request({
url: `/xgss/dormRoom/${roomId}`,
method: 'GET',
});
if (response.code === 200 && response.data) {
const roomName = response.data.roomName || response.data.roomCode || String(roomId);
// 缓存结果
if (!this.roomNameCache) this.roomNameCache = {};
this.roomNameCache[roomId] = roomName;
return roomName;
}
return String(roomId); // 如果没有找到,返回原始ID
} catch (error) {
console.error('获取宿舍房间名称失败:', error);
return String(roomId);
}
},
// 获取床位名称
async getDormBedName(bedId) {
if (!bedId) return '-';
// 检查缓存
if (this.bedNameCache && this.bedNameCache[bedId]) {
return this.bedNameCache[bedId];
}
try {
const response = await request({
url: `/dormbed/dormBed/${bedId}`,
method: 'GET',
});
if (response.code === 200 && response.data) {
const bedName = response.data.bedName || response.data.bedCode || String(bedId);
// 缓存结果
if (!this.bedNameCache) this.bedNameCache = {};
this.bedNameCache[bedId] = bedName;
return bedName;
}
return String(bedId); // 如果没有找到,返回原始ID
} catch (error) {
console.error('获取床位名称失败:', error);
return String(bedId);
}
},
// 设置宿舍房间和床位显示名称
async setDormDisplayNames() {
if (this.form.dormitoryRoom) {
this.dormRoomName = await this.getDormRoomName(this.form.dormitoryRoom);
} else {
this.dormRoomName = '-';
}
if (this.form.extField1) {
this.dormBedName = await this.getDormBedName(this.form.extField1);
} else {
this.dormBedName = '-';
}
},
},
};
</script>
+25 -1
View File
@@ -52,10 +52,34 @@ export function getStudentPersonalInfo(userId?: number): AxiosPromise<any> {
});
}
/**
* 获取宿舍房间信息
* @param roomId 房间ID
*/
export function getDormRoomInfo(roomId: number): AxiosPromise<R<any>> {
return request({
url: `/xgss/dormRoom/${roomId}`,
method: 'get'
});
}
/**
* 获取宿舍床位信息
* @param bedId 床位ID
*/
export function getDormBedInfo(bedId: number): AxiosPromise<R<any>> {
return request({
url: `/dormbed/dormBed/${bedId}`,
method: 'get'
});
}
export default {
XgDeptTreeSelect,
deptTreeSelect,
listStudentRoster,
exportStudentRoster,
getStudentPersonalInfo
getStudentPersonalInfo,
getDormRoomInfo,
getDormBedInfo
};
@@ -194,7 +194,6 @@
import { getCurrentInstance, ComponentInternalInstance, ref, reactive, computed, watch, onMounted, nextTick, defineAsyncComponent } from 'vue';
import ElMessage from 'element-plus/es/components/message/index';
import ElMessageBox from 'element-plus/es/components/message-box/index';
// @ts-ignore
import request from '@/utils/request';
// 动态加载StuMsgDialog组件
@@ -702,8 +702,13 @@
</el-row>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="宿舍房间号" prop="dormitoryRoom">
<el-input disabled v-model="form.dormitoryRoom" placeholder="请输入宿舍房间号" maxlength="20" />
<el-form-item label="宿舍房间" prop="dormitoryRoom">
<el-input disabled v-model="dormitoryRoomName" placeholder="宿舍房间" maxlength="20" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="床位" prop="bedInfo">
<el-input disabled v-model="bedInfo" placeholder="床位" maxlength="20" />
</el-form-item>
</el-col>
</el-row>
@@ -827,6 +832,10 @@ const dormBuildingOptions = ref([]); // 宿舍楼栋选项
const photoLoading = ref(false); // 照片加载状态
const asyncPhotoUrl = ref(''); // 异步加载的照片URL
// 宿舍房间和床位信息
const dormitoryRoomName = ref<string>('');
const bedInfo = ref<string>('');
// 历史记录相关数据
const historyLoading = ref(false);
const historyRecords = ref<any[]>([]);
@@ -1096,6 +1105,9 @@ const getUserHistoryData = async (batchId: number, userId?: number) => {
ElMessage.success('历史数据加载成功');
console.log('表单数据已更新:', form);
// 获取宿舍房间和床位信息
await getDormitoryInfo(historyData.dormitoryRoom, historyData.extField1);
} else {
console.log('未获取到历史数据或数据为空');
// 如果没有历史数据,保持表单默认值即可
@@ -1108,6 +1120,39 @@ const getUserHistoryData = async (batchId: number, userId?: number) => {
}
};
// 获取宿舍房间和床位信息
const getDormitoryInfo = async (roomId: string | number, bedId: string | number) => {
try {
// 获取宿舍房间信息
if (roomId) {
const roomRes = await request.get(`/xgss/dormRoom/${roomId}`);
if (roomRes && roomRes.code === 200 && roomRes.data) {
dormitoryRoomName.value = roomRes.data.roomName || roomRes.data.name || '未知房间';
} else {
dormitoryRoomName.value = '未知房间';
}
} else {
dormitoryRoomName.value = '';
}
// 获取床位信息
if (bedId) {
const bedRes = await request.get(`/dormbed/dormBed/${bedId}`);
if (bedRes && bedRes.code === 200 && bedRes.data) {
bedInfo.value = bedRes.data.bedName || bedRes.data.name || '未知床位';
} else {
bedInfo.value = '未知床位';
}
} else {
bedInfo.value = '';
}
} catch (error) {
console.error('获取宿舍信息失败:', error);
dormitoryRoomName.value = '获取失败';
bedInfo.value = '获取失败';
}
};
// 表单数据
const form = reactive({
id: undefined,
@@ -1350,8 +1350,13 @@
</el-row>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="宿舍房间号" prop="dormitoryRoom">
<el-input disabled v-model="form.dormitoryRoom" placeholder="请输入宿舍房间号" maxlength="20" />
<el-form-item label="宿舍房间" prop="dormitoryRoom">
<el-input disabled v-model="dormitoryRoomName" placeholder="宿舍房间" maxlength="20" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="床位" prop="bedInfo">
<el-input disabled v-model="bedInfo" placeholder="床位" maxlength="20" />
</el-form-item>
</el-col>
</el-row>
@@ -1520,6 +1525,10 @@ const changedFields = ref<any[]>([]); // 存储变更的字段信息
const asyncPhotoUrl = ref<string>('');
const photoLoading = ref<boolean>(false);
// 宿舍房间和床位信息
const dormitoryRoomName = ref<string>('');
const bedInfo = ref<string>('');
const studentFormRef = ref<any>();
/** 获取历史记录数据 */
@@ -1713,6 +1722,9 @@ const getUserHistoryData = async (batchId: number, userId: number) => {
ElMessage.success('历史数据加载成功');
console.log('表单数据已更新:', form);
// 获取宿舍房间和床位信息
await getDormitoryInfo(historyData.dormitoryRoom, historyData.extField1);
} else {
console.log('未获取到历史数据或数据为空');
// 如果没有历史数据,保持表单默认值即可
@@ -1725,6 +1737,39 @@ const getUserHistoryData = async (batchId: number, userId: number) => {
}
};
// 获取宿舍房间和床位信息
const getDormitoryInfo = async (roomId: string | number, bedId: string | number) => {
try {
// 获取宿舍房间信息
if (roomId) {
const roomRes = await request.get(`/xgss/dormRoom/${roomId}`);
if (roomRes && roomRes.code === 200 && roomRes.data) {
dormitoryRoomName.value = roomRes.data.roomName || roomRes.data.name || '未知房间';
} else {
dormitoryRoomName.value = '未知房间';
}
} else {
dormitoryRoomName.value = '';
}
// 获取床位信息
if (bedId) {
const bedRes = await request.get(`/dormbed/dormBed/${bedId}`);
if (bedRes && bedRes.code === 200 && bedRes.data) {
bedInfo.value = bedRes.data.bedName || bedRes.data.name || '未知床位';
} else {
bedInfo.value = '未知床位';
}
} else {
bedInfo.value = '';
}
} catch (error) {
console.error('获取宿舍信息失败:', error);
dormitoryRoomName.value = '获取失败';
bedInfo.value = '获取失败';
}
};
// 获取变更详情
const getCompareStudentMsg = async (batchId: number, userId: number) => {
try {
@@ -700,8 +700,13 @@
</el-row>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="宿舍房间号" prop="dormitoryRoom">
<el-input disabled v-model="form.dormitoryRoom" placeholder="请输入宿舍房间号" maxlength="20" />
<el-form-item label="宿舍房间" prop="dormitoryRoom">
<el-input disabled v-model="dormitoryRoomName" placeholder="请输入宿舍房间" maxlength="20" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="床位" prop="bedInfo">
<el-input disabled v-model="bedName" placeholder="请输入床位" maxlength="20" />
</el-form-item>
</el-col>
</el-row>
@@ -825,6 +830,10 @@ const dormBuildingOptions = ref([]); // 宿舍楼栋选项
const photoLoading = ref(false); // 照片加载状态
const asyncPhotoUrl = ref(''); // 异步加载的照片URL
// 宿舍信息相关数据
const dormitoryRoomName = ref(''); // 宿舍房间名称
const bedName = ref(''); // 床位名称
// 历史记录相关数据
const historyLoading = ref(false);
const historyRecords = ref<any[]>([]);
@@ -1089,6 +1098,9 @@ const getUserHistoryData = async (batchId: number) => {
}
});
// 获取宿舍房间和床位信息
await getDormitoryInfo(historyData.dormitoryRoom, historyData.extField1);
ElMessage.success('历史数据加载成功');
console.log('表单数据已更新:', form);
} else {
@@ -1103,6 +1115,39 @@ const getUserHistoryData = async (batchId: number) => {
}
};
/** 获取宿舍房间和床位信息 */
const getDormitoryInfo = async (roomId: string | number, bedId: string | number) => {
try {
// 获取宿舍房间信息
if (roomId) {
const roomRes = await request.get(`/xgss/dormRoom/${roomId}`);
if (roomRes && roomRes.code === 200 && roomRes.data) {
dormitoryRoomName.value = roomRes.data.roomName || roomRes.data.name || '未知房间';
} else {
dormitoryRoomName.value = '未知房间';
}
} else {
dormitoryRoomName.value = '';
}
// 获取床位信息
if (bedId) {
const bedRes = await request.get(`/dormbed/dormBed/${bedId}`);
if (bedRes && bedRes.code === 200 && bedRes.data) {
bedName.value = bedRes.data.bedName || bedRes.data.name || '未知床位';
} else {
bedName.value = '未知床位';
}
} else {
bedName.value = '';
}
} catch (error) {
console.error('获取宿舍信息失败:', error);
dormitoryRoomName.value = '获取失败';
bedName.value = '获取失败';
}
};
// 表单数据
const form = reactive({
id: undefined,
@@ -1202,6 +1247,7 @@ const form = reactive({
classTeacherName: '',
dormitoryBuilding: '',
dormitoryRoom: '',
bedInfo: '',
// // 银行卡信息字段
bankCardNo: '',
@@ -1296,6 +1342,10 @@ watch(
// 重置表单数据到默认值
const resetFormToDefault = () => {
// 重置宿舍信息
dormitoryRoomName.value = '';
bedName.value = '';
// 重置为默认值
Object.assign(form, {
id: undefined,
@@ -1395,6 +1445,7 @@ const resetFormToDefault = () => {
classTeacherName: '',
dormitoryBuilding: '',
dormitoryRoom: '',
bedInfo: '',
// 银行卡信息字段
bankCardNo: '',
@@ -640,7 +640,7 @@
</el-col>
<el-col :span="8">
<el-form-item label="培养方式" prop="trainingType">
<el-select v-model="form.trainingType" placeholder="请选择培养方式">
<el-select v-model="form.trainingType" placeholder="请选择培养方式" disabled>
<!-- <el-option label="全日制" value="全日制" />
<el-option label="在职" value="在职" />
<el-option label="函授" value="函授" />
@@ -651,7 +651,7 @@
</el-col>
<el-col :span="8">
<el-form-item label="录取类别" prop="admissionCategory">
<el-select v-model="form.admissionCategory" placeholder="请选择录取类别">
<el-select v-model="form.admissionCategory" placeholder="请选择录取类别" disabled>
<!-- <el-option label="统招" value="统招" />
<el-option label="自主招生" value="自主招生" />
<el-option label="专项计划" value="专项计划" /> -->
@@ -663,7 +663,7 @@
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="学籍状态" prop="studentStatus">
<el-select v-model="form.studentStatus" placeholder="请选择学籍状态">
<el-select v-model="form.studentStatus" placeholder="请选择学籍状态" disabled>
<!-- <el-option label="在籍" value="1" />
<el-option label="休学" value="2" />
<el-option label="复学" value="3" />
@@ -706,8 +706,13 @@
</el-row>
<el-row :gutter="20">
<el-col :span="8">
<el-form-item label="宿舍房间号" prop="dormitoryRoom">
<el-input disabled v-model="form.dormitoryRoom" placeholder="请输入宿舍房间号" maxlength="20" />
<el-form-item label="宿舍房间" prop="dormitoryRoom">
<el-input disabled v-model="dormitoryRoomName" placeholder="请输入宿舍房间" maxlength="20" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="床位" prop="bedInfo">
<el-input disabled v-model="bedName" placeholder="请输入床位" maxlength="20" />
</el-form-item>
</el-col>
</el-row>
@@ -830,6 +835,10 @@ const dialogLoading = ref(false); // 对话框整体加载状态
const regionOptions = ref([]); // 行政区划选项
const dormBuildingOptions = ref([]); // 宿舍楼栋选项
// 宿舍信息相关数据
const dormitoryRoomName = ref(''); // 宿舍房间名称
const bedName = ref(''); // 床位名称
// 历史记录相关数据
const historyLoading = ref(false);
const historyRecords = ref<any[]>([]);
@@ -1054,6 +1063,9 @@ const getUserHistoryData = async (batchId: number) => {
}
});
// 获取宿舍房间和床位信息
await getDormitoryInfo(historyData.dormitoryRoom, historyData.extField1);
ElMessage.success('历史数据加载成功');
console.log('表单数据已更新:', form);
} else {
@@ -1068,6 +1080,39 @@ const getUserHistoryData = async (batchId: number) => {
}
};
/** 获取宿舍房间和床位信息 */
const getDormitoryInfo = async (roomId: string | number, bedId: string | number) => {
try {
// 获取宿舍房间信息
if (roomId) {
const roomRes = await request.get(`/xgss/dormRoom/${roomId}`);
if (roomRes && roomRes.code === 200 && roomRes.data) {
dormitoryRoomName.value = roomRes.data.roomName || roomRes.data.name || '未知房间';
} else {
dormitoryRoomName.value = '未知房间';
}
} else {
dormitoryRoomName.value = '';
}
// 获取床位信息
if (bedId) {
const bedRes = await request.get(`/dormbed/dormBed/${bedId}`);
if (bedRes && bedRes.code === 200 && bedRes.data) {
bedName.value = bedRes.data.bedName || bedRes.data.name || '未知床位';
} else {
bedName.value = '未知床位';
}
} else {
bedName.value = '';
}
} catch (error) {
console.error('获取宿舍信息失败:', error);
dormitoryRoomName.value = '获取失败';
bedName.value = '获取失败';
}
};
// 表单数据
const form = reactive({
id: undefined,
@@ -1167,6 +1212,7 @@ const form = reactive({
classTeacherName: '',
dormitoryBuilding: '',
dormitoryRoom: '',
extField1: '',
// // 银行卡信息字段
bankCardNo: '',
@@ -1362,6 +1408,10 @@ const resetFormToDefault = () => {
}
photoLoading.value = false;
// 重置宿舍信息
dormitoryRoomName.value = '';
bedName.value = '';
// 重置为默认值
Object.assign(form, {
id: undefined,
@@ -686,8 +686,13 @@
</el-row>
<el-row :gutter="30">
<el-col :span="8">
<el-form-item label="宿舍房间号" prop="dormitoryRoom">
<el-input disabled v-model="form.dormitoryRoom" placeholder="请输入宿舍房间号" maxlength="20" />
<el-form-item label="宿舍房间" prop="dormitoryRoom">
<el-input disabled v-model="dormitoryRoomName" placeholder="宿舍房间" maxlength="20" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="床位" prop="extField1">
<el-input disabled v-model="bedName" placeholder="床位" maxlength="20" />
</el-form-item>
</el-col>
</el-row>
@@ -786,6 +791,8 @@ const dormBuildingOptions = ref([]); // 宿舍楼栋选项
const loading = ref(false); // 加载状态
const photoLoading = ref(false); // 照片加载状态
const asyncPhotoUrl = ref(''); // 异步加载的照片URL
const dormitoryRoomName = ref(''); // 宿舍房间名称
const bedName = ref(''); // 床位名称
// 表单数据
const form = reactive({
@@ -886,6 +893,9 @@ const form = reactive({
classTeacherName: '',
dormitoryBuilding: '',
dormitoryRoom: '',
extField1: '', // 新增床位字段
dormitoryRoomName: '', // 新增宿舍房间名称字段
bedName: '', // 新增床位名称字段
// 银行卡信息字段
bankCardNo: '',
@@ -924,6 +934,9 @@ const getPersonalInfoData = async () => {
});
// 将API返回的数据映射到表单
Object.assign(form, data);
// 获取宿舍房间和床位信息
await getDormitoryInfo();
} else {
ElMessage.error(response.data.msg || '获取个人信息失败');
}
@@ -935,6 +948,50 @@ const getPersonalInfoData = async () => {
}
};
/** 获取宿舍房间和床位信息 */
const getDormitoryInfo = async () => {
try {
// 获取宿舍房间信息
if (form.dormitoryRoom) {
const roomId = String(form.dormitoryRoom); // 转换为字符串保持精度
const roomResponse = await request({
url: `/xgss/dormRoom/${roomId}`,
method: 'get'
});
if (roomResponse.code === 200 && roomResponse.data) {
const roomData = roomResponse.data;
dormitoryRoomName.value = roomData.roomName || roomData.roomCode || '未知房间';
} else {
dormitoryRoomName.value = '房间信息获取失败';
}
}
// 获取床位信息
if (form.extField1) {
const bedId = String(form.extField1); // 转换为字符串保持精度
const bedResponse = await request({
url: `/dormbed/dormBed/${bedId}`,
method: 'get'
});
if (bedResponse.code === 200 && bedResponse.data) {
const bedData = bedResponse.data;
bedName.value = bedData.bedName || bedData.bedCode || '未知床位';
} else {
bedName.value = '床位信息获取失败';
}
}
} catch (error) {
console.error('获取宿舍信息失败:', error);
// 不显示错误提示,避免影响主要功能
if (form.dormitoryRoom) {
dormitoryRoomName.value = '房间信息获取失败';
}
if (form.extField1) {
bedName.value = '床位信息获取失败';
}
}
};
/** 根据行政区划代码获取完整路径(省/市/区) */
const getRegionFullPath = (code: string): string => {
if (!code || !regionOptions.value) return code || '';
@@ -682,8 +682,13 @@
</el-row>
<el-row :gutter="30">
<el-col :span="8">
<el-form-item label="宿舍房间号" prop="dormitoryRoom">
<el-input disabled v-model="form.dormitoryRoom" placeholder="请输入宿舍房间号" maxlength="20" />
<el-form-item label="宿舍房间" prop="dormitoryRoom">
<el-input disabled v-model="form.dormitoryRoomName" placeholder="宿舍房间名称" maxlength="20" />
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="床位" prop="extField1">
<el-input disabled v-model="form.bedName" placeholder="床位名称" maxlength="20" />
</el-form-item>
</el-col>
</el-row>
@@ -905,6 +910,9 @@ const form = reactive({
classTeacherName: '',
dormitoryBuilding: '',
dormitoryRoom: '',
dormitoryRoomName: '', // 宿舍房间名称
extField1: '', // 床位ID
bedName: '', // 床位名称
// 银行卡信息字段
bankCardNo: '',
@@ -946,6 +954,9 @@ const getPersonalInfoData = async (studentId?: number) => {
});
// 将API返回的数据映射到表单
Object.assign(form, data);
// 异步获取宿舍房间和床位信息
await getDormitoryInfo();
} else {
ElMessage.error(response.msg || '获取个人信息失败');
}
@@ -957,6 +968,44 @@ const getPersonalInfoData = async (studentId?: number) => {
}
};
/** 获取宿舍房间和床位信息 */
const getDormitoryInfo = async () => {
try {
// 获取宿舍房间信息
if (form.dormitoryRoom) {
const roomId = String(form.dormitoryRoom); // 转换为字符串保持精度
const roomResponse = await api.getDormRoomInfo(roomId);
if (roomResponse.code === 200 && roomResponse.data) {
const roomData = roomResponse.data as any;
form.dormitoryRoomName = roomData.roomName || roomData.name || '未知房间';
} else {
form.dormitoryRoomName = '房间信息获取失败';
}
}
// 获取床位信息
if (form.extField1) {
const bedId = String(form.extField1); // 转换为字符串保持精度
const bedResponse = await api.getDormBedInfo(bedId);
if (bedResponse.code === 200 && bedResponse.data) {
const bedData = bedResponse.data as any;
form.bedName = bedData.bedName || bedResponse.data.name || '未知床位';
} else {
form.bedName = '床位信息获取失败';
}
}
} catch (error) {
console.error('获取宿舍信息失败:', error);
// 不显示错误提示,避免影响主要功能
if (form.dormitoryRoom) {
form.dormitoryRoomName = '房间信息获取失败';
}
if (form.extField1) {
form.bedName = '床位信息获取失败';
}
}
};
/** 根据行政区划代码获取完整路径(省/市/区) */
const getRegionFullPath = (code: string): string => {
if (!code || !regionOptions.value) return code || '';
@@ -1092,6 +1141,11 @@ watch(
}
});
// 重置宿舍相关字段
form.dormitoryRoomName = '';
form.extField1 = '';
form.bedName = '';
// 获取学生个人信息
await getPersonalInfoData(studentId);
}