|
|
@@ -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;
|