123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- import { DownOutlined, PlusOutlined } from '@ant-design/icons';
- import { Button, Divider, Dropdown, Menu, message } from 'antd';
- import React, { useState, useRef } from 'react';
- import { PageHeaderWrapper } from '@ant-design/pro-layout';
- import ProTable, { ProColumns, ActionType } from '@ant-design/pro-table';
- import { SorterResult } from 'antd/es/table/interface';
- import CreateForm from './components/CreateForm';
- import UpdateForm, { FormValueType } from './components/UpdateForm';
- import { TableListItem } from './data.d';
- import { queryRule, updateRule, addRule, removeRule } from './service';
- /**
- * 添加节点
- * @param fields
- */
- const handleAdd = async (fields: TableListItem) => {
- const hide = message.loading('正在添加');
- try {
- await addRule({ ...fields });
- hide();
- message.success('添加成功');
- return true;
- } catch (error) {
- hide();
- message.error('添加失败请重试!');
- return false;
- }
- };
- /**
- * 更新节点
- * @param fields
- */
- const handleUpdate = async (fields: FormValueType) => {
- const hide = message.loading('正在配置');
- try {
- await updateRule({
- name: fields.name,
- desc: fields.desc,
- key: fields.key,
- });
- hide();
- message.success('配置成功');
- return true;
- } catch (error) {
- hide();
- message.error('配置失败请重试!');
- return false;
- }
- };
- /**
- * 删除节点
- * @param selectedRows
- */
- const handleRemove = async (selectedRows: TableListItem[]) => {
- const hide = message.loading('正在删除');
- if (!selectedRows) return true;
- try {
- await removeRule({
- key: selectedRows.map((row) => row.key),
- });
- hide();
- message.success('删除成功,即将刷新');
- return true;
- } catch (error) {
- hide();
- message.error('删除失败,请重试');
- return false;
- }
- };
- const TableList: React.FC<{}> = () => {
- const [sorter, setSorter] = useState<string>('');
- const [createModalVisible, handleModalVisible] = useState<boolean>(false);
- const [updateModalVisible, handleUpdateModalVisible] = useState<boolean>(false);
- const [stepFormValues, setStepFormValues] = useState({});
- const actionRef = useRef<ActionType>();
- const columns: ProColumns<TableListItem>[] = [
- {
- title: '规则名称',
- dataIndex: 'name',
- rules: [
- {
- required: true,
- message: '规则名称为必填项',
- },
- ],
- },
- {
- title: '描述',
- dataIndex: 'desc',
- valueType: 'textarea',
- },
- {
- title: '服务调用次数',
- dataIndex: 'callNo',
- sorter: true,
- hideInForm: true,
- renderText: (val: string) => `${val} 万`,
- },
- {
- title: '状态',
- dataIndex: 'status',
- hideInForm: true,
- valueEnum: {
- 0: { text: '关闭', status: 'Default' },
- 1: { text: '运行中', status: 'Processing' },
- 2: { text: '已上线', status: 'Success' },
- 3: { text: '异常', status: 'Error' },
- },
- },
- {
- title: '上次调度时间',
- dataIndex: 'updatedAt',
- sorter: true,
- valueType: 'dateTime',
- hideInForm: true,
- },
- {
- title: '操作',
- dataIndex: 'option',
- valueType: 'option',
- render: (_, record) => (
- <>
- <a
- onClick={() => {
- handleUpdateModalVisible(true);
- setStepFormValues(record);
- }}
- >
- 配置
- </a>
- <Divider type="vertical" />
- <a href="">订阅警报</a>
- </>
- ),
- },
- ];
- return (
- <PageHeaderWrapper>
- <ProTable<TableListItem>
- headerTitle="查询表格"
- actionRef={actionRef}
- rowKey="key"
- onChange={(_, _filter, _sorter) => {
- const sorterResult = _sorter as SorterResult<TableListItem>;
- if (sorterResult.field) {
- setSorter(`${sorterResult.field}_${sorterResult.order}`);
- }
- }}
- params={{
- sorter,
- }}
- toolBarRender={(action, { selectedRows }) => [
- <Button type="primary" onClick={() => handleModalVisible(true)}>
- <PlusOutlined /> 新建
- </Button>,
- selectedRows && selectedRows.length > 0 && (
- <Dropdown
- overlay={
- <Menu
- onClick={async (e) => {
- if (e.key === 'remove') {
- await handleRemove(selectedRows);
- action.reload();
- }
- }}
- selectedKeys={[]}
- >
- <Menu.Item key="remove">批量删除</Menu.Item>
- <Menu.Item key="approval">批量审批</Menu.Item>
- </Menu>
- }
- >
- <Button>
- 批量操作 <DownOutlined />
- </Button>
- </Dropdown>
- ),
- ]}
- request={(params) => queryRule(params)}
- columns={columns}
- rowSelection={{}}
- />
- <CreateForm onCancel={() => handleModalVisible(false)} modalVisible={createModalVisible}>
- <ProTable<TableListItem, TableListItem>
- onSubmit={async (value) => {
- const success = await handleAdd(value);
- if (success) {
- handleModalVisible(false);
- if (actionRef.current) {
- actionRef.current.reload();
- }
- }
- }}
- rowKey="key"
- type="form"
- columns={columns}
- rowSelection={{}}
- />
- </CreateForm>
- {stepFormValues && Object.keys(stepFormValues).length ? (
- <UpdateForm
- onSubmit={async (value) => {
- const success = await handleUpdate(value);
- if (success) {
- handleUpdateModalVisible(false);
- setStepFormValues({});
- if (actionRef.current) {
- actionRef.current.reload();
- }
- }
- }}
- onCancel={() => {
- handleUpdateModalVisible(false);
- setStepFormValues({});
- }}
- updateModalVisible={updateModalVisible}
- values={stepFormValues}
- />
- ) : null}
- </PageHeaderWrapper>
- );
- };
- export default TableList;
|