流程问题修改-准入与后台
This commit is contained in:
@ -107,6 +107,13 @@ const InvoiceFormModal: React.FC<props> = ({
|
||||
const uploadProps: UploadProps = {
|
||||
name: 'file',
|
||||
showUploadList: true,
|
||||
beforeUpload: (file) => {
|
||||
if (file.size > 1048576) { // 1MB
|
||||
message.error('文件大小不能超过1MB');
|
||||
return Upload.LIST_IGNORE; // 阻止上传
|
||||
}
|
||||
return true;
|
||||
},
|
||||
customRequest: async ({ file, onSuccess, onError }) => {
|
||||
try {
|
||||
const realFile = file as File;
|
||||
|
@ -1,10 +1,16 @@
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import { Modal, Form, Input, Button, Upload, message, Row, Col, Descriptions } from 'antd';
|
||||
import { Modal, Form, Input, Button, Upload, message, Row, Col, Descriptions, Cascader } from 'antd';
|
||||
import type { UploadProps } from 'antd';
|
||||
import { UploadOutlined } from '@ant-design/icons';
|
||||
import { uploadFile, bankView, bankAdd, bankEdit, coscoSupplierBase } from '../services';
|
||||
import { getRegionTree, getregionInternational } from '@/servers/api/register';
|
||||
|
||||
function convertToCascaderOptions(data: any[]): any[] {
|
||||
return data.map(item => ({
|
||||
label: item.name,
|
||||
value: item.id,
|
||||
children: item.children && item.children.length > 0 ? convertToCascaderOptions(item.children) : undefined,
|
||||
}));
|
||||
}
|
||||
interface props {
|
||||
visible: boolean;
|
||||
onOk: () => void;
|
||||
@ -43,6 +49,9 @@ const InvoiceFormModal: React.FC<props> = ({
|
||||
const [form] = Form.useForm();
|
||||
//查看
|
||||
const [viewData, setViewData] = useState<viewDataData>({});
|
||||
// 地区
|
||||
const [addressOptions, setAddressOptions] = useState<API.RegionOption[]>([]);
|
||||
|
||||
useEffect(() => {
|
||||
if (visible) {
|
||||
if (initialValues) {
|
||||
@ -59,14 +68,14 @@ const InvoiceFormModal: React.FC<props> = ({
|
||||
setViewData(fields);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
} else {
|
||||
form.resetFields(); // ✅ 只有无 initialValues 才重置
|
||||
}
|
||||
getRegionTree().then(res => {
|
||||
if (res.code === 200) {
|
||||
setAddressOptions(convertToCascaderOptions(res.data));
|
||||
}
|
||||
});
|
||||
}
|
||||
}, [visible, initialValues]);
|
||||
|
||||
@ -78,6 +87,10 @@ const InvoiceFormModal: React.FC<props> = ({
|
||||
...values,
|
||||
supplierId: userId,
|
||||
};
|
||||
payload.province = payload.address[0];
|
||||
payload.city = payload.address[1];
|
||||
payload.nation = payload.address[2];
|
||||
|
||||
if (!values.id) {
|
||||
bankAdd(payload).then((res) => {
|
||||
if (res.code == 200) {
|
||||
@ -103,6 +116,13 @@ const InvoiceFormModal: React.FC<props> = ({
|
||||
const uploadProps: UploadProps = {
|
||||
name: 'file',
|
||||
showUploadList: true,
|
||||
beforeUpload: (file) => {
|
||||
if (file.size > 1048576) { // 1MB
|
||||
message.error('文件大小不能超过1MB');
|
||||
return Upload.LIST_IGNORE; // 阻止上传
|
||||
}
|
||||
return true;
|
||||
},
|
||||
customRequest: async ({ file, onSuccess, onError }) => {
|
||||
try {
|
||||
const realFile = file as File;
|
||||
@ -172,7 +192,28 @@ const InvoiceFormModal: React.FC<props> = ({
|
||||
<Input />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
|
||||
<Col span={24}>
|
||||
<Form.Item name="address" label="地址" rules={[{ required: true }]}>
|
||||
<Cascader
|
||||
options={addressOptions}
|
||||
placeholder="请选择地址"
|
||||
showSearch={{
|
||||
filter: (inputValue, path) => {
|
||||
return path.some((option) => {
|
||||
if (typeof option.label === 'string') {
|
||||
return (
|
||||
option.label.toLowerCase().indexOf(inputValue.toLowerCase()) > -1
|
||||
);
|
||||
}
|
||||
return false;
|
||||
});
|
||||
},
|
||||
}}
|
||||
/>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
{/* <Col span={24}>
|
||||
<Form.Item name="province" label="省份" rules={[{ required: true }]}>
|
||||
<Input />
|
||||
</Form.Item>
|
||||
@ -186,7 +227,7 @@ const InvoiceFormModal: React.FC<props> = ({
|
||||
<Form.Item name="nation" label="国家/地区" rules={[{ required: true }]}>
|
||||
<Input />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
</Col> */}
|
||||
<Col span={24}>
|
||||
<Form.Item name="currency" label="币种" rules={[{ required: true }]}>
|
||||
<Input />
|
||||
|
@ -99,14 +99,14 @@ const BaseInfoFormModal: React.FC<Props> = ({
|
||||
coscoSupplierBase: {
|
||||
...initialValues,
|
||||
licenceAccessoryD: initialValues?.licenceAccessory
|
||||
? [{
|
||||
uid: '-1',
|
||||
name: '营业执照',
|
||||
status: 'done',
|
||||
url: initialValues.licenceAccessory,
|
||||
thumbUrl: initialValues.licenceAccessory,
|
||||
}]
|
||||
: [],
|
||||
? [{
|
||||
uid: '-1',
|
||||
name: '营业执照',
|
||||
status: 'done',
|
||||
url: initialValues.licenceAccessory,
|
||||
thumbUrl: initialValues.licenceAccessory,
|
||||
}]
|
||||
: [],
|
||||
},
|
||||
attachment: changeData?.coscoSupplierSurveyAttachments
|
||||
? [{
|
||||
@ -176,7 +176,7 @@ const BaseInfoFormModal: React.FC<Props> = ({
|
||||
...values,
|
||||
};
|
||||
//values.attachment 有附件就处理
|
||||
if(values.attachment) {
|
||||
if (values.attachment) {
|
||||
const file = values.attachment?.[0].response;
|
||||
payload.coscoSupplierSurveyAttachments = [
|
||||
{
|
||||
@ -190,14 +190,14 @@ const BaseInfoFormModal: React.FC<Props> = ({
|
||||
];
|
||||
}
|
||||
// 处理营业执照回显字段转换问题
|
||||
if(payload.coscoSupplierBase.supplierType === 'dvs') {
|
||||
if (payload.coscoSupplierBase.supplierType === 'dvs') {
|
||||
let licenceAccessoryD = payload.coscoSupplierBase.licenceAccessoryD;
|
||||
if(licenceAccessoryD[0].response) {
|
||||
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
|
||||
delete payload.coscoSupplierBase.licenceAccessoryD
|
||||
}
|
||||
const res = await updateSupplierBase(payload);
|
||||
if (res.code === 200) {
|
||||
@ -212,6 +212,13 @@ const BaseInfoFormModal: React.FC<Props> = ({
|
||||
const uploadProps: UploadProps = {
|
||||
name: 'file',
|
||||
showUploadList: true,
|
||||
beforeUpload: (file) => {
|
||||
if (file.size > 1048576) { // 1MB
|
||||
message.error('文件大小不能超过1MB');
|
||||
return Upload.LIST_IGNORE; // 阻止上传
|
||||
}
|
||||
return true;
|
||||
},
|
||||
customRequest: async ({ file, onSuccess, onError }) => {
|
||||
try {
|
||||
const realFile = file as File;
|
||||
|
@ -18,28 +18,35 @@ interface ForeignFormProps {
|
||||
* 其他部分使用通用表单组件
|
||||
*/
|
||||
const DomesticForm: React.FC<ForeignFormProps> = ({ form, countdown, handleGetCaptcha }) => {
|
||||
//上传接口
|
||||
const uploadProps: UploadProps = {
|
||||
name: 'file',
|
||||
showUploadList: true,
|
||||
customRequest: async ({ file, onSuccess, onError }) => {
|
||||
try {
|
||||
const realFile = file as File;
|
||||
const res = await uploadFile(realFile);
|
||||
const uploadedFile = {
|
||||
uid: res.fileSize,
|
||||
name: res.fileName,
|
||||
status: 'done',
|
||||
url: res.url,
|
||||
};
|
||||
onSuccess?.(uploadedFile, new XMLHttpRequest())
|
||||
message.success('上传成功');
|
||||
} catch (err: any) {
|
||||
onError?.(err);
|
||||
message.error(err.message || '上传失败');
|
||||
//上传接口
|
||||
const uploadProps: UploadProps = {
|
||||
name: 'file',
|
||||
showUploadList: true,
|
||||
beforeUpload: (file) => {
|
||||
if (file.size > 1048576) { // 1MB
|
||||
message.error('文件大小不能超过1MB');
|
||||
return Upload.LIST_IGNORE; // 阻止上传
|
||||
}
|
||||
}
|
||||
};
|
||||
return true;
|
||||
},
|
||||
customRequest: async ({ file, onSuccess, onError }) => {
|
||||
try {
|
||||
const realFile = file as File;
|
||||
const res = await uploadFile(realFile);
|
||||
const uploadedFile = {
|
||||
uid: res.fileSize,
|
||||
name: res.fileName,
|
||||
status: 'done',
|
||||
url: res.url,
|
||||
};
|
||||
onSuccess?.(uploadedFile, new XMLHttpRequest())
|
||||
message.success('上传成功');
|
||||
} catch (err: any) {
|
||||
onError?.(err);
|
||||
message.error(err.message || '上传失败');
|
||||
}
|
||||
}
|
||||
};
|
||||
return (
|
||||
<>
|
||||
{/* 境外企业特有的基本信息部分 */}
|
||||
@ -59,7 +66,7 @@ const uploadProps: UploadProps = {
|
||||
</Select>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
|
||||
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'licenceDate']}
|
||||
@ -108,7 +115,7 @@ const uploadProps: UploadProps = {
|
||||
<Input placeholder="请输入统一社会信用代码" />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
|
||||
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'regAddress']}
|
||||
@ -152,7 +159,7 @@ const uploadProps: UploadProps = {
|
||||
<Input placeholder="请输入身份证号" />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
|
||||
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
name={['coscoSupplierBase', 'contactsName']}
|
||||
@ -231,14 +238,14 @@ const uploadProps: UploadProps = {
|
||||
rules={[{ required: true, message: '请上传营业执照' }]}
|
||||
getValueFromEvent={e => Array.isArray(e) ? e : e?.fileList}
|
||||
>
|
||||
<Upload {...uploadProps} maxCount={1} listType="picture-card" showUploadList={true}>
|
||||
<Upload {...uploadProps} maxCount={1} listType="picture-card" showUploadList={true}>
|
||||
<Button icon={<UploadOutlined />}>上传文件</Button>
|
||||
</Upload>
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Form.Item name={['coscoSupplierBase', 'id']} noStyle>
|
||||
<Input type="hidden" />
|
||||
</Form.Item>
|
||||
<Form.Item name={['coscoSupplierBase', 'id']} noStyle>
|
||||
<Input type="hidden" />
|
||||
</Form.Item>
|
||||
</Row>
|
||||
|
||||
</>
|
||||
|
@ -3,6 +3,8 @@ import { Modal, Form, Input, Select, Button, Upload, message, Row, Col, Descript
|
||||
import type { UploadProps } from 'antd';
|
||||
import { UploadOutlined } from '@ant-design/icons';
|
||||
import { uploadFile, invoiceView, invoiceAdd, invoiceEdit } from '../services';
|
||||
import { getDictList } from '@/servers/api/dicts'
|
||||
|
||||
interface props {
|
||||
visible: boolean;
|
||||
onOk: () => void;
|
||||
@ -10,6 +12,10 @@ interface props {
|
||||
initialValues?: any;
|
||||
readOnly?: boolean;
|
||||
}
|
||||
interface Dict {
|
||||
dicName: string;
|
||||
code: string;
|
||||
}
|
||||
interface viewDataData {
|
||||
id?: string | null;
|
||||
account?: string;
|
||||
@ -22,12 +28,12 @@ interface viewDataData {
|
||||
taxpayerCode?: string;
|
||||
taxpayerType?: string;
|
||||
attachment?: {
|
||||
uid: string;
|
||||
name: string;
|
||||
url: string;
|
||||
status: string;
|
||||
uid: string;
|
||||
name: string;
|
||||
url: string;
|
||||
status: string;
|
||||
}[];
|
||||
}
|
||||
}
|
||||
const InvoiceFormModal: React.FC<props> = ({
|
||||
visible,
|
||||
onOk,
|
||||
@ -36,10 +42,13 @@ const InvoiceFormModal: React.FC<props> = ({
|
||||
readOnly = false,
|
||||
}) => {
|
||||
const userId = sessionStorage.getItem('userId') || '';
|
||||
// 新增与修改
|
||||
// 新增与修改
|
||||
const [form] = Form.useForm();
|
||||
//查看
|
||||
const [viewData, setViewData] = useState<viewDataData>({});
|
||||
//纳税人option
|
||||
const [taxpayerType, setTaxpayerType] = useState<Dict[]>();
|
||||
|
||||
useEffect(() => {
|
||||
if (visible) {
|
||||
if (initialValues) {
|
||||
@ -53,8 +62,8 @@ const InvoiceFormModal: React.FC<props> = ({
|
||||
? [{ uid: '-1', name: data.qualificationCertificate, url: data.qualificationCertificate, status: 'done', response: { url: data.qualificationCertificate } }]
|
||||
: [],
|
||||
};
|
||||
console.log(fields,'fields');
|
||||
|
||||
console.log(fields, 'fields');
|
||||
|
||||
form.setFieldsValue(fields);
|
||||
setViewData(fields);
|
||||
}
|
||||
@ -62,6 +71,13 @@ const InvoiceFormModal: React.FC<props> = ({
|
||||
} else {
|
||||
form.resetFields(); // ✅ 只有无 initialValues 才重置
|
||||
}
|
||||
|
||||
getDictList('taxpayer_type').then((res) => {
|
||||
if (res.code == 200) {
|
||||
setTaxpayerType(res.data)
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
}, [visible, initialValues]);
|
||||
|
||||
@ -76,8 +92,8 @@ const InvoiceFormModal: React.FC<props> = ({
|
||||
supplierId: userId,
|
||||
};
|
||||
|
||||
console.log(values,'values');
|
||||
|
||||
console.log(values, 'values');
|
||||
|
||||
if (!values.id) {
|
||||
invoiceAdd(payload).then((res) => {
|
||||
if (res.code == 200) {
|
||||
@ -103,6 +119,13 @@ const InvoiceFormModal: React.FC<props> = ({
|
||||
const uploadProps: UploadProps = {
|
||||
name: 'file',
|
||||
showUploadList: true,
|
||||
beforeUpload: (file) => {
|
||||
if (file.size > 1048576) { // 1MB
|
||||
message.error('文件大小不能超过1MB');
|
||||
return Upload.LIST_IGNORE; // 阻止上传
|
||||
}
|
||||
return true;
|
||||
},
|
||||
customRequest: async ({ file, onSuccess, onError }) => {
|
||||
try {
|
||||
const realFile = file as File;
|
||||
@ -168,7 +191,12 @@ const InvoiceFormModal: React.FC<props> = ({
|
||||
<Row gutter={24}>
|
||||
<Col span={24}>
|
||||
<Form.Item name="taxpayerType" label="纳税人类型" rules={[{ required: true }]}>
|
||||
<Select options={[{ label: '一般纳税人', value: '一般纳税人' }, { label: '小规模纳税人', value: '小规模纳税人' }]} />
|
||||
<Select style={{ width: 150 }} placeholder="请选择纳税人类型" allowClear>
|
||||
{taxpayerType?.map(item => (
|
||||
<Select.Option key={item.code} value={item.code}>{item.dicName}</Select.Option>
|
||||
))}
|
||||
</Select>
|
||||
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={24}>
|
||||
|
@ -106,6 +106,13 @@ const QualificationFormModal: React.FC<QualificationFormModalProps> = ({
|
||||
const uploadProps: UploadProps = {
|
||||
name: 'file',
|
||||
showUploadList: true,
|
||||
beforeUpload: (file) => {
|
||||
if (file.size > 1048576) { // 1MB
|
||||
message.error('文件大小不能超过1MB');
|
||||
return Upload.LIST_IGNORE; // 阻止上传
|
||||
}
|
||||
return true;
|
||||
},
|
||||
customRequest: async ({ file, onSuccess, onError }) => {
|
||||
try {
|
||||
const realFile = file as File;
|
||||
|
Reference in New Issue
Block a user