feat: 轮询获取状态

This commit is contained in:
zhanghao 2026-02-10 09:27:50 +08:00
parent 81024c0e3c
commit 7cb23822ce
5 changed files with 91 additions and 108 deletions

View File

@ -69,3 +69,15 @@ export function queryExecuteInstId(projectId) {
}) })
} }
/**
* 获取评估
* @param {*} projectId
* @returns
*/
export function getValuationProject(projectId) {
return request({
url: '/vi/project/evaluation/' + projectId,
method: 'get'
})
}

View File

@ -4,7 +4,7 @@
<div class="test-container"> <div class="test-container">
<div class="title">测试结果</div> <div class="title">测试结果</div>
<div> <div>
<el-button>生成报告</el-button> <el-button @click="handler('重庆')">生成报告</el-button>
<el-button>导出结果</el-button> <el-button>导出结果</el-button>
</div> </div>
</div> </div>
@ -13,12 +13,6 @@
<el-table-column prop="id" label="结果ID" /> <el-table-column prop="id" label="结果ID" />
<el-table-column prop="time" label="时间" /> <el-table-column prop="time" label="时间" />
<el-table-column prop="text" label="语料文本" /> <el-table-column prop="text" label="语料文本" />
<el-table-column prop="responseTime" label="响应时间" show-overflow-tooltip>
<template #default="{ row }">
<div v-if="row.responseTime">{{ row.responseTime }}</div>
<div v-else><el-tag type="primary">未测试</el-tag></div>
</template>
</el-table-column>
<el-table-column prop="rate" label="字识别率" show-overflow-tooltip> <el-table-column prop="rate" label="字识别率" show-overflow-tooltip>
<template #default="{ row }"> <template #default="{ row }">
<div v-if="row.rate">{{ row.rate }}</div> <div v-if="row.rate">{{ row.rate }}</div>
@ -36,6 +30,7 @@
<div v-else><el-tag type="danger">未测试</el-tag></div> <div v-else><el-tag type="danger">未测试</el-tag></div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="responseTime" label="响应时间" />
<el-table-column prop="flag" label="结果标记 " /> <el-table-column prop="flag" label="结果标记 " />
</el-table> </el-table>
</div> </div>

View File

@ -107,7 +107,7 @@
/> />
<el-table-column label="项目状态" align="center" prop="status"> <el-table-column label="项目状态" align="center" prop="status">
<template #default="{ row }"> <template #default="{ row }">
{{ row.status == 0 ? "已执行" : "未执行" }} {{ row.status == '0' ? "未执行" : row.status == '1' ? "执行中" : "已完成" }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
@ -121,12 +121,12 @@
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
v-if="row.status == 1" v-if="row.status == '0'"
@click="handleExecute(row)" @click="handleExecute(row)"
>执行 >执行
</el-button> </el-button>
<el-button <el-button
v-if="row.status == 0" v-if="row.status == '2'"
size="mini" size="mini"
type="text" type="text"
@click="handleEvaluate(row)" @click="handleEvaluate(row)"
@ -136,6 +136,7 @@
size="mini" size="mini"
type="text" type="text"
@click="handleUpdate(row)" @click="handleUpdate(row)"
v-if="row.status != '1'"
v-hasPermi="['system:project:edit']" v-hasPermi="['system:project:edit']"
>修改</el-button >修改</el-button
> >
@ -143,6 +144,7 @@
size="mini" size="mini"
type="text" type="text"
@click="handleDelete(row)" @click="handleDelete(row)"
v-if="row.status != '1'"
v-hasPermi="['system:project:remove']" v-hasPermi="['system:project:remove']"
>删除</el-button >删除</el-button
> >
@ -424,6 +426,19 @@ function getList() {
if (res.code === 200) { if (res.code === 200) {
projectList.value = res.rows; projectList.value = res.rows;
total.value = res.total; total.value = res.total;
let status = 0;
for (let i = 0; i < projectList.value.length; i++) {
if (projectList.value[i].status == '1') {
status = 1;
break;
}
}
if (status == 1) {
// 5
setTimeout(() => {
getList();
}, 5000);
}
} else { } else {
ElMessage.error(res.msg || "查询项目列表失败"); ElMessage.error(res.msg || "查询项目列表失败");
} }

View File

@ -13,41 +13,24 @@
<div class="left"> <div class="left">
<div class="title">方案选择</div> <div class="title">方案选择</div>
<div class="schemaList"> <div class="schemaList">
<div v-for="item in schemaList" class="schema" :class="{ activeItem: activeSchema === item.schemeId }" @click="clickSchema(item)"> <el-card class="category-card" v-for="item in schemaList" :class="{ activeItem: activeSchema === item.schemeId }" @click="clickSchema(item)">
<div class="name">{{ item.schemeName }}</div> <div class="name">{{ item.schemeName }}</div>
<div class="type"><el-tag>{{ item.sceneType === 1 ? '唤醒场景' : item.sceneType === 2 ? '单词对话场景' : '连续对话场景' }}</el-tag></div> </el-card>
</div>
</div> </div>
</div> </div>
<div class="right"> <div class="right">
<el-table :data="tableData" style="width: 100%"> <el-table :data="tableData" style="width: 100%">
<el-table-column prop="id" label="结果ID" /> <el-table-column prop="aeId" width="150" show-overflow-tooltip label="结果ID" />
<el-table-column prop="time" label="时间" /> <el-table-column prop="content" label="语料文本" width="260" show-overflow-tooltip />
<el-table-column prop="text" label="语料文本" /> <el-table-column prop="status" label="状态" show-overflow-tooltip>
<el-table-column prop="responseTime" label="响应时间" show-overflow-tooltip>
<template #default="{ row }"> <template #default="{ row }">
<div v-if="row.responseTime">{{ row.responseTime }}</div> <el-tag :type="statusType[row.status] || 'info'">{{ statusTypeContext[row.status] }}</el-tag>
<div v-else><el-tag type="primary">未测试</el-tag></div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="rate" label="字识别率" show-overflow-tooltip> <el-table-column prop="videoPath" label="视频路径" show-overflow-tooltip></el-table-column>
<template #default="{ row }"> <el-table-column prop="itemResponseTime" label="响应时间" />
<div v-if="row.rate">{{ row.rate }}</div> <el-table-column prop="failureReason" label="失败原因"></el-table-column>
<div v-else><el-tag type="info">未测试</el-tag></div> <el-table-column prop="executionDetail" label="执行详情" />
</template>
</el-table-column>
<el-table-column prop="result" label="测试结果">
<template #default="{ row }">
<el-tag :type="row.result ? 'success' : 'warning'">{{ row.result ? '通过' : '分析中' }}</el-tag>
</template>
</el-table-column>
<el-table-column prop="can" label="CAN结果">
<template #default="{ row }">
<div v-if="row.rate">{{ row.can }}</div>
<div v-else><el-tag type="danger">未测试</el-tag></div>
</template>
</el-table-column>
<el-table-column prop="flag" label="结果标记 " />
</el-table> </el-table>
</div> </div>
</div> </div>
@ -57,8 +40,7 @@
<script setup> <script setup>
import { onMounted } from 'vue'; import { onMounted } from 'vue';
import Info from './info.vue'; import Info from './info.vue';
import { listScheme } from '@/api/vi/plan' import { getValuationProject } from '@/api/vi/project'
import { listCorpus, getBatchCorpus } from '@/api/vi/corpus'
const route = useRoute(); const route = useRoute();
@ -66,73 +48,37 @@ const projectData = route.query.data
? JSON.parse(route.query.data) ? JSON.parse(route.query.data)
: {} : {}
console.log('projectData', projectData)
const schemaList = ref([]) const schemaList = ref([])
const tableData = ref([]) const tableData = ref([])
const getListScheme = async () => { const getListScheme = async () => {
const res = await listScheme({ const res = await getValuationProject(projectData.projectId)
pageNum: 1,
pageSize: 100000,
projectId: route.params.id,
})
if (res.code === 200) { if (res.code === 200) {
schemaList.value = res.rows; schemaList.value = res.data;
activeSchema.value = schemaList.value[0]?.schemeId || null
tableData.value = schemaList.value[0]?.itemDetails || []
} }
} }
const activeSchema = ref(null) const activeSchema = ref(null)
const clickSchema = async (item) => { const clickSchema = async (item) => {
activeSchema.value = item.schemeId activeSchema.value = item.schemeId
const obj = { tableData.value = schemaList.value.find(i => i.schemeId === item.schemeId).itemDetails || []
type: 'TEST', }
continuous: 0
} const statusType = {
let res 0: 'info',
if (item.sceneType === 1) { 1: 'conductedState',
obj.type = 'WAKEUP' 2: 'successfulState',
obj.continuous = 1 3: 'danger'
obj.parentIds = item.wakeId }
res = await listCorpus({
pageNum: 1, const statusTypeContext = {
pageSize: 100000, 0: '待评估',
...obj 1: '评估中',
}) 2: '评估成功',
} else if (item.sceneType === 2) { 3: '评估失败'
obj.continuous = 1
obj.parentIds = item.corpusIds.split(",")
res = await listCorpus({
pageNum: 1,
pageSize: 100000,
...obj
})
} else if (item.sceneType === 3) {
obj.continuous = 0
obj.parentIds = item.corpusIds.split(",")
res = await getBatchCorpus({
pageNum: 1,
pageSize: 100000,
...obj
})
}
if (res.code === 200) {
tableData.value = res.rows.map(item => {
return {
id: 'test result 876',
time: '2025-11-26 16:46:23',
text: item.corpusName,
responseTime: 0,
rate: 0,
result: 1,
can: 0,
flag: '无'
}
})
}
} }
onMounted(() => { onMounted(() => {
@ -186,20 +132,19 @@ onMounted(() => {
overflow-y: auto; overflow-y: auto;
background: #fff; background: #fff;
border: 1px solid #e4e7ed; border: 1px solid #e4e7ed;
border-radius: 8px;
padding: 12px;
.schema { .category-card {
display: flex; border-radius: 8px;
justify-content: space-between; margin-bottom: 12px;
align-items: center;
padding: 12px;
&:hover {
background: #f0ecec;
}
} }
.activeItem { .activeItem {
background: #f0ecec; border: 2px solid #409EFF;
background: #e7e3e3;
border-radius: 8px;
} }
} }
} }

View File

@ -173,7 +173,7 @@
<el-table-column label="数量" align="center" prop="quantity" /> <el-table-column label="数量" align="center" prop="quantity" />
<el-table-column label="项目状态" align="center" prop="status"> <el-table-column label="项目状态" align="center" prop="status">
<template #default="{ row }"> <template #default="{ row }">
{{ row.status == 0 ? '已执行': '未执行' }} {{ row.status == '0' ? "未执行" : row.status == '1' ? "执行中" : "已完成" }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" width="300px" class-name="small-padding fixed-width" fixed="right"> <el-table-column label="操作" align="center" width="300px" class-name="small-padding fixed-width" fixed="right">
@ -181,7 +181,7 @@
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
v-if="row.status == 1" v-if="row.status == 0"
@click="handleSetting(row)" @click="handleSetting(row)"
v-hasPermi="['system:project:add','system:project:edit']" v-hasPermi="['system:project:add','system:project:edit']"
>配置 >配置
@ -189,13 +189,13 @@
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
v-if="row.status == 1" v-if="row.status == '0'"
@click="handleExecute(row)" @click="handleExecute(row)"
v-hasPermi="['system:project:add','system:project:edit']" v-hasPermi="['system:project:add','system:project:edit']"
>执行 >执行
</el-button> </el-button>
<el-button <el-button
v-if="row.status == 0" v-if="row.status == '2'"
size="mini" size="mini"
type="text" type="text"
v-hasPermi="['system:project:add','system:project:edit']" v-hasPermi="['system:project:add','system:project:edit']"
@ -203,7 +203,7 @@
>可视化 >可视化
</el-button> </el-button>
<el-button <el-button
v-if="row.status == 0" v-if="row.status == '2'"
size="mini" size="mini"
type="text" type="text"
v-hasPermi="['system:project:add','system:project:edit']" v-hasPermi="['system:project:add','system:project:edit']"
@ -214,6 +214,7 @@
size="mini" size="mini"
type="text" type="text"
@click="handleUpdate(row)" @click="handleUpdate(row)"
v-if="row.status != '1'"
v-hasPermi="['system:project:edit']" v-hasPermi="['system:project:edit']"
>修改</el-button >修改</el-button
> >
@ -221,6 +222,7 @@
size="mini" size="mini"
type="text" type="text"
@click="handleDelete(row)" @click="handleDelete(row)"
v-if="row.status != '1'"
v-hasPermi="['system:project:remove']" v-hasPermi="['system:project:remove']"
>删除</el-button >删除</el-button
> >
@ -494,6 +496,20 @@ function getList() {
projectList.value = response.rows; projectList.value = response.rows;
total.value = response.total; total.value = response.total;
loading.value = false; loading.value = false;
let status = 0;
for (let i = 0; i < projectList.value.length; i++) {
if (projectList.value[i].status == '1') {
status = 1;
break;
}
}
if (status == 1) {
// 5
setTimeout(() => {
getList();
}, 5000);
}
}); });
} }