Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
jinfa-platform
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
shenshaokai
jinfa-platform
Commits
1544d920
Commit
1544d920
authored
Aug 07, 2021
by
XieZhiXiong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 完成普通订单售后退货简单流程
parent
9aaef04b
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
523 additions
and
246 deletions
+523
-246
index.tsx
...sSelect/components/AddressRadioGroupFormilyItem/index.tsx
+3
-1
index.tsx
src/components/AddressSelect/index.tsx
+7
-0
columns.tsx
src/pages/afterService/components/GoodsDrawer/columns.tsx
+8
-0
index.tsx
src/pages/afterService/components/GoodsDrawer/index.tsx
+39
-107
index.ts
...pages/afterService/components/GoodsDrawer/schema/index.ts
+3
-3
verify.tsx
...afterService/exchangeManage/exchangePrReceived/verify.tsx
+5
-5
index.less
...returnPrDeliver/components/ReturnDeliverDrawer/index.less
+0
-0
index.tsx
.../returnPrDeliver/components/ReturnDeliverDrawer/index.tsx
+204
-0
schema.ts
.../returnPrDeliver/components/ReturnDeliverDrawer/schema.ts
+152
-0
index.tsx
.../afterService/returnApplication/returnPrDeliver/index.tsx
+2
-2
verify.tsx
...afterService/returnApplication/returnPrDeliver/verify.tsx
+44
-17
index.tsx
...pplication/returnPrSubmit/components/ReturnForm/index.tsx
+52
-42
index.ts
...tion/returnPrSubmit/components/ReturnForm/schema/index.ts
+2
-3
verify.tsx
...ges/afterService/returnManage/returnPrReceived/verify.tsx
+2
-66
No files found.
src/components/AddressSelect/components/AddressRadioGroupFormilyItem/index.tsx
View file @
1544d920
...
...
@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2021-08-05 14:54:18
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-08-0
6 10:41:38
* @LastEditTime: 2021-08-0
7 16:36:14
* @Description:
*/
import
React
from
'react'
;
...
...
@@ -16,6 +16,7 @@ const AddressRadioGroupFormilyItem = connect()((props) => {
onChange
,
addressType
,
isDefault
,
disabled
,
...
rest
}
=
props
;
return
(
...
...
@@ -23,6 +24,7 @@ const AddressRadioGroupFormilyItem = connect()((props) => {
<
AddressRadioGroup
addressType=
{
addressType
}
isDefault=
{
isDefault
}
disabled=
{
disabled
}
value=
{
value
}
onChange=
{
onChange
}
{
...
rest
}
...
...
src/components/AddressSelect/index.tsx
View file @
1544d920
...
...
@@ -45,6 +45,10 @@ interface IProps {
* 是否默认选择 默认地址,是的话会触发 onChange value为默认地址,默认为false
*/
isDefaultAddress
?:
boolean
,
/**
* 是否禁用
*/
disabled
:
boolean
,
}
export
type
SubmitValuesType
=
{
...
...
@@ -100,6 +104,7 @@ const AddressSelect: React.FC<IProps> = (props) => {
value
,
onChange
,
isDefaultAddress
=
false
,
disabled
=
false
,
}
=
props
;
const
[
list
,
setList
]
=
useState
<
AddressValueType
[]
>
([]);
const
[
internalValue
,
setInternalValue
]
=
useState
<
AddressValueType
>
();
...
...
@@ -295,10 +300,12 @@ const AddressSelect: React.FC<IProps> = (props) => {
options=
{
options
}
value=
{
value
?.
id
}
onChange=
{
handleSelectChange
}
disabled=
{
disabled
}
/>
<
Button
onClick=
{
()
=>
handleVisibleDrawer
(
true
)
}
className=
{
styles
[
'address-select-action'
]
}
disabled=
{
disabled
}
>
管理
</
Button
>
...
...
src/pages/afterService/components/GoodsDrawer/columns.tsx
0 → 100644
View file @
1544d920
/*
* @Author: XieZhiXiong
* @Date: 2021-08-06 18:37:01
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-08-06 18:37:02
* @Description: 公共columns
*/
src/pages/afterService/components/GoodsDrawer/index.tsx
View file @
1544d920
...
...
@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-11-04 15:09:09
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-0
7-26 13:52:4
1
* @LastEditTime: 2021-0
8-07 14:51:1
1
* @Description: 维修商品抽屉组件
*/
import
React
from
'react'
;
...
...
@@ -75,9 +75,9 @@ interface GoodsDrawerProps {
*/
searchable
?:
boolean
;
/**
* 流程类型:
1.订单交易流程
2.售后换货流程 3.售后退货流程 4.售后维修流程
* 流程类型:2.售后换货流程 3.售后退货流程 4.售后维修流程
*/
afterType
:
1
|
2
|
3
|
4
;
afterType
:
2
|
3
|
4
;
/**
* 订单类型
*/
...
...
@@ -98,7 +98,6 @@ interface GoodsDrawerState {
selectedRowKeys
:
number
[];
childSelectedRowKeys
:
number
[];
loading
:
boolean
;
currentProcessEnum
:
number
;
};
// 跟 选中的子节点 找到 父级选中的 keys
...
...
@@ -115,8 +114,8 @@ function transformParentKeys(data: any[], childCheckedKeys: string[]) {
};
// 这里循环遍历 判断 选中的子表格的keys中 是否包含 当前子项,如果有先 push 到父节点的 checkeds
if
(
item
.
product
Dateilss
&&
item
.
productDateils
s
.
length
)
{
item
.
product
Dateils
s
.
forEach
(
childItem
=>
{
if
(
item
.
product
s
&&
item
.
product
s
.
length
)
{
item
.
products
.
forEach
(
childItem
=>
{
if
(
childCheckedKeys
.
find
(
key
=>
key
===
childItem
.
id
))
{
atom
.
checkeds
.
push
(
childItem
.
id
);
}
...
...
@@ -124,7 +123,7 @@ function transformParentKeys(data: any[], childCheckedKeys: string[]) {
}
// 判断两者长度 一样 就表示父节点时候选中的
if
(
atom
.
checkeds
.
length
===
(
atom
.
product
Dateilss
&&
atom
.
productDateils
s
.
length
))
{
if
(
atom
.
checkeds
.
length
===
(
atom
.
product
s
&&
atom
.
product
s
.
length
))
{
ret
.
push
(
atom
.
id
);
}
});
...
...
@@ -159,7 +158,6 @@ class GoodsDrawer extends React.Component<GoodsDrawerProps, GoodsDrawerState> {
selectedRowKeys
:
[],
childSelectedRowKeys
:
[],
loading
:
false
,
currentProcessEnum
:
0
,
};
};
...
...
@@ -170,11 +168,11 @@ class GoodsDrawer extends React.Component<GoodsDrawerProps, GoodsDrawerState> {
const
{
page
,
size
,
searchVal
}
=
this
.
state
;
const
{
fetchOrderList
,
afterType
,
orderType
}
=
this
.
props
;
const
isMateriel
=
(
orderType
===
ORDER_TYPE_INQUIRY_CONTRACT
||
orderType
===
ORDER_TYPE_BIDDING_CONTRACT
||
orderType
===
ORDER_TYPE_TENDER_CONTRACT
);
//
const isMateriel = (
//
orderType === ORDER_TYPE_INQUIRY_CONTRACT
//
|| orderType === ORDER_TYPE_BIDDING_CONTRACT
//
|| orderType === ORDER_TYPE_TENDER_CONTRACT
//
);
if
(
!
fetchOrderList
)
{
return
;
...
...
@@ -187,103 +185,38 @@ class GoodsDrawer extends React.Component<GoodsDrawerProps, GoodsDrawerState> {
...
searchVal
,
});
if
(
orderListRes
)
{
let
processEnumRes
=
{
data
:
[],
code
:
0
};
// 售后退货、换货才涉及售后工作流相关
// 这里分两种状况,一种是普通的订单、而是合同订单
// 普通订单根据订单商品,请求商品的售后流程枚举组装数据
// 合同订单根据订单的合同id,请求合同的售后流程枚举组装数据
if
(
afterType
===
2
||
afterType
===
3
)
{
// 获取对应订单列表的售后工作流类型
const
payload
=
[];
orderListRes
.
data
.
forEach
(
item
=>
{
if
(
!
isMateriel
&&
item
.
productDateilss
)
{
item
.
productDateilss
.
forEach
(
product
=>
{
const
atom
=
{
productId
:
product
.
productId
,
memberId
:
product
.
memberId
,
memberRoleId
:
product
.
memberRoleId
,
shopId
:
item
.
shopId
,
type
:
afterType
,
// 流程类型
};
payload
.
push
(
atom
);
});
}
if
(
isMateriel
)
{
const
atom
=
{
contractId
:
item
.
contractId
,
memberId
:
item
.
memberId
,
memberRoleId
:
item
.
memberRoleId
,
type
:
afterType
,
// 流程类型
};
payload
.
push
(
atom
);
}
});
if
(
!
payload
.
length
)
{
this
.
setState
({
dataSource
:
orderListRes
,
loading
:
false
,
});
return
;
}
processEnumRes
=
(
!
isMateriel
?
await
PublicApi
.
postOrderGetProcessEnum
({
list
:
payload
,
},
{
ctlType
:
'none'
,
})
:
await
PublicApi
.
postManageRuleGetProcessEnums
({
processEnumRequests
:
payload
,
},
{
ctlType
:
'none'
,
})
);
if
(
processEnumRes
.
code
!==
1000
)
{
this
.
setState
({
loading
:
false
,
});
return
;
}
}
// const mockMap = {
// 1: 18,
// 2: 25,
// };
// 组装数据
let
i
=
0
;
orderListRes
.
data
.
forEach
((
item
,
j
)
=>
{
if
(
item
.
productDateilss
)
{
item
.
productDateilss
.
forEach
(
product
=>
{
if
(
!
isMateriel
)
{
product
.
processEnum
=
processEnumRes
.
data
[
i
]
?
processEnumRes
.
data
[
i
].
processEnum
:
undefined
;
}
else
{
product
.
processEnum
=
processEnumRes
.
data
[
j
]
?
processEnumRes
.
data
[
j
].
processEnum
:
undefined
;
}
// product.processEnum = mockMap[Math.floor(Math.random()*2 + 1)];
i
++
;
// 防止重复添加数据
if
(
!
this
.
flattened
.
find
(
flat
=>
flat
.
id
===
product
.
id
))
{
this
.
flattened
.
push
({
...
product
,
const
{
data
,
...
rest
}
=
orderListRes
;
const
newData
:
{
[
key
:
string
]:
any
}[]
=
data
.
map
((
item
)
=>
({
...
item
,
products
:
item
.
products
.
map
(({
productId
,
...
rest
})
=>
({
id
:
productId
,
...
rest
,
quantity
:
+
rest
.
quantity
,
purchasePrice
:
+
rest
.
purchasePrice
,
taxRate
:
+!!
rest
.
taxRate
,
taxInclusive
:
rest
.
taxInclusive
||
+!!
rest
.
taxRate
,
orderNo
:
item
.
orderNo
,
orderId
:
item
.
orderId
,
payInfoList
:
item
.
payInfoList
,
orderType
:
item
.
t
ype
,
orderType
:
item
.
orderT
ype
,
contractId
:
item
.
contractId
,
contractNo
:
item
.
contractNo
,
});
})),
}));
newData
.
forEach
((
item
)
=>
{
item
.
products
.
forEach
((
product
)
=>
{
// 防止重复添加数据
if
(
!
this
.
flattened
.
find
(
flat
=>
flat
.
id
===
product
.
id
))
{
this
.
flattened
.
push
(
product
);
}
});
}
});
this
.
setState
({
dataSource
:
orderListRes
,
dataSource
:
{
data
:
newData
,
...
rest
,
},
});
}
this
.
setState
({
loading
:
false
});
...
...
@@ -389,7 +322,7 @@ class GoodsDrawer extends React.Component<GoodsDrawerProps, GoodsDrawerState> {
}
=
this
.
state
;
let
childArr
:
any
=
[...
childSelectedRowKeys
];
// setChildArr:选择父Table下的所有子选项
let
setChildArr
=
data
.
find
((
d
:
any
)
=>
d
.
id
===
record
.
id
).
product
Dateils
s
.
map
((
item
:
any
)
=>
item
.
id
);
let
setChildArr
=
data
.
find
((
d
:
any
)
=>
d
.
id
===
record
.
id
).
products
.
map
((
item
:
any
)
=>
item
.
id
);
// 第一步 判断selected true:选中,false,取消选中
if
(
selected
)
{
// 第二步,父Table选中,子Table全选中(全部整合到一起,然后去重)
...
...
@@ -421,7 +354,7 @@ class GoodsDrawer extends React.Component<GoodsDrawerProps, GoodsDrawerState> {
let
setChildArr
:
any
=
[];
// 将改变的父Table下的子Table下的 id 都添加到setChildArr中
data
.
forEach
((
item
:
any
)
=>
{
setChildArr
=
[...
setChildArr
,
...(
item
.
product
Dateils
s
||
[]).
map
((
item
:
any
)
=>
item
.
id
)];
setChildArr
=
[...
setChildArr
,
...(
item
.
products
||
[]).
map
((
item
:
any
)
=>
item
.
id
)];
});
// 第一步判断 selected true:全选,false:取消全选
...
...
@@ -494,8 +427,7 @@ class GoodsDrawer extends React.Component<GoodsDrawerProps, GoodsDrawerState> {
?
product
.
payInfoList
.
reduce
((
prev
,
now
)
=>
{
return
now
.
externalState
===
PayOutWorkState
.
CONFIRM_ACCOUNT
?
+
(
new
BigNumber
(
+
product
.
purchaseCount
).
multipliedBy
(
product
.
price
).
multipliedBy
(
new
BigNumber
(
now
.
payRatio
).
dividedBy
(
100
))).
toFixed
(
2
)
+
prev
:
prev
;
},
0
)
:
0
,
taxInclusive
:
product
.
taxInclusive
||
+!!
product
.
taxRate
,
:
product
.
amount
,
});
}
});
...
...
@@ -616,8 +548,8 @@ class GoodsDrawer extends React.Component<GoodsDrawerProps, GoodsDrawerState> {
NestColumns=
{
[]
}
className=
"common_tb"
rowClassName=
{
(
_
,
index
)
=>
(
index
%
2
)
===
0
&&
'tb_bg'
}
rowKey=
"
i
d"
childrenDataKey=
"product
Dateils
s"
rowKey=
"
orderI
d"
childrenDataKey=
"products"
dataSource=
{
dataSource
.
data
}
loading=
{
loading
}
childRowSelection=
{
{
...
...
src/pages/afterService/components/GoodsDrawer/schema/index.ts
View file @
1544d920
...
...
@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-09-29 10:03:06
* @LastEditors: XieZhiXiong
* @LastEditTime: 202
0-12-11 10:58:36
* @LastEditTime: 202
1-08-06 15:36:30
* @Description:
*/
import
{
ISchema
}
from
'@formily/antd'
;
...
...
@@ -45,14 +45,14 @@ export const listSearchSchema: ISchema = {
columns
:
6
,
},
properties
:
{
orderThe
:
{
digest
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'订单摘要'
,
allowClear
:
true
,
},
},
'[start
CreateTime, endCreateTim
e]'
:
{
'[start
Date, endDat
e]'
:
{
type
:
'string'
,
default
:
''
,
'x-component'
:
'dateSelect'
,
...
...
src/pages/afterService/exchangeManage/exchangePrReceived/verify.tsx
View file @
1544d920
...
...
@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2021-01-06 11:36:34
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-0
2-20 17:10:14
* @LastEditTime: 2021-0
8-07 19:36:18
* @Description:
*/
import
React
,
{
useState
}
from
'react'
;
...
...
@@ -64,10 +64,10 @@ const ExchangePrReceivedVerify: React.FC = () => {
<
ManualDeliveryModal
key=
"2"
value=
{
{
deliveryAddressTxt
:
manualReturnGoodsAddress
.
deliveryAddress
,
deliveryTime
:
manualReturnGoodsAddress
.
deliveryTime
,
logisticsOrderNo
:
manualReturnGoodsAddress
.
logisticsOrderNo
,
logisticsNameTxt
:
manualReturnGoodsAddress
.
logisticsName
,
deliveryAddressTxt
:
manualReturnGoodsAddress
?
.
deliveryAddress
,
deliveryTime
:
manualReturnGoodsAddress
?
.
deliveryTime
,
logisticsOrderNo
:
manualReturnGoodsAddress
?
.
logisticsOrderNo
,
logisticsNameTxt
:
manualReturnGoodsAddress
?
.
logisticsName
,
}
}
visible=
{
modalVisible
}
confirmLoading=
{
submitLoading
}
...
...
src/pages/afterService/returnApplication/returnPrDeliver/components/ReturnDeliverDrawer/index.less
0 → 100644
View file @
1544d920
src/pages/afterService/returnApplication/returnPrDeliver/components/ReturnDeliverDrawer/index.tsx
0 → 100644
View file @
1544d920
/*
* @Author: XieZhiXiong
* @Date: 2021-08-07 15:11:54
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-08-07 20:14:24
* @Description: 退货发货处理抽屉
*/
import
React
from
'react'
;
import
{
Drawer
,
Button
,
}
from
'antd'
;
import
{
createAsyncFormActions
,
FormEffectHooks
,
}
from
'@formily/antd'
;
import
{
ArrayTable
}
from
'@formily/antd-components'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
GetAsReturnGoodsPageReturnedGoodsResponseDetail
,
}
from
'@/services/AfterServiceV2Api'
;
import
{
useAsyncSelect
}
from
'@/formSchema/effects/useAsyncSelect'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
AddressValueType
}
from
'@/components/AddressSelect/components/AddressRadioGroup'
;
import
{
schema
}
from
'./schema'
;
const
formActions
=
createAsyncFormActions
();
const
{
onFieldValueChange$
,
onFieldInputChange$
,
}
=
FormEffectHooks
;
export
type
ValuesType
=
{
/**
* 发货时间
*/
deliveryTime
:
string
,
/**
* 物流公司
*/
logisticsName
:
number
,
/**
* 物流公司名称
*/
logisticsNameTxt
:
string
,
/**
* 物流单号
*/
logisticsOrderNo
:
string
,
/**
* 产品列表
*/
productList
:
{
/**
* 商品id
*/
productId
:
string
,
/**
* 退货数量
*/
count
:
string
,
/**
* 退货数量
*/
returnCount
:
string
,
/**
* 已发货数量
*/
deliveryCount
:
string
,
}[],
/**
* 退货发货地址
*/
returnDeliverAddress
:
AddressValueType
,
}
interface
IProps
{
/**
* 是否可见
*/
visible
:
boolean
,
/**
* 值
*/
value
:
{
/**
* 商品列表
*/
productList
:
GetAsReturnGoodsPageReturnedGoodsResponseDetail
[],
},
/**
* Form 确认事件
*/
onSubmit
:
(
values
:
ValuesType
)
=>
void
,
/**
* 抽屉关闭事件
*/
onClose
:
()
=>
void
,
/**
* 确认按钮 loading
*/
submitLoading
:
boolean
,
}
const
ReturnDeliverDrawer
:
React
.
FC
<
IProps
>
=
(
props
)
=>
{
const
{
visible
,
value
,
onSubmit
,
onClose
,
submitLoading
,
}
=
props
;
// 获取物流公司
const
fetchLogisticsCompany
=
():
Promise
<
any
[]
>
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
PublicApi
.
getLogisticsSelectListCompany
({
cooperateType
:
'2'
,
// 1-平台物流服务商,2-商户合作物流公司
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
const
options
=
res
.
data
?
res
.
data
.
map
(
item
=>
({
label
:
item
.
name
,
value
:
item
.
id
,
}))
:
[];
resolve
(
options
);
}
reject
();
}).
catch
(()
=>
{
reject
();
});
});
};
const
handleClose
=
()
=>
{
if
(
onClose
)
{
onClose
();
}
};
const
handleSubmit
=
(
values
:
ValuesType
)
=>
{
if
(
onSubmit
)
{
const
{
productList
,
...
rest
}
=
values
;
onSubmit
({
...
rest
,
productList
:
productList
.
filter
((
item
)
=>
+
item
.
deliveryCount
<
+
item
.
returnCount
),
});
}
};
return
(
<
Drawer
title=
"退货发货处理"
width=
{
1100
}
onClose=
{
handleClose
}
visible=
{
visible
}
footer=
{
<
div
style=
{
{
textAlign
:
'right'
,
}
}
>
<
Button
onClick=
{
handleClose
}
style=
{
{
marginRight
:
16
}
}
>
取 消
</
Button
>
<
Button
onClick=
{
()
=>
formActions
.
submit
()
}
type=
"primary"
loading=
{
submitLoading
}
>
确 定
</
Button
>
</
div
>
}
>
<
NiceForm
previewPlaceholder=
"' '"
initialValues=
{
value
}
components=
{
{
ArrayTable
,
}
}
effects=
{
(
$
,
{
setFieldValue
})
=>
{
useAsyncSelect
(
'logisticsName'
,
fetchLogisticsCompany
,
[
'label'
,
'value'
]);
onFieldInputChange$
(
'logisticsName'
).
subscribe
(
state
=>
{
const
{
originAsyncData
,
value
}
=
state
;
const
current
=
originAsyncData
.
find
(
item
=>
item
.
value
===
value
);
if
(
current
)
{
setFieldValue
(
'logisticsNameTxt'
,
current
.
label
);
}
});
}
}
actions=
{
formActions
}
schema=
{
schema
}
onSubmit=
{
values
=>
handleSubmit
(
values
)
}
/>
</
Drawer
>
);
};
export
default
ReturnDeliverDrawer
;
src/pages/afterService/returnApplication/returnPrDeliver/components/ReturnDeliverDrawer/schema.ts
0 → 100644
View file @
1544d920
/*
* @Author: XieZhiXiong
* @Date: 2021-08-07 15:14:04
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-08-07 19:50:34
* @Description:
*/
import
{
ISchema
}
from
'@formily/antd'
;
import
moment
from
'moment'
;
export
const
schema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
productList
:
{
type
:
'array'
,
'x-component'
:
'ArrayTable'
,
'x-component-props'
:
{
renderAddition
:
()
=>
null
,
renderRemove
:
()
=>
null
,
renderMoveDown
:
()
=>
null
,
renderMoveUp
:
()
=>
null
,
operationsWidth
:
1
,
},
items
:
{
type
:
'object'
,
properties
:
{
orderNo
:
{
type
:
'string'
,
title
:
'订单号'
,
editable
:
false
,
},
productId
:
{
type
:
'string'
,
title
:
'商品ID'
,
editable
:
false
,
},
productName
:
{
type
:
'string'
,
title
:
'商品名称'
,
editable
:
false
,
},
category
:
{
type
:
'string'
,
title
:
'品类'
,
editable
:
false
,
},
brand
:
{
type
:
'string'
,
title
:
'品牌'
,
editable
:
false
,
},
unit
:
{
type
:
'string'
,
title
:
'单位'
,
editable
:
false
,
},
returnCount
:
{
type
:
'string'
,
title
:
'退货数量'
,
editable
:
false
,
},
deliveryCount
:
{
type
:
'string'
,
title
:
'已退货发货'
,
editable
:
false
,
},
noDeliveryCount
:
{
type
:
'string'
,
title
:
'未退货发货'
,
editable
:
false
,
},
receiveCount
:
{
type
:
'string'
,
title
:
'已退货收货'
,
editable
:
false
,
},
subCount
:
{
type
:
'string'
,
title
:
'差异数量'
,
editable
:
false
,
},
count
:
{
type
:
'string'
,
title
:
'退货发货数量'
,
'x-rules'
:
[
{
required
:
true
,
message
:
'请输入退货发货数量'
,
},
],
},
},
}
},
MEGA_LAYOUT
:
{
type
:
'object'
,
'x-component'
:
'Mega-Layout'
,
'x-component-props'
:
{
grid
:
true
,
full
:
true
,
autoRow
:
true
,
columns
:
2
,
labelCol
:
6
,
wrapperCol
:
18
,
labelAlign
:
'left'
,
},
properties
:
{
returnDeliverAddress
:
{
type
:
'string'
,
title
:
'退货发货地址'
,
'x-component'
:
'CustomAddressSelect'
,
required
:
true
,
'x-component-props'
:
{},
},
deliveryTime
:
{
type
:
'date'
,
title
:
'退货发货时间'
,
'x-component-props'
:
{
format
:
'YYYY-MM-DD HH:mm:ss'
,
showTime
:
true
,
},
required
:
true
,
default
:
moment
().
format
(
'YYYY-MM-DD HH:mm:ss'
),
},
logisticsOrderNo
:
{
type
:
'string'
,
title
:
'物流单号'
,
required
:
true
,
'x-component-props'
:
{
maxLength
:
11
,
},
},
logisticsName
:
{
type
:
'string'
,
title
:
'物流公司'
,
required
:
true
,
enum
:
[],
'x-component-props'
:
{
},
},
// 收集值用
logisticsNameTxt
:
{
title
:
'物流公司'
,
type
:
'string'
,
display
:
false
,
},
},
},
},
};
\ No newline at end of file
src/pages/afterService/returnApplication/returnPrDeliver/index.tsx
View file @
1544d920
...
...
@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-11-06 16:30:44
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-0
1-08 10:13:2
1
* @LastEditTime: 2021-0
8-07 20:41:3
1
* @Description: 待新增退货发货单
*/
import
React
,
{
useState
,
useRef
}
from
'react'
;
...
...
@@ -148,7 +148,7 @@ const ReturnPrDeliver: React.FC = () => {
<
Card
>
<
StandardTable
tableProps=
{
{
rowKey
:
'
i
d'
,
rowKey
:
'
returnI
d'
,
}
}
columns=
{
columns
}
currentRef=
{
ref
}
...
...
src/pages/afterService/returnApplication/returnPrDeliver/verify.tsx
View file @
1544d920
/*
* @Author: XieZhiXiong
* @Date: 2021-01-06 11:36:34
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-08-07 19:20:26
* @Description: 退货发货
*/
import
React
,
{
useState
}
from
'react'
;
import
{
Button
}
from
'antd'
;
import
{
history
}
from
'umi'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
SettingOutlined
}
from
'@ant-design/icons'
;
import
moment
from
'moment'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
RETURN_GOODS_MANUAL_DELIVERY
,
RETURN_GOODS_MANUAL_DELIVERY_CONTRACT
}
from
'../../constants'
;
import
ManualDeliveryModal
from
'../../components/ManualDeliveryModal
'
;
import
ReturnDeliverDrawer
,
{
ValuesType
}
from
'./components/ReturnDeliverDrawer
'
;
import
DetailInfo
from
'../components/DetailInfo'
;
const
ReturnPrDeliverVerify
:
React
.
FC
=
()
=>
{
const
{
id
}
=
usePageStatus
();
const
[
modalVisible
,
setModal
Visible
]
=
useState
(
false
);
const
[
visible
,
set
Visible
]
=
useState
(
false
);
const
[
submitLoading
,
setSubmitLoading
]
=
useState
(
false
);
const
handleSubmit
=
values
=>
{
const
handleSubmit
=
(
values
:
ValuesType
)
=>
{
if
(
!
id
)
{
return
;
}
const
{
productList
,
returnDeliverAddress
,
deliveryTime
,
logisticsNameTxt
,
logisticsOrderNo
,
}
=
values
;
setSubmitLoading
(
true
);
PublicApi
.
postAsReturnGoodsManualReturnDeliveryGoods
({
dataId
:
id
,
...
values
,
returnId
:
+
id
,
deliveryAddress
:
`
${
returnDeliverAddress
.
fullAddress
}
${
returnDeliverAddress
.
name
}
/
${
returnDeliverAddress
.
phone
}
`
,
productList
:
productList
.
map
((
item
)
=>
({
productId
:
item
.
productId
,
returnCount
:
+
item
.
count
,
})),
deliveryTime
:
moment
(
deliveryTime
).
valueOf
(),
logisticsName
:
logisticsNameTxt
,
logisticsOrderNo
,
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
handleVisibleDrawer
(
false
);
setTimeout
(()
=>
{
history
.
goBack
();
},
800
);
}
}).
finally
(()
=>
{
setSubmitLoading
(
false
);
});
};
const
handleVisible
=
flag
=>
{
set
Modal
Visible
(
!!
flag
);
const
handleVisible
Drawer
=
flag
=>
{
setVisible
(
!!
flag
);
};
return
(
...
...
@@ -44,24 +69,26 @@ const ReturnPrDeliverVerify: React.FC = () => {
<
Button
type=
"default"
icon=
{
<
SettingOutlined
/>
}
onClick=
{
()
=>
handleVisible
(
true
)
}
onClick=
{
()
=>
handleVisible
Drawer
(
true
)
}
>
手工
退货发货
退货发货
</
Button
>
)
}
<
ReturnDeliverDrawer
value=
{
{
productList
:
info
?.
goodsDetailList
,
}
}
visible=
{
visible
}
onClose=
{
()
=>
handleVisibleDrawer
(
false
)
}
onSubmit=
{
handleSubmit
}
submitLoading=
{
submitLoading
}
/>
</>
)
}
target=
"/memberCenter/afterService/returnApplication/returnPrDeliver"
isEditRefundDeliver
/>
<
ManualDeliveryModal
value=
{
{}
}
visible=
{
modalVisible
}
confirmLoading=
{
submitLoading
}
onSubmit=
{
handleSubmit
}
onVisible=
{
handleVisible
}
/>
</>
);
};
...
...
src/pages/afterService/returnApplication/returnPrSubmit/components/ReturnForm/index.tsx
View file @
1544d920
This diff is collapsed.
Click to expand it.
src/pages/afterService/returnApplication/returnPrSubmit/components/ReturnForm/schema/index.ts
View file @
1544d920
...
...
@@ -159,7 +159,6 @@ export const addSchema = (orderType: number): ISchema => {
effects
:
(
$
,
actions
)
=>
{
},
inline
:
false
,
}
},
tableProps
:
{
...
...
@@ -500,9 +499,9 @@ export const addSchema = (orderType: number): ISchema => {
title
:
'退货自提地址'
,
type
:
'string'
,
visible
:
false
,
'x-component'
:
'
AddressFormItem
'
,
'x-component'
:
'
CustomAddressSelect
'
,
'x-component-props'
:
{
dataSource
:
[]
,
isDefaultAddress
:
true
,
},
'x-rules'
:
[
{
...
...
src/pages/afterService/returnManage/returnPrReceived/verify.tsx
View file @
1544d920
...
...
@@ -2,84 +2,20 @@
* @Author: XieZhiXiong
* @Date: 2021-01-06 11:36:34
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-0
6-07 18:06:03
* @LastEditTime: 2021-0
8-07 19:51:22
* @Description:
*/
import
React
,
{
useState
}
from
'react'
;
import
{
Button
}
from
'antd'
;
import
{
history
}
from
'umi'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
SettingOutlined
}
from
'@ant-design/icons'
;
import
React
from
'react'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
RETURN_GOODS_MANUAL_DELIVERY
,
RETURN_GOODS_MANUAL_DELIVERY_CONTRACT
}
from
'../../constants'
;
import
ManualDeliveryModal
from
'../../components/ManualDeliveryModal'
;
import
DetailInfo
from
'../components/DetailInfo'
;
const
ReturnPrReceivedVerify
:
React
.
FC
=
()
=>
{
const
{
id
}
=
usePageStatus
();
const
[
modalVisible
,
setModalVisible
]
=
useState
(
false
);
const
[
submitLoading
,
setSubmitLoading
]
=
useState
(
false
);
const
handleSubmit
=
values
=>
{
if
(
!
id
)
{
return
;
}
setSubmitLoading
(
true
);
PublicApi
.
postAsReturnGoodsConfirmManualReturnReceiveGoods
({
dataId
:
+
id
,
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
history
.
goBack
();
}
}).
finally
(()
=>
{
setSubmitLoading
(
false
);
});
};
const
handleVisible
=
flag
=>
{
setModalVisible
(
!!
flag
);
};
return
(
<>
<
DetailInfo
id=
{
id
}
headExtra=
{
info
=>
{
const
detailed
=
info
||
{};
// @ts-ignore
const
{
manualReturnGoodsAddress
=
{}
}
=
detailed
;
return
(
<>
{
(
info
&&
(
info
.
taskType
===
RETURN_GOODS_MANUAL_DELIVERY
||
info
.
taskType
===
RETURN_GOODS_MANUAL_DELIVERY_CONTRACT
))
&&
(
<>
<
Button
type=
"default"
icon=
{
<
SettingOutlined
/>
}
onClick=
{
()
=>
handleVisible
(
true
)
}
>
手工确认退货收货
</
Button
>
<
ManualDeliveryModal
key=
"2"
value=
{
{
deliveryAddressTxt
:
manualReturnGoodsAddress
.
deliveryAddress
,
deliveryTime
:
manualReturnGoodsAddress
.
deliveryTime
,
logisticsOrderNo
:
manualReturnGoodsAddress
.
logisticsOrderNo
,
logisticsNameTxt
:
manualReturnGoodsAddress
.
logisticsName
,
}
}
visible=
{
modalVisible
}
confirmLoading=
{
submitLoading
}
onSubmit=
{
handleSubmit
}
onVisible=
{
handleVisible
}
isEdit=
{
false
}
/>
</>
)
}
</>
)
}
}
target=
"/memberCenter/afterService/returnManage/returnPrReceived"
isEditRefundDeliver
/>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment