| | |
| | | import { App as AntdApp, Button } from 'antd'; |
| | | import { createXxxColumns } from './columns'; |
| | | import { deleteXxx, getXxxList } from './server'; |
| | | import type { XxxQuery, XxxRecord } from './types'; |
| | | import type { XxxListParams, XxxQuery, XxxRecord } from './types'; |
| | | import './Xxx.scss'; |
| | | |
| | | const Xxx = () => { |
| | |
| | | okText: '删除', |
| | | cancelText: '取消', |
| | | okButtonProps: { danger: true }, |
| | | onOk: async () => { |
| | | await deleteXxx(record.key); |
| | | message.success('已删除'); |
| | | actionRef.current?.reload(); |
| | | }, |
| | | onOk: () => |
| | | deleteXxx(record.key) |
| | | .then(() => { |
| | | message.success('已删除'); |
| | | actionRef.current?.reload(); |
| | | }) |
| | | .catch(() => { |
| | | // 错误已由 request 统一提示 |
| | | }), |
| | | }); |
| | | }, |
| | | [message, modal], |
| | |
| | | [handleDelete], |
| | | ); |
| | | |
| | | const fetchList = useCallback( |
| | | (params: XxxListParams) => |
| | | getXxxList(params).then((result) => ({ |
| | | data: result.data, |
| | | total: result.total, |
| | | success: result.success, |
| | | })), |
| | | [], |
| | | ); |
| | | |
| | | return ( |
| | | <div className="xxx-page"> |
| | | <div className="page-header"> |
| | | <div> |
| | | <h1 className="page-header__title">页面标题</h1> |
| | | <p className="page-header__desc">页面说明。</p> |
| | | </div> |
| | | </div> |
| | | |
| | | <ProTable<XxxRecord, XxxQuery> |
| | | rowKey="key" |
| | | actionRef={actionRef} |
| | | columns={columns} |
| | | cardProps={{ className: 'xxx-table-card' }} |
| | | search={{ labelWidth: 'auto', defaultCollapsed: false }} |
| | | scroll={{ x: 900 }} |
| | | options={false} |
| | |
| | | 新增 |
| | | </Button>, |
| | | ]} |
| | | request={(params) => getXxxList(params)} |
| | | request={fetchList} |
| | | /> |
| | | </div> |
| | | ); |