/** * 支付平台模态框组件 * 作者: 阿瑞 * 功能: 提供支付平台信息的添加和编辑界面 * 版本: 1.0.0 */ 'use client'; import React, { useState, useEffect } from 'react'; import { useParams } from 'next/navigation'; import { PaymentPlatform, PaymentPlatformStatus } from '@/models/team/types/old/payment-platform'; import Modal from '@/components/ui/Modal'; interface PaymentPlatformModalProps { isOpen: boolean; onClose: () => void; platform?: PaymentPlatform | null; onSuccess: () => void; } /** * 支付平台模态框组件 */ export default function PaymentPlatformModal({ isOpen, onClose, platform, onSuccess }: PaymentPlatformModalProps) { const params = useParams(); const teamCode = params?.teamCode as string; const isEditing = !!platform; // 表单状态 const [formData, setFormData] = useState>({ name: '', order: 0, description: '', status: PaymentPlatformStatus.NORMAL }); const [isSubmitting, setIsSubmitting] = useState(false); const [error, setError] = useState(null); /** * 初始化编辑表单数据 */ useEffect(() => { if (platform) { setFormData({ id: platform.id, name: platform.name, order: platform.order, description: platform.description || '', status: platform.status }); } else { // 重置表单 setFormData({ name: '', order: 0, description: '', status: PaymentPlatformStatus.NORMAL }); } setError(null); }, [platform, isOpen]); /** * 处理表单输入变化 */ const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target; // 处理数字类型字段 if (name === 'order') { setFormData(prev => ({ ...prev, [name]: value === '' ? 0 : parseInt(value, 10) })); return; } // 处理状态选择 if (name === 'status') { setFormData(prev => ({ ...prev, [name]: parseInt(value, 10) })); return; } setFormData(prev => ({ ...prev, [name]: value })); }; /** * 提交表单 */ const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); // 基本验证 if (!formData.name) { setError('平台名称为必填项'); return; } if (formData.order === undefined || formData.order < 0) { setError('显示顺序必须为非负整数'); return; } setIsSubmitting(true); setError(null); try { let response; if (isEditing && platform) { // 更新支付平台 response = await fetch(`/api/team/${teamCode}/payment-platforms/${platform.id}`, { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(formData) }); } else { // 创建支付平台 response = await fetch(`/api/team/${teamCode}/payment-platforms`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(formData) }); } // 处理响应 const result = await response.json(); if (!response.ok) { throw new Error(result.error || '操作失败'); } // 成功处理 onSuccess(); onClose(); } catch (err) { console.error('提交支付平台数据失败:', err); setError(err instanceof Error ? err.message : '未知错误'); } finally { setIsSubmitting(false); } }; return (
{/* 错误提示 */} {error && (

{error}

)} {/* 平台名称 */}
{/* 显示顺序 */}

数字越小排序越靠前

{/* 平台状态 */}
{/* 平台描述 */}