3 changed files with 116 additions and 138 deletions
-
131src/components/home/SetTemperature/index.vue
-
78src/components/home/StartHeat/index.vue
-
45src/views/home/index.vue
@ -1,131 +0,0 @@ |
|||
<script setup lang="ts"> |
|||
import { setTargetTemperature } from 'apis/home' |
|||
import { configList } from 'apis/system' |
|||
import { FtMessage } from 'libs/message' |
|||
import { useSystemStore } from 'stores/systemStore' |
|||
import { computed, inject, onMounted, ref } from 'vue' |
|||
|
|||
const emits = defineEmits(['ok', 'cancel']) |
|||
|
|||
const data = inject('currentTemperatureData') |
|||
const configData = ref<any[]>([]) |
|||
onMounted(async () => { |
|||
configData.value = await configList() |
|||
}) |
|||
|
|||
const heatMax = computed(() => { |
|||
return configData.value.find(item => item.code === 'heat_temperature')?.value || 0 |
|||
}) |
|||
const dryMax = computed(() => { |
|||
return configData.value.find(item => item.code === 'dry_temperature')?.value || 0 |
|||
}) |
|||
const annealMax = computed(() => { |
|||
return configData.value.find(item => item.code === 'anneal_temperature')?.value || 0 |
|||
}) |
|||
|
|||
const heatModule = computed(() => { |
|||
return useSystemStore().systemStatus.heatModule.find(item => item.moduleCode === data.value.id) |
|||
}) |
|||
|
|||
const form = ref({ |
|||
dryTemperature: heatModule.value?.dryTemperature, |
|||
annealTemperature: heatModule.value?.annealTemperature, |
|||
heatTemperature: heatModule.value?.heatTemperature, |
|||
}) |
|||
const formRef = ref() |
|||
|
|||
const validateHandle1 = (rule: any, value: any, callback: any) => { |
|||
if (value && (value < 0 || +value > +heatMax.value)) { |
|||
callback(new Error(`加热温度设置范围0℃-${heatMax.value}℃`)) |
|||
} |
|||
else { |
|||
callback() |
|||
} |
|||
} |
|||
const validateHandle2 = (rule: any, value: any, callback: any) => { |
|||
if (value && (value < 0 || +value > +dryMax.value)) { |
|||
callback(new Error(`烘干温度设置范围0℃-${dryMax.value}℃`)) |
|||
} |
|||
else { |
|||
callback() |
|||
} |
|||
} |
|||
const validateHandle3 = (rule: any, value: any, callback: any) => { |
|||
if (value && (value < 0 || +value > +annealMax.value)) { |
|||
callback(new Error(`退火温度设置范围0℃-${annealMax.value}℃`)) |
|||
} |
|||
else { |
|||
callback() |
|||
} |
|||
} |
|||
|
|||
const rules = { |
|||
heatTemperature: [ |
|||
{ required: false, trigger: 'blur', validator: validateHandle1 }, |
|||
], |
|||
dryTemperature: [ |
|||
{ required: false, trigger: 'blur', validator: validateHandle2 }, |
|||
], |
|||
annealTemperature: [ |
|||
{ required: false, trigger: 'blur', validator: validateHandle3 }, |
|||
], |
|||
} |
|||
|
|||
const okHandle = async () => { |
|||
try { |
|||
const valid = await formRef.value.validate() |
|||
if (!valid) { |
|||
return |
|||
} |
|||
await setTargetTemperature({ |
|||
...form.value, |
|||
moduleCode: data.value.id, |
|||
}) |
|||
FtMessage.success('设置成功') |
|||
emits('ok') |
|||
} |
|||
catch (error) { |
|||
console.log(error) |
|||
} |
|||
} |
|||
const cancel = () => { |
|||
emits('cancel') |
|||
} |
|||
</script> |
|||
|
|||
<template> |
|||
<FtDialog visible title="设置目标温度" width="40%" :ok-handle="okHandle" @cancel="cancel"> |
|||
<el-form ref="formRef" label-width="auto" :model="form" :rules="rules"> |
|||
<el-form-item label="加热区"> |
|||
<el-tag>{{ data?.label }}</el-tag> |
|||
</el-form-item> |
|||
<el-form-item label="加热温度" prop="heatTemperature"> |
|||
<el-input v-model="form.heatTemperature" type="number" placeholder="请输入加热温度"> |
|||
<template #append> |
|||
℃ |
|||
</template> |
|||
</el-input> |
|||
</el-form-item> |
|||
<el-form-item label="烘干温度" prop="dryTemperature"> |
|||
<el-input v-model="form.dryTemperature" type="number" placeholder="请输入烘干温度"> |
|||
<template #append> |
|||
℃ |
|||
</template> |
|||
</el-input> |
|||
</el-form-item> |
|||
<el-form-item label="退火温度" prop="annealTemperature"> |
|||
<el-input v-model="form.annealTemperature" type="number" placeholder="请输入退火温度"> |
|||
<template #append> |
|||
℃ |
|||
</template> |
|||
</el-input> |
|||
</el-form-item> |
|||
</el-form> |
|||
</FtDialog> |
|||
</template> |
|||
|
|||
<style scoped lang="scss"> |
|||
.el-tag { |
|||
margin-right: 5px; |
|||
} |
|||
</style> |
@ -0,0 +1,78 @@ |
|||
<script setup lang="ts"> |
|||
import { setTargetTemperature } from 'apis/home' |
|||
import { configList } from 'apis/system' |
|||
import { FtMessage } from 'libs/message' |
|||
import { useHomeStore } from 'stores/homeStore' |
|||
import { useSystemStore } from 'stores/systemStore' |
|||
import { computed, inject, onMounted, ref } from 'vue' |
|||
|
|||
const props = defineProps({ |
|||
heatModuleCode: { |
|||
type: String, |
|||
default: 'MODULE_1', |
|||
}, |
|||
}) |
|||
const emits = defineEmits(['ok', 'cancel']) |
|||
|
|||
const homeStore = useHomeStore() |
|||
|
|||
const form = ref({ |
|||
temperature: undefined, |
|||
heatModuleCode: props.heatModuleCode, |
|||
}) |
|||
const formRef = ref() |
|||
|
|||
const rules = { |
|||
temperature: [ |
|||
{ required: true, trigger: 'blur', message: '请输入温度' }, |
|||
], |
|||
} |
|||
|
|||
let currentCommandId = '' |
|||
|
|||
const okHandle = async () => { |
|||
try { |
|||
const valid = await formRef.value.validate() |
|||
if (!valid) { |
|||
return |
|||
} |
|||
currentCommandId = Date.now().toString() |
|||
const params = { |
|||
commandId: currentCommandId, |
|||
command: 'heater_start', |
|||
params: form.value, |
|||
} |
|||
await homeStore.sendControl(params) |
|||
emits('ok') |
|||
} |
|||
catch (error) { |
|||
console.log(error) |
|||
} |
|||
} |
|||
const cancel = () => { |
|||
emits('cancel') |
|||
} |
|||
</script> |
|||
|
|||
<template> |
|||
<FtDialog visible title="开始加热" width="40%" :ok-handle="okHandle" @cancel="cancel"> |
|||
<el-form ref="formRef" label-width="auto" :model="form" :rules="rules"> |
|||
<el-form-item label="加热区"> |
|||
<el-tag>{{ form.heatModuleCode === 'MODULE_1' ? '加热区1' : '加热区2' }}</el-tag> |
|||
</el-form-item> |
|||
<el-form-item label="加热温度" prop="temperature"> |
|||
<el-input v-model="form.temperature" type="number" placeholder="请输入加热温度"> |
|||
<template #append> |
|||
℃ |
|||
</template> |
|||
</el-input> |
|||
</el-form-item> |
|||
</el-form> |
|||
</FtDialog> |
|||
</template> |
|||
|
|||
<style scoped lang="scss"> |
|||
.el-tag { |
|||
margin-right: 5px; |
|||
} |
|||
</style> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue