CMVR-IOT-UI/src/views/is/project/evaluate/index.vue
2026-03-10 16:56:34 +08:00

161 lines
3.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="container">
<Info :infoData="projectData" />
<div class="test-container">
<div class="title">测试结果</div>
<div class="report-container">
<div class="report-item">成功率 {{ reportData?.successRate || '' }}</div>
<div class="report-item">成功率得分 {{ reportData?.successRateScore || '' }}</div>
<!-- <el-button @click="handler('重庆')">生成报告</el-button>
<el-button>导出结果</el-button> -->
</div>
</div>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="aeId" width="150" show-overflow-tooltip label="结果ID" />
<el-table-column prop="content" label="功能" width="260" show-overflow-tooltip />
<el-table-column prop="status" label="状态" show-overflow-tooltip>
<template #default="{ row }">
<el-tag :type="statusType[row.status] || 'info'">{{ statusTypeContext[row.status] }}</el-tag>
</template>
</el-table-column>
<el-table-column prop="videoPath" label="视频路径" show-overflow-tooltip>
<template #default="{ row }">
<el-text class="mx-1" type="primary" @click="openVideoDialog(row)">播放视频</el-text>
</template>
</el-table-column>
<el-table-column prop="itemResponseTime" label="响应时间" />
<el-table-column prop="failureReason" label="失败原因"></el-table-column>
<el-table-column prop="executionDetail" label="执行详情" />
</el-table>
<el-dialog v-model="centerDialogVisible" title="播放视频" width="800" center>
<Video :src="videoSrc" />
</el-dialog>
</div>
</template>
<script setup>
import Info from './info.vue';
import { getValuationProject } from '@/api/is/project'
import Video from '@/components/Video/index.vue'
const route = useRoute();
const projectData = route.query.data
? JSON.parse(route.query.data)
: {};
const tableData = ref([]);
const reportData = ref(null)
const getListScheme = async () => {
const res = await getValuationProject(projectData.projectId)
if (res.code === 200) {
reportData.value = {
successRate: res.data.successRate,
successRateScore: res.data.successRateScore
}
tableData.value = res.data.itemDetails
}
}
const statusType = {
0: 'info',
1: 'conductedState',
2: 'successfulState',
3: 'danger'
}
const statusTypeContext = {
0: '待评估',
1: '评估中',
2: '评估成功',
3: '评估失败'
}
const centerDialogVisible = ref(false)
const videoSrc = ref('')
const openVideoDialog = (row) => {
videoSrc.value = row.videoPath
centerDialogVisible.value = true
}
onMounted(() => {
getListScheme()
})
</script>
<style lang="scss" scoped>
.container {
width: 100%;
height: 100%;
.btn-container {
background: #fff;
margin: 4px 0;
padding: 4px 0;
}
.test-container {
height: 40px;
display: flex;
align-items: center;
justify-content: space-between;
.title {
font-size: 20px;
font-weight: bold;
}
.report-container {
display: flex;
gap: 12px;
}
}
.context-container {
height: calc(100% - 200px);
display: flex;
gap: 10px;
.left {
width: 300px;
.title {
height: 40px;
display: flex;
align-items: center;
background: #fff;
padding-left: 12px;
border: 1px solid #e4e7ed;
margin-bottom: 2px;
}
.schemaList {
height: calc(100% - 40px);
overflow-y: auto;
background: #fff;
border: 1px solid #e4e7ed;
.schema {
display: flex;
justify-content: space-between;
align-items: center;
padding: 12px;
&:hover {
background: #f0ecec;
}
}
.activeItem {
background: #f0ecec;
}
}
}
.right {
flex: 1;
}
}
}
</style>