import React, { useState, useEffect, useCallback } from 'react';
import { Card, Table, Button, Modal, Form, Input, Select, Space, message, Popconfirm, Tag, InputNumber } from 'antd';
import { PlusOutlined, EditOutlined, DeleteOutlined } from '@ant-design/icons';
import { declarationConfigAPI } from '../../services/api';
const { Option } = Select;
const { TextArea } = Input;
const DeclarationRuleManagement = () => {
const [form] = Form.useForm();
const [modalVisible, setModalVisible] = useState(false);
const [editingRecord, setEditingRecord] = useState(null);
const [loading, setLoading] = useState(false);
const [rules, setRules] = useState([]);
const [pagination, setPagination] = useState({
current: 1,
pageSize: 10,
total: 0,
});
const [filters, setFilters] = useState({});
// 获取申报项目配置列表
const fetchRulesData = useCallback(async (page = pagination.current, size = pagination.pageSize, filterParams = {}) => {
try {
setLoading(true);
const queryParams = {
page,
size,
...filters,
...filterParams,
};
console.log('调用接口获取申报项目配置列表:', queryParams);
const response = await declarationConfigAPI.getDeclarationConfigList(queryParams);
console.log('接口响应:', response);
if (response.code === 0) {
// 转换数据格式以适配前端显示
const transformedData = response.data.content?.map(item => ({
id: item.id,
category: item.categoryDesc, // 使用 categoryDesc 字段
content: item.secondary || '无', // 直接使用 secondary 字段
points: item.points,
pointsType: item.isPositive === 1 ? '加积分' : '减积分', // 使用 isPositive 字段
status: item.isActive === '1' ? '启用' : '禁用', // 使用 isActive 字段,字符串类型
createTime: item.createTime ? new Date(item.createTime).toLocaleString('zh-CN', {
year: 'numeric',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
hour12: false
}).replace(/\//g, '-') : '', // 格式化时间
// 保存原始数据用于编辑
originalData: item,
})) || [];
setRules(transformedData);
setPagination(prev => ({
...prev,
total: response.data.totalElements || 0,
}));
}
} catch (error) {
console.error('获取申报项目配置列表失败:', error);
message.error('获取申报项目配置列表失败');
} finally {
setLoading(false);
}
}, [filters]);
// 页面初始化加载数据
useEffect(() => {
console.log('页面初始化,开始加载数据');
fetchRulesData();
}, []);
// 处理分页变化
const handleTableChange = (paginationInfo) => {
setPagination(prev => ({
...prev,
current: paginationInfo.current,
pageSize: paginationInfo.pageSize,
}));
// 分页变化时重新获取数据
fetchRulesData(paginationInfo.current, paginationInfo.pageSize);
};
// 固定的类别选项
const categoryOptions = [
{ value: 1, name: '党的建设' },
{ value: 2, name: '经济发展' },
{ value: 3, name: '平安法治' },
{ value: 4, name: '民生服务' },
{ value: 5, name: '失信违法' }
];
const columns = [
{
title: '类别',
dataIndex: 'category',
key: 'category',
render: (category) =>
配置积分申报的项目和积分规则