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. 185
      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"]) { export function getTxnRecord(txn: string, category: TxnRecord["category"]) {
const record = txnCmdMap[txn]; const record = txnCmdMap[txn];
// 只有属于指定category时,才返回,且返回后删除记录,节约内存 // 只有属于指定category时,才返回,且返回后删除记录,节约内存
if (record.category === category) {
if (record && record.category === category) {
delete txnCmdMap[txn]; delete txnCmdMap[txn];
return record; return record;
} }

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

@ -1,9 +1,16 @@
<template> <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 ? '' : ''}`"> <section class="heat_pos" :style="`background:${trayInfo?.id ? '' : ''}`">
<div <div
@ -122,13 +129,13 @@ const selectedBackgroundColor = "#189952";
const readyColor = "#EE8223"; const readyColor = "#EE8223";
const executingColor = "#14A656"; const executingColor = "#14A656";
onMounted(() => { 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); const craftVisible = ref(false);
@ -138,35 +145,39 @@ const trayTempType = ref(false);
const tempVisible = ref(false); const tempVisible = ref(false);
// //
let trayInfo = ref<any>(props.heatInfo || {}); 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 heatAreaTemperature = ref(trayInfo.value.temperature || "");
const currentIndex = ref(); const currentIndex = ref();
@ -184,11 +195,6 @@ const changeVisible = () => {
craftVisible.value = false; craftVisible.value = false;
}; };
//
const onChooseCraft = () => {
onSelectTray();
craftVisible.value = true;
};
const setTemperature = () => { const setTemperature = () => {
heatAreaTemperature.value = +trayInfo.value.temperature; heatAreaTemperature.value = +trayInfo.value.temperature;
tempVisible.value = true; tempVisible.value = true;

185
src/views/graphite/index.vue

@ -24,17 +24,6 @@
拍照 拍照
</div> </div>
</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"> <div class="graphite_btn_container">
<van-button v-if="doorStatus" size="large" class="btn_size op_open_door" @click="onCloseDoor">关门</van-button> <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 { ElMessage, ElMessageBox } from "element-plus";
import { createWebSocket, sharedWsUrl } from "@/services/socket"; import { createWebSocket, sharedWsUrl } from "@/services/socket";
import HeatPosition from "./components/HeatPosition.vue"; import HeatPosition from "./components/HeatPosition.vue";
import * as R from "ramda";
//@ts-ignore //@ts-ignore
import AddLiquid from "./components/AddLiquid.vue"; import AddLiquid from "./components/AddLiquid.vue";
import OverlayModal from "@/components/OverlayModal.vue"; import OverlayModal from "@/components/OverlayModal.vue";
@ -146,9 +136,10 @@ watch(
); );
watch(()=>statusStore.status,(newVal)=>{ watch(()=>statusStore.status,(newVal)=>{
console.log('newVal---', newVal)
if(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 selectedColor = "#4F85FB";
const emptyColor = "#FFFFFF"; const emptyColor = "#FFFFFF";
const taskName = ref(""); const taskName = ref("");
let deviceData = <any>{}
onMounted(() => { onMounted(() => {
//6 //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 //16
tubeBaseConfig(); tubeBaseConfig();
//socket //socket
@ -193,10 +173,14 @@ onMounted(() => {
type: data.data.success ? "success" : "error", type: data.data.success ? "success" : "error",
}); });
} }
}else if(data.type === "status"){
let allStatusData = data.data;
if (!R.equals(allStatusData, deviceData)) {
deviceData = allStatusData;
}
} }
}); });
wsClient.connect(); wsClient.connect();
onUnmounted(() => { onUnmounted(() => {
subscription.unsubscribe(); subscription.unsubscribe();
}); });
@ -213,7 +197,6 @@ const onSelectedTray = (heatAreaItem: any, type: string) => {
// //
if (ids.includes(heatAreaItem.id)) { if (ids.includes(heatAreaItem.id)) {
heatAreaItem.isSelect = false; heatAreaItem.isSelect = false;
selectedTrayList.value = selectedTrayList.value.filter((selectedItem: any) => selectedItem.id != heatAreaItem.id); selectedTrayList.value = selectedTrayList.value.filter((selectedItem: any) => selectedItem.id != heatAreaItem.id);
} else { } else {
heatAreaItem.isSelect = true; heatAreaItem.isSelect = true;
@ -223,15 +206,44 @@ const onSelectedTray = (heatAreaItem: any, type: string) => {
} else { } else {
heatAreaItem.isSelect = true; 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); let hasCraftInfo = ref(false);
const onHeadleCraft = (areaItem: any) => { const onHeadleCraft = (areaItem: any) => {
@ -302,8 +314,6 @@ const onCraftStart = () => {
} }
}; };
//
const onCraftStop = () => {};
const tubeBaseConfig = () => { const tubeBaseConfig = () => {
//16 //16
@ -318,12 +328,12 @@ const tubeBaseConfig = () => {
// //
const liquidVisible = ref(false); const liquidVisible = ref(false);
const onAddLiquid = () => { const onAddLiquid = () => {
//
//
const liquidArea = statusStore.status?.liquidArea; const liquidArea = statusStore.status?.liquidArea;
if (liquidArea) {
liquidVisible.value = true;
if (liquidArea.liquidTray) {
liquidVisible.value = true;
} else { } else {
ElMessage.error("加液区未检测到托盘,无法进行加液操作");
ElMessage.error("加液区未检测到托盘,无法进行加液操作");
} }
}; };
@ -393,23 +403,6 @@ const onHandleSelectedCraft = (craftInfo: any) => {
changeVisible(); 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 = () => { const onMoveToHeat = () => {
//1 //1
@ -422,6 +415,12 @@ const onMoveToHeat = () => {
ElMessage.error("只能选择一个加热区"); ElMessage.error("只能选择一个加热区");
return; return;
} }
//3
if(!deviceData.liquidArea.liquidTray){
ElMessage.error("加液区没有托盘");
return;
}
let selectedDataItem = selectedTrayList.value[0]; let selectedDataItem = selectedTrayList.value[0];
//2, //2,
let hardwareId = selectedDataItem.hardwareId; 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 currentSelectedTube = ref({});
const onMoveToOperationArea = () => { const onMoveToOperationArea = () => {
@ -500,10 +483,17 @@ const onMoveToOperationArea = () => {
ElMessage.error("只能选择一个加热区"); ElMessage.error("只能选择一个加热区");
return false; return false;
} }
//3
if(deviceData && deviceData.liquidArea.liquidTray){
ElMessage.error("加液区已存在托盘");
return;
}
let selectedDataItem = selectedTrayList.value[0]; let selectedDataItem = selectedTrayList.value[0];
console.log('selectedDataItem----', selectedDataItem)
currentSelectedTube.value = selectedDataItem; currentSelectedTube.value = selectedDataItem;
//3 //3
if (!selectedDataItem.tubeList || !selectedDataItem.tubeList.length) {
if (selectedDataItem.heatAearStatus.trayStatus == 0) {
ElMessage.error("选择的加热区没有试管架"); ElMessage.error("选择的加热区没有试管架");
return false; return false;
} }
@ -513,13 +503,12 @@ const onMoveToOperationArea = () => {
}; };
onSendCmd("moveToActionArea", params); onSendCmd("moveToActionArea", params);
//UI //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; return true;
}; };

Loading…
Cancel
Save