yeg
2026-09-05 163e4bafac351fd23040f4c47a19ebe37385f525
对齐测试生命周期状态展示

前端筛选和控制台状态统一使用四态测试状态,并保留历史状态兼容展示。
3个文件已修改
26 ■■■■■ 已修改文件
src/api/tests.ts 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/TestConsole.vue 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/TestList.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/tests.ts
@@ -1,7 +1,7 @@
import type { ReceptionStatus, TestRecord, TestStatus } from '@/stores/tests'
import { getAuthToken, request, type ApiResponse } from './request'
export type TestStatusCode = 'WAITING' | 'RUNNING' | 'PAUSED' | 'RUNNING_ABNORMAL' | 'COMPLETION_PENDING' | 'COMPLETED' | 'TERMINATED'
export type TestStatusCode = 'WAITING' | 'RUNNING' | 'PAUSED' | 'COMPLETED'
export type ReceptionStatusCode = 'NOT_STARTED' | 'RECEIVING' | 'PAUSED' | 'ENDED'
export interface TestListParams {
@@ -134,18 +134,14 @@
interface TestOptionsResponse extends ApiResponse { data: TestConfigurationOptions }
export interface TestListResult { total: number; rows: TestRecord[] }
const statusMap: Record<TestStatusCode, TestStatus> = {
  WAITING: '待测试', RUNNING: '检测中', PAUSED: '暂停', RUNNING_ABNORMAL: '检测中',
  // 历史兼容状态统一按当前“停止即完成”语义展示。
  COMPLETION_PENDING: '检测完成', COMPLETED: '检测完成', TERMINATED: '检测完成',
const statusMap: Record<string, TestStatus> = {
  WAITING: '待测试', RUNNING: '检测中', PAUSED: '暂停', COMPLETED: '检测完成',
  // 历史数据只作兼容展示,不会由新流程写入。
  RUNNING_ABNORMAL: '检测中', COMPLETION_PENDING: '检测完成', TERMINATED: '检测完成',
}
const receptionStatusMap: Record<ReceptionStatusCode, ReceptionStatus> = {
  NOT_STARTED: '未开始接收', RECEIVING: '接收中', PAUSED: '暂停接收', ENDED: '已结束接收',
}
const legacyStatusMap: Record<string, TestStatusCode> = {
  '0': 'WAITING', '1': 'RUNNING', '2': 'RUNNING_ABNORMAL', '3': 'COMPLETED',
}
function mapTest(item: TestDto): TestRecord {
  const status = item.testStatus ? statusMap[item.testStatus] : '未知'
  const receptionStatus = item.receptionStatus ? receptionStatusMap[item.receptionStatus] : '未知'
@@ -161,7 +157,7 @@
  const searchParams = new URLSearchParams()
  Object.entries(params).forEach(([key, value]) => {
    if (value === undefined || value === '') return
    if (key === 'status') searchParams.set('testStatus', legacyStatusMap[String(value)] || String(value))
    if (key === 'status') searchParams.set('testStatus', String(value))
    else searchParams.set(key, String(value))
  })
  const result = await request<TestListResponse>(`/system/test/list?${searchParams.toString()}`)
src/views/TestConsole.vue
@@ -95,7 +95,9 @@
  liveConnection.value = next.sources.some(source => Boolean(source.latestSnapshot?.observedAt)
    || Boolean(source.latestSnapshot?.measurements?.length)) ? '已连接' : '空数据'
  liveError.value = ''
  const nextState = ({ WAITING: '待测试', RUNNING: '检测中', PAUSED: '暂停', RUNNING_ABNORMAL: '检测中', COMPLETION_PENDING: '检测完成', COMPLETED: '检测完成', TERMINATED: '检测完成' } as Record<string, ConsoleState | undefined>)[next.testStatus] || '待测试'
  const nextState = ({ WAITING: '待测试', RUNNING: '检测中', PAUSED: '暂停', COMPLETED: '检测完成',
    // 历史数据仅兼容展示,不参与新生命周期流转。
    RUNNING_ABNORMAL: '检测中', COMPLETION_PENDING: '检测完成', TERMINATED: '检测完成' } as Record<string, ConsoleState | undefined>)[next.testStatus] || '待测试'
  state.value = nextState
  testStatusLabel.value = nextState
  const mapped = next.receptionStatus
src/views/TestList.vue
@@ -20,10 +20,10 @@
}
const statuses: Array<{ label: TestStatus; value: string }> = [
  { label: '待测试', value: '0' },
  { label: '检测中', value: '1' },
  { label: '待测试', value: 'WAITING' },
  { label: '检测中', value: 'RUNNING' },
  { label: '暂停', value: 'PAUSED' },
  { label: '检测完成', value: '3' },
  { label: '检测完成', value: 'COMPLETED' },
]
const router = useRouter()
const testTypes = ref<TestTypeOption[]>([])