Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
web-ci-test
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
test-ci
web-ci-test
Commits
1ab84db7
提交
1ab84db7
authored
6月 10, 2023
作者:
翁进城
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
个人中心订单开发
上级
adc8a5b2
隐藏空白字符变更
内嵌
并排
正在显示
18 个修改的文件
包含
1680 行增加
和
23 行删除
+1680
-23
index.tsx
components/NavHeader/index.tsx
+26
-6
index.tsx
components/layout/index.tsx
+2
-1
index.tsx
pages/personalCenter/components/sider/index.tsx
+1
-1
index.ts
pages/personalCenter/leasingOrders/api/index.ts
+113
-0
index.ts
...leasingOrders/components/confirmReceiptModal/api/index.ts
+83
-0
index.module.scss
...ngOrders/components/confirmReceiptModal/index.module.scss
+50
-0
index.tsx
...er/leasingOrders/components/confirmReceiptModal/index.tsx
+85
-0
index.ts
...onalCenter/leasingOrders/components/payModal/api/index.ts
+105
-0
index.module.scss
...enter/leasingOrders/components/payModal/index.module.scss
+50
-0
index.tsx
...ersonalCenter/leasingOrders/components/payModal/index.tsx
+122
-0
index.ts
...lCenter/leasingOrders/components/refundModal/api/index.ts
+105
-0
index.module.scss
...er/leasingOrders/components/refundModal/index.module.scss
+50
-0
index.tsx
...onalCenter/leasingOrders/components/refundModal/index.tsx
+122
-0
index.module.scss
pages/personalCenter/leasingOrders/index.module.scss
+76
-0
index.page.tsx
pages/personalCenter/leasingOrders/index.page.tsx
+346
-0
index.ts
pages/personalCenter/mallOrders/api/index.ts
+99
-0
index.module.scss
pages/personalCenter/mallOrders/index.module.scss
+54
-0
index.page.tsx
pages/personalCenter/mallOrders/index.page.tsx
+191
-15
没有找到文件。
components/NavHeader/index.tsx
浏览文件 @
1ab84db7
...
...
@@ -39,17 +39,21 @@ const items: TabsProps["items"] = [
},
];
export
default
function
NavHeader
()
{
type
Props
=
{
style
?:
React
.
CSSProperties
;
};
export
default
function
NavHeader
(
props
:
Props
)
{
const
router
=
useRouter
();
const
[
currentPath
,
setCurrentPath
]
=
useState
(
""
);
const
{
userInfo
,
testLogin
,
logout
,
setNeedLogin
,
needLogin
}
=
useContext
(
UserContext
);
useEffect
(()
=>
{
const
routerTo
=
items
?.
filter
(
item
=>
router
.
route
.
includes
(
item
.
key
))[
0
]
const
routerTo
=
items
?.
filter
(
(
item
)
=>
router
.
route
==
item
.
key
)[
0
];
if
(
routerTo
)
{
setCurrentPath
(
routerTo
?.
key
!
);
}
else
{
}
else
{
setCurrentPath
(
router
.
route
);
}
console
.
log
(
"currentHash"
,
currentPath
);
...
...
@@ -75,7 +79,7 @@ export default function NavHeader() {
if
(
!
userInfo
)
{
setOpenLoginModal
(
true
);
}
else
{
setOpenPublishModal
(
true
);
setOpenPublishModal
(
true
);
}
}
...
...
@@ -97,7 +101,7 @@ export default function NavHeader() {
},
[
needLogin
]);
return
(
<
div
className=
{
styles
.
navHeader
}
>
<
div
className=
{
styles
.
navHeader
}
style=
{
props
.
style
}
>
<
div
className=
{
styles
.
nav
}
>
<
div
className=
{
styles
.
logo
}
></
div
>
<
Tabs
...
...
@@ -121,9 +125,25 @@ export default function NavHeader() {
menu=
{
{
items
:
[
{
key
:
"3"
,
label
:
(
<
div
onClick=
{
()
=>
router
.
push
(
"/personalCenter/leasingOrders"
)
}
>
租赁订单
</
div
>
),
},
{
key
:
"2"
,
label
:
(
<
div
onClick=
{
()
=>
router
.
push
(
"/personalCenter/mallOrders"
)
}
>
<
div
onClick=
{
()
=>
router
.
push
(
"/personalCenter/mallOrders"
)
}
>
我的订单
</
div
>
),
...
...
components/layout/index.tsx
浏览文件 @
1ab84db7
...
...
@@ -43,6 +43,7 @@ type Props = {
layoutStyle
?:
React
.
CSSProperties
;
contentStyle
?:
React
.
CSSProperties
;
hideFooter
?:
boolean
;
headerStyle
?:
React
.
CSSProperties
};
export
default
function
LayoutView
(
props
:
Props
)
{
...
...
@@ -56,7 +57,7 @@ export default function LayoutView(props: Props) {
)
}
>
<
Header
style=
{
headerStyle
}
>
<
NavHeader
/>
<
NavHeader
style=
{
props
.
headerStyle
}
/>
</
Header
>
<
Content
className=
{
styles
.
content
}
style=
{
props
.
contentStyle
}
>
{
props
.
children
}
...
...
pages/personalCenter/components/sider/index.tsx
浏览文件 @
1ab84db7
...
...
@@ -24,7 +24,7 @@ function getItem(
const
items
:
MenuItem
[]
=
[
getItem
(
"我的订单"
,
"1"
,
undefined
,
[
getItem
(
"服务订单"
,
"/personalCenter/servicesOrders"
),
getItem
(
"租赁订单"
,
"
1-1
"
),
getItem
(
"租赁订单"
,
"
/personalCenter/leasingOrders
"
),
getItem
(
"商城订单"
,
"/personalCenter/mallOrders"
),
getItem
(
"培训订单"
,
"1-2"
),
]),
...
...
pages/personalCenter/leasingOrders/api/index.ts
0 → 100644
浏览文件 @
1ab84db7
import
request
,
{
Response
}
from
"~/api/request"
export
interface
ListPageWechatOrderParams
{
buyerAccount
?:
string
;
endTime
?:
string
;
orderNo
?:
string
;
pageNo
:
number
;
pageSize
:
number
;
startTime
?:
string
;
tranStatus
?:
string
;
wareNo
?:
string
;
wareTitle
?:
string
;
}
export
interface
ListPageWechatOrderResp
{
pageNo
:
number
;
pageSize
:
number
;
list
:
LeasingList
[];
totalCount
:
number
;
totalPage
:
number
;
}
export
interface
LeasingList
{
id
:
number
;
orderNo
:
string
;
createTime
?:
any
;
wareInfoId
?:
any
;
wareNo
?:
any
;
wareTitle
:
string
;
wareImg
:
string
;
skuInfoId
?:
any
;
skuTitle
?:
any
;
repoAccountId
?:
any
;
uid
?:
any
;
buyerName
?:
any
;
buyerPhone
?:
any
;
unitPrice
?:
any
;
wareNum
:
number
;
shouldPay
:
number
;
actualPay
:
number
;
orderType
?:
any
;
deposit
?:
any
;
rentPrice
?:
any
;
startDate
?:
any
;
endDate
?:
any
;
payDay
?:
any
;
tranStatus
:
string
;
exWare
?:
any
;
remark
?:
any
;
pfRemark
?:
any
;
shutReason
?:
any
;
payNo
?:
any
;
payTime
?:
any
;
sendWareTime
?:
any
;
receipt
:
Receipt
;
orderRefund
?:
any
;
express
?:
any
;
refundExpress
?:
any
;
vcus
?:
any
;
returnTime
?:
any
;
couponId
?:
any
;
specsId
?:
any
;
balance
?:
any
;
doing
?:
any
;
waiting
?:
any
;
leaseOrderStatus
?:
any
;
nickName
?:
any
;
wareDescription
?:
any
;
}
interface
Receipt
{
id
:
number
;
receiptMethod
:
number
;
takeName
:
string
;
takePhone
:
string
;
region
:
string
;
detailAddress
:
string
;
repoName
?:
any
;
repoAddress
?:
any
;
bookPhone
?:
any
;
sendExCode
?:
any
;
sendExNo
?:
any
;
sendAddress
?:
any
;
renMethod
?:
any
;
renPhone
?:
any
;
renName
?:
any
;
renExCode
?:
any
;
renExNo
?:
any
;
renAddress
?:
any
;
renRepoName
?:
any
;
renRepoAddr
?:
any
;
renRepoPhone
?:
any
;
}
export
interface
ListTranStatusResp
{
status
:
string
;
doing
:
string
;
waiting
:
string
;
leaseOrderStatus
:
string
;
}
export
default
{
//订单分页列表
listPageWechatOrder
(
params
:
ListPageWechatOrderParams
,
options
?:
any
):
Promise
<
Response
<
ListPageWechatOrderResp
>>
{
return
request
(
'/oms/RentalOrders/listPageWechatOrder'
,
'post'
,
params
,
options
)
},
//订单状态-字典
listTranStatus
():
Promise
<
Response
<
ListTranStatusResp
[]
>>
{
return
request
(
'/oms/RentalOrders/listTranStatus'
,
'get'
);
}
}
\ No newline at end of file
pages/personalCenter/leasingOrders/components/confirmReceiptModal/api/index.ts
0 → 100644
浏览文件 @
1ab84db7
import
request
,
{
Response
}
from
"~/api/request"
export
interface
OrderDetailResp
{
id
:
number
;
orderNo
:
string
;
createTime
:
number
;
wareInfoId
:
number
;
wareNo
:
string
;
wareTitle
:
string
;
wareImg
:
string
;
skuInfoId
?:
any
;
skuTitle
?:
any
;
repoAccountId
:
number
;
uid
:
string
;
buyerName
?:
any
;
buyerPhone
:
string
;
unitPrice
:
number
;
wareNum
:
number
;
shouldPay
:
number
;
//应付款金额
actualPay
:
number
;
//实收款金额
orderType
?:
any
;
deposit
:
number
;
rentPrice
:
number
;
startDate
:
number
;
endDate
:
number
;
payDay
:
number
;
tranStatus
:
string
;
exWare
?:
any
;
remark
:
string
;
pfRemark
?:
any
;
shutReason
?:
any
;
payNo
?:
any
;
payTime
?:
any
;
sendWareTime
?:
any
;
receipt
:
Receipt
;
orderRefund
?:
any
;
express
?:
any
;
refundExpress
?:
any
;
vcus
?:
any
;
returnTime
?:
any
;
couponId
?:
any
;
specsId
?:
any
;
balance
?:
any
;
doing
:
string
;
waiting
:
string
;
leaseOrderStatus
:
string
;
nickName
:
string
;
wareDescription
:
string
;
}
interface
Receipt
{
id
:
number
;
receiptMethod
:
number
;
takeName
:
string
;
takePhone
:
string
;
region
:
string
;
detailAddress
:
string
;
repoName
?:
any
;
repoAddress
?:
any
;
bookPhone
?:
any
;
sendExCode
?:
any
;
sendExNo
?:
any
;
sendAddress
?:
any
;
renMethod
?:
any
;
renPhone
?:
any
;
renName
?:
any
;
renExCode
?:
any
;
renExNo
?:
any
;
renAddress
?:
any
;
renRepoName
?:
any
;
renRepoAddr
?:
any
;
renRepoPhone
?:
any
;
}
export
default
{
//订单详情
orderDetail
(
params
:
{
orderNo
:
string
}):
Promise
<
Response
<
OrderDetailResp
>>
{
return
request
(
'/oms/RentalOrders/orderDetail'
,
'get'
,
params
);
}
}
\ No newline at end of file
pages/personalCenter/leasingOrders/components/confirmReceiptModal/index.module.scss
0 → 100644
浏览文件 @
1ab84db7
.font1
{
font-size
:
36px
;
font-family
:
Arial-BoldMT
,
Arial
;
font-weight
:
normal
;
color
:
#ff440e
;
line-height
:
42px
;
}
.font2
{
font-size
:
18px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#ff440e
;
line-height
:
25px
;
}
.font3
{
font-size
:
15px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#959595
;
line-height
:
21px
;
}
.font4
{
font-size
:
15px
;
font-family
:
ArialMT
;
color
:
#282828
;
line-height
:
21px
;
}
.font5
{
font-size
:
18px
;
font-family
:
PingFangSC-Semibold
,
PingFang
SC
;
font-weight
:
600
;
color
:
#000000
;
line-height
:
25px
;
}
.btn
{
background
:
linear-gradient
(
90deg
,
#ff552d
0%
,
#ff812d
100%
);
border-radius
:
6px
;
height
:
40px
;
font-size
:
16px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#ffffff
;
line-height
:
22px
;
width
:
100%
;
}
pages/personalCenter/leasingOrders/components/confirmReceiptModal/index.tsx
0 → 100644
浏览文件 @
1ab84db7
import
{
Button
,
Col
,
Divider
,
Modal
,
Row
}
from
"antd"
;
import
{
useContext
,
useEffect
,
useState
}
from
"react"
;
import
{
UserContext
}
from
"~/lib/userProvider"
;
import
api
,
{
OrderDetailResp
}
from
"./api"
;
import
styles
from
"./index.module.scss"
;
function
formatNumber
(
num
:
number
)
{
return
num
.
toString
().
replace
(
/
\B(?=(\d{3})
+
(?!\d))
/g
,
","
);
}
type
Props
=
{
open
?:
boolean
;
onOk
?:
()
=>
void
;
onCancel
?:
()
=>
void
;
orderNo
?:
string
;
};
export
default
function
payModal
(
props
:
Props
)
{
const
[
data
,
setData
]
=
useState
<
OrderDetailResp
|
null
>
(
null
);
const
{
userInfo
}
=
useContext
(
UserContext
);
useEffect
(()
=>
{
if
(
props
.
orderNo
)
{
api
.
orderDetail
({
orderNo
:
props
.
orderNo
}).
then
((
res
)
=>
{
setData
(
res
.
result
||
null
);
});
}
else
{
setData
(
null
);
}
},
[
props
.
orderNo
]);
return
(
<>
<
Modal
width=
{
420
}
open=
{
props
.
open
}
onOk=
{
props
.
onOk
}
onCancel=
{
props
.
onCancel
}
title=
{
<>
<
div
style=
{
{
textAlign
:
"center"
}
}
className=
{
styles
.
font5
}
>
租赁付款
</
div
>
</>
}
footer=
{
<
Button
type=
"primary"
className=
{
styles
.
btn
}
style=
{
{
marginTop
:
43
}
}
>
立即付款
</
Button
>
}
>
<
div
style=
{
{
marginTop
:
16
,
marginBottom
:
34
,
textAlign
:
"center"
}
}
className=
{
styles
.
font1
}
>
{
formatNumber
(
data
?.
shouldPay
||
0
)
}{
" "
}
<
span
className=
{
styles
.
font2
}
style=
{
{
transform
:
"translateY(-3px)"
,
display
:
"inline-block"
}
}
>
元
</
span
>
</
div
>
<
Row
gutter=
{
[
0
,
16
]
}
>
<
Col
span=
{
6
}
className=
{
styles
.
font3
}
>
云仓账号
</
Col
>
<
Col
span=
{
18
}
className=
{
styles
.
font4
}
>
UID
{
userInfo
?.
uid
}
</
Col
>
<
Col
span=
{
6
}
className=
{
styles
.
font3
}
>
付款方式
</
Col
>
<
Col
span=
{
18
}
className=
{
styles
.
font4
}
>
充值余额(可用:¥2000000)
</
Col
>
</
Row
>
</
Modal
>
</>
);
}
pages/personalCenter/leasingOrders/components/payModal/api/index.ts
0 → 100644
浏览文件 @
1ab84db7
import
request
,
{
Response
}
from
"~/api/request"
export
interface
OrderDetailResp
{
id
:
number
;
orderNo
:
string
;
createTime
:
number
;
wareInfoId
:
number
;
wareNo
:
string
;
wareTitle
:
string
;
wareImg
:
string
;
skuInfoId
?:
any
;
skuTitle
?:
any
;
repoAccountId
:
number
;
uid
:
string
;
buyerName
?:
any
;
buyerPhone
:
string
;
unitPrice
:
number
;
wareNum
:
number
;
shouldPay
:
number
;
//应付款金额
actualPay
:
number
;
//实收款金额
orderType
?:
any
;
deposit
:
number
;
rentPrice
:
number
;
startDate
:
number
;
endDate
:
number
;
payDay
:
number
;
tranStatus
:
string
;
exWare
?:
any
;
remark
:
string
;
pfRemark
?:
any
;
shutReason
?:
any
;
payNo
?:
any
;
payTime
?:
any
;
sendWareTime
?:
any
;
receipt
:
Receipt
;
orderRefund
?:
any
;
express
?:
any
;
refundExpress
?:
any
;
vcus
?:
any
;
returnTime
?:
any
;
couponId
?:
any
;
specsId
?:
any
;
balance
?:
any
;
doing
:
string
;
waiting
:
string
;
leaseOrderStatus
:
string
;
nickName
:
string
;
wareDescription
:
string
;
}
interface
Receipt
{
id
:
number
;
receiptMethod
:
number
;
takeName
:
string
;
takePhone
:
string
;
region
:
string
;
detailAddress
:
string
;
repoName
?:
any
;
repoAddress
?:
any
;
bookPhone
?:
any
;
sendExCode
?:
any
;
sendExNo
?:
any
;
sendAddress
?:
any
;
renMethod
?:
any
;
renPhone
?:
any
;
renName
?:
any
;
renExCode
?:
any
;
renExNo
?:
any
;
renAddress
?:
any
;
renRepoName
?:
any
;
renRepoAddr
?:
any
;
renRepoPhone
?:
any
;
}
export
interface
UserWalletResp
{
id
:
number
;
repoAccountId
:
number
;
cashAmt
:
number
;
cashPaid
:
number
;
cashFreeze
:
number
;
remark
?:
any
;
phoneNum
?:
any
;
userName
?:
any
;
nickName
?:
any
;
portType
?:
any
;
uid
?:
any
;
}
export
default
{
//订单详情
orderDetail
(
params
:
{
orderNo
:
string
}):
Promise
<
Response
<
OrderDetailResp
>>
{
return
request
(
'/oms/RentalOrders/orderDetail'
,
'get'
,
params
);
},
//获取用户钱包
userWallet
():
Promise
<
Response
<
UserWalletResp
>>
{
return
request
(
'/payment/repocash/userWallet'
)
},
//租赁——订单支付
orderPayment
(
params
:
{
orderNo
:
string
})
{
return
request
(
'/payment/repocash/orderPayment'
,
'post'
,
params
)
}
}
\ No newline at end of file
pages/personalCenter/leasingOrders/components/payModal/index.module.scss
0 → 100644
浏览文件 @
1ab84db7
.font1
{
font-size
:
36px
;
font-family
:
Arial-BoldMT
,
Arial
;
font-weight
:
normal
;
color
:
#ff440e
;
line-height
:
42px
;
}
.font2
{
font-size
:
18px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#ff440e
;
line-height
:
25px
;
}
.font3
{
font-size
:
15px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#959595
;
line-height
:
21px
;
}
.font4
{
font-size
:
15px
;
font-family
:
ArialMT
;
color
:
#282828
;
line-height
:
21px
;
}
.font5
{
font-size
:
18px
;
font-family
:
PingFangSC-Semibold
,
PingFang
SC
;
font-weight
:
600
;
color
:
#000000
;
line-height
:
25px
;
}
.btn
{
background
:
linear-gradient
(
90deg
,
#ff552d
0%
,
#ff812d
100%
);
border-radius
:
6px
;
height
:
40px
;
font-size
:
16px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#ffffff
;
line-height
:
22px
;
width
:
100%
;
}
pages/personalCenter/leasingOrders/components/payModal/index.tsx
0 → 100644
浏览文件 @
1ab84db7
import
{
Button
,
Col
,
Divider
,
message
,
Modal
,
Row
}
from
"antd"
;
import
{
useContext
,
useEffect
,
useState
}
from
"react"
;
import
{
UserContext
}
from
"~/lib/userProvider"
;
import
api
,
{
OrderDetailResp
,
UserWalletResp
}
from
"./api"
;
import
styles
from
"./index.module.scss"
;
function
formatNumber
(
num
:
number
)
{
return
num
.
toString
().
replace
(
/
\B(?=(\d{3})
+
(?!\d))
/g
,
","
);
}
type
Props
=
{
open
?:
boolean
;
onOk
?:
()
=>
void
;
onCancel
?:
()
=>
void
;
orderNo
?:
string
;
};
export
default
function
payModal
(
props
:
Props
)
{
const
[
data
,
setData
]
=
useState
<
OrderDetailResp
|
null
>
(
null
);
const
{
userInfo
}
=
useContext
(
UserContext
);
const
[
wallet
,
setWallet
]
=
useState
<
UserWalletResp
|
null
>
(
null
);
//钱包
const
[
loading
,
setLoading
]
=
useState
(
false
);
//付款按钮loading
useEffect
(()
=>
{
if
(
props
.
open
)
{
api
.
userWallet
().
then
((
res
)
=>
{
setWallet
(
res
.
result
||
null
);
});
}
},
[
props
.
open
]);
useEffect
(()
=>
{
if
(
props
.
orderNo
)
{
api
.
orderDetail
({
orderNo
:
props
.
orderNo
}).
then
((
res
)
=>
{
setData
(
res
.
result
||
null
);
});
}
else
{
setData
(
null
);
}
},
[
props
.
orderNo
]);
function
onPay
()
{
if
(
props
.
orderNo
)
{
setLoading
(
true
);
api
.
orderPayment
({
orderNo
:
props
.
orderNo
,
})
.
then
((
res
)
=>
{
if
(
res
.
code
==
"200"
)
{
message
.
success
(
"付款成功"
);
setTimeout
(()
=>
{
props
.
onCancel
&&
props
.
onCancel
();
setLoading
(
false
);
},
1000
);
}
else
{
res
.
message
&&
message
.
error
(
res
.
message
);
setLoading
(
false
);
}
}).
catch
(
err
=>
{
setLoading
(
false
);
});
}
}
return
(
<>
<
Modal
width=
{
420
}
open=
{
props
.
open
}
onOk=
{
props
.
onOk
}
onCancel=
{
props
.
onCancel
}
title=
{
<>
<
div
style=
{
{
textAlign
:
"center"
}
}
className=
{
styles
.
font5
}
>
租赁付款
</
div
>
</>
}
footer=
{
<
Button
type=
"primary"
className=
{
styles
.
btn
}
style=
{
{
marginTop
:
43
}
}
onClick=
{
onPay
}
loading=
{
loading
}
>
立即付款
</
Button
>
}
>
<
div
style=
{
{
marginTop
:
16
,
marginBottom
:
34
,
textAlign
:
"center"
}
}
className=
{
styles
.
font1
}
>
{
formatNumber
(
data
?.
shouldPay
||
0
)
}{
" "
}
<
span
className=
{
styles
.
font2
}
style=
{
{
transform
:
"translateY(-3px)"
,
display
:
"inline-block"
}
}
>
元
</
span
>
</
div
>
<
Row
gutter=
{
[
0
,
16
]
}
>
<
Col
span=
{
6
}
className=
{
styles
.
font3
}
>
云仓账号
</
Col
>
<
Col
span=
{
18
}
className=
{
styles
.
font4
}
>
UID
{
userInfo
?.
uid
}
</
Col
>
<
Col
span=
{
6
}
className=
{
styles
.
font3
}
>
付款方式
</
Col
>
<
Col
span=
{
18
}
className=
{
styles
.
font4
}
>
充值余额(可用:¥
{
wallet
?.
cashAmt
}
)
</
Col
>
</
Row
>
</
Modal
>
</>
);
}
pages/personalCenter/leasingOrders/components/refundModal/api/index.ts
0 → 100644
浏览文件 @
1ab84db7
import
request
,
{
Response
}
from
"~/api/request"
export
interface
OrderDetailResp
{
id
:
number
;
orderNo
:
string
;
createTime
:
number
;
wareInfoId
:
number
;
wareNo
:
string
;
wareTitle
:
string
;
wareImg
:
string
;
skuInfoId
?:
any
;
skuTitle
?:
any
;
repoAccountId
:
number
;
uid
:
string
;
buyerName
?:
any
;
buyerPhone
:
string
;
unitPrice
:
number
;
wareNum
:
number
;
shouldPay
:
number
;
//应付款金额
actualPay
:
number
;
//实收款金额
orderType
?:
any
;
deposit
:
number
;
rentPrice
:
number
;
startDate
:
number
;
endDate
:
number
;
payDay
:
number
;
tranStatus
:
string
;
exWare
?:
any
;
remark
:
string
;
pfRemark
?:
any
;
shutReason
?:
any
;
payNo
?:
any
;
payTime
?:
any
;
sendWareTime
?:
any
;
receipt
:
Receipt
;
orderRefund
?:
any
;
express
?:
any
;
refundExpress
?:
any
;
vcus
?:
any
;
returnTime
?:
any
;
couponId
?:
any
;
specsId
?:
any
;
balance
?:
any
;
doing
:
string
;
waiting
:
string
;
leaseOrderStatus
:
string
;
nickName
:
string
;
wareDescription
:
string
;
}
interface
Receipt
{
id
:
number
;
receiptMethod
:
number
;
takeName
:
string
;
takePhone
:
string
;
region
:
string
;
detailAddress
:
string
;
repoName
?:
any
;
repoAddress
?:
any
;
bookPhone
?:
any
;
sendExCode
?:
any
;
sendExNo
?:
any
;
sendAddress
?:
any
;
renMethod
?:
any
;
renPhone
?:
any
;
renName
?:
any
;
renExCode
?:
any
;
renExNo
?:
any
;
renAddress
?:
any
;
renRepoName
?:
any
;
renRepoAddr
?:
any
;
renRepoPhone
?:
any
;
}
export
interface
UserWalletResp
{
id
:
number
;
repoAccountId
:
number
;
cashAmt
:
number
;
cashPaid
:
number
;
cashFreeze
:
number
;
remark
?:
any
;
phoneNum
?:
any
;
userName
?:
any
;
nickName
?:
any
;
portType
?:
any
;
uid
?:
any
;
}
export
default
{
//订单详情
orderDetail
(
params
:
{
orderNo
:
string
}):
Promise
<
Response
<
OrderDetailResp
>>
{
return
request
(
'/oms/RentalOrders/orderDetail'
,
'get'
,
params
);
},
//获取用户钱包
userWallet
():
Promise
<
Response
<
UserWalletResp
>>
{
return
request
(
'/payment/repocash/userWallet'
)
},
//租赁——订单支付
orderPayment
(
params
:
{
orderNo
:
string
})
{
return
request
(
'/payment/repocash/orderPayment'
,
'post'
,
params
)
}
}
\ No newline at end of file
pages/personalCenter/leasingOrders/components/refundModal/index.module.scss
0 → 100644
浏览文件 @
1ab84db7
.font1
{
font-size
:
36px
;
font-family
:
Arial-BoldMT
,
Arial
;
font-weight
:
normal
;
color
:
#ff440e
;
line-height
:
42px
;
}
.font2
{
font-size
:
18px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#ff440e
;
line-height
:
25px
;
}
.font3
{
font-size
:
15px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#959595
;
line-height
:
21px
;
}
.font4
{
font-size
:
15px
;
font-family
:
ArialMT
;
color
:
#282828
;
line-height
:
21px
;
}
.font5
{
font-size
:
18px
;
font-family
:
PingFangSC-Semibold
,
PingFang
SC
;
font-weight
:
600
;
color
:
#000000
;
line-height
:
25px
;
}
.btn
{
background
:
linear-gradient
(
90deg
,
#ff552d
0%
,
#ff812d
100%
);
border-radius
:
6px
;
height
:
40px
;
font-size
:
16px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#ffffff
;
line-height
:
22px
;
width
:
100%
;
}
pages/personalCenter/leasingOrders/components/refundModal/index.tsx
0 → 100644
浏览文件 @
1ab84db7
import
{
Button
,
Col
,
Divider
,
message
,
Modal
,
Row
}
from
"antd"
;
import
{
useContext
,
useEffect
,
useState
}
from
"react"
;
import
{
UserContext
}
from
"~/lib/userProvider"
;
import
api
,
{
OrderDetailResp
,
UserWalletResp
}
from
"./api"
;
import
styles
from
"./index.module.scss"
;
function
formatNumber
(
num
:
number
)
{
return
num
.
toString
().
replace
(
/
\B(?=(\d{3})
+
(?!\d))
/g
,
","
);
}
type
Props
=
{
open
?:
boolean
;
onOk
?:
()
=>
void
;
onCancel
?:
()
=>
void
;
orderNo
?:
string
;
};
export
default
function
RefundModal
(
props
:
Props
)
{
const
[
data
,
setData
]
=
useState
<
OrderDetailResp
|
null
>
(
null
);
const
{
userInfo
}
=
useContext
(
UserContext
);
const
[
wallet
,
setWallet
]
=
useState
<
UserWalletResp
|
null
>
(
null
);
//钱包
const
[
loading
,
setLoading
]
=
useState
(
false
);
//付款按钮loading
useEffect
(()
=>
{
if
(
props
.
open
)
{
api
.
userWallet
().
then
((
res
)
=>
{
setWallet
(
res
.
result
||
null
);
});
}
},
[
props
.
open
]);
useEffect
(()
=>
{
if
(
props
.
orderNo
)
{
api
.
orderDetail
({
orderNo
:
props
.
orderNo
}).
then
((
res
)
=>
{
setData
(
res
.
result
||
null
);
});
}
else
{
setData
(
null
);
}
},
[
props
.
orderNo
]);
function
onPay
()
{
if
(
props
.
orderNo
)
{
setLoading
(
true
);
api
.
orderPayment
({
orderNo
:
props
.
orderNo
,
})
.
then
((
res
)
=>
{
if
(
res
.
code
==
"200"
)
{
message
.
success
(
"付款成功"
);
setTimeout
(()
=>
{
props
.
onCancel
&&
props
.
onCancel
();
setLoading
(
false
);
},
1000
);
}
else
{
res
.
message
&&
message
.
error
(
res
.
message
);
setLoading
(
false
);
}
})
.
catch
((
err
)
=>
{
setLoading
(
false
);
});
}
}
return
(
<>
<
Modal
width=
{
420
}
open=
{
props
.
open
}
onOk=
{
props
.
onOk
}
onCancel=
{
props
.
onCancel
}
title=
{
<>
<
div
style=
{
{
textAlign
:
"center"
}
}
className=
{
styles
.
font5
}
>
租赁付款
</
div
>
</>
}
footer=
{
<
Button
type=
"primary"
className=
{
styles
.
btn
}
style=
{
{
marginTop
:
43
}
}
onClick=
{
onPay
}
loading=
{
loading
}
>
立即付款
</
Button
>
}
>
<
div
style=
{
{
marginTop
:
16
,
marginBottom
:
34
,
textAlign
:
"center"
}
}
className=
{
styles
.
font1
}
>
{
formatNumber
(
data
?.
shouldPay
||
0
)
}{
" "
}
<
span
className=
{
styles
.
font2
}
style=
{
{
transform
:
"translateY(-3px)"
,
display
:
"inline-block"
}
}
>
元
</
span
>
</
div
>
<
Row
gutter=
{
[
0
,
16
]
}
>
<
Col
span=
{
6
}
className=
{
styles
.
font3
}
>
云仓账号
</
Col
>
<
Col
span=
{
18
}
className=
{
styles
.
font4
}
>
UID
{
userInfo
?.
uid
}
</
Col
>
<
Col
span=
{
6
}
className=
{
styles
.
font3
}
>
付款方式
</
Col
>
<
Col
span=
{
18
}
className=
{
styles
.
font4
}
>
充值余额(可用:¥
{
wallet
?.
cashAmt
}
)
</
Col
>
</
Row
>
</
Modal
>
</>
);
}
pages/personalCenter/leasingOrders/index.module.scss
0 → 100644
浏览文件 @
1ab84db7
@import
"~/styles/mixins.scss"
;
.font1
{
font-size
:
14px
;
font-family
:
MicrosoftYaHei
;
color
:
#9b9b9b
;
line-height
:
19px
;
}
.font2
{
font-size
:
12px
;
font-family
:
Arial-BoldMT
,
Arial
;
font-weight
:
normal
;
color
:
#626262
;
line-height
:
14px
;
}
.font3
{
font-size
:
14px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#6c6c6c
;
line-height
:
20px
;
}
.font4
{
font-size
:
14px
;
font-family
:
ArialMT
;
color
:
#141414
;
line-height
:
16px
;
}
.font5
{
font-size
:
12px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#929295
;
line-height
:
17px
;
}
.font6
{
font-size
:
14px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#070707
;
line-height
:
20px
;
}
.font7
{
font-size
:
13px
;
font-family
:
MicrosoftYaHeiUI-Bold
,
MicrosoftYaHeiUI
;
font-weight
:
bold
;
color
:
#070707
;
line-height
:
16px
;
}
.btn1
{
border-radius
:
16px
;
border
:
1px
solid
#ff552d
;
padding
:
6px
16px
;
font-size
:
14px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#ff552d
;
line-height
:
20px
;
}
.btn2
{
border-radius
:
16px
;
font-size
:
14px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#ffffff
;
line-height
:
20px
;
padding
:
6px
16px
;
}
pages/personalCenter/leasingOrders/index.page.tsx
0 → 100644
浏览文件 @
1ab84db7
import
{
TabsProps
,
Tabs
,
Row
,
Col
,
Image
,
Space
,
Button
,
Pagination
,
Empty
,
Spin
,
}
from
"antd"
;
import
{
useRouter
}
from
"next/router"
;
import
{
useEffect
,
useState
}
from
"react"
;
import
errImg
from
"~/assets/errImg"
;
import
LayoutView
from
"~/components/layout"
;
import
Sider
from
"../components/sider"
;
import
styles
from
"./index.module.scss"
;
import
api
,
{
LeasingList
,
ListTranStatusResp
}
from
"./api"
;
import
moment
from
"moment"
;
import
PayModal
from
"./components/payModal"
;
import
RefundModal
from
"./components/refundModal"
;
const
items
:
TabsProps
[
"items"
]
=
[
{
key
:
""
,
label
:
`全部`
,
},
{
key
:
"100"
,
label
:
`待付款`
,
},
{
key
:
"200"
,
label
:
`待发货`
,
},
{
key
:
"400"
,
label
:
`租赁中`
,
},
{
key
:
"500"
,
label
:
`归还中`
,
},
{
key
:
"600"
,
label
:
`已完成`
,
},
{
key
:
"700"
,
label
:
`退款/售后`
,
},
{
key
:
"999"
,
label
:
`已关闭`
,
},
];
export
default
function
LeasingOrders
()
{
const
router
=
useRouter
();
const
[
pageParams
,
setPageParams
]
=
useState
({
pageNo
:
1
,
pageSize
:
5
,
});
//分页器对象
const
[
total
,
setTotal
]
=
useState
(
0
);
//总数
const
[
abort
,
setAbort
]
=
useState
<
AbortController
|
null
>
(
null
);
//请求中断对你
const
[
tabKey
,
setTabKey
]
=
useState
(
""
);
const
[
orderList
,
setOrderList
]
=
useState
<
LeasingList
[]
>
([]);
const
[
loading
,
setLoading
]
=
useState
(
false
);
const
[
tranStatusMap
,
setTranStatusMap
]
=
useState
<
ListTranStatusResp
[]
>
([]);
//订单状态字典
const
[
openPayModal
,
setOpenPayModal
]
=
useState
(
false
);
//支付弹窗
const
[
openRefundModal
,
setOpenRefundModal
]
=
useState
(
false
);
//退款弹窗
const
[
orderNo
,
setOrderNo
]
=
useState
<
string
|
undefined
>
();
//获取订单状态字典
useEffect
(()
=>
{
api
.
listTranStatus
().
then
((
res
)
=>
{
setTranStatusMap
(
res
.
result
||
[]);
});
},
[]);
useEffect
(()
=>
{
//中断前一次列表请求
abort
?.
abort
();
setAbort
(
new
AbortController
());
},
[
pageParams
]);
//商品列表请求
useEffect
(()
=>
{
if
(
!
abort
)
{
return
;
}
setLoading
(
true
);
api
.
listPageWechatOrder
(
{
...
pageParams
,
tranStatus
:
tabKey
,
},
{
signal
:
abort
?.
signal
,
}
)
.
then
((
res
)
=>
{
setOrderList
(
res
.
result
?.
list
||
[]);
setTotal
(
res
.
result
?.
totalCount
||
0
);
setLoading
(
false
);
});
},
[
abort
]);
const
onPageChange
=
(
page
:
number
,
pageSize
:
number
)
=>
{
setPageParams
({
...
pageParams
,
pageNo
:
page
,
});
};
const
onTabsChange
=
(
key
:
string
)
=>
{
setTabKey
(
key
);
setPageParams
({
...
pageParams
,
pageNo
:
1
,
});
setTotal
(
0
);
};
// 交易状态对应的按钮渲染
const
statusBtn
=
function
(
item
:
LeasingList
)
{
switch
(
item
.
tranStatus
)
{
case
"100"
:
return
(
<
Button
className=
{
styles
.
btn2
}
type=
"primary"
onClick=
{
()
=>
{
setOrderNo
(
item
.
orderNo
);
setOpenPayModal
(
true
);
}
}
>
立即付款
</
Button
>
);
case
"200"
:
return
(
<
Button
className=
{
styles
.
btn1
}
onClick=
{
()
=>
{
setOrderNo
(
item
.
orderNo
);
setOpenRefundModal
(
true
);
}
}
>
申请退款
</
Button
>
);
case
"300"
:
return
(
<
Space
size=
{
0
}
direction=
"vertical"
align=
"center"
>
<
Button
className=
{
styles
.
btn2
}
type=
"primary"
>
确认收货
</
Button
>
<
Button
type=
"link"
style=
{
{
fontSize
:
10
}
}
>
查看物流
</
Button
>
</
Space
>
);
case
"400"
:
return
(
<
Space
size=
{
0
}
direction=
"vertical"
align=
"center"
>
<
Button
className=
{
styles
.
btn2
}
type=
"primary"
>
商品归还
</
Button
>
<
Button
type=
"link"
style=
{
{
fontSize
:
10
}
}
>
查看物流
</
Button
>
</
Space
>
);
case
"500"
:
<
Button
type
=
"link"
style
=
{{
marginTop
:
10
}}
>
查看物流
<
/Button>
;
case
"600"
:
return
<
Button
className=
{
styles
.
btn1
}
>
再来一单
</
Button
>;
}
};
return
(
<>
<
LayoutView
layoutStyle=
{
{
backgroundColor
:
"#fff"
}
}
contentStyle=
{
{
width
:
1000
,
marginLeft
:
526
}
}
headerStyle=
{
{
borderBottom
:
"1px solid #e2e2e2"
}
}
>
<
Sider
style=
{
{
position
:
"absolute"
,
left
:
-
37
,
top
:
15
,
transform
:
"translateX(-100%)"
,
}
}
selectedKeys=
{
[
router
.
pathname
]
}
></
Sider
>
<
div
style=
{
{
paddingTop
:
19
}
}
>
<
div
className=
{
styles
.
font1
}
>
租赁订单
</
div
>
<
Tabs
activeKey=
{
tabKey
}
items=
{
items
}
onChange=
{
onTabsChange
}
/>
<
Spin
spinning=
{
loading
}
delay=
{
500
}
>
<
ul
className=
{
styles
.
orderList
}
style=
{
{
minHeight
:
650
}
}
>
{
orderList
.
map
((
item
)
=>
{
return
(
<
li
key=
{
item
.
id
}
className=
{
styles
.
orderItem
}
>
<
Row
justify=
"space-between"
align=
"middle"
style=
{
{
height
:
30
,
padding
:
"0 26px 0 16px"
,
background
:
"#EBF8FF"
,
}
}
>
<
div
className=
{
styles
.
font2
}
>
2021-10-21 12:21:10
</
div
>
<
div
className=
{
styles
.
font3
}
>
{
tranStatusMap
.
find
(
(
sItem
)
=>
sItem
.
status
===
item
.
tranStatus
)?.
waiting
}
</
div
>
</
Row
>
<
Row
style=
{
{
minHeight
:
100
,
border
:
"1px solid #D0EAF5"
}
}
>
<
Col
style=
{
{
width
:
380
}
}
>
<
Row
>
<
div
style=
{
{
margin
:
"10px 10px 0 16px"
}
}
>
<
Image
width=
{
80
}
height=
{
80
}
preview=
{
false
}
fallback=
{
errImg
}
src=
{
item
.
wareImg
}
></
Image
>
</
div
>
<
div
style=
{
{
marginTop
:
12
}
}
>
<
div
className=
{
`ellipsis1 ${styles.font4}`
}
>
{
item
.
wareTitle
}
</
div
>
<
div
className=
{
`${styles.font5} ${styles.ellipse2}`
}
style=
{
{
marginTop
:
5
}
}
>
{
item
.
wareDescription
}
</
div
>
</
div
>
</
Row
>
</
Col
>
<
Col
style=
{
{
width
:
270
,
borderLeft
:
"1px solid #D0EAF5"
,
borderRight
:
"1px solid #D0EAF5"
,
}
}
>
<
Row
justify=
{
"center"
}
align=
"middle"
style=
{
{
height
:
"100%"
}
}
>
<
div
style=
{
{
textAlign
:
"center"
}
}
>
<
div
className=
{
styles
.
font7
}
style=
{
{
marginBottom
:
7
}
}
>
¥
{
item
.
shouldPay
}
</
div
>
<
div
className=
{
styles
.
font6
}
>
租期:
{
" "
}
{
moment
(
item
.
endDate
).
diff
(
item
.
startDate
,
"days"
)
}
天
</
div
>
<
div
className=
{
styles
.
font6
}
>
数量:
{
item
.
wareNum
}
件
</
div
>
</
div
>
</
Row
>
</
Col
>
<
Col
flex=
{
"auto"
}
style=
{
{}
}
>
<
Space
size=
{
7
}
style=
{
{
float
:
"right"
,
marginTop
:
20
,
marginRight
:
24
,
}
}
>
{
statusBtn
(
item
)
}
</
Space
>
</
Col
>
</
Row
>
</
li
>
);
})
}
{
orderList
.
length
===
0
&&
(
<
Empty
style=
{
{
paddingTop
:
20
,
width
:
"100%"
,
textAlign
:
"center"
,
}
}
></
Empty
>
)
}
</
ul
>
</
Spin
>
<
Pagination
current=
{
pageParams
.
pageNo
}
showSizeChanger=
{
false
}
showQuickJumper
total=
{
total
}
pageSize=
{
pageParams
.
pageSize
}
onChange=
{
onPageChange
}
hideOnSinglePage=
{
true
}
style=
{
{
marginTop
:
20
}
}
></
Pagination
>
</
div
>
</
LayoutView
>
<
PayModal
open=
{
openPayModal
}
onCancel=
{
()
=>
setOpenPayModal
(
false
)
}
orderNo=
{
orderNo
}
></
PayModal
>
<
RefundModal
open=
{
openRefundModal
}
onCancel=
{
()
=>
setOpenRefundModal
(
false
)
}
orderNo=
{
orderNo
}
></
RefundModal
>
</>
);
}
pages/personalCenter/mallOrders/api/index.ts
0 → 100644
浏览文件 @
1ab84db7
import
request
,
{
Response
}
from
"~/api/request"
export
interface
listPageParams
{
keyword
?:
string
,
showType
:
number
,
pageNo
:
number
;
pageSize
:
number
;
}
export
interface
listPageResp
{
pageNo
:
number
;
pageSize
:
number
;
list
:
OrderList
[];
totalCount
:
number
;
totalPage
:
number
;
}
export
interface
OrderList
{
id
:
number
;
orderNo
:
string
;
orderMainImg
:
string
;
orderName
:
string
;
totalBuyNum
:
number
;
orderAmount
:
number
;
statusCode
:
number
;
signStatus
?:
any
;
operationName
?:
any
;
operationId
?:
any
;
deliveryTime
?:
any
;
contractNo
?:
any
;
userAccountId
:
number
;
uid
?:
any
;
userName
?:
any
;
phoneNum
?:
any
;
payMethod
:
number
;
contractSignedWay
?:
any
;
createTime
:
string
;
recMallUserName
?:
any
;
ogSkuSpecDTOList
:
OgSkuSpecDTOList
[];
remark
:
string
;
creditPeriod
?:
any
;
entName
?:
any
;
saleId
?:
any
;
saleName
?:
any
;
tagName
?:
any
;
realNameAuth
?:
any
;
realPayAmount
?:
any
;
subAmount
?:
any
;
shareId
?:
any
;
shareStatus
:
number
;
deductAmount
?:
any
;
discountAmount
?:
any
;
realityAmount
?:
any
;
shutReason
?:
any
;
mallOrderProdListDTOList
:
MallOrderProdListDTOList
[];
mremark
?:
any
;
}
interface
MallOrderProdListDTOList
{
id
:
number
;
goodsInfoId
:
number
;
productName
:
string
;
model
?:
any
;
prodSkuSpecName
:
string
;
prodSkuSpecImage
:
string
;
partNo
:
string
;
versionDesc
:
string
;
buyNum
:
number
;
unitPrice
:
number
;
skuSpecAmount
:
number
;
}
interface
OgSkuSpecDTOList
{
id
:
number
;
directoryId
:
number
;
shopCarId
?:
any
;
skuSpecName
:
string
;
}
export
interface
ListTranStatusResp
{
status
:
string
;
doing
:
string
;
waiting
:
string
;
leaseOrderStatus
:
string
;
}
export
default
{
//v1.0.0订单列表-查询
listPage
(
params
:
listPageParams
,
options
:
any
):
Promise
<
Response
<
listPageResp
>>
{
return
request
(
'/oms/app-order/listPage'
,
'get'
,
params
,
options
)
},
//订单状态-字典
listTranStatus
():
Promise
<
Response
<
ListTranStatusResp
[]
>>
{
return
request
(
'/oms/RentalOrders/listTranStatus'
,
'get'
);
}
}
\ No newline at end of file
pages/personalCenter/mallOrders/index.module.scss
浏览文件 @
1ab84db7
@import
"~/styles/mixins.scss"
;
.font1
{
font-size
:
14px
;
font-family
:
MicrosoftYaHei
;
color
:
#9b9b9b
;
line-height
:
19px
;
}
.font2
{
font-size
:
12px
;
font-family
:
Arial-BoldMT
,
Arial
;
font-weight
:
normal
;
color
:
#626262
;
line-height
:
14px
;
}
.font3
{
font-size
:
14px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#6c6c6c
;
line-height
:
20px
;
}
.font4
{
font-size
:
14px
;
font-family
:
ArialMT
;
color
:
#141414
;
line-height
:
16px
;
}
.font5
{
font-size
:
12px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#929295
;
line-height
:
17px
;
}
.btn1
{
border-radius
:
16px
;
border
:
1px
solid
#ff552d
;
padding
:
6px
16px
;
font-size
:
14px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#ff552d
;
line-height
:
20px
;
}
.btn2
{
border-radius
:
16px
;
font-size
:
14px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
#ffffff
;
line-height
:
20px
;
padding
:
6px
16px
;
}
pages/personalCenter/mallOrders/index.page.tsx
浏览文件 @
1ab84db7
import
{
TabsProps
,
Tabs
}
from
"antd"
;
import
{
useRouter
}
from
"next/router"
;
import
{
TabsProps
,
Tabs
,
Row
,
Col
,
Image
,
Space
,
Button
,
Spin
,
Pagination
,
Empty
,
}
from
"antd"
;
import
{
useRouter
}
from
"next/router"
;
import
{
useEffect
,
useState
}
from
"react"
;
import
errImg
from
"~/assets/errImg"
;
import
Right
from
"~/components/contentBox/right"
;
import
LayoutView
from
"~/components/layout"
;
import
Sider
from
"../components/sider"
;
import
api
,
{
OrderList
,
ListTranStatusResp
}
from
"./api"
;
import
styles
from
"./index.module.scss"
;
const
onChange
=
(
key
:
string
)
=>
{
console
.
log
(
key
);
};
const
items
:
TabsProps
[
"items"
]
=
[
{
key
:
""
,
label
:
`全部`
,
},
{
key
:
"0"
,
label
:
`意向沟通`
,
},
{
key
:
"1"
,
label
:
`Tab 1`
,
children
:
`Content of Tab Pane 1`
,
label
:
`签约付款`
,
},
{
key
:
"2"
,
label
:
`Tab 2`
,
children
:
`Content of Tab Pane 2`
,
label
:
`待发货`
,
},
{
key
:
"3"
,
label
:
`Tab 3`
,
children
:
`Content of Tab Pane 3`
,
label
:
`待收货`
,
},
];
export
default
function
Mall
Order
()
{
export
default
function
Leasing
Order
()
{
const
router
=
useRouter
();
const
[
pageParams
,
setPageParams
]
=
useState
({
pageNo
:
1
,
pageSize
:
5
,
});
//分页器对象
const
[
total
,
setTotal
]
=
useState
(
0
);
//总数
const
[
abort
,
setAbort
]
=
useState
<
AbortController
|
null
>
(
null
);
//请求中断对你
const
[
tabKey
,
setTabKey
]
=
useState
(
""
);
const
[
orderList
,
setOrderList
]
=
useState
<
OrderList
[]
>
([]);
const
[
loading
,
setLoading
]
=
useState
(
false
);
const
[
orderNo
,
setOrderNo
]
=
useState
<
string
|
undefined
>
();
useEffect
(()
=>
{
//中断前一次列表请求
abort
?.
abort
();
setAbort
(
new
AbortController
());
},
[
pageParams
]);
//商品列表请求
useEffect
(()
=>
{
if
(
!
abort
)
{
return
;
}
setLoading
(
true
);
api
.
listPage
(
{
...
pageParams
,
showType
:
Number
(
tabKey
),
},
{
signal
:
abort
?.
signal
,
}
)
.
then
((
res
)
=>
{
setOrderList
(
res
.
result
?.
list
||
[]);
setTotal
(
res
.
result
?.
totalCount
||
0
);
setLoading
(
false
);
});
},
[
abort
]);
const
onPageChange
=
(
page
:
number
,
pageSize
:
number
)
=>
{
setPageParams
({
...
pageParams
,
pageNo
:
page
,
});
};
const
onTabsChange
=
(
key
:
string
)
=>
{
setTabKey
(
key
);
setPageParams
({
...
pageParams
,
pageNo
:
1
,
});
setTotal
(
0
);
};
return
(
<>
<
LayoutView
layoutStyle=
{
{
backgroundColor
:
"#fff"
}
}
contentStyle=
{
{
width
:
1000
,
marginLeft
:
526
}
}
headerStyle=
{
{
borderBottom
:
"1px solid #e2e2e2"
}
}
>
<
Sider
style=
{
{
position
:
"absolute"
,
left
:
-
37
,
top
:
15
,
transform
:
"translateX(-100%)"
,
}
}
selectedKeys=
{
[
router
.
pathname
]
}
></
Sider
>
<
div
>
<
div
style=
{
{
paddingTop
:
19
}
}
>
<
div
className=
{
styles
.
font1
}
>
商城订单
</
div
>
<
Tabs
defaultActiveKey=
"1"
items=
{
items
}
onChange=
{
onChange
}
/>
<
Tabs
activeKey=
{
tabKey
}
items=
{
items
}
onChange=
{
onTabsChange
}
/>
<
Spin
spinning=
{
loading
}
delay=
{
500
}
>
<
ul
className=
{
styles
.
orderList
}
style=
{
{
minHeight
:
650
}
}
>
{
orderList
.
map
((
item
)
=>
{
return
(
<
li
className=
{
styles
.
orderItem
}
>
<
Row
justify=
"space-between"
align=
"middle"
style=
{
{
height
:
30
,
padding
:
"0 26px 0 16px"
,
background
:
"#EBF8FF"
,
}
}
>
<
div
className=
{
styles
.
font2
}
>
{
item
.
createTime
}
</
div
>
<
div
className=
{
styles
.
font3
}
>
待分配运营
</
div
>
</
Row
>
<
Row
style=
{
{
minHeight
:
100
,
border
:
"1px solid #D0EAF5"
}
}
>
<
Col
style=
{
{
width
:
380
}
}
>
<
Row
>
<
div
style=
{
{
margin
:
"10px 10px 0 16px"
}
}
>
<
Image
width=
{
80
}
height=
{
80
}
preview=
{
false
}
fallback=
{
errImg
}
src=
{
item
.
orderMainImg
}
></
Image
>
</
div
>
<
div
style=
{
{
marginTop
:
12
}
}
>
<
div
className=
{
`ellipsis1 ${styles.font4}`
}
>
{
item
.
orderName
}
</
div
>
{
item
.
mallOrderProdListDTOList
.
map
((
spec
)
=>
{
return
(
<
div
className=
{
styles
.
font5
}
style=
{
{
marginTop
:
5
}
}
>
{
spec
.
prodSkuSpecName
}
:
{
spec
.
productName
}
</
div
>
);
})
}
</
div
>
</
Row
>
</
Col
>
<
Col
style=
{
{
width
:
270
,
borderLeft
:
"1px solid #D0EAF5"
,
borderRight
:
"1px solid #D0EAF5"
,
}
}
>
<
Row
justify=
{
"center"
}
align=
"middle"
style=
{
{
height
:
"100%"
}
}
>
数量:
{
item
.
totalBuyNum
}
件
</
Row
>
</
Col
>
<
Col
flex=
{
"auto"
}
style=
{
{}
}
>
<
Space
size=
{
7
}
style=
{
{
float
:
"right"
,
marginTop
:
20
,
marginRight
:
24
,
}
}
>
<
Button
className=
{
styles
.
btn1
}
>
取消订单
</
Button
>
<
Button
className=
{
styles
.
btn2
}
type=
"primary"
>
查看合同
</
Button
>
</
Space
>
</
Col
>
</
Row
>
</
li
>
);
})
}
{
orderList
.
length
===
0
&&
(
<
Empty
style=
{
{
paddingTop
:
20
,
width
:
"100%"
,
textAlign
:
"center"
,
}
}
></
Empty
>
)
}
</
ul
>
</
Spin
>
<
Pagination
current=
{
pageParams
.
pageNo
}
showSizeChanger=
{
false
}
showQuickJumper
total=
{
total
}
pageSize=
{
pageParams
.
pageSize
}
onChange=
{
onPageChange
}
hideOnSinglePage=
{
true
}
style=
{
{
marginTop
:
20
}
}
></
Pagination
>
</
div
>
</
LayoutView
>
</>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论