3 Commits

Author SHA1 Message Date
sjl
389857ac7e Merge branch 'master' of http://192.168.1.22:3000/ClientApps/pqs-9100_client 2025-12-05 11:04:11 +08:00
sjl
dde3f11bbe 1 2025-12-05 11:04:04 +08:00
sjl
ff90f51cf1 是否需要相序检测 2025-12-05 11:02:25 +08:00
3 changed files with 89 additions and 34 deletions

View File

@@ -191,7 +191,7 @@ export default class SocketService {
*/ */
private config: SocketConfig = { private config: SocketConfig = {
url: 'ws://127.0.0.1:7777/hello', url: 'ws://127.0.0.1:7777/hello',
// url: 'ws://192.168.1.124:7777/hello', //url: 'ws://192.168.1.124:7777/hello',
heartbeatInterval: 9000, // 9秒心跳间隔 heartbeatInterval: 9000, // 9秒心跳间隔
reconnectDelay: 5000, // 5秒重连延迟 reconnectDelay: 5000, // 5秒重连延迟
maxReconnectAttempts: 5, // 最多重连5次 maxReconnectAttempts: 5, // 最多重连5次

View File

@@ -16,7 +16,7 @@
<el-step :status="step1" title="设备通讯校验"/> <el-step :status="step1" title="设备通讯校验"/>
<el-step :status="step2" title="模型一致性校验"/> <el-step :status="step2" title="模型一致性校验"/>
<el-step :status="step3" title="数据对齐验证" v-if="!props.onlyWave"/> <el-step :status="step3" title="数据对齐验证" v-if="!props.onlyWave"/>
<el-step :status="step4" title="相序校验"/> <el-step :status="step4" title="相序校验" v-if="props.xiangXuIsShow"/>
<!-- <el-step :status="step6" title="遥控录波功能验证"/> --> <!-- <el-step :status="step6" title="遥控录波功能验证"/> -->
<el-step :status="step5" :title="ts === 'error'? '检测失败':ts === 'process'? '检测中':ts === 'success'? '检测成功':'待检测'"/> <el-step :status="step5" :title="ts === 'error'? '检测失败':ts === 'process'? '检测中':ts === 'success'? '检测成功':'待检测'"/>
</el-steps> </el-steps>
@@ -52,7 +52,7 @@
</p> </p>
</div> </div>
</el-collapse-item> </el-collapse-item>
<el-collapse-item title="相序校验" name="4"> <el-collapse-item title="相序校验" name="4" v-if="props.xiangXuIsShow">
<div class="div-log"> <div class="div-log">
<p v-for="(item, index) in step4InitLog" :key="index" <p v-for="(item, index) in step4InitLog" :key="index"
:style="{ color: item.type === 'error' ? '#F56C6C' : 'var(--el-text-color-regular)' }"> :style="{ color: item.type === 'error' ? '#F56C6C' : 'var(--el-text-color-regular)' }">
@@ -84,6 +84,28 @@
import { ElMessage, ElMessageBox, StepProps } from 'element-plus' import { ElMessage, ElMessageBox, StepProps } from 'element-plus'
import { computed, PropType, ref, toRef, watch } from 'vue' import { computed, PropType, ref, toRef, watch } from 'vue'
import RealTimeData from './realTimeDataAlign.vue' import RealTimeData from './realTimeDataAlign.vue'
const props = defineProps({
testStatus: {
type: String,
default: 'wait'
},
webMsgSend: {
type: Object,
default: () => ({})
},
mapping: {
type: Object as PropType<Record<string, Record<string, string>>>,
default: () => ({})
},
onlyWave: {
type: Boolean,
default: false
},
xiangXuIsShow:{
type: Boolean,
default: false
}
})
const realTimeDataRef = ref() const realTimeDataRef = ref()
@@ -122,10 +144,13 @@ const isShowDialog = ref(false)
const collapseActiveName = ref('1') const collapseActiveName = ref('1')
const activeIndex = ref(0) const activeIndex = ref(0)
const activeTotalNum = computed(() => { const activeTotalNum = computed(() => {
let count = 4; // 基础步骤数:设备通讯校验、模型一致性校验、相序校验、最终状态 let count = 3; // 基础步骤数:设备通讯校验、模型一致性校验、最终状态
if (props.onlyWave) { if (!props.onlyWave) {
count++; // 添加数据对齐验证步骤 count++; // 添加数据对齐验证步骤
} }
if(props.xiangXuIsShow){//添加相序校验
count++;
}
return count; return count;
}); });
const step1 = ref<StepProps['status']>('wait') const step1 = ref<StepProps['status']>('wait')
@@ -150,35 +175,18 @@ const detectionOptions = ref([
{ {
id: 2, id: 2,
name: "数据对齐验证", name: "数据对齐验证",
selected: true, selected: !props.onlyWave,
}, },
{ {
id: 3, id: 3,
name: "相序校验", name: "相序校验",
selected: true, selected: props.xiangXuIsShow,
}, },
]); ]);
const currentStepStatus = ref<'error' | 'finish' | 'wait' | 'success' | 'process'>('finish'); const currentStepStatus = ref<'error' | 'finish' | 'wait' | 'success' | 'process'>('finish');
const props = defineProps({
testStatus: {
type: String,
default: 'wait'
},
webMsgSend: {
type: Object,
default: () => ({})
},
mapping: {
type: Object as PropType<Record<string, Record<string, string>>>,
default: () => ({})
},
onlyWave: {
type: Boolean,
default: false
}
})
const testStatus = toRef(props, 'testStatus'); const testStatus = toRef(props, 'testStatus');
@@ -332,6 +340,11 @@ watch(webMsgSend, function (newValue, oldValue) {
if (newValue.code == 25001) { //最终成功 if (newValue.code == 25001) { //最终成功
step2.value = 'success' step2.value = 'success'
step3.value = 'process' step3.value = 'process'
if(props.onlyWave === true && props.xiangXuIsShow === false )//只有录波,相序不选
{
step5.value = 'success'
ts.value = 'success'
}
activeIndex.value = 2 activeIndex.value = 2
} }
if (newValue.code == 25003) { //最终失败 if (newValue.code == 25003) { //最终失败
@@ -374,6 +387,11 @@ watch(webMsgSend, function (newValue, oldValue) {
isShowDialog.value = true isShowDialog.value = true
step3.value = 'success' step3.value = 'success'
step4.value = 'process' step4.value = 'process'
if(props.onlyWave === false && props.xiangXuIsShow === false )//相序不选
{
step5.value = 'success'
ts.value = 'success'
}
activeIndex.value = 3 activeIndex.value = 3
testDataStructure.value = newValue.data testDataStructure.value = newValue.data
} }
@@ -514,18 +532,30 @@ watch(webMsgSend, function (newValue, oldValue) {
// }) // })
watch(activeIndex, function (newValue, oldValue) { watch(activeIndex, function (newValue, oldValue) {
if(props.onlyWave === true)
if(props.onlyWave === true && props.xiangXuIsShow === false )
{ {
if (Number(collapseActiveName.value) < activeTotalNum.value - 2) { if (Number(collapseActiveName.value) < activeTotalNum.value) {
if(newValue == 2){
collapseActiveName.value = '2'
}else{
collapseActiveName.value = (newValue + 1).toString()
}
}
}
else if(props.onlyWave === true && props.xiangXuIsShow === true )
{
if (Number(collapseActiveName.value) < activeTotalNum.value) {
if(newValue == 2){ if(newValue == 2){
collapseActiveName.value = '4' collapseActiveName.value = '4'
}else{ }else{
collapseActiveName.value = (newValue + 1).toString() collapseActiveName.value = (newValue + 1).toString()
} }
} }
} else }
else
{ {
if (Number(collapseActiveName.value) < activeTotalNum.value) { if (Number(collapseActiveName.value) < activeTotalNum.value - 1) {
collapseActiveName.value = (newValue + 1).toString() collapseActiveName.value = (newValue + 1).toString()
} }

View File

@@ -58,6 +58,7 @@
:webMsgSend="webMsgSend" :webMsgSend="webMsgSend"
:mapping="channelMapping" :mapping="channelMapping"
:onlyWave="onlyWave" :onlyWave="onlyWave"
:xiangXuIsShow="xiangXuIsShow"
/> />
</keep-alive> </keep-alive>
<keep-alive> <keep-alive>
@@ -170,6 +171,9 @@ const preTestRef = ref<InstanceType<typeof ComparePreTest> | null>(null)
const testRef: any = ref(null) const testRef: any = ref(null)
const windowWidth = ref(window.innerWidth) const windowWidth = ref(window.innerWidth)
const computedDialogWidth = ref(0) const computedDialogWidth = ref(0)
const xiangXuIsShow = ref(true)//预检测是否展示相序检测
// 监听窗口大小变化 // 监听窗口大小变化
const handleResize = () => { const handleResize = () => {
windowWidth.value = window.innerWidth windowWidth.value = window.innerWidth
@@ -342,7 +346,8 @@ const handleSubmitAgain = async () => {
standardDevIds: standardDevIds.value, standardDevIds: standardDevIds.value,
pairs: pairs.value, pairs: pairs.value,
testItemList: [checkStore.selectTestItems.preTest, false, checkStore.selectTestItems.test], testItemList: [checkStore.selectTestItems.preTest, false, checkStore.selectTestItems.test],
userId: userStore.userInfo.id userId: userStore.userInfo.id,
phaseCheck: xiangXuIsShow.value ? 1 : 0,
}) })
preTestStatus.value = 'start' preTestStatus.value = 'start'
@@ -350,6 +355,26 @@ const handleSubmitAgain = async () => {
//开始检测 //开始检测
const handleSubmitFast = async () => { const handleSubmitFast = async () => {
try {
await ElMessageBox.confirm('是否需要进行相序检测?', '确认检测', {
confirmButtonText: '是',
cancelButtonText: '否',
distinguishCancelAndClose: true, // 区分取消和关闭操作
type: 'warning'
});
xiangXuIsShow.value = true;
} catch (action) {
// 区分用户点击关闭按钮和其他情况
if (action === 'cancel') {
// 用户点击了"否"按钮
xiangXuIsShow.value = false;
} else {
// 用户点击了关闭按钮或按了ESC键中断流程
return; // 直接返回,不继续执行后续代码
}
}
if (channelPairingRef.value) { if (channelPairingRef.value) {
const res = await channelPairingRef.value.handleNext() const res = await channelPairingRef.value.handleNext()
@@ -390,7 +415,8 @@ const handleSubmitFast = async () => {
pairs: pairs.value, pairs: pairs.value,
testItemList: [checkStore.selectTestItems.preTest, false, checkStore.selectTestItems.test], testItemList: [checkStore.selectTestItems.preTest, false, checkStore.selectTestItems.test],
userId: userStore.userInfo.id userId: userStore.userInfo.id,
phaseCheck: xiangXuIsShow.value ? 1 : 0,
}) })
preTestStatus.value = 'start' preTestStatus.value = 'start'
if (checkStore.selectTestItems.test) { if (checkStore.selectTestItems.test) {
@@ -414,7 +440,8 @@ const handleSubmitFast = async () => {
pairs: pairs.value, pairs: pairs.value,
testItemList: [checkStore.selectTestItems.preTest, false, checkStore.selectTestItems.test], testItemList: [checkStore.selectTestItems.preTest, false, checkStore.selectTestItems.test],
userId: userStore.userInfo.id userId: userStore.userInfo.id,
phaseCheck: xiangXuIsShow.value ? 1 : 0,
}) })
} }
TestStatus.value = 'start' TestStatus.value = 'start'
@@ -508,8 +535,6 @@ const sendPause = () => {
pauseTest() pauseTest()
} }
const sendResume = () => { const sendResume = () => {
resumeTest({ resumeTest({
userPageId: JwtUtil.getLoginName(), userPageId: JwtUtil.getLoginName(),
devIds: checkStore.devices.map(item => item.deviceId), devIds: checkStore.devices.map(item => item.deviceId),