diff --git a/src/components/CompanyInfo/component/AttachmentsFormModal.tsx b/src/components/CompanyInfo/component/AttachmentsFormModal.tsx index 25407dc..abee3c1 100644 --- a/src/components/CompanyInfo/component/AttachmentsFormModal.tsx +++ b/src/components/CompanyInfo/component/AttachmentsFormModal.tsx @@ -29,6 +29,9 @@ const InvoiceFormModal: React.FC = ({ }) => { // 新增与修改 const [form] = Form.useForm(); + const userId = sessionStorage.getItem('userId') || ''; + //提交防抖 + const [submitting, setSubmitting] = useState(false); //查看 const [viewData, setViewData] = useState({}); useEffect(() => { @@ -69,6 +72,8 @@ const InvoiceFormModal: React.FC = ({ // 提交 const handleFinish = async () => { + if (submitting) return; // 防重复提交 + setSubmitting(true); try { const values = await form.validateFields(); @@ -78,7 +83,7 @@ const InvoiceFormModal: React.FC = ({ ...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 = ({ } catch (error) { console.error('表单校验失败:', error); - } + } finally { + setSubmitting(false); // 无论成功失败都解锁 + } }; //上传接口 diff --git a/src/components/CompanyInfo/component/BankFormModal.tsx b/src/components/CompanyInfo/component/BankFormModal.tsx index a7aec29..d3a8ee2 100644 --- a/src/components/CompanyInfo/component/BankFormModal.tsx +++ b/src/components/CompanyInfo/component/BankFormModal.tsx @@ -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 = ({ const [viewData, setViewData] = useState({}); // 地区 const [addressOptions, setAddressOptions] = useState([]); - + //提交防抖 + const [submitting, setSubmitting] = useState(false); const [currency, setCurrency] = useState([]); useEffect(() => { @@ -99,6 +103,8 @@ const InvoiceFormModal: React.FC = ({ // 提交 const handleFinish = async () => { + if (submitting) return; // 防重复提交 + setSubmitting(true); try { const values = await form.validateFields(); const payload = { @@ -127,6 +133,8 @@ const InvoiceFormModal: React.FC = ({ } catch (error) { console.error('表单校验失败:', error); + } finally { + setSubmitting(false); // 无论成功失败都解锁 } }; @@ -151,9 +159,9 @@ const InvoiceFormModal: React.FC = ({ {viewData.accountName} {viewData.bank} {viewData.interbankNumber} - {viewData.province} - {viewData.city} - {viewData.nation} + {viewData.nationName} + {viewData.provinceName} + {viewData.cityName} {viewData.currency} ) : ( diff --git a/src/components/CompanyInfo/component/BaseInfoFormModal.tsx b/src/components/CompanyInfo/component/BaseInfoFormModal.tsx index e07941c..6d34045 100644 --- a/src/components/CompanyInfo/component/BaseInfoFormModal.tsx +++ b/src/components/CompanyInfo/component/BaseInfoFormModal.tsx @@ -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 = ({ const [changeComparisonData, setChangeComparisonData] = useState(); //查看数据 const [viewData, setViewData] = useState(); - + //提交防抖 + 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 = ({ 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(); - } - }, + } }); }; diff --git a/src/components/CompanyInfo/component/ContactsInfoFormModal.tsx b/src/components/CompanyInfo/component/ContactsInfoFormModal.tsx index 9af959e..f92731d 100644 --- a/src/components/CompanyInfo/component/ContactsInfoFormModal.tsx +++ b/src/components/CompanyInfo/component/ContactsInfoFormModal.tsx @@ -18,7 +18,10 @@ interface viewDataData { categoryName?: string; categoryNameList?: string[]; } - +interface SupplierUserCategory { + categoryId: string; + supplierUserId?: string; + } const InvoiceFormModal: React.FC = ({ visible, onOk, @@ -35,6 +38,8 @@ const InvoiceFormModal: React.FC = ({ const [checkedKeys, setCheckedKeys] = useState([]); //品类选择渲染数据 const [categoriesTreeData, setCategoriesTreeData] = useState([]); + //提交防抖 + const [submitting, setSubmitting] = useState(false); useEffect(() => { if (visible) { if (initialValues) { @@ -48,11 +53,18 @@ const InvoiceFormModal: React.FC = ({ 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 = ({ }; // 提交 const handleFinish = async () => { + if (submitting) return; // 防重复提交 + setSubmitting(true); try { const values = await form.validateFields(); const payload = { @@ -131,6 +145,8 @@ const InvoiceFormModal: React.FC = ({ } catch (error) { console.error('表单校验失败:', error); + } finally { + setSubmitting(false); // 无论成功失败都解锁 } }; diff --git a/src/components/CompanyInfo/component/ContactsInfoTab.tsx b/src/components/CompanyInfo/component/ContactsInfoTab.tsx index ca39c0c..1c8a227 100644 --- a/src/components/CompanyInfo/component/ContactsInfoTab.tsx +++ b/src/components/CompanyInfo/component/ContactsInfoTab.tsx @@ -174,7 +174,7 @@ const OtherAttachmentsTab: React.FC = (props) => { }, ...(viewType ? [] : [ { - title: 'page.workbench.attachments.action', + title: '操作', dataIndex: 'option', width: 140, render: (_: any, record: getCoscoSupplierUser) => { diff --git a/src/components/CompanyInfo/component/DomesticForm.tsx b/src/components/CompanyInfo/component/DomesticForm.tsx index 0c0aae7..a3ee112 100644 --- a/src/components/CompanyInfo/component/DomesticForm.tsx +++ b/src/components/CompanyInfo/component/DomesticForm.tsx @@ -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 = ({ form, countdown, handleGetCa label="营业执照有效期" rules={[{ required: true, message: '请输入营业执照有效期' }]} > - + diff --git a/src/components/CompanyInfo/component/InvoiceFormModal.tsx b/src/components/CompanyInfo/component/InvoiceFormModal.tsx index 34768ae..afd617b 100644 --- a/src/components/CompanyInfo/component/InvoiceFormModal.tsx +++ b/src/components/CompanyInfo/component/InvoiceFormModal.tsx @@ -48,7 +48,8 @@ const InvoiceFormModal: React.FC = ({ const [viewData, setViewData] = useState({}); //纳税人option const [taxpayerType, setTaxpayerType] = useState(); - + //提交防抖 + const [submitting, setSubmitting] = useState(false); useEffect(() => { if (visible) { if (initialValues) { @@ -83,6 +84,8 @@ const InvoiceFormModal: React.FC = ({ // 提交 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 = ({ } catch (error) { console.error('表单校验失败:', error); + } finally { + setSubmitting(false); // 无论成功失败都解锁 } }; diff --git a/src/components/CompanyInfo/component/PeBaseInfoFormModal.tsx b/src/components/CompanyInfo/component/PeBaseInfoFormModal.tsx index ea625d0..a8f30f1 100644 --- a/src/components/CompanyInfo/component/PeBaseInfoFormModal.tsx +++ b/src/components/CompanyInfo/component/PeBaseInfoFormModal.tsx @@ -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 = ({ initialValues, }) => { const [form] = Form.useForm(); - + //提交防抖 + const [submitting, setSubmitting] = useState(false); //数据初始化 useEffect(() => { if (visible && initialValues) { @@ -75,18 +76,24 @@ const BaseInfoFormModal: React.FC = ({ //确认提交 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); // 无论成功失败都解锁 } }; diff --git a/src/components/CompanyInfo/component/QualificationFormModal.tsx b/src/components/CompanyInfo/component/QualificationFormModal.tsx index e764727..2f6bbf6 100644 --- a/src/components/CompanyInfo/component/QualificationFormModal.tsx +++ b/src/components/CompanyInfo/component/QualificationFormModal.tsx @@ -39,6 +39,8 @@ const QualificationFormModal: React.FC = ({ const [form] = Form.useForm(); //查看 const [viewData, setViewData] = useState({}); + //提交防抖 + const [submitting, setSubmitting] = useState(false); useEffect(() => { if (visible) { if (initialValues) { @@ -69,6 +71,8 @@ const QualificationFormModal: React.FC = ({ // 提交 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 = ({ } catch (error) { console.error('表单校验失败:', error); + } finally { + setSubmitting(false); // 无论成功失败都解锁 } }; diff --git a/src/pages/supplier/backend/changeProgressInquiry/index.tsx b/src/pages/supplier/backend/changeProgressInquiry/index.tsx index dbc836f..3ba2d5c 100644 --- a/src/pages/supplier/backend/changeProgressInquiry/index.tsx +++ b/src/pages/supplier/backend/changeProgressInquiry/index.tsx @@ -18,6 +18,8 @@ interface Data { createTime: string; exitTime: string; exitReason: string; + approveStatus: string; + lastUpdateTime: string; id?: string; } @@ -57,16 +59,20 @@ const CooperateEnterprise: React.FC = () => { title: '变更标题', dataIndex: 'title', key: 'title', + width: 300, + ellipsis: true }, { title: '提交时间', - dataIndex: 'updateTime', - key: 'updateTime', + dataIndex: 'createTime', + key: 'createTime', }, { title: '审批单位', dataIndex: 'deptNames', key: 'deptNames', + width: 300, + ellipsis: true }, { title: '审批状态', @@ -77,10 +83,16 @@ const CooperateEnterprise: React.FC = () => { title: '审批时间', dataIndex: 'updateTime', key: 'updateTime', + render: (text: string, record: Data) => { + const { approveStatus, lastUpdateTime } = record; + return approveStatus !== '0' ? lastUpdateTime : null; + }, }, { title: '操作', key: 'action', + width: 80, + fixed: 'right', render: (text: string, record: Data) => (