|
|
|
@ -14,31 +14,32 @@ import type { TableListItem } from './data.d'; |
|
|
|
import { queryRule, updateRule, addRule, removeRule } from './service'; |
|
|
|
|
|
|
|
/** |
|
|
|
* 添加节点 |
|
|
|
* |
|
|
|
* @en-US Add node |
|
|
|
* @zh-CN 添加节点 |
|
|
|
* @param fields |
|
|
|
*/ |
|
|
|
const handleAdd = async (fields: TableListItem) => { |
|
|
|
const hide = message.loading('正在添加'); |
|
|
|
const hide = message.loading('Adding'); |
|
|
|
try { |
|
|
|
await addRule({ ...fields }); |
|
|
|
hide(); |
|
|
|
message.success('添加成功'); |
|
|
|
message.success('Added successfully'); |
|
|
|
return true; |
|
|
|
} catch (error) { |
|
|
|
hide(); |
|
|
|
message.error('添加失败请重试!'); |
|
|
|
message.error('Adding failed, please try again!'); |
|
|
|
return false; |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
/** |
|
|
|
* 更新节点 |
|
|
|
* @en-US Update node |
|
|
|
* @zh-CN 更新节点 |
|
|
|
* |
|
|
|
* @param fields |
|
|
|
*/ |
|
|
|
const handleUpdate = async (fields: FormValueType) => { |
|
|
|
const hide = message.loading('正在配置'); |
|
|
|
const hide = message.loading('Configuring'); |
|
|
|
try { |
|
|
|
await updateRule({ |
|
|
|
name: fields.name, |
|
|
|
@ -47,41 +48,48 @@ const handleUpdate = async (fields: FormValueType) => { |
|
|
|
}); |
|
|
|
hide(); |
|
|
|
|
|
|
|
message.success('配置成功'); |
|
|
|
message.success('Configuration is successful'); |
|
|
|
return true; |
|
|
|
} catch (error) { |
|
|
|
hide(); |
|
|
|
message.error('配置失败请重试!'); |
|
|
|
message.error('Configuration failed, please try again!'); |
|
|
|
return false; |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
/** |
|
|
|
* 删除节点 |
|
|
|
* Delete node |
|
|
|
* @zh-CN 删除节点 |
|
|
|
* |
|
|
|
* @param selectedRows |
|
|
|
*/ |
|
|
|
const handleRemove = async (selectedRows: TableListItem[]) => { |
|
|
|
const hide = message.loading('正在删除'); |
|
|
|
const hide = message.loading('Deleting'); |
|
|
|
if (!selectedRows) return true; |
|
|
|
try { |
|
|
|
await removeRule({ |
|
|
|
key: selectedRows.map((row) => row.key), |
|
|
|
}); |
|
|
|
hide(); |
|
|
|
message.success('删除成功,即将刷新'); |
|
|
|
message.success('Deleted successfully and will refresh soon'); |
|
|
|
return true; |
|
|
|
} catch (error) { |
|
|
|
hide(); |
|
|
|
message.error('删除失败,请重试'); |
|
|
|
message.error('Delete failed, please try again'); |
|
|
|
return false; |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
const TableList: React.FC = () => { |
|
|
|
/** 新建窗口的弹窗 */ |
|
|
|
/** |
|
|
|
* @en-US Pop-up window of new window |
|
|
|
* @zh-CN 新建窗口的弹窗 |
|
|
|
* */ |
|
|
|
const [createModalVisible, handleModalVisible] = useState<boolean>(false); |
|
|
|
/** 分布更新窗口的弹窗 */ |
|
|
|
/** |
|
|
|
* @en-US The pop-up window of the distribution update window |
|
|
|
* @zh-CN 分布更新窗口的弹窗 |
|
|
|
* */ |
|
|
|
const [updateModalVisible, handleUpdateModalVisible] = useState<boolean>(false); |
|
|
|
|
|
|
|
const [showDetail, setShowDetail] = useState<boolean>(false); |
|
|
|
@ -90,7 +98,10 @@ const TableList: React.FC = () => { |
|
|
|
const [currentRow, setCurrentRow] = useState<TableListItem>(); |
|
|
|
const [selectedRowsState, setSelectedRows] = useState<TableListItem[]>([]); |
|
|
|
|
|
|
|
/** 国际化配置 */ |
|
|
|
/** |
|
|
|
* @en-US International configuration |
|
|
|
* @zh-CN 国际化配置 |
|
|
|
* */ |
|
|
|
const intl = useIntl(); |
|
|
|
|
|
|
|
const columns: ProColumns<TableListItem>[] = [ |
|
|
|
@ -98,11 +109,11 @@ const TableList: React.FC = () => { |
|
|
|
title: ( |
|
|
|
<FormattedMessage |
|
|
|
id="pages.searchTable.updateForm.ruleName.nameLabel" |
|
|
|
defaultMessage="规则名称" |
|
|
|
defaultMessage="Rule name" |
|
|
|
/> |
|
|
|
), |
|
|
|
dataIndex: 'name', |
|
|
|
tip: '规则名称是唯一的 key', |
|
|
|
tip: 'The rule name is the unique key', |
|
|
|
render: (dom, entity) => { |
|
|
|
return ( |
|
|
|
<a |
|
|
|
@ -117,12 +128,17 @@ const TableList: React.FC = () => { |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
title: <FormattedMessage id="pages.searchTable.titleDesc" defaultMessage="描述" />, |
|
|
|
title: <FormattedMessage id="pages.searchTable.titleDesc" defaultMessage="Description" />, |
|
|
|
dataIndex: 'desc', |
|
|
|
valueType: 'textarea', |
|
|
|
}, |
|
|
|
{ |
|
|
|
title: <FormattedMessage id="pages.searchTable.titleCallNo" defaultMessage="服务调用次数" />, |
|
|
|
title: ( |
|
|
|
<FormattedMessage |
|
|
|
id="pages.searchTable.titleCallNo" |
|
|
|
defaultMessage="Number of service calls" |
|
|
|
/> |
|
|
|
), |
|
|
|
dataIndex: 'callNo', |
|
|
|
sorter: true, |
|
|
|
hideInForm: true, |
|
|
|
@ -133,31 +149,37 @@ const TableList: React.FC = () => { |
|
|
|
})}`,
|
|
|
|
}, |
|
|
|
{ |
|
|
|
title: <FormattedMessage id="pages.searchTable.titleStatus" defaultMessage="状态" />, |
|
|
|
title: <FormattedMessage id="pages.searchTable.titleStatus" defaultMessage="Status" />, |
|
|
|
dataIndex: 'status', |
|
|
|
hideInForm: true, |
|
|
|
valueEnum: { |
|
|
|
0: { |
|
|
|
text: ( |
|
|
|
<FormattedMessage id="pages.searchTable.nameStatus.default" defaultMessage="关闭" /> |
|
|
|
<FormattedMessage |
|
|
|
id="pages.searchTable.nameStatus.default" |
|
|
|
defaultMessage="Shut down" |
|
|
|
/> |
|
|
|
), |
|
|
|
status: 'Default', |
|
|
|
}, |
|
|
|
1: { |
|
|
|
text: ( |
|
|
|
<FormattedMessage id="pages.searchTable.nameStatus.running" defaultMessage="运行中" /> |
|
|
|
<FormattedMessage id="pages.searchTable.nameStatus.running" defaultMessage="Running" /> |
|
|
|
), |
|
|
|
status: 'Processing', |
|
|
|
}, |
|
|
|
2: { |
|
|
|
text: ( |
|
|
|
<FormattedMessage id="pages.searchTable.nameStatus.online" defaultMessage="已上线" /> |
|
|
|
<FormattedMessage id="pages.searchTable.nameStatus.online" defaultMessage="Online" /> |
|
|
|
), |
|
|
|
status: 'Success', |
|
|
|
}, |
|
|
|
3: { |
|
|
|
text: ( |
|
|
|
<FormattedMessage id="pages.searchTable.nameStatus.abnormal" defaultMessage="异常" /> |
|
|
|
<FormattedMessage |
|
|
|
id="pages.searchTable.nameStatus.abnormal" |
|
|
|
defaultMessage="Abnormal" |
|
|
|
/> |
|
|
|
), |
|
|
|
status: 'Error', |
|
|
|
}, |
|
|
|
@ -165,7 +187,10 @@ const TableList: React.FC = () => { |
|
|
|
}, |
|
|
|
{ |
|
|
|
title: ( |
|
|
|
<FormattedMessage id="pages.searchTable.titleUpdatedAt" defaultMessage="上次调度时间" /> |
|
|
|
<FormattedMessage |
|
|
|
id="pages.searchTable.titleUpdatedAt" |
|
|
|
defaultMessage="Last scheduled time" |
|
|
|
/> |
|
|
|
), |
|
|
|
sorter: true, |
|
|
|
dataIndex: 'updatedAt', |
|
|
|
@ -181,7 +206,7 @@ const TableList: React.FC = () => { |
|
|
|
{...rest} |
|
|
|
placeholder={intl.formatMessage({ |
|
|
|
id: 'pages.searchTable.exception', |
|
|
|
defaultMessage: '请输入异常原因!', |
|
|
|
defaultMessage: 'Please enter the reason for the exception!', |
|
|
|
})} |
|
|
|
/> |
|
|
|
); |
|
|
|
@ -190,7 +215,7 @@ const TableList: React.FC = () => { |
|
|
|
}, |
|
|
|
}, |
|
|
|
{ |
|
|
|
title: <FormattedMessage id="pages.searchTable.titleOption" defaultMessage="操作" />, |
|
|
|
title: <FormattedMessage id="pages.searchTable.titleOption" defaultMessage="Operating" />, |
|
|
|
dataIndex: 'option', |
|
|
|
valueType: 'option', |
|
|
|
render: (_, record) => [ |
|
|
|
@ -201,10 +226,13 @@ const TableList: React.FC = () => { |
|
|
|
setCurrentRow(record); |
|
|
|
}} |
|
|
|
> |
|
|
|
<FormattedMessage id="pages.searchTable.config" defaultMessage="配置" /> |
|
|
|
<FormattedMessage id="pages.searchTable.config" defaultMessage="Configuration" /> |
|
|
|
</a>, |
|
|
|
<a key="subscribeAlert" href="https://procomponents.ant.design/"> |
|
|
|
<FormattedMessage id="pages.searchTable.subscribeAlert" defaultMessage="订阅警报" /> |
|
|
|
<FormattedMessage |
|
|
|
id="pages.searchTable.subscribeAlert" |
|
|
|
defaultMessage="Subscribe to alerts" |
|
|
|
/> |
|
|
|
</a>, |
|
|
|
], |
|
|
|
}, |
|
|
|
@ -215,7 +243,7 @@ const TableList: React.FC = () => { |
|
|
|
<ProTable<TableListItem> |
|
|
|
headerTitle={intl.formatMessage({ |
|
|
|
id: 'pages.searchTable.title', |
|
|
|
defaultMessage: '查询表格', |
|
|
|
defaultMessage: 'Enquiry form', |
|
|
|
})} |
|
|
|
actionRef={actionRef} |
|
|
|
rowKey="key" |
|
|
|
@ -230,7 +258,7 @@ const TableList: React.FC = () => { |
|
|
|
handleModalVisible(true); |
|
|
|
}} |
|
|
|
> |
|
|
|
<PlusOutlined /> <FormattedMessage id="pages.searchTable.new" defaultMessage="新建" /> |
|
|
|
<PlusOutlined /> <FormattedMessage id="pages.searchTable.new" defaultMessage="New" /> |
|
|
|
</Button>, |
|
|
|
]} |
|
|
|
request={(params, sorter, filter) => queryRule({ ...params, sorter, filter })} |
|
|
|
@ -245,14 +273,14 @@ const TableList: React.FC = () => { |
|
|
|
<FooterToolbar |
|
|
|
extra={ |
|
|
|
<div> |
|
|
|
<FormattedMessage id="pages.searchTable.chosen" defaultMessage="已选择" />{' '} |
|
|
|
<FormattedMessage id="pages.searchTable.chosen" defaultMessage="Chosen" />{' '} |
|
|
|
<a style={{ fontWeight: 600 }}>{selectedRowsState.length}</a>{' '} |
|
|
|
<FormattedMessage id="pages.searchTable.item" defaultMessage="项" /> |
|
|
|
|
|
|
|
<span> |
|
|
|
<FormattedMessage |
|
|
|
id="pages.searchTable.totalServiceCalls" |
|
|
|
defaultMessage="服务调用次数总计" |
|
|
|
defaultMessage="Total number of service calls" |
|
|
|
/>{' '} |
|
|
|
{selectedRowsState.reduce((pre, item) => pre + item.callNo, 0)}{' '} |
|
|
|
<FormattedMessage id="pages.searchTable.tenThousand" defaultMessage="万" /> |
|
|
|
@ -267,17 +295,23 @@ const TableList: React.FC = () => { |
|
|
|
actionRef.current?.reloadAndRest?.(); |
|
|
|
}} |
|
|
|
> |
|
|
|
<FormattedMessage id="pages.searchTable.batchDeletion" defaultMessage="批量删除" /> |
|
|
|
<FormattedMessage |
|
|
|
id="pages.searchTable.batchDeletion" |
|
|
|
defaultMessage="Batch deletion" |
|
|
|
/> |
|
|
|
</Button> |
|
|
|
<Button type="primary"> |
|
|
|
<FormattedMessage id="pages.searchTable.batchApproval" defaultMessage="批量审批" /> |
|
|
|
<FormattedMessage |
|
|
|
id="pages.searchTable.batchApproval" |
|
|
|
defaultMessage="Batch approval" |
|
|
|
/> |
|
|
|
</Button> |
|
|
|
</FooterToolbar> |
|
|
|
)} |
|
|
|
<ModalForm |
|
|
|
title={intl.formatMessage({ |
|
|
|
id: 'pages.searchTable.createForm.newRule', |
|
|
|
defaultMessage: '新建规则', |
|
|
|
defaultMessage: 'New rule', |
|
|
|
})} |
|
|
|
width="400px" |
|
|
|
visible={createModalVisible} |
|
|
|
@ -299,7 +333,7 @@ const TableList: React.FC = () => { |
|
|
|
message: ( |
|
|
|
<FormattedMessage |
|
|
|
id="pages.searchTable.ruleName" |
|
|
|
defaultMessage="规则名称为必填项" |
|
|
|
defaultMessage="Rule name is required" |
|
|
|
/> |
|
|
|
), |
|
|
|
}, |
|
|
|
|