import { Modal, Form, Input, Select, Radio, Alert, Divider } from 'antd'; import { Comment, Library, Reader, Book } from './types'; import React, { useState, useEffect } from 'react'; import { api } from '@nice/client'; const { TextArea } = Input; interface CommentModalProps { open: boolean; loading?: boolean; editingRecord?: Comment; onOk: (values: any) => void; onCancel: () => void; } export const CommentModal: React.FC = ({ open, loading, editingRecord, onOk, onCancel, }) => { const [form] = Form.useForm(); const [commentType, setCommentType] = useState<'book' | 'library'>('book'); const [selectedLibraryId, setSelectedLibraryId] = useState(''); const [selectedReaderId, setSelectedReaderId] = useState(''); console.log(editingRecord); // 查询所有图书馆 const { data: libraryList } = api.library.findMany.useQuery({ where: { deletedAt: null }, }); // 查询所有读者 const { data: readerList } = api.reader.findMany.useQuery({ where: { deletedAt: null, }, }); // 根据选择的图书馆筛选图书 const { data: bookList } = api.book.findMany.useQuery({ where: { deletedAt: null, libraryId: selectedLibraryId || undefined }, include: { library: true } }, { enabled: !!selectedLibraryId && commentType === 'book' }); // 初始化表单数据 useEffect(() => { if (editingRecord && open) { // 判断评论类型 const type = editingRecord.bookId ? 'book' : 'library'; setCommentType(type); setSelectedLibraryId(type === 'book' ? editingRecord.book?.libraryId : editingRecord.libraryId); setSelectedReaderId(editingRecord.readerId); form.setFieldsValue({ content: editingRecord.content, readerId: editingRecord.readerId, commentType: type, libraryId: type === 'library' ? editingRecord.libraryId : undefined, bookId: type === 'book' ? editingRecord.bookId : undefined, }); } else if (!editingRecord && open) { form.resetFields(); setCommentType('book'); setSelectedLibraryId(''); setSelectedReaderId(''); } }, [editingRecord, open, form]); // 处理评论类型变化 const handleCommentTypeChange = (e: any) => { const type = e.target.value; setCommentType(type); // 清空相关字段 if (type === 'book') { form.setFieldsValue({ libraryId: undefined }); } else { form.setFieldsValue({ bookId: undefined }); } }; // 处理图书馆选择变化 const handleLibraryChange = (value: string) => { setSelectedLibraryId(value); // 如果是图书评论,清空图书选择 if (commentType === 'book') { form.setFieldsValue({ bookId: undefined }); } }; return ( form.submit()} onCancel={onCancel} confirmLoading={loading} width={600} >
{ // 根据评论类型处理数据 const formData = { ...values, libraryId: values.commentType === 'library' ? values.libraryId : null, bookId: values.commentType === 'book' ? values.bookId : null, }; onOk(formData); }} > 评论对象 图书评论 图书馆评论 {commentType === 'book' ? ( <> {!selectedLibraryId && ( )} ) : ( )} 评论内容