Browse Source

rebase master

master
LiLongLong 5 months ago
parent
commit
ea86153233
  1. 2
      src/services/txn.ts
  2. 98
      src/views/graphite/components/HeatPosition.vue
  3. 183
      src/views/graphite/index.vue

2
src/services/txn.ts

@ -53,7 +53,7 @@ export function injectFluidsRecord(val: TaskCmdInjectFluidsRecord){
export function getTxnRecord(txn: string, category: TxnRecord["category"]) {
const record = txnCmdMap[txn];
// 只有属于指定category时,才返回,且返回后删除记录,节约内存
if (record.category === category) {
if (record && record.category === category) {
delete txnCmdMap[txn];
return record;
}

98
src/views/graphite/components/HeatPosition.vue

@ -1,9 +1,16 @@
<template>
<div class="heat_main" :style="`${trayInfo.isSelect ? 'border:4px solid rgb(66 215 76)' : 'border:4px solid #ffffff'}`">
<section class="heat_pos_text">
<div class="pos_text">{{ trayInfo.name }}</div>
<div class="pos_text pos_state">已放置</div>
</section>
<div
class="heat_main"
:style="`${
trayInfo.isSelect
? 'border:4px solid rgb(66 215 76)'
: 'border:4px solid #ffffff'
}`"
>
<section class="heat_pos_text">
<div class="pos_text">{{ trayInfo.name }}</div>
<div class="pos_text pos_state">{{trayInfo.heatAearStatus?.trayStatus == 1 ? '已放置' : '空闲'}}</div>
</section>
<section class="heat_pos" :style="`background:${trayInfo?.id ? '' : ''}`">
<div
@ -122,13 +129,13 @@ const selectedBackgroundColor = "#189952";
const readyColor = "#EE8223";
const executingColor = "#14A656";
onMounted(() => {
for (let i = 0; i < 16; i++) {
tubeList.value.push({
backgroudColor: "",
id: i + 1,
});
}
reSet(props.heatInfo);
for(let i = 0 ; i<16; i++){
tubeList.value.push({
backgroudColor:'',
id:i+1
})
}
reset(props.heatInfo)
});
const craftVisible = ref(false);
@ -138,35 +145,39 @@ const trayTempType = ref(false);
const tempVisible = ref(false);
//
let trayInfo = ref<any>(props.heatInfo || {});
let temperature_color = ref("#1677FF");
watch(
() => trayInfo,
(newVal: any) => {
if (newVal.heatAearStatus.isHeating) {
temperature_color.value = "#FE0A0A";
} else {
temperature_color.value = "#1677FF";
}
}
);
const reSet = (newVal: any) => {
let heatAreaData = { ...newVal };
if (heatAreaData.heatAearStatus?.trayStatus) {
if (heatAreaData.tubeList && heatAreaData.tubeList.length) {
heatAreaData.tubeList.forEach((item: any) => {
item.backgroudColor = selectedBackgroundColor;
item.isSelected = true;
});
} else {
tubeList.value.forEach((item: any) => {
item.backgroudColor = selectedBackgroundColor;
item.isSelected = true;
});
heatAreaData.tubeList = tubeList.value;
}
}
trayInfo.value = heatAreaData;
};
let temperature_color = ref('#1677FF')
watch(()=>props.heatInfo, (newVal:any) =>{
if(newVal.heatAearStatus.isHeating){
temperature_color.value = '#FE0A0A'
}else{
temperature_color.value = '#1677FF'
}
reset(newVal)
})
const reset = (heatInfo:any) => {
let heatAreaData = {...heatInfo}
if(heatAreaData.heatAearStatus?.trayStatus){
if(heatAreaData.tubeList && heatAreaData.tubeList.length){
heatAreaData.tubeList.forEach((item:any) => {
item.backgroudColor = selectedBackgroundColor
item.isSelected = true;
})
}else{
tubeList.value.forEach((item:any) => {
item.backgroudColor = selectedBackgroundColor
item.isSelected = true;
})
heatAreaData.tubeList = tubeList.value
}
}else{
tubeList.value.forEach((item:any) => {
item.backgroudColor = ''
item.isSelected = true;
})
}
trayInfo.value = heatAreaData
}
const heatAreaTemperature = ref(trayInfo.value.temperature || "");
const currentIndex = ref();
@ -184,11 +195,6 @@ const changeVisible = () => {
craftVisible.value = false;
};
//
const onChooseCraft = () => {
onSelectTray();
craftVisible.value = true;
};
const setTemperature = () => {
heatAreaTemperature.value = +trayInfo.value.temperature;
tempVisible.value = true;

183
src/views/graphite/index.vue

@ -24,17 +24,6 @@
拍照
</div>
</div>
<!-- <div v-else style="display: flex;justify-content: center;">
<div class="home_tube">
<div
class="inner-circle"
v-for="(tubeItem, index) in tubeList"
:key="index"
:style="{ background: tubeItem.color }"
></div>
</div>
</div> -->
<!--操作区-->
<div class="graphite_btn_container">
<van-button v-if="doorStatus" size="large" class="btn_size op_open_door" @click="onCloseDoor">关门</van-button>
@ -102,6 +91,7 @@ import { ref, reactive, onMounted, onUnmounted, watch } from "vue";
import { ElMessage, ElMessageBox } from "element-plus";
import { createWebSocket, sharedWsUrl } from "@/services/socket";
import HeatPosition from "./components/HeatPosition.vue";
import * as R from "ramda";
//@ts-ignore
import AddLiquid from "./components/AddLiquid.vue";
import OverlayModal from "@/components/OverlayModal.vue";
@ -146,9 +136,10 @@ watch(
);
watch(()=>statusStore.status,(newVal)=>{
console.log('newVal---', newVal)
if(newVal){
onUpateHeatAreaUI()
console.log('newVal------status---', newVal)
heatAearStatusList.value = newVal.heatArea
updateHeatList()
}
})
@ -159,21 +150,10 @@ let tubeList = reactive<any>([]);
const selectedColor = "#4F85FB";
const emptyColor = "#FFFFFF";
const taskName = ref("");
let deviceData = <any>{}
onMounted(() => {
//6
heatList.value = settingStore.heatAreaConfig.map((item:any) => {
//
item.isSelect = false;
heatAearStatusList.value.forEach((areaItem:any) => {
if(areaItem.hardwareId == item.hardwareId){
item = {
...item,
heatAearStatus:areaItem
}
}
})
return item;
});
initHeatList()
//16
tubeBaseConfig();
//socket
@ -193,10 +173,14 @@ onMounted(() => {
type: data.data.success ? "success" : "error",
});
}
}else if(data.type === "status"){
let allStatusData = data.data;
if (!R.equals(allStatusData, deviceData)) {
deviceData = allStatusData;
}
}
});
wsClient.connect();
onUnmounted(() => {
subscription.unsubscribe();
});
@ -213,7 +197,6 @@ const onSelectedTray = (heatAreaItem: any, type: string) => {
//
if (ids.includes(heatAreaItem.id)) {
heatAreaItem.isSelect = false;
selectedTrayList.value = selectedTrayList.value.filter((selectedItem: any) => selectedItem.id != heatAreaItem.id);
} else {
heatAreaItem.isSelect = true;
@ -223,14 +206,43 @@ const onSelectedTray = (heatAreaItem: any, type: string) => {
} else {
heatAreaItem.isSelect = true;
}
};
// heatList.value.forEach((item: any) => {
// if (item.id == heatAreaItem.id) {
// item = heatAreaItem;
const initHeatList = () => {
heatList.value = settingStore.heatAreaConfig.map((item:any) => {
//
item.isSelect = false;
heatAearStatusList.value.forEach((areaItem:any) => {
if(areaItem.hardwareId == item.hardwareId){
item = {
...item,
heatAearStatus:areaItem
}
}
})
return item;
});
}
// }
// });
};
const updateHeatList = () => {
const selectedIds = selectedTrayList.value.map((item: any) => item.id);
heatList.value = heatList.value.map((item:any) => {
//
heatAearStatusList.value.forEach((areaItem:any) => {
if(areaItem.hardwareId == item.hardwareId){
item = {
...item,
heatAearStatus:areaItem
}
}
})
if(selectedIds.includes(item.id)){
item.isSelect = true;
}
return item;
});
console.log('heatList.value---', heatList.value)
}
//
let hasCraftInfo = ref(false);
@ -302,8 +314,6 @@ const onCraftStart = () => {
}
};
//
const onCraftStop = () => {};
const tubeBaseConfig = () => {
//16
@ -318,12 +328,12 @@ const tubeBaseConfig = () => {
//
const liquidVisible = ref(false);
const onAddLiquid = () => {
//
//
const liquidArea = statusStore.status?.liquidArea;
if (liquidArea) {
liquidVisible.value = true;
if (liquidArea.liquidTray) {
liquidVisible.value = true;
} else {
ElMessage.error("加液区未检测到托盘,无法进行加液操作");
ElMessage.error("加液区未检测到托盘,无法进行加液操作");
}
};
@ -393,23 +403,6 @@ const onHandleSelectedCraft = (craftInfo: any) => {
changeVisible();
};
const onChooseTube = (tubeItem: any, index: any) => {
if (!tubeItem.id) return;
//@ts-ignore
let list = [...tubeList];
for (let i = 0; i < list.length; i++) {
let item = list[i];
if (index == i) {
item.color = selectedColor;
item.isSelected = true;
} else {
item.color = item.default ? item.default : emptyColor;
item.isSelected = false;
}
}
tubeList = [...list];
};
//
const onMoveToHeat = () => {
//1
@ -422,6 +415,12 @@ const onMoveToHeat = () => {
ElMessage.error("只能选择一个加热区");
return;
}
//3
if(!deviceData.liquidArea.liquidTray){
ElMessage.error("加液区没有托盘");
return;
}
let selectedDataItem = selectedTrayList.value[0];
//2,
let hardwareId = selectedDataItem.hardwareId;
@ -452,40 +451,24 @@ const onMoveToHeat = () => {
}
});
//UI
// let list = [...heatList.value];
// list.forEach((item: any) => {
// if (item.id == selectedDataItem.id) {
// item.tubeList = JSON.parse(JSON.stringify(tubeList));
// selectedDataItem.tubeList = JSON.parse(JSON.stringify(tubeList));
// //
// item.isSelect = true;
// }
// });
// tubeList.forEach((item: any) => {
// item.color = "";
// item.default = "";
// });
// console.log('list--222-', list)
// heatList.value = [...list];
};
//UI
const onUpateHeatAreaUI = () => {
//1
if (!selectedTrayList.value.length) {
ElMessage.error("请选择目标加热区");
return;
}
//2
if (selectedTrayList.value.length != 1) {
ElMessage.error("只能选择一个加热区");
return;
}
let selectedDataItem = selectedTrayList.value[0];
//UI
let list = [...heatList.value];
list.forEach((item: any) => {
if (item.id == selectedDataItem.id) {
item.tubeList = JSON.parse(JSON.stringify(tubeList));
selectedDataItem.tubeList = JSON.parse(JSON.stringify(tubeList));
//
item.isSelect = true;
}
});
tubeList.forEach((item: any) => {
item.color = "";
item.default = "";
});
heatList.value = [...list];
console.log('heatList.value---', heatList.value)
}
//()
const currentSelectedTube = ref({});
const onMoveToOperationArea = () => {
@ -500,10 +483,17 @@ const onMoveToOperationArea = () => {
ElMessage.error("只能选择一个加热区");
return false;
}
//3
if(deviceData && deviceData.liquidArea.liquidTray){
ElMessage.error("加液区已存在托盘");
return;
}
let selectedDataItem = selectedTrayList.value[0];
console.log('selectedDataItem----', selectedDataItem)
currentSelectedTube.value = selectedDataItem;
//3
if (!selectedDataItem.tubeList || !selectedDataItem.tubeList.length) {
if (selectedDataItem.heatAearStatus.trayStatus == 0) {
ElMessage.error("选择的加热区没有试管架");
return false;
}
@ -513,13 +503,12 @@ const onMoveToOperationArea = () => {
};
onSendCmd("moveToActionArea", params);
//UI
heatList.value.forEach((item: any) => {
if (item.id == selectedDataItem.id) {
tubeList = [...item.tubeList];
item.isSelect = false;
}
});
onSelectedTray(selectedDataItem, "isMove");
// heatList.value.forEach((item: any) => {
// if (item.id == selectedDataItem.id) {
// tubeList = [...item.tubeList];
// }
// });
// onSelectedTray(selectedDataItem, "isMove");
return true;
};

Loading…
Cancel
Save