新增e2e测试脚本,修复部分问题
This commit was merged in pull request #51.
This commit is contained in:
@@ -98,7 +98,7 @@
|
||||
<el-table-column prop="location" label="上课地点" width="120" />
|
||||
<el-table-column label="人数" width="90">
|
||||
<template #default="{ row }">
|
||||
{{ row.currentMembers || 0 }}/{{ row.maxMembers || 0 }}
|
||||
{{ realMemberCounts[row.id!] ?? row.currentMembers ?? 0 }}/{{ row.maxMembers || 0 }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="320" fixed="right">
|
||||
@@ -297,7 +297,7 @@
|
||||
<el-descriptions-item label="实际开课时间">{{ formatDateTime(detailRow.actualStartTime) || '-' }}</el-descriptions-item>
|
||||
<el-descriptions-item label="计划结束时间">{{ formatDateTime(detailRow.endTime) }}</el-descriptions-item>
|
||||
<el-descriptions-item label="实际结课时间">{{ formatDateTime(detailRow.actualEndTime) || '-' }}</el-descriptions-item>
|
||||
<el-descriptions-item label="人数">{{ detailRow.currentMembers || 0 }} / {{ detailRow.maxMembers || 0 }}</el-descriptions-item>
|
||||
<el-descriptions-item label="人数">{{ realMemberCounts[detailRow.id!] ?? detailRow.currentMembers ?? 0 }} / {{ detailRow.maxMembers || 0 }}</el-descriptions-item>
|
||||
<el-descriptions-item label="储值卡额度">{{ detailRow.storedValueAmount ?? '-' }}</el-descriptions-item>
|
||||
<el-descriptions-item label="封面图片">
|
||||
<img v-if="detailRow.coverImage && coverCache[detailRow.coverImage]" :src="coverCache[detailRow.coverImage]" class="detail-cover" />
|
||||
@@ -320,7 +320,7 @@
|
||||
import { ref, reactive, watch, onMounted, onUnmounted } from 'vue'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { Search, Plus, WarningFilled, Refresh } from '@element-plus/icons-vue'
|
||||
import { groupCourseApi, groupCourseTypeApi, type GroupCourse, type GroupCourseType } from '@/api/groupCourse.api'
|
||||
import { groupCourseApi, groupCourseTypeApi, groupCourseBookingApi, type GroupCourse, type GroupCourseType } from '@/api/groupCourse.api'
|
||||
import { coachApi, type Coach } from '@/api/coach.api'
|
||||
import request from '@/utils/request'
|
||||
import { formatDateTime } from '@/utils/dateFormat'
|
||||
@@ -331,6 +331,7 @@ const searchKeyword = ref('')
|
||||
const searchStatus = ref('')
|
||||
const courseTypes = ref<GroupCourseType[]>([])
|
||||
const coaches = ref<Coach[]>([])
|
||||
const realMemberCounts = reactive<Record<number, number>>({})
|
||||
|
||||
const statusMap: Record<string, { type: string; label: string }> = {
|
||||
'0': { type: 'success', label: '正常' },
|
||||
@@ -513,6 +514,8 @@ const fetchData = async () => {
|
||||
pagination.total = Number(res.totalElements) || 0
|
||||
// load cover images for all rows
|
||||
res.content.forEach((row: GroupCourse) => loadRowCover(row.coverImage))
|
||||
// 实时获取预约人数
|
||||
fetchRealMemberCounts(res.content)
|
||||
} catch {
|
||||
ElMessage.error('加载数据失败')
|
||||
} finally {
|
||||
@@ -520,6 +523,23 @@ const fetchData = async () => {
|
||||
}
|
||||
}
|
||||
|
||||
const fetchRealMemberCounts = async (courses: GroupCourse[]) => {
|
||||
// 批量获取每门课程的实时预约人数
|
||||
const results = await Promise.allSettled(
|
||||
courses.map(course =>
|
||||
groupCourseBookingApi.getByCourseId(course.id!).then(bookings => ({
|
||||
courseId: course.id!,
|
||||
count: bookings.filter(b => b.status === '0' || b.status === '2').length,
|
||||
}))
|
||||
)
|
||||
)
|
||||
results.forEach(r => {
|
||||
if (r.status === 'fulfilled') {
|
||||
realMemberCounts[r.value.courseId] = r.value.count
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const handleTableChange = () => fetchData()
|
||||
const handleSizeChange = () => {
|
||||
pagination.current = 1
|
||||
|
||||
Reference in New Issue
Block a user