import React from 'react'
import {
amisRender,
commonInfo,
crudCommonOptions,
horizontalFormOptions,
paginationTemplate,
remoteMappings,
remoteOptions,
time,
} from '../../util/amis.tsx'
import {useNavigate} from 'react-router'
function TaskList() {
const navigate = useNavigate()
return (
{amisRender(
{
type: 'page',
title: '任务列表',
body: [
{
type: 'crud',
api: {
method: 'post',
url: `${commonInfo.baseUrl}/task/list`,
data: {
page: {
index: '${page}',
size: '${perPage}',
},
},
},
interval: 30000,
...crudCommonOptions(),
...paginationTemplate(
15,
undefined,
[
{
type: 'action',
label: '',
icon: 'fa fa-plus',
actionType: 'dialog',
dialog: {
title: '创建任务',
body: {
type: 'form',
api: {
method: 'post',
url: `${commonInfo.baseUrl}/task/execute`,
data: {
templateId: '${templateId|default:undefined}',
},
},
...horizontalFormOptions(),
body: [
{
name: 'templateId',
label: '名称',
required: true,
selectFirst: true,
...remoteOptions('select', 'task_template_id'),
},
],
},
},
},
],
),
columns: [
{
name: 'name',
label: '简称',
width: 150,
},
{
name: 'description',
label: '描述',
},
{
name: 'status',
label: '状态',
align: 'center',
width: 100,
...remoteMappings('task_status', 'status'),
},
{
label: '进度',
type: 'progress',
width: 200,
value: '${ROUND(step * 100, 0)}',
},
{
label: '耗时',
type: 'tpl',
align: 'center',
width: 150,
tpl: "${IF(costText, costText, '/')}",
},
{
name: 'launchedTime',
label: '启动时间',
width: 150,
align: 'center',
...time('launchedTime'),
},
{
name: 'finishedTime',
label: '结束时间',
width: 150,
align: 'center',
...time('finishedTime'),
},
{
type: 'operation',
label: '操作',
width: 100,
buttons: [
{
type: 'action',
label: '详情',
level: 'link',
onEvent: {
click: {
actions: [
{
actionType: 'custom',
// @ts-ignore
script: (context, action, event) => {
navigate(`/task/detail/${context.props.data['id']}`)
},
},
],
},
},
},
{
className: 'text-danger btn-deleted',
type: 'action',
label: '删除',
level: 'link',
actionType: 'ajax',
api: `get:${commonInfo.baseUrl}/task/remove/\${id}`,
confirmText: '确认删除任务记录${name}?',
confirmTitle: '删除',
},
],
},
],
},
],
},
)}
)
}
export default React.memo(TaskList)