import React, { useEffect, useState } from 'react'; import { Modal, Form, Input, message, Row, Col, Descriptions, Select } from 'antd'; import { getDictList } from '@/servers/api/dicts'; import { bankView, bankAdd, bankEdit } from '../services'; import type { DictItem } from '@/servers/api/dicts'; import DictRegionSelect from '@/components/CommonSelect/DictRegionSelect' interface props { visible: boolean; onOk: () => void; onCancel: () => void; initialValues?: any; readOnly?: boolean; } interface viewDataData { id?: string | null; account?: string; accountName?: string; bank?: string; city?: string; cityName?: string; currency?: string; interbankNumber?: string; nationName?: string; nation?: string; provinceName?: string; province?: string; supplierId?: string; swiftCode?: null; attachment?: { uid: string; name: string; url: string; status: string; }[]; } const InvoiceFormModal: React.FC = ({ visible, onOk, onCancel, initialValues, readOnly = false, }) => { const userId = sessionStorage.getItem('userId') || ''; // 新增与修改 const [form] = Form.useForm(); //查看 const [viewData, setViewData] = useState({}); //提交防抖 const [submitting, setSubmitting] = useState(false); const [currency, setCurrency] = useState([]); useEffect(() => { if (visible) { if (initialValues) { bankView(initialValues.id).then((res) => { const { code, data } = res; if (code === 200) { const fields = { ...data, id: data.id ? data.id : null, address: [ Number(data.nation), Number(data.province), Number(data.city), ] }; console.log(fields); form.setFieldsValue(fields); setViewData(fields); } }); } else { form.resetFields(); } getDictList('currency').then((res) => { if (res.code === 200) { setCurrency(res.data); } }); } }, [visible, initialValues]); // 提交 const handleFinish = async () => { if (submitting) return; // 防重复提交 setSubmitting(true); try { const values = await form.validateFields(); const payload = { ...values, supplierId: userId, }; payload.province = payload.address[1]; payload.city = payload.address[2]; payload.nation = payload.address[0]; if (!values.id) { bankAdd(payload).then((res) => { if (res.code == 200) { message.success('新增成功'); onOk(); } }) } else { bankEdit(payload).then((res) => { if (res.code == 200) { message.success('修改成功'); onOk(); } }) } } catch (error) { console.error('表单校验失败:', error); } finally { setSubmitting(false); // 无论成功失败都解锁 } }; return ( {readOnly ? ( {viewData.account} {viewData.accountName} {viewData.bank} {viewData.interbankNumber} {viewData.nationName} {viewData.provinceName} {viewData.cityName} {viewData.currency} ) : (
{/* */}
)}
); }; export default InvoiceFormModal;