Browse Source

fix:倒计时推送

master
guoapeng 2 months ago
parent
commit
1115f38adb
  1. 4
      src/apis/home.ts
  2. 2
      src/components/home/StartHeat/index.vue
  3. 22
      src/components/home/Tube/index.vue

4
src/apis/home.ts

@ -9,5 +9,5 @@ export const getTask = (id: number): Promise<Task.Task> => http.get(`${baseUrl}$
export const taskList = (params: Task.TaskQuery): Promise<Task.Task[]> => http.get(`${baseUrl}list`, { params }) export const taskList = (params: Task.TaskQuery): Promise<Task.Task[]> => http.get(`${baseUrl}list`, { params })
export const getTaskIng = (): Promise<null> => http.get(`${baseUrl}getIngTask`) export const getTaskIng = (): Promise<null> => http.get(`${baseUrl}getIngTask`)
export const delTask = (params: string): Promise<null> => http.delete(`${baseUrl}${params}`) export const delTask = (params: string): Promise<null> => http.delete(`${baseUrl}${params}`)
export const trayIn = (): Promise<null> => http.delete('tray/in')
export const trayOut = (): Promise<null> => http.delete('tray/out')
export const trayIn = (): Promise<null> => http.post('tray/in')
export const trayOut = (): Promise<null> => http.post('tray/out')

2
src/components/home/StartHeat/index.vue

@ -85,7 +85,7 @@ const convertTime = () => {
</template> </template>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item label="保时间" prop="time">
<el-form-item label="保时间" prop="time">
<div style="display: flex;width: 100%"> <div style="display: flex;width: 100%">
<el-select v-model="form.minutes" clearable style="width: 100%" placeholder="请选择分钟" @change="convertTime"> <el-select v-model="form.minutes" clearable style="width: 100%" placeholder="请选择分钟" @change="convertTime">
<el-option v-for="item in 60" :key="item" :label="item" :value="item" /> <el-option v-for="item in 60" :key="item" :label="item" :value="item" />

22
src/components/home/Tube/index.vue

@ -5,9 +5,10 @@ import errorIcon from 'assets/images/error.svg'
import ingIcon from 'assets/images/ing.svg' import ingIcon from 'assets/images/ing.svg'
import successIcon from 'assets/images/success.svg' import successIcon from 'assets/images/success.svg'
import waitIcon from 'assets/images/wait.svg' import waitIcon from 'assets/images/wait.svg'
import { socket } from 'libs/socket'
import { useHomeStore } from 'stores/homeStore' import { useHomeStore } from 'stores/homeStore'
import { useSystemStore } from 'stores/systemStore' import { useSystemStore } from 'stores/systemStore'
import { computed, ref } from 'vue'
import { computed, onMounted, onUnmounted, ref } from 'vue'
const props = withDefaults(defineProps<{ data: System.HeatArea }>(), { const props = withDefaults(defineProps<{ data: System.HeatArea }>(), {
data: () => ({ data: () => ({
@ -24,10 +25,17 @@ const props = withDefaults(defineProps<{ data: System.HeatArea }>(), {
const emits = defineEmits(['selectChange', 'setTemperature']) const emits = defineEmits(['selectChange', 'setTemperature'])
const formatTime = (seconds: number): string => {
const minutes = Math.floor(seconds / 60)
const secs = seconds % 60
return `${String(minutes).padStart(2, '0')}:${String(secs).padStart(2, '0')}`
onMounted(() => {
socket.init(receiveMessage, 'heat_countdown')
})
onUnmounted(() => {
socket.unregisterCallback(receiveMessage, 'heat_countdown')
})
const numList = ref<{ heatModuleCode: string, countdownStr: string }[]>([])
const receiveMessage = (data: any) => {
numList.value = data
} }
const homeStore = useHomeStore() const homeStore = useHomeStore()
@ -157,8 +165,8 @@ defineExpose({
<span v-show="data.heating" style="color: #FE0A0A ">加热中</span> <span v-show="data.heating" style="color: #FE0A0A ">加热中</span>
<span v-show="data.fanOpen" style="color: #14A656 ">降温中</span> <span v-show="data.fanOpen" style="color: #14A656 ">降温中</span>
</div> </div>
<div v-if="data.targetTime" style="text-align: center;font-size: 12px;color:#FE0A0A ">
{{ formatTime(data.targetTime) }}
<div v-if="numList.find(item => item.heatModuleCode === data.moduleCode)?.countdownStr" style="text-align: center;font-size: 12px;color:#FE0A0A ">
{{ numList.find(item => item.heatModuleCode === data.moduleCode)?.countdownStr }}
</div> </div>
<div class="footer"> <div class="footer">
<div class="tem-box"> <div class="tem-box">

Loading…
Cancel
Save