|
@@ -88,6 +88,7 @@ const getTestProjectTopList = () => {
|
|
.then((result) => {
|
|
.then((result) => {
|
|
topProAllList.value = result.data;
|
|
topProAllList.value = result.data;
|
|
topProSelectedList.value = result.data.map((item) => item.id); // 默认选中全部
|
|
topProSelectedList.value = result.data.map((item) => item.id); // 默认选中全部
|
|
|
|
+ setTestingData();
|
|
})
|
|
})
|
|
.finally(() => {
|
|
.finally(() => {
|
|
getExcutingGlobalMachines();
|
|
getExcutingGlobalMachines();
|
|
@@ -188,16 +189,18 @@ const getSattisticData = () => {
|
|
|
|
|
|
// ===== websocket ====
|
|
// ===== websocket ====
|
|
const logList = ref<any[]>([]); //日志数据
|
|
const logList = ref<any[]>([]); //日志数据
|
|
-const testingWSData = computed(() => {
|
|
|
|
- // 根据选择的测试项目的名字作为key,值是空数组用来存放 日志数据
|
|
|
|
- console.log("aa", topProSelectedList);
|
|
|
|
|
|
+const testingWSData = ref();
|
|
|
|
+const setTestingData = () => {
|
|
let data = {};
|
|
let data = {};
|
|
topProSelectedList.value.forEach((id) => {
|
|
topProSelectedList.value.forEach((id) => {
|
|
// 根据id去所有的数据中找对应的项目
|
|
// 根据id去所有的数据中找对应的项目
|
|
let project = topProAllList.value.find((item) => item.id == id);
|
|
let project = topProAllList.value.find((item) => item.id == id);
|
|
data[project.projectName] = [];
|
|
data[project.projectName] = [];
|
|
});
|
|
});
|
|
- return data;
|
|
|
|
|
|
+ testingWSData.value = data;
|
|
|
|
+};
|
|
|
|
+watch(topProSelectedList, () => {
|
|
|
|
+ setTestingData();
|
|
});
|
|
});
|
|
|
|
|
|
const wsClient = useWebSocket(import.meta.env.VITE_WEBSOCKET_URL as string, {
|
|
const wsClient = useWebSocket(import.meta.env.VITE_WEBSOCKET_URL as string, {
|
|
@@ -221,70 +224,61 @@ const wsClient = useWebSocket(import.meta.env.VITE_WEBSOCKET_URL as string, {
|
|
console.log("长链接断开");
|
|
console.log("长链接断开");
|
|
},
|
|
},
|
|
onMessage: (msg) => {
|
|
onMessage: (msg) => {
|
|
- if (wsClient.data.value && JSON.parse(wsClient.data.value)) {
|
|
|
|
- let megData = JSON.parse(wsClient.data.value);
|
|
|
|
- console.log("长链接的消息 解析json后", megData);
|
|
|
|
- let msgType = megData?.msgtype ?? "";
|
|
|
|
-
|
|
|
|
- // 执行过程日志
|
|
|
|
- if (msgType == 1) {
|
|
|
|
- // let l = { data: { log: "label: 直流电源" }, msgtype: 1 };
|
|
|
|
- let logData = megData?.data?.log;
|
|
|
|
- if (logData) {
|
|
|
|
- logList.value.push(logData);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- // 测试数据
|
|
|
|
- else if (msgType === 2) {
|
|
|
|
- // {
|
|
|
|
- // "msgtype": 2,
|
|
|
|
- // "data": {
|
|
|
|
- // "status": 1, // 1:未测试 2:正在测试 3:测试合格 4:测试不合格
|
|
|
|
- // "dataContent": "",
|
|
|
|
- // "dataItem": "",
|
|
|
|
- // "EngineeringId": "",
|
|
|
|
- // "projectId": "",
|
|
|
|
- // }
|
|
|
|
- // }
|
|
|
|
- let logData = megData?.data;
|
|
|
|
-
|
|
|
|
- if (logData) {
|
|
|
|
- // 根据 projectId 去已经选择的项目中找到名字
|
|
|
|
- let project = topProAllList.value.find(
|
|
|
|
- (item) => item.id == logData.projectId
|
|
|
|
- );
|
|
|
|
-
|
|
|
|
- console.log("============", project);
|
|
|
|
- project.status = logData?.status;
|
|
|
|
- let proName = project?.projectName;
|
|
|
|
- testingWSData.value[proName].push(logData);
|
|
|
|
- console.log("=====222222", testingWSData.value);
|
|
|
|
- }
|
|
|
|
|
|
+ handleWSMessage();
|
|
|
|
+ },
|
|
|
|
+});
|
|
|
|
+
|
|
|
|
+const handleWSMessage = () => {
|
|
|
|
+ if (wsClient.data.value && JSON.parse(wsClient.data.value)) {
|
|
|
|
+ let megData = JSON.parse(wsClient.data.value);
|
|
|
|
+ // let megData = {
|
|
|
|
+ // data: {
|
|
|
|
+ // EngineeringId: "84",
|
|
|
|
+ // dataContent: "xxxxxx",
|
|
|
|
+ // dataItem: "测试值0",
|
|
|
|
+ // projectId: "9",
|
|
|
|
+ // status: 3,
|
|
|
|
+ // },
|
|
|
|
+ // msgtype: 2,
|
|
|
|
+ // };
|
|
|
|
+ console.log("长链接的消息 解析json后", megData);
|
|
|
|
+ let msgType = megData?.msgtype ?? "";
|
|
|
|
+
|
|
|
|
+ // 执行过程日志
|
|
|
|
+ if (msgType == 1) {
|
|
|
|
+ let logData = megData?.data?.log;
|
|
|
|
+ if (logData) {
|
|
|
|
+ logList.value.push(logData);
|
|
}
|
|
}
|
|
- // 测试仪器列表状态
|
|
|
|
- else if (msgType === 3) {
|
|
|
|
- // {
|
|
|
|
- // "msgtype": 3,
|
|
|
|
- // "data": [{
|
|
|
|
- // "deviceNo":"", /* 设备编号 */
|
|
|
|
- // "devcieState":"" /* 0不在线,1在线 */
|
|
|
|
- // }
|
|
|
|
- // ]
|
|
|
|
- // }
|
|
|
|
- let devData = megData?.data ?? [];
|
|
|
|
- devData.forEach((item) => {
|
|
|
|
- // 根据 instrumentId 去已经选择的仪器中找到名字
|
|
|
|
- let machine = testingMachines.value.find(
|
|
|
|
- (machine) => machine.instrumentId == item.instrumentId
|
|
|
|
- );
|
|
|
|
- if (machine) {
|
|
|
|
- machine.deviceState = item.deviceState; // 更新仪器状态
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
|
|
+ }
|
|
|
|
+ // 测试数据
|
|
|
|
+ else if (msgType === 2) {
|
|
|
|
+ let logData = megData?.data;
|
|
|
|
+ if (logData) {
|
|
|
|
+ // 根据 projectId 去已经选择的项目中找到名字
|
|
|
|
+ let project = topProAllList.value.find(
|
|
|
|
+ (item) => item.id == logData.projectId
|
|
|
|
+ );
|
|
|
|
+ project.status = logData.status;
|
|
|
|
+ let proName = project?.projectName;
|
|
|
|
+ testingWSData.value[proName].push(logData);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- },
|
|
|
|
-});
|
|
|
|
|
|
+ // 测试仪器列表状态
|
|
|
|
+ else if (msgType === 3) {
|
|
|
|
+ let devData = megData?.data ?? [];
|
|
|
|
+ devData.forEach((item) => {
|
|
|
|
+ // 根据 instrumentId 去已经选择的仪器中找到名字
|
|
|
|
+ let machine = testingMachines.value.find(
|
|
|
|
+ (machine) => machine.instrumentId == item.instrumentId
|
|
|
|
+ );
|
|
|
|
+ if (machine) {
|
|
|
|
+ machine.deviceState = item.deviceState; // 更新仪器状态
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+};
|
|
|
|
|
|
onBeforeUnmount(() => {
|
|
onBeforeUnmount(() => {
|
|
wsClient.close();
|
|
wsClient.close();
|
|
@@ -482,9 +476,9 @@ const checkStartEnable = (): boolean => {
|
|
<span>数据项</span>
|
|
<span>数据项</span>
|
|
<span>数据内容</span>
|
|
<span>数据内容</span>
|
|
</div>
|
|
</div>
|
|
- <el-scrollbar class="content-B-height-4">
|
|
|
|
|
|
+ <el-scrollbar class="content-B-height-4" v-if="testingWSData">
|
|
<div v-for="(proName, index) in Object.keys(testingWSData)">
|
|
<div v-for="(proName, index) in Object.keys(testingWSData)">
|
|
- <div class="cssj-tit">项目名称: {{ testingWSData }}</div>
|
|
|
|
|
|
+ <div class="cssj-tit">项目名称: {{ proName }}</div>
|
|
<div
|
|
<div
|
|
v-for="(data, index) in testingWSData[proName]"
|
|
v-for="(data, index) in testingWSData[proName]"
|
|
:key="index"
|
|
:key="index"
|
|
@@ -521,6 +515,9 @@ const checkStartEnable = (): boolean => {
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="right">
|
|
<div class="right">
|
|
|
|
+ <!-- <el-button type="primary" @click="handleWSMessage"-->
|
|
|
|
+ <!-- >测试假数据</el-button-->
|
|
|
|
+ <!-- >-->
|
|
<div>已用时:300s</div>
|
|
<div>已用时:300s</div>
|
|
<!-- <div class="test-btn progress" @click="startToRunTest">-->
|
|
<!-- <div class="test-btn progress" @click="startToRunTest">-->
|
|
<!-- <svg-icon icon-class="start-test" />-->
|
|
<!-- <svg-icon icon-class="start-test" />-->
|