import React, { useEffect, useState } from 'react'; import { Button, Card, Form, Input, Space, Switch, Tabs, message } from 'antd'; import { PlusOutlined, SaveOutlined } from '@ant-design/icons'; import { getHomeMaterialCategories, getHomeMaterialConfig, getHomeMaterialWatermarks, saveHomeMaterialConfig, } from '../api'; import type { HomeMaterialCategory, HomeMaterialConfig, HomeMaterialWatermark } from '../types'; import HomeMaterialAssetTable from './homeMaterials/HomeMaterialAssetTable'; import HomeMaterialCategoryPanel from './homeMaterials/HomeMaterialCategoryPanel'; import HomeMaterialUploadModal from './homeMaterials/HomeMaterialUploadModal'; import WatermarkLibraryModal from './homeMaterials/WatermarkLibraryModal'; const AdminHomeMaterials: React.FC = () => { const [form] = Form.useForm(); const [configLoading, setConfigLoading] = useState(false); const [categories, setCategories] = useState([]); const [watermarks, setWatermarks] = useState([]); const [uploadOpen, setUploadOpen] = useState(false); const [reloadKey, setReloadKey] = useState(0); const loadBase = async () => { const [catRes, wmRes] = await Promise.all([ getHomeMaterialCategories({ page: 1, pageSize: 200 }), getHomeMaterialWatermarks({ page: 1, pageSize: 200, isActive: true }), ]); setCategories(catRes.items); setWatermarks(wmRes.items); }; const loadConfig = async () => { setConfigLoading(true); try { const cfg = await getHomeMaterialConfig(); form.setFieldsValue(cfg); } finally { setConfigLoading(false); } }; useEffect(() => { loadConfig(); loadBase(); }, []); const saveConfig = async () => { const values = await form.validateFields(); await saveHomeMaterialConfig(values); message.success('配置已保存'); }; const refreshAll = async () => { await loadBase(); setReloadKey(k => k + 1); }; return (
)} > , }, { key: 'categories', label: '行业类别', children: , }, { key: 'watermarks', label: '水印库', children: , }, ]} /> setUploadOpen(false)} categories={categories} watermarks={watermarks} onSuccess={refreshAll} />
); }; export default AdminHomeMaterials;