Commit 05511112 authored by XieZhiXiong's avatar XieZhiXiong

Merge branch 'dev' into test

parents 8917f098 ed41bf7b
......@@ -2,12 +2,15 @@
* @Author: XieZhiXiong
* @Date: 2020-11-06 09:54:04
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-11-17 17:49:19
* @Description: 退货地址信息
* @LastEditTime: 2020-11-20 14:43:15
* @Description: 换货收货地址
*/
import React from 'react';
import MellowCard from '@/components/MellowCard';
import { createFormActions, FormEffectHooks, FormPath } from '@formily/antd';
import { PublicApi } from '@/services/api';
import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect';
import { useLinkageUtils } from '@/utils/formEffectUtils';
import NiceForm from '@/components/NiceForm';
import { schema } from './schema';
import styles from './index.less';
......@@ -18,23 +21,88 @@ const {
onFieldInputChange$,
} = FormEffectHooks;
export interface Values {
deliveryType: number,
id: number,
isDefault: number,
sendAddress: string | undefined,
sendUserName: string | undefined,
sendUserTel: string | undefined,
};
interface ExchangeAddressInfo {
// 是否是编辑的
isEdit?: boolean;
// 换货收货地址
deliveryAddress: {
// id
id?: number;
// 配送方式
deliveryType?: number;
// 收件人姓名
name: string;
// phone
phone: string;
// 完整地址
fullAddress: string;
},
// 换货发货地址
shippingAddress: {
// id
id?: number;
// 配送方式
deliveryType?: number;
// 收件人姓名
name: string;
// phone
phone: string;
// 完整地址
fullAddress: string;
},
// onSubmit
onSubmit: (values: Values) => void;
};
const ExchangeAddressInfo: React.FC<ExchangeAddressInfo> = ({
isEdit = false,
deliveryAddress = {},
shippingAddress = {},
onSubmit,
}) => {
const handleSubmit = values => {
};
const DeliveryAddress = (
// 获取发货地址
const fetchShipperAddress = (): Promise<any[]> => {
return new Promise((resolve, reject) => {
PublicApi.getLogisticsSelectListShipperAddress().then(res => {
if (res.code === 1000) {
const options =
res.data ?
res.data.map(item => ({
label: `${item.fullAddress}/${item.shipperName}/${item.phone}`,
value: item.id,
...item,
})) :
[];
resolve(options);
}
reject();
}).catch(() => {
reject();
});
});
};
const Address = (
<div>
<p>张三 / 185 2929 6475</p>
<p>广东省广州市海珠区新港东路1068号中洲中心北塔6楼</p>
<p>{deliveryAddress.name || ''} / {deliveryAddress.phone || ''}</p>
<p>{deliveryAddress.fullAddress || ''}</p>
</div>
);
......@@ -44,11 +112,62 @@ const ExchangeAddressInfo: React.FC<ExchangeAddressInfo> = ({
fullHeight
>
<NiceForm
initialValues={{
deliveryType: shippingAddress.deliveryType,
shippingAddress: shippingAddress.id,
pickupAddress: shippingAddress.id,
}}
expressionScope={{
DeliveryAddress,
Address,
}}
effects={($, { setFieldState }) => {
effects={($, { setFieldState, getFieldValue }) => {
useAsyncSelect('*(shippingAddress,pickupAddress)', fetchShipperAddress, ['label', 'value']);
const linkage = useLinkageUtils();
// 联动配送方式
onFieldValueChange$('deliveryType').subscribe(fieldState => {
const { name, value } = fieldState;
switch (value) {
// 物流
case 1: {
linkage.show('shippingAddress');
linkage.hide('pickupAddress');
break;
};
// 自提
case 2: {
linkage.hide('shippingAddress');
linkage.show('pickupAddress');
break;
};
// 无需物流
case 3: {
linkage.hide('*(shippingAddress,pickupAddress)');
break;
};
default:
break
};
});
onFieldInputChange$('*(shippingAddress,pickupAddress)').subscribe(fieldState => {
const { name, value, originAsyncData } = fieldState;
const deliveryTypeValue = getFieldValue('deliveryType');
const fullData = originAsyncData.find(item => item.id === value);
if (onSubmit) {
onSubmit({
deliveryType: deliveryTypeValue,
id: fullData ? fullData.id : undefined,
isDefault: fullData ? fullData.isDefault : undefined,
sendAddress: fullData ? fullData.fullAddress : undefined,
sendUserName: fullData ? fullData.shipperName : undefined,
sendUserTel: fullData ? fullData.phone : undefined,
});
}
});
}}
editable={isEdit}
actions={modalFormActions}
......
......@@ -2,10 +2,11 @@
* @Author: XieZhiXiong
* @Date: 2020-11-09 15:56:35
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-11-17 17:46:41
* @LastEditTime: 2020-11-20 14:54:37
* @Description:
*/
import { ISchema } from '@formily/antd';
import { UPLOAD_TYPE, DELIVERY_TYPE_ENUM } from '@/constants';
export const schema: ISchema = {
type: 'object',
......@@ -14,35 +15,64 @@ export const schema: ISchema = {
type: 'object',
'x-component': 'mega-layout',
'x-component-props': {
labelCol: 6,
full: true,
labelCol: 8,
wrapperCol: 16,
labelAlign: 'left',
},
properties: {
mode: {
type: 'string',
deliveryType: {
title: '配送方式',
default: '物流',
'x-component': 'Text',
'x-component-props': {},
type: 'string',
default: 1,
enum: DELIVERY_TYPE_ENUM,
'x-component-props': {
style: {
width: '80%',
},
},
},
shippingAddress: {
deliveryAddress: {
type: 'string',
title: '换货收货地址',
enum: [],
required: true,
'x-component': 'Children',
'x-component-props': {
placeholder: '请选择',
},
children: '{{Address}}',
},
},
deliveryAddress: {
shippingAddress: {
type: 'string',
title: '换货发货地址',
'x-component': 'Children',
enum: [],
'x-component-props': {
children: '{{DeliveryAddress}}',
placeholder: '请选择',
style: {
width: '80%',
},
},
'x-rules': [
{
required: true,
message: '请选择换货发货地址',
},
],
},
pickupAddress: {
type: 'string',
title: '换货自提地址',
enum: [],
'x-component-props': {
placeholder: '请选择',
style: {
width: '80%',
},
},
'x-rules': [
{
required: true,
message: '请选择换货自提地址',
},
],
},
},
},
},
......
......@@ -2,12 +2,15 @@
* @Author: XieZhiXiong
* @Date: 2020-11-06 09:54:04
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-11-12 13:48:08
* @LastEditTime: 2020-11-20 15:40:21
* @Description: 退货地址信息
*/
import React from 'react';
import MellowCard from '@/components/MellowCard';
import { createFormActions, FormEffectHooks, FormPath } from '@formily/antd';
import { PublicApi } from '@/services/api';
import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect';
import { useLinkageUtils } from '@/utils/formEffectUtils';
import NiceForm from '@/components/NiceForm';
import { schema } from './schema';
import styles from './index.less';
......@@ -18,23 +21,88 @@ const {
onFieldInputChange$,
} = FormEffectHooks;
export interface Values {
deliveryType: number,
id: number,
isDefault: number,
receiveAddress: string | undefined,
receiveUserName: string | undefined,
receiveUserTel: string | undefined,
};
interface ReturnAddressInfo {
// 是否是编辑的
isEdit?: boolean;
// 退货收货地址
deliveryAddress: {
// id
id?: number;
// 配送方式
deliveryType?: number;
// 收件人姓名
name: string;
// phone
phone: string;
// 完整地址
fullAddress: string;
},
// 退货发货地址
shippingAddress: {
// id
id?: number;
// 配送方式
deliveryType?: number;
// 收件人姓名
name: string;
// phone
phone: string;
// 完整地址
fullAddress: string;
},
// onSubmit
onSubmit: (values: Values) => void;
};
const ReturnAddressInfo: React.FC<ReturnAddressInfo> = ({
isEdit = false,
deliveryAddress = {},
shippingAddress = {},
onSubmit,
}) => {
const handleSubmit = values => {
};
const DeliveryAddress = (
// 获取收货地址
const fetchDeliveryAddress = (): Promise<any[]> => {
return new Promise((resolve, reject) => {
PublicApi.getLogisticsSelectListReceiverAddress().then(res => {
if (res.code === 1000) {
const options =
res.data ?
res.data.map(item => ({
label: `${item.fullAddress}/${item.receiverName}/${item.phone}`,
value: item.id,
...item,
})) :
[];
resolve(options);
}
reject();
}).catch(() => {
reject();
});
});
};
const Address = (
<div>
<p>张三 / 185 2929 6475</p>
<p>广东省广州市海珠区新港东路1068号中洲中心北塔6楼</p>
<p>{shippingAddress.name || ''} / {shippingAddress.phone || ''}</p>
<p>{shippingAddress.fullAddress || ''}</p>
</div>
);
......@@ -43,14 +111,62 @@ const ReturnAddressInfo: React.FC<ReturnAddressInfo> = ({
title="退货收货地址"
fullHeight
>
<NiceForm
effects={($, { setFieldState }) => {
onFieldValueChange$('shippingAddress').subscribe(fieldState => {
console.log('配送方式', fieldState.value);
<NiceForm
initialValues={{
deliveryType: shippingAddress.deliveryType,
deliveryAddress: deliveryAddress.id,
}}
effects={($, { setFieldState, getFieldValue }) => {
useAsyncSelect('deliveryAddress', fetchDeliveryAddress, ['label', 'value']);
const linkage = useLinkageUtils();
// 联动配送方式
onFieldValueChange$('deliveryType').subscribe(fieldState => {
const { name, value } = fieldState;
switch (value) {
// 物流
case 1: {
linkage.show('shippingAddress');
linkage.hide('pickupAddress');
break;
};
// 自提
case 2: {
linkage.hide('shippingAddress');
linkage.show('pickupAddress');
break;
};
// 无需物流
case 3: {
linkage.hide('*(shippingAddress,pickupAddress)');
break;
};
default:
break
};
});
onFieldInputChange$('deliveryAddress').subscribe(fieldState => {
const { name, value, originAsyncData } = fieldState;
const deliveryTypeValue = getFieldValue('deliveryType');
const fullData = originAsyncData.find(item => item.id === value);
if (onSubmit) {
onSubmit({
deliveryType: deliveryTypeValue,
id: fullData ? fullData.id : undefined,
isDefault: fullData ? fullData.isDefault : undefined,
receiveAddress: fullData ? fullData.fullAddress : undefined,
receiveUserName: fullData ? fullData.receiverName : undefined,
receiveUserTel: fullData ? fullData.phone : undefined,
});
}
});
}}
expressionScope={{
DeliveryAddress,
Address,
}}
editable={isEdit}
actions={modalFormActions}
......
......@@ -2,10 +2,11 @@
* @Author: XieZhiXiong
* @Date: 2020-11-09 15:56:35
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-11-09 16:19:24
* @LastEditTime: 2020-11-20 15:41:12
* @Description:
*/
import { ISchema } from '@formily/antd';
import { UPLOAD_TYPE, DELIVERY_TYPE_ENUM } from '@/constants';
export const schema: ISchema = {
type: 'object',
......@@ -14,35 +15,55 @@ export const schema: ISchema = {
type: 'object',
'x-component': 'mega-layout',
'x-component-props': {
labelCol: 6,
full: true,
labelCol: 8,
wrapperCol: 16,
labelAlign: 'left',
},
properties: {
mode: {
type: 'string',
deliveryType: {
title: '配送方式',
default: '物流',
'x-component': 'Text',
'x-component-props': {},
type: 'string',
enum: DELIVERY_TYPE_ENUM,
editable: false,
'x-component-props': {
style: {
width: '80%',
},
},
},
shippingAddress: {
deliveryAddress: {
type: 'string',
title: '退货收货地址',
enum: [],
required: true,
'x-component-props': {
placeholder: '请选择',
},
placeholder: '请选择',
style: {
width: '80%',
},
},
'x-rules': [
{
required: true,
message: '请选择退货收货地址',
},
],
},
deliveryAddress: {
shippingAddress: {
type: 'string',
title: '退货发货地址',
'x-component': 'Children',
'x-component-props': {
children: '{{DeliveryAddress}}',
children: '{{Address}}',
},
},
pickupAddress: {
type: 'string',
title: '退货自提地址',
'x-component': 'Children',
'x-component-props': {
children: '{{Address}}',
},
},
},
},
},
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-11-06 16:30:44
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-11-19 18:15:56
* @LastEditTime: 2020-11-20 16:03:42
* @Description: 待新增退货发货单
*/
import React, { useState, useRef } from 'react';
......@@ -67,7 +67,7 @@ const ExchangePrAddDeliver: React.FC = () => {
},
{
title: '申请单摘要',
dataIndex: 'parentMemberName',
dataIndex: 'applyAbstract',
align: 'center',
},
{
......@@ -77,17 +77,17 @@ const ExchangePrAddDeliver: React.FC = () => {
},
{
title: '单据时间',
dataIndex: 'created',
dataIndex: 'applyTime',
align: 'center',
},
{
title: '退货批次',
dataIndex: 'batch',
dataIndex: 'returnBatch',
align: 'center',
},
{
title: '退货发货单号',
dataIndex: 'deliverNo',
dataIndex: 'returnDeliveryNo',
align: 'center',
render: text => <a>{text}</a>,
},
......
......@@ -58,7 +58,7 @@ const ExchangeForm: React.FC<BillsFormProps> = ({
const [replaceGoodsList, setReplaceGoodsList] = useState<GetAsReplaceGoodsPageReturnedGoodsResponse>({ data: [], totalCount: 0 });
const [unsaved, setUnsaved] = useState(false);
const [infoLoading, setInfoLoading] = useState(false);
const [replaceGoodsLoading, setRepairGoodsLoading] = useState(false);
const [replaceGoodsLoading, setExchangeGoodsLoading] = useState(false);
const [goodsValue, setGoodsValue] = useState([]);
const [submitLoading, setSubmitLoading] = useState(false);
const [visibleGoodsDrawer, setVisibleGoodsDrawer] = useState(false);
......@@ -194,14 +194,13 @@ const ExchangeForm: React.FC<BillsFormProps> = ({
);
setDetailInfo({
...detailInfo,
proofFileList: faultFileList.map(item => normalizeFiledata(item.filePath)),
deliveryAddress: {
fullAddress: replaceGoodsAddress.sendAddress,
fullAddress: replaceGoodsAddress.receiveAddress,
id: 123, // 缺
isDefault: 1, // 缺
phone: replaceGoodsAddress.sendUserTel,
receiverName: replaceGoodsAddress.sendUserName,
phone: replaceGoodsAddress.receiveUserTel,
receiverName: replaceGoodsAddress.receiveUserName,
},
// 物流
shippingAddress: returnGoodsAddress.deliveryType === 1 ? {
......@@ -243,7 +242,7 @@ const ExchangeForm: React.FC<BillsFormProps> = ({
if (!id) {
return;
}
setRepairGoodsLoading(true);
setExchangeGoodsLoading(true);
PublicApi.getAsReplaceGoodsPageReturnedGoods({
replaceId: id,
current: `${1}`,
......@@ -254,7 +253,7 @@ const ExchangeForm: React.FC<BillsFormProps> = ({
setGoodsValue(res.data && res.data.data ? res.data.data.map(item => item.orderRecordId) : []);
}
}).finally(() => {
setRepairGoodsLoading(false);
setExchangeGoodsLoading(false);
});
};
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-11-17 18:07:41
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-11-19 18:28:16
* @LastEditTime: 2020-11-20 15:43:56
* @Description: 待提交审核换货申请单
*/
import React, { useState, useRef } from 'react';
......@@ -42,7 +42,7 @@ const ExchangePr1: React.FC = () => {
render: (text, record) => (
<>
<EyePreview
url={`/memberCenter/afterService/exchangeManage/exchangPr1/detail?id=${record.replaceId}`}
url={`/memberCenter/afterService/exchangeManage/exchangePr1/detail?id=${record.replaceId}`}
>
{text}
</EyePreview>
......@@ -86,7 +86,7 @@ const ExchangePr1: React.FC = () => {
<>
<Button
type="link"
onClick={() => history.push(`/memberCenter/afterService/exchangeManage/exchangPr1/verify?id=${record.replaceId}`)}
onClick={() => history.push(`/memberCenter/afterService/exchangeManage/exchangePr1/verify?id=${record.replaceId}`)}
>
提交审核
</Button>
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-11-04 17:22:07
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-11-17 18:13:55
* @LastEditTime: 2020-11-20 15:46:31
* @Description:
*/
import React, { useState } from 'react';
......@@ -23,17 +23,17 @@ const ExchangePr1Verify: React.FC = () => {
if (!id) {
return;
}
// setConfirmLoading(true);
// PublicApi.postAsReturnGoodsSubmitVerify({
// applyId: id,
// ...values,
// }).then(res => {
// if (res.code === 1000) {
// history.goBack();
// }
// }).finally(() => {
// setConfirmLoading(false);
// });
setConfirmLoading(true);
PublicApi.postAsReplaceGoodsVerifyStepOne({
applyId: id,
...values,
}).then(res => {
if (res.code === 1000) {
history.goBack();
}
}).finally(() => {
setConfirmLoading(false);
});
};
return (
......@@ -50,7 +50,6 @@ const ExchangePr1Verify: React.FC = () => {
单据审核
</Button>
)}
isEdit
/>
<VerifyModal
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-11-17 18:07:41
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-11-18 10:11:17
* @LastEditTime: 2020-11-20 15:47:08
* @Description: 待提交审核换货申请单
*/
import React, { useState, useRef } from 'react';
......
......@@ -23,17 +23,17 @@ const ExchangePr2Verify: React.FC = () => {
if (!id) {
return;
}
// setConfirmLoading(true);
// PublicApi.postAsReturnGoodsSubmitVerify({
// applyId: id,
// ...values,
// }).then(res => {
// if (res.code === 1000) {
// history.goBack();
// }
// }).finally(() => {
// setConfirmLoading(false);
// });
setConfirmLoading(true);
PublicApi.postAsReplaceGoodsVerifyStepTwo({
applyId: id,
...values,
}).then(res => {
if (res.code === 1000) {
history.goBack();
}
}).finally(() => {
setConfirmLoading(false);
});
};
return (
......@@ -50,7 +50,6 @@ const ExchangePr2Verify: React.FC = () => {
单据审核
</Button>
)}
isEdit
/>
<VerifyModal
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-11-06 16:30:44
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-11-19 18:55:37
* @LastEditTime: 2020-11-20 16:02:32
* @Description: 待新增换货发货单
*/
import React, { useState, useRef } from 'react';
......@@ -67,7 +67,7 @@ const ExchangePrAddDeliver: React.FC = () => {
},
{
title: '申请单摘要',
dataIndex: 'parentMemberName',
dataIndex: 'applyAbstract',
align: 'center',
},
{
......@@ -77,7 +77,7 @@ const ExchangePrAddDeliver: React.FC = () => {
},
{
title: '单据时间',
dataIndex: 'created',
dataIndex: 'applyTime',
align: 'center',
},
{
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-11-04 17:22:07
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-11-18 10:19:22
* @LastEditTime: 2020-11-20 15:49:38
* @Description:
*/
import React, { useState } from 'react';
......@@ -23,17 +23,17 @@ const ExchangePrConfirmVerify: React.FC = () => {
if (!id) {
return;
}
// setConfirmLoading(true);
// PublicApi.postAsReturnGoodsSubmitVerify({
// applyId: id,
// ...values,
// }).then(res => {
// if (res.code === 1000) {
// history.goBack();
// }
// }).finally(() => {
// setConfirmLoading(false);
// });
setConfirmLoading(true);
PublicApi.postAsReplaceGoodsConfirmVerify({
applyId: id,
...values,
}).then(res => {
if (res.code === 1000) {
history.goBack();
}
}).finally(() => {
setConfirmLoading(false);
});
};
return (
......@@ -50,7 +50,6 @@ const ExchangePrConfirmVerify: React.FC = () => {
确认单据
</Button>
)}
isEdit
/>
<VerifyModal
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-11-04 17:22:07
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-11-17 18:13:55
* @LastEditTime: 2020-11-20 10:47:03
* @Description:
*/
import React, { useState } from 'react';
......@@ -23,17 +23,17 @@ const ExchangePrSubmitVerify: React.FC = () => {
if (!id) {
return;
}
// setConfirmLoading(true);
// PublicApi.postAsReturnGoodsSubmitVerify({
// applyId: id,
// ...values,
// }).then(res => {
// if (res.code === 1000) {
// history.goBack();
// }
// }).finally(() => {
// setConfirmLoading(false);
// });
setConfirmLoading(true);
PublicApi.postAsReplaceGoodsSubmitVerify({
applyId: id,
...values,
}).then(res => {
if (res.code === 1000) {
history.goBack();
}
}).finally(() => {
setConfirmLoading(false);
});
};
return (
......
......@@ -175,7 +175,7 @@
&_content {
display: flex;
margin-top: 24px;
margin-top: 28px;
.content_text {
flex: 1;
......
......@@ -44,6 +44,7 @@ const BablancePayWay: React.FC<BablancePayWayPropsType> = (props) => {
const fetchBalanceInfo = () => {
let param = {
payType: orderInfo.ruleConfigurationId,
parentMemberId: orderInfo.supplyMembersId,
parentMemberRoleId: orderInfo.supplyMembersRoleId
}
......
......@@ -22,6 +22,7 @@
.bank_payway_upload_dragger {
position: relative;
margin-top: 20px;
overflow: hidden;
}
.bank_payway_upload {
......
......@@ -64,7 +64,7 @@ const WechatPayWay: React.FC<WechatPayWayPropsType> = (props) => {
}
const checkPayState = () => {
if (checkCount < 12) {
if (checkCount < 20) {
let param = {
id: Number(orderId),
paymentInformationId: payInfo.paymentInformationId,
......@@ -82,7 +82,7 @@ const WechatPayWay: React.FC<WechatPayWayPropsType> = (props) => {
checkCount++
checkTimer = setTimeout(() => {
checkPayState()
}, 5000)
}, 8000)
}
} else {
message.error(res.message)
......
......@@ -73,11 +73,11 @@
.codeItem {
width: 48px;
height: 48px;
line-height: 48px;
line-height: 0.5;
text-align: center;
background: #FFFFFF;
border: 1px solid #EBECF0;
font-size: 26px;
font-size: 80px;
}
.codeInput {
height: 48px;
......
......@@ -407,7 +407,7 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => {
className={style.codeItem}
key={index}
>
{code[index]}
{code[index]?.replace(/[0-9]/g, '·')}
</div>)
}
<Input.Password
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-09-16 15:16:47
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-10-23 16:00:01
* @LastEditTime: 2020-11-20 19:01:57
* @Description: 联动逻辑相关
*/
import { Modal } from 'antd';
......@@ -321,14 +321,12 @@ export const useBusinessEffects = (context, actions) => {
setFieldValue('supplyMembersName', first ? first.supplyMembersName : '');
setFieldValue('relevanceInvoicesId', first ? first.id : null);
setFieldValue('address', first ? `${first.fullAddress} ${first.receiverName}/${first.phone}` : '');
setFieldValue('transport', first && first.deliveryType ? DELIVERY_TYPE[first.deliveryType] : '');
// 以下数据只用于收集,不用于展示
setFieldValue('deliveryAddresId', first ? first.deliveryAddresId : null);
setFieldValue('receiverName', first ? first.receiverName : '');
setFieldValue('fullAddress', first ? first.fullAddress : '');
setFieldValue('phone', first ? first.phone : '');
setFieldValue('deliveryType', first ? first.deliveryType : null);
setFieldValue('isDefault', first ? first.isDefault : false);
if (!first) {
......@@ -388,6 +386,17 @@ export const useBusinessEffects = (context, actions) => {
onFieldInputChange$('orderNo').subscribe(fieldState => {
setFieldValue('invoicesDetailsRequests', []);
});
// 关联明细
onFieldInputChange$('invoicesDetailsRequests').subscribe(fieldState => {
const { value } = fieldState;
if (!value.length) {
// 明细数据为空,或者明细每项数据的 商品 未选,物流方式都设置成 ''
setFieldValue('transport', '');
setFieldValue('deliveryType', null);
}
});
// 关联明细 商品下拉框 联动商品ID、单价
onFieldInputChange$('invoicesDetailsRequests.*.product').subscribe(fieldState => {
......@@ -436,6 +445,25 @@ export const useBusinessEffects = (context, actions) => {
state.value = `¥0.00`;
}
);
// 配送方式,一个单据只能有一个配送方式
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.deliveryType`
}),
state => {
state.value = undefined;
}
);
const invoicesDetailsRequestsValue = getFieldValue('invoicesDetailsRequests');
// 明细每项数据的 商品 未选中,物流方式设置成 ''
if (
invoicesDetailsRequestsValue.every(item => !item.product)
) {
setFieldValue('transport', '');
setFieldValue('deliveryType', null);
}
}
if (!current) {
......@@ -482,6 +510,46 @@ export const useBusinessEffects = (context, actions) => {
state.value = `¥${(current.purchaseCount * current.price).toFixed(2)}`;
}
);
// 配送方式,一个单据只能有一个配送方式
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.deliveryType`
}),
state => {
state.value = current.logistics && current.logistics.deliveryType ? current.logistics.deliveryType : undefined;
}
);
setTimeout(() => {
const invoicesDetailsRequestsValue = getFieldValue('invoicesDetailsRequests');
// 配送方式,一个单据只能有一个配送方式
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.product`
}),
state => {
if (
current.logistics &&
invoicesDetailsRequestsValue.some(item => item.deliveryType && item.deliveryType !== current.logistics.deliveryType)
) {
state.errors = '商品配送方式不一致,请保持一次性';
} else {
state.errors = '';
}
}
);
// 明细每项数据的 商品 选中,物流方式设置成 为对应商品的物流方式
if (
current.logistics &&
current.logistics.deliveryType &&
invoicesDetailsRequestsValue.every(item => item.deliveryType === current.logistics.deliveryType)
) {
setFieldValue('transport', DELIVERY_TYPE[current.logistics.deliveryType]);
setFieldValue('deliveryType', current.logistics.deliveryType);
}
}, 0);
});
// 关联明细 商品数量 联动计算商品金额
......
......@@ -33,6 +33,8 @@ import {
DOC_TYPE_RETURN_RECEIPT,
DOC_TYPE_EXCHANGE_INVOICE,
DOC_TYPE_EXCHANGE_RECEIPT,
DELIVERY_TYPE,
} from '@/constants';
import { addBillSchema, goodsSearchSchema } from './schema';
import { createEffects } from './effects';
......@@ -141,6 +143,7 @@ const BillsForm: React.FC<BillsFormProps> = ({
deliveryType,
isDefault,
invoicesDetailsList,
transport,
...rest
} = res.data;
......@@ -148,6 +151,7 @@ const BillsForm: React.FC<BillsFormProps> = ({
...item,
product: item.productId,
amount: `¥${(+item.productCount * item.price).toFixed(2)}`,
deliveryType,
})) : [];
addSchemaAction.setFieldState(
......@@ -170,7 +174,7 @@ const BillsForm: React.FC<BillsFormProps> = ({
fullAddress: fullAddress || '',
receiverName: receiverName || '',
phone: phone || '',
deliveryType,
// deliveryType,
isDefault,
}
] :
......@@ -178,10 +182,9 @@ const BillsForm: React.FC<BillsFormProps> = ({
,
invoicesDetailsRequests: details,
...rest,
deliveryType,
transport: DELIVERY_TYPE[deliveryType],
});
productRowCtl.setSelectRow(details);
productRowCtl.setSelectedRowKeys(details.map(item => item.id));
}).finally(() => {
setInfoLoading(false);
});
......@@ -378,6 +381,7 @@ const BillsForm: React.FC<BillsFormProps> = ({
const newInvoicesDetailsRequests = invoicesDetailsRequests.map(({
product,
productCount,
deliveryType,
...rest
}) => ({
productCount: +productCount,
......@@ -537,29 +541,27 @@ const BillsForm: React.FC<BillsFormProps> = ({
const values = [];
productRowCtl.selectRow.forEach(item => {
const existing = preValues.find(val => val.goodsId === item.id);
const atom =
existing ?
existing :
{
itemNo: item.code,
goodsId: item.id,
itemNmae: item.name,
specifications: item.type,
category: item.customerCategory ? item.customerCategory.name : '',
brand: item.brand ? item.brand.name : '',
unit: item.unitName,
costPrice: item.costPrice,
product: undefined,
productName: item.productName,
productId: '',
price: '',
productCount: 0,
amount: '',
};
const atom = {
itemNo: item.code,
goodsId: item.id,
itemNmae: item.name,
specifications: item.type,
category: item.customerCategory ? item.customerCategory.name : '',
brand: item.brand ? item.brand.name : '',
unit: item.unitName,
costPrice: item.costPrice,
product: undefined,
productName: item.productName,
productId: '',
price: '',
productCount: 0,
amount: '',
};
values.push(atom);
});
addSchemaAction.setFieldValue('invoicesDetailsRequests', values);
addSchemaAction.setFieldValue('invoicesDetailsRequests', preValues.concat(values));
productRowCtl.setSelectRow([]);
productRowCtl.setSelectedRowKeys([]);
setVisible(false);
}
......@@ -575,15 +577,7 @@ const BillsForm: React.FC<BillsFormProps> = ({
}
const handleRemoveItem = (index: number) => {
const newSelectRow = [...productRowCtl.selectRow];
const newSelectedRowKeys = [...productRowCtl.selectedRowKeys];
const newValue = [...addSchemaAction.getFieldValue('invoicesDetailsRequests')];
newSelectRow.splice(index, 1);
newSelectedRowKeys.splice(index, 1);
productRowCtl.setSelectRow(newSelectRow);
productRowCtl.setSelectedRowKeys(newSelectedRowKeys);
newValue.splice(index, 1);
addSchemaAction.setFieldValue('invoicesDetailsRequests', newValue);
};
......
......@@ -340,7 +340,7 @@ export const addBillSchema: ISchema = {
type: 'string',
'x-component': 'Text',
title: '物流方式',
default: '',
// default: '', // 奇了怪了,initialValues 覆盖不了 default,就这个字段会
},
// 不用于展示,只用于收集值
deliveryAddresId: {
......@@ -450,7 +450,7 @@ export const addBillSchema: ISchema = {
'x-component-props': {
allowClear: true,
style: {
width: 100,
width: 180,
},
},
'x-rules': [
......@@ -460,11 +460,6 @@ export const addBillSchema: ISchema = {
},
],
},
// 不用于展示,只收集值
productName: {
type: 'string',
display: false,
},
productId: {
type: 'string',
title: '商品ID',
......@@ -497,6 +492,16 @@ export const addBillSchema: ISchema = {
title: '金额',
'x-component': 'Text',
},
// 不用于展示,只收集值
productName: {
type: 'string',
display: false,
},
// 配送方式,不用于展示,只收集值
deliveryType: {
type: 'string',
display: false,
},
},
}
},
......
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