Commit 315e744f authored by 前端-许佳敏's avatar 前端-许佳敏
parents 2a5ae68a 93cdbde3
...@@ -734,9 +734,9 @@ export const InquiryStateTexts = { ...@@ -734,9 +734,9 @@ export const InquiryStateTexts = {
*/ */
export const REPAIR_INNER_STATUS_UNCOMMITTED = 1; export const REPAIR_INNER_STATUS_UNCOMMITTED = 1;
/** /**
* 已提交 * 审核通过(提交)
*/ */
export const REPAIR_INNER_STATUS_COMMITTED = 2; export const REPAIR_INNER_STATUS_COMMIT_SUCCESS = 2;
/** /**
* 一级审核通过 * 一级审核通过
*/ */
...@@ -746,9 +746,9 @@ export const REPAIR_INNER_STATUS_SUCCESS_1 = 3; ...@@ -746,9 +746,9 @@ export const REPAIR_INNER_STATUS_SUCCESS_1 = 3;
*/ */
export const REPAIR_INNER_STATUS_SUCCESS_2 = 4; export const REPAIR_INNER_STATUS_SUCCESS_2 = 4;
/** /**
* 审核不通过(不接受申请) * 二级审核不通过
*/ */
export const REPAIR_INNER_STATUS_FAILED = 5; export const REPAIR_INNER_STATUS_FAILED_2 = 5;
/** /**
* 确认审核通过 * 确认审核通过
*/ */
...@@ -761,15 +761,25 @@ export const REPAIR_INNER_STATUS_CONFIRM_FAILED = 7; ...@@ -761,15 +761,25 @@ export const REPAIR_INNER_STATUS_CONFIRM_FAILED = 7;
* 确认售后完成 * 确认售后完成
*/ */
export const REPAIR_INNER_STATUS_FINISHED = 8; export const REPAIR_INNER_STATUS_FINISHED = 8;
/**
* 审核不通过(提交)
*/
export const REPAIR_INNER_STATUS_COMMIT_FAILED = 9;
/**
* 审核不通过(一级)
*/
export const REPAIR_INNER_STATUS_FAILED_1 = 10;
export const REPAIR_INNER_STATUS = { export const REPAIR_INNER_STATUS = {
[REPAIR_INNER_STATUS_UNCOMMITTED]: '待提交', [REPAIR_INNER_STATUS_UNCOMMITTED]: '待提交',
[REPAIR_INNER_STATUS_COMMITTED]: '已提交', [REPAIR_INNER_STATUS_COMMIT_SUCCESS]: '审核通过(提交)',
[REPAIR_INNER_STATUS_SUCCESS_1]: '一级审核通过', [REPAIR_INNER_STATUS_SUCCESS_1]: '一级审核通过',
[REPAIR_INNER_STATUS_SUCCESS_2]: '二级审核通过', [REPAIR_INNER_STATUS_SUCCESS_2]: '二级审核通过',
[REPAIR_INNER_STATUS_FAILED]: '审核不通过', [REPAIR_INNER_STATUS_FAILED_2]: '二级审核不通过',
[REPAIR_INNER_STATUS_CONFIRM_SUCCESS]: '确认审核通过', [REPAIR_INNER_STATUS_CONFIRM_SUCCESS]: '确认审核通过',
[REPAIR_INNER_STATUS_CONFIRM_FAILED]: '确认审核不通过', [REPAIR_INNER_STATUS_CONFIRM_FAILED]: '确认审核不通过',
[REPAIR_INNER_STATUS_FINISHED]: '确认售后完成', [REPAIR_INNER_STATUS_FINISHED]: '确认售后完成',
[REPAIR_INNER_STATUS_COMMIT_FAILED]: '审核不通过(提交)',
[REPAIR_INNER_STATUS_FAILED_1]: '审核不通过(一级)',
}; };
// 售后维修外部状态 // 售后维修外部状态
...@@ -807,9 +817,9 @@ export const REPAIR_OUTER_STATUS = { ...@@ -807,9 +817,9 @@ export const REPAIR_OUTER_STATUS = {
*/ */
export const EXCHANGE_INNER_STATUS_UNCOMMITTED = 1; export const EXCHANGE_INNER_STATUS_UNCOMMITTED = 1;
/** /**
* 已提交 * 审核通过(提交)
*/ */
export const EXCHANGE_INNER_STATUS_COMMITTED = 2; export const EXCHANGE_INNER_STATUS_COMMIT_SUCCESS = 2;
/** /**
* 一级审核通过 * 一级审核通过
*/ */
...@@ -910,9 +920,29 @@ export const EXCHANGE_INNER_STATUS_UNCONFIRMED_FINISHED = 26; ...@@ -910,9 +920,29 @@ export const EXCHANGE_INNER_STATUS_UNCONFIRMED_FINISHED = 26;
* 已确认售后完成 * 已确认售后完成
*/ */
export const EXCHANGE_INNER_STATUS_FINISHED = 27; export const EXCHANGE_INNER_STATUS_FINISHED = 27;
/**
* 不接受退货物流单
*/
export const EXCHANGE_INNER_STATUS_UNACCEPTED_RETURN_LOGISTICS = 28;
/**
* 不接受换货物流单
*/
export const EXCHANGE_INNER_STATUS_UNACCEPTED_RETURN_EXCHANGE = 29;
/**
* 审核不通过(提交)
*/
export const EXCHANGE_INNER_STATUS_COMMIT_FAILED = 30;
/**
* 审核不通过(一级)
*/
export const EXCHANGE_INNER_STATUS_FAILED_1 = 31;
/**
* 审核不通过(二级)
*/
export const EXCHANGE_INNER_STATUS_FAILED_2 = 32;
export const EXCHANGE_INNER_STATUS = { export const EXCHANGE_INNER_STATUS = {
[EXCHANGE_INNER_STATUS_UNCOMMITTED]: '待提交', [EXCHANGE_INNER_STATUS_UNCOMMITTED]: '待提交',
[EXCHANGE_INNER_STATUS_COMMITTED]: '已提交', [EXCHANGE_INNER_STATUS_COMMIT_SUCCESS]: '审核通过(提交)',
[EXCHANGE_INNER_STATUS_SUCCESS_1]: '一级审核通过', [EXCHANGE_INNER_STATUS_SUCCESS_1]: '一级审核通过',
[EXCHANGE_INNER_STATUS_SUCCESS_2]: '二级审核通过', [EXCHANGE_INNER_STATUS_SUCCESS_2]: '二级审核通过',
[EXCHANGE_INNER_STATUS_FAILED]: '审核不通过', [EXCHANGE_INNER_STATUS_FAILED]: '审核不通过',
...@@ -938,6 +968,11 @@ export const EXCHANGE_INNER_STATUS = { ...@@ -938,6 +968,11 @@ export const EXCHANGE_INNER_STATUS = {
[EXCHANGE_INNER_STATUS_UNCONFIRMED_REPLACE_RECEIPT]: '待确认换货回单', [EXCHANGE_INNER_STATUS_UNCONFIRMED_REPLACE_RECEIPT]: '待确认换货回单',
[EXCHANGE_INNER_STATUS_UNCONFIRMED_FINISHED]: '待确认售后完成', [EXCHANGE_INNER_STATUS_UNCONFIRMED_FINISHED]: '待确认售后完成',
[EXCHANGE_INNER_STATUS_FINISHED]: '已确认售后完成', [EXCHANGE_INNER_STATUS_FINISHED]: '已确认售后完成',
[EXCHANGE_INNER_STATUS_UNACCEPTED_RETURN_LOGISTICS]: '不接受退货物流单',
[EXCHANGE_INNER_STATUS_UNACCEPTED_RETURN_EXCHANGE]: '不接受换货物流单',
[EXCHANGE_INNER_STATUS_COMMIT_FAILED]: '审核不通过(提交)',
[EXCHANGE_INNER_STATUS_FAILED_1]: '审核不通过(一级)',
[EXCHANGE_INNER_STATUS_FAILED_2]: '审核不通过(二级)',
}; };
// 售后换货外部状态 // 售后换货外部状态
...@@ -1036,13 +1071,13 @@ export const EXCHANGE_OUTER_STATUS = { ...@@ -1036,13 +1071,13 @@ export const EXCHANGE_OUTER_STATUS = {
// 售后退货内部状态 // 售后退货内部状态
/** /**
* 待提交 * 待提交退
*/ */
export const RETURN_INNER_STATUS_UNCOMMITTED = 1; export const RETURN_INNER_STATUS_UNCOMMITTED = 1;
/** /**
* 已提交 * 审核通过(提交)
*/ */
export const RETURN_INNER_STATUS_COMMITTED = 2; export const RETURN_INNER_STATUS_COMMIT_SUCCESS = 2;
/** /**
* 一级审核通过 * 一级审核通过
*/ */
...@@ -1052,9 +1087,9 @@ export const RETURN_INNER_STATUS_SUCCESS_1 = 3; ...@@ -1052,9 +1087,9 @@ export const RETURN_INNER_STATUS_SUCCESS_1 = 3;
*/ */
export const RETURN_INNER_STATUS_SUCCESS_2 = 4; export const RETURN_INNER_STATUS_SUCCESS_2 = 4;
/** /**
* 审核不通过(不接受申请) * 审核不通过(二级)
*/ */
export const RETURN_INNER_STATUS_FAILED = 5; export const RETURN_INNER_STATUS_FAILED_2 = 5;
/** /**
* 确认审核通过 * 确认审核通过
*/ */
...@@ -1123,12 +1158,24 @@ export const RETURN_INNER_STATUS_UNCONFIRMED_FINISHED = 21; ...@@ -1123,12 +1158,24 @@ export const RETURN_INNER_STATUS_UNCONFIRMED_FINISHED = 21;
* 已确认售后完成 * 已确认售后完成
*/ */
export const RETURN_INNER_STATUS_FINISHED = 22; export const RETURN_INNER_STATUS_FINISHED = 22;
/**
* 不接受物流单
*/
export const RETURN_INNER_STATUS_UNACCEPTED_LOGISTICS = 23;
/**
* 审核不通过(提交)
*/
export const RETURN_INNER_STATUS_COMMIT_FAILED = 24;
/**
* 审核不通过(一级)
*/
export const RETURN_INNER_STATUS_FAILED_1 = 25;
export const RETURN_INNER_STATUS = { export const RETURN_INNER_STATUS = {
[RETURN_INNER_STATUS_UNCOMMITTED]: '待提交', [RETURN_INNER_STATUS_UNCOMMITTED]: '待提交',
[RETURN_INNER_STATUS_COMMITTED]: '已提交', [RETURN_INNER_STATUS_COMMIT_SUCCESS]: '审核通过(提交)',
[RETURN_INNER_STATUS_SUCCESS_1]: '一级审核通过', [RETURN_INNER_STATUS_SUCCESS_1]: '一级审核通过',
[RETURN_INNER_STATUS_SUCCESS_2]: '二级审核通过', [RETURN_INNER_STATUS_SUCCESS_2]: '二级审核通过',
[RETURN_INNER_STATUS_FAILED]: '审核不通过', [RETURN_INNER_STATUS_FAILED_2]: '二级审核不通过',
[RETURN_INNER_STATUS_CONFIRM_SUCCESS]: '确认审核通过', [RETURN_INNER_STATUS_CONFIRM_SUCCESS]: '确认审核通过',
[RETURN_INNER_STATUS_CONFIRM_FAILED]: '确认审核不通过', [RETURN_INNER_STATUS_CONFIRM_FAILED]: '确认审核不通过',
[RETURN_INNER_STATUS_NOT_ADDED_RETURN_DELIVERY]: '待新增退货发货单', [RETURN_INNER_STATUS_NOT_ADDED_RETURN_DELIVERY]: '待新增退货发货单',
...@@ -1146,6 +1193,9 @@ export const RETURN_INNER_STATUS = { ...@@ -1146,6 +1193,9 @@ export const RETURN_INNER_STATUS = {
[RETURN_INNER_STATUS_REFUNDED_SUCCESS]: '待确认退款', [RETURN_INNER_STATUS_REFUNDED_SUCCESS]: '待确认退款',
[RETURN_INNER_STATUS_UNCONFIRMED_FINISHED]: '待确认售后完成', [RETURN_INNER_STATUS_UNCONFIRMED_FINISHED]: '待确认售后完成',
[RETURN_INNER_STATUS_FINISHED]: '已确认售后完成', [RETURN_INNER_STATUS_FINISHED]: '已确认售后完成',
[RETURN_INNER_STATUS_UNACCEPTED_LOGISTICS]: '不接受物流单',
[RETURN_INNER_STATUS_COMMIT_FAILED]: '审核不通过(提交)',
[RETURN_INNER_STATUS_FAILED_1]: '审核不通过(一级)',
}; };
// 售后退货外部状态 // 售后退货外部状态
......
...@@ -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-04 18:04:07 * @LastEditTime: 2021-02-02 10:26:13
* @Description: 换货收货地址 * @Description: 换货收货地址
*/ */
import React from 'react'; import React from 'react';
...@@ -64,7 +64,7 @@ interface ExchangeAddressInfo { ...@@ -64,7 +64,7 @@ interface ExchangeAddressInfo {
}, },
// onSubmit // onSubmit
onSubmit?: (values: Values) => void; onSubmit: (values: Values) => void;
}; };
const ExchangeAddressInfo: React.FC<ExchangeAddressInfo> = ({ const ExchangeAddressInfo: React.FC<ExchangeAddressInfo> = ({
...@@ -125,6 +125,7 @@ const ExchangeAddressInfo: React.FC<ExchangeAddressInfo> = ({ ...@@ -125,6 +125,7 @@ const ExchangeAddressInfo: React.FC<ExchangeAddressInfo> = ({
shippingAddress: shippingAddress.id, shippingAddress: shippingAddress.id,
pickupAddress: shippingAddress.id, pickupAddress: shippingAddress.id,
}} }}
previewPlaceholder=" "
expressionScope={{ expressionScope={{
Address, Address,
ShippingAddress, ShippingAddress,
...@@ -136,7 +137,7 @@ const ExchangeAddressInfo: React.FC<ExchangeAddressInfo> = ({ ...@@ -136,7 +137,7 @@ const ExchangeAddressInfo: React.FC<ExchangeAddressInfo> = ({
// 联动配送方式 // 联动配送方式
onFieldValueChange$('deliveryType').subscribe(fieldState => { onFieldValueChange$('deliveryType').subscribe(fieldState => {
const { name, value } = fieldState; const { value } = fieldState;
switch (value) { switch (value) {
// 物流 // 物流
...@@ -172,10 +173,28 @@ const ExchangeAddressInfo: React.FC<ExchangeAddressInfo> = ({ ...@@ -172,10 +173,28 @@ const ExchangeAddressInfo: React.FC<ExchangeAddressInfo> = ({
default: default:
break break
}; };
if (onSubmit) {
onSubmit({
deliveryType: value,
id: undefined,
isDefault: undefined,
sendAddress: undefined,
sendUserName: undefined,
sendUserTel: undefined,
});
}
});
onFieldInputChange$('deliveryType').subscribe(fieldState => {
const { name, value } = fieldState;
if (value) {
linkage.value('*(shippingAddress,pickupAddress)', undefined);
}
}); });
onFieldValueChange$('*(shippingAddress,pickupAddress)').subscribe(fieldState => { onFieldInputChange$('*(shippingAddress,pickupAddress)').subscribe(fieldState => {
const { name, value, originAsyncData = [] } = fieldState; const { value, originAsyncData = [] } = fieldState;
const deliveryTypeValue = getFieldValue('deliveryType'); const deliveryTypeValue = getFieldValue('deliveryType');
const fullData = originAsyncData.find(item => item.id === value); const fullData = originAsyncData.find(item => item.id === value);
...@@ -195,6 +214,7 @@ const ExchangeAddressInfo: React.FC<ExchangeAddressInfo> = ({ ...@@ -195,6 +214,7 @@ const ExchangeAddressInfo: React.FC<ExchangeAddressInfo> = ({
actions={modalFormActions} actions={modalFormActions}
schema={schema} schema={schema}
onSubmit={handleSubmit} onSubmit={handleSubmit}
colon
/> />
</MellowCard> </MellowCard>
); );
......
/* /*
* @Author: XieZhiXiong * @Author: XieZhiXiong
* @Date: 2020-11-09 15:56:35 * @Date: 2020-11-09 15:56:35
* @LastEditors: XieZhiXiong * @LastEditors: XieZhiXiong
* @LastEditTime: 2020-11-25 15:19:36 * @LastEditTime: 2021-01-21 14:14:26
* @Description: * @Description:
*/ */
import { ISchema } from '@formily/antd'; import { ISchema } from '@formily/antd';
import { UPLOAD_TYPE, DELIVERY_TYPE_ENUM } from '@/constants'; import { DELIVERY_TYPE_ENUM } from '@/constants';
export const schema: ISchema = { export const schema: ISchema = {
type: 'object', type: 'object',
properties: { properties: {
MEGA_LAYOUT: { MEGA_LAYOUT: {
type: 'object', type: 'object',
'x-component': 'mega-layout', 'x-component': 'mega-layout',
'x-component-props': { 'x-component-props': {
labelCol: 8, labelCol: 6,
wrapperCol: 16, wrapperCol: 16,
labelAlign: 'left', labelAlign: 'left',
}, },
properties: { properties: {
deliveryType: { deliveryType: {
title: '配送方式', title: '配送方式',
type: 'string', type: 'string',
default: 1, enum: DELIVERY_TYPE_ENUM,
enum: DELIVERY_TYPE_ENUM, 'x-component-props': {
'x-component-props': { placeholder: '请选择',
style: { style: {
width: '80%', width: '80%',
}, },
}, },
}, 'x-rules': [
deliveryAddress: { {
type: 'object', required: true,
title: '换货收货地址', message: '请选择配送方式',
'x-component': 'Children', },
'x-component-props': { ],
children: '{{Address}}', },
}, deliveryAddress: {
}, type: 'object',
shippingAddress: { title: '换货收货地址',
type: 'string', 'x-component': 'Children',
title: '换货发货地址', 'x-component-props': {
enum: [], children: '{{Address}}',
'x-component-props': { },
placeholder: '请选择', },
style: { shippingAddress: {
width: '80%', type: 'string',
}, title: '换货发货地址',
}, visible: false,
'x-rules': [ enum: [],
{ 'x-component-props': {
required: true, placeholder: '请选择',
message: '请选择换货发货地址', style: {
}, width: '80%',
], },
}, },
pickupAddress: { 'x-rules': [
type: 'string', {
title: '换货自提地址', required: true,
enum: [], message: '请选择换货发货地址',
'x-component-props': { },
placeholder: '请选择', ],
style: { },
width: '80%', pickupAddress: {
}, type: 'string',
}, title: '换货自提地址',
'x-rules': [ visible: false,
{ enum: [],
required: true, 'x-component-props': {
message: '请选择换货自提地址', placeholder: '请选择',
}, style: {
], width: '80%',
}, },
shippingAddressShow: { },
type: 'object', 'x-rules': [
title: '换货发货地址', {
visible: false, required: true,
'x-component': 'Children', message: '请选择换货自提地址',
'x-component-props': { },
children: '{{ShippingAddress}}', ],
}, },
}, shippingAddressShow: {
}, type: 'object',
}, title: '换货发货地址',
}, visible: false,
'x-component': 'Children',
'x-component-props': {
children: '{{ShippingAddress}}',
},
},
},
},
},
}; };
\ No newline at end of file
...@@ -38,30 +38,12 @@ interface ExchangeDeliverInfoProps { ...@@ -38,30 +38,12 @@ interface ExchangeDeliverInfoProps {
* 是否是采购商 * 是否是采购商
*/ */
isPurchaser?: boolean; isPurchaser?: boolean;
/**
* 确认退货回单
*/
onConfirmExchangeBack?: (id: number) => void;
/**
* 确认退货发货
*/
onConfirmExchangeDeliver?: (id: number) => Promise<any>;
/**
* 确认退货收货
*/
onConfirmExchangeReceive?: (id: number) => Promise<any>;
}; };
const ExchangeDeliverInfo: React.FC<ExchangeDeliverInfoProps> = ({ const ExchangeDeliverInfo: React.FC<ExchangeDeliverInfoProps> = ({
summary = [], summary = [],
detailed = [], detailed = [],
isPurchaser = false, isPurchaser = false,
onConfirmExchangeBack,
onConfirmExchangeDeliver,
onConfirmExchangeReceive,
}) => { }) => {
const summaryColumns: EditableColumns[] = [ const summaryColumns: EditableColumns[] = [
...@@ -78,6 +60,7 @@ const ExchangeDeliverInfo: React.FC<ExchangeDeliverInfoProps> = ({ ...@@ -78,6 +60,7 @@ const ExchangeDeliverInfo: React.FC<ExchangeDeliverInfoProps> = ({
title: '商品名称', title: '商品名称',
dataIndex: 'productName', dataIndex: 'productName',
align: 'center', align: 'center',
ellipsis: true,
}, },
{ {
title: '品类', title: '品类',
...@@ -135,6 +118,7 @@ const ExchangeDeliverInfo: React.FC<ExchangeDeliverInfoProps> = ({ ...@@ -135,6 +118,7 @@ const ExchangeDeliverInfo: React.FC<ExchangeDeliverInfoProps> = ({
title: '商品名称', title: '商品名称',
dataIndex: 'productName', dataIndex: 'productName',
align: 'center', align: 'center',
ellipsis: true,
}, },
{ {
title: '品类', title: '品类',
...@@ -177,38 +161,6 @@ const ExchangeDeliverInfo: React.FC<ExchangeDeliverInfoProps> = ({ ...@@ -177,38 +161,6 @@ const ExchangeDeliverInfo: React.FC<ExchangeDeliverInfoProps> = ({
}; };
const handleConfirmExchangeDeliver = (id) => {
if (onConfirmExchangeDeliver) {
confirm({
title: '提示',
icon: <ExclamationCircleOutlined />,
content: `是否确认换货发货?`,
onOk() {
return onConfirmExchangeDeliver(id);
},
});
}
};
const handleConfirmExchangeReceive = (id) => {
if (onConfirmExchangeReceive) {
confirm({
title: '提示',
icon: <ExclamationCircleOutlined />,
content: `是否确认换货收货?`,
onOk() {
return onConfirmExchangeReceive(id);
},
});
}
};
const handleConfirmExchangeBack = (id) => {
if (onConfirmExchangeBack) {
onConfirmExchangeBack(id);
}
};
return ( return (
<MellowCard> <MellowCard>
<Tabs defaultActiveKey="2"> <Tabs defaultActiveKey="2">
...@@ -268,39 +220,7 @@ const ExchangeDeliverInfo: React.FC<ExchangeDeliverInfoProps> = ({ ...@@ -268,39 +220,7 @@ const ExchangeDeliverInfo: React.FC<ExchangeDeliverInfoProps> = ({
<Badge color={'#6C9CEB'} text={item.innerStatusName} /> <Badge color={'#6C9CEB'} text={item.innerStatusName} />
</Descriptions.Item> </Descriptions.Item>
<Descriptions.Item> <Descriptions.Item>
{item.innerStatus === MAIL_INNER_STATUS_UNCONFIRMED_DELIVER && (
<a
style={{
textAlign: 'right',
display: 'block',
}}
onClick={() => handleConfirmExchangeDeliver(item.deliveryId)}
>
确认换货发货
</a>
)}
{item.innerStatus === MAIL_INNER_STATUS_CONFIRMED_DELIVER && (
<a
style={{
textAlign: 'right',
display: 'block',
}}
onClick={() => handleConfirmExchangeReceive(item.deliveryId)}
>
确认换货收货
</a>
)}
{item.innerStatus === MAIL_INNER_STATUS_CONFIRMED_RECEIVING && (
<a
style={{
textAlign: 'right',
display: 'block',
}}
onClick={() => handleConfirmExchangeBack(item.deliveryId)}
>
确认换货回单
</a>
)}
</Descriptions.Item> </Descriptions.Item>
</Descriptions> </Descriptions>
</Col> </Col>
......
...@@ -79,6 +79,7 @@ const ExchangeReceivedInfo: React.FC<ExchangeReceivedInfoProps> = ({ ...@@ -79,6 +79,7 @@ const ExchangeReceivedInfo: React.FC<ExchangeReceivedInfoProps> = ({
title: '商品名称', title: '商品名称',
dataIndex: 'productName', dataIndex: 'productName',
align: 'center', align: 'center',
ellipsis: true,
}, },
{ {
title: '品类', title: '品类',
...@@ -136,6 +137,7 @@ const ExchangeReceivedInfo: React.FC<ExchangeReceivedInfoProps> = ({ ...@@ -136,6 +137,7 @@ const ExchangeReceivedInfo: React.FC<ExchangeReceivedInfoProps> = ({
title: '商品名称', title: '商品名称',
dataIndex: 'productName', dataIndex: 'productName',
align: 'center', align: 'center',
ellipsis: true,
}, },
{ {
title: '品类', title: '品类',
...@@ -276,39 +278,7 @@ const ExchangeReceivedInfo: React.FC<ExchangeReceivedInfoProps> = ({ ...@@ -276,39 +278,7 @@ const ExchangeReceivedInfo: React.FC<ExchangeReceivedInfoProps> = ({
<Badge color={'#6C9CEB'} text={item.innerStatusName} /> <Badge color={'#6C9CEB'} text={item.innerStatusName} />
</Descriptions.Item> </Descriptions.Item>
<Descriptions.Item> <Descriptions.Item>
{item.innerStatus === MAIL_INNER_STATUS_UNCONFIRMED_DELIVER && (
<a
style={{
textAlign: 'right',
display: 'block',
}}
onClick={() => handleConfirmReturnDeliver(item.deliveryId)}
>
确认退货发货
</a>
)}
{item.innerStatus === MAIL_INNER_STATUS_CONFIRMED_DELIVER && (
<a
style={{
textAlign: 'right',
display: 'block',
}}
onClick={() => handleConfirmReturnReceive(item.deliveryId)}
>
确认退货收货
</a>
)}
{item.innerStatus === MAIL_INNER_STATUS_CONFIRMED_RECEIVING && (
<a
style={{
textAlign: 'right',
display: 'block',
}}
onClick={() => handleConfirmReturnBack(item.deliveryId)}
>
确认退货回单
</a>
)}
</Descriptions.Item> </Descriptions.Item>
</Descriptions> </Descriptions>
</Col> </Col>
......
This diff is collapsed.
...@@ -121,6 +121,7 @@ const DetailInfo: React.FC = () => { ...@@ -121,6 +121,7 @@ const DetailInfo: React.FC = () => {
title: '商品名称', title: '商品名称',
dataIndex: 'productName', dataIndex: 'productName',
align: 'center', align: 'center',
ellipsis: true,
}, },
{ {
title: '品类', title: '品类',
......
/* /*
* @Author: XieZhiXiong * @Author: XieZhiXiong
* @Date: 2020-12-18 16:55:17 * @Date: 2020-12-18 16:55:17
* @LastEditors: XieZhiXiong * @LastEditors: XieZhiXiong
* @LastEditTime: 2020-12-18 16:55:17 * @LastEditTime: 2021-02-02 10:27:36
* @Description: * @Description:
*/ */
import { import {
REPAIR_OUTER_STATUS_UNCOMMITTED, REPAIR_OUTER_STATUS_UNCOMMITTED,
REPAIR_OUTER_STATUS_UNCONFIRMED, REPAIR_OUTER_STATUS_UNCONFIRMED,
REPAIR_OUTER_STATUS_FAILED, REPAIR_OUTER_STATUS_FAILED,
REPAIR_OUTER_STATUS_SUCCESS, REPAIR_OUTER_STATUS_SUCCESS,
REPAIR_OUTER_STATUS_FINISHED, REPAIR_OUTER_STATUS_FINISHED,
REPAIR_INNER_STATUS_UNCOMMITTED, REPAIR_INNER_STATUS_UNCOMMITTED,
REPAIR_INNER_STATUS_COMMITTED, REPAIR_INNER_STATUS_COMMIT_SUCCESS,
REPAIR_INNER_STATUS_SUCCESS_1, REPAIR_INNER_STATUS_SUCCESS_1,
REPAIR_INNER_STATUS_SUCCESS_2, REPAIR_INNER_STATUS_SUCCESS_2,
REPAIR_INNER_STATUS_FAILED, REPAIR_INNER_STATUS_FAILED_2,
REPAIR_INNER_STATUS_CONFIRM_SUCCESS, REPAIR_INNER_STATUS_CONFIRM_SUCCESS,
REPAIR_INNER_STATUS_CONFIRM_FAILED, REPAIR_INNER_STATUS_CONFIRM_FAILED,
REPAIR_INNER_STATUS_FINISHED, REPAIR_INNER_STATUS_FINISHED,
} from '@/constants'; REPAIR_INNER_STATUS_COMMIT_FAILED,
REPAIR_INNER_STATUS_FAILED_1,
// 售后维修外部状态 StatusTag map } from '@/constants';
export const REPAIR_OUTER_STATUS_TAG_MAP = {
[REPAIR_OUTER_STATUS_UNCOMMITTED]: 'default', // 售后维修外部状态 StatusTag map
[REPAIR_OUTER_STATUS_UNCONFIRMED]: 'success', export const REPAIR_OUTER_STATUS_TAG_MAP = {
[REPAIR_OUTER_STATUS_FAILED]: 'danger', [REPAIR_OUTER_STATUS_UNCOMMITTED]: 'default',
[REPAIR_OUTER_STATUS_SUCCESS]: 'primary', [REPAIR_OUTER_STATUS_UNCONFIRMED]: 'success',
[REPAIR_OUTER_STATUS_FINISHED]: 'success', [REPAIR_OUTER_STATUS_FAILED]: 'danger',
}; [REPAIR_OUTER_STATUS_SUCCESS]: 'primary',
[REPAIR_OUTER_STATUS_FINISHED]: 'success',
// 售后维修内部部状态 Badge map };
export const REPAIR_INNER_STATUS_BADGE_MAP = {
[REPAIR_INNER_STATUS_UNCOMMITTED]: '#669EDE', // 售后维修内部部状态 Badge map
[REPAIR_INNER_STATUS_COMMITTED]: '#41CC9E', export const REPAIR_INNER_STATUS_BADGE_MAP = {
[REPAIR_INNER_STATUS_SUCCESS_1]: '#41CC9E', [REPAIR_INNER_STATUS_UNCOMMITTED]: '#669EDE',
[REPAIR_INNER_STATUS_SUCCESS_2]: '#41CC9E', [REPAIR_INNER_STATUS_COMMIT_SUCCESS]: '#41CC9E',
[REPAIR_INNER_STATUS_FAILED]: '#EF6260', [REPAIR_INNER_STATUS_SUCCESS_1]: '#41CC9E',
[REPAIR_INNER_STATUS_CONFIRM_SUCCESS]: '#6C9CEB', [REPAIR_INNER_STATUS_SUCCESS_2]: '#41CC9E',
[REPAIR_INNER_STATUS_CONFIRM_FAILED]: '#EF6260', [REPAIR_INNER_STATUS_FAILED_2]: '#EF6260',
[REPAIR_INNER_STATUS_FINISHED]: '#41CC9E', [REPAIR_INNER_STATUS_CONFIRM_SUCCESS]: '#6C9CEB',
[REPAIR_INNER_STATUS_CONFIRM_FAILED]: '#EF6260',
[REPAIR_INNER_STATUS_FINISHED]: '#41CC9E',
[REPAIR_INNER_STATUS_COMMIT_FAILED]: '#EF6260',
[REPAIR_INNER_STATUS_FAILED_1]: '#EF6260',
}; };
\ No newline at end of file
...@@ -67,6 +67,7 @@ const DetailInfo: React.FC = () => { ...@@ -67,6 +67,7 @@ const DetailInfo: React.FC = () => {
title: '商品名称', title: '商品名称',
dataIndex: 'productName', dataIndex: 'productName',
align: 'center', align: 'center',
ellipsis: true,
}, },
{ {
title: '品类', title: '品类',
......
...@@ -60,6 +60,10 @@ interface DetailInfoProps { ...@@ -60,6 +60,10 @@ interface DetailInfoProps {
*/ */
id: string; id: string;
/** /**
* 是否是编辑的
*/
isEdit?: boolean;
/**
* 历史记录目标路径 * 历史记录目标路径
*/ */
target?: string; target?: string;
...@@ -71,6 +75,7 @@ interface DetailInfoProps { ...@@ -71,6 +75,7 @@ interface DetailInfoProps {
const DetailInfo: React.FC<DetailInfoProps> = ({ const DetailInfo: React.FC<DetailInfoProps> = ({
id, id,
isEdit = false,
target = '/returnManage/query/orderDetail', target = '/returnManage/query/orderDetail',
isPurchaser = false, isPurchaser = false,
}) => { }) => {
...@@ -123,6 +128,7 @@ const DetailInfo: React.FC<DetailInfoProps> = ({ ...@@ -123,6 +128,7 @@ const DetailInfo: React.FC<DetailInfoProps> = ({
title: '商品名称', title: '商品名称',
dataIndex: 'productName', dataIndex: 'productName',
align: 'center', align: 'center',
ellipsis: true,
}, },
{ {
title: '品类', title: '品类',
...@@ -404,9 +410,10 @@ const DetailInfo: React.FC<DetailInfoProps> = ({ ...@@ -404,9 +410,10 @@ const DetailInfo: React.FC<DetailInfoProps> = ({
dataSource={detailInfo && detailInfo.refundList ? detailInfo.refundList : []} dataSource={detailInfo && detailInfo.refundList ? detailInfo.refundList : []}
onRefund={handleRefund} onRefund={handleRefund}
isPurchaser={isPurchaser} isPurchaser={isPurchaser}
innerStatus={detailInfo?.innerStatus} outerStatus={detailInfo?.outerStatus}
purchaserId={detailInfo?.memberId} purchaserId={detailInfo?.memberId}
purchaserRoleId={detailInfo?.roleId} purchaserRoleId={detailInfo?.roleId}
isEdit={isEdit}
/> />
</Suspense> </Suspense>
</Col> </Col>
......
import { ISchema } from '@formily/antd'; /*
import { UPLOAD_TYPE } from '@/constants'; * @Author: XieZhiXiong
* @Date: 2020-12-18 17:44:26
export const uploadVoucherModalSchema: ISchema = { * @LastEditors: XieZhiXiong
type: 'object', * @LastEditTime: 2021-02-02 10:12:20
properties: { * @Description:
MEGA_LAYOUT: { */
type: 'object', import { ISchema } from '@formily/antd';
'x-component': 'mega-layout', import { UPLOAD_TYPE } from '@/constants';
'x-component-props': {
labelCol: 6, export const uploadVoucherModalSchema: ISchema = {
wrapperCol: 18, type: 'object',
labelAlign: 'left', properties: {
full: true, MEGA_LAYOUT: {
}, type: 'object',
properties: { 'x-component': 'mega-layout',
name: { 'x-component-props': {
type: 'string', labelCol: 6,
title: '账户名称', wrapperCol: 18,
'x-component': 'Text', labelAlign: 'left',
}, full: true,
bankAccount: { },
type: 'string', properties: {
title: '银行账号', name: {
'x-component': 'Text', type: 'string',
}, title: '账户名称',
bankDeposit: { 'x-component': 'Text',
type: 'string', },
title: '开户行', bankAccount: {
'x-component': 'Text', type: 'string',
}, title: '银行账号',
fileList: { 'x-component': 'Text',
type: 'string', },
title: '上传退款凭证', bankDeposit: {
'x-component': 'AntUpload', type: 'string',
'x-component-props': { title: '开户行',
action: '/api/file/file/upload/prefix', 'x-component': 'Text',
data: { },
fileType: UPLOAD_TYPE, fileList: {
prefix: '/returnManage/refundVoucher/', type: 'string',
}, title: '上传退款凭证',
beforeUpload: '{{beforeUpload}}', 'x-component': 'AntUpload',
accept: '.png, .jpg, .jpeg', 'x-component-props': {
}, action: '/api/file/file/upload/prefix',
'x-mega-props': { data: {
labelAlign: 'top', fileType: UPLOAD_TYPE,
full: true, prefix: '/returnManage/refundVoucher/',
}, },
'x-rules': [ beforeUpload: '{{beforeUpload}}',
{ accept: '.png, .jpg, .jpeg',
required: false, },
message: '请上传退款凭证', 'x-mega-props': {
}, labelAlign: 'top',
], full: true,
description: '单个凭证文件大小不能超过 200K', },
}, 'x-rules': [
}, {
}, required: true,
}, message: '请上传退款凭证',
},
],
description: '单个凭证文件大小不能超过 200K',
},
},
},
},
}; };
\ No newline at end of file
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: XieZhiXiong * @Author: XieZhiXiong
* @Date: 2020-11-05 18:02:18 * @Date: 2020-11-05 18:02:18
* @LastEditors: XieZhiXiong * @LastEditors: XieZhiXiong
* @LastEditTime: 2021-01-26 17:44:10 * @LastEditTime: 2021-02-02 10:11:08
* @Description: 退款明细 * @Description: 退款明细
*/ */
import React, { useState } from 'react'; import React, { useState } from 'react';
...@@ -18,8 +18,9 @@ import { ...@@ -18,8 +18,9 @@ import {
PAY_CHANNEL_BALANCE, PAY_CHANNEL_BALANCE,
PAY_CHANNEL_CREDIT, PAY_CHANNEL_CREDIT,
PAY_CHANNEL_COD, PAY_CHANNEL_COD,
RETURN_INNER_STATUS_TO_BE_REFUNDED, RETURN_OUTER_STATUS_TO_BE_REFUNDED,
RETURN_INNER_STATUS_UNCONFIRMED_REFUNDED, RETURN_OUTER_STATUS_UNCONFIRMED_REFUNDED,
RETURN_OUTER_STATUS_NOT_RECEIVED,
} from '@/constants'; } from '@/constants';
import Stamp from '../Stamp'; import Stamp from '../Stamp';
import CheckVoucherModal from '../CheckVoucherModal'; import CheckVoucherModal from '../CheckVoucherModal';
...@@ -54,9 +55,9 @@ interface ReturnDetailInfoProps { ...@@ -54,9 +55,9 @@ interface ReturnDetailInfoProps {
*/ */
isPurchaser?: boolean; isPurchaser?: boolean;
/** /**
* 退货申请单部状态 * 退货申请单部状态
*/ */
innerStatus: number; outerStatus: number;
/** /**
* 采购商id * 采购商id
*/ */
...@@ -65,6 +66,10 @@ interface ReturnDetailInfoProps { ...@@ -65,6 +66,10 @@ interface ReturnDetailInfoProps {
* 采购商角色id * 采购商角色id
*/ */
purchaserRoleId: number, purchaserRoleId: number,
/**
* 是否可操作的
*/
isEdit?: boolean,
}; };
const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({
...@@ -72,14 +77,15 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({ ...@@ -72,14 +77,15 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({
onRefund, onRefund,
onConfirm, onConfirm,
isPurchaser = false, isPurchaser = false,
innerStatus, outerStatus,
purchaserId, purchaserId,
purchaserRoleId, purchaserRoleId,
isEdit = false,
}) => { }) => {
const [visibleResult, setVisibleResult] = useState(false); const [visibleResult, setVisibleResult] = useState(false);
const [notReceivedLoading, setNotReceivedLoading] = useState(false); const [notReceivedLoading, setNotReceivedLoading] = useState(false);
const [receivedLoading, setReceivedLoading] = useState(false); const [receivedLoading, setReceivedLoading] = useState(false);
const [currentDetailItem, setCurrentDetailItem] = useState<{ id: number, fileList: FileData[] }>({ const [currentDetailItem, setCurrentDetailItem] = useState<{ id?: number, fileList: FileData[] }>({
id: 0, id: 0,
fileList: [], fileList: [],
}); });
...@@ -104,6 +110,7 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({ ...@@ -104,6 +110,7 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({
title: '商品名称', title: '商品名称',
dataIndex: 'productName', dataIndex: 'productName',
align: 'center', align: 'center',
ellipsis: true,
}, },
{ {
title: '品类', title: '品类',
...@@ -221,16 +228,16 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({ ...@@ -221,16 +228,16 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({
const handleConfirmResult = record => { const handleConfirmResult = record => {
setCurrentDetailItem({ setCurrentDetailItem({
id: record.refundId, id: record.refundId,
fileList: record.payProveList.map(item => normalizeFiledata(item.proveUrl)), fileList: record.payProve.fileList ? record.payProve.fileList.map(item => normalizeFiledata(item.proveUrl)) : [],
}); });
setVisibleResult(true); setVisibleResult(true);
}; };
const handleCheck = record => { const handleCheck = record => {
setCurrentDetailItem({ setCurrentDetailItem({
id: record.refundId, fileList: record.payProve.fileList ? record.payProve.fileList.map(item => normalizeFiledata(item.proveUrl)) : [],
fileList: record.payProveList.map(item => normalizeFiledata(item.proveUrl)),
}); });
setVoucherVisible(true);
}; };
const handleRefundConfirm = (values, modalName) => { const handleRefundConfirm = (values, modalName) => {
...@@ -286,8 +293,12 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({ ...@@ -286,8 +293,12 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({
<div className={styles['deliver-item-actions']}> <div className={styles['deliver-item-actions']}>
{ {
isEdit &&
!isPurchaser && !isPurchaser &&
innerStatus === RETURN_INNER_STATUS_TO_BE_REFUNDED && (
outerStatus === RETURN_OUTER_STATUS_TO_BE_REFUNDED ||
outerStatus === RETURN_OUTER_STATUS_NOT_RECEIVED
) &&
!!item.canRefund && ( !!item.canRefund && (
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 ||
...@@ -305,8 +316,9 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({ ...@@ -305,8 +316,9 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({
{item.channel === PAY_CHANNEL_OFFLINE && ( {item.channel === PAY_CHANNEL_OFFLINE && (
<> <>
{ {
isEdit &&
isPurchaser && isPurchaser &&
innerStatus === RETURN_INNER_STATUS_UNCONFIRMED_REFUNDED && ( outerStatus === RETURN_OUTER_STATUS_UNCONFIRMED_REFUNDED && (
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
) && ( ) && (
...@@ -325,7 +337,7 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({ ...@@ -325,7 +337,7 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({
) && ( ) && (
<div <div
className={styles['deliver-item-check']} className={styles['deliver-item-check']}
onClick={() => handleCheck(record)} onClick={() => handleCheck(item)}
> >
查看 查看
<RightOutlined /> <RightOutlined />
...@@ -353,6 +365,7 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({ ...@@ -353,6 +365,7 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({
title="确认还款结果" title="确认还款结果"
width={576} width={576}
visible={visibleResult} visible={visibleResult}
onCancel={() => setVisibleResult(false)}
footer={[ footer={[
<Button <Button
key="1" key="1"
...@@ -370,7 +383,7 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({ ...@@ -370,7 +383,7 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({
未到账 未到账
</Button>, </Button>,
<Button <Button
key="2" key="3"
type="primary" type="primary"
loading={receivedLoading} loading={receivedLoading}
onClick={() => handleConfirm(currentDetailItem.id, 1)} onClick={() => handleConfirm(currentDetailItem.id, 1)}
......
This diff is collapsed.
import React from 'react'; /*
import { usePageStatus } from '@/hooks/usePageStatus'; * @Author: XieZhiXiong
import DetailInfo from '../components/DetailInfo'; * @Date: 2020-12-18 17:44:26
* @LastEditors: XieZhiXiong
const ReturnPrReturnVerify: React.FC = () => { * @LastEditTime: 2021-02-02 10:07:12
const { id } = usePageStatus(); * @Description:
*/
return ( import React from 'react';
<DetailInfo id={id} /> import { usePageStatus } from '@/hooks/usePageStatus';
); import DetailInfo from '../components/DetailInfo';
};
const ReturnPrReturnVerify: React.FC = () => {
const { id } = usePageStatus();
return (
<DetailInfo id={id} isEdit />
);
};
export default ReturnPrReturnVerify; export default ReturnPrReturnVerify;
\ No newline at end of file
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