import React, { useState, useRef, useEffect } from 'react'; import { Button, message, Modal } from 'antd'; import { FooterToolbar, PageContainer, ProTable, LightFilter, } from '@ant-design/pro-components'; 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' const handleSave = async (val) => { const hide = message.loading('正在添加'); try { const resp = await Http.doPost('api/@{SIMPLEENTITYNAME}/save', val); if (resp.code === 200) { message.success('添加成功'); return true; } else { message.error(resp.msg); return false; } } catch (error) { message.error('添加失败请重试!'); return false; } finally { hide(); } }; const handleUpdate = async (val) => { const hide = message.loading('正在更新'); try { const resp = await Http.doPost('api/@{SIMPLEENTITYNAME}/update', val); if (resp.code === 200) { message.success('更新成功'); return true; } else { message.error(resp.msg); return false; } } catch (error) { message.error('配置失败请重试!'); return false; } finally { hide(); } }; const handleRemove = async (rows) => { if (!rows) return true; const hide = message.loading('正在删除'); try { const resp = await Http.doPost('api/@{SIMPLEENTITYNAME}/remove/' + rows.map((row) => row.id).join(',')); if (resp.code === 200) { message.success('删除成功'); return true; } else { message.error(resp.msg); return false; } } catch (error) { message.error('删除失败,请重试'); return false; } finally { hide(); } }; const handleExport = async () => { const hide = message.loading('正在导出'); 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('导出成功'); return true; } catch (error) { message.error('导出失败,请重试'); return false; } finally { hide(); } }; const Main = () => { 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: '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: 'pro-table-@{SIMPLEENTITYNAME}', persistenceType: 'localStorage', defaultValue: { 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 }) } else { ok = await handleSave({ ...values }) } if (ok) { setModalVisible(false); setCurrentRow(undefined); if (actionRef.current) { actionRef.current.reload(); } } } } />
); }; export default Main;