Browse Source

fix: 部分bug修复

master
guoapeng 2 weeks ago
parent
commit
ce3af046b6
  1. 36
      src/components/formula/FormulaConfig.vue
  2. 12
      src/components/home/Environment.vue
  3. 35
      src/components/home/HomeLogLevel.vue
  4. 8
      src/components/home/LineChart.vue
  5. 30
      src/components/setting/History.vue
  6. 1
      src/stores/homeStore.ts

36
src/components/formula/FormulaConfig.vue

@ -176,11 +176,15 @@ const getFormData = () => {
* 监听表单数据变化同步更新软键盘输入值
* @param {Record<string, any>} newValue - 新的表单数据
*/
watch(formData, (newValue) => {
watch(
formData,
(newValue) => {
if (focusedInput.value) {
inputValue.value = newValue[focusedInput.value].toString()
}
}, { deep: true })
},
{ deep: true },
)
const formRef = ref(null)
/**
@ -229,11 +233,14 @@ const onSaveFormula = () => {
const onSaveSetting = async () => {
//
const diff = compareJSON(formulaStore.defaultFormulaInfo, formData.value)
console.log(diff)
const diffKeys = Object.keys(diff)
if (diffKeys.length) {
await Promise.all(diffKeys.map(async (key) => {
await setSettingFormulaConfig(key, diff[key].newVal)
}))
await Promise.all(
diffKeys.map(async (key) => {
await setSettingFormulaConfig(key, diff[key].newVal || diff[key].obj2)
}),
)
FtMessage.success('配方修改成功')
}
}
@ -250,7 +257,7 @@ const setSettingFormulaConfig = async (settingName: string, settingVal: string)
fnName: 'setSettingVal',
params: {
settingName,
settingVal: settingVal.toString(),
settingVal: settingVal?.toString(),
},
})
formulaStore.getFormualDefaultData()
@ -408,21 +415,21 @@ defineExpose({
/>
</el-form-item>
<el-form-item
v-for="(item) in formulaConfigList"
v-for="item in formulaConfigList"
:key="item.setting_id"
:label="formulaNameMap[item.setting_id]"
style="width: 50%;"
style="width: 50%"
>
<template v-if="item.val_type === 'int'">
<el-input
style="width: 80%;"
v-model.number="formData[item.setting_id]"
v-prevent-keyboard
style="width: 80%"
type="number"
:name="item.setting_id"
:controls="false"
:disabled="!item.is_visible_in_setting_page"
@focus="(e) => openKeyboard(e, item)"
@focus="e => openKeyboard(e, item)"
>
<template v-if="labelUnitMap[item.setting_id]" #append>
{{ labelUnitMap[item.setting_id] }}
@ -431,9 +438,9 @@ defineExpose({
</template>
<template v-else-if="item.val_type === 'enum'">
<el-input
style="width: 80%;"
v-model="formData[item.setting_id]"
v-prevent-keyboard
style="width: 80%"
placeholder="请选择"
readonly
@focus="openModal"
@ -444,10 +451,7 @@ defineExpose({
</el-input>
</template>
<template v-else-if="item.val_type === 'boolean'">
<el-radio-group
v-model="formData[item.setting_id]"
:disabled="!item.is_visible_in_setting_page"
>
<el-radio-group v-model="formData[item.setting_id]" :disabled="!item.is_visible_in_setting_page">
<el-radio :label="true">
</el-radio>
@ -478,7 +482,7 @@ defineExpose({
:keyboard-type="keyboardType"
:target-input="targetInputRef"
@confirm="handleConfirm"
@update-keyboard-visible="(visible) => keyboardVisible = visible"
@update-keyboard-visible="visible => (keyboardVisible = visible)"
@close="keyboardVisible = false"
/>
</Teleport>

12
src/components/home/Environment.vue

@ -69,7 +69,9 @@ onMounted(() => {
温度
</div>
<div class="env-row-value">
{{ !envParams.temp || envParams.temp === -1 ? '--' : roundNumber(envParams.temp, 2) }}°C
{{
(envParams.temp !== 0 && !envParams.temp) || envParams.temp === -1 ? '--' : roundNumber(envParams.temp, 2)
}}°C
</div>
</div>
<div class="env-row">
@ -77,7 +79,7 @@ onMounted(() => {
相对湿度
</div>
<div class="env-row-value">
{{ !envParams.rh || envParams.rh === -1 ? '--' : roundNumber(envParams.rh, 2) }}%RH
{{ (envParams.rh !== 0 && !envParams.rh) || envParams.rh === -1 ? '--' : roundNumber(envParams.rh, 2) }}%RH
</div>
</div>
<div class="env-row odd">
@ -85,7 +87,7 @@ onMounted(() => {
相对饱和度
</div>
<div class="env-row-value">
{{ !envParams.rs || envParams.rs === -1 ? '--' : roundNumber(envParams.rs, 2) }}%RS
{{ (envParams.rs !== 0 && !envParams.rs) || envParams.rs === -1 ? '--' : roundNumber(envParams.rs, 2) }}%RS
</div>
</div>
<div class="env-row">
@ -93,7 +95,9 @@ onMounted(() => {
汽化过氧化氢
</div>
<div class="env-row-value">
{{ !envParams.h2o2 || envParams.h2o2 === -1 ? '--' : roundNumber(envParams.h2o2, 2) }}ppm
{{
(envParams.h2o2 !== 0 && !envParams.h2o2) || envParams.h2o2 === -1 ? '--' : roundNumber(envParams.h2o2, 2)
}}ppm
</div>
</div>
</div>

35
src/components/home/HomeLogLevel.vue

@ -1,6 +1,8 @@
<script lang="ts" setup>
import { syncSendCmd } from 'apis/system'
import SelectModal from 'components/common/SelectModal/index.vue'
import { ref, watchEffect } from 'vue'
import { useHomeStore } from 'stores/homeStore'
import { computed, ref, watchEffect } from 'vue'
import { useFormulaStore } from '@/stores/formulaStore'
@ -9,6 +11,8 @@ const options = ref(formulaStore.logLevelOptions)
const loglevel = ref(formulaStore.loglevel)
const isModalOpen = ref(false)
const homeStore = useHomeStore()
watchEffect(() => {
options.value = formulaStore.logLevelOptions
loglevel.value = formulaStore.loglevel
@ -18,15 +22,30 @@ const openModal = () => {
isModalOpen.value = true
}
const setRealtimeConfig = async (key: string, val: string) => {
await syncSendCmd({
className: 'DisinfectionCtrlServiceExt',
fnName: 'setRealtimeConfig',
params: { key, val },
})
}
const handleConfirm = (value: any) => {
loglevel.value = value
formulaStore.updateLogLevel(value)
isModalOpen.value = false
if (!operationState.value) {
setRealtimeConfig('loglevel', value)
}
}
const handleCancel = () => {
isModalOpen.value = false
}
const operationState = computed(() => {
return homeStore.disinfectionState.state === 'idle' || homeStore.disinfectionState.state === 'finished'
})
</script>
<template>
@ -42,13 +61,7 @@ const handleCancel = () => {
@focus="openModal"
>
<template #append>
<bt-button
type="primary"
button-text="Log"
text-color="#ffffff"
height="4rem"
text-size="16px"
/>
<bt-button type="primary" button-text="Log" text-color="#ffffff" height="4rem" text-size="16px" />
</template>
</el-input>
</div>
@ -73,15 +86,15 @@ $input-height: 3rem;
font-size: 24px;
.input {
width: 14vw;
height: $input-height
height: $input-height;
}
.input-log {
color: #ffffff;
height: $input-height
height: $input-height;
}
}
.el-button {
background-color: #2892F3 !important;
background-color: #2892f3 !important;
border-radius: 0 var(--el-border-radius-base) var(--el-border-radius-base) 0;
}
</style>

8
src/components/home/LineChart.vue

@ -7,6 +7,12 @@ const props = defineProps<{
}>()
const dataLength = ref(30)
const titles = {
Internal: '仓内',
WiredExtSensor: '外接传感器',
WirelessExtSensor: '无线传感器',
}
watch(
() => props.envData,
(newValue) => {
@ -19,7 +25,7 @@ watch(
}
const option = {
title: {
text: '哈哈哈',
text: titles[newValue?.[0]?.type || ''] || '',
},
tooltip: {
trigger: 'axis',

30
src/components/setting/History.vue

@ -47,24 +47,20 @@ const showDetail = (historyItem: Setting.History) => {
})
}
const onDelHistory = () => {
if (selectedRecords.value.length !== 1) {
FtMessage.warning('请选择一条数据进行删除')
if (!selectedRecords.value.length) {
FtMessage.warning('请选择要删除的数据')
return
}
ElMessageBox.confirm(
'请确认是否删除?',
'删除',
{
ElMessageBox.confirm('请确认是否删除?', '删除', {
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
},
).then(() => {
}).then(() => {
const delParams = {
className: 'DisinfectionLogsService',
fnName: 'deleteReport',
fnName: 'deleteReports',
params: {
logName: selectedRecords.value.map(item => item.name)[0],
logNames: selectedRecords.value.map(item => item.name),
},
}
syncSendCmd(delParams).then((res) => {
@ -102,19 +98,11 @@ const onClose = () => {
<template>
<div>
<div class="history-export">
<bt-button
type="primary"
button-text="导出"
@click="onExportHistory"
/>
<bt-button
type="primary"
button-text="删除"
@click="onDelHistory"
/>
<bt-button type="primary" button-text="导出" @click="onExportHistory" />
<bt-button type="primary" button-text="删除" @click="onDelHistory" />
</div>
<div class="history-table">
<el-table :data="tableData" style="width: 100%;" height="100%" @selection-change="handleSelectionChange">
<el-table :data="tableData" style="width: 100%" height="100%" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column prop="name" label="消毒日期" />
<el-table-column prop="detail" label="操作" width="100">

1
src/stores/homeStore.ts

@ -71,7 +71,6 @@ export const useHomeStore = defineStore('home', () => {
...item,
}
})
console.log('allData', allData.value)
}
}

Loading…
Cancel
Save