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;