|
|
@ -1,6 +1,8 @@ |
|
|
|
<script setup lang="ts"> |
|
|
|
import { startCraft } from 'apis/crafts' |
|
|
|
import AddLiquid from 'components/home/AddLiquid/index.vue' |
|
|
|
import FillSolution from 'components/home/FillSolution/index.vue' |
|
|
|
import SelectCraft from 'components/home/SelectCraft/index.vue' |
|
|
|
import SetTemperature from 'components/home/SetTemperature/index.vue' |
|
|
|
import StartExperiment from 'components/home/StartExperiment/index.vue' |
|
|
|
import Tube from 'components/home/Tube/index.vue' |
|
|
@ -31,35 +33,45 @@ const receiveMessage = (data: Socket.cmdData) => { |
|
|
|
|
|
|
|
const startVisible = ref(false) |
|
|
|
|
|
|
|
// const startExperimentHandle = () => { |
|
|
|
// // TODO 需要判断有没有进行中的实验 |
|
|
|
// startVisible.value = true |
|
|
|
// } |
|
|
|
const startExperimentHandle = () => { |
|
|
|
// TODO 需要判断有没有进行中的实验 |
|
|
|
startVisible.value = true |
|
|
|
} |
|
|
|
|
|
|
|
const selectCraftVisible = ref(false) |
|
|
|
const selectCraft = () => { |
|
|
|
const count = homeStore.heatAreaList.filter(item => item.selected).length |
|
|
|
if (!count) { |
|
|
|
FtMessage.warning('请选择加热区') |
|
|
|
return |
|
|
|
} |
|
|
|
selectCraftVisible.value = true |
|
|
|
} |
|
|
|
|
|
|
|
// const selectCraftVisible = ref(false) |
|
|
|
// const selectCraft = () => { |
|
|
|
// const count = homeStore.heatAreaList.filter(item => item.selected).length |
|
|
|
// if (!count) { |
|
|
|
// FtMessage.warning('请选择加热区') |
|
|
|
// return |
|
|
|
// } |
|
|
|
// selectCraftVisible.value = true |
|
|
|
// } |
|
|
|
// |
|
|
|
// const executeCraftHandle = async () => { |
|
|
|
// const selectedHeatAreas = homeStore.heatAreaList.filter(item => item.selected) |
|
|
|
// if (!selectedHeatAreas.length) { |
|
|
|
// FtMessage.warning('请选择加热区') |
|
|
|
// return |
|
|
|
// } |
|
|
|
// // TODO 需要判断有没有选择工艺 |
|
|
|
// for (let i = 0; i < selectedHeatAreas.length; i++) { |
|
|
|
// await startCraft({ |
|
|
|
// heatId: selectedHeatAreas[i].value, |
|
|
|
// }) |
|
|
|
// } |
|
|
|
// FtMessage.success('工艺已开始执行') |
|
|
|
// } |
|
|
|
const executeCraftHandle = async () => { |
|
|
|
const selectedHeatAreas = homeStore.heatAreaList.filter(item => item.selected) |
|
|
|
if (!selectedHeatAreas.length) { |
|
|
|
FtMessage.warning('请选择加热区') |
|
|
|
return |
|
|
|
} |
|
|
|
const craftError: string[] = [] |
|
|
|
selectedHeatAreas.forEach((item) => { |
|
|
|
const trays = systemStore.systemStatus.tray?.find(h => h.heatModuleId === item.value) |
|
|
|
if (trays?.crafts?.state !== 'READY') { |
|
|
|
craftError.push(item.label) |
|
|
|
} |
|
|
|
}) |
|
|
|
if (craftError.length) { |
|
|
|
FtMessage.warning(`${craftError.join(',')}的工艺不是等待执行的状态`) |
|
|
|
return |
|
|
|
} |
|
|
|
for (let i = 0; i < selectedHeatAreas.length; i++) { |
|
|
|
await startCraft({ |
|
|
|
heatId: selectedHeatAreas[i].value, |
|
|
|
}) |
|
|
|
} |
|
|
|
FtMessage.success('工艺已开始执行') |
|
|
|
} |
|
|
|
|
|
|
|
const setTemperatureVisible = ref(false) |
|
|
|
const currentTemperatureId = ref('') |
|
|
@ -215,25 +227,44 @@ const move_to_solution_area = async () => { |
|
|
|
|
|
|
|
const heat_start = async () => { |
|
|
|
const selectedHeatAreas = homeStore.heatAreaList.filter(item => item.selected) |
|
|
|
if (!selectedHeatAreas.length || selectedHeatAreas.length > 1) { |
|
|
|
FtMessage.warning('请选择一个加热区') |
|
|
|
if (!selectedHeatAreas.length) { |
|
|
|
FtMessage.warning('请选择加热区') |
|
|
|
return |
|
|
|
} |
|
|
|
if (systemStore.systemStatus.heatModule.find(item => item.moduleCode === selectedHeatAreas[0].value)?.targetTemperature) { |
|
|
|
FtMessage.warning('请先设置温度') |
|
|
|
const temperatureError: string[] = [] |
|
|
|
const heatingError: string[] = [] |
|
|
|
const fanError: string[] = [] |
|
|
|
selectedHeatAreas.forEach((item) => { |
|
|
|
const heatModule = systemStore.systemStatus.heatModule.find(h => h.moduleCode === item.value) |
|
|
|
if (!heatModule?.targetTemperature) { |
|
|
|
temperatureError.push(item.label) |
|
|
|
} |
|
|
|
if (heatModule?.heating) { |
|
|
|
heatingError.push(item.label) |
|
|
|
} |
|
|
|
if (heatModule?.fanOpen) { |
|
|
|
fanError.push(item.label) |
|
|
|
} |
|
|
|
}) |
|
|
|
if (temperatureError.length) { |
|
|
|
FtMessage.warning(`${temperatureError.join(', ')}的加热区未设置温度`) |
|
|
|
return |
|
|
|
} |
|
|
|
if (heatingError.length) { |
|
|
|
FtMessage.warning(`${heatingError.join(', ')}的加热区已经在加热了`) |
|
|
|
return |
|
|
|
} |
|
|
|
if (systemStore.systemStatus.heatModule.find(item => item.moduleCode === selectedHeatAreas[0].value)?.heating) { |
|
|
|
FtMessage.warning('已经在加热了') |
|
|
|
if (fanError.length) { |
|
|
|
FtMessage.warning(`${heatingError.join(', ')}的加热区正在散热中`) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
currentCommandId = Date.now().toString() |
|
|
|
const params = { |
|
|
|
commandId: currentCommandId, |
|
|
|
command: 'heat_start', |
|
|
|
params: { |
|
|
|
heatId: selectedHeatAreas[0].value, |
|
|
|
temperature: systemStore.systemStatus.heatModule.find(item => item.moduleCode === selectedHeatAreas[0].value)?.targetTemperature, |
|
|
|
heatId: selectedHeatAreas.map(item => item.value), |
|
|
|
}, |
|
|
|
} |
|
|
|
await homeStore.sendControl(params) |
|
|
@ -241,12 +272,19 @@ const heat_start = async () => { |
|
|
|
|
|
|
|
const heat_stop = async () => { |
|
|
|
const selectedHeatAreas = homeStore.heatAreaList.filter(item => item.selected) |
|
|
|
if (!selectedHeatAreas.length || selectedHeatAreas.length > 1) { |
|
|
|
FtMessage.warning('请选择一个加热区') |
|
|
|
if (!selectedHeatAreas.length) { |
|
|
|
FtMessage.warning('请选择加热区') |
|
|
|
return |
|
|
|
} |
|
|
|
if (!systemStore.systemStatus.heatModule.find(item => item.moduleCode === selectedHeatAreas[0].value)?.heating) { |
|
|
|
FtMessage.warning('加热区未加热') |
|
|
|
const heatingError: string[] = [] |
|
|
|
selectedHeatAreas.forEach((item) => { |
|
|
|
const heatModule = systemStore.systemStatus.heatModule.find(h => h.moduleCode === item.value) |
|
|
|
if (!heatModule?.heating) { |
|
|
|
heatingError.push(item.label) |
|
|
|
} |
|
|
|
}) |
|
|
|
if (heatingError.length) { |
|
|
|
FtMessage.warning(`${heatingError.join(', ')}的加热区未在加热`) |
|
|
|
return |
|
|
|
} |
|
|
|
currentCommandId = Date.now().toString() |
|
|
@ -254,7 +292,7 @@ const heat_stop = async () => { |
|
|
|
commandId: currentCommandId, |
|
|
|
command: 'heat_stop', |
|
|
|
params: { |
|
|
|
heatId: selectedHeatAreas[0].value, |
|
|
|
heatId: selectedHeatAreas.map(item => item.value), |
|
|
|
}, |
|
|
|
} |
|
|
|
await homeStore.sendControl(params) |
|
|
@ -262,12 +300,27 @@ const heat_stop = async () => { |
|
|
|
|
|
|
|
const fan_start = async () => { |
|
|
|
const selectedHeatAreas = homeStore.heatAreaList.filter(item => item.selected) |
|
|
|
if (!selectedHeatAreas.length || selectedHeatAreas.length > 1) { |
|
|
|
FtMessage.warning('请选择一个加热区') |
|
|
|
if (!selectedHeatAreas.length) { |
|
|
|
FtMessage.warning('请选择加热区') |
|
|
|
return |
|
|
|
} |
|
|
|
if (systemStore.systemStatus.heatModule.find(item => item.moduleCode === selectedHeatAreas[0].value)?.fanOpen) { |
|
|
|
FtMessage.warning('已经在散热了') |
|
|
|
const fanError: string[] = [] |
|
|
|
const heatingError: string[] = [] |
|
|
|
selectedHeatAreas.forEach((item) => { |
|
|
|
const heatModule = systemStore.systemStatus.heatModule.find(h => h.moduleCode === item.value) |
|
|
|
if (heatModule?.fanOpen) { |
|
|
|
fanError.push(item.label) |
|
|
|
} |
|
|
|
if (heatModule?.heating) { |
|
|
|
heatingError.push(item.label) |
|
|
|
} |
|
|
|
}) |
|
|
|
if (fanError.length) { |
|
|
|
FtMessage.warning(`${fanError.join(', ')}的加热区已经在散热了`) |
|
|
|
return |
|
|
|
} |
|
|
|
if (heatingError.length) { |
|
|
|
FtMessage.warning(`${fanError.join(', ')}的加热区正在散热中`) |
|
|
|
return |
|
|
|
} |
|
|
|
currentCommandId = Date.now().toString() |
|
|
@ -275,7 +328,7 @@ const fan_start = async () => { |
|
|
|
commandId: currentCommandId, |
|
|
|
command: 'fan_start', |
|
|
|
params: { |
|
|
|
heatId: selectedHeatAreas[0].value, |
|
|
|
heatId: selectedHeatAreas.map(item => item.value), |
|
|
|
}, |
|
|
|
} |
|
|
|
await homeStore.sendControl(params) |
|
|
@ -283,12 +336,19 @@ const fan_start = async () => { |
|
|
|
|
|
|
|
const fan_stop = async () => { |
|
|
|
const selectedHeatAreas = homeStore.heatAreaList.filter(item => item.selected) |
|
|
|
if (!selectedHeatAreas.length || selectedHeatAreas.length > 1) { |
|
|
|
FtMessage.warning('请选择一个加热区') |
|
|
|
if (!selectedHeatAreas.length) { |
|
|
|
FtMessage.warning('请选择加热区') |
|
|
|
return |
|
|
|
} |
|
|
|
if (!systemStore.systemStatus.heatModule.find(item => item.moduleCode === selectedHeatAreas[0].value)?.fanOpen) { |
|
|
|
FtMessage.warning('加热区未散热') |
|
|
|
const fanError: string[] = [] |
|
|
|
selectedHeatAreas.forEach((item) => { |
|
|
|
const heatModule = systemStore.systemStatus.heatModule.find(h => h.moduleCode === item.value) |
|
|
|
if (!heatModule?.fanOpen) { |
|
|
|
fanError.push(item.label) |
|
|
|
} |
|
|
|
}) |
|
|
|
if (fanError.length) { |
|
|
|
FtMessage.warning(`${fanError.join(', ')}的加热区没有在散热`) |
|
|
|
return |
|
|
|
} |
|
|
|
currentCommandId = Date.now().toString() |
|
|
@ -296,7 +356,7 @@ const fan_stop = async () => { |
|
|
|
commandId: currentCommandId, |
|
|
|
command: 'fan_stop', |
|
|
|
params: { |
|
|
|
heatId: selectedHeatAreas[0].value, |
|
|
|
heatId: selectedHeatAreas.map(item => item.value), |
|
|
|
}, |
|
|
|
} |
|
|
|
await homeStore.sendControl(params) |
|
|
@ -304,12 +364,19 @@ const fan_stop = async () => { |
|
|
|
|
|
|
|
const tray_up = async () => { |
|
|
|
const selectedHeatAreas = homeStore.heatAreaList.filter(item => item.selected) |
|
|
|
if (!selectedHeatAreas.length || selectedHeatAreas.length > 1) { |
|
|
|
FtMessage.warning('请选择一个加热区') |
|
|
|
if (!selectedHeatAreas.length) { |
|
|
|
FtMessage.warning('请选择加热区') |
|
|
|
return |
|
|
|
} |
|
|
|
if (systemStore.systemStatus.heatModule.find(item => item.moduleCode === selectedHeatAreas[0].value)?.trayUp === 1) { |
|
|
|
FtMessage.warning('托盘已抬起') |
|
|
|
const trayUpError: string[] = [] |
|
|
|
selectedHeatAreas.forEach((item) => { |
|
|
|
const heatModule = systemStore.systemStatus.heatModule.find(h => h.moduleCode === item.value) |
|
|
|
if (heatModule?.trayUp === 1) { |
|
|
|
trayUpError.push(item.label) |
|
|
|
} |
|
|
|
}) |
|
|
|
if (trayUpError.length) { |
|
|
|
FtMessage.warning(`${trayUpError.join(', ')}的加热区托盘已抬起`) |
|
|
|
return |
|
|
|
} |
|
|
|
currentCommandId = Date.now().toString() |
|
|
@ -317,7 +384,7 @@ const tray_up = async () => { |
|
|
|
commandId: currentCommandId, |
|
|
|
command: 'tray_up', |
|
|
|
params: { |
|
|
|
heatId: selectedHeatAreas[0].value, |
|
|
|
heatId: selectedHeatAreas.map(item => item.value), |
|
|
|
}, |
|
|
|
} |
|
|
|
await homeStore.sendControl(params) |
|
|
@ -325,12 +392,19 @@ const tray_up = async () => { |
|
|
|
|
|
|
|
const tray_down = async () => { |
|
|
|
const selectedHeatAreas = homeStore.heatAreaList.filter(item => item.selected) |
|
|
|
if (!selectedHeatAreas.length || selectedHeatAreas.length > 1) { |
|
|
|
FtMessage.warning('请选择一个加热区') |
|
|
|
if (!selectedHeatAreas.length) { |
|
|
|
FtMessage.warning('请选择加热区') |
|
|
|
return |
|
|
|
} |
|
|
|
if (systemStore.systemStatus.heatModule.find(item => item.moduleCode === selectedHeatAreas[0].value)?.trayUp === 0) { |
|
|
|
FtMessage.warning('托盘已降下') |
|
|
|
const trayUpError: string[] = [] |
|
|
|
selectedHeatAreas.forEach((item) => { |
|
|
|
const heatModule = systemStore.systemStatus.heatModule.find(h => h.moduleCode === item.value) |
|
|
|
if (heatModule?.trayUp === 0) { |
|
|
|
trayUpError.push(item.label) |
|
|
|
} |
|
|
|
}) |
|
|
|
if (trayUpError.length) { |
|
|
|
FtMessage.warning(`${trayUpError.join(', ')}的加热区托盘未抬起`) |
|
|
|
return |
|
|
|
} |
|
|
|
currentCommandId = Date.now().toString() |
|
|
@ -338,7 +412,7 @@ const tray_down = async () => { |
|
|
|
commandId: currentCommandId, |
|
|
|
command: 'tray_down', |
|
|
|
params: { |
|
|
|
heatId: selectedHeatAreas[0].value, |
|
|
|
heatId: selectedHeatAreas.map(item => item.value), |
|
|
|
}, |
|
|
|
} |
|
|
|
await homeStore.sendControl(params) |
|
|
@ -415,30 +489,30 @@ const take_photo = async () => { |
|
|
|
</ft-button> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
<!-- <el-row :gutter="10"> --> |
|
|
|
<!-- <el-col :span="12"> --> |
|
|
|
<!-- <ft-button @click="startExperimentHandle"> --> |
|
|
|
<!-- 开始实验 --> |
|
|
|
<!-- </ft-button> --> |
|
|
|
<!-- </el-col> --> |
|
|
|
<!-- <el-col :span="12"> --> |
|
|
|
<!-- <ft-button disabled> --> |
|
|
|
<!-- 停止实验 --> |
|
|
|
<!-- </ft-button> --> |
|
|
|
<!-- </el-col> --> |
|
|
|
<!-- </el-row> --> |
|
|
|
<!-- <el-row :gutter="10"> --> |
|
|
|
<!-- <el-col :span="12"> --> |
|
|
|
<!-- <ft-button @click="selectCraft"> --> |
|
|
|
<!-- 选择工艺 --> |
|
|
|
<!-- </ft-button> --> |
|
|
|
<!-- </el-col> --> |
|
|
|
<!-- <el-col :span="12"> --> |
|
|
|
<!-- <ft-button :click-handle="executeCraftHandle"> --> |
|
|
|
<!-- 执行工艺 --> |
|
|
|
<!-- </ft-button> --> |
|
|
|
<!-- </el-col> --> |
|
|
|
<!-- </el-row> --> |
|
|
|
<el-row :gutter="10"> |
|
|
|
<el-col :span="12"> |
|
|
|
<ft-button @click="startExperimentHandle"> |
|
|
|
开始实验 |
|
|
|
</ft-button> |
|
|
|
</el-col> |
|
|
|
<el-col :span="12"> |
|
|
|
<ft-button disabled> |
|
|
|
停止实验 |
|
|
|
</ft-button> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
<el-row :gutter="10"> |
|
|
|
<el-col :span="12"> |
|
|
|
<ft-button @click="selectCraft"> |
|
|
|
选择工艺 |
|
|
|
</ft-button> |
|
|
|
</el-col> |
|
|
|
<el-col :span="12"> |
|
|
|
<ft-button :click-handle="executeCraftHandle"> |
|
|
|
执行工艺 |
|
|
|
</ft-button> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
<el-row :gutter="10"> |
|
|
|
<el-col :span="12"> |
|
|
|
<ft-button :click-handle="filled_solution"> |
|
|
@ -517,7 +591,7 @@ const take_photo = async () => { |
|
|
|
</el-row> |
|
|
|
|
|
|
|
<StartExperiment v-if="startVisible" @ok="startVisible = false" @cancel="startVisible = false" /> |
|
|
|
<!-- <SelectCraft v-if="selectCraftVisible" @ok="selectCraftVisible = false" @cancel="selectCraftVisible = false" /> --> |
|
|
|
<SelectCraft v-if="selectCraftVisible" @ok="selectCraftVisible = false" @cancel="selectCraftVisible = false" /> |
|
|
|
<SetTemperature v-if="setTemperatureVisible" :id="currentTemperatureId" @ok="setTemperatureVisible = false" @cancel="setTemperatureVisible = false" /> |
|
|
|
<AddLiquid v-if="addLiquidVisible" @ok="addLiquidVisible = false" @cancel="addLiquidVisible = false" /> |
|
|
|
<FillSolution v-if="fillSolutionVisible" @ok="fillSolutionVisible = false" @cancel="fillSolutionVisible = false" /> |
|
|
@ -551,7 +625,7 @@ const take_photo = async () => { |
|
|
|
flex-direction: column; |
|
|
|
height: 100%; |
|
|
|
.top { |
|
|
|
height: 50%; |
|
|
|
height: 40%; |
|
|
|
background: #4D6882; |
|
|
|
position: relative; |
|
|
|
border-radius: 8px; |
|
|
@ -570,7 +644,7 @@ const take_photo = async () => { |
|
|
|
} |
|
|
|
} |
|
|
|
.button-box { |
|
|
|
height: 50%; |
|
|
|
height: 60%; |
|
|
|
display: flex; |
|
|
|
flex-direction: column; |
|
|
|
justify-content: flex-end; |
|
|
|