feat: 轮询获取状态
This commit is contained in:
parent
81024c0e3c
commit
7cb23822ce
@ -69,3 +69,15 @@ export function queryExecuteInstId(projectId) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取评估
|
||||||
|
* @param {*} projectId
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
export function getValuationProject(projectId) {
|
||||||
|
return request({
|
||||||
|
url: '/vi/project/evaluation/' + projectId,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
@ -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 || "查询项目列表失败");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user