新增e2e测试脚本,修复部分问题

This commit was merged in pull request #51.
This commit is contained in:
2026-07-22 20:00:13 +08:00
parent 53d1ce6fb2
commit 4c07ec5455
105 changed files with 21700 additions and 318 deletions
@@ -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