提交 7d93a818 作者: 龚洪江

修复:意向订单流程操作问题

上级 21d31845
...@@ -67,7 +67,7 @@ const ApprovalOrder: FC<ModalProps & selfProps> = ({ ...@@ -67,7 +67,7 @@ const ApprovalOrder: FC<ModalProps & selfProps> = ({
return ( return (
<Modal open={open} title='凭证审批' onOk={handleOk} onCancel={handleCancel}> <Modal open={open} title='凭证审批' onOk={handleOk} onCancel={handleCancel}>
<Form <Form
labelCol={{ span: 2 }} labelCol={{ span: 3 }}
wrapperCol={{ span: 19 }} wrapperCol={{ span: 19 }}
initialValues={{ checkStatus: 1 }} initialValues={{ checkStatus: 1 }}
form={form} form={form}
...@@ -85,19 +85,17 @@ const ApprovalOrder: FC<ModalProps & selfProps> = ({ ...@@ -85,19 +85,17 @@ const ApprovalOrder: FC<ModalProps & selfProps> = ({
) : ( ) : (
'' ''
)} )}
</Form> <Form.Item label='凭证图片'>
{
<Row>
<Col span={2}>凭证:</Col>
<Col span={19}>
<div className='pay-img-wrap'> <div className='pay-img-wrap'>
{JSON.parse(getApproveObj()?.payImgList || '[]').map((i: any, j: number) => ( {JSON.parse(getApproveObj()?.payImgList || '[]').map((i: any, j: number) => (
<Image src={i.filePath} key={j} width={100} height={100} /> <Image src={i.filePath} key={j} width={100} height={100} />
))} ))}
</div> </div>
</Col> </Form.Item>
</Row> <Form.Item label='凭证说明'>
} <span style={{ wordBreak: 'break-all' }}>{getApproveObj()?.payRemark}</span>
</Form.Item>
</Form>
</Modal> </Modal>
); );
}; };
......
...@@ -22,13 +22,15 @@ import { FddInterfaceAPI, OrderManageAPI } from '~/api'; ...@@ -22,13 +22,15 @@ import { FddInterfaceAPI, OrderManageAPI } from '~/api';
import IframeModal from '~/components/modal/iframeModal'; import IframeModal from '~/components/modal/iframeModal';
import { decode } from 'js-base64'; import { decode } from 'js-base64';
import { UploadFile } from 'antd/es/upload/interface'; import { UploadFile } from 'antd/es/upload/interface';
import { userFddInfoType } from '~/api/interface/fddInterfaceType'; import { uploadContractType, userFddInfoType } from '~/api/interface/fddInterfaceType';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
// 商城订单对象类型 // 商城订单对象类型
type mallOrderItemType = InterListType<mallOrderListType>[0]; type mallOrderItemType = InterListType<mallOrderListType>[0];
// fdd实名认证信息类型 // fdd实名认证信息类型
type fddAuthType = InterDataType<userFddInfoType>; type fddAuthType = InterDataType<userFddInfoType>;
// 合同返回类型
type contractType = InterDataType<uploadContractType>;
interface selfProps { interface selfProps {
onCancel: () => void; onCancel: () => void;
...@@ -45,6 +47,8 @@ const SureOrder: FC<ModalProps & selfProps> = ({ open, onOk, onCancel, orderItem ...@@ -45,6 +47,8 @@ const SureOrder: FC<ModalProps & selfProps> = ({ open, onOk, onCancel, orderItem
totalSalary: number; totalSalary: number;
cashAmt: number; cashAmt: number;
}>(); }>();
// 实付总额
const [totalAmountPaid, setTotalAmountPaid] = useState<string | number>('');
const [contractForm] = Form.useForm<{ contractUrl: string; contractTitle: string }>(); const [contractForm] = Form.useForm<{ contractUrl: string; contractTitle: string }>();
const tableColumns: ColumnsType<mallOrderItemType['skuDTOList'][0]> = [ const tableColumns: ColumnsType<mallOrderItemType['skuDTOList'][0]> = [
{ {
...@@ -78,30 +82,31 @@ const SureOrder: FC<ModalProps & selfProps> = ({ open, onOk, onCancel, orderItem ...@@ -78,30 +82,31 @@ const SureOrder: FC<ModalProps & selfProps> = ({ open, onOk, onCancel, orderItem
]; ];
// 签署合同地址 // 签署合同地址
const [contractFileList, setContractFileList] = useState<UploadFile[]>([]); const [contractFileList, setContractFileList] = useState<UploadFile[]>([]);
const [contractInfo, setContractInfo] = useState<contractType>();
const [contractUrl, setContractUrl] = useState<string>(''); const [contractUrl, setContractUrl] = useState<string>('');
// fdd实名认证信息 // fdd实名认证信息
const [fddAuthInfo, setFddAuthInfo] = useState<fddAuthType[0]>(); const [fddAuthInfo, setFddAuthInfo] = useState<fddAuthType[0]>();
const [iframeModalShow, setIframeModalShow] = useState<boolean>(false); const [iframeModalShow, setIframeModalShow] = useState<boolean>(false);
// 合同文件上传成功回调 // 合同上传
const uploadSuccess = (value: any) => { const uploadSuccess = (value: any) => {
setContractFileList(value);
contractForm.setFieldValue('contractUrl', value[0].url);
};
// 合同上传fdd
const uploadContract = () => {
if (orderItem) {
contractForm contractForm
.validateFields() .validateFields(['contractTitle'])
.then((values) => { .then((values) => {
if (fddAuthInfo?.entVerifyStatus === 4) { if (fddAuthInfo?.entVerifyStatus === 4) {
FddInterfaceAPI.uploadContract({ FddInterfaceAPI.uploadContract({
docUrl: values.contractUrl, docUrl: value[0].url,
orderNo: orderItem.orderNo, orderNo: orderItem.orderNo,
port: 1, port: 1,
title: values.contractTitle, title: values.contractTitle,
}).then(({ result }) => { })
signContract(result.contractNo); .then(({ result }) => {
setContractFileList(value);
contractForm.setFieldValue('contractUrl', value[0].url);
setContractInfo(result);
})
.catch(() => {
setContractFileList([]);
}); });
} else { } else {
message.warning('请先完成认证'); message.warning('请先完成认证');
...@@ -111,9 +116,22 @@ const SureOrder: FC<ModalProps & selfProps> = ({ open, onOk, onCancel, orderItem ...@@ -111,9 +116,22 @@ const SureOrder: FC<ModalProps & selfProps> = ({ open, onOk, onCancel, orderItem
} }
}) })
.catch((error: any) => { .catch((error: any) => {
setContractFileList([]);
message.warning(error?.errorFields[0]?.errors[0]); message.warning(error?.errorFields[0]?.errors[0]);
}); });
};
//签署合同
const signContractClick = () => {
contractForm
.validateFields()
.then(() => {
if (contractInfo) {
signContract(contractInfo.contractNo);
} }
})
.catch((error: any) => {
message.warning(error?.errorFields[0]?.errors[0]);
});
}; };
// 获取fdd实名认证信息 // 获取fdd实名认证信息
const getAppUserFddInfo = () => { const getAppUserFddInfo = () => {
...@@ -142,12 +160,24 @@ const SureOrder: FC<ModalProps & selfProps> = ({ open, onOk, onCancel, orderItem ...@@ -142,12 +160,24 @@ const SureOrder: FC<ModalProps & selfProps> = ({ open, onOk, onCancel, orderItem
if (result) { if (result) {
orderInfoForm.setFieldsValue({ orderInfoForm.setFieldsValue({
cashAmt: result.cashAmt, cashAmt: result.cashAmt,
totalSalary: result.totalSalary,
}); });
orderTotalAmountInputEvent();
} }
}, },
); );
}; };
// 获取实付款总额
const orderTotalAmountInputEvent = () => {
const amount =
orderInfoForm.getFieldValue('orderTotalAmount') >
(orderInfoForm.getFieldValue('cashAmt') || 0)
? '¥' +
(
orderInfoForm.getFieldValue('orderTotalAmount') - orderInfoForm.getFieldValue('cashAmt')
).toLocaleString()
: 0;
setTotalAmountPaid(amount);
};
const handleOk = () => { const handleOk = () => {
if (orderItem) { if (orderItem) {
Promise.all([orderInfoForm.validateFields(), contractForm.validateFields()]) Promise.all([orderInfoForm.validateFields(), contractForm.validateFields()])
...@@ -218,20 +248,22 @@ const SureOrder: FC<ModalProps & selfProps> = ({ open, onOk, onCancel, orderItem ...@@ -218,20 +248,22 @@ const SureOrder: FC<ModalProps & selfProps> = ({ open, onOk, onCancel, orderItem
<div className='order-info-form'> <div className='order-info-form'>
<Form wrapperCol={{ span: 10 }} labelCol={{ span: 3 }} form={orderInfoForm}> <Form wrapperCol={{ span: 10 }} labelCol={{ span: 3 }} form={orderInfoForm}>
<Form.Item <Form.Item
label='实付总额' label='订单总额'
name='orderTotalAmount' name='orderTotalAmount'
rules={[{ required: true, message: '请输入实付总额' }]} rules={[{ required: true, message: '请输入实付总额' }]}
> >
<Input placeholder='请输入实付总额' suffix='元' maxLength={30} /> <Input
placeholder='请输入订单总额'
suffix='元'
maxLength={30}
onChange={orderTotalAmountInputEvent}
/>
</Form.Item> </Form.Item>
{type === 1 ? ( {type === 1 ? (
<> <>
<Form.Item label='云享金' name='cashAmt'> <Form.Item label='云享金' name='cashAmt'>
<Input placeholder='请输入抵扣云享金' suffix='元' disabled /> <Input placeholder='请输入抵扣云享金' suffix='元' disabled />
</Form.Item> </Form.Item>
<Form.Item label='佣金' name='totalSalary'>
<Input placeholder='请输入抵扣佣金' suffix='元' disabled />
</Form.Item>
<Form.Item <Form.Item
label='订单交期' label='订单交期'
name='deliveryTime' name='deliveryTime'
...@@ -243,6 +275,7 @@ const SureOrder: FC<ModalProps & selfProps> = ({ open, onOk, onCancel, orderItem ...@@ -243,6 +275,7 @@ const SureOrder: FC<ModalProps & selfProps> = ({ open, onOk, onCancel, orderItem
) : ( ) : (
'' ''
)} )}
<Form.Item label='实付总额'>{totalAmountPaid}</Form.Item>
</Form> </Form>
</div> </div>
</Col> </Col>
...@@ -283,7 +316,7 @@ const SureOrder: FC<ModalProps & selfProps> = ({ open, onOk, onCancel, orderItem ...@@ -283,7 +316,7 @@ const SureOrder: FC<ModalProps & selfProps> = ({ open, onOk, onCancel, orderItem
<Col span={5}></Col> <Col span={5}></Col>
<Col> <Col>
<div> <div>
<Button type='primary' size='small' onClick={uploadContract}> <Button type='primary' size='small' onClick={signContractClick}>
签署合同 签署合同
</Button> </Button>
<span style={{ color: 'red' }}>(上传合同后需完成签署!)</span> <span style={{ color: 'red' }}>(上传合同后需完成签署!)</span>
......
...@@ -39,5 +39,16 @@ ...@@ -39,5 +39,16 @@
} }
} }
} }
.pay-remark{
display: flex;
.label{
white-space: nowrap;
}
.value{
line-height: 15px;
word-break: break-all;
width: 200px;
}
}
} }
...@@ -173,6 +173,8 @@ const ProcurementOrderDetail = () => { ...@@ -173,6 +173,8 @@ const ProcurementOrderDetail = () => {
{purchaseOrderDetail?.uavOrderExpressDTO.sendExpNo || '--'} {purchaseOrderDetail?.uavOrderExpressDTO.sendExpNo || '--'}
</Descriptions.Item> </Descriptions.Item>
<Descriptions.Item label='物流进度:'> <Descriptions.Item label='物流进度:'>
{purchaseOrderDetail?.kdnExpDTO?.traces?.length ? (
<>
<div> <div>
<Steps <Steps
direction='vertical' direction='vertical'
...@@ -180,8 +182,8 @@ const ProcurementOrderDetail = () => { ...@@ -180,8 +182,8 @@ const ProcurementOrderDetail = () => {
progressDot progressDot
items={[ items={[
{ {
title: purchaseOrderDetail?.kdnExpDTO?.traces?.[0].acceptStation, title: purchaseOrderDetail?.kdnExpDTO?.traces?.[0]?.acceptStation,
description: purchaseOrderDetail?.kdnExpDTO?.traces?.[0].acceptTime, description: purchaseOrderDetail?.kdnExpDTO?.traces?.[0]?.acceptTime,
}, },
{ {
title: `送至${ title: `送至${
...@@ -197,12 +199,17 @@ const ProcurementOrderDetail = () => { ...@@ -197,12 +199,17 @@ const ProcurementOrderDetail = () => {
查看详情 查看详情
</Button> </Button>
</div> </div>
</>
) : (
'--'
)}
</Descriptions.Item> </Descriptions.Item>
</Descriptions> </Descriptions>
<Descriptions title='凭证及合同' bordered style={{ marginTop: '10px' }}> <Descriptions title='凭证及合同' bordered style={{ marginTop: '10px' }}>
<Descriptions.Item label='付款凭证:'> <Descriptions.Item label='付款凭证:'>
{purchaseOrderDetail?.payDTOS.map((v, index) => ( {purchaseOrderDetail?.payDTOS.map((v, index) => (
<div className='pay-item' key={index}> <div className='pay-wrap' key={index}>
<div className='pay-item'>
<div className='pay-item-laebl'> <div className='pay-item-laebl'>
第{index + 1}次上传{' '} 第{index + 1}次上传{' '}
<span style={{ color: 'red' }}> <span style={{ color: 'red' }}>
...@@ -216,6 +223,11 @@ const ProcurementOrderDetail = () => { ...@@ -216,6 +223,11 @@ const ProcurementOrderDetail = () => {
))} ))}
</div> </div>
</div> </div>
<div className='pay-remark'>
<div className='label'> 第{index + 1}次上传凭证说明:</div>
<div className='value'>{v.payRemark}</div>
</div>
</div>
))} ))}
</Descriptions.Item> </Descriptions.Item>
<Descriptions.Item label='合同信息:'> <Descriptions.Item label='合同信息:'>
......
...@@ -91,7 +91,7 @@ const UploadPayment: FC<ModalProps & selfProps> = ({ open, currentOrderItem, onC ...@@ -91,7 +91,7 @@ const UploadPayment: FC<ModalProps & selfProps> = ({ open, currentOrderItem, onC
<UploadOutlined /> <UploadOutlined />
</Uploader> </Uploader>
</Form.Item> </Form.Item>
<Form.Item label='备注' name='payRemark'> <Form.Item label='凭证说明' name='payRemark'>
<Input.TextArea placeholder='请输入备注' maxLength={70} rows={4} showCount /> <Input.TextArea placeholder='请输入备注' maxLength={70} rows={4} showCount />
</Form.Item> </Form.Item>
</Form> </Form>
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
} }
.value{ .value{
line-height: 15px; line-height: 15px;
word-break: break-all;
} }
} }
.pay-img-wrap{ .pay-img-wrap{
......
...@@ -78,7 +78,8 @@ const DetailPurchaser: React.FC<PropsType> = ({ detail }) => { ...@@ -78,7 +78,8 @@ const DetailPurchaser: React.FC<PropsType> = ({ detail }) => {
<> <>
<div className='detail-title'>付款凭证</div> <div className='detail-title'>付款凭证</div>
{detail?.payDTOList.map((v, index) => ( {detail?.payDTOList.map((v, index) => (
<div key={index} className='pay-img-wrap'> <div key={index}>
<div className='pay-img-wrap'>
<div className='detail-text'> <div className='detail-text'>
第{index + 1}次上传 第{index + 1}次上传
<span style={{ color: 'red' }}> <span style={{ color: 'red' }}>
...@@ -92,12 +93,12 @@ const DetailPurchaser: React.FC<PropsType> = ({ detail }) => { ...@@ -92,12 +93,12 @@ const DetailPurchaser: React.FC<PropsType> = ({ detail }) => {
))} ))}
</div> </div>
</div> </div>
))}
<div className='detail-text remark'> <div className='detail-text remark'>
<div className='label'>凭证备注:</div> <div className='label'> 第{index + 1}次上传凭证说明:</div>
<div className='value'>{detail?.payDTOList[0].payRemark}</div> <div className='value'>{v.payRemark}</div>
</div> </div>
</div>
))}
</> </>
) : ( ) : (
'' ''
......
import { FC } from 'react';
import { Modal, ModalProps } from 'antd';
interface selfProps {
onCancel: () => void;
onOk: () => void;
}
const TailPaymentOrder: FC<ModalProps & selfProps> = ({ open, onOk, onCancel }) => {
const handleOk = () => {
onOk();
};
const handleCancel = () => {
onCancel();
};
return <Modal open={open} title='确认尾款' onOk={handleOk} onCancel={handleCancel} />;
};
export default TailPaymentOrder;
...@@ -333,13 +333,7 @@ function ProductOrderView() { ...@@ -333,13 +333,7 @@ function ProductOrderView() {
dataIndex: 'statusCode', dataIndex: 'statusCode',
align: 'center', align: 'center',
render: (text) => ( render: (text) => (
<TableItem <TableItem tr={<div>{orderStatusList.find((i) => i.value === text)?.label || text}</div>} />
tr={
<div className='goods-text'>
{orderStatusList.find((i) => i.value === text)?.label || text}
</div>
}
/>
), ),
}, },
{ {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论