import React, { useState, useEffect } from 'react'; import { Card, Form, Input, Button, DatePicker, Select, Space, Typography, App, Divider, Row, Col } from 'antd'; import { ArrowLeftOutlined, TeamOutlined, SaveOutlined, VideoCameraAddOutlined, TagOutlined } from '@ant-design/icons'; import { useNavigate, useParams } from 'react-router-dom'; import dayjs from 'dayjs'; import apiClient from '../utils/apiClient'; import { buildApiUrl, API_ENDPOINTS } from '../config/api'; const { Title } = Typography; const { TextArea } = Input; const EditMeeting = ({ user }) => { const { meeting_id } = useParams(); const navigate = useNavigate(); const { message } = App.useApp(); const [form] = Form.useForm(); const [loading, setLoading] = useState(false); const [fetching, setFetching] = useState(true); const [users, setUsers] = useState([]); const [prompts, setPrompts] = useState([]); useEffect(() => { fetchData(); }, [meeting_id]); const fetchData = async () => { try { const [uRes, pRes, mRes] = await Promise.all([ apiClient.get(buildApiUrl(API_ENDPOINTS.USERS.LIST)), apiClient.get(buildApiUrl(API_ENDPOINTS.PROMPTS.ACTIVE('MEETING_TASK'))), apiClient.get(buildApiUrl(API_ENDPOINTS.MEETINGS.DETAIL(meeting_id))) ]); setUsers(uRes.data.users || []); setPrompts(pRes.data.prompts || []); const meeting = mRes.data; form.setFieldsValue({ ...meeting, meeting_time: dayjs(meeting.meeting_time), attendees: meeting.attendees.map(a => typeof a === 'string' ? a : a.caption), tags: meeting.tags?.map(t => t.name) || [] }); } catch (e) { message.error('加载会议数据失败'); } finally { setFetching(false); } }; const onFinish = async (values) => { setLoading(true); try { const payload = { ...values, meeting_time: values.meeting_time.format('YYYY-MM-DD HH:mm:ss'), attendees: values.attendees.join(','), tags: values.tags?.join(',') || '' }; await apiClient.put(buildApiUrl(API_ENDPOINTS.MEETINGS.UPDATE(meeting_id)), payload); message.success('会议更新成功'); navigate(`/meetings/${meeting_id}`); } catch (error) { message.error('更新失败'); } finally { setLoading(false); } }; return (