import React, { useState, useRef, useEffect } from 'react'; import { Button, message, Modal, Tag } from 'antd'; import { FooterToolbar, PageContainer, ProTable, LightFilter, } from '@ant-design/pro-components'; import { FormattedMessage, useIntl } from '@umijs/max'; import { PlusOutlined, ExportOutlined } from '@ant-design/icons'; import Http from '@/utils/http'; import Edit from './components/edit' import { TextFilter, SelectFilter, DatetimeRangeFilter, LinkFilter } from '@/components/TableSearch' import { statusMap } from '@/utils/enum-util' import { repairBug } from '@/utils/common-util'; const TABLE_KEY = 'pro-table-@{SIMPLEENTITYNAME}'; const handleSave = async (val, intl) => { const hide = message.loading(intl.formatMessage({ id: 'page.adding', defaultMessage: '正在添加' })); try { const resp = await Http.doPost('api/@{SIMPLEENTITYNAME}/save', val); if (resp.code === 200) { message.success(intl.formatMessage({ id: 'page.add.success', defaultMessage: '添加成功' })); return true; } else { message.error(resp.msg); return false; } } catch (error) { message.error(intl.formatMessage({ id: 'page.add.fail', defaultMessage: '添加失败请重试!' })); return false; } finally { hide(); } }; const handleUpdate = async (val, intl) => { const hide = message.loading(intl.formatMessage({ id: 'page.updating', defaultMessage: '正在更新' })); try { const resp = await Http.doPost('api/@{SIMPLEENTITYNAME}/update', val); if (resp.code === 200) { message.success(intl.formatMessage({ id: 'page.update.success', defaultMessage: '更新成功' })); return true; } else { message.error(resp.msg); return false; } } catch (error) { message.error(intl.formatMessage({ id: 'page.update.fail', defaultMessage: '更新失败请重试!' })); return false; } finally { hide(); } }; const handleRemove = async (rows, intl) => { if (!rows) return true; const hide = message.loading(intl.formatMessage({ id: 'page.deleting', defaultMessage: '正在删除' })); try { const resp = await Http.doPost('api/@{SIMPLEENTITYNAME}/remove/' + rows.map((row) => row.id).join(',')); if (resp.code === 200) { message.success(intl.formatMessage({ id: 'page.delete.success', defaultMessage: '删除成功' })); return true; } else { message.error(resp.msg); return false; } } catch (error) { message.error(intl.formatMessage({ id: 'page.delete.fail', defaultMessage: '删除失败,请重试!' })); return false; } finally { hide(); } }; const handleExport = async (intl) => { const hide = message.loading(intl.formatMessage({ id: 'page.exporting', defaultMessage: '正在导出' })); try { const resp = await Http.doPostBlob('api/@{SIMPLEENTITYNAME}/export'); const blob = new Blob([resp], { type: 'application/vnd.ms-excel' }); window.location.href = window.URL.createObjectURL(blob); message.success(intl.formatMessage({ id: 'page.export.success', defaultMessage: '导出成功' })); return true; } catch (error) { message.error(intl.formatMessage({ id: 'page.export.fail', defaultMessage: '导出失败,请重试' })); return false; } finally { hide(); } }; const Main = () => { const intl = useIntl(); const formTableRef = useRef(); const actionRef = useRef(); const [selectedRows, setSelectedRows] = useState([]); const [modalVisible, setModalVisible] = useState(false); const [currentRow, setCurrentRow] = useState(); const [searchParam, setSearchParam] = useState({}); useEffect(() => { }, []); const columns = [ { title: intl.formatMessage({ id: 'page.table.no', defaultMessage: 'No' }), dataIndex: 'index', valueType: 'indexBorder', width: 48, }, @{TABLECOLUMNS} { title: '操作', dataIndex: 'option', width: 140, valueType: 'option', render: (_, record) => [ , , ], }, ]; return (
{ setSearchParam(prevState => ({ ...prevState, condition: value })); actionRef.current?.reload(); }, }, filter: ( { }} > ), actions: [ , , ], }} request={(params, sorter, filter) => Http.doPostPromise('/api/@{SIMPLEENTITYNAME}/page', { ...params, ...searchParam }, (res) => { return { data: res.data.records, total: res.data.total, success: true, } }) } rowSelection={{ onChange: (ids, rows) => { setSelectedRows(rows); } }} columnsState={{ persistenceKey: TABLE_KEY, persistenceType: 'localStorage', defaultValue: { // memo: { show: repairBug(TABLE_KEY, 'memo', false) }, option: { fixed: 'right', disable: true }, }, onChange(value) { }, }} />
{selectedRows?.length > 0 && ( {selectedRows.length} } > )} { setModalVisible(false); setCurrentRow(undefined); } } onSubmit={async (values) => { let ok = false; if (values.id) { ok = await handleUpdate({ ...values }, intl) } else { ok = await handleSave({ ...values }, intl) } if (ok) { setModalVisible(false); setCurrentRow(undefined); if (actionRef.current) { actionRef.current.reload(); } } }} />
); }; export default Main;