Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
A
admin-ci-test
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
test-ci
admin-ci-test
Commits
a1c10727
提交
a1c10727
authored
10月 11, 2023
作者:
龚洪江
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
功能:租赁后台订单流程
上级
99ef2d92
隐藏空白字符变更
内嵌
并排
正在显示
15 个修改的文件
包含
314 行增加
和
703 行删除
+314
-703
orderManageType.ts
src/api/interface/orderManageType.ts
+66
-0
orderManage.ts
src/api/modules/orderManage.ts
+4
-0
index.tsx
...s/orderManage/equipmentOrder/comp/confirmReturn/index.tsx
+60
-11
index.tsx
.../orderManage/equipmentOrder/comp/detailDelivery/index.tsx
+0
-73
index.scss
...erManage/equipmentOrder/comp/detailInformation/index.scss
+27
-0
index.tsx
...derManage/equipmentOrder/comp/detailInformation/index.tsx
+38
-41
index.tsx
...rderManage/equipmentOrder/comp/detailMessageBox/index.tsx
+0
-12
index.tsx
...orderManage/equipmentOrder/comp/detailPurchaser/index.tsx
+91
-70
index.tsx
.../orderManage/equipmentOrder/comp/detailTimeLine/index.tsx
+0
-55
index.tsx
...ges/orderManage/equipmentOrder/comp/orderClosed/index.tsx
+0
-100
index.tsx
...es/orderManage/equipmentOrder/comp/orderConfirm/index.tsx
+0
-191
index.tsx
...ges/orderManage/equipmentOrder/comp/orderRefund/index.tsx
+0
-93
index.scss
src/pages/orderManage/equipmentOrder/detail/index.scss
+1
-18
index.tsx
src/pages/orderManage/equipmentOrder/detail/index.tsx
+21
-23
index.tsx
src/pages/orderManage/equipmentOrder/index.tsx
+6
-16
没有找到文件。
src/api/interface/orderManageType.ts
浏览文件 @
a1c10727
...
@@ -1667,6 +1667,17 @@ type rentReqType = {
...
@@ -1667,6 +1667,17 @@ type rentReqType = {
location
?:
string
;
location
?:
string
;
}[];
}[];
};
};
returnKdnExpDTO
?:
{
logisticCode
?:
string
;
shipperCode
?:
string
;
stateEx
?:
string
;
traces
?:
{
acceptStation
?:
string
;
acceptTime
?:
string
;
action
?:
string
;
location
?:
string
;
}[];
};
/**
/**
* 租赁商品id
* 租赁商品id
*/
*/
...
@@ -1705,6 +1716,40 @@ type rentReqType = {
...
@@ -1705,6 +1716,40 @@ type rentReqType = {
*/
*/
status
?:
number
;
status
?:
number
;
};
};
confirmReceipt
?:
{
/**
* 创建时间
*/
createTime
?:
string
;
/**
* 物流编号
*/
expressCode
?:
string
;
/**
* 快递单号
*/
expressNum
?:
string
;
/**
* 图片文件
*/
file
?:
string
;
/**
* id
*/
id
?:
number
;
/**
* 订单id
*/
leaseOrderId
?:
number
;
/**
* 退款原因
*/
reason
?:
string
;
/**
* 归还状态:0已归还 1无需归还
*/
status
?:
number
;
};
/**
/**
* 运费
* 运费
*/
*/
...
@@ -1964,3 +2009,24 @@ export type rentOrderSendType = InterFunction<
...
@@ -1964,3 +2009,24 @@ export type rentOrderSendType = InterFunction<
},
},
any
any
>
;
>
;
// 租赁订单-平台确认归还
export
type
rentPfConfirmOrderWareType
=
InterFunction
<
{
/**
* 商家确认商品是否破损 0:未破损 1:破损
*/
damage
?:
number
;
/**
* 订单id
*/
orderId
?:
number
;
/**
* 原因
*/
reason
?:
string
;
/**
* 归还状态 0已归还 1无需归还(注:发货后申请退款需要传,归还商品的时候不需要)
*/
},
any
>
;
src/api/modules/orderManage.ts
浏览文件 @
a1c10727
...
@@ -42,6 +42,7 @@ import {
...
@@ -42,6 +42,7 @@ import {
rentOrderDictType
,
rentOrderDictType
,
rentOrderSendType
,
rentOrderSendType
,
rentOrderDetailType
,
rentOrderDetailType
,
rentPfConfirmOrderWareType
,
}
from
'~/api/interface/orderManageType'
;
}
from
'~/api/interface/orderManageType'
;
export
class
OrderManageAPI
{
export
class
OrderManageAPI
{
...
@@ -172,4 +173,7 @@ export class OrderManageAPI {
...
@@ -172,4 +173,7 @@ export class OrderManageAPI {
// 租赁-订单详情
// 租赁-订单详情
static
getRentOrderDetail
:
rentOrderDetailType
=
(
params
)
=>
static
getRentOrderDetail
:
rentOrderDetailType
=
(
params
)
=>
axios
.
get
(
'/oms/lease/order/detail'
,
{
params
});
axios
.
get
(
'/oms/lease/order/detail'
,
{
params
});
// 租赁订单-平台确认归还
static
rentPfConfirmOrderWare
:
rentPfConfirmOrderWareType
=
(
data
)
=>
axios
.
post
(
'/oms/lease/order/pfConfirmOrderWare'
,
data
);
}
}
src/pages/orderManage/equipmentOrder/comp/confirmReturn/index.tsx
浏览文件 @
a1c10727
import
{
Form
,
Input
,
Modal
,
ModalProps
,
Radio
}
from
'antd'
;
import
{
Form
,
Input
,
Modal
,
ModalProps
,
Radio
,
RadioChangeEvent
,
Button
,
message
}
from
'antd'
;
import
{
FC
}
from
'react'
;
import
React
,
{
FC
,
useState
}
from
'react'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
rentOrderDetailType
}
from
'~/api/interface/orderManageType'
;
import
{
rentOrderDetailType
}
from
'~/api/interface/orderManageType'
;
import
LogisticsStepModal
from
'~/components/order/productOrder/logisticsStepModal'
;
import
{
OrderManageAPI
}
from
'~/api'
;
// 租赁订单详情返回类型
// 租赁订单详情返回类型
type
detailType
=
InterDataType
<
rentOrderDetailType
>
;
type
detailType
=
InterDataType
<
rentOrderDetailType
>
;
...
@@ -10,33 +12,80 @@ interface selfProps {
...
@@ -10,33 +12,80 @@ interface selfProps {
onOk
:
()
=>
void
;
onOk
:
()
=>
void
;
onCancel
:
()
=>
void
;
onCancel
:
()
=>
void
;
currentOrderItem
:
detailType
|
undefined
;
currentOrderItem
:
detailType
|
undefined
;
modalTitle
:
string
;
}
}
const
ConfirmReturn
:
FC
<
ModalProps
&
selfProps
>
=
({
open
,
onOk
,
onCancel
})
=>
{
const
ConfirmReturn
:
FC
<
ModalProps
&
selfProps
>
=
({
open
,
onOk
,
onCancel
,
currentOrderItem
,
modalTitle
,
})
=>
{
const
[
form
]
=
Form
.
useForm
<
{
damage
:
number
;
reason
:
string
}
>
();
const
[
form
]
=
Form
.
useForm
<
{
damage
:
number
;
reason
:
string
}
>
();
const
[
isShowReason
,
setIsShowReason
]
=
useState
<
boolean
>
(
false
);
const
[
logisticsStepModalShow
,
setLogisticsStepModalShow
]
=
useState
<
boolean
>
(
false
);
const
radioChangeEvent
=
(
e
:
RadioChangeEvent
)
=>
{
setIsShowReason
(
!!
e
.
target
.
value
);
};
// 物流弹窗
const
logisticsStepModalShowClick
=
()
=>
{
setLogisticsStepModalShow
(
true
);
};
const
logisticsStepModalCancel
=
()
=>
{
setLogisticsStepModalShow
(
false
);
};
const
handleOk
=
()
=>
{
const
handleOk
=
()
=>
{
onOk
();
form
.
validateFields
().
then
((
values
)
=>
{
OrderManageAPI
.
rentPfConfirmOrderWare
({
...
values
,
orderId
:
currentOrderItem
?.
id
,
}).
then
(({
code
})
=>
{
if
(
code
===
'200'
)
{
message
.
success
(
'确认归还成功'
);
form
.
resetFields
();
setIsShowReason
(
false
);
onOk
();
}
});
});
};
};
const
handleCancel
=
()
=>
{
const
handleCancel
=
()
=>
{
onCancel
();
onCancel
();
form
.
resetFields
();
setIsShowReason
(
false
);
};
};
return
(
return
(
<
Modal
open=
{
open
}
title=
'确认归还'
onOk=
{
handleOk
}
onCancel=
{
handleCancel
}
>
<
Modal
open=
{
open
}
onOk=
{
handleOk
}
onCancel=
{
handleCancel
}
title=
{
modalTitle
}
>
<
Form
initialValues=
{
{
damage
:
0
}
}
form=
{
form
}
>
<
Form
initialValues=
{
{
damage
:
0
}
}
form=
{
form
}
>
<
Form
.
Item
label=
'判定'
name=
'damage'
>
<
Form
.
Item
label=
'判定'
name=
'damage'
>
<
Radio
.
Group
>
<
Radio
.
Group
onChange=
{
radioChangeEvent
}
>
<
Radio
value=
{
0
}
>
未破损
</
Radio
>
<
Radio
value=
{
0
}
>
未破损
</
Radio
>
<
Radio
value=
{
1
}
>
破损
</
Radio
>
<
Radio
value=
{
1
}
>
破损
</
Radio
>
</
Radio
.
Group
>
</
Radio
.
Group
>
</
Form
.
Item
>
</
Form
.
Item
>
<
Form
.
Item
label=
'原因'
name=
'reason'
>
{
isShowReason
?
(
<
Input
.
TextArea
placeholder=
'请输入原因'
maxLength=
{
70
}
showCount
rows=
{
3
}
/>
<
Form
.
Item
label=
'原因'
name=
'reason'
>
</
Form
.
Item
>
<
Input
.
TextArea
placeholder=
'请输入原因'
maxLength=
{
70
}
showCount
rows=
{
3
}
/>
<
Form
.
Item
label=
'图片'
>
</
Form
.
Item
>
<
div
className=
'image-file'
>
{}
</
div
>
)
:
(
''
)
}
<
Form
.
Item
label=
'物流信息'
>
<
div
>
<
Button
type=
'link'
onClick=
{
logisticsStepModalShowClick
}
>
查看详情
</
Button
>
</
div
>
</
Form
.
Item
>
</
Form
.
Item
>
<
LogisticsStepModal
open=
{
logisticsStepModalShow
}
onCancel=
{
logisticsStepModalCancel
}
logisticsStep=
{
currentOrderItem
?.
returnKdnExpDTO
}
/>
</
Form
>
</
Form
>
</
Modal
>
</
Modal
>
);
);
...
...
src/pages/orderManage/equipmentOrder/comp/detailDelivery/index.tsx
deleted
100644 → 0
浏览文件 @
99ef2d92
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
Image
}
from
'antd'
;
import
{
orderDetailType
,
orderImageDetailType
}
from
'~/api/interface/orderManageType'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
OrderManageAPI
}
from
'~/api'
;
// 接口返回的类型
type
DataType
=
InterDataType
<
orderDetailType
>
;
// 参数类型
type
PropsType
=
{
detail
:
DataType
;
};
// 列表的类型
type
ListType
=
InterDataType
<
orderImageDetailType
>
;
// 设备状态列表
const
vcuSatusList
=
[
{
label
:
'正常'
,
value
:
0
},
{
label
:
'故障'
,
value
:
1
},
];
// 0:发货 1:收货 2:归还 3:平台收货
const
vcuTypeList
=
[
{
label
:
'发货验收'
,
value
:
0
},
{
label
:
'收货验收'
,
value
:
1
},
{
label
:
'归还验收'
,
value
:
2
},
{
label
:
'平台收货'
,
value
:
3
},
{
label
:
'退货申请'
,
value
:
4
},
];
const
DetailDelivery
:
React
.
FC
<
PropsType
>
=
(
props
)
=>
{
const
{
detail
}
=
props
;
// 验收信息列表
const
[
orderImageList
,
setOrderImageList
]
=
useState
<
ListType
>
([]);
// 获取订单验收信息
const
getOrderImageDetail
=
async
()
=>
{
const
res
=
await
OrderManageAPI
.
orderImageDetail
({
orderInfoId
:
detail
?.
id
});
if
(
res
&&
res
.
code
===
'200'
)
{
setOrderImageList
(
res
.
result
);
console
.
log
(
'获取订单验收信息 --->'
,
res
.
result
);
}
};
// 转换设备状态
const
getVcuSatus
=
(
code
:
number
)
=>
{
return
vcuSatusList
.
find
((
item
)
=>
item
.
value
===
code
)?.
label
||
code
;
};
// 转换标题
const
getVcuType
=
(
code
:
number
)
=>
{
return
vcuTypeList
.
find
((
item
)
=>
item
.
value
===
code
)?.
label
||
code
;
};
// componentDidMount
useEffect
(()
=>
{
if
(
!
detail
)
return
;
getOrderImageDetail
().
then
();
},
[
detail
]);
return
(
<
div
className=
{
'detail-delivery detail-half'
}
>
{
orderImageList
.
map
((
i
,
j
)
=>
(
<
div
key=
{
j
}
>
<
div
className=
{
'detail-title'
}
>
{
getVcuType
(
i
.
vcuType
)
}
</
div
>
<
div
className=
{
'detail-text'
}
>
验收状态:
{
getVcuSatus
(
i
.
vcuSatus
)
}
</
div
>
<
div
className=
{
'detail-text'
}
>
验收描述:
{
i
.
remark
||
'无'
}
</
div
>
<
div
className=
{
'detail-text'
}
>
验收凭证:
</
div
>
<
div
className=
{
'detail-image'
}
>
{
i
.
imgs
?.
map
((
i
,
j
)
=>
(
<
Image
key=
{
j
}
className=
{
'image'
}
src=
{
i
}
alt=
'付款凭证'
/>
))
}
{
!
i
.
imgs
&&
<
div
style=
{
{
height
:
'30px'
}
}
></
div
>
}
</
div
>
</
div
>
))
}
</
div
>
);
};
export
default
DetailDelivery
;
src/pages/orderManage/equipmentOrder/comp/detailInformation/index.scss
0 → 100644
浏览文件 @
a1c10727
.detail-information
{
.mall-sku-item
{
display
:
flex
;
align-items
:
center
;
margin-bottom
:
10px
;
.sku-img
{
width
:
48px
;
height
:
48px
;
}
.sku-info
{
margin-left
:
10px
;
line-height
:
16px
;
text-align
:
left
;
.info-name
{
color
:
#1677ff
}
.info-spec
{
margin-top
:
10px
;
span
:not
(
:last-child
)
{
&
:after
{
content
:
';'
;
}
}
}
}
}
}
src/pages/orderManage/equipmentOrder/comp/detailInformation/index.tsx
浏览文件 @
a1c10727
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
React
from
'react'
;
import
{
Table
}
from
'antd'
;
import
{
Image
,
Table
}
from
'antd'
;
import
{
ColumnsType
}
from
'antd/es/table'
;
import
{
ColumnsType
}
from
'antd/es/table'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
orderDetail
Type
}
from
'~/api/interface/orderManageType'
;
import
{
rentOrderDetailType
,
rentOrderDict
Type
}
from
'~/api/interface/orderManageType'
;
import
dayjs
from
'dayjs'
;
import
dayjs
from
'dayjs'
;
import
'./index.scss'
;
// 表格数据类型
// 表格数据类型
type
TableType
=
any
;
type
TableType
=
any
;
// 接口返回的类型
// 接口返回的类型
type
DataType
=
InterDataType
<
orderDetailType
>
;
type
DataType
=
InterDataType
<
rentOrderDetailType
>
;
// 订单状态返回类型
type
OrderStatusType
=
InterDataType
<
rentOrderDictType
>
;
// 参数类型
// 参数类型
type
PropsType
=
{
type
PropsType
=
{
detail
:
DataType
;
detail
:
DataType
;
orderStatusList
:
OrderStatusType
;
};
};
const
DetailInformation
:
React
.
FC
<
PropsType
>
=
(
props
)
=>
{
const
DetailInformation
:
React
.
FC
<
PropsType
>
=
({
detail
,
orderStatusList
})
=>
{
const
{
detail
}
=
props
;
// 表格数据
const
[
tableData
,
setTableData
]
=
useState
<
TableType
>
([]);
// 表格结构
// 表格结构
const
columns
:
ColumnsType
<
TableType
[
0
]
>
=
[
const
columns
:
ColumnsType
<
TableType
[
0
]
>
=
[
{
{
title
:
'商品'
,
title
:
'商品'
,
dataIndex
:
'wareTitle'
,
align
:
'center'
,
align
:
'center'
,
width
:
'20%'
,
render
:
(
_text
:
any
,
record
)
=>
(
<
div
className=
'mall-sku-item'
>
<
Image
src=
{
record
?.
skuImg
}
className=
'sku-img'
/>
<
div
className=
'sku-info'
>
<
div
className=
'info-name'
>
{
record
?.
orderName
}
</
div
>
<
div
className=
'info-spec'
>
{
Object
.
entries
(
JSON
.
parse
(
record
?.
sku
||
'[]'
)).
map
((
v
,
index
)
=>
(
<
span
key=
{
index
}
>
{
v
.
join
(
':'
)
}
</
span
>
))
}
</
div
>
</
div
>
</
div
>
),
},
},
{
{
title
:
'单价(元)'
,
title
:
'单价(元)'
,
dataIndex
:
'unitPrice'
,
dataIndex
:
'unitPrice'
,
align
:
'center'
,
align
:
'center'
,
render
:
(
text
)
=>
`¥
${
text
.
toLocaleString
()
}
`
,
render
:
(
text
)
=>
`¥
${
text
?.
toLocaleString
()
||
0
}
`,
},
},
{
{
title: '数量',
title: '数量',
...
@@ -38,58 +53,40 @@ const DetailInformation: React.FC<PropsType> = (props) => {
...
@@ -38,58 +53,40 @@ const DetailInformation: React.FC<PropsType> = (props) => {
},
},
{
{
title: '订单状态',
title: '订单状态',
dataIndex
:
'
waiting
'
,
dataIndex: '
statusCode
',
align: 'center',
align: 'center',
render: (text: number) =>
orderStatusList.find((item) => item.status === text?.toString())?.waiting,
},
},
{
{
title: '应收款',
title: '应收款',
dataIndex
:
'
shouldPay
'
,
dataIndex: '
orderTotalAmount
',
align: 'center',
align: 'center',
render
:
(
text
)
=>
`¥
${
text
.
toLocaleString
()
}
`
,
render: (text) => `
¥
$
{
text
?.
toLocaleString
()
||
0
}
`,
},
},
];
];
useEffect
(()
=>
{
if
(
!
detail
)
return
;
setTableData
([
{
id
:
1
,
wareTitle
:
detail
?.
wareTitle
,
unitPrice
:
detail
?.
unitPrice
,
wareNum
:
detail
?.
wareNum
,
waiting
:
detail
?.
waiting
,
shouldPay
:
detail
?.
shouldPay
,
},
]);
},
[
detail
]);
return (
return (
<
div
className=
{
'detail-information'
}
>
<div className='detail-information'>
<
div
className=
{
'detail-title'
}
>
订单明细
</
div
>
<div className='detail-title'>订单明细</div>
<
div
className=
{
'detail-text'
}
>
<div className='detail-text'>
<
span
className=
{
'item'
}
>
订单编号:
{
detail
?.
orderNo
}
</
span
>
<span className='item'>订单编号:{detail?.orderNo}</span>
<
span
className=
{
'item'
}
style=
{
{
display
:
'none'
}
}
>
<span className='item'>
合同编号:UAV202334741131
</
span
>
<
span
className=
{
'item'
}
>
订单租期:
订单租期:
{dayjs(detail?.startDate).format('YYYY-MM-DD')}
{dayjs(detail?.startDate).format('YYYY-MM-DD')}
{' ~ '}
{' ~ '}
{dayjs(detail?.endDate).format('YYYY-MM-DD')}
{dayjs(detail?.endDate).format('YYYY-MM-DD')}
</span>
</span>
<
span
className=
{
'item'
}
>
创建时间:
{
detail
?.
createTime
}
</
span
>
<span className=
'item'>{`
创建时间:
$
{
detail
?.
createTime
}
`
}</span>
</div>
</div>
<Table
<Table
style=
{
{
margin
:
'20px auto'
,
width
:
'90%'
}
}
size='small'
size='small'
dataSource=
{
tableData
}
dataSource={
[detail]
}
columns={columns}
columns={columns}
rowKey='id'
rowKey='id'
bordered
bordered
pagination={false}
pagination={false}
// rowSelection={{ selectedRowKeys, onChange: onSelectChange }}
/>
/>
<
div
className=
'detail-price'
>
实收款
<
span
className=
{
'num'
}
>
¥
{
detail
?.
actualPay
}
</
span
>
元
</
div
>
</div>
</div>
);
);
};
};
...
...
src/pages/orderManage/equipmentOrder/comp/detailMessageBox/index.tsx
deleted
100644 → 0
浏览文件 @
99ef2d92
import
MessageBox
from
'~/components/messageBox'
;
function
DetailMessageBox
()
{
return
(
<
div
className=
{
'detail-delivery detail-half'
}
>
<
div
className=
{
'detail-title'
}
>
订单动态
</
div
>
<
MessageBox
/>
</
div
>
);
}
export
default
DetailMessageBox
;
src/pages/orderManage/equipmentOrder/comp/detailPurchaser/index.tsx
浏览文件 @
a1c10727
import
React
,
{
useEffect
}
from
'react'
;
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
Button
,
Image
}
from
'antd'
;
import
{
Button
,
Steps
,
Image
}
from
'antd'
;
import
{
o
rderDetailType
}
from
'~/api/interface/orderManageType'
;
import
{
rentO
rderDetailType
}
from
'~/api/interface/orderManageType'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
OrderManageAPI
}
from
'~/api'
;
import
{
OrderManageAPI
}
from
'~/api'
;
import
LogisticsStepModal
from
'~/components/order/productOrder/logisticsStepModal'
;
// 接口返回的类型
// 接口返回的类型
type
DataType
=
InterDataType
<
o
rderDetailType
>
;
type
DataType
=
InterDataType
<
rentO
rderDetailType
>
;
// 参数类型
// 参数类型
type
PropsType
=
{
type
PropsType
=
{
detail
:
DataType
;
detail
:
DataType
;
...
@@ -13,6 +14,7 @@ type PropsType = {
...
@@ -13,6 +14,7 @@ type PropsType = {
const
DetailPurchaser
:
React
.
FC
<
PropsType
>
=
(
props
)
=>
{
const
DetailPurchaser
:
React
.
FC
<
PropsType
>
=
(
props
)
=>
{
const
{
detail
}
=
props
;
const
{
detail
}
=
props
;
const
[
logisticsStepModalShow
,
setLogisticsStepModalShow
]
=
useState
<
boolean
>
(
false
);
// 物流列表
// 物流列表
const
[
expressList
,
setExpressList
]
=
React
.
useState
<
{
label
:
string
;
value
:
string
}[]
>
([]);
const
[
expressList
,
setExpressList
]
=
React
.
useState
<
{
label
:
string
;
value
:
string
}[]
>
([]);
// 获取物流信息
// 获取物流信息
...
@@ -20,88 +22,107 @@ const DetailPurchaser: React.FC<PropsType> = (props) => {
...
@@ -20,88 +22,107 @@ const DetailPurchaser: React.FC<PropsType> = (props) => {
const
res
=
await
OrderManageAPI
.
listExpressInfo
({});
const
res
=
await
OrderManageAPI
.
listExpressInfo
({});
if
(
res
&&
res
.
code
===
'200'
)
{
if
(
res
&&
res
.
code
===
'200'
)
{
setExpressList
(
res
.
result
.
map
((
item
)
=>
({
label
:
item
.
exName
,
value
:
item
.
exCode
})));
setExpressList
(
res
.
result
.
map
((
item
)
=>
({
label
:
item
.
exName
,
value
:
item
.
exCode
})));
// console.log(res);
}
}
};
};
// 转换物流信息
// 转换物流信息
const
getExpressInfo
=
(
code
:
string
|
undefined
|
null
)
=>
{
const
getExpressInfo
=
(
code
:
string
|
undefined
|
null
)
=>
{
return
expressList
.
find
((
item
)
=>
item
.
value
===
code
)?.
label
||
code
;
return
expressList
.
find
((
item
)
=>
item
.
value
===
code
)?.
label
||
code
;
};
};
// 物流弹窗
const
logisticsStepModalShowClick
=
()
=>
{
setLogisticsStepModalShow
(
true
);
};
const
logisticsStepModalCancel
=
()
=>
{
setLogisticsStepModalShow
(
false
);
};
// componentDidMount
// componentDidMount
useEffect
(()
=>
{
useEffect
(()
=>
{
getListExpressInfo
().
then
();
getListExpressInfo
().
then
();
},
[]);
},
[]);
return
(
return
(
<
div
className=
{
'detail-purchaser detail-half'
}
>
<
div
className=
'detail-purchaser detail-half'
>
<
div
className=
{
'detail-title'
}
>
买家信息
</
div
>
<
div
className=
'detail-title'
>
买家信息
</
div
>
<
div
className=
{
'detail-text'
}
>
UID:
{
detail
?.
uid
}
</
div
>
<
div
className=
'detail-text'
>
UID:
{
detail
?.
userAccountId
}
</
div
>
<
div
className=
{
'detail-text'
}
>
姓名:
{
detail
?.
buyerName
}
</
div
>
<
div
className=
'detail-text'
>
姓名:
{
detail
?.
nickname
}
</
div
>
<
div
className=
{
'detail-text'
}
>
手机号:
{
detail
?.
buyerPhone
}
</
div
>
<
div
className=
'detail-text'
>
手机号:
{
detail
?.
phoneNum
}
</
div
>
{
/*<div className={'detail-text'}>企业: 浙江科比特创新科技有限公司</div>*/
}
<
div
className=
'detail-text'
>
备注:
{
detail
?.
userRemark
}
</
div
>
<
div
className=
{
'detail-text'
}
>
备注:
{
detail
?.
remark
}
</
div
>
<
div
className=
'detail-title'
>
发货信息
</
div
>
<
div
className=
'detail-text'
>
收货人:
{
detail
?.
uavOrderExpressDTO
?.
takeName
}
</
div
>
<
div
style=
{
{
display
:
'none'
}
}
>
<
div
className=
'detail-text'
>
手机号:
{
detail
?.
uavOrderExpressDTO
?.
takePhone
}
</
div
>
<
div
className=
{
'detail-title'
}
>
合同信息
</
div
>
<
div
className=
'detail-text'
>
<
div
className=
{
'detail-text'
}
>
合同编号: UAV202334741131
</
div
>
收货地址:
<
div
className=
{
'detail-text'
}
>
合同状态: 已归档
</
div
>
{
(
detail
?.
uavOrderExpressDTO
?.
takeRegion
?.
split
(
'/'
).
join
(
''
)
||
''
)
+
<
div
className=
{
'detail-text'
}
>
detail
?.
uavOrderExpressDTO
?.
takeAddress
}
合同操作:
<
Button
type=
{
'link'
}
>
平台签署
</
Button
>
<
Button
type=
{
'link'
}
>
查看
</
Button
>
<
Button
type=
{
'link'
}
>
下载
</
Button
>
</
div
>
</
div
>
</
div
>
{
detail
?.
uavOrderExpressDTO
?.
sendExpCode
&&
(
<
div
style=
{
{
display
:
'none'
}
}
>
<>
<
div
className=
{
'detail-title'
}
>
付款凭证
</
div
>
<
div
className=
'detail-text'
>
物流单号:
{
detail
?.
uavOrderExpressDTO
?.
sendExpNo
}
</
div
>
<
div
className=
{
'detail-text'
}
>
预付款:
</
div
>
<
div
className=
'detail-text'
>
<
div
className=
{
'detail-image'
}
>
物流公司:
{
getExpressInfo
(
detail
?.
uavOrderExpressDTO
?.
sendExpCode
)
}
{
[
</
div
>
'https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/infrastructure-05-05.png'
,
<
div
className=
'detail-text'
style=
{
{
display
:
'flex'
}
}
>
'https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/infrastructure-05-05.png'
,
<
span
>
物流进度:
</
span
>
].
map
((
i
,
j
)
=>
(
<
div
>
<
Image
key=
{
j
}
className=
{
'image'
}
src=
{
i
}
alt=
'付款凭证'
/>
<
Steps
))
}
direction=
'vertical'
current=
{
0
}
progressDot
items=
{
[
{
title
:
detail
?.
kdnExpDTO
?.
traces
?.[
0
].
acceptStation
,
description
:
detail
?.
kdnExpDTO
?.
traces
?.[
0
].
acceptTime
,
},
{
title
:
`送至${
(detail?.uavOrderExpressDTO?.takeRegion?.split('/').join('') || '') +
detail?.uavOrderExpressDTO?.takeAddress
}`
,
},
]
}
/>
</
div
>
<
div
>
<
Button
type=
'link'
onClick=
{
logisticsStepModalShowClick
}
>
查看详情
</
Button
>
</
div
>
</
div
>
</>
)
}
{
detail
?.
confirmReceipt
?.
file
?
(
<
div
>
<
div
className=
'detail-title'
>
收货信息
</
div
>
<
div
className=
'detail-text'
style=
{
{
display
:
'flex'
}
}
>
<
span
>
图片:
</
span
>
<
div
className=
'image-file'
style=
{
{
display
:
'flex'
,
alignItems
:
'center'
,
flexWrap
:
'wrap'
}
}
>
{
JSON
.
parse
(
detail
?.
confirmReceipt
.
file
).
map
((
v
:
any
,
index
:
number
)
=>
(
<
div
style=
{
{
marginRight
:
'10px'
,
marginBottom
:
'10px'
}
}
key=
{
index
}
>
<
Image
src=
{
v
.
filePath
}
width=
{
50
}
height=
{
50
}
/>
</
div
>
))
}
</
div
>
</
div
>
</
div
>
</
div
>
<
div
className=
{
'detail-text'
}
>
尾款:
</
div
>
)
:
(
<
div
className=
{
'detail-image'
}
>
''
{
[
)
}
'https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/infrastructure-05-05.png'
,
<
div
className=
'detail-title'
>
归还信息
</
div
>
'https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/infrastructure-05-05.png'
,
<
div
className=
'detail-text'
>
物流单号:
{
detail
?.
returnKdnExpDTO
?.
logisticCode
}
</
div
>
].
map
((
i
,
j
)
=>
(
<
div
className=
'detail-text'
>
<
Image
key=
{
j
}
className=
{
'image'
}
src=
{
i
}
alt=
'付款凭证'
/>
物流公司:
{
getExpressInfo
(
detail
?.
returnKdnExpDTO
?.
shipperCode
)
}
))
}
</
div
>
<
div
className=
{
'detail-text'
}
>
全款:
</
div
>
<
div
className=
{
'detail-image'
}
>
{
[
'https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/infrastructure-05-05.png'
,
'https://pad-video-x.oss-cn-shenzhen.aliyuncs.com/file/infrastructure-05-05.png'
,
].
map
((
i
,
j
)
=>
(
<
Image
key=
{
j
}
className=
{
'image'
}
src=
{
i
}
alt=
'付款凭证'
/>
))
}
</
div
>
</
div
>
<
div
className=
{
'detail-title'
}
>
发货信息
</
div
>
<
div
className=
{
'detail-text'
}
>
收货人:
{
detail
?.
receipt
?.
takeName
}
</
div
>
<
div
className=
{
'detail-text'
}
>
手机号:
{
detail
?.
receipt
?.
takePhone
}
</
div
>
<
div
className=
{
'detail-text'
}
>
收货地址:
{
detail
?.
receipt
?.
detailAddress
}
</
div
>
<
div
className=
{
'detail-text'
}
>
物流单号:
{
detail
?.
receipt
?.
sendExNo
}
</
div
>
<
div
className=
{
'detail-text'
}
>
物流公司:
{
getExpressInfo
(
detail
?.
receipt
?.
sendExCode
)
}
</
div
>
<
div
className=
{
'detail-text'
}
>
物流进度:--
<
Button
type=
{
'link'
}
>
查看详情
</
Button
>
</
div
>
</
div
>
<
div
className=
'detail-text'
>
<
div
className=
{
'detail-title'
}
>
归还信息
</
div
>
<
div
className=
{
'detail-text'
}
>
收货人:
{
detail
?.
receipt
?.
renName
}
</
div
>
<
div
className=
{
'detail-text'
}
>
手机号:
{
detail
?.
receipt
?.
renPhone
}
</
div
>
<
div
className=
{
'detail-text'
}
>
收货地址:
{
detail
?.
receipt
?.
renAddress
}
</
div
>
<
div
className=
{
'detail-text'
}
>
物流单号:
{
detail
?.
receipt
?.
renExNo
}
</
div
>
<
div
className=
{
'detail-text'
}
>
物流公司:
{
getExpressInfo
(
detail
?.
receipt
?.
renExCode
)
}
</
div
>
<
div
className=
{
'detail-text'
}
>
物流进度:--
<
Button
type=
{
'link'
}
>
查看详情
</
Button
>
物流进度:--
<
Button
type=
{
'link'
}
>
查看详情
</
Button
>
</
div
>
</
div
>
<
LogisticsStepModal
open=
{
logisticsStepModalShow
}
onCancel=
{
logisticsStepModalCancel
}
logisticsStep=
{
detail
?.
kdnExpDTO
}
/>
</
div
>
</
div
>
);
);
};
};
...
...
src/pages/orderManage/equipmentOrder/comp/detailTimeLine/index.tsx
deleted
100644 → 0
浏览文件 @
99ef2d92
import
{
OrderManageAPI
}
from
'~/api'
;
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
Timeline
}
from
'antd'
;
import
{
orderDetailType
}
from
'~/api/interface/orderManageType'
;
import
{
InterDataType
}
from
'~/api/interface'
;
// 接口返回的类型
type
DataType
=
InterDataType
<
orderDetailType
>
;
// 参数类型
type
PropsType
=
{
detail
:
DataType
;
};
const
DetailTimeLine
:
React
.
FC
<
PropsType
>
=
(
props
)
=>
{
const
{
detail
}
=
props
;
// 流程列表
const
[
timeLineList
,
setTimeLineList
]
=
useState
<
{
label
:
string
;
color
:
string
}[]
>
([]);
// 获取订单流程
const
getOrderStatus
=
async
()
=>
{
const
res
=
await
OrderManageAPI
.
listTranStatus
({});
if
(
res
&&
res
.
code
===
'200'
)
{
// 转换列表数据(区分完成和未完)
const
list
=
res
.
result
.
map
((
i
)
=>
{
if
(
Number
(
i
.
status
)
<
Number
(
detail
?.
tranStatus
))
{
return
{
label
:
i
.
doing
,
color
:
'#1890ff'
,
};
}
else
{
return
{
label
:
i
.
waiting
,
color
:
'#ccc'
,
};
}
});
// 将当前项目变绿
const
current
=
list
.
findIndex
((
i
)
=>
i
.
color
===
'#ccc'
);
list
[
current
].
color
=
'#52c41a'
;
setTimeLineList
(
list
);
}
};
// componentDidMount
useEffect
(()
=>
{
if
(
!
detail
)
return
;
getOrderStatus
().
then
();
},
[
detail
]);
return
(
<
div
className=
{
'detail-timeline'
}
style=
{
{
width
:
'200px'
}
}
>
<
div
className=
{
'detail-title'
}
>
订单流程
</
div
>
<
Timeline
items=
{
timeLineList
}
mode=
{
'right'
}
/>
</
div
>
);
};
export
default
DetailTimeLine
;
src/pages/orderManage/equipmentOrder/comp/orderClosed/index.tsx
deleted
100644 → 0
浏览文件 @
99ef2d92
import
{
InterListType
,
InterReqType
}
from
'~/api/interface'
;
import
{
listPcWechatOrderType
,
platFormCloseOrderType
}
from
'~/api/interface/orderManageType'
;
import
React
from
'react'
;
import
{
Form
,
message
,
Modal
,
Select
}
from
'antd'
;
import
{
OrderManageAPI
}
from
'~/api'
;
// 表格数据类型
type
TableType
=
InterListType
<
listPcWechatOrderType
>
;
// 请求数据的类型
type
ReqType
=
InterReqType
<
platFormCloseOrderType
>
;
// 传参类型
interface
propType
{
title
:
string
;
open
:
boolean
;
closed
:
any
;
data
?:
TableType
[
0
];
}
const
OrderClosed
:
React
.
FC
<
propType
>
=
(
props
)
=>
{
OrderClosed
.
defaultProps
=
{
data
:
undefined
,
};
// 参数
const
{
title
,
open
,
closed
,
data
}
=
props
;
// 表单钩子
const
[
form
]
=
Form
.
useForm
<
ReqType
>
();
// 关闭弹窗
const
handleCancel
=
()
=>
{
form
.
resetFields
();
closed
();
};
// 确认事件
const
handleOk
=
()
=>
{
form
.
validateFields
()
.
then
(
async
(
values
)
=>
{
// console.log('确认事件 --->', values);
await
handleSubmit
(
values
);
})
.
catch
((
err
)
=>
{
message
.
warning
({
content
:
err
.
errorFields
[
0
].
errors
[
0
],
})
.
then
();
});
};
// 提交事件
const
handleSubmit
=
async
(
values
:
ReqType
)
=>
{
const
res
=
await
OrderManageAPI
.
platFormCloseOrder
({
...
values
,
orderInfoId
:
Number
(
data
?.
id
),
});
if
(
res
&&
res
.
code
===
'200'
)
{
message
.
success
(
'操作成功'
);
handleCancel
();
}
};
return
(
<
Modal
open=
{
open
}
title=
{
title
}
onCancel=
{
handleCancel
}
onOk=
{
handleOk
}
destroyOnClose
width=
{
400
}
>
<
Form
name=
'addForm'
form=
{
form
}
labelAlign=
'right'
labelCol=
{
{
span
:
6
}
}
wrapperCol=
{
{
span
:
12
}
}
>
<
Form
.
Item
label=
'关闭理由'
name=
'shutReason'
rules=
{
[{
required
:
true
,
message
:
'请选择关闭理由'
}]
}
>
<
Select
placeholder=
{
'请选择关闭理由'
}
options=
{
[
{
label
:
'未及时付款'
},
{
label
:
'买家不想买'
},
{
label
:
'买家信息填写错误,重新下单'
},
{
label
:
'恶意买家,同行捣乱'
},
{
label
:
'缺货'
},
{
label
:
'买家拍错了'
},
{
label
:
'其他原因'
},
].
map
((
i
)
=>
({
label
:
i
.
label
,
value
:
i
.
label
}))
}
allowClear
/>
</
Form
.
Item
>
</
Form
>
</
Modal
>
);
};
export
default
OrderClosed
;
src/pages/orderManage/equipmentOrder/comp/orderConfirm/index.tsx
deleted
100644 → 0
浏览文件 @
99ef2d92
import
{
InterListType
,
InterReqType
}
from
'~/api/interface'
;
import
{
listPcWechatOrderType
,
pfConfirmOrderWareType
}
from
'~/api/interface/orderManageType'
;
import
React
,
{
useEffect
}
from
'react'
;
import
{
Col
,
Form
,
Input
,
message
,
Modal
,
Radio
,
Row
}
from
'antd'
;
import
{
Uploader
}
from
'~/components/uploader'
;
import
{
PlusOutlined
}
from
'@ant-design/icons'
;
import
{
OrderManageAPI
}
from
'~/api'
;
// 表格数据类型
type
TableType
=
InterListType
<
listPcWechatOrderType
>
;
// 请求数据的类型
type
ReqType
=
InterReqType
<
pfConfirmOrderWareType
>
;
// 传参类型
interface
propType
{
title
:
string
;
open
:
boolean
;
closed
:
any
;
data
?:
TableType
[
0
];
}
const
OrderConfirm
:
React
.
FC
<
propType
>
=
(
props
)
=>
{
OrderConfirm
.
defaultProps
=
{
data
:
undefined
,
};
// 参数
const
{
title
,
open
,
closed
,
data
}
=
props
;
// 物流列表
const
[
expressList
,
setExpressList
]
=
React
.
useState
<
{
label
:
string
;
value
:
string
}[]
>
([]);
// 表单钩子
const
[
form
]
=
Form
.
useForm
<
ReqType
>
();
// 关闭弹窗
const
handleCancel
=
()
=>
{
form
.
resetFields
();
closed
();
};
// 确认事件
const
handleOk
=
()
=>
{
form
.
validateFields
()
.
then
(
async
(
values
)
=>
{
// console.log('确认事件 --->', values);
await
handleSubmit
(
values
);
})
.
catch
((
err
)
=>
{
message
.
warning
({
content
:
err
.
errorFields
[
0
].
errors
[
0
],
})
.
then
();
});
};
// 提交事件
const
handleSubmit
=
async
(
values
:
ReqType
)
=>
{
const
res
=
await
OrderManageAPI
.
pfConfirmOrderWare
({
...
values
,
orderInfoId
:
Number
(
data
?.
id
),
});
if
(
res
&&
res
.
code
===
'200'
)
{
message
.
success
(
'操作成功'
);
handleCancel
();
}
};
// 获取物流信息
const
getListExpressInfo
=
async
()
=>
{
const
res
=
await
OrderManageAPI
.
listExpressInfo
({});
if
(
res
&&
res
.
code
===
'200'
)
{
setExpressList
(
res
.
result
.
map
((
item
)
=>
({
label
:
item
.
exName
,
value
:
item
.
exCode
})));
// console.log(res);
}
};
// 转换物流信息
const
getExpressInfo
=
(
code
:
string
|
undefined
|
null
)
=>
{
return
expressList
.
find
((
item
)
=>
item
.
value
===
code
)?.
label
||
code
;
};
// componentDidMount
useEffect
(()
=>
{
if
(
!
open
)
return
;
if
(
!
data
)
return
;
getListExpressInfo
().
then
();
console
.
log
(
'data --->'
,
data
);
},
[
open
]);
return
(
<
Modal
open=
{
open
}
title=
{
title
}
onCancel=
{
handleCancel
}
onOk=
{
handleOk
}
destroyOnClose
width=
{
600
}
>
<
Form
name=
'addForm'
form=
{
form
}
labelAlign=
'right'
labelCol=
{
{
span
:
8
}
}
wrapperCol=
{
{
span
:
16
}
}
autoComplete=
'new-password'
>
<
Form
.
Item
label=
'收货方式'
labelCol=
{
{
span
:
4
}
}
>
物流归还
</
Form
.
Item
>
<
Form
.
Item
label=
'物流单号'
labelCol=
{
{
span
:
4
}
}
>
{
data
?.
receipt
?.
sendExNo
}
</
Form
.
Item
>
<
Form
.
Item
label=
'物流公司'
labelCol=
{
{
span
:
4
}
}
>
{
getExpressInfo
(
data
?.
receipt
?.
sendExCode
)
}
</
Form
.
Item
>
<
Row
gutter=
{
{
xs
:
8
,
sm
:
16
,
md
:
24
}
}
>
<
Col
span=
{
11
}
>
<
Form
.
Item
label=
'质检照片'
name=
'imgs'
rules=
{
[{
required
:
true
,
message
:
'请上传质检照片'
}]
}
>
<
Uploader
listType=
{
'picture-card'
}
fileUpload
fileLength=
{
3
}
onChange=
{
(
e
)
=>
{
form
.
setFieldValue
(
'imgs'
,
e
.
map
((
item
)
=>
item
.
url
),
);
}
}
>
<
PlusOutlined
/>
</
Uploader
>
</
Form
.
Item
>
</
Col
>
<
Col
span=
{
11
}
>
<
Form
.
Item
label=
'质检视频'
name=
'videoUrl'
rules=
{
[{
required
:
true
,
message
:
'请上传质检视频'
}]
}
>
<
Uploader
listType=
{
'picture-card'
}
fileUpload
fileLength=
{
1
}
fileType=
{
[
'video/mp4'
,
'video/avi'
,
'video/wmv'
,
'video/rmvb'
]
}
fileSize=
{
10
}
onChange=
{
(
e
)
=>
{
form
.
setFieldValue
(
'videoUrl'
,
e
[
0
].
url
);
}
}
>
<
PlusOutlined
/>
</
Uploader
>
</
Form
.
Item
>
</
Col
>
</
Row
>
<
Row
gutter=
{
{
xs
:
8
,
sm
:
16
,
md
:
24
}
}
>
<
Col
span=
{
11
}
>
<
Form
.
Item
label=
'设备状态'
name=
'vcuSatus'
rules=
{
[{
required
:
true
,
message
:
'请选择设备状态'
}]
}
initialValue=
{
0
}
>
<
Radio
.
Group
options=
{
[
{
label
:
'正常'
,
value
:
0
},
{
label
:
'故障'
,
value
:
1
},
]
}
onChange=
{
(
e
)
=>
{
form
.
setFieldValue
(
'vcuSatus'
,
e
.
target
.
value
);
}
}
/>
</
Form
.
Item
>
</
Col
>
<
Col
span=
{
11
}
>
<
Form
.
Item
label=
'操作密码'
name=
'authPwd'
rules=
{
[{
required
:
true
,
message
:
'请输入操作密码'
}]
}
>
<
Input
.
Password
placeholder=
{
'请输入操作密码'
}
maxLength=
{
20
}
allowClear
autoComplete=
'new-password'
/>
</
Form
.
Item
>
</
Col
>
</
Row
>
</
Form
>
</
Modal
>
);
};
export
default
OrderConfirm
;
src/pages/orderManage/equipmentOrder/comp/orderRefund/index.tsx
deleted
100644 → 0
浏览文件 @
99ef2d92
import
{
InterListType
,
InterReqType
}
from
'~/api/interface'
;
import
{
listPcWechatOrderType
,
refundOrderType
}
from
'~/api/interface/orderManageType'
;
import
React
from
'react'
;
import
{
Form
,
message
,
Modal
,
Radio
}
from
'antd'
;
import
{
OrderManageAPI
}
from
'~/api'
;
// 表格数据类型
type
TableType
=
InterListType
<
listPcWechatOrderType
>
;
// 请求数据的类型
type
ReqType
=
InterReqType
<
refundOrderType
>
;
// 传参类型
interface
propType
{
title
:
string
;
open
:
boolean
;
closed
:
any
;
data
?:
TableType
[
0
];
}
const
OrderRefund
:
React
.
FC
<
propType
>
=
(
props
)
=>
{
OrderRefund
.
defaultProps
=
{
data
:
undefined
,
};
// 参数
const
{
title
,
open
,
closed
,
data
}
=
props
;
// 表单钩子
const
[
form
]
=
Form
.
useForm
<
ReqType
>
();
// 关闭弹窗
const
handleCancel
=
()
=>
{
form
.
resetFields
();
closed
();
};
// 确认事件
const
handleOk
=
()
=>
{
form
.
validateFields
()
.
then
(
async
(
values
)
=>
{
// console.log('确认事件 --->', values);
await
handleSubmit
(
values
);
})
.
catch
((
err
)
=>
{
message
.
warning
({
content
:
err
.
errorFields
[
0
].
errors
[
0
],
})
.
then
();
});
};
// 提交事件
const
handleSubmit
=
async
(
values
:
ReqType
)
=>
{
const
res
=
await
OrderManageAPI
.
refundOrder
({
...
values
,
orderInfoId
:
Number
(
data
?.
id
),
});
if
(
res
&&
res
.
code
===
'200'
)
{
message
.
success
(
'操作成功'
);
handleCancel
();
}
};
return
(
<
Modal
open=
{
open
}
title=
{
title
}
onCancel=
{
handleCancel
}
onOk=
{
handleOk
}
destroyOnClose
width=
{
400
}
>
<
Form
name=
'addForm'
form=
{
form
}
labelAlign=
'right'
labelCol=
{
{
span
:
6
}
}
wrapperCol=
{
{
span
:
12
}
}
>
<
Form
.
Item
label=
'是否同意'
name=
'refund'
rules=
{
[{
required
:
true
,
message
:
'请选择是否同意'
}]
}
>
<
Radio
.
Group
options=
{
[
{
label
:
'同意退款'
,
value
:
true
},
{
label
:
'拒绝退款'
,
value
:
false
},
]
}
/>
</
Form
.
Item
>
</
Form
>
</
Modal
>
);
};
export
default
OrderRefund
;
src/pages/orderManage/equipmentOrder/detail/index.scss
浏览文件 @
a1c10727
...
@@ -3,24 +3,7 @@
...
@@ -3,24 +3,7 @@
box-sizing
:
border-box
;
box-sizing
:
border-box
;
.order-head
{
.order-head
{
width
:
100%
;
text-align
:
right
;
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
.head-text
{
font-size
:
13px
;
font-weight
:
600
;
color
:
#000000
;
div
{
margin-bottom
:
10px
;
span
{
margin-right
:
20px
;
}
}
}
}
}
.detail-wrap
{
.detail-wrap
{
...
...
src/pages/orderManage/equipmentOrder/detail/index.tsx
浏览文件 @
a1c10727
...
@@ -2,16 +2,16 @@ import { useEffect, useState } from 'react';
...
@@ -2,16 +2,16 @@ import { useEffect, useState } from 'react';
import
{
useNavigate
,
useSearchParams
}
from
'react-router-dom'
;
import
{
useNavigate
,
useSearchParams
}
from
'react-router-dom'
;
import
{
Button
}
from
'antd'
;
import
{
Button
}
from
'antd'
;
import
'./index.scss'
;
import
'./index.scss'
;
import
DetailDelivery
from
'~/pages/orderManage/equipmentOrder/comp/detailDelivery'
;
import
DetailPurchaser
from
'~/pages/orderManage/equipmentOrder/comp/detailPurchaser'
;
import
DetailPurchaser
from
'~/pages/orderManage/equipmentOrder/comp/detailPurchaser'
;
import
DetailInformation
from
'~/pages/orderManage/equipmentOrder/comp/detailInformation'
;
import
DetailInformation
from
'~/pages/orderManage/equipmentOrder/comp/detailInformation'
;
import
{
OrderManageAPI
}
from
'~/api'
;
import
{
OrderManageAPI
}
from
'~/api'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
rentOrderDetailType
}
from
'~/api/interface/orderManageType'
;
import
{
rentOrderDetailType
,
rentOrderDictType
}
from
'~/api/interface/orderManageType'
;
import
DetailTimeLine
from
'~/pages/orderManage/equipmentOrder/comp/detailTimeLine'
;
// 接口返回的类型
// 接口返回的类型
type
DataType
=
InterDataType
<
rentOrderDetailType
>
;
type
DataType
=
InterDataType
<
rentOrderDetailType
>
;
// 订单状态返回类型
type
OrderStatusType
=
InterDataType
<
rentOrderDictType
>
;
function
EquipmentOrderDetail
()
{
function
EquipmentOrderDetail
()
{
// 路由钩子
// 路由钩子
...
@@ -19,7 +19,10 @@ function EquipmentOrderDetail() {
...
@@ -19,7 +19,10 @@ function EquipmentOrderDetail() {
// 参数钩子
// 参数钩子
const
[
searchParams
]
=
useSearchParams
();
const
[
searchParams
]
=
useSearchParams
();
// 订单id
// 订单id
const
[
orderId
,
setOrderId
]
=
useState
<
number
>
(
0
);
// const [orderId, setOrderId] = useState<number>(0);
// 订单状态字典
const
[
orderStatusList
,
setOrderStatusList
]
=
useState
<
OrderStatusType
>
([]);
// 返回上一页
// 返回上一页
const
handleBack
=
()
=>
{
const
handleBack
=
()
=>
{
navigate
(
-
1
);
navigate
(
-
1
);
...
@@ -36,34 +39,29 @@ function EquipmentOrderDetail() {
...
@@ -36,34 +39,29 @@ function EquipmentOrderDetail() {
}
}
});
});
};
};
// 获取订单状态
const
getOrderStatus
=
()
=>
{
OrderManageAPI
.
getRentOrderDict
().
then
(({
result
})
=>
{
setOrderStatusList
(
result
||
[]);
});
};
// componentDidMount
// componentDidMount
useEffect
(()
=>
{
useEffect
(()
=>
{
setOrderId
(
Number
(
searchParams
.
get
(
'id'
)
||
0
));
//
setOrderId(Number(searchParams.get('id') || 0));
getOrderDetail
(
Number
(
searchParams
.
get
(
'id'
)
||
0
));
getOrderDetail
(
Number
(
searchParams
.
get
(
'id'
)
||
0
));
getOrderStatus
();
},
[]);
},
[]);
return
(
return
(
<
div
className=
{
'order-detail'
}
>
<
div
className=
'order-detail'
>
<
div
className=
{
'order-head'
}
>
<
div
className=
'order-head'
>
<
div
className=
'head-text'
>
<
Button
type=
'primary'
onClick=
{
()
=>
handleBack
()
}
>
<
div
>
<
span
>
订单编号:
{
orderDetail
?.
orderNo
}
</
span
>
<
span
style=
{
{
display
:
'none'
}
}
>
合同编号:UAV202334741131
</
span
>
</
div
>
<
div
>
<
span
>
当前状态:
{
orderDetail
?.
waiting
}
</
span
>
<
span
>
创建时间:
{
orderDetail
?.
createTime
}
</
span
>
</
div
>
</
div
>
<
Button
type=
{
'primary'
}
onClick=
{
()
=>
handleBack
()
}
>
返回
返回
</
Button
>
</
Button
>
</
div
>
</
div
>
<
div
className=
{
'detail-wrap'
}
>
<
div
className=
'detail-wrap'
>
<
DetailPurchaser
detail=
{
orderDetail
}
/>
<
DetailPurchaser
detail=
{
orderDetail
}
/>
<
DetailDelivery
detail=
{
orderDetail
}
/>
<
DetailInformation
detail=
{
orderDetail
}
orderStatusList=
{
orderStatusList
}
/>
<
DetailTimeLine
detail=
{
orderDetail
}
/>
{
/*<DetailMessageBox />*/
}
<
DetailInformation
detail=
{
orderDetail
}
/>
</
div
>
</
div
>
</
div
>
</
div
>
);
);
...
...
src/pages/orderManage/equipmentOrder/index.tsx
浏览文件 @
a1c10727
...
@@ -9,9 +9,6 @@ import { rentOrderListType } from '~/api/interface/orderManageType';
...
@@ -9,9 +9,6 @@ import { rentOrderListType } from '~/api/interface/orderManageType';
import
{
OrderManageAPI
}
from
'~/api'
;
import
{
OrderManageAPI
}
from
'~/api'
;
import
ShipmentsOrder
from
'./comp/shipmentsOrder'
;
import
ShipmentsOrder
from
'./comp/shipmentsOrder'
;
import
ConfirmReturn
from
'./comp/confirmReturn'
;
import
ConfirmReturn
from
'./comp/confirmReturn'
;
import
OrderConfirm
from
'~/pages/orderManage/equipmentOrder/comp/orderConfirm'
;
import
OrderClosed
from
'~/pages/orderManage/equipmentOrder/comp/orderClosed'
;
import
OrderRefund
from
'~/pages/orderManage/equipmentOrder/comp/orderRefund'
;
import
TableItem
from
'~/components/order/selfTableItem'
;
import
TableItem
from
'~/components/order/selfTableItem'
;
import
'./index.scss'
;
import
'./index.scss'
;
import
{
filterObjAttr
}
from
'~/utils'
;
import
{
filterObjAttr
}
from
'~/utils'
;
...
@@ -31,12 +28,6 @@ function EquipmentOrderView() {
...
@@ -31,12 +28,6 @@ function EquipmentOrderView() {
const
[
deliverVisible
,
setDeliverVisible
]
=
useState
<
boolean
>
(
false
);
const
[
deliverVisible
,
setDeliverVisible
]
=
useState
<
boolean
>
(
false
);
// 确认归还
// 确认归还
const
[
confirmReturnShow
,
setConfirmReturnShow
]
=
useState
<
boolean
>
(
false
);
const
[
confirmReturnShow
,
setConfirmReturnShow
]
=
useState
<
boolean
>
(
false
);
// 收货弹窗是否显示
const
[
confirmVisible
,
setConfirmVisible
]
=
useState
<
boolean
>
(
false
);
// 关闭弹窗是否显示
const
[
closedVisible
,
setClosedVisible
]
=
useState
<
boolean
>
(
false
);
// 退款弹窗是否显示
const
[
refundVisible
,
setRefundVisible
]
=
useState
<
boolean
>
(
false
);
// 当前选择的是第几个按钮
// 当前选择的是第几个按钮
const
[
statusCodeButtonIndex
,
setStatusCodeButtonIndex
]
=
useState
<
number
>
(
0
);
const
[
statusCodeButtonIndex
,
setStatusCodeButtonIndex
]
=
useState
<
number
>
(
0
);
// 订单状态搜索列表
// 订单状态搜索列表
...
@@ -142,7 +133,10 @@ function EquipmentOrderView() {
...
@@ -142,7 +133,10 @@ function EquipmentOrderView() {
{
{
label
:
'确认退款'
,
label
:
'确认退款'
,
status
:
800
,
status
:
800
,
onClick
:
(
item
:
TableType
[
0
])
=>
{},
onClick
:
(
item
:
TableType
[
0
])
=>
{
getRentDetail
(
item
.
id
);
setConfirmReturnShow
(
true
);
},
},
},
];
];
// 获取当前按钮对象
// 获取当前按钮对象
...
@@ -163,6 +157,7 @@ function EquipmentOrderView() {
...
@@ -163,6 +157,7 @@ function EquipmentOrderView() {
};
};
const
confirmReturnOk
=
()
=>
{
const
confirmReturnOk
=
()
=>
{
setConfirmReturnShow
(
false
);
setConfirmReturnShow
(
false
);
getTableList
(
query
);
};
};
// 表格结构
// 表格结构
...
@@ -416,13 +411,8 @@ function EquipmentOrderView() {
...
@@ -416,13 +411,8 @@ function EquipmentOrderView() {
onOk=
{
confirmReturnOk
}
onOk=
{
confirmReturnOk
}
onCancel=
{
confirmReturnCancel
}
onCancel=
{
confirmReturnCancel
}
currentOrderItem=
{
currentOrderItem
}
currentOrderItem=
{
currentOrderItem
}
modalTitle=
{
currentOrderItem
?.
statusCode
===
500
?
'确认归还'
:
'确认退款'
}
/>
/>
{
/*收货弹窗*/
}
{
/*<OrderConfirm open={confirmVisible} title={'确认收货'} data={editData} closed={} />*/
}
{
/*/!*关闭订单*!/*/
}
{
/*<OrderClosed open={closedVisible} title={'关闭订单'} data={editData} closed={} />*/
}
{
/*/!*退款弹窗*!/*/
}
{
/*<OrderRefund open={refundVisible} title={'退款审批'} data={editData} closed={} />*/
}
</
div
>
</
div
>
);
);
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论