调整归档操作入口

This commit is contained in:
2026-07-16 10:44:21 +08:00
parent 1737563516
commit 200d2e423b
2 changed files with 43 additions and 32 deletions

View File

@@ -154,16 +154,6 @@ const ClassesPage: React.FC = () => {
} }
}; };
const handleDelete = async (id: number) => {
try {
await api.delete(`/classes/${id}`);
message.success('已删除');
fetchData();
} catch (e: any) {
message.error(e?.message || '删除失败');
}
};
const columns: ColumnsType<ClassItem> = useMemo(() => [ const columns: ColumnsType<ClassItem> = useMemo(() => [
{ {
title: '班级名称', dataIndex: 'name', width: 120, title: '班级名称', dataIndex: 'name', width: 120,
@@ -208,11 +198,6 @@ const ClassesPage: React.FC = () => {
<PermissionButton permission="class:edit" size="small"></PermissionButton> <PermissionButton permission="class:edit" size="small"></PermissionButton>
</Popconfirm> </Popconfirm>
)} )}
<Popconfirm title="确认删除?" onConfirm={() => handleDelete(r.id)}>
<PermissionButton permission="class:delete" size="small" danger>
</PermissionButton>
</Popconfirm>
</Space> </Space>
), ),
}, },

View File

@@ -1,6 +1,6 @@
import React, { useEffect, useMemo, useState } from 'react'; import React, { useEffect, useMemo, useState } from 'react';
import { Alert, Empty, Form, Input, Modal, Popconfirm, Select, Space, Table, Tag } from 'antd'; import { Alert, Empty, Form, Input, Modal, Popconfirm, Select, Space, Table, Tag } from 'antd';
import { BankOutlined, InboxOutlined, PlusOutlined } from '@ant-design/icons'; import { BankOutlined, InboxOutlined, PlusOutlined, UndoOutlined } from '@ant-design/icons';
import api from '../../api'; import api from '../../api';
import PermissionButton from '../../components/PermissionButton'; import PermissionButton from '../../components/PermissionButton';
import { message } from '../../ui/app-message'; import { message } from '../../ui/app-message';
@@ -148,35 +148,61 @@ const OrganizationsPage: React.FC = () => {
width: 160, width: 160,
render: (_: unknown, record: OrganizationItem) => ( render: (_: unknown, record: OrganizationItem) => (
<Space> <Space>
<PermissionButton {record.status === 'archived' ? (
permission="organization:edit"
size="small"
onClick={() => openEditor(record)}
>
</PermissionButton>
{!record.isHost && record.status === 'active' ? (
<Popconfirm <Popconfirm
title="归档后仍保留历史学生、入住和租赁记录" title="确定恢复此机构?"
onConfirm={async () => { onConfirm={async () => {
try { try {
await api.delete(`/organizations/${record.id}`); await api.put(`/organizations/${record.id}`, { status: 'active' });
message.success('机构已归档'); message.success('机构已恢复');
await fetchData(); await fetchData();
} catch (error: any) { } catch (error: any) {
message.error(error?.message || '归档失败'); message.error(error?.message || '恢复失败');
} }
}} }}
> >
<PermissionButton <PermissionButton
permission="organization:delete" permission="organization:edit"
size="small" size="small"
icon={<InboxOutlined />} type="link"
icon={<UndoOutlined />}
> >
</PermissionButton> </PermissionButton>
</Popconfirm> </Popconfirm>
) : null} ) : (
<>
<PermissionButton
permission="organization:edit"
size="small"
onClick={() => openEditor(record)}
>
</PermissionButton>
{!record.isHost ? (
<Popconfirm
title="归档后仍保留历史学生、入住和租赁记录"
onConfirm={async () => {
try {
await api.delete(`/organizations/${record.id}`);
message.success('机构已归档');
await fetchData();
} catch (error: any) {
message.error(error?.message || '归档失败');
}
}}
>
<PermissionButton
permission="organization:delete"
size="small"
icon={<InboxOutlined />}
>
</PermissionButton>
</Popconfirm>
) : null}
</>
)}
</Space> </Space>
), ),
}, },