diff --git a/frontend/.env.development b/frontend/.env.development index 8f13788..ca3d07d 100644 --- a/frontend/.env.development +++ b/frontend/.env.development @@ -19,6 +19,6 @@ VITE_API_URL=/api # 开发环境跨域代理,支持配置多个 -VITE_PROXY=[["/api","http://192.168.1.124:18092/"]] +VITE_PROXY=[["/api","http://192.168.1.127:18092/"]] #VITE_PROXY=[["/api","http://192.168.1.125:18092/"]] # VITE_PROXY=[["/api","http://192.168.1.138:8080/"]]张文 diff --git a/frontend/src/views/home/components/channelsTest.vue b/frontend/src/views/home/components/channelsTest.vue index 82a9d55..5ac20e3 100644 --- a/frontend/src/views/home/components/channelsTest.vue +++ b/frontend/src/views/home/components/channelsTest.vue @@ -241,21 +241,56 @@ watch(webMsgSend,function (newValue,oldValue){ item.devName === newValue.data.devName); if (firstCoefficientVO) { // 检查 firstCoefficientVO 是否存在 firstCoefficientVO.aVuData = parseFloat(newValue.data.aVuData).toFixed(4); - firstCoefficientVO.aVuXi = parseFloat((newValue.data.aVuXi / 10000).toFixed(4)).toString(); + + if (!isNaN(parseFloat(newValue.data.aVuXi)) && isFinite(newValue.data.aVuXi)) { + firstCoefficientVO.aVuXi = (parseFloat(newValue.data.aVuXi) / 10000).toFixed(4); + } else { + firstCoefficientVO.aVuXi = newValue.data.aVuXi; + } + firstCoefficientVO.bVuData = parseFloat(newValue.data.bVuData).toFixed(4); - firstCoefficientVO.bVuXi = parseFloat((newValue.data.bVuXi / 10000).toFixed(4)).toString(); + + if (!isNaN(parseFloat(newValue.data.bVuXi)) && isFinite(newValue.data.bVuXi)) { + firstCoefficientVO.bVuXi = (parseFloat(newValue.data.bVuXi) / 10000).toFixed(4); + } else { + firstCoefficientVO.bVuXi = newValue.data.bVuXi; + } + firstCoefficientVO.cVuData = parseFloat(newValue.data.cVuData).toFixed(4); - firstCoefficientVO.cVuXi = parseFloat((newValue.data.cVuXi / 10000).toFixed(4)).toString(); + + if (!isNaN(parseFloat(newValue.data.cVuXi)) && isFinite(newValue.data.cVuXi)) { + firstCoefficientVO.cVuXi = (parseFloat(newValue.data.cVuXi) / 10000).toFixed(4); + } else { + firstCoefficientVO.cVuXi = newValue.data.cVuXi; + } + firstCoefficientVO.aIeData = parseFloat(newValue.data.aIeData).toFixed(4); - firstCoefficientVO.aIeXi = parseFloat((newValue.data.aVuXi / 10000).toFixed(4)).toString(); + + if (!isNaN(parseFloat(newValue.data.aIeXi)) && isFinite(newValue.data.aIeXi)) { + firstCoefficientVO.aIeXi = (parseFloat(newValue.data.aIeXi) / 10000).toFixed(4); + } else { + firstCoefficientVO.aIeXi = newValue.data.aIeXi; + } + firstCoefficientVO.bIeData = parseFloat(newValue.data.bIeData).toFixed(4); - firstCoefficientVO.bIeXi = parseFloat((newValue.data.bVuXi / 10000).toFixed(4)).toString(); + + if (!isNaN(parseFloat(newValue.data.bIeXi)) && isFinite(newValue.data.bIeXi)) { + firstCoefficientVO.bIeXi = (parseFloat(newValue.data.bIeXi) / 10000).toFixed(4); + } else { + firstCoefficientVO.bIeXi = newValue.data.bIeXi; + } + firstCoefficientVO.cIeData = parseFloat(newValue.data.cIeData).toFixed(4); - firstCoefficientVO.cIeXi = parseFloat((newValue.data.cVuXi / 10000).toFixed(4)).toString(); + + if (!isNaN(parseFloat(newValue.data.cIeXi)) && isFinite(newValue.data.cIeXi)) { + firstCoefficientVO.cIeXi = (parseFloat(newValue.data.cIeXi) / 10000).toFixed(4); + } else { + firstCoefficientVO.cIeXi = newValue.data.cIeXi; + } //console.log(newValue.data.devName + '对象:', firstCoefficientVO); activeIndex.value++; } else { - console.log('未找到匹配的'+ newValue.data.devName+'对象'); + //console.log('未找到匹配的'+ newValue.data.devName+'对象'); } } else { //console.log(newValue.data.devName + '数组为空'); diff --git a/frontend/src/views/home/components/table.vue b/frontend/src/views/home/components/table.vue index 347b417..5054308 100644 --- a/frontend/src/views/home/components/table.vue +++ b/frontend/src/views/home/components/table.vue @@ -452,12 +452,12 @@ const getTableList = async (params: any) => { 'name':form.value.search }); }else{//点击树根节点,表格显示无数据 - return getBoundPqDevList({'planId': '', - 'checkStateList': [0], - 'checkResult': form.value.checkResult, - 'reportState': form.value.checkReportStatus, - 'name':form.value.search - }); + // return getBoundPqDevList({'planId': '', + // 'checkStateList': [0], + // 'checkResult': form.value.checkResult, + // 'reportState': form.value.checkReportStatus, + // 'name':form.value.search + // }); } }; @@ -958,11 +958,11 @@ const handleTest = async (val:string) => { return } - // 检查 socketClient.Instance 是否存在 - if (!socketClient.Instance) { - console.error('WebSocket 客户端实例不存在'); - return; - } + // // 检查 socketClient.Instance 是否存在 + // if (!socketClient.Instance) { + // console.error('WebSocket 客户端实例不存在'); + // return; + // } //开始创建webSocket客户端 const data = reactive({ diff --git a/frontend/src/views/home/components/test.vue b/frontend/src/views/home/components/test.vue index d322e70..0583dbe 100644 --- a/frontend/src/views/home/components/test.vue +++ b/frontend/src/views/home/components/test.vue @@ -12,6 +12,12 @@ :icon="VideoPause" @click="emit('sendPause')">停止检测 + + + + + 暂停中 + @@ -145,6 +151,7 @@ import {CheckData} from "@/api/check/interface" import {useCheckStore} from "@/stores/modules/check"; import {ElMessage, ElMessageBox} from "element-plus"; import {getBigTestItem} from "@/api/check/test"; +import {tryHideFullScreenLoading} from "@/components/Loading/fullScreen"; const checkStore = useCheckStore() @@ -422,18 +429,20 @@ watch(webMsgSend, function (newValue, oldValue) { break; } break; - case 'Pause_Success': - ElMessage.success('暂停成功') - handlePauseTest() - emit('update:testStatus', 'paused') + case 'preStopTest': + if(newValue.operateCode == 'stop'){ + ElMessage.success('暂停成功') + emit('update:testStatus', 'paused') + handlePauseTest() + } break; // case 'Pause_Fail': // ElMessage.error('暂停失败') // break; case 'Resume_Success': ElMessage.success('开始继续检测') - handleResumeTest() emit('update:testStatus', 'process') + handleResumeTest() break; // case 'Resume_Fail': // ElMessage.error('无法继续检测') @@ -1281,7 +1290,7 @@ const handlePauseTest = () => { }; const handleResumeTest = () => { - activeIndex++ + //activeIndex++ startData.value = new Date(); testLogList.push({ type: 'info', diff --git a/frontend/src/views/home/components/testPopup.vue b/frontend/src/views/home/components/testPopup.vue index 1e37b98..4fb77e6 100644 --- a/frontend/src/views/home/components/testPopup.vue +++ b/frontend/src/views/home/components/testPopup.vue @@ -42,6 +42,12 @@ 初始化中 + + + + + 暂停中 + @@ -78,6 +84,7 @@ import {Device} from '@/api/device/interface/device'; import socketClient from '@/utils/webSocketClient'; import {useCheckStore} from "@/stores/modules/check"; import {startPreTest, pauseTest, resumeTest} from '@/api/socket/socket' +import {showFullScreenLoading} from "@/components/Loading/fullScreen"; //import SvgIcon from '@/components/SvgIcon.vue'; @@ -370,11 +377,8 @@ watch(ActiveStatue, function (newValue, oldValue) { const sendPause = () => { console.log('发起暂停请求') - pauseTest().then(res => { - Object.assign(webMsgSend.value, { - requestId: 'Pause_Success' - }) - }) + ActiveStatue.value = 'paused_ing' + pauseTest() } const sendResume = () => { console.log('发起继续检测请求') diff --git a/frontend/src/views/home/components/tree.vue b/frontend/src/views/home/components/tree.vue index b611786..69afa2c 100644 --- a/frontend/src/views/home/components/tree.vue +++ b/frontend/src/views/home/components/tree.vue @@ -69,6 +69,7 @@ const getTreeData = (val: any) => { // 使用 nextTick 确保在 DOM 更新后调用 setCurrentKey nextTick(() => { treeRef.value?.setCurrentKey(node.id); + idd.value = node.id }); //console.log(checkStore.planId,checkStore.planCode,checkStore.scriptId,checkStore.errorSysId) } @@ -87,7 +88,22 @@ watch( deep: true, }, ) + +const idd = ref('') const handleNodeClick = (data: Plan.ResPlan) => { + + if (data.name === '未检' || data.name === '检测中' || data.name === '检测完成') { + // 如果是父节点,不执行任何操作 + //console.log('父节点不执行任何操作'); + // 设置当前高亮节点 + nextTick(() => { + treeRef.value?.setCurrentKey(idd.value); + }); + return; + } + + idd.value = data.id + checkStore.setPlanId(data.id) checkStore.setPlanCode(data.code) checkStore.setScriptId(data.scriptId) diff --git a/frontend/src/views/home/tabs/dashboard.vue b/frontend/src/views/home/tabs/dashboard.vue index e1dd53b..663453d 100644 --- a/frontend/src/views/home/tabs/dashboard.vue +++ b/frontend/src/views/home/tabs/dashboard.vue @@ -43,6 +43,7 @@ :customData="{ title: '设备检测状态', textAlign: 'left', + }" :legendData="{ icon: 'circle', @@ -302,36 +303,38 @@ const getPieData = async (id: string) => { } }) + + // 检查 checkStateCount 是否全为 0 + const allZero = Object.values(checkStateCount).every(count => count === 0); + chartsData1.value = [ + { value: allZero ? 0 : checkStateCount[0] === 0 ? null : checkStateCount[0], name: '未检', itemStyle: { color: '#fac858' } }, + { value: allZero ? 0 : checkStateCount[1] === 0 ? null : checkStateCount[1], name: '检测中', itemStyle: { color: '#ee6666' } }, + { value: allZero ? 0 : checkStateCount[2] === 0 ? null : checkStateCount[2], name: '检测完成', itemStyle: { color: '#91cc75' } }, + { value: allZero ? 0 : checkStateCount[3] === 0 ? null : checkStateCount[3], name: '归档', itemStyle: { color: '#5470c6' } }, + ]; + + // 同样处理 chartsData2 和 chartsData3 + const allZeroResult = Object.values(checkResultCount).every(count => count === 0); + chartsData2.value = [ + { value: allZeroResult ? 0 : checkResultCount[2] === 0 ? null : checkResultCount[2], name: '未检', itemStyle: { color: '#fac858' } }, + { value: allZeroResult ? 0 : checkResultCount[0] === 0 ? null : checkResultCount[0], name: '不符合', itemStyle: { color: '#ee6666' } }, + { value: allZeroResult ? 0 : checkResultCount[1] === 0 ? null : checkResultCount[1], name: '符合', itemStyle: { color: '#91cc75' } }, + ]; + + + // 检查 reportStateCount 是否全为 0 + const allZeroReport = Object.values(reportStateCount).every(count => count === 0); + chartsData3.value = [ + { value: allZeroReport ? 0 : reportStateCount[2] === 0 ? null : reportStateCount[2], name: '未检', itemStyle: { color: '#fac858' } }, + { value: allZeroReport ? 0 : reportStateCount[0] === 0 ? null : reportStateCount[0], name: '未生成', itemStyle: { color: '#ee6666' } }, + { value: allZeroReport ? 0 : reportStateCount[1] === 0 ? null : reportStateCount[1], name: '已生成', itemStyle: { color: '#91cc75' } }, + ]; }else{ planName.value = '所选计划:' } -// 检查 checkStateCount 是否全为 0 -const allZero = Object.values(checkStateCount).every(count => count === 0); -chartsData1.value = [ - { value: allZero ? 0 : checkStateCount[0] === 0 ? null : checkStateCount[0], name: '未检', itemStyle: { color: '#fac858' } }, - { value: allZero ? 0 : checkStateCount[1] === 0 ? null : checkStateCount[1], name: '检测中', itemStyle: { color: '#ee6666' } }, - { value: allZero ? 0 : checkStateCount[2] === 0 ? null : checkStateCount[2], name: '检测完成', itemStyle: { color: '#91cc75' } }, - { value: allZero ? 0 : checkStateCount[3] === 0 ? null : checkStateCount[3], name: '归档', itemStyle: { color: '#5470c6' } }, -]; -// 同样处理 chartsData2 和 chartsData3 -const allZeroResult = Object.values(checkResultCount).every(count => count === 0); -chartsData2.value = [ - { value: allZeroResult ? 0 : checkResultCount[2] === 0 ? null : checkResultCount[2], name: '未检', itemStyle: { color: '#fac858' } }, - { value: allZeroResult ? 0 : checkResultCount[0] === 0 ? null : checkResultCount[0], name: '不符合', itemStyle: { color: '#ee6666' } }, - { value: allZeroResult ? 0 : checkResultCount[1] === 0 ? null : checkResultCount[1], name: '符合', itemStyle: { color: '#91cc75' } }, -]; - - -// 检查 reportStateCount 是否全为 0 -const allZeroReport = Object.values(reportStateCount).every(count => count === 0); -chartsData3.value = [ - { value: allZeroReport ? 0 : reportStateCount[2] === 0 ? null : reportStateCount[2], name: '未检', itemStyle: { color: '#fac858' } }, - { value: allZeroReport ? 0 : reportStateCount[0] === 0 ? null : reportStateCount[0], name: '未生成', itemStyle: { color: '#ee6666' } }, - { value: allZeroReport ? 0 : reportStateCount[1] === 0 ? null : reportStateCount[1], name: '已生成', itemStyle: { color: '#91cc75' } }, -]; pieRef1.value.init() pieRef2.value.init()