'use client'; import { useState, useEffect } from 'react'; import { MessageTemplate } from '../types'; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogFooter } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Textarea } from '@/components/ui/textarea'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Switch } from '@/components/ui/switch'; interface MessageTemplateDialogProps { open: boolean; onOpenChange: (open: boolean) => void; editingTemplate: MessageTemplate | null; onSave: (formData: FormData) => void; } interface FormData { code: string; name: string; type: 'sms' | 'email' | 'internal' | 'push'; subject: string; content: string; variables: string[]; description: string; isActive: boolean; } export function MessageTemplateDialog({ open, onOpenChange, editingTemplate, onSave }: MessageTemplateDialogProps) { const [formData, setFormData] = useState({ code: '', name: '', type: 'internal', subject: '', content: '', variables: [], description: '', isActive: true, }); // 使用useEffect来管理表单数据的状态 useEffect(() => { if (editingTemplate) { setFormData({ code: editingTemplate.code, name: editingTemplate.name, type: editingTemplate.type, subject: editingTemplate.subject || '', content: editingTemplate.content, variables: editingTemplate.variables, description: editingTemplate.description || '', isActive: editingTemplate.isActive, }); } else if (open) { // 新增模式时重置表单 setFormData({ code: '', name: '', type: 'internal', subject: '', content: '', variables: [], description: '', isActive: true, }); } }, [editingTemplate, open]); const handleSave = () => { onSave(formData); }; return ( {editingTemplate ? '编辑模版' : '新增模版'} {editingTemplate ? '编辑消息模版' : '添加新消息模版'}
setFormData({ ...formData, code: e.target.value })} placeholder="TASK_ASSIGNED" />
setFormData({ ...formData, name: e.target.value })} placeholder="任务分配通知" />
setFormData({ ...formData, isActive: checked })} />
{(formData.type === 'email' || formData.type === 'push') && (
setFormData({ ...formData, subject: e.target.value })} placeholder="输入消息主题" />
)}