增加 停用/启用 按钮对模板状态进行操作

This commit is contained in:
linxd
2025-07-17 08:59:31 +08:00
parent 0c293f836a
commit fc4787359c
4 changed files with 85 additions and 26 deletions

View File

@ -16,7 +16,7 @@ export const AnnualTemplateStatusText = {
// 年度模板状态颜色
export const AnnualTemplateStatusColor = {
[AnnualTemplateStatus.DRAFT]: 'processing',
[AnnualTemplateStatus.ENABLED]: 'success',
[AnnualTemplateStatus.DISABLED]: 'default',
[AnnualTemplateStatus.DRAFT]: 'default',
[AnnualTemplateStatus.ENABLED]: 'green',
[AnnualTemplateStatus.DISABLED]: 'red',
};

View File

@ -283,29 +283,15 @@ const SupplierAnnualTemplateManage: React.FC = () => {
{intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.view' })}
</Button>
{/* 草稿状态显示启用按钮 */}
{record.status === AnnualTemplateStatus.DRAFT && (
{/* 禁用状态显示启用按钮 草稿状态显示启用按钮 */}
{(record.status === AnnualTemplateStatus.DISABLED || record.status === AnnualTemplateStatus.DRAFT) && (
<Button type="link" onClick={() => handleEnableTemplate(record.id)} size="small">
{intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.enable' })}
</Button>
)}
{/* 草稿状态显示禁用按钮 */}
{record.status === AnnualTemplateStatus.DRAFT && (
<Button type="link" danger onClick={() => handleDisableTemplate(record.id)} size="small">
{intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.disable' })}
</Button>
)}
{/* 禁用状态显示启用按钮 */}
{record.status === AnnualTemplateStatus.DISABLED && (
<Button type="link" onClick={() => handleEnableTemplate(record.id)} size="small">
{intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.enable' })}
</Button>
)}
{/* 启用状态显示禁用按钮 */}
{record.status === AnnualTemplateStatus.ENABLED && (
{/* 启用状态显示禁用按钮 草稿状态显示禁用按钮 */}
{(record.status === AnnualTemplateStatus.ENABLED || record.status === AnnualTemplateStatus.DRAFT) && (
<Button type="link" danger onClick={() => handleDisableTemplate(record.id)} size="small">
{intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.disable' })}
</Button>

View File

@ -1,6 +1,6 @@
import React, { useState, useEffect } from 'react';
import { history, useIntl } from 'umi';
import { Button, Table, Space, message, Input, Select, Form, Tooltip, Tag } from 'antd';
import { Button, Table, Space, message, Input, Select, Form, Tooltip, Tag, Modal } from 'antd';
import type { TablePaginationConfig } from 'antd';
import { PlusOutlined, DeleteOutlined, SearchOutlined } from '@ant-design/icons';
import {
@ -8,7 +8,7 @@ import {
TemplateStatusColor,
TemplateStatus,
} from '@/dicts/supplierTemplateDict';
import { getTemplateList } from '@/servers/api/supplierEvaluate';
import { getTemplateList, enableTemplate, disableTemplate } from '@/servers/api/supplierEvaluate';
import CategorySelector from '@/components/CategorySelector/CategorySelector';
const { Option } = Select;
@ -124,7 +124,59 @@ const SupplierTemplateManage: React.FC = () => {
const handleTableChange = (newPagination: TablePaginationConfig) => {
fetchTemplateList(newPagination.current, newPagination.pageSize, searchParams);
};
// 处理启用模板
const handleEnableTemplate = (id: string) => {
Modal.confirm({
title: intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.enableConfirmTitle' }),
content: intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.enableConfirmContent' }),
okText: intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.confirm' }),
cancelText: intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.cancel' }),
onOk: async () => {
try {
setLoading(true);
const res = await enableTemplate(id);
if (res.success) {
message.success(intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.enableSuccess' }));
fetchTemplateList(pagination.current, pagination.pageSize, searchParams);
} else {
message.error(res.message || intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.enableFailed' }));
}
} catch (error) {
console.error('启用模板失败:', error);
message.error(intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.enableFailed' }));
} finally {
setLoading(false);
}
}
});
};
// 处理禁用模板
const handleDisableTemplate = (id: string) => {
Modal.confirm({
title: intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.disableConfirmTitle' }),
content: intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.disableConfirmContent' }),
okText: intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.confirm' }),
cancelText: intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.cancel' }),
onOk: async () => {
try {
setLoading(true);
const res = await disableTemplate(id);
if (res.success) {
message.success(intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.disableSuccess' }));
fetchTemplateList(pagination.current, pagination.pageSize, searchParams);
} else {
message.error(res.message || intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.disableFailed' }));
}
} catch (error) {
console.error('禁用模板失败:', error);
message.error(intl.formatMessage({ id: 'supplierAnnualTemplateManage.modal.disableFailed' }));
} finally {
setLoading(false);
}
}
});
};
const columns = [
{
title: intl.formatMessage({ id: 'supplierTemplateManage.column.index' }),
@ -188,7 +240,7 @@ const SupplierTemplateManage: React.FC = () => {
{
title: intl.formatMessage({ id: 'supplierTemplateManage.column.action' }),
key: 'action',
width: 150,
width: 200,
align: 'center' as const,
render: (_: unknown, record: SupplierTemplateManage.TemplateItem) => (
<Space size="middle">
@ -201,6 +253,27 @@ const SupplierTemplateManage: React.FC = () => {
<Button type="link" onClick={() => handleView(record)}>
{intl.formatMessage({ id: 'supplierTemplateManage.button.view' })}
</Button>
{/* 禁用状态显示启用按钮 草稿状态显示启用按钮 */}
{(record.status === TemplateStatus.DISABLED ||
record.status === TemplateStatus.DRAFT) && (
<Button type="link" onClick={() => handleEnableTemplate(record.id)} size="small">
{intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.enable' })}
</Button>
)}
{/* 启用状态显示禁用按钮 草稿状态显示禁用按钮 */}
{(record.status === TemplateStatus.ENABLED ||
record.status === TemplateStatus.DRAFT) && (
<Button
type="link"
danger
onClick={() => handleDisableTemplate(record.id)}
size="small"
>
{intl.formatMessage({ id: 'supplierAnnualTemplateManage.common.disable' })}
</Button>
)}
</Space>
),
},

View File

@ -76,7 +76,7 @@ export async function deleteTemplate(id: string) {
* @returns Promise
*/
export async function enableTemplate(id: string) {
return request<API.APIResponse<any>>('/coscoEvaluate/template/enable', {
return request<API.APIResponse<any>>('/coscoEvaluate/template/up', {
method: 'POST',
data: { id },
});
@ -88,7 +88,7 @@ export async function enableTemplate(id: string) {
* @returns Promise
*/
export async function disableTemplate(id: string) {
return request<API.APIResponse<any>>('/coscoEvaluate/template/disable', {
return request<API.APIResponse<any>>('/coscoEvaluate/template/down', {
method: 'POST',
data: { id },
});