@@ -117,16 +136,8 @@ const MainLayout: React.FC = () => {
{menuContent}
)}
- {/* 移动端抽屉 */}
{isMobile && (
-
setDrawerOpen(false)}
- width={240}
- styles={{ body: { padding: 0 } }}
- title="恭学教育基地"
- >
+ setDrawerOpen(false)} width={240} styles={{ body: { padding: 0 } }} title="恭学教育基地">
{menuContent}
)}
diff --git a/frontend/src/pages/Bills/index.tsx b/frontend/src/pages/Bills/index.tsx
index 3f19e82..e38e2cc 100644
--- a/frontend/src/pages/Bills/index.tsx
+++ b/frontend/src/pages/Bills/index.tsx
@@ -3,6 +3,7 @@ import { Table, Button, Modal, Form, DatePicker, Space, message, Tag, Descriptio
import { FileTextOutlined, DeleteOutlined, DownloadOutlined, FilePdfOutlined } from '@ant-design/icons';
import dayjs from 'dayjs';
import api from '../../api';
+import PermissionButton from '../../components/PermissionButton';
const { RangePicker } = DatePicker;
@@ -180,13 +181,15 @@ const BillsPage: React.FC = () => {
title: '操作', width: 320,
render: (_: any, record: any) => (
-
- {record.status === 'draft' && }
- {record.status === 'confirmed' && }
- } onClick={() => handleExportPdf(record.id)}>PDF
- handleDelete(record.id)} okText="删除" cancelText="取消">
- }>删除
-
+ showDetail(record.id)}>详情
+ {record.status === 'draft' && updateStatus(record.id, 'confirmed')}>确认}
+ {record.status === 'confirmed' && updateStatus(record.id, 'paid')}>标记已付}
+ } onClick={() => handleExportPdf(record.id)}>PDF
+
+ handleDelete(record.id)} okText="删除" cancelText="取消">
+ }>删除
+
+
),
},
@@ -215,17 +218,19 @@ const BillsPage: React.FC = () => {
{ value: 'paid', label: '已支付' },
]}
/>
-
-
-
- }>批量删除
-
+ batchUpdateStatus('confirmed')} disabled={selectedRows.length === 0}>批量确认
+ batchUpdateStatus('paid')} disabled={selectedRows.length === 0}>批量标记已付
+
+
+ }>批量删除
+
+
- } onClick={() => { generateForm.resetFields(); setGenerateModal(true); }}>
+ } onClick={() => { generateForm.resetFields(); setGenerateModal(true); }}>
生成账单
-
- } onClick={handleExportExcel}>导出Excel
+
+ } onClick={handleExportExcel}>导出Excel