Files
pqs-9100_client/frontend/src/views/home/components/preTest.vue

178 lines
4.5 KiB
Vue
Raw Normal View History

<template>
<div>
<el-tabs type="border-card">
<el-tab-pane label="预检测项目:">
<div class="form-grid">
<el-checkbox
v-for="(item, index) in detectionOptions"
v-model="item.selected"
:key="index"
:label="item.name"
></el-checkbox
>
</div>
</el-tab-pane>
</el-tabs>
<div class = "test-dialog">
<div class="dialog-left">
<el-steps direction="vertical" :active="activeIndex" :process-status="currentStepStatus" finish-status="success">
<el-step title="源通讯校验" />
<el-step title="设备通讯校验" />
<el-step title="协议校验" />
<el-step title="相序校验" />
<el-step title="检测完成" />
</el-steps>
</div>
<div class="dialog-right">
<el-collapse v-model="collapseActiveName" accordion>
<el-collapse-item title="源通讯校验" name="1">
2024-11-20 21:30:05 +08:00
<div class = "div-log">
暂无数据等待检测开始
</div>
</el-collapse-item>
<el-collapse-item title="设备通讯校验" name="2">
2024-11-20 21:30:05 +08:00
<div class = "div-log">
暂无数据等待检测开始
</div>
</el-collapse-item>
<el-collapse-item title="协议校验" name="3">
2024-11-20 21:30:05 +08:00
<div class = "div-log">
暂无数据等待检测开始
</div>
</el-collapse-item>
<el-collapse-item title="相序校验" name="4">
2024-11-20 21:30:05 +08:00
<div class = "div-log">
暂无数据等待检测开始
</div>
</el-collapse-item>
</el-collapse>
</div>
</div>
</div>
</template>
<script lang="tsx" setup name="preTest">
const collapseActiveName = ref('1')
const activeIndex = ref(0)
const activeTotalNum = ref(5)
//定义与预检测配置数组
const detectionOptions = ref([
{
id: 0,
name: "源通讯检测",//判断源通讯是否正常
selected: true,
},
{
id: 1,
name: "设备通讯检测",//判断设备的IP、Port、识别码、秘钥是否正常
selected: true,
},
{
id: 2,
name: "协议校验",//ICD报告触发测试
selected: true,
},
{
id: 3,
name: "相序校验",//判断装置的接线是否正确
selected: true,
},
// {
// id: 4,
// name: "守时校验",//判断装置24小时内的守时误差是否小于1s
// selected: true,
// },
// {
// id: 5,
// name: "通道系数校准",//通过私有协议与装置进行通讯,校准三相电压电流的通道系数
// selected: true,
// },
// {
// id: 6,
// name: "实时数据比对",
// },
// {
// id: 7,
// name: "录波数据比对",
// },
]);
const currentStepStatus = ref<'error' | 'finish' | 'wait' | 'success' | 'process'>('finish');
const props = defineProps({
testStatus: {
type: String,
default: 'wait'
}
})
const testStatus = toRef(props, 'testStatus');
const ts = ref('');
watch(activeIndex, function (newValue, oldValue) {
if(activeIndex.value < activeTotalNum.value - 2)
collapseActiveName.value = (newValue+1).toString()
else
collapseActiveName.value = (activeTotalNum.value - 1).toString()
})
//监听goods_sn的变化
watch(testStatus, function (newValue, oldValue) {
ts.value = props.testStatus;
if(ts.value==='start')
{
ts.value = 'process'
let timer = setInterval(() => {
if(activeIndex.value < activeTotalNum.value - 2)
activeIndex.value++
else if(activeIndex.value === activeTotalNum.value -2)
{
activeIndex.value++
activeIndex.value++
}
else
{
clearInterval(timer)
ts.value = 'success'
}
}, 1000);
}
})
const emit = defineEmits(['update:testStatus']);
//监听sn
watch(ts, function (newValue, oldValue) {
//修改父组件
emit('update:testStatus',ts.value)
})
</script>
<style scoped>
.test-dialog{
2024-11-20 21:30:05 +08:00
height: 350px;
display: flex;
flex-direction: row; /* 横向排列 */
margin-top: 20px;
/* .dialog-left{
margin-right: 20px;
} */
}
.dialog-left{
2024-11-20 21:30:05 +08:00
width: 15%;
margin-left: 20px;
}
.dialog-right{
margin-left: 20px;
2024-11-20 21:30:05 +08:00
width: 80%;
height: 100%;
}
2024-11-20 21:30:05 +08:00
.div-log{
height: 100px;
}
</style>