|
|
|
@ -1,6 +1,7 @@ |
|
|
|
import { PlusOutlined } from '@ant-design/icons'; |
|
|
|
import { Button, Divider, message, Input, Drawer } from 'antd'; |
|
|
|
import React, { useState, useRef } from 'react'; |
|
|
|
import { useIntl, FormattedMessage } from 'umi'; |
|
|
|
import { PageContainer, FooterToolbar } from '@ant-design/pro-layout'; |
|
|
|
import ProTable, { ProColumns, ActionType } from '@ant-design/pro-table'; |
|
|
|
import ProDescriptions from '@ant-design/pro-descriptions'; |
|
|
|
@ -78,16 +79,24 @@ const TableList: React.FC<{}> = () => { |
|
|
|
const actionRef = useRef<ActionType>(); |
|
|
|
const [row, setRow] = useState<TableListItem>(); |
|
|
|
const [selectedRowsState, setSelectedRows] = useState<TableListItem[]>([]); |
|
|
|
const intl = useIntl(); |
|
|
|
const columns: ProColumns<TableListItem>[] = [ |
|
|
|
{ |
|
|
|
title: '规则名称', |
|
|
|
title: ( |
|
|
|
<FormattedMessage |
|
|
|
id="pages.searchTable.updateForm.ruleName.nameLabel" |
|
|
|
defaultMessage="规则名称" |
|
|
|
/> |
|
|
|
), |
|
|
|
dataIndex: 'name', |
|
|
|
tip: '规则名称是唯一的 key', |
|
|
|
formItemProps: { |
|
|
|
rules: [ |
|
|
|
{ |
|
|
|
required: true, |
|
|
|
message: '规则名称为必填项', |
|
|
|
message: ( |
|
|
|
<FormattedMessage id="pages.searchTable.ruleName" defaultMessage="规则名称为必填项" /> |
|
|
|
), |
|
|
|
}, |
|
|
|
], |
|
|
|
}, |
|
|
|
@ -96,30 +105,56 @@ const TableList: React.FC<{}> = () => { |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
title: '描述', |
|
|
|
title: <FormattedMessage id="pages.searchTable.titleDesc" defaultMessage="描述" />, |
|
|
|
dataIndex: 'desc', |
|
|
|
valueType: 'textarea', |
|
|
|
}, |
|
|
|
{ |
|
|
|
title: '服务调用次数', |
|
|
|
title: <FormattedMessage id="pages.searchTable.titleCallNo" defaultMessage="服务调用次数" />, |
|
|
|
dataIndex: 'callNo', |
|
|
|
sorter: true, |
|
|
|
hideInForm: true, |
|
|
|
renderText: (val: string) => `${val} 万`, |
|
|
|
renderText: (val: string) => |
|
|
|
`${val}${intl.formatMessage({ |
|
|
|
id: 'pages.searchTable.tenThousand', |
|
|
|
defaultMessage: ' 万 ', |
|
|
|
})}`,
|
|
|
|
}, |
|
|
|
{ |
|
|
|
title: '状态', |
|
|
|
title: <FormattedMessage id="pages.searchTable.titleStatus" defaultMessage="状态" />, |
|
|
|
dataIndex: 'status', |
|
|
|
hideInForm: true, |
|
|
|
valueEnum: { |
|
|
|
0: { text: '关闭', status: 'Default' }, |
|
|
|
1: { text: '运行中', status: 'Processing' }, |
|
|
|
2: { text: '已上线', status: 'Success' }, |
|
|
|
3: { text: '异常', status: 'Error' }, |
|
|
|
0: { |
|
|
|
text: ( |
|
|
|
<FormattedMessage id="pages.searchTable.nameStatus.default" defaultMessage="关闭" /> |
|
|
|
), |
|
|
|
status: 'Default', |
|
|
|
}, |
|
|
|
1: { |
|
|
|
text: ( |
|
|
|
<FormattedMessage id="pages.searchTable.nameStatus.running" defaultMessage="运行中" /> |
|
|
|
), |
|
|
|
status: 'Processing', |
|
|
|
}, |
|
|
|
2: { |
|
|
|
text: ( |
|
|
|
<FormattedMessage id="pages.searchTable.nameStatus.online" defaultMessage="已上线" /> |
|
|
|
), |
|
|
|
status: 'Success', |
|
|
|
}, |
|
|
|
3: { |
|
|
|
text: ( |
|
|
|
<FormattedMessage id="pages.searchTable.nameStatus.abnormal" defaultMessage="异常" /> |
|
|
|
), |
|
|
|
status: 'Error', |
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
title: '上次调度时间', |
|
|
|
title: ( |
|
|
|
<FormattedMessage id="pages.searchTable.titleUpdatedAt" defaultMessage="上次调度时间" /> |
|
|
|
), |
|
|
|
dataIndex: 'updatedAt', |
|
|
|
sorter: true, |
|
|
|
valueType: 'dateTime', |
|
|
|
@ -130,13 +165,21 @@ const TableList: React.FC<{}> = () => { |
|
|
|
return false; |
|
|
|
} |
|
|
|
if (`${status}` === '3') { |
|
|
|
return <Input {...rest} placeholder="请输入异常原因!" />; |
|
|
|
return ( |
|
|
|
<Input |
|
|
|
{...rest} |
|
|
|
placeholder={intl.formatMessage({ |
|
|
|
id: 'pages.searchTable.exception', |
|
|
|
defaultMessage: '请输入异常原因!', |
|
|
|
})} |
|
|
|
/> |
|
|
|
); |
|
|
|
} |
|
|
|
return defaultRender(item); |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
title: '操作', |
|
|
|
title: <FormattedMessage id="pages.searchTable.titleOption" defaultMessage="操作" />, |
|
|
|
dataIndex: 'option', |
|
|
|
valueType: 'option', |
|
|
|
render: (_, record) => ( |
|
|
|
@ -147,10 +190,12 @@ const TableList: React.FC<{}> = () => { |
|
|
|
setStepFormValues(record); |
|
|
|
}} |
|
|
|
> |
|
|
|
配置 |
|
|
|
<FormattedMessage id="pages.searchTable.config" defaultMessage="配置" /> |
|
|
|
</a> |
|
|
|
<Divider type="vertical" /> |
|
|
|
<a href="">订阅警报</a> |
|
|
|
<a href=""> |
|
|
|
<FormattedMessage id="pages.searchTable.subscribeAlert" defaultMessage="订阅警报" /> |
|
|
|
</a> |
|
|
|
</> |
|
|
|
), |
|
|
|
}, |
|
|
|
@ -159,7 +204,10 @@ const TableList: React.FC<{}> = () => { |
|
|
|
return ( |
|
|
|
<PageContainer> |
|
|
|
<ProTable<TableListItem> |
|
|
|
headerTitle="查询表格" |
|
|
|
headerTitle={intl.formatMessage({ |
|
|
|
id: 'pages.searchTable.title', |
|
|
|
defaultMessage: '查询表格', |
|
|
|
})} |
|
|
|
actionRef={actionRef} |
|
|
|
rowKey="key" |
|
|
|
search={{ |
|
|
|
@ -167,7 +215,7 @@ const TableList: React.FC<{}> = () => { |
|
|
|
}} |
|
|
|
toolBarRender={() => [ |
|
|
|
<Button type="primary" onClick={() => handleModalVisible(true)}> |
|
|
|
<PlusOutlined /> 新建 |
|
|
|
<PlusOutlined /> <FormattedMessage id="pages.searchTable.new" defaultMessage="新建" /> |
|
|
|
</Button>, |
|
|
|
]} |
|
|
|
request={(params, sorter, filter) => queryRule({ ...params, sorter, filter })} |
|
|
|
@ -180,9 +228,17 @@ const TableList: React.FC<{}> = () => { |
|
|
|
<FooterToolbar |
|
|
|
extra={ |
|
|
|
<div> |
|
|
|
已选择 <a style={{ fontWeight: 600 }}>{selectedRowsState.length}</a> 项 |
|
|
|
<FormattedMessage id="pages.searchTable.chosen" defaultMessage="已选择" />{' '} |
|
|
|
<a style={{ fontWeight: 600 }}>{selectedRowsState.length}</a>{' '} |
|
|
|
<FormattedMessage id="pages.searchTable.item" defaultMessage="项" /> |
|
|
|
|
|
|
|
<span> |
|
|
|
服务调用次数总计 {selectedRowsState.reduce((pre, item) => pre + item.callNo, 0)} 万 |
|
|
|
<FormattedMessage |
|
|
|
id="pages.searchTable.totalServiceCalls" |
|
|
|
defaultMessage="服务调用次数总计" |
|
|
|
/>{' '} |
|
|
|
{selectedRowsState.reduce((pre, item) => pre + item.callNo, 0)}{' '} |
|
|
|
<FormattedMessage id="pages.searchTable.tenThousand" defaultMessage="万" /> |
|
|
|
</span> |
|
|
|
</div> |
|
|
|
} |
|
|
|
@ -194,9 +250,11 @@ const TableList: React.FC<{}> = () => { |
|
|
|
actionRef.current?.reloadAndRest?.(); |
|
|
|
}} |
|
|
|
> |
|
|
|
批量删除 |
|
|
|
<FormattedMessage id="pages.searchTable.batchDeletion" defaultMessage="批量删除" /> |
|
|
|
</Button> |
|
|
|
<Button type="primary"> |
|
|
|
<FormattedMessage id="pages.searchTable.batchApproval" defaultMessage="批量审批" /> |
|
|
|
</Button> |
|
|
|
<Button type="primary">批量审批</Button> |
|
|
|
</FooterToolbar> |
|
|
|
)} |
|
|
|
<CreateForm onCancel={() => handleModalVisible(false)} modalVisible={createModalVisible}> |
|
|
|
|