import React from 'react'
import {amisRender, commonInfo, crudCommonOptions, paginationTemplate, remoteMappings, time} from '../../util/amis.tsx'
import {useNavigate} from 'react-router'
function TaskScheduleList() {
const navigate = useNavigate()
return (
{amisRender(
{
type: 'page',
title: '定时任务',
body: [
{
type: 'crud',
api: `get:${commonInfo.baseUrl}/task_schedule/list`,
...crudCommonOptions(),
...paginationTemplate(
15,
undefined,
[
{
type: 'action',
label: '',
icon: 'fa fa-plus',
tooltip: '添加定时任务',
tooltipPlacement: 'top',
onEvent: {
click: {
actions: [
{
actionType: 'custom',
// @ts-ignore
script: (context, action, event) => {
navigate('/task/schedule/save')
},
},
],
},
},
},
],
),
loadDataOnce: true,
columns: [
{
name: 'templateName',
label: '模板名称',
width: 150,
},
{
name: 'templateDescription',
label: '模板描述',
},
{
name: 'cron',
label: '定时策略',
width: 150,
},
{
name: 'status',
label: '状态',
width: 100,
...remoteMappings('trigger_status', 'status'),
},
{
name: 'previousFireTime',
label: '上次启动时间',
width: 150,
align: 'center',
...time('previousFireTime'),
},
{
name: 'nextFireTime',
label: '下次启动时间',
width: 150,
align: 'center',
...time('nextFireTime'),
},
{
type: 'operation',
label: '操作',
width: 150,
buttons: [
{
visibleOn: 'status !== \'PAUSED\' ',
type: 'action',
label: '暂停',
level: 'link',
actionType: 'ajax',
api: `get:${commonInfo.baseUrl}/task_schedule/pause/\${key}`,
confirmText: '确认暂停定时任务${templateName}?',
confirmTitle: '暂停',
},
{
visibleOn: 'status === \'PAUSED\' ',
type: 'action',
label: '恢复',
level: 'link',
actionType: 'ajax',
api: `get:${commonInfo.baseUrl}/task_schedule/resume/\${key}`,
confirmText: '确认恢复定时任务${templateName}?',
confirmTitle: '恢复',
},
{
className: 'text-danger btn-deleted',
type: 'action',
label: '删除',
level: 'link',
actionType: 'ajax',
api: `get:${commonInfo.baseUrl}/task_schedule/remove/\${key}`,
confirmText: '确认删除定时任务${templateName}?',
confirmTitle: '删除',
},
],
},
],
},
],
},
)}
)
}
export default React.memo(TaskScheduleList)