|
|
@ -1,8 +1,18 @@ |
|
|
|
<template> |
|
|
|
<div class="device-management"> |
|
|
|
<div class="setting-item"> |
|
|
|
<span class="label">日期</span> |
|
|
|
<span class="value">{{ formattedDate }}</span> |
|
|
|
<span class="label">日期与时间</span> |
|
|
|
<el-date-picker |
|
|
|
class="date-input" |
|
|
|
v-model="time" |
|
|
|
type="datetime" |
|
|
|
placeholder="修改日期与时间" |
|
|
|
format="YYYY-MM-DD HH:mm:ss" |
|
|
|
value-format="YYYY-MM-DD HH:mm:ss" |
|
|
|
@change="(val) => updateSetting('date', val)" |
|
|
|
@focus="pauseTimer" |
|
|
|
@blur="resumeTimer" |
|
|
|
/> |
|
|
|
</div> |
|
|
|
|
|
|
|
<!-- <div class="setting-item"> |
|
|
@ -180,7 +190,7 @@ import { |
|
|
|
getTemperatureRange, |
|
|
|
setDHCP, |
|
|
|
setLocalIP, |
|
|
|
setAutoLogoutTime, setAllTemperature, setIncubateBoxTemperature, setPlateBoxTemperature |
|
|
|
setAutoLogoutTime, setAllTemperature, setIncubateBoxTemperature, setPlateBoxTemperature, setDateAndTime |
|
|
|
} from '@/services' |
|
|
|
import { eMessage, isValidIPv4 } from '../utils' |
|
|
|
|
|
|
@ -280,6 +290,13 @@ const updateSetting = async (key: string, value: any) => { |
|
|
|
try { |
|
|
|
let res |
|
|
|
switch (key) { |
|
|
|
case 'date': |
|
|
|
// 暂停定时器 |
|
|
|
clearInterval(intervalId.value) |
|
|
|
res = await setDateAndTime(value) |
|
|
|
// 恢复定时器 |
|
|
|
startTimer() |
|
|
|
break |
|
|
|
case 'language': |
|
|
|
res = await setLanguage(value) |
|
|
|
break |
|
|
@ -330,12 +347,12 @@ const updateSetting = async (key: string, value: any) => { |
|
|
|
if (res?.success) { |
|
|
|
settings.value = { ...settings.value, [key]: value } |
|
|
|
|
|
|
|
if(key === 'allTemperature') { |
|
|
|
if (key === 'allTemperature') { |
|
|
|
settings.value.incubateBoxTemperature = settings.value.plateBoxTemperature = value |
|
|
|
} |
|
|
|
if(settings.value.incubateBoxTemperature === settings.value.plateBoxTemperature) { |
|
|
|
if (settings.value.incubateBoxTemperature === settings.value.plateBoxTemperature) { |
|
|
|
settings.value.allTemperature = settings.value.incubateBoxTemperature |
|
|
|
}else { |
|
|
|
} else { |
|
|
|
settings.value.allTemperature = undefined |
|
|
|
} |
|
|
|
} |
|
|
@ -345,18 +362,26 @@ const updateSetting = async (key: string, value: any) => { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 定时器相关 |
|
|
|
const intervalId = ref<number | null>(null) |
|
|
|
|
|
|
|
// 启动定时器 |
|
|
|
const startTimer = () => { |
|
|
|
intervalId.value = setInterval(() => { |
|
|
|
const now = new Date() |
|
|
|
currentDate.value = now |
|
|
|
time.value = format(now, 'yyyy.MM.dd HH:mm:ss'); |
|
|
|
}, 1000) |
|
|
|
} |
|
|
|
|
|
|
|
const temperatures = ref<number[]>([]) |
|
|
|
|
|
|
|
// 初始化 |
|
|
|
onMounted(async () => { |
|
|
|
await fetchSettings() |
|
|
|
|
|
|
|
// 更新时间显示 |
|
|
|
setInterval(() => { |
|
|
|
const now = new Date() |
|
|
|
currentDate.value = now |
|
|
|
time.value = now.toLocaleTimeString() |
|
|
|
}, 1000) |
|
|
|
// 启动定时器 |
|
|
|
startTimer() |
|
|
|
|
|
|
|
const res = await getTemperatureRange() |
|
|
|
if (res && res.success) { |
|
|
@ -366,6 +391,14 @@ onMounted(async () => { |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
// 在组件卸载时清理定时器 |
|
|
|
onUnmounted(() => { |
|
|
|
if (intervalId.value) { |
|
|
|
clearInterval(intervalId.value) |
|
|
|
} |
|
|
|
hideKeyboard() |
|
|
|
}) |
|
|
|
|
|
|
|
// 键盘相关状态 |
|
|
|
const keyboardVisible = ref(false) |
|
|
|
const currentInputValue = ref('') |
|
|
@ -427,6 +460,23 @@ const hideKeyboard = () => { |
|
|
|
onUnmounted(() => { |
|
|
|
hideKeyboard() |
|
|
|
}) |
|
|
|
|
|
|
|
// 暂停定时器 |
|
|
|
const pauseTimer = () => { |
|
|
|
if (intervalId.value) { |
|
|
|
console.log(111) |
|
|
|
clearInterval(intervalId.value); |
|
|
|
intervalId.value = null; |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
// 恢复定时器 |
|
|
|
const resumeTimer = () => { |
|
|
|
if (!intervalId.value) { |
|
|
|
startTimer(); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
</script> |
|
|
|
|
|
|
|
<style scoped lang="less"> |
|
|
@ -528,4 +578,13 @@ onUnmounted(() => { |
|
|
|
.slide-up-leave-to { |
|
|
|
transform: translateY(100%); |
|
|
|
} |
|
|
|
:deep(.date-input) { |
|
|
|
width: 250px; |
|
|
|
.el-input__wrapper { |
|
|
|
height: 40px; |
|
|
|
} |
|
|
|
.el-input__inner { |
|
|
|
font-size: 18px; |
|
|
|
} |
|
|
|
} |
|
|
|
</style> |