Commit bfb5e879 authored by XieZhiXiong's avatar XieZhiXiong

Merge branch 'dev' into test

parents ccaf7547 6eecee6c
...@@ -137,10 +137,10 @@ const FlowRecords: React.FC<FlowRecordsProps> = ({ ...@@ -137,10 +137,10 @@ const FlowRecords: React.FC<FlowRecordsProps> = ({
}, },
{ {
title: '状态', title: '状态',
dataIndex: 'statusName', dataIndex: 'status',
align: 'center', align: 'center',
render: (text, record) => ( render: (text, record) => (
<Badge color={innerStatusColorMap[record.status] || '#EF6260'} text={text} /> <Badge color={innerStatusColorMap[record.statusCode] || '#EF6260'} text={text} />
), ),
}, },
{ {
......
...@@ -2,32 +2,36 @@ ...@@ -2,32 +2,36 @@
* @Author: XieZhiXiong * @Author: XieZhiXiong
* @Date: 2020-11-09 10:48:12 * @Date: 2020-11-09 10:48:12
* @LastEditors: XieZhiXiong * @LastEditors: XieZhiXiong
* @LastEditTime: 2020-12-14 16:38:53 * @LastEditTime: 2020-12-14 18:33:19
* @Description: 手动发货弹窗 * @Description: 手动发货弹窗
*/ */
import React from 'react'; import React from 'react';
import { Modal } from 'antd'; import { Modal } from 'antd';
import { createFormActions, FormEffectHooks, FormPath } from '@formily/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 NiceForm from '@/components/NiceForm';
import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect'; import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect';
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
import { useLinkageUtils } from '@/utils/formEffectUtils';
import { schema } from './schema'; import { schema } from './schema';
const modalFormActions = createFormActions(); const modalFormActions = createFormActions();
const { const {
onFieldValueChange$, onFieldValueChange$,
onFieldInputChange$, onFieldInputChange$,
onFormInit$,
} = FormEffectHooks; } = FormEffectHooks;
interface VerifyModalProps { interface VerifyModalProps {
visible: boolean; visible: boolean;
confirmLoading: boolean; confirmLoading: boolean;
onSubmit: (values: { agree: 0 | 1, reason: string }) => void; onSubmit: (values: {[key: string]: any}) => void;
onVisible: (flag: boolean) => void; onVisible: (flag: boolean) => void;
// 是否编辑的 // 是否编辑的
isEdit?: boolean; isEdit?: boolean;
title?: string; title?: string;
value?: {[key: string]: any};
}; };
const VerifyModal: React.FC<VerifyModalProps> = ({ const VerifyModal: React.FC<VerifyModalProps> = ({
...@@ -37,11 +41,25 @@ const VerifyModal: React.FC<VerifyModalProps> = ({ ...@@ -37,11 +41,25 @@ const VerifyModal: React.FC<VerifyModalProps> = ({
onVisible, onVisible,
isEdit = true, isEdit = true,
title = '换货发货处理', title = '换货发货处理',
value = {},
}) => { }) => {
const handleSubmit = values => { const handleSubmit = values => {
const {
deliveryAddress,
deliveryAddressTxt,
deliveryTime,
logisticsName,
logisticsNameTxt,
...rest
} = values;
if (onSubmit) { 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> = ({ ...@@ -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 ( return (
<Modal <Modal
title={title} title={title}
...@@ -100,13 +127,47 @@ const VerifyModal: React.FC<VerifyModalProps> = ({ ...@@ -100,13 +127,47 @@ const VerifyModal: React.FC<VerifyModalProps> = ({
destroyOnClose destroyOnClose
> >
<NiceForm <NiceForm
effects={($, { setFieldState }) => { effects={($, { setFieldState, setFieldValue }) => {
const linkage = useLinkageUtils();
useAsyncSelect('deliveryAddress', fetchShipperAddress, ['label', 'value']); useAsyncSelect('deliveryAddress', fetchShipperAddress, ['label', 'value']);
useAsyncSelect('logisticsName', fetchLogisticsCompany, ['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={{ components={{
DatePicker, DatePicker,
}} }}
expressionScope={{
LogisticsOrderNo,
}}
editable={isEdit} editable={isEdit}
actions={modalFormActions} actions={modalFormActions}
schema={schema} schema={schema}
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: XieZhiXiong * @Author: XieZhiXiong
* @Date: 2020-11-09 10:50:43 * @Date: 2020-11-09 10:50:43
* @LastEditors: XieZhiXiong * @LastEditors: XieZhiXiong
* @LastEditTime: 2020-11-09 11:26:23 * @LastEditTime: 2020-12-14 18:34:12
* @Description: * @Description:
*/ */
import { ISchema } from '@formily/antd'; import { ISchema } from '@formily/antd';
...@@ -25,6 +25,11 @@ export const schema: ISchema = { ...@@ -25,6 +25,11 @@ export const schema: ISchema = {
placeholder: '请选择', placeholder: '请选择',
}, },
}, },
deliveryAddressTxt: {
title: '发货地址',
type: 'string',
display: false,
},
deliveryTime: { deliveryTime: {
type: 'string', type: 'string',
title: '发货时间', title: '发货时间',
...@@ -44,6 +49,15 @@ export const schema: ISchema = { ...@@ -44,6 +49,15 @@ export const schema: ISchema = {
placeholder: '请选择', placeholder: '请选择',
}, },
}, },
logisticsOrderNoTxt: {
type: 'string',
title: '发货单号',
visible: false,
'x-component': 'Children',
'x-component-props': {
children: '{{LogisticsOrderNo}}',
},
},
logisticsName: { logisticsName: {
type: 'string', type: 'string',
title: '物流公司', title: '物流公司',
...@@ -53,6 +67,11 @@ export const schema: ISchema = { ...@@ -53,6 +67,11 @@ export const schema: ISchema = {
placeholder: '请选择', placeholder: '请选择',
}, },
}, },
logisticsNameTxt: {
title: '物流公司',
type: 'string',
display: false,
},
}, },
}, },
}, },
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: XieZhiXiong * @Author: XieZhiXiong
* @Date: 2020-11-06 09:54:04 * @Date: 2020-11-06 09:54:04
* @LastEditors: XieZhiXiong * @LastEditors: XieZhiXiong
* @LastEditTime: 2020-12-09 13:53:00 * @LastEditTime: 2020-12-14 18:09:45
* @Description: 退货地址信息 * @Description: 退货地址信息
*/ */
import React from 'react'; import React from 'react';
...@@ -157,7 +157,7 @@ const ReturnAddressInfo: React.FC<ReturnAddressInfo> = ({ ...@@ -157,7 +157,7 @@ const ReturnAddressInfo: React.FC<ReturnAddressInfo> = ({
}; };
// 无需物流 // 无需物流
case 3: { case 3: {
linkage.hide('*(shippingAddress,pickupAddress)'); linkage.hide('*(shippingAddress,pickupAddress,deliveryAddress,deliveryAddressShow)');
break; break;
}; };
default: default:
......
...@@ -48,12 +48,17 @@ interface ReturnDetailInfoProps { ...@@ -48,12 +48,17 @@ interface ReturnDetailInfoProps {
* 确认事件 * 确认事件
*/ */
onConfirm?: (id: number, flag: 0 | 1) => Promise<any>; onConfirm?: (id: number, flag: 0 | 1) => Promise<any>;
/**
* 是否是采购商
*/
isPurchaser?: boolean;
}; };
const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({
dataSource = [], dataSource = [],
onRefund, onRefund,
onConfirm, onConfirm,
isPurchaser = false,
}) => { }) => {
const [visibleResult, setVisibleResult] = useState(false); const [visibleResult, setVisibleResult] = useState(false);
const [notReceivedLoading, setNotReceivedLoading] = useState(false); const [notReceivedLoading, setNotReceivedLoading] = useState(false);
...@@ -251,7 +256,7 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({ ...@@ -251,7 +256,7 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({
<div className={styles['deliver-item-actions']}> <div className={styles['deliver-item-actions']}>
{ {
( !isPurchaser && (
item.outerStatus === REFUND_OUTER_STATUS_NOT_RECEIVED || item.outerStatus === REFUND_OUTER_STATUS_NOT_RECEIVED ||
item.innerStatus === REFUND_INNER_STATUS_NO_REFUND || item.innerStatus === REFUND_INNER_STATUS_NO_REFUND ||
item.innerStatus === REFUND_INNER_STATUS_REFUND_FAILED item.innerStatus === REFUND_INNER_STATUS_REFUND_FAILED
...@@ -268,7 +273,7 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({ ...@@ -268,7 +273,7 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({
{item.channel === PAY_CHANNEL_OFFLINE && ( {item.channel === PAY_CHANNEL_OFFLINE && (
<> <>
{ {
( isPurchaser && (
item.outerStatus === REFUND_OUTER_STATUS_UNCONFIRMED_REFUND || item.outerStatus === REFUND_OUTER_STATUS_UNCONFIRMED_REFUND ||
item.outerStatus === REFUND_OUTER_STATUS_NOT_RECEIVED item.outerStatus === REFUND_OUTER_STATUS_NOT_RECEIVED
) && ( ) && (
......
...@@ -405,6 +405,7 @@ const DetailInfo: React.FC<DetailInfoProps> = ({ ...@@ -405,6 +405,7 @@ const DetailInfo: React.FC<DetailInfoProps> = ({
<ReturnDetailInfo <ReturnDetailInfo
dataSource={detailInfo && detailInfo.refundList ? detailInfo.refundList : []} dataSource={detailInfo && detailInfo.refundList ? detailInfo.refundList : []}
onConfirm={handleConfirm} onConfirm={handleConfirm}
isPurchaser
/> />
</Suspense> </Suspense>
</Col> </Col>
......
...@@ -4,9 +4,9 @@ import { history } from 'umi'; ...@@ -4,9 +4,9 @@ import { history } from 'umi';
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
import { SettingOutlined } from '@ant-design/icons'; import { SettingOutlined } from '@ant-design/icons';
import { usePageStatus } from '@/hooks/usePageStatus'; import { usePageStatus } from '@/hooks/usePageStatus';
import { RETURN_GOODS_MANUAL_DELIVERY } from '../../constants';
import ManualDeliveryModal from '../../components/ManualDeliveryModal'; import ManualDeliveryModal from '../../components/ManualDeliveryModal';
import DetailInfo from '../components/DetailInfo'; import DetailInfo from '../components/DetailInfo';
import { RETURN_GOODS_MANUAL_DELIVERY } from '../../constants';
const ReturnPrDeliverVerify: React.FC = () => { const ReturnPrDeliverVerify: React.FC = () => {
const { id } = usePageStatus(); const { id } = usePageStatus();
...@@ -17,16 +17,19 @@ const ReturnPrDeliverVerify: React.FC = () => { ...@@ -17,16 +17,19 @@ const ReturnPrDeliverVerify: React.FC = () => {
if (!id) { if (!id) {
return; return;
} }
// setSubmitLoading(true); console.log('values', values)
// PublicApi.postAsReturnGoodsConfirmReturnDeliveryGoods({ return;
// deliveryId: id, setSubmitLoading(true);
// }).then(res => { PublicApi.postAsReturnGoodsManualReturnDeliveryGoods({
// if (res.code === 1000) { dataId: id,
// history.goBack(); ...values,
// } }).then(res => {
// }).finally(() => { if (res.code === 1000) {
// setSubmitLoading(false); history.goBack();
// }); }
}).finally(() => {
setSubmitLoading(false);
});
}; };
const handleVisible = flag => { const handleVisible = flag => {
...@@ -53,6 +56,7 @@ const ReturnPrDeliverVerify: React.FC = () => { ...@@ -53,6 +56,7 @@ const ReturnPrDeliverVerify: React.FC = () => {
/> />
<ManualDeliveryModal <ManualDeliveryModal
value={{}}
visible={modalVisible} visible={modalVisible}
confirmLoading={submitLoading} confirmLoading={submitLoading}
onSubmit={handleSubmit} onSubmit={handleSubmit}
......
...@@ -109,7 +109,7 @@ const DetailInfo: React.FC<DetailInfoProps> = ({ ...@@ -109,7 +109,7 @@ const DetailInfo: React.FC<DetailInfoProps> = ({
}); });
PublicApi.postAsReturnGoodsSetNeedReturnGoods({ PublicApi.postAsReturnGoodsSetNeedReturnGoods({
returnId: +id, returnId: +id,
returnGoodsId: record.detailId, returnGoodsId: record.orderRecordId,
isNeed: record.isNeedReturn === 1 ? 0 : 1, isNeed: record.isNeedReturn === 1 ? 0 : 1,
}).then(res => { }).then(res => {
if (res.code === 1000) { if (res.code === 1000) {
...@@ -371,7 +371,7 @@ const DetailInfo: React.FC<DetailInfoProps> = ({ ...@@ -371,7 +371,7 @@ const DetailInfo: React.FC<DetailInfoProps> = ({
padding: '0 32px', 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?.consumerName}</Descriptions.Item>
<Descriptions.Item label="单据时间">{detailInfo?.applyTime}</Descriptions.Item> <Descriptions.Item label="单据时间">{detailInfo?.applyTime}</Descriptions.Item>
<Descriptions.Item label="外部状态"> <Descriptions.Item label="外部状态">
......
import React, { useState } from 'react'; import React, { useState } from 'react';
import { Button } from 'antd'; import { Button } from 'antd';
import { history } from 'umi'; import { history } from 'umi';
import moment from 'moment';
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
import { SettingOutlined } from '@ant-design/icons'; import { SettingOutlined } from '@ant-design/icons';
import { usePageStatus } from '@/hooks/usePageStatus'; import { usePageStatus } from '@/hooks/usePageStatus';
import { RETURN_GOODS_MANUAL_DELIVERY } from '../../constants';
import ManualDeliveryModal from '../../components/ManualDeliveryModal'; import ManualDeliveryModal from '../../components/ManualDeliveryModal';
import DetailInfo from '../components/DetailInfo'; import DetailInfo from '../components/DetailInfo';
...@@ -17,17 +19,16 @@ const ReturnPrReceivedVerify: React.FC = () => { ...@@ -17,17 +19,16 @@ const ReturnPrReceivedVerify: React.FC = () => {
return; return;
} }
setSubmitLoading(true); setSubmitLoading(true);
// PublicApi.postPayCreditHandleVerifyStepOne({ PublicApi.postAsReturnGoodsConfirmManualReturnReceiveGoods({
// applyId: id, dataId: id,
// isPass: values.agree, ...values,
// opinion: values.reason, }).then(res => {
// }).then(res => { if (res.code === 1000) {
// if (res.code === 1000) { history.goBack();
// history.goBack(); }
// } }).finally(() => {
// }).finally(() => { setSubmitLoading(false);
// setSubmitLoading(false); });
// });
}; };
const handleVisible = flag => { const handleVisible = flag => {
...@@ -38,7 +39,15 @@ const ReturnPrReceivedVerify: React.FC = () => { ...@@ -38,7 +39,15 @@ const ReturnPrReceivedVerify: React.FC = () => {
<> <>
<DetailInfo <DetailInfo
id={id} id={id}
headExtra={() => ( headExtra={info => {
const detailed = info || {};
// @ts-ignore
const { manualReturnGoodsAddress = {} } = detailed;
return (
<>
{(info && info.taskType === RETURN_GOODS_MANUAL_DELIVERY) && (
<>
<Button <Button
type="default" type="default"
icon={<SettingOutlined />} icon={<SettingOutlined />}
...@@ -46,10 +55,15 @@ const ReturnPrReceivedVerify: React.FC = () => { ...@@ -46,10 +55,15 @@ const ReturnPrReceivedVerify: React.FC = () => {
> >
手工确认退货收货 手工确认退货收货
</Button> </Button>
)}
/>
<ManualDeliveryModal <ManualDeliveryModal
key="2"
value={{
deliveryAddressTxt: manualReturnGoodsAddress.deliveryAddress,
deliveryTime: manualReturnGoodsAddress.deliveryTime,
logisticsOrderNo: manualReturnGoodsAddress.logisticsOrderNo,
logisticsNameTxt: manualReturnGoodsAddress.logisticsName,
}}
visible={modalVisible} visible={modalVisible}
confirmLoading={submitLoading} confirmLoading={submitLoading}
onSubmit={handleSubmit} onSubmit={handleSubmit}
...@@ -57,6 +71,13 @@ const ReturnPrReceivedVerify: React.FC = () => { ...@@ -57,6 +71,13 @@ const ReturnPrReceivedVerify: React.FC = () => {
isEdit={false} isEdit={false}
/> />
</> </>
)}
</>
)
}}
/>
</>
); );
}; };
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: XieZhiXiong * @Author: XieZhiXiong
* @Date: 2020-11-04 17:22:07 * @Date: 2020-11-04 17:22:07
* @LastEditors: XieZhiXiong * @LastEditors: XieZhiXiong
* @LastEditTime: 2020-12-08 14:51:53 * @LastEditTime: 2020-12-14 18:07:20
* @Description: * @Description:
*/ */
import React, { useState } from 'react'; import React, { useState } from 'react';
...@@ -47,7 +47,7 @@ const ReturnPrSubmitVerify: React.FC = () => { ...@@ -47,7 +47,7 @@ const ReturnPrSubmitVerify: React.FC = () => {
PublicApi.postAsReturnGoodsSubmitVerify({ PublicApi.postAsReturnGoodsSubmitVerify({
applyId: id, applyId: id,
...values, ...values,
...returnAddress, ...(returnAddress || {}),
}).then(res => { }).then(res => {
if (res.code === 1000) { if (res.code === 1000) {
history.goBack(); history.goBack();
...@@ -66,12 +66,14 @@ const ReturnPrSubmitVerify: React.FC = () => { ...@@ -66,12 +66,14 @@ const ReturnPrSubmitVerify: React.FC = () => {
message.error('请选择退货收货地址'); message.error('请选择退货收货地址');
return; return;
} }
if (returnAddress) {
setReturnAddress({ setReturnAddress({
receiveId: returnAddress.id, receiveId: returnAddress.id,
receiveAddress: returnAddress.receiveAddress, receiveAddress: returnAddress.receiveAddress,
receiveUserName: returnAddress.receiveUserName, receiveUserName: returnAddress.receiveUserName,
receiveUserTel: returnAddress.receiveUserTel, receiveUserTel: returnAddress.receiveUserTel,
}); });
}
setVisible(true); setVisible(true);
}; };
......
...@@ -748,7 +748,6 @@ const BillsForm: React.FC<BillsFormProps> = ({ ...@@ -748,7 +748,6 @@ const BillsForm: React.FC<BillsFormProps> = ({
} }
PublicApi.postOrderPurchaseReceiptAdd({ PublicApi.postOrderPurchaseReceiptAdd({
...rest, ...rest,
invoicesTypeCode: invoicesTypeCode,
orderNo: orderNo[0].orderNo, orderNo: orderNo[0].orderNo,
relevanceInvoicesId: orderNo[0].id, relevanceInvoicesId: orderNo[0].id,
transactionTime: newTransactionTime, transactionTime: newTransactionTime,
...@@ -850,7 +849,6 @@ const BillsForm: React.FC<BillsFormProps> = ({ ...@@ -850,7 +849,6 @@ const BillsForm: React.FC<BillsFormProps> = ({
} }
PublicApi.postOrderSalesInvoiceOrder({ PublicApi.postOrderSalesInvoiceOrder({
...rest, ...rest,
invoicesTypeCode: invoicesTypeCode,
orderNo: orderNo[0].orderNo, orderNo: orderNo[0].orderNo,
relevanceInvoicesId: orderNo[0].id, relevanceInvoicesId: orderNo[0].id,
transactionTime: newTransactionTime, 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