Commit d592c0e2 authored by XieZhiXiong's avatar XieZhiXiong

添加售后退货手动发货流程

parent bd59a776
......@@ -137,10 +137,10 @@ const FlowRecords: React.FC<FlowRecordsProps> = ({
},
{
title: '状态',
dataIndex: 'statusName',
dataIndex: 'status',
align: 'center',
render: (text, record) => (
<Badge color={innerStatusColorMap[record.status] || '#EF6260'} text={text} />
<Badge color={innerStatusColorMap[record.statusCode] || '#EF6260'} text={text} />
),
},
{
......
......@@ -2,32 +2,36 @@
* @Author: XieZhiXiong
* @Date: 2020-11-09 10:48:12
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-12-14 16:38:53
* @LastEditTime: 2020-12-14 18:33:19
* @Description: 手动发货弹窗
*/
import React from 'react';
import { Modal } from 'antd';
import { createFormActions, FormEffectHooks, FormPath } from '@formily/antd';
import { DatePicker } from '@formily/antd-components'
import { DatePicker } from '@formily/antd-components';
import moment from 'moment';
import NiceForm from '@/components/NiceForm';
import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect';
import { PublicApi } from '@/services/api';
import { useLinkageUtils } from '@/utils/formEffectUtils';
import { schema } from './schema';
const modalFormActions = createFormActions();
const {
onFieldValueChange$,
onFieldInputChange$,
onFormInit$,
} = FormEffectHooks;
interface VerifyModalProps {
visible: boolean;
confirmLoading: boolean;
onSubmit: (values: { agree: 0 | 1, reason: string }) => void;
onSubmit: (values: {[key: string]: any}) => void;
onVisible: (flag: boolean) => void;
// 是否编辑的
isEdit?: boolean;
title?: string;
value?: {[key: string]: any};
};
const VerifyModal: React.FC<VerifyModalProps> = ({
......@@ -37,11 +41,25 @@ const VerifyModal: React.FC<VerifyModalProps> = ({
onVisible,
isEdit = true,
title = '换货发货处理',
value = {},
}) => {
const handleSubmit = values => {
const {
deliveryAddress,
deliveryAddressTxt,
deliveryTime,
logisticsName,
logisticsNameTxt,
...rest
} = values;
if (onSubmit) {
onSubmit(values);
onSubmit(isEdit ? {
deliveryAddress: deliveryAddressTxt,
logisticsName: logisticsNameTxt,
deliveryTime: deliveryTime ? deliveryTime.format('YYYY-MM-DD HH:mm:ss') : '',
...rest,
} : null);
}
};
......@@ -90,6 +108,15 @@ const VerifyModal: React.FC<VerifyModalProps> = ({
});
};
const LogisticsOrderNo = (
<a
href={`https://www.kuaidi100.com/chaxun?nu=${value.logisticsOrderNo}`}
target="_blank"
>
{value.logisticsOrderNo}
</a>
);
return (
<Modal
title={title}
......@@ -100,13 +127,47 @@ const VerifyModal: React.FC<VerifyModalProps> = ({
destroyOnClose
>
<NiceForm
effects={($, { setFieldState }) => {
effects={($, { setFieldState, setFieldValue }) => {
const linkage = useLinkageUtils();
useAsyncSelect('deliveryAddress', fetchShipperAddress, ['label', 'value']);
useAsyncSelect('logisticsName', fetchLogisticsCompany, ['label', 'value']);
onFieldInputChange$('deliveryAddress').subscribe(state => {
const { originAsyncData, value } = state;
const current = originAsyncData.find(item => item.value === value);
if (current) {
setFieldValue('deliveryAddressTxt', current.fullAddress);
}
});
onFieldInputChange$('logisticsName').subscribe(state => {
const { originAsyncData, value } = state;
const current = originAsyncData.find(item => item.value === value);
if (current) {
setFieldValue('logisticsNameTxt', current.label);
}
});
onFormInit$().subscribe(() => {
if (!isEdit) {
linkage.hide('*(deliveryAddress,logisticsName,logisticsOrderNo)');
linkage.show('*(logisticsOrderNoTxt)');
setFieldState('*(deliveryAddressTxt,logisticsNameTxt)', state => {
state.display = true;
});
}
});
}}
initialValues={{
deliveryTime: moment(),
...value,
}}
components={{
DatePicker,
}}
expressionScope={{
LogisticsOrderNo,
}}
editable={isEdit}
actions={modalFormActions}
schema={schema}
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-11-09 10:50:43
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-11-09 11:26:23
* @LastEditTime: 2020-12-14 18:34:12
* @Description:
*/
import { ISchema } from '@formily/antd';
......@@ -25,6 +25,11 @@ export const schema: ISchema = {
placeholder: '请选择',
},
},
deliveryAddressTxt: {
title: '发货地址',
type: 'string',
display: false,
},
deliveryTime: {
type: 'string',
title: '发货时间',
......@@ -44,6 +49,15 @@ export const schema: ISchema = {
placeholder: '请选择',
},
},
logisticsOrderNoTxt: {
type: 'string',
title: '发货单号',
visible: false,
'x-component': 'Children',
'x-component-props': {
children: '{{LogisticsOrderNo}}',
},
},
logisticsName: {
type: 'string',
title: '物流公司',
......@@ -53,6 +67,11 @@ export const schema: ISchema = {
placeholder: '请选择',
},
},
logisticsNameTxt: {
title: '物流公司',
type: 'string',
display: false,
},
},
},
},
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-11-06 09:54:04
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-12-09 13:53:00
* @LastEditTime: 2020-12-14 18:09:45
* @Description: 退货地址信息
*/
import React from 'react';
......@@ -157,7 +157,7 @@ const ReturnAddressInfo: React.FC<ReturnAddressInfo> = ({
};
// 无需物流
case 3: {
linkage.hide('*(shippingAddress,pickupAddress)');
linkage.hide('*(shippingAddress,pickupAddress,deliveryAddress,deliveryAddressShow)');
break;
};
default:
......
......@@ -4,9 +4,9 @@ import { history } from 'umi';
import { PublicApi } from '@/services/api';
import { SettingOutlined } from '@ant-design/icons';
import { usePageStatus } from '@/hooks/usePageStatus';
import { RETURN_GOODS_MANUAL_DELIVERY } from '../../constants';
import ManualDeliveryModal from '../../components/ManualDeliveryModal';
import DetailInfo from '../components/DetailInfo';
import { RETURN_GOODS_MANUAL_DELIVERY } from '../../constants';
const ReturnPrDeliverVerify: React.FC = () => {
const { id } = usePageStatus();
......@@ -17,16 +17,19 @@ const ReturnPrDeliverVerify: React.FC = () => {
if (!id) {
return;
}
// setSubmitLoading(true);
// PublicApi.postAsReturnGoodsConfirmReturnDeliveryGoods({
// deliveryId: id,
// }).then(res => {
// if (res.code === 1000) {
// history.goBack();
// }
// }).finally(() => {
// setSubmitLoading(false);
// });
console.log('values', values)
return;
setSubmitLoading(true);
PublicApi.postAsReturnGoodsManualReturnDeliveryGoods({
dataId: id,
...values,
}).then(res => {
if (res.code === 1000) {
history.goBack();
}
}).finally(() => {
setSubmitLoading(false);
});
};
const handleVisible = flag => {
......@@ -53,6 +56,7 @@ const ReturnPrDeliverVerify: React.FC = () => {
/>
<ManualDeliveryModal
value={{}}
visible={modalVisible}
confirmLoading={submitLoading}
onSubmit={handleSubmit}
......
......@@ -109,7 +109,7 @@ const DetailInfo: React.FC<DetailInfoProps> = ({
});
PublicApi.postAsReturnGoodsSetNeedReturnGoods({
returnId: +id,
returnGoodsId: record.detailId,
returnGoodsId: record.orderRecordId,
isNeed: record.isNeedReturn === 1 ? 0 : 1,
}).then(res => {
if (res.code === 1000) {
......@@ -371,7 +371,7 @@ const DetailInfo: React.FC<DetailInfoProps> = ({
padding: '0 32px',
}}
>
<Descriptions.Item label="申请单摘要">{detailInfo?.applyAbstract}</Descriptions.Item>
<Descriptions.Item label="申请单摘要">{detailInfo?.applyAbstract}</Descriptions.Item>
<Descriptions.Item label="采购会员">{detailInfo?.consumerName}</Descriptions.Item>
<Descriptions.Item label="单据时间">{detailInfo?.applyTime}</Descriptions.Item>
<Descriptions.Item label="外部状态">
......
import React, { useState } from 'react';
import { Button } from 'antd';
import { history } from 'umi';
import moment from 'moment';
import { PublicApi } from '@/services/api';
import { SettingOutlined } from '@ant-design/icons';
import { usePageStatus } from '@/hooks/usePageStatus';
import { RETURN_GOODS_MANUAL_DELIVERY } from '../../constants';
import ManualDeliveryModal from '../../components/ManualDeliveryModal';
import DetailInfo from '../components/DetailInfo';
......@@ -17,17 +19,16 @@ const ReturnPrReceivedVerify: React.FC = () => {
return;
}
setSubmitLoading(true);
// PublicApi.postPayCreditHandleVerifyStepOne({
// applyId: id,
// isPass: values.agree,
// opinion: values.reason,
// }).then(res => {
// if (res.code === 1000) {
// history.goBack();
// }
// }).finally(() => {
// setSubmitLoading(false);
// });
PublicApi.postAsReturnGoodsConfirmManualReturnReceiveGoods({
dataId: id,
...values,
}).then(res => {
if (res.code === 1000) {
history.goBack();
}
}).finally(() => {
setSubmitLoading(false);
});
};
const handleVisible = flag => {
......@@ -38,7 +39,15 @@ const ReturnPrReceivedVerify: React.FC = () => {
<>
<DetailInfo
id={id}
headExtra={() => (
headExtra={info => {
const detailed = info || {};
// @ts-ignore
const { manualReturnGoodsAddress = {} } = detailed;
return (
<>
{(info && info.taskType === RETURN_GOODS_MANUAL_DELIVERY) && (
<>
<Button
type="default"
icon={<SettingOutlined />}
......@@ -46,10 +55,15 @@ const ReturnPrReceivedVerify: React.FC = () => {
>
手工确认退货收货
</Button>
)}
/>
<ManualDeliveryModal
key="2"
value={{
deliveryAddressTxt: manualReturnGoodsAddress.deliveryAddress,
deliveryTime: manualReturnGoodsAddress.deliveryTime,
logisticsOrderNo: manualReturnGoodsAddress.logisticsOrderNo,
logisticsNameTxt: manualReturnGoodsAddress.logisticsName,
}}
visible={modalVisible}
confirmLoading={submitLoading}
onSubmit={handleSubmit}
......@@ -57,6 +71,13 @@ const ReturnPrReceivedVerify: React.FC = () => {
isEdit={false}
/>
</>
)}
</>
)
}}
/>
</>
);
};
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-11-04 17:22:07
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-12-08 14:51:53
* @LastEditTime: 2020-12-14 18:07:20
* @Description:
*/
import React, { useState } from 'react';
......@@ -47,7 +47,7 @@ const ReturnPrSubmitVerify: React.FC = () => {
PublicApi.postAsReturnGoodsSubmitVerify({
applyId: id,
...values,
...returnAddress,
...(returnAddress || {}),
}).then(res => {
if (res.code === 1000) {
history.goBack();
......@@ -66,12 +66,14 @@ const ReturnPrSubmitVerify: React.FC = () => {
message.error('请选择退货收货地址');
return;
}
if (returnAddress) {
setReturnAddress({
receiveId: returnAddress.id,
receiveAddress: returnAddress.receiveAddress,
receiveUserName: returnAddress.receiveUserName,
receiveUserTel: returnAddress.receiveUserTel,
});
}
setVisible(true);
};
......
......@@ -748,7 +748,6 @@ const BillsForm: React.FC<BillsFormProps> = ({
}
PublicApi.postOrderPurchaseReceiptAdd({
...rest,
invoicesTypeCode: invoicesTypeCode,
orderNo: orderNo[0].orderNo,
relevanceInvoicesId: orderNo[0].id,
transactionTime: newTransactionTime,
......@@ -850,7 +849,6 @@ const BillsForm: React.FC<BillsFormProps> = ({
}
PublicApi.postOrderSalesInvoiceOrder({
...rest,
invoicesTypeCode: invoicesTypeCode,
orderNo: orderNo[0].orderNo,
relevanceInvoicesId: orderNo[0].id,
transactionTime: newTransactionTime,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment