优化与接口调试

This commit is contained in:
孙景学
2025-07-22 13:17:34 +08:00
parent c586e121fe
commit f229b9a19b
22 changed files with 249 additions and 181 deletions

View File

@ -29,6 +29,9 @@ const InvoiceFormModal: React.FC<props> = ({
}) => {
// 新增与修改
const [form] = Form.useForm();
const userId = sessionStorage.getItem('userId') || '';
//提交防抖
const [submitting, setSubmitting] = useState(false);
//查看
const [viewData, setViewData] = useState<viewDataData>({});
useEffect(() => {
@ -69,6 +72,8 @@ const InvoiceFormModal: React.FC<props> = ({
// 提交
const handleFinish = async () => {
if (submitting) return; // 防重复提交
setSubmitting(true);
try {
const values = await form.validateFields();
@ -78,7 +83,7 @@ const InvoiceFormModal: React.FC<props> = ({
...values,
...response,
fileUrl: response.url,
"supplierId": "9c12e8ea-a681-4184-81ba-5fa276299a00",
supplierId: userId,
};
console.log(payload, 'values');
@ -100,7 +105,9 @@ const InvoiceFormModal: React.FC<props> = ({
} catch (error) {
console.error('表单校验失败:', error);
}
} finally {
setSubmitting(false); // 无论成功失败都解锁
}
};
//上传接口

View File

@ -26,9 +26,12 @@ interface viewDataData {
accountName?: string;
bank?: string;
city?: string;
cityName?: string;
currency?: string;
interbankNumber?: string;
nationName?: string;
nation?: string;
provinceName?: string;
province?: string;
supplierId?: string;
swiftCode?: null;
@ -53,7 +56,8 @@ const InvoiceFormModal: React.FC<props> = ({
const [viewData, setViewData] = useState<viewDataData>({});
// 地区
const [addressOptions, setAddressOptions] = useState<API.RegionOption[]>([]);
//提交防抖
const [submitting, setSubmitting] = useState(false);
const [currency, setCurrency] = useState<DictItem[]>([]);
useEffect(() => {
@ -99,6 +103,8 @@ const InvoiceFormModal: React.FC<props> = ({
// 提交
const handleFinish = async () => {
if (submitting) return; // 防重复提交
setSubmitting(true);
try {
const values = await form.validateFields();
const payload = {
@ -127,6 +133,8 @@ const InvoiceFormModal: React.FC<props> = ({
} catch (error) {
console.error('表单校验失败:', error);
} finally {
setSubmitting(false); // 无论成功失败都解锁
}
};
@ -151,9 +159,9 @@ const InvoiceFormModal: React.FC<props> = ({
<Descriptions.Item label="账户名称">{viewData.accountName}</Descriptions.Item>
<Descriptions.Item label="开户银行">{viewData.bank}</Descriptions.Item>
<Descriptions.Item label="联行号">{viewData.interbankNumber}</Descriptions.Item>
<Descriptions.Item label="省份">{viewData.province}</Descriptions.Item>
<Descriptions.Item label="城市">{viewData.city}</Descriptions.Item>
<Descriptions.Item label="国家/地区">{viewData.nation}</Descriptions.Item>
<Descriptions.Item label="国家/地区">{viewData.nationName}</Descriptions.Item>
<Descriptions.Item label="省份">{viewData.provinceName}</Descriptions.Item>
<Descriptions.Item label="城市">{viewData.cityName}</Descriptions.Item>
<Descriptions.Item label="币种">{viewData.currency}</Descriptions.Item>
</Descriptions>
) : (

View File

@ -5,7 +5,7 @@ import { UploadOutlined } from '@ant-design/icons';
import DomesticForm from './DomesticForm';
import ForeignForm from './ForeignForm';
import { uploadFile, updateSupplierBase } from '../services'
import dayjs from 'dayjs';
interface Props {
visible: boolean;
onOk: () => void;
@ -90,16 +90,16 @@ const BaseInfoFormModal: React.FC<Props> = ({
const [changeComparisonData, setChangeComparisonData] = useState<changeComparisonDataProps>();
//查看数据
const [viewData, setViewData] = useState<updateSupplierBases>();
//提交防抖
const [submitting, setSubmitting] = useState(false);
//数据初始化
useEffect(() => {
if (visible && initialValues) {
console.log(initialValues,'initialValues');
form.setFieldsValue({
...changeData,
coscoSupplierBase: {
...initialValues,
licenceDate: initialValues.licenceDate ? dayjs(initialValues.licenceDate) : null,
licenceAccessoryD: initialValues?.licenceAccessory
? [{
uid: '-1',
@ -156,42 +156,48 @@ const BaseInfoFormModal: React.FC<Props> = ({
Modal.confirm({
title: '是否确认个人信息变更?',
onOk: async () => {
const values = await form.validateFields();
console.log(values,'values');
const payload = {
...values,
};
//values.attachment 有附件就处理
if (values.attachment) {
const file = values.attachment?.[0].response;
payload.coscoSupplierSurveyAttachments = [
{
attachmentsType: file.attachmentsType,
fileName: file.fileName,
fileType: file.fileType,
fileSize: file.fileSize,
filePath: file.filePath,
fileUrl: file.fileUrl,
}
];
}
// 处理营业执照回显字段转换问题
if (payload.coscoSupplierBase.supplierType === 'dvs') {
let licenceAccessoryD = payload.coscoSupplierBase.licenceAccessoryD;
if (licenceAccessoryD[0].response) {
payload.coscoSupplierBase.licenceAccessory = payload.coscoSupplierBase.licenceAccessoryD[0].response.url
} else {
payload.coscoSupplierBase.licenceAccessory = payload.coscoSupplierBase.licenceAccessoryD[0].url
if (submitting) return; // 防重复提交
setSubmitting(true);
try {
const values = await form.validateFields();
console.log(values, 'values');
const payload = {
...values,
};
//values.attachment 有附件就处理
if (values.attachment) {
const file = values.attachment?.[0].response;
payload.coscoSupplierSurveyAttachments = [
{
attachmentsType: file.attachmentsType,
fileName: file.fileName,
fileType: file.fileType,
fileSize: file.fileSize,
filePath: file.filePath,
fileUrl: file.fileUrl,
}
];
}
delete payload.coscoSupplierBase.licenceAccessoryD
// 处理营业执照回显字段转换问题
if (payload.coscoSupplierBase.supplierType === 'dvs') {
let licenceAccessoryD = payload.coscoSupplierBase.licenceAccessoryD;
if (licenceAccessoryD[0].response) {
payload.coscoSupplierBase.licenceAccessory = payload.coscoSupplierBase.licenceAccessoryD[0].response.url
} else {
payload.coscoSupplierBase.licenceAccessory = payload.coscoSupplierBase.licenceAccessoryD[0].url
}
delete payload.coscoSupplierBase.licenceAccessoryD
}
const res = await updateSupplierBase(payload);
if (res.code === 200) {
message.success('修改成功');
onOk();
}
} finally {
setSubmitting(false); // 无论成功失败都解锁
}
const res = await updateSupplierBase(payload);
if (res.code === 200) {
message.success('修改成功');
onOk();
}
},
}
});
};

View File

@ -18,7 +18,10 @@ interface viewDataData {
categoryName?: string;
categoryNameList?: string[];
}
interface SupplierUserCategory {
categoryId: string;
supplierUserId?: string;
}
const InvoiceFormModal: React.FC<props> = ({
visible,
onOk,
@ -35,6 +38,8 @@ const InvoiceFormModal: React.FC<props> = ({
const [checkedKeys, setCheckedKeys] = useState<React.Key[]>([]);
//品类选择渲染数据
const [categoriesTreeData, setCategoriesTreeData] = useState([]);
//提交防抖
const [submitting, setSubmitting] = useState(false);
useEffect(() => {
if (visible) {
if (initialValues) {
@ -48,11 +53,18 @@ const InvoiceFormModal: React.FC<props> = ({
console.log(fields);
form.setFieldsValue(fields);
setCheckedKeys(
(fields.coscoSupplierUserCategoryList || []).map(
(item: SupplierUserCategory) => item.categoryId
)
);
setViewData(fields);
}
});
} else {
form.resetFields();
setCheckedKeys([]);
}
categoryTree().then((res) => {
const { code, data } = res;
@ -105,6 +117,8 @@ const InvoiceFormModal: React.FC<props> = ({
};
// 提交
const handleFinish = async () => {
if (submitting) return; // 防重复提交
setSubmitting(true);
try {
const values = await form.validateFields();
const payload = {
@ -131,6 +145,8 @@ const InvoiceFormModal: React.FC<props> = ({
} catch (error) {
console.error('表单校验失败:', error);
} finally {
setSubmitting(false); // 无论成功失败都解锁
}
};

View File

@ -174,7 +174,7 @@ const OtherAttachmentsTab: React.FC<Props> = (props) => {
},
...(viewType ? [] : [
{
title: 'page.workbench.attachments.action',
title: '操作',
dataIndex: 'option',
width: 140,
render: (_: any, record: getCoscoSupplierUser) => {

View File

@ -1,6 +1,6 @@
/* 境外企业 表单项 */
import React, { useEffect, useState } from 'react';
import { Form, Input, Select, Row, Col, message, Upload, Button } from 'antd';
import { Form, Input, Select, Row, Col, message, Upload, Button, DatePicker } from 'antd';
import type { UploadProps } from 'antd';
import { UploadOutlined } from '@ant-design/icons';
import { uploadFile } from '../services';
@ -127,7 +127,7 @@ const DomesticForm: React.FC<ForeignFormProps> = ({ form, countdown, handleGetCa
label="营业执照有效期"
rules={[{ required: true, message: '请输入营业执照有效期' }]}
>
<Input placeholder="请输入营业执照有效期" />
<DatePicker style={{ width: '100%' }} />
</Form.Item>
</Col>

View File

@ -48,7 +48,8 @@ const InvoiceFormModal: React.FC<props> = ({
const [viewData, setViewData] = useState<viewDataData>({});
//纳税人option
const [taxpayerType, setTaxpayerType] = useState<Dict[]>();
//提交防抖
const [submitting, setSubmitting] = useState(false);
useEffect(() => {
if (visible) {
if (initialValues) {
@ -83,6 +84,8 @@ const InvoiceFormModal: React.FC<props> = ({
// 提交
const handleFinish = async () => {
if (submitting) return; // 防重复提交
setSubmitting(true);
try {
const values = await form.validateFields();
const qualificationCertificate = values.attachment?.[0]?.response.url; // uploadFile 返回的 data
@ -112,6 +115,8 @@ const InvoiceFormModal: React.FC<props> = ({
} catch (error) {
console.error('表单校验失败:', error);
} finally {
setSubmitting(false); // 无论成功失败都解锁
}
};

View File

@ -3,7 +3,7 @@ import { Modal, Form, message, Input, Upload, Button } from 'antd';
import Person from './Person';
import { updateSupplierBase } from '../services'
import { updateSupplierBase } from '../services'
interface Props {
visible: boolean;
@ -57,7 +57,8 @@ const BaseInfoFormModal: React.FC<Props> = ({
initialValues,
}) => {
const [form] = Form.useForm();
//提交防抖
const [submitting, setSubmitting] = useState(false);
//数据初始化
useEffect(() => {
if (visible && initialValues) {
@ -75,18 +76,24 @@ const BaseInfoFormModal: React.FC<Props> = ({
//确认提交
const handleFinish = async () => {
const values = await form.validateFields();
const payload = {
...values,
};
if (submitting) return; // 防重复提交
setSubmitting(true);
try {
const values = await form.validateFields();
const payload = {
...values,
};
payload.coscoSupplierBase.name = payload.coscoSupplierBase.personName;
payload.coscoSupplierBase.contactPhone = payload.coscoSupplierBase.personPhone;
payload.coscoSupplierBase.id = initialValues?.id;
const res = await updateSupplierBase(payload);
if (res.code === 200) {
message.success('修改成功');
onOk();
payload.coscoSupplierBase.name = payload.coscoSupplierBase.personName;
payload.coscoSupplierBase.contactPhone = payload.coscoSupplierBase.personPhone;
payload.coscoSupplierBase.id = initialValues?.id;
const res = await updateSupplierBase(payload);
if (res.code === 200) {
message.success('修改成功');
onOk();
}
} finally {
setSubmitting(false); // 无论成功失败都解锁
}
};

View File

@ -39,6 +39,8 @@ const QualificationFormModal: React.FC<QualificationFormModalProps> = ({
const [form] = Form.useForm();
//查看
const [viewData, setViewData] = useState<QualificationData>({});
//提交防抖
const [submitting, setSubmitting] = useState(false);
useEffect(() => {
if (visible) {
if (initialValues) {
@ -69,6 +71,8 @@ const QualificationFormModal: React.FC<QualificationFormModalProps> = ({
// 提交
const handleFinish = async () => {
if (submitting) return; // 防重复提交
setSubmitting(true);
try {
const values = await form.validateFields();
console.log(values, 'values');
@ -99,6 +103,8 @@ const QualificationFormModal: React.FC<QualificationFormModalProps> = ({
} catch (error) {
console.error('表单校验失败:', error);
} finally {
setSubmitting(false); // 无论成功失败都解锁
}
};