Files
mayfly-go/mayfly_go_web/src/components/progress-notify/progress-notify.vue

35 lines
1.0 KiB
Vue
Raw Normal View History

<template>
<el-descriptions border size="small" :title="`${progress.title}`">
<el-descriptions-item label="时间">{{ state.elapsedTime }}</el-descriptions-item>
<el-descriptions-item label="已处理">{{ progress.executedStatements }}</el-descriptions-item>
</el-descriptions>
</template>
<script lang="ts" setup>
2023-10-12 12:14:56 +08:00
import { onMounted, onUnmounted, reactive } from 'vue';
import { formatTime } from 'element-plus/es/components/countdown/src/utils';
import { buildProgressProps } from './progress-notify';
const props = defineProps(buildProgressProps());
const state = reactive({
2023-10-12 12:14:56 +08:00
elapsedTime: '00:00:00',
});
2023-10-12 12:14:56 +08:00
let timer: any = undefined;
const startTime = Date.now();
onMounted(async () => {
2023-10-12 12:14:56 +08:00
timer = setInterval(() => {
const elapsed = Date.now() - startTime;
state.elapsedTime = formatTime(elapsed, 'HH:mm:ss');
}, 1000);
});
onUnmounted(async () => {
2023-10-12 12:14:56 +08:00
if (timer != undefined) {
clearInterval(timer); // 在Vue实例销毁前清除我们的定时器
timer = undefined;
}
});
2023-10-12 12:14:56 +08:00
</script>