Skip to content

Commit 65663df

Browse files
committed
REVIEW 定时任务(详细)
1 parent eace25d commit 65663df

File tree

3 files changed

+80
-97
lines changed

3 files changed

+80
-97
lines changed

src/views/infra/job/JobDetail.vue

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
<template>
2+
<Dialog title="任务详细" v-model="modelVisible" width="700px">
3+
<el-descriptions border :column="1">
4+
<el-descriptions-item label="任务编号" min-width="60">
5+
{{ detailData.id }}
6+
</el-descriptions-item>
7+
<el-descriptions-item label="任务名称">
8+
{{ detailData.name }}
9+
</el-descriptions-item>
10+
<el-descriptions-item label="任务名称">
11+
<dict-tag :type="DICT_TYPE.INFRA_JOB_STATUS" :value="detailData.status" />
12+
</el-descriptions-item>
13+
<el-descriptions-item label="处理器的名字">
14+
{{ detailData.handlerName }}
15+
</el-descriptions-item>
16+
<el-descriptions-item label="处理器的参数">
17+
{{ detailData.handlerParam }}
18+
</el-descriptions-item>
19+
<el-descriptions-item label="Cron 表达式">
20+
{{ detailData.cronExpression }}
21+
</el-descriptions-item>
22+
<el-descriptions-item label="重试次数">
23+
{{ detailData.retryCount }}
24+
</el-descriptions-item>
25+
<el-descriptions-item label="重试间隔">
26+
{{ detailData.retryInterval + ' 毫秒' }}
27+
</el-descriptions-item>
28+
<el-descriptions-item label="监控超时时间">
29+
{{ detailData.monitorTimeout > 0 ? detailData.monitorTimeout + ' 毫秒' : '未开启' }}
30+
</el-descriptions-item>
31+
<el-descriptions-item label="后续执行时间">
32+
<el-timeline>
33+
<el-timeline-item
34+
v-for="(nextTime, index) in nextTimes"
35+
:key="index"
36+
:timestamp="formatDate(nextTime)"
37+
>
38+
第 {{ index + 1 }} 次
39+
</el-timeline-item>
40+
</el-timeline>
41+
</el-descriptions-item>
42+
</el-descriptions>
43+
</Dialog>
44+
</template>
45+
<script setup lang="ts">
46+
import { DICT_TYPE } from '@/utils/dict'
47+
import { formatDate } from '@/utils/formatTime'
48+
import * as JobApi from '@/api/infra/job'
49+
50+
const modelVisible = ref(false) // 弹窗的是否展示
51+
const detailLoading = ref(false) // 表单的加载中
52+
const detailData = ref({}) // 详情数据
53+
const nextTimes = ref([]) // 下一轮执行时间的数组
54+
55+
/** 打开弹窗 */
56+
const open = async (id: number) => {
57+
modelVisible.value = true
58+
// 查看,设置数据
59+
if (id) {
60+
detailLoading.value = true
61+
try {
62+
detailData.value = await JobApi.getJobApi(id)
63+
// 获取下一次执行时间
64+
nextTimes.value = await JobApi.getJobNextTimesApi(id)
65+
} finally {
66+
detailLoading.value = false
67+
}
68+
}
69+
}
70+
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
71+
</script>

src/views/infra/job/index.vue

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@
117117
<el-dropdown-item command="handleRun" v-if="checkPermi(['infra:job:trigger'])">
118118
执行一次
119119
</el-dropdown-item>
120-
<el-dropdown-item command="handleView" v-if="checkPermi(['infra:job:query'])">
120+
<el-dropdown-item command="openDetail" v-if="checkPermi(['infra:job:query'])">
121121
任务详细
122122
</el-dropdown-item>
123123
<el-dropdown-item command="handleJobLog" v-if="checkPermi(['infra:job:query'])">
@@ -141,13 +141,13 @@
141141
<!-- 表单弹窗:添加/修改 -->
142142
<JobForm ref="formRef" @success="getList" />
143143
<!-- 表单弹窗:查看 -->
144-
<job-view ref="viewModalRef" @success="getList" />
144+
<JobDetail ref="detailRef" />
145145
</template>
146146
<script setup lang="ts" name="Job">
147147
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
148148
import { checkPermi } from '@/utils/permission'
149149
import JobForm from './JobForm.vue'
150-
import JobView from './view.vue'
150+
import JobDetail from './JobDetail.vue'
151151
import download from '@/utils/download'
152152
import * as JobApi from '@/api/infra/job'
153153
import { InfraJobStatusEnum } from '@/utils/constants'
@@ -254,8 +254,8 @@ const handleCommand = (command, row) => {
254254
case 'handleRun':
255255
handleRun(row)
256256
break
257-
case 'handleView':
258-
handleView(row?.id)
257+
case 'openDetail':
258+
openDetail(row.id)
259259
break
260260
case 'handleJobLog':
261261
handleJobLog(row?.id)
@@ -279,10 +279,11 @@ const handleRun = async (row: JobApi.JobVO) => {
279279
}
280280
281281
/** 查看操作 */
282-
const viewModalRef = ref()
283-
const handleView = (rowId?: number) => {
284-
viewModalRef.value.openForm(rowId)
282+
const detailRef = ref()
283+
const openDetail = (id: number) => {
284+
detailRef.value.open(id)
285285
}
286+
286287
// 执行日志
287288
const handleJobLog = (rowId?: number) => {
288289
if (rowId) {

src/views/infra/job/view.vue

Lines changed: 0 additions & 89 deletions
This file was deleted.

0 commit comments

Comments
 (0)