优化与接口调试
This commit is contained in:
@ -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); // 无论成功失败都解锁
|
||||
}
|
||||
};
|
||||
|
||||
//上传接口
|
||||
|
@ -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>
|
||||
) : (
|
||||
|
@ -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();
|
||||
}
|
||||
},
|
||||
}
|
||||
});
|
||||
|
||||
};
|
||||
|
@ -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); // 无论成功失败都解锁
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -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) => {
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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); // 无论成功失败都解锁
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -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); // 无论成功失败都解锁
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -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); // 无论成功失败都解锁
|
||||
}
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user