'use client'; import { useState } from 'react'; import { Dialog, DialogTitle, DialogContent, DialogActions, Button, TextField, RadioGroup, FormControlLabel, Radio, FormControl, FormLabel, Box, Typography, Alert, CircularProgress } from '@mui/material'; import { useTranslation } from 'react-i18next'; /** * 批量编辑文本块对话框 * @param {Object} props * @param {boolean} props.open - 对话框是否打开 * @param {Function} props.onClose - 关闭对话框的回调 * @param {Function} props.onConfirm - 确认编辑的回调 * @param {Array} props.selectedChunks - 选中的文本块ID数组 * @param {number} props.totalChunks - 文本块总数 * @param {boolean} props.loading - 是否正在处理 */ export default function BatchEditChunksDialog({ open, onClose, onConfirm, selectedChunks = [], totalChunks = 0, loading = false }) { const { t } = useTranslation(); const [position, setPosition] = useState('start'); // 'start' 或 'end' const [content, setContent] = useState(''); const [error, setError] = useState(''); // 处理位置变更 const handlePositionChange = event => { setPosition(event.target.value); }; // 处理内容变更 const handleContentChange = event => { setContent(event.target.value); if (error) setError(''); }; // 处理确认 const handleConfirm = () => { if (!content.trim()) { setError(t('batchEdit.contentRequired')); return; } onConfirm({ position, content: content.trim(), chunkIds: selectedChunks }); }; // 处理关闭 const handleClose = () => { if (!loading) { setContent(''); setError(''); setPosition('start'); onClose(); } }; return ( {t('batchEdit.title')} {/* 选择提示 */} {selectedChunks.length === totalChunks ? t('batchEdit.allChunksSelected', { count: totalChunks }) : t('batchEdit.selectedChunks', { selected: selectedChunks.length, total: totalChunks })} {/* 位置选择 */} {t('batchEdit.position')} } label={t('batchEdit.atBeginning')} /> } label={t('batchEdit.atEnd')} /> {/* 内容输入 */} {/* 预览示例 */} {content.trim() && ( {t('batchEdit.preview')}: {position === 'start' ? ( <> {content} {'\n\n[原始文本块内容...]'} ) : ( <> {'[原始文本块内容...]\n\n'} {content} )} )} ); }