Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
J
jz_Travel
Project
Project
Details
Activity
Releases
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
zhengke
jz_Travel
Commits
672d031a
Commit
672d031a
authored
Mar 18, 2025
by
youjie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
幸福存折 ,积分
parent
89f7ed66
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
2305 additions
and
497 deletions
+2305
-497
vipUser.vue
components/vip/vipUser.vue
+1
-1
pages.json
pages.json
+34
-0
happasHeader.vue
pages/user-center/components/happasHeader.vue
+0
-318
userHeader.vue
pages/user-center/components/userHeader.vue
+23
-21
vipUserHeader.vue
pages/user-center/components/vipUserHeader.vue
+29
-11
costSavingStatistics.vue
pages/user-center/costSavingStatistics.vue
+717
-0
happinessPasDetails.vue
pages/user-center/happinessPasDetails.vue
+175
-0
happinessPassbook.vue
pages/user-center/happinessPassbook.vue
+444
-119
points.vue
pages/user-center/points.vue
+696
-0
pointsDetails.vue
pages/user-center/pointsDetails.vue
+170
-0
userVip-center.vue
pages/user-center/userVip-center.vue
+16
-27
No files found.
components/vip/vipUser.vue
View file @
672d031a
...
...
@@ -59,7 +59,7 @@
border-radius
:
18
rpx
;
}
.vip-box-unactive
.vip-logo
{
right
:
34
rpx
;
right
:
0
;
width
:
87
rpx
;
height
:
99
rpx
;
top
:
-37
rpx
;
...
...
pages.json
View file @
672d031a
...
...
@@ -135,6 +135,40 @@
"titlePenetrate"
:
"YES"
}
}
},
{
"path"
:
"happinessPasDetails"
,
"style"
:
{
"navigationBarBackgroundColor"
:
"#F3F1EF"
,
"backgroundColor"
:
"#F3F1EF"
}
},
{
"path"
:
"points"
,
"style"
:
{
"navigationStyle"
:
"custom"
,
"mp-alipay"
:
{
"transparentTitle"
:
"always"
,
"titlePenetrate"
:
"YES"
}
}
},
{
"path"
:
"pointsDetails"
,
"style"
:
{
"navigationBarBackgroundColor"
:
"#F3F1EF"
,
"backgroundColor"
:
"#F3F1EF"
}
},
{
"path"
:
"costSavingStatistics"
,
"style"
:
{
"navigationStyle"
:
"custom"
,
"mp-alipay"
:
{
"transparentTitle"
:
"always"
,
"titlePenetrate"
:
"YES"
}
}
}
]
},
...
...
pages/user-center/components/happasHeader.vue
deleted
100644 → 0
View file @
89f7ed66
<
template
>
<view
class=
"userHeaderBox"
>
<view
class=
"titlenav"
:style=
"
{ paddingTop: nav }">
<view
class=
"carrHeader-left-icon"
@
click=
"goBack"
>
<u-icon
name=
"arrow-left"
size=
"38"
color=
"#000"
></u-icon>
</view>
{{
pageTitle
}}
</view>
<view
class=
"userHeadPic row"
>
<view
class=
"userHeadPicL"
>
<u-avatar
:src=
"b2b_user_info.photo?b2b_user_info.photo:user_info.avatar"
size=
"97"
shape=
"circle"
></u-avatar>
<!--
<image
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638748795455095258.png"
mode=
"widthFix"
></image>
-->
</view>
<view
class=
"col column"
>
<text
v-if=
"b2b_user_info&&b2b_user_info.name"
class=
"userHeadPicR_title"
@
click=
"navigatorToProfile"
>
{{
b2b_user_info
.
name
}}
</text>
<text
v-else-if=
"mall_UserInfo&&mall_UserInfo.Name"
class=
"userHeadPicR_title"
>
{{
mall_UserInfo
.
Name
}}
</text>
<text
v-else
class=
"userHeadPicR_title"
@
click=
"login(user_info)"
>
立即登录
</text>
<text
class=
"userHeadPicR_text"
>
销售:
{{
b2b_user_info
.
salesBaseInfo
.
emName
}}
等3人
</text>
</view>
</view>
<view
class=
"userHeadPasBox"
>
<view
class=
"userHeadPNumBox row-sb-n"
>
<view
class=
"userHeadPNum"
>
<view
class=
"userHeadPNumT"
>
当前余额
</view>
<view
class=
"userHeadPNumB"
>
<text>
¥
</text>
10550
</view>
</view>
<view
class=
"userHeadPNum active"
>
<view
class=
"userHeadPNumT"
>
待结算
</view>
<view
class=
"userHeadPNumB"
>
<text>
¥
</text>
10550
</view>
</view>
</view>
<view
class=
"userHeadPNumS row-sb-n"
>
<view
class=
"userHeadPNumSL"
>
累计已省
</view>
<view
class=
"userHeadPNumSR"
>
¥
<text>
15818
</text>
</view>
</view>
</view>
</view>
</
template
>
<
script
>
export
default
{
props
:[
'user_info'
,
'b2b_user_info'
],
data
()
{
return
{
pageTitle
:
"幸福存折"
,
nav
:
0
,
progress
:[
{
text
:
'1'
,
colorStyle
:
'active'
,
radiusL
:
''
,
radiusR
:
''
,
},
{
text
:
'2'
,
colorStyle
:
'active'
,
radiusL
:
''
,
radiusR
:
''
,
},
{
text
:
'3'
,
colorStyle
:
'active'
,
radiusL
:
''
,
radiusR
:
''
,
},
{
text
:
'4'
,
colorStyle
:
'active'
,
radiusL
:
''
,
radiusR
:
''
,
},
{
text
:
''
,
colorStyle
:
''
,
radiusL
:
''
,
radiusR
:
''
,
img
:
'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638732528736165089.png'
},
],
};
},
components
:
{},
computed
:
{
},
created
()
{
},
onLoad
()
{
this
.
nav
=
uni
.
getSystemInfoSync
().
statusBarHeight
+
"px"
;
},
mounted
()
{
},
onShow
()
{
},
methods
:
{
goBack
(){
uni
.
navigateBack
({
delta
:
-
1
})
},
navigatorToProfile
(){
// #ifdef MP-DI
uni
.
navigateTo
({
url
:
'/pages/user-center/user-profile'
})
// #endif
},
},
};
</
script
>
<
style
lang=
"scss"
scoped
>
@import
url("@/asset/css/flex.css")
;
.userHeaderBox
{
width
:
750rpx
;
background
:
url('https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638774883791846536.png')
no-repeat
#F3F2EF
;
background-size
:
100%
auto
;
padding-top
:
118rpx
;
position
:
relative
;
}
.carrHeader-left-icon
{
position
:
absolute
;
left
:
32rpx
;
top
:
119rpx
;
z-index
:
2
;
}
.titlenav
{
width
:
100%
;
text-align
:
center
;
font-size
:
16px
;
color
:
#000
;
}
.userHeadPic
{
padding
:
49rpx
20rpx
25rpx
62rpx
;
}
.userHeadPicL
{
width
:
97rpx
;
height
:
97rpx
;
overflow
:
hidden
;
border-radius
:
50%
;
margin-right
:
27rpx
;
}
.userHeadPicL
image
{
width
:
97rpx
;
height
:
97rpx
;
display
:
block
;
}
.userHeadPicR_title
{
font-family
:
PingFang
SC
;
font-weight
:
bold
;
font-size
:
36rpx
;
color
:
#080A09
;
white-space
:
nowrap
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
}
.userHeadPicR_text
{
font-family
:
PingFang
SC
;
font-weight
:
500
;
font-size
:
24rpx
;
color
:
#61462E
;
margin-top
:
16rpx
;
letter-spacing
:
1rpx
;
}
.jz_LineDetaVipPr
{
margin-top
:
28rpx
;
position
:
relative
;
left
:
-20rpx
;
}
.jz_LineDetaVip
{
width
:
100%
;
height
:
120rpx
;
background
:
linear-gradient
(
90deg
,
#3F423F
,
#313131
);
border-radius
:
18rpx
;
display
:
flex
;
flex-direction
:
column
;
padding
:
15rpx
0
6rpx
0
;
margin-top
:
18rpx
;
margin-bottom
:
18rpx
;
}
.jz_LineDetaVipTop
{
font-family
:
PingFang
SC
;
font-weight
:
400
;
font-size
:
24rpx
;
color
:
#E2C27A
;
letter-spacing
:
.1rpx
;
display
:
flex
;
align-content
:
center
;
padding
:
0
34rpx
;
}
.jz_LineDetaVipTop
img
{
width
:
21rpx
;
height
:
21rpx
;
display
:
inline-block
;
margin-left
:
5rpx
;
}
.jz_LineDetaVPB
{
display
:
flex
;
}
.jz_LineDetaVPBBox
{
display
:
flex
;
align-items
:
center
;
width
:
1px
;
flex
:
1
;
}
.jz_LineDetaVPBN
{
width
:
30rpx
;
height
:
30rpx
;
background
:
#2E2E2E
;
border-radius
:
50%
;
text-align
:
center
;
line-height
:
28rpx
;
font-family
:
DIN
Black
;
font-weight
:
bold
;
font-size
:
24rpx
;
color
:
#494949
;;
}
.jz_LineDetaVPBLine
{
flex
:
1
;
height
:
10rpx
;
background
:
#000
;
}
.jz_LineDetaVPBBoxI
{
position
:
relative
;
flex
:
1
;
}
.jz_LineDetaVPBBoxI
img
{
width
:
87rpx
;
height
:
99rpx
;
position
:
absolute
;
bottom
:
-35rpx
;
right
:
8rpx
;
z-index
:
2
;
}
.jz_LineDetaVPBBox.active
.jz_LineDetaVPBN
{
background
:
linear-gradient
(
270deg
,
#C99E59
,
#FFFFB3
);
}
.jz_LineDetaVPBBox.active
.jz_LineDetaVPBLine
{
background
:
#C99E59
;
color
:
#583F2C
;
}
.VPBLRadiusL
{
border-radius
:
20rpx
0
0
20rpx
;
}
.VPBLRadiusR
{
border-radius
:
0
20rpx
20rpx
0
;
}
.jz_LineDetaVPBY
{
position
:
absolute
;
left
:
-29rpx
;
right
:
0
;
top
:
0
;
}
.userHeadPasBox
{
padding
:
0
30rpx
;
}
.userHeadPNum
{
width
:
330rpx
;
border-radius
:
18rpx
;
background
:
rgba
(
255
,
255
,
255
,.
2
);
padding
:
30rpx
20rpx
40rpx
50rpx
;
}
.userHeadPNumT
{
font-weight
:
500
;
font-size
:
28rpx
;
color
:
#4F360D
;
margin-bottom
:
21rpx
;
}
.userHeadPNumB
{
color
:
#FF3166
;
font-size
:
48rpx
;
font-weight
:
bold
;
}
.userHeadPNumB
text
{
font-size
:
29rpx
;
}
.userHeadPNum.active
.userHeadPNumB
{
color
:
#4F360D
;
}
.userHeadPNumS
{
border-radius
:
18rpx
;
background
:
rgba
(
255
,
255
,
255
,.
2
);
padding
:
30rpx
40rpx
40rpx
50rpx
;
margin-top
:
30rpx
;
margin-bottom
:
40rpx
;
}
.userHeadPNumSL
{
font-size
:
29rpx
;
color
:
#4F360D
;
}
.userHeadPNumSR
{
color
:
#4F360D
;
font-size
:
29rpx
;
font-weight
:
bold
;
}
.userHeadPNumSR
text
{
font-size
:
48rpx
;
}
</
style
>
pages/user-center/components/userHeader.vue
View file @
672d031a
<
template
>
<view
class=
"userHeaderBox"
v-if=
"statistics"
>
<view
class=
"userHeaderBox"
v-if=
"statistics"
:style=
"[titleStyle]"
>
<view
class=
"titlenav"
:style=
"
{ paddingTop: nav }">
{{
pageTitle
}}
</view>
<view
class=
"userHeadPic row"
>
<view
class=
"userHeadPicL"
>
<u-avatar
:src=
"b2b_user_info.photo?b2b_user_info.photo:user_info.avatar"
size=
"97"
shape=
"circle"
></u-avatar>
<u-avatar
v-if=
"b2b_user_info.photo||statistics.image"
:src=
"b2b_user_info.photo?b2b_user_info.photo:statistics.image"
size=
"97"
shape=
"circle"
></u-avatar>
<u-avatar
v-else
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638748795455095258.png"
size=
"97"
shape=
"circle"
></u-avatar>
<!--
<image
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638748795455095258.png"
mode=
"widthFix"
></image>
-->
</view>
<view
class=
"col column"
>
...
...
@@ -27,29 +29,29 @@
<view
class=
"userHeadPasBox"
>
<view
class=
"userHeadPas column"
>
<view
class=
"userHeadPasTop"
>
<view
class=
"userHeadPasT_Num row-sb-n"
v-if=
"statistics.balance>=0"
>
<view
class=
"userHeadPasT_Num row-sb-n"
>
<!-- #ifdef MP-AG-->
<view
class=
"column"
>
<text>
{{
formatNumberWithUnit(statistics.balance)
}}
</text>
<view
class=
"column"
@
click=
"goUrl('/pages/user-center/happinessPassbook')"
>
<text>
{{
statistics.balance>0?formatNumberWithUnit(statistics.balance):0
}}
</text>
<text
class=
"userHeadPasTTeT"
>
幸福存折
</text>
</view>
<!-- #endif -->
<view
class=
"column"
>
<text>
{{ statistics.integral }}
</text>
<view
class=
"column"
@
click=
"goUrl('/pages/user-center/points')"
>
<text>
{{ statistics.integral
?statistics.integral:0
}}
</text>
<text
class=
"userHeadPasTTeT"
>
我的积分
</text>
</view>
<view
class=
"column"
>
<text>
{{
formatNumberWithUnit(statistics.totalSavings)
}}
{{
statistics.totalSavings>0?formatNumberWithUnit(statistics.totalSavings):0
}}
</text>
<text
class=
"userHeadPasTTeT"
>
累计已省
</text>
</view>
<view
class=
"column"
@
click=
"goUrl('/pages/coupon/index/index')"
>
<text>
{{ statistics.couponNum }}
</text>
<text>
{{ statistics.couponNum
?statistics.couponNum:0
}}
</text>
<text
class=
"userHeadPasTTeT"
>
优惠券
</text>
</view>
</view>
...
...
@@ -71,14 +73,14 @@
<
script
>
import
vipUser
from
"@/components/vip/vipUser.vue"
;
export
default
{
props
:[
'
user_info'
,
'
statistics'
,
'b2b_user_info'
],
props
:[
'statistics'
,
'b2b_user_info'
],
components
:
{
vipUser
},
data
()
{
return
{
pageTitle
:
"个人中心"
,
nav
:
0
,
progress
:[],
titleStyle
:{}
};
},
...
...
@@ -100,7 +102,14 @@
this
.
nav
=
uni
.
getSystemInfoSync
().
statusBarHeight
+
"px"
;
},
mounted
()
{
const
that
=
this
uni
.
getSystemInfo
({
success
(
res
)
{
that
.
titleStyle
=
{
paddingTop
:
`
${
res
.
statusBarHeight
}
px`
};
},
});
},
onShow
()
{
...
...
@@ -130,21 +139,14 @@
this
.
$emit
(
'login'
)
}
},
navigatorToProfile
(){
// #ifdef MP-DI
uni
.
navigateTo
({
url
:
'/pages/user-center/user-profile'
})
// #endif
},
goUrl
(
url
){
if
(
url
==
'/pages/user-center/user-profile'
){
// #ifdef MP-DI
uni
.
navigateTo
({
url
:
url
})
return
// #endif
return
}
uni
.
navigateTo
({
url
:
url
...
...
@@ -317,7 +319,7 @@
padding-top
:
7rpx
;
}
.userHeadPasButtom
{
padding
:
30rpx
0
50rpx
39rpx
;
padding
:
30rpx
38rpx
50rpx
39rpx
;
}
.userHeadPasButText
{
font-family
:
PingFang
SC
;
...
...
pages/user-center/components/vipUserHeader.vue
View file @
672d031a
<
template
>
<view
class=
"userHeaderBox"
>
<view
class=
"userHeaderBox"
:style=
"[titleStyle]"
>
<view
class=
"titlenav"
:style=
"
{ paddingTop: nav }">
{{
pageTitle
}}
</view>
<view
class=
"userHeadPic row"
>
<view
class=
"userHeadPicL"
>
<u-avatar
:src=
"b2b_user_info.photo?b2b_user_info.photo:user_info.avatar"
size=
"70"
shape=
"circle"
></u-avatar>
<u-avatar
v-if=
"b2b_user_info.photo||statistics.image"
:src=
"b2b_user_info.photo?b2b_user_info.photo:statistics.image"
size=
"70"
shape=
"circle"
></u-avatar>
<u-avatar
v-else
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638748864186439447.png"
size=
"70"
shape=
"circle"
></u-avatar>
<!--
<image
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638748864186439447.png"
mode=
"widthFix"
></image>
-->
</view>
<view
class=
"col column"
>
<text
v-if=
"b2b_user_info&&b2b_user_info.name"
class=
"userHeadPicR_title"
@
click=
"
navigatorToProfile
"
>
class=
"userHeadPicR_title"
@
click=
"
goUrl('/pages/user-center/user-profile')
"
>
{{
b2b_user_info
.
name
}}
</text>
<text
v-else-if=
"mall_UserInfo&&mall_UserInfo.Name"
...
...
@@ -39,25 +41,25 @@
<view
class=
"userHeadPasTop"
>
<view
class=
"userHeadPasT_Num row-sbs-n"
v-if=
"statistics"
>
<!-- #ifdef MP-AG-->
<view
class=
"column"
>
<text>
{{
formatNumberWithUnit(statistics.balance)
}}
</text>
<view
class=
"column"
@
click=
"goUrl('/pages/user-center/happinessPassbook')"
>
<text>
{{
statistics.balance>0?formatNumberWithUnit(statistics.balance):0
}}
</text>
<text
class=
"userHeadPasTTeT"
>
幸福存折
</text>
</view>
<!-- #endif -->
<view
class=
"column"
>
<text>
{{ statistics.integral }}
</text>
<view
class=
"column"
@
click=
"goUrl('/pages/user-center/points')"
>
<text>
{{ statistics.integral
>0?statistics.integral:0
}}
</text>
<text
class=
"userHeadPasTTeT"
>
我的积分
</text>
</view>
<view
class=
"column"
>
<text>
{{
formatNumberWithUnit(statistics.totalSavings)
}}
</text>
<text>
{{
statistics.totalSavings>0?formatNumberWithUnit(statistics.totalSavings):0
}}
</text>
<text
class=
"userHeadPasTTeT"
>
累计已省
</text>
</view>
<view
class=
"column"
@
click=
"goUrl('/pages/coupon/index/index')"
>
<text
class=
"userHeadPasTextb"
>
{{ statistics.couponNum }}
</text>
<text
class=
"userHeadPasTextb"
>
{{ statistics.couponNum
>=0?statistics.couponNum:0
}}
</text>
<text
class=
"userHeadPasTTeT"
>
优惠券
</text>
</view>
</view>
...
...
@@ -70,11 +72,12 @@
<
script
>
export
default
{
props
:[
'
user_info'
,
'
b2b_user_info'
,
'statistics'
],
props
:[
'b2b_user_info'
,
'statistics'
],
data
()
{
return
{
pageTitle
:
"个人中心"
,
nav
:
0
,
titleStyle
:
{}
};
},
components
:
{},
...
...
@@ -86,7 +89,14 @@
},
mounted
()
{
const
that
=
this
uni
.
getSystemInfo
({
success
(
res
)
{
that
.
titleStyle
=
{
paddingTop
:
`
${
res
.
statusBarHeight
}
px`
};
},
});
},
onShow
()
{
...
...
@@ -125,6 +135,14 @@
},
goUrl
(
url
){
if
(
url
==
'/pages/user-center/user-profile'
){
// #ifdef MP-DI
uni
.
navigateTo
({
url
:
url
})
// #endif
return
}
uni
.
navigateTo
({
url
:
url
})
...
...
pages/user-center/costSavingStatistics.vue
0 → 100644
View file @
672d031a
<
template
>
<view
style=
"width:100vw;height:100vh;"
class=
"column"
>
<scroll-view
:scroll-y=
"true"
@
scroll=
"scrollHandler"
@
scrolltoupper=
"scrollTopHandler"
class=
"col"
style=
"height: 1px;width: 100%;"
>
<view
class=
"userStyle"
>
<view
class=
"headStatus"
v-if=
"scrollTop > 50"
:style=
"
{
zIndex: scrollTop
<
10
?
'
unset
'
:
2
,
opacity:
scrollTop
<
10
?
'
100
'
:
scrollTop
,
}"
>
<view
class=
"title"
>
{{
pageTitle
}}
</view>
</view>
<view
class=
"userBox"
style=
"height:100vh"
>
<view
class=
"userHeaderBox"
:style=
"[titleStyle]"
>
<view
class=
"titlenav"
>
<view
class=
"carrHeader-left-icon"
@
click=
"goBack"
>
<u-icon
name=
"arrow-left"
size=
"38"
color=
"#000"
></u-icon>
</view>
{{
pageTitle
}}
</view>
<view
class=
"userHeadPic row"
>
<view
class=
"userHeadPicL"
>
<u-avatar
v-if=
"b2b_user_info.photo||statistics.image"
:src=
"b2b_user_info.photo?b2b_user_info.photo:statistics.image"
size=
"99"
shape=
"circle"
></u-avatar>
<u-avatar
v-else
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638748795455095258.png"
size=
"99"
shape=
"circle"
></u-avatar>
<!--
<image
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638748795455095258.png"
mode=
"widthFix"
></image>
-->
</view>
<view
class=
"col column"
>
<text
v-if=
"b2b_user_info&&b2b_user_info.name"
class=
"userHeadPicR_title"
@
click=
"navigatorToProfile"
>
Hello,
{{
b2b_user_info
.
name
}}
</text>
<text
v-else-if=
"mall_UserInfo&&mall_UserInfo.Name"
class=
"userHeadPicR_title"
>
Hello,
{{
mall_UserInfo
.
Name
}}
</text>
<text
class=
"userHeadPicR_text"
>
尊敬的VIP用户,
<!-- #ifdef MP-DI -->
国旅优选
<!-- #endif --><!-- #ifdef MP-AG -->
旅小友
<!-- #endif -->
已与您同行
<text
style=
"font-size: 28rpx;color: #9B571E;font-weight: bold;"
>
318
</text>
天
</text>
</view>
</view>
<view
class=
"userHeadPasBox"
>
<view
class=
"userHeadCostBox"
>
<view
class=
"userHeadCostType row-sb-n items-center"
>
<view
class=
"userHeadCostTText row items-center justify-center"
v-for=
"(item,index) in typeList"
:key=
"index"
:class=
"[msg.Type==item.ID?'active':'']"
@
click=
"research(item.ID)"
>
<image
v-if=
"msg.Type==item.ID"
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638778211798604496.png"
/>
<text>
{{
item
.
Name
}}
</text>
</view>
</view>
<view
class=
"userHeadCostTime row justify-center"
>
<view>
2025.02-2025.08
</view>
</view>
<view
class=
"userHeadCostChart"
>
//
<mrsongCharts
//
type=
'ring'
//
align=
'center'
//
:config=
"config"
//
:options=
"options"
/>
</view>
</view>
</view>
</view>
<view
style=
"height: 21rpx;"
></view>
<view
style=
"padding: 0 32rpx;width: 100vw;height: 1px;flex: 1;"
>
<view
class=
"userMyOrderBox column"
>
<view
class=
"userMyOrderTitle row-sb-n"
style=
"padding: 20rpx 0;"
>
<view
class=
"userMyOrderTL"
>
幸福存折明细
</view>
<view
class=
"userMyOrderTR row items-center"
@
click=
"goUrl('/pages/user-center/happinessPassbook')"
>
<text
class=
"userMyOrderTRTj"
>
合计
</text>
<view
class=
"userMyOrderTRQ"
>
<text>
¥
</text><text>
900
</text></view>
<u-icon
class=
"userMyOrderTRR"
name=
"arrow-down"
size=
"28"
color=
"#B2B3B3"
></u-icon>
</view>
</view>
<scroll-view
:scroll-y=
"true"
class=
"col"
@
scrolltolower=
"lower"
style=
"height: 1px;flex: 1; width: 100%;"
>
<view
class=
"userHeadPListBox"
>
<view
class=
"userHeadPList row"
v-for=
"(item,index) in dataList"
:key=
"index"
@
click=
"goDetails(item)"
>
<view
class=
"userHeadPListL"
>
<image
mode=
"scaleToFill"
:src=
"item.imgCover"
/>
<text>
共4人
</text>
</view>
<view
class=
"userHeadPListA col column"
>
<view
class=
"userHeadPListATitel"
>
{{
item
.
lineName
}}
</view>
<view
class=
"userHeadPListATime"
>
{{
item
.
updateTime
}}
</view>
</view>
<view
class=
"userHeadPListR"
>
+¥
{{
item
.
money
}}
</view>
</view>
</view>
<u-empty
v-if=
"dataList.length == 0 && !loading"
text=
"暂无数据"
mode=
"data"
padding-top=
"20"
></u-empty>
<u-loadmore
v-else
:status=
"status"
:load-text=
"loadText"
:font-size=
"24"
:margin-top=
"20"
:margin-bottom=
"20"
bg-color=
"#fff"
/>
</scroll-view>
</view>
</view>
</view>
</view>
</scroll-view>
<u-picker
mode=
"time"
v-model=
"showTime"
:defaultTime=
"times"
:params=
"params"
@
confirm =
'confirm'
></u-picker>
</view>
</
template
>
<
script
>
// import mrsongCharts from '@/uni_modules/mrsong-charts/components/mrsong-charts/mrsong-charts.vue';
export
default
{
components
:
{
// mrsongCharts
},
data
()
{
return
{
pageTitle
:
"省钱统计"
,
scrollTop
:
0
,
showAuth
:
false
,
b2b_user_info
:
{},
mall_UserInfo
:
{},
typeList
:[
{
Name
:
'累计省钱'
,
ID
:
0
},
{
Name
:
'月度省钱'
,
ID
:
1
},
{
Name
:
'年度省钱'
,
ID
:
2
},
],
msg
:{
pageIndex
:
1
,
//是 [string]
pageSize
:
10
,
//是 [string]
BalanceState
:
0
,
// 状态 1查询已反记录 2查询待结算记录
Type
:
0
,
// 类型 1存入 2扣除
StartTime
:
''
,
// 开始时间
EndTime
:
''
,
},
statistics
:{},
dataList
:
[],
status
:
"加载中"
,
page_count
:
0
,
loadText
:
{
loadmore
:
"轻轻上拉,加载更多"
,
loading
:
"努力加载中"
,
nomore
:
"没有更多了"
,
},
loading
:
false
,
showTime
:
false
,
params
:
{
year
:
true
,
month
:
true
,
day
:
false
,
hour
:
false
,
minute
:
false
,
second
:
false
},
year
:
''
,
month
:
''
,
times
:
''
,
CustomerBalance
:{},
titleStyle
:{},
config
:{
itemCount
:
3
,
// x轴单屏显示数据的数量,默认为5个
scrollShow
:
false
,
// 新增是否显示滚动条,默认false
scrollAlign
:
'left'
,
// 滚动条初始位置
rotateLabel
:
true
,
// X轴label旋转
min
:
0
,
// Y轴最小值
// "max": 150, //Y轴大值
unit
:
''
,
// Y轴单位
enableScroll
:
false
,
// 开启滚动模式
color
:
[
// 颜色设置
'#9A60B4'
,
'#ea7ccc'
]
},
options
:{
background
:
"#000000"
,
color
:
[
'#080A09'
,
'#91CB74'
,
'#FAC858'
,
'#EE6666'
,
'#73C0DE'
,
'#3CA272'
,
'#FC8452'
,
'#9A60B4'
,
'#ea7ccc'
],
xAxis
:
{
itemCount
:
4
,
// x轴单屏显示数据的数量,默认为5个
scrollShow
:
false
,
// 新增是否显示滚动条,默认false
scrollAlign
:
'left'
,
// 滚动条初始位置
rotateLabel
:
true
// X轴label旋转
},
yAxis
:
{
data
:
[
{
min
:
0
,
// Y轴最小值
// "max": 150, //Y轴大值
unit
:
''
// Y轴单位
}
]
},
enableScroll
:
false
,
// 开启滚动模式
fontColor
:
"#4F360D"
,
padding
:[
20
,
20
,
20
,
20
]
}
};
},
onLoad
()
{
this
.
b2b_user_info
=
uni
.
getStorageSync
(
'b2b_user'
);
this
.
mall_UserInfo
=
uni
.
getStorageSync
(
"mall_UserInfo"
);
this
.
showAuth
=
!
this
.
mall_UserInfo
||
!
this
.
b2b_user_info
;
},
onShow
()
{
const
that
=
this
uni
.
getSystemInfo
({
success
(
res
)
{
that
.
titleStyle
=
{
paddingTop
:
`
${
res
.
statusBarHeight
}
px`
};
},
});
const
now
=
new
Date
();
this
.
year
=
now
.
getFullYear
();
this
.
month
=
String
(
now
.
getMonth
()
+
1
).
padStart
(
2
,
'0'
);
this
.
msg
.
StartTime
=
this
.
year
+
'-'
+
this
.
month
+
'-01'
now
.
setMonth
(
now
.
getMonth
()
+
1
,
0
);
this
.
msg
.
EndTime
=
this
.
year
+
'-'
+
this
.
month
+
'-'
+
now
.
getDate
()
this
.
times
=
this
.
year
+
'-'
+
this
.
month
this
.
getList
();
this
.
GetCustomerCenter
()
this
.
GetCustomerBalance
()
},
methods
:
{
confirm
(
e
){
if
(
this
.
year
==
e
.
year
&&
this
.
month
==
e
.
month
)
return
this
.
year
=
e
.
year
this
.
month
=
e
.
month
this
.
times
=
this
.
year
+
'-'
+
this
.
month
const
now
=
new
Date
(
this
.
year
,
this
.
month
,
1
);
// 设置为下个月第1天
now
.
setDate
(
now
.
getDate
()
-
1
);
// 减1天即为上个月最后一天
this
.
msg
.
StartTime
=
this
.
year
+
'-'
+
this
.
month
+
'-01'
this
.
msg
.
EndTime
=
this
.
year
+
'-'
+
this
.
month
+
'-'
+
now
.
getDate
()
this
.
research
()
},
SelectDate
(){
this
.
showTime
=
true
},
goDetails
(
item
)
{
if
(
url
)
{
let
path
=
`/pages/user-center/happinessPasDetails?data=`
+
encodeURIComponent
(
item
)
uni
.
navigateTo
({
url
:
path
,
});
}
},
scrollHandler
(
e
)
{
this
.
scrollTop
=
e
.
detail
.
scrollTop
;
},
scrollTopHandler
()
{
this
.
scrollTop
=
0
;
},
goUrl
(
url
)
{
uni
.
navigateTo
({
url
});
},
GetCustomerCenter
(){
this
.
apipost
(
'b2b_get_GetCustomerCenter_New'
,
{},
(
res
)
=>
{
uni
.
hideLoading
()
this
.
statistics
=
res
.
data
},
err
=>
{
uni
.
showToast
({
title
:
err
.
message
,
icon
:
"none"
,
});
}
);
},
lower
(
e
)
{
if
(
this
.
msg
.
pageIndex
<
this
.
page_count
)
{
this
.
msg
.
pageIndex
++
;
this
.
status
=
"loading"
;
this
.
getList
();
}
else
{
this
.
status
=
"nomore"
;
}
},
research
(
ID
)
{
if
(
ID
==
this
.
msg
.
Type
)
return
if
(
ID
>=
0
)
this
.
msg
.
Type
=
ID
this
.
msg
.
pageIndex
=
1
this
.
dataList
=
[]
this
.
getList
()
},
getList
()
{
this
.
loading
=
true
uni
.
showLoading
({
title
:
'加载中'
,
icon
:
'none'
})
this
.
apipost
(
'b2b_get_GetCustomerBalancePageList'
,
this
.
msg
,
(
res
)
=>
{
this
.
loading
=
false
uni
.
hideLoading
();
this
.
dataList
=
this
.
dataList
.
concat
(
res
.
data
.
pageData
)
this
.
page_count
=
res
.
data
.
pageCount
;
},(
err
)
=>
{
this
.
loading
=
false
uni
.
hideLoading
();
}
);
},
GetCustomerBalance
()
{
this
.
apipost
(
"b2b_get_GetCustomerBalanceDetail"
,{},
(
res
)
=>
{
this
.
CustomerBalance
=
res
.
data
}
);
},
goBack
(){
uni
.
navigateBack
({
delta
:
-
1
})
}
}
};
</
script
>
<
style
scoped
>
@import
url('../../asset/css/flex.css')
;
.row-sbas-n
{
justify-content
:
space-between
;
}
.relative
{
position
:
relative
;
}
.userStyle
.userBox
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
background
:
url('https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638774847991690497.png')
no-repeat
#E8D1A2
;
background-size
:
100%
auto
;
height
:
100vh
;
//
padding-bottom
:
env
(
safe-area-inset-bottom
);
}
.order_bar_list
{
padding
:
22
rpx
55
rpx
;
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
justify-content
:
space-between
;
}
.order_bar_item
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
margin-top
:
20
rpx
;
position
:
relative
;
}
.badge
{
position
:
absolute
;
right
:
-10
rpx
;
top
:
-10
rpx
;
padding
:
0
8
rpx
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
font-size
:
20
rpx
;
background
:
#FF3166
;
color
:
#fff
;
min-width
:
28
rpx
;
height
:
28
rpx
;
border-radius
:
14
rpx
;
}
.headStatus
{
position
:
fixed
;
width
:
140vw
;
padding-right
:
40vw
;
padding-bottom
:
10px
;
left
:
0
;
right
:
0
;
top
:
0
;
display
:
flex
;
background-image
:
linear-gradient
(
to
right
,
#e6b865
,
#ebb45e
);
}
.headStatus
.title
{
font-size
:
18px
;
color
:
#fff
;
flex
:
1
;
width
:
1px
;
line-height
:
34px
;
text-align
:
center
;
}
.userMyOrder
{
background
:
#FFF
;
border-radius
:
20
rpx
;
padding
:
33
rpx
0
22
rpx
0
;
}
.userMyOrderTitle
{
padding
:
23
rpx
31
rpx
0
31
rpx
;
}
.userMyOrderTitL
{
font-family
:
PingFang
SC
;
font-weight
:
800
;
font-size
:
32
rpx
;
color
:
#080A09
;
}
.userMyOrderTitR
{
font-family
:
PingFang
SC
;
font-weight
:
500
;
font-size
:
24
rpx
;
color
:
#B2B3B3
;
align-items
:
center
;
}
.userMyOrderTitRIght
{
margin-left
:
11
rpx
;
transform
:
rotate
(
90deg
);
}
.orderProductBox
{
padding
:
0
20
rpx
;
}
.orderProduct
{
width
:
648
rpx
;
height
:
132
rpx
;
background
:
#F7F7F7
;
border-radius
:
18
rpx
;
padding
:
21
rpx
20
rpx
;
}
.orderProductL
{
width
:
91
rpx
;
height
:
88
rpx
;
border-radius
:
14
rpx
;
overflow
:
hidden
;
margin-right
:
18
rpx
;
}
.orderProductR_state
{
font-family
:
PingFang
SC
;
font-weight
:
500
;
font-size
:
28
rpx
;
color
:
#080A09
;
padding-top
:
5
rpx
;
}
.orderProductR_text
{
width
:
100%
;
font-family
:
PingFang
SC
;
font-weight
:
500
;
font-size
:
24
rpx
;
color
:
#8C8C8C
;
padding-top
:
4
rpx
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
}
.userMyOrderBox
{
background
:
#FFFFFF
;
height
:
100%
;
overflow
:
hidden
;
border-radius
:
20
rpx
;
padding
:
25
rpx
34
rpx
45
rpx
34
rpx
;
}
.userHeadPList
{
padding
:
20
rpx
0
;
}
.userHeadPListL
{
width
:
91
rpx
;
height
:
88
rpx
;
border-radius
:
14
rpx
;
overflow
:
hidden
;
position
:
relative
;
}
.userHeadPListL
image
{
width
:
91
rpx
;
height
:
88
rpx
;
display
:
block
;
}
.userHeadPListL
text
{
position
:
absolute
;
left
:
0
;
right
:
0
;
bottom
:
0
;
z-index
:
1
;
background
:
rgb
(
178
,
179
,
179
,
.8
);
border-radius
:
0
rpx
0
rpx
14
rpx
14
rpx
;
color
:
#fff
;
font-size
:
20
rpx
;
padding
:
5
rpx
0
;
text-align
:
center
;
}
.userHeadPListA
{
margin-left
:
29
rpx
;
margin-right
:
20
rpx
;
}
.userHeadPListATitel
{
font-weight
:
bold
;
font-size
:
28
rpx
;
color
:
#080A09
;
margin-top
:
5
rpx
;
}
.userHeadPListATime
{
font-weight
:
500
;
font-size
:
24
rpx
;
color
:
#8C8C8C
;
margin-top
:
18
rpx
;
}
.userHeadPListR
{
font-weight
:
bold
;
font-size
:
28
rpx
;
color
:
#B99846
;
}
.userHeaderBox
{
width
:
750
rpx
;
}
.titlenav
{
width
:
100%
;
text-align
:
center
;
font-size
:
16px
;
color
:
#000
;
position
:
relative
;
}
.carrHeader-left-icon
{
position
:
absolute
;
left
:
32
rpx
;
top
:
7
rpx
;
z-index
:
2
;
}
.userHeadPic
{
padding
:
49
rpx
20
rpx
25
rpx
62
rpx
;
}
.userHeadPicL
{
width
:
97
rpx
;
height
:
97
rpx
;
overflow
:
hidden
;
border-radius
:
50%
;
margin-right
:
27
rpx
;
}
.userHeadPicL
image
{
width
:
97
rpx
;
height
:
97
rpx
;
display
:
block
;
}
.userHeadPicR_title
{
font-family
:
PingFang
SC
;
font-weight
:
bold
;
font-size
:
36
rpx
;
color
:
#080A09
;
white-space
:
nowrap
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
}
.userHeadPicR_text
{
font-family
:
PingFang
SC
;
font-weight
:
500
;
font-size
:
24
rpx
;
color
:
#61462E
;
margin-top
:
16
rpx
;
letter-spacing
:
1
rpx
;
}
.jz_LineDetaVipPr
{
margin-top
:
28
rpx
;
position
:
relative
;
left
:
-20
rpx
;
}
.jz_LineDetaVip
{
width
:
100%
;
height
:
120
rpx
;
background
:
linear-gradient
(
90deg
,
#3F423F
,
#313131
);
border-radius
:
18
rpx
;
display
:
flex
;
flex-direction
:
column
;
padding
:
15
rpx
0
6
rpx
0
;
margin-top
:
18
rpx
;
margin-bottom
:
18
rpx
;
}
.jz_LineDetaVipTop
{
font-family
:
PingFang
SC
;
font-weight
:
400
;
font-size
:
24
rpx
;
color
:
#E2C27A
;
letter-spacing
:
.1
rpx
;
display
:
flex
;
align-content
:
center
;
padding
:
0
34
rpx
;
}
.jz_LineDetaVipTop
img
{
width
:
21
rpx
;
height
:
21
rpx
;
display
:
inline-block
;
margin-left
:
5
rpx
;
}
.jz_LineDetaVPB
{
display
:
flex
;
}
.jz_LineDetaVPBBox
{
display
:
flex
;
align-items
:
center
;
width
:
1px
;
flex
:
1
;
}
.jz_LineDetaVPBN
{
width
:
30
rpx
;
height
:
30
rpx
;
background
:
#2E2E2E
;
border-radius
:
50%
;
text-align
:
center
;
line-height
:
28
rpx
;
font-family
:
DIN
Black
;
font-weight
:
bold
;
font-size
:
24
rpx
;
color
:
#494949
;
;
}
.jz_LineDetaVPBLine
{
flex
:
1
;
height
:
10
rpx
;
background
:
#000
;
}
.jz_LineDetaVPBBoxI
{
position
:
relative
;
flex
:
1
;
}
.jz_LineDetaVPBBoxI
img
{
width
:
87
rpx
;
height
:
99
rpx
;
position
:
absolute
;
bottom
:
-35
rpx
;
right
:
8
rpx
;
z-index
:
2
;
}
.jz_LineDetaVPBBox.active
.jz_LineDetaVPBN
{
background
:
linear-gradient
(
270deg
,
#C99E59
,
#FFFFB3
);
}
.jz_LineDetaVPBBox.active
.jz_LineDetaVPBLine
{
background
:
#C99E59
;
color
:
#583F2C
;
}
.VPBLRadiusL
{
border-radius
:
20
rpx
0
0
20
rpx
;
}
.VPBLRadiusR
{
border-radius
:
0
20
rpx
20
rpx
0
;
}
.jz_LineDetaVPBY
{
position
:
absolute
;
left
:
-29
rpx
;
right
:
0
;
top
:
0
;
}
.userHeadPasBox
{
padding
:
0
30
rpx
;
}
.userHeadCostBox
{
border-radius
:
16
rpx
;
background
:
-webkit-gradient
(
linear
,
0
0
,
0
100%
,
from
(
#FBF3E1
),
to
(
#F3E1BA
));
padding
:
25
rpx
22
rpx
51
rpx
22
rpx
;
}
.userHeadCostType
{
width
:
641
rpx
;
height
:
93
rpx
;
background
:
url("https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638778209274571586.png")
no-repeat
;
background-size
:
641
rpx
auto
;
padding
:
13
rpx
16
rpx
;
}
.userHeadCostType
image
{
width
:
34
rpx
;
height
:
34
rpx
;
}
.userHeadCostTText
{
flex
:
1
;
line-height
:
64
rpx
;
font-weight
:
bold
;
font-size
:
26
rpx
;
color
:
#4F360D
;
text-align
:
center
;
}
.userHeadCostTText.active
{
box-shadow
:
0
rpx
0
rpx
10
rpx
0
rpx
rgba
(
247
,
236
,
211
,
0.38
);
border-radius
:
14
rpx
;
background
:
-webkit-gradient
(
linear
,
0
0
,
0
100%
,
from
(
#313131
),
to
(
#3F423F
));
color
:
#F3F1EF
;
}
.userHeadCostTime
{
padding
:
32
rpx
0
0
0
;
}
.userHeadCostTime
view
{
font-weight
:
500
;
font-size
:
24
rpx
;
color
:
#4F360D
;
background
:
#EDDDBA
;
box-shadow
:
0
rpx
0
rpx
4
rpx
0
rpx
rgba
(
211
,
181
,
119
,
0.5
);
border-radius
:
19
rpx
;
padding
:
0
23
rpx
;
}
.userHeadCostChart
{
height
:
440
rpx
;
//
overflow
:
hidden
;
}
.userMyOrderTL
{
font-weight
:
800
;
font-size
:
32
rpx
;
color
:
#080A09
;
}
.userMyOrderTRTj
{
font-weight
:
500
;
font-size
:
24
rpx
;
color
:
#B2B3B3
;
}
.userMyOrderTRQ
{
font-weight
:
bold
;
font-size
:
36
rpx
;
color
:
#000
;
padding
:
0
7
rpx
0
10
rpx
;
}
.userMyOrderTRQ
:first-child
{
font-size
:
26
rpx
;
}
.userMyOrderTRR
{
transform
:
rotate
(
-90deg
);
}
</
style
>
\ No newline at end of file
pages/user-center/happinessPasDetails.vue
0 → 100644
View file @
672d031a
<
template
>
<view
class=
"hapPasDetBox column"
style=
"width:100vw;height:100vh;background: #F3F1EF;"
>
<view
class=
"hapPasDetTitle"
>
幸福存折
{{
PassbookAata
.
type
==
1
?
'收入'
:
'支出'
}}
</view>
<view
class=
"hapPasDetNum"
>
{{
PassbookAata
.
type
==
1
?
'+'
:
'-'
}}{{
PassbookAata
.
money
}}
</view>
<view
class=
"hapPasDetBox"
>
<view
class=
"hapPasDetImg row"
@
click=
"goProduct"
>
<image
mode=
"aspectFit"
:src=
"PassbookAata.imgCover"
/>
<view
class=
"col"
>
{{
PassbookAata
.
lineName
}}
</view>
</view>
<view
class=
"row hapPasDetText"
>
<text
class=
"hapPasDetL"
>
订单号
</text>
<view
class=
"hapPasDetR col"
>
<text
class=
"hapPasDetRC"
>
{{
PassbookAata
.
orderId
}}
</text>
<text
class=
"hapPasDetRCop"
@
click=
"handleCopy(PassbookAata.orderId)"
>
复制
</text>
</view>
</view>
<view
class=
"row hapPasDetText"
>
<text
class=
"hapPasDetL"
>
{{
PassbookAata
.
type
==
1
?
'收入'
:
'支出'
}}
日期
</text>
<view
class=
"hapPasDetR col"
>
<text
class=
"hapPasDetRC"
>
{{
PassbookAata
.
updateTime
}}
</text>
</view>
</view>
<view
class=
"row hapPasDetText"
>
<text
class=
"hapPasDetL"
>
团号
</text>
<view
class=
"hapPasDetR col"
>
<text
class=
"hapPasDetRC"
>
{{
PassbookAata
.
tcnum
}}
</text>
<text
class=
"hapPasDetRCop"
@
click=
"handleCopy(PassbookAata.tcnum)"
>
复制
</text>
</view>
</view>
<view
class=
"row hapPasDetText"
>
<text
class=
"hapPasDetL"
>
出团日期
</text>
<view
class=
"hapPasDetR col"
>
<text
class=
"hapPasDetRC"
>
{{
PassbookAata
.
tcStartDate
}}
</text>
</view>
</view>
<view
class=
"row hapPasDetText"
>
<text
class=
"hapPasDetL"
>
订单人数
</text>
<view
class=
"hapPasDetR col"
>
<text
class=
"hapPasDetRC active"
>
{{
PassbookAata
.
peopleNum
}}
人
</text>
</view>
</view>
</view>
</view>
</
template
>
<
script
>
export
default
{
components
:
{
},
data
()
{
return
{
scrollTop
:
0
,
b2b_user_info
:
{},
mall_UserInfo
:
{},
PassbookAata
:{},
};
},
onLoad
(
option
)
{
if
(
option
.
data
){
this
.
PassbookAata
=
decodeURIComponent
(
option
.
data
)
}
this
.
b2b_user_info
=
uni
.
getStorageSync
(
'b2b_user'
);
this
.
mall_UserInfo
=
uni
.
getStorageSync
(
"mall_UserInfo"
);
this
.
showAuth
=
!
this
.
mall_UserInfo
||
!
this
.
b2b_user_info
;
},
onShow
()
{
uni
.
setNavigationBarTitle
({
title
:
""
})
},
methods
:
{
async
handleCopy
(
text
){
try
{
await
uni
.
copyText
(
text
);
uni
.
showToast
({
title
:
'复制成功'
,
icon
:
'success'
,
});
}
catch
(
err
)
{
uni
.
showToast
({
title
:
'复制失败'
,
icon
:
'none'
,
duration
:
1500
});
}
},
goProduct
(){
return
uni
.
navigateTo
({
url
:
"/pages/product/productDetails/productDetails?id="
+
this
.
PassbookAata
.
orderId
})
}
}
};
</
script
>
<
style
scoped
>
@import
url('../../asset/css/flex.css')
;
.hapPasDetTitle
{
font-weight
:
bold
;
font-size
:
32
rpx
;
color
:
#080A0A
;
line-height
:
70
rpx
;
text-align
:
center
;
padding
:
39
rpx
0
40
rpx
0
;
}
.hapPasDetNum
{
font-weight
:
bold
;
font-size
:
52
rpx
;
color
:
#B99846
;
line-height
:
70
rpx
;
text-align
:
center
;
margin-bottom
:
48
rpx
;
}
.hapPasDetBox
{
background
:
#FFFFFF
;
border-radius
:
18
rpx
18
rpx
18
rpx
18
rpx
;
padding
:
40
rpx
;
}
.hapPasDetImg
{
margin-bottom
:
50
rpx
;
}
.hapPasDetImg
image
{
width
:
141
rpx
;
height
:
141
rpx
;
border-radius
:
14
rpx
14
rpx
14
rpx
14
rpx
;
border
:
1
rpx
solid
#000000
;
display
:
inline-block
;
}
.hapPasDetImg
view
{
margin-left
:
30
rpx
;
font-weight
:
bold
;
font-size
:
28
rpx
;
color
:
#080A0A
;
word-break
:
break-all
;
text-overflow
:
ellipsis
;
display
:
-webkit-box
;
-webkit-box-orient
:
vertical
;
-webkit-line-clamp
:
4
;
overflow
:
hidden
;
}
.hapPasDetText
{
padding
:
0
0
10
rpx
0
;
}
.hapPasDetL
{
width
:
180
rpx
;
font-weight
:
500
;
font-size
:
28
rpx
;
color
:
#757776
;
line-height
:
70
rpx
;
}
.hapPasDetR
{
font-size
:
28
rpx
;
line-height
:
70
rpx
;
}
.hapPasDetRC
{
font-weight
:
bold
;
color
:
#080A09
;
}
.hapPasDetRC.active
{
color
:
#FF3166
;
}
.hapPasDetRCop
{
line-height
:
35
rpx
;
background
:
#E9E4E0
;
border-radius
:
15
rpx
15
rpx
15
rpx
15
rpx
;
color
:
#000000
;
font-weight
:
500
;
display
:
inline-block
;
padding
:
0
10
rpx
;
margin-left
:
30
rpx
;
}
</
style
>
\ No newline at end of file
pages/user-center/happinessPassbook.vue
View file @
672d031a
<
template
>
<view
style=
"width:100vw;height:100vh;"
class=
"column"
>
<scroll-view
:scroll-y=
"true"
@
scroll=
"scrollHandler"
@
scrolltoupper=
"scrollTopHandler"
class=
"col"
style=
"height: 1px;width: 100%;"
>
<view
style=
"width:100vw;height: 100vh;"
class=
"column"
>
<scroll-view
scroll-y=
"true"
@
scroll=
"scroll"
:scroll-top=
"scrollTop"
class=
"col"
style=
"width: 100%;height: 1px; flex: 1;"
>
<view
class=
"userStyle"
>
<view
class=
"headStatus"
v-if=
"scrollTop > 50"
:style=
"
{
<view
class=
"headStatus"
v-if=
"scrollTop > 50"
:style=
"
[titleStyle,
{
zIndex: scrollTop
<
10
?
'
unset
'
:
2
,
opacity:
scrollTop
<
10
?
'
100
'
:
scrollTop
,
}"
>
<view
class=
"title"
>
{{
pageTitle
}}
</view>
}]"
>
<view
class=
"title"
style=
"position: relative;"
>
<u-icon
name=
"arrow-left"
size=
"38"
color=
"#000"
style=
"position: absolute;left: 32rpx;top:20rpx"
></u-icon>
{{
pageTitle
}}
</view>
</view>
<view
class=
"userBox"
style=
"height:100vh"
>
<happasHeader
:user_info=
"user_info"
:b2b_user_info=
"b2b_user_info"
@
login=
"openAuth"
></happasHeader>
<view
style=
"padding: 0 32rpx;width: 100vw;height: 1px;flex: 1;"
>
<view
class=
"userBox"
>
<view
class=
"userHeaderBox"
:style=
"[titleStyle]"
>
<view
class=
"titlenav"
>
<view
class=
"carrHeader-left-icon"
@
click=
"goBack"
>
<u-icon
name=
"arrow-left"
size=
"38"
color=
"#000"
></u-icon>
</view>
{{
pageTitle
}}
</view>
<view
class=
"userHeadPic row"
>
<view
class=
"userHeadPicL"
>
<u-avatar
v-if=
"b2b_user_info.photo||CustomerBalance.image"
:src=
"b2b_user_info.photo?b2b_user_info.photo:CustomerBalance.image"
size=
"99"
shape=
"circle"
></u-avatar>
<u-avatar
v-else
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638748795455095258.png"
size=
"99"
shape=
"circle"
></u-avatar>
<!--
<image
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638748795455095258.png"
mode=
"widthFix"
></image>
-->
</view>
<view
class=
"col column"
>
<text
v-if=
"b2b_user_info&&b2b_user_info.name"
class=
"userHeadPicR_title"
@
click=
"navigatorToProfile"
>
{{
b2b_user_info
.
name
}}
</text>
<text
v-else-if=
"mall_UserInfo&&mall_UserInfo.Name"
class=
"userHeadPicR_title"
>
{{
mall_UserInfo
.
Name
}}
</text>
<!-- v-if="CustomerBalance&&CustomerBalance.saleList&&CustomerBalance.saleList.length>0" -->
<text
class=
"userHeadPicR_text"
@
click=
"goTisp"
>
幸福存折规则
<!-- #ifdef MP-DI -->
<!-- 销售:
{{
b2b_user_info
.
salesBaseInfo
.
emName
}}
-->
<!-- #endif -->
<!-- #ifdef MP-AG -->
<!-- 销售:
{{
CustomerBalance
.
saleList
[
0
].
saleName
}}
<template
v-if=
"CustomerBalance.saleList.length>0"
>
等
{{
CustomerBalance
.
saleList
.
length
}}
位
</
template
>
-->
<!-- #endif -->
</text>
</view>
</view>
<view
class=
"userHeadPasBox"
>
<view
class=
"userHeadPNumBox row-sb-n"
>
<view
class=
"userHeadPNum"
>
<view
class=
"userHeadPNumT"
>
当前余额
</view>
<view
class=
"userHeadPNumB"
>
<text>
¥
</text>
{{ CustomerBalance.balance>=0?CustomerBalance.balance:0 }}
</view>
</view>
<view
class=
"userHeadPNum active"
>
<view
class=
"userHeadPNumT"
>
待结算
</view>
<view
class=
"userHeadPNumB"
>
<text>
¥
</text>
{{ CustomerBalance.waitBalance>=0?CustomerBalance.waitBalance:0 }}
</view>
</view>
</view>
<view
class=
"userHeadPNumS row-sb-n"
>
<view
class=
"userHeadPNumSL"
>
累计已省
</view>
<view
class=
"userHeadPNumSR"
>
¥
<text>
{{ CustomerBalance.useBalance>=0?CustomerBalance.useBalance:0 }}
</text>
</view>
</view>
</view>
</view>
<view
class=
"listBox"
:class=
"[showTisp?'active':'']"
style=
"padding: 0 32rpx;width: 100vw;"
>
<view
class=
"userMyOrderBox column"
>
<view
class=
"row-sb-n"
style=
"padding: 20rpx 0;"
>
<view>
明细
</view>
<view
class=
"row"
>
<text>
2025年
</text>
<u-icon
name=
"arrow-down"
size=
"28"
color=
"#000"
></u-icon>
</view>
<view
class=
"row"
>
<text>
3月
</text>
<u-icon
name=
"arrow-down"
size=
"28"
color=
"#000"
></u-icon>
</view>
<view
style=
"padding: 20rpx 0;"
>
<view
class=
"userMyOrderState row-sb-n"
>
<view
v-for=
"(item,index) in stateList"
:key=
"index"
:class=
"[msg.Type==item.ID?'active':'']"
@
click=
"research(item.ID)"
>
{{ item.Name }}
</view>
</view>
<view
class=
"row"
>
<view
class=
"row"
@
click=
"SelectDate"
>
<text>
{{year}}年
</text>
<text>
{{month}}月
</text>
<u-icon
name=
"arrow-down"
size=
"28"
color=
"#000"
></u-icon>
</view>
</view>
</view>
<scroll-view
:scroll-y=
"true"
class=
"col"
style=
"height: 1px;flex: 1; width: 100%;"
>
<view
class=
"userHeadPListBox"
>
<view
class=
"userHeadPList row"
v-for=
"(item,index) in 10"
>
<scroll-view
:scroll-y=
"true"
class=
"col"
@
scrolltolower=
"lower"
style=
"height: 1px;flex: 1; width: 100%;"
>
<view
class=
"userHeadPListBox"
v-if=
"dataList&&dataList.length>0"
>
<view
class=
"userHeadPList row"
v-for=
"(item,index) in dataList"
:key=
"index"
@
click=
"goDetails(item)"
>
<view
class=
"userHeadPListL"
>
<image
mode=
"
scaleToFill"
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638774847991690497.png
"
/>
<text>
共
4件
</text>
<image
mode=
"
aspectFit"
:src=
"item.imgCover
"
/>
<text>
共
{{item.peopleNum}}人
</text>
</view>
<view
class=
"userHeadPListA col column"
>
<view
class=
"userHeadPListATitel"
>
幸福存折返佣
</view>
<view
class=
"userHeadPListATime"
>
2025-02-08 15:27
</view>
<view
class=
"userHeadPListATitel"
>
幸福存折{{ item.type==1?'收入':'支出' }}
</view>
<view
class=
"userHeadPListATime"
>
{{ item.updateTime }}
</view>
</view>
<view
class=
"userHeadPListR"
>
+¥30
{{item.type==1?'+':'-'}}¥{{ item.money }}
</view>
</view>
</view>
<u-empty
v-if=
"dataList.length == 0 && !loading"
text=
"暂无数据"
mode=
"data"
:padding-top=
"!showTisp?10:30"
></u-empty>
<u-loadmore
v-else
:status=
"status"
:load-text=
"loadText"
:font-size=
"24"
:margin-top=
"20"
:margin-bottom=
"20"
bg-color=
"#fff"
/>
</scroll-view>
</view>
</view>
<u-alert-tips
v-if=
"showTisp"
:show=
"showTisp"
:close-able=
"true"
@
close=
"showTisp=false"
style=
"padding: 30rpx 30rpx;"
type=
"warning"
title=
"2025年2月1日(包含)起生效"
description=
"幸福存折:平台所有散拼报名跟团游产品均可参加幸福存折活动,欧洲线路为 80元/人,其他线路为 30元/人,婴儿不参加幸福存折活动。团队出团后7个工作日内将会存入幸福存折余额。"
></u-alert-tips>
</view>
</view>
</scroll-view>
<u-picker
mode=
"time"
v-model=
"showTime"
:defaultTime=
"times"
:params=
"params"
@
confirm =
'confirm'
></u-picker>
</view>
</template>
<
script
>
import
happasHeader
from
"./components/happasHeader.vue"
;
export
default
{
components
:
{
happasHeader
,
},
data
()
{
return
{
...
...
@@ -62,10 +148,43 @@
showAuth
:
false
,
b2b_user_info
:
{},
mall_UserInfo
:
{},
u
:
{},
user_info
:
{},
shopBasics
:
{},
PointNum
:
0
,
stateList
:[
{
Name
:
'全部'
,
ID
:
0
},
{
Name
:
'收入'
,
ID
:
1
},
{
Name
:
'支付'
,
ID
:
2
},
],
msg
:{
pageIndex
:
1
,
//是 [string]
pageSize
:
10
,
//是 [string]
BalanceState
:
0
,
// 状态 1查询已反记录 2查询待结算记录
Type
:
0
,
// 类型 1存入 2扣除
StartTime
:
''
,
// 开始时间
EndTime
:
''
,
},
dataList
:
[],
status
:
"加载中"
,
page_count
:
0
,
loadText
:
{
loadmore
:
"轻轻上拉,加载更多"
,
loading
:
"努力加载中"
,
nomore
:
"没有更多了"
,
},
loading
:
false
,
showTime
:
false
,
params
:
{
year
:
true
,
month
:
true
,
day
:
false
,
hour
:
false
,
minute
:
false
,
second
:
false
},
year
:
''
,
month
:
''
,
times
:
''
,
CustomerBalance
:{},
titleStyle
:{},
showTisp
:
false
};
},
onLoad
()
{
...
...
@@ -74,115 +193,114 @@
this
.
showAuth
=
!
this
.
mall_UserInfo
||
!
this
.
b2b_user_info
;
},
onShow
()
{
this
.
userCenterinfo
(
2
);
const
that
=
this
uni
.
getSystemInfo
({
success
(
res
)
{
that
.
titleStyle
=
{
paddingTop
:
`
${
res
.
statusBarHeight
}
px`
};
},
});
const
now
=
new
Date
();
this
.
year
=
now
.
getFullYear
();
this
.
month
=
String
(
now
.
getMonth
()
+
1
).
padStart
(
2
,
'0'
);
this
.
msg
.
StartTime
=
this
.
year
+
'-'
+
this
.
month
+
'-01'
now
.
setMonth
(
now
.
getMonth
()
+
1
,
0
);
this
.
msg
.
EndTime
=
this
.
year
+
'-'
+
this
.
month
+
'-'
+
now
.
getDate
()
this
.
times
=
this
.
year
+
'-'
+
this
.
month
this
.
getList
();
this
.
GetCustomerBalance
()
},
methods
:
{
goTisp
(){
this
.
showTisp
=
true
this
.
scrollTop
=
500
},
confirm
(
e
){
if
(
this
.
year
==
e
.
year
&&
this
.
month
==
e
.
month
)
return
this
.
year
=
e
.
year
this
.
month
=
e
.
month
this
.
times
=
this
.
year
+
'-'
+
this
.
month
const
now
=
new
Date
(
this
.
year
,
this
.
month
,
1
);
// 设置为下个月第1天
now
.
setDate
(
now
.
getDate
()
-
1
);
// 减1天即为上个月最后一天
this
.
msg
.
StartTime
=
this
.
year
+
'-'
+
this
.
month
+
'-01'
this
.
msg
.
EndTime
=
this
.
year
+
'-'
+
this
.
month
+
'-'
+
now
.
getDate
()
this
.
research
()
},
SelectDate
(){
this
.
showTime
=
true
},
goDetails
(
item
)
{
return
let
url
=
null
let
msg
=
null
// #ifdef MP-DI
msg
=
`OrderNo=
${
item
.
orderNo
}
`
if
(
item
.
goodsType
>
0
&&
item
.
goodsType
<
4
)
url
=
`jiuzhai/jz_SureOrder?`
//线路
else
if
(
item
.
goodsType
>
3
&&
item
.
goodsType
<
8
){
//景点门票
}
else
if
(
item
.
goodsType
>
7
&&
item
.
goodsType
<
12
){
//酒店住宿
}
else
if
(
item
.
goodsType
>
11
&&
item
.
goodsType
<
15
){
//目的地用车
}
else
if
(
item
.
goodsType
==
15
)
url
=
`visa/visa_SureOrder?`
//签证
else
if
(
item
.
goodsType
==
16
)
url
=
`airTicket/airTicketOrderDetail?`
//机票
// #endif
// #ifdef MP-AG
msg
=
`orderId=
${
item
.
erpOrderId
}
`
if
(
item
.
goodsType
==
2
)
url
=
`jiuzhai/jz_SureOrder?`
//线路
else
if
(
item
.
goodsType
==
4
){
//景点门票
}
else
if
(
item
.
goodsType
==
3
){
//酒店住宿
}
else
if
(
item
.
goodsType
==
5
){
//目的地用车
}
else
if
(
item
.
goodsType
==
6
)
url
=
`visa/visa_SureOrder?`
//签证
else
if
(
item
.
goodsType
==
1
){
//机票
url
=
`airTicket/airTicketOrderDetail?`
msg
=
`id=
${
item
.
erpOrderId
}
`
}
// #endif
if
(
url
)
{
let
path
=
`/pages/
${
url
}${
msg
}
`
let
path
=
`/pages/
user-center/happinessPasDetails?data=`
+
encodeURIComponent
(
item
)
uni
.
navigateTo
({
url
:
path
,
});
}
},
openAuth
()
{
this
.
showAuth
=
true
;
},
//关闭登录窗口
gbAuth
()
{
this
.
showAuth
=
false
;
},
scrollHandler
(
e
)
{
scroll
(
e
)
{
this
.
scrollTop
=
e
.
detail
.
scrollTop
;
},
scrollTopHandler
()
{
this
.
scrollTop
=
0
;
},
goUrl
(
url
)
{
uni
.
navigateTo
({
url
});
},
//获取菜单配置
userCenterinfo
(
type
=
1
)
{
uni
.
showNavigationBarLoading
();
this
.
request2
({
url
:
"/api/Mall/GetUserCenter"
,
data
:
{},
},
(
res
)
=>
{
uni
.
hideNavigationBarLoading
();
this
.
user_info
=
res
.
data
.
user_info
;
if
(
this
.
mall_UserInfo
&&
type
==
1
)
{
// this.getLogin()
}
}
);
let
u
=
uni
.
getStorageSync
(
"mall_UserInfo"
);
if
(
u
&&
type
==
1
)
{
this
.
getMicroShopBasics
();
lower
(
e
)
{
if
(
this
.
msg
.
pageIndex
<
this
.
page_count
)
{
this
.
msg
.
pageIndex
++
;
this
.
status
=
"loading"
;
this
.
getList
();
}
else
{
this
.
status
=
"nomore"
;
}
},
getMicroShopBasics
()
{
this
.
request2
({
url
:
"/api/AppletUser/GetMicroShopBasics"
,
data
:
{},
},
research
(
ID
)
{
if
(
ID
==
this
.
msg
.
Type
)
return
if
(
ID
>=
0
)
this
.
msg
.
Type
=
ID
this
.
msg
.
pageIndex
=
1
this
.
dataList
=
[]
this
.
getList
()
},
getList
()
{
this
.
loading
=
true
uni
.
showLoading
({
title
:
'加载中'
,
icon
:
'none'
})
this
.
apipost
(
'b2b_get_GetCustomerBalancePageList'
,
this
.
msg
,
(
res
)
=>
{
this
.
shopBasics
=
res
.
data
;
this
.
loading
=
false
uni
.
hideLoading
();
this
.
dataList
=
this
.
dataList
.
concat
(
res
.
data
.
pageData
)
this
.
page_count
=
res
.
data
.
pageCount
;
},(
err
)
=>
{
this
.
loading
=
false
uni
.
hideLoading
();
}
)
},
reloadUserinfo
()
{
this
.
b2b_user_info
=
uni
.
getStorageSync
(
'b2b_user'
);
this
.
userCenterinfo
();
this
.
u
=
this
.
user_info
;
this
.
mall_UserInfo
=
uni
.
getStorageSync
(
"mall_UserInfo"
)
?
uni
.
getStorageSync
(
"mall_UserInfo"
)
:
{};
this
.
getUserPoint
();
);
},
getUserPoint
()
{
this
.
request2
({
url
:
"/api/AppletPoint/GetAppletUserPointDetailPageList"
,
data
:
{
pageIndex
:
1
,
pageSize
:
10
,
Type
:
0
},
},
GetCustomerBalance
()
{
this
.
apipost
(
"b2b_get_GetCustomerBalanceDetail"
,{},
(
res
)
=>
{
this
.
PointNum
=
res
.
data
.
pageData
.
PointNum
;
this
.
CustomerBalance
=
res
.
data
}
);
},
goBack
(){
uni
.
navigateBack
({
delta
:
-
1
})
}
}
};
</
script
>
<
style
>
<
style
scoped
>
@import
url('../../asset/css/flex.css')
;
.listBox
{
height
:
1px
;
flex
:
1
;
}
.listBox.active
{
min-height
:
936
rpx
;
}
.row-sbas-n
{
justify-content
:
space-between
;
}
...
...
@@ -194,9 +312,11 @@
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
background
:
#f3f4f6
;
background
:
url('https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638774883791846536.png')
no-repeat
;
background-size
:
100%
auto
;
background-color
:
#F3F2EF
;
min-height
:
100vh
;
padding-bottom
:
env
(
safe-area-inset-bottom
);
//
padding-bottom
:
env
(
safe-area-inset-bottom
);
}
.order_bar_list
{
...
...
@@ -240,12 +360,13 @@
right
:
0
;
top
:
0
;
display
:
flex
;
background
-image
:
linear-gradient
(
to
right
,
#e6b865
,
#ebb45e
)
;
background
:
#F6E4BC
;
}
.headStatus
.title
{
font-size
:
18px
;
color
:
#fff
;
font-size
:
32
rpx
;
overflow
:
hidden
;
color
:
#000
;
flex
:
1
;
width
:
1px
;
line-height
:
34px
;
...
...
@@ -368,4 +489,208 @@
font-size
:
28
rpx
;
color
:
#B99846
;
}
.userMyOrderState
{
margin-bottom
:
40
rpx
;
}
.userMyOrderState
view
{
flex
:
1
;
margin-left
:
20
rpx
;
background
:
#F3F2EF
;
color
:
#757776
;
font-size
:
29
rpx
;
text-align
:
center
;
line-height
:
80
rpx
;
border-radius
:
14
rpx
;
}
.userMyOrderState
view
:first-child
{
margin-left
:
0
;
}
.userMyOrderState
view
.active
{
background
:
#000
;
color
:
#fff
;
}
.userHeaderBox
{
width
:
750
rpx
;
}
.titlenav
{
width
:
100%
;
text-align
:
center
;
font-size
:
16px
;
color
:
#000
;
position
:
relative
;
padding
:
15
rpx
0
;
}
.carrHeader-left-icon
{
position
:
absolute
;
left
:
32
rpx
;
top
:
20
rpx
;
z-index
:
2
;
}
.userHeadPic
{
padding
:
29
rpx
20
rpx
25
rpx
62
rpx
;
}
.userHeadPicL
{
width
:
97
rpx
;
height
:
97
rpx
;
overflow
:
hidden
;
border-radius
:
50%
;
margin-right
:
27
rpx
;
}
.userHeadPicL
image
{
width
:
97
rpx
;
height
:
97
rpx
;
display
:
block
;
}
.userHeadPicR_title
{
font-family
:
PingFang
SC
;
font-weight
:
bold
;
font-size
:
36
rpx
;
color
:
#080A09
;
white-space
:
nowrap
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
}
.userHeadPicR_text
{
font-family
:
PingFang
SC
;
font-weight
:
500
;
font-size
:
24
rpx
;
color
:
#61462E
;
margin-top
:
16
rpx
;
letter-spacing
:
1
rpx
;
}
.jz_LineDetaVipPr
{
margin-top
:
28
rpx
;
position
:
relative
;
left
:
-20
rpx
;
}
.jz_LineDetaVip
{
width
:
100%
;
height
:
120
rpx
;
background
:
linear-gradient
(
90deg
,
#3F423F
,
#313131
);
border-radius
:
18
rpx
;
display
:
flex
;
flex-direction
:
column
;
padding
:
15
rpx
0
6
rpx
0
;
margin-top
:
18
rpx
;
margin-bottom
:
18
rpx
;
}
.jz_LineDetaVipTop
{
font-family
:
PingFang
SC
;
font-weight
:
400
;
font-size
:
24
rpx
;
color
:
#E2C27A
;
letter-spacing
:
.1
rpx
;
display
:
flex
;
align-content
:
center
;
padding
:
0
34
rpx
;
}
.jz_LineDetaVipTop
img
{
width
:
21
rpx
;
height
:
21
rpx
;
display
:
inline-block
;
margin-left
:
5
rpx
;
}
.jz_LineDetaVPB
{
display
:
flex
;
}
.jz_LineDetaVPBBox
{
display
:
flex
;
align-items
:
center
;
width
:
1px
;
flex
:
1
;
}
.jz_LineDetaVPBN
{
width
:
30
rpx
;
height
:
30
rpx
;
background
:
#2E2E2E
;
border-radius
:
50%
;
text-align
:
center
;
line-height
:
28
rpx
;
font-family
:
DIN
Black
;
font-weight
:
bold
;
font-size
:
24
rpx
;
color
:
#494949
;
;
}
.jz_LineDetaVPBLine
{
flex
:
1
;
height
:
10
rpx
;
background
:
#000
;
}
.jz_LineDetaVPBBoxI
{
position
:
relative
;
flex
:
1
;
}
.jz_LineDetaVPBBoxI
img
{
width
:
87
rpx
;
height
:
99
rpx
;
position
:
absolute
;
bottom
:
-35
rpx
;
right
:
8
rpx
;
z-index
:
2
;
}
.jz_LineDetaVPBBox.active
.jz_LineDetaVPBN
{
background
:
linear-gradient
(
270deg
,
#C99E59
,
#FFFFB3
);
}
.jz_LineDetaVPBBox.active
.jz_LineDetaVPBLine
{
background
:
#C99E59
;
color
:
#583F2C
;
}
.VPBLRadiusL
{
border-radius
:
20
rpx
0
0
20
rpx
;
}
.VPBLRadiusR
{
border-radius
:
0
20
rpx
20
rpx
0
;
}
.jz_LineDetaVPBY
{
position
:
absolute
;
left
:
-29
rpx
;
right
:
0
;
top
:
0
;
}
.userHeadPasBox
{
padding
:
0
30
rpx
;
}
.userHeadPNum
{
width
:
330
rpx
;
border-radius
:
18
rpx
;
background
:
rgba
(
255
,
255
,
255
,
.2
);
padding
:
30
rpx
20
rpx
40
rpx
50
rpx
;
}
.userHeadPNumT
{
font-weight
:
500
;
font-size
:
28
rpx
;
color
:
#4F360D
;
margin-bottom
:
21
rpx
;
}
.userHeadPNumB
{
color
:
#FF3166
;
font-size
:
48
rpx
;
font-weight
:
bold
;
}
.userHeadPNumB
text
{
font-size
:
29
rpx
;
}
.userHeadPNum.active
.userHeadPNumB
{
color
:
#4F360D
;
}
.userHeadPNumS
{
border-radius
:
18
rpx
;
background
:
rgba
(
255
,
255
,
255
,
.2
);
padding
:
30
rpx
40
rpx
40
rpx
50
rpx
;
margin-top
:
30
rpx
;
margin-bottom
:
40
rpx
;
}
.userHeadPNumSL
{
font-size
:
29
rpx
;
color
:
#4F360D
;
}
.userHeadPNumSR
{
color
:
#4F360D
;
font-size
:
29
rpx
;
font-weight
:
bold
;
}
.userHeadPNumSR
text
{
font-size
:
48
rpx
;
}
</
style
>
\ No newline at end of file
pages/user-center/points.vue
0 → 100644
View file @
672d031a
<
template
>
<view
style=
"width:100vw;height:100vh;"
class=
"column"
>
<scroll-view
:scroll-y=
"true"
@
scroll=
"scroll"
:scroll-top=
"scrollTop"
class=
"col"
style=
"width: 100%;height: 1px; flex: 1;"
>
<view
class=
"userStyle"
>
<view
class=
"headStatus"
v-if=
"scrollTop > 50"
:style=
"[titleStyle,
{
zIndex: scrollTop
<
10
?
'
unset
'
:
2
,
opacity:
scrollTop
<
10
?
'
100
'
:
scrollTop
,
}]"
>
<view
class=
"title"
style=
"position: relative;"
>
<u-icon
name=
"arrow-left"
size=
"38"
color=
"#000"
style=
"position: absolute;left: 32rpx;top:20rpx"
></u-icon>
{{
pageTitle
}}
</view>
</view>
<view
class=
"userBox"
>
<view
class=
"userHeaderBox"
:style=
"[titleStyle]"
>
<view
class=
"titlenav"
>
<view
class=
"carrHeader-left-icon"
@
click=
"goBack"
>
<u-icon
name=
"arrow-left"
size=
"38"
color=
"#000"
></u-icon>
</view>
{{
pageTitle
}}
</view>
<view
class=
"userHeadPic row"
>
<view
class=
"userHeadPicL"
>
<u-avatar
v-if=
"b2b_user_info.photo||CustomerIntegral.image"
:src=
"b2b_user_info.photo?b2b_user_info.photo:CustomerIntegral.image"
size=
"99"
shape=
"circle"
></u-avatar>
<u-avatar
v-else
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638748795455095258.png"
size=
"99"
shape=
"circle"
></u-avatar>
<!--
<image
src=
"https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638748795455095258.png"
mode=
"widthFix"
></image>
-->
</view>
<view
class=
"col column"
>
<text
v-if=
"b2b_user_info&&b2b_user_info.name"
class=
"userHeadPicR_title"
@
click=
"navigatorToProfile"
>
{{
b2b_user_info
.
name
}}
</text>
<text
v-else-if=
"mall_UserInfo&&mall_UserInfo.Name"
class=
"userHeadPicR_title"
>
{{
mall_UserInfo
.
Name
}}
</text>
<!-- v-if="CustomerIntegral&&CustomerIntegral.saleList&&CustomerIntegral.saleList.length>0" -->
<text
class=
"userHeadPicR_text"
@
click=
"goTisp"
>
积分规则
<!-- #ifdef MP-DI -->
<!-- 销售:
{{
b2b_user_info
.
salesBaseInfo
.
emName
}}
-->
<!-- #endif -->
<!-- #ifdef MP-AG -->
<!-- 销售:
{{
CustomerIntegral
.
saleList
[
0
].
saleName
}}
<template
v-if=
"CustomerIntegral.saleList.length>0"
>
等
{{
CustomerIntegral
.
saleList
.
length
}}
位
</
template
>
-->
<!-- #endif -->
</text>
</view>
</view>
<view
class=
"userHeadPasBox"
>
<view
class=
"userHeadPNumBox row-sb-n"
>
<view
class=
"userHeadPNum"
>
<view
class=
"userHeadPNumT"
>
当前积分
</view>
<view
class=
"userHeadPNumB"
>
<text></text>
{{ CustomerIntegral.integral>=0?CustomerIntegral.integral:0 }}
</view>
</view>
<view
class=
"userHeadPNum active"
>
<view
class=
"userHeadPNumT"
>
待获取
</view>
<view
class=
"userHeadPNumB"
>
<text>
¥
</text>
{{ CustomerIntegral.waitIntegral>=0?CustomerIntegral.waitIntegral:0 }}
</view>
</view>
</view>
<view
class=
"userHeadPNumS row-sb-n"
>
<view
class=
"userHeadPNumSL"
>
已消耗
</view>
<view
class=
"userHeadPNumSR"
>
<text>
{{ CustomerIntegral.useIntegral>=0?CustomerIntegral.useIntegral:0 }}
</text>
</view>
</view>
</view>
</view>
<view
class=
"listBox"
:class=
"[showTisp?'active':'']"
style=
"padding: 0 32rpx;width: 100vw;"
>
<view
class=
"userMyOrderBox column"
>
<view
style=
"padding: 20rpx 0;"
>
<view
class=
"userMyOrderState row-sb-n"
>
<view
v-for=
"(item,index) in stateList"
:key=
"index"
:class=
"[msg.Type==item.ID?'active':'']"
@
click=
"research(item.ID)"
>
{{ item.Name }}
</view>
</view>
<view
class=
"row"
>
<view
class=
"row"
@
click=
"SelectDate"
>
<text>
{{year}}年
</text>
<text>
{{month}}月
</text>
<u-icon
name=
"arrow-down"
size=
"28"
color=
"#000"
></u-icon>
</view>
</view>
</view>
<scroll-view
:scroll-y=
"true"
class=
"col"
@
scrolltolower=
"lower"
style=
"height: 1px;flex: 1; width: 100%;"
>
<view
class=
"userHeadPListBox"
v-if=
"dataList&&dataList.length>0"
>
<view
class=
"userHeadPList row"
v-for=
"(item,index) in dataList"
:key=
"index"
@
click=
"goDetails(item)"
>
<view
class=
"userHeadPListL"
>
<image
mode=
"aspectFit"
:src=
"item.imgCover"
/>
<text>
共{{item.peopleNum}}人
</text>
</view>
<view
class=
"userHeadPListA col column"
>
<view
class=
"userHeadPListATitel"
>
积分{{ item.type==1?'收获':'消耗' }}
</view>
<view
class=
"userHeadPListATime"
>
{{ item.updateTime }}
</view>
</view>
<view
class=
"userHeadPListR"
>
{{item.type==1?'+':'-'}}¥{{ item.integralNum }}
</view>
</view>
</view>
<u-empty
v-if=
"dataList.length == 0 && !loading"
text=
"暂无数据"
mode=
"data"
:padding-top=
"!showTisp?10:30"
></u-empty>
<u-loadmore
v-else
:status=
"status"
:load-text=
"loadText"
:font-size=
"24"
:margin-top=
"20"
:margin-bottom=
"20"
bg-color=
"#fff"
/>
</scroll-view>
</view>
</view>
<u-alert-tips
v-if=
"showTisp"
:show=
"showTisp"
:close-able=
"true"
@
close=
"showTisp=false"
style=
"padding: 30rpx 30rpx;"
type=
"warning"
title=
"2025年2月1日(包含)起生效"
description=
"积分:平台所有跟团游产品均可参加积分活动,积分获得比例:100:1(例:客人实付金额100元,获得1个积分)。团队出发后7个工作日内将会存入积分余额。"
></u-alert-tips>
</view>
</view>
</scroll-view>
<u-picker
mode=
"time"
v-model=
"showTime"
:defaultTime=
"times"
:params=
"params"
@
confirm =
'confirm'
></u-picker>
</view>
</template>
<
script
>
export
default
{
components
:
{
},
data
()
{
return
{
pageTitle
:
"积分"
,
scrollTop
:
0
,
showAuth
:
false
,
b2b_user_info
:
{},
mall_UserInfo
:
{},
stateList
:[
{
Name
:
'全部'
,
ID
:
0
},
{
Name
:
'已获取'
,
ID
:
1
},
{
Name
:
'已消耗'
,
ID
:
2
},
],
msg
:{
pageIndex
:
1
,
//是 [string]
pageSize
:
10
,
//是 [string]
IntegralState
:
0
,
Type
:
0
,
// 类型 1存入 2扣除
QStartDate
:
''
,
// 开始时间
QEndDate
:
''
,
},
dataList
:
[],
status
:
"加载中"
,
page_count
:
0
,
loadText
:
{
loadmore
:
"轻轻上拉,加载更多"
,
loading
:
"努力加载中"
,
nomore
:
"没有更多了"
,
},
loading
:
false
,
showTime
:
false
,
params
:
{
year
:
true
,
month
:
true
,
day
:
false
,
hour
:
false
,
minute
:
false
,
second
:
false
},
year
:
''
,
month
:
''
,
times
:
''
,
CustomerIntegral
:{},
titleStyle
:{},
showTisp
:
false
,
};
},
onLoad
()
{
this
.
b2b_user_info
=
uni
.
getStorageSync
(
'b2b_user'
);
this
.
mall_UserInfo
=
uni
.
getStorageSync
(
"mall_UserInfo"
);
this
.
showAuth
=
!
this
.
mall_UserInfo
||
!
this
.
b2b_user_info
;
},
onShow
()
{
const
that
=
this
uni
.
getSystemInfo
({
success
(
res
)
{
that
.
titleStyle
=
{
paddingTop
:
`
${
res
.
statusBarHeight
}
px`
};
},
});
const
now
=
new
Date
();
this
.
year
=
now
.
getFullYear
();
this
.
month
=
String
(
now
.
getMonth
()
+
1
).
padStart
(
2
,
'0'
);
this
.
msg
.
QStartDate
=
this
.
year
+
'-'
+
this
.
month
+
'-01'
now
.
setMonth
(
now
.
getMonth
()
+
1
,
0
);
this
.
msg
.
QEndDate
=
this
.
year
+
'-'
+
this
.
month
+
'-'
+
now
.
getDate
()
this
.
times
=
this
.
year
+
'-'
+
this
.
month
this
.
getList
();
this
.
GetCustomerIntegral
()
},
methods
:
{
goTisp
(){
this
.
showTisp
=
true
this
.
scrollTop
=
500
},
confirm
(
e
){
if
(
this
.
year
==
e
.
year
&&
this
.
month
==
e
.
month
)
return
this
.
year
=
e
.
year
this
.
month
=
e
.
month
this
.
times
=
this
.
year
+
'-'
+
this
.
month
const
now
=
new
Date
(
this
.
year
,
this
.
month
,
1
);
// 设置为下个月第1天
now
.
setDate
(
now
.
getDate
()
-
1
);
// 减1天即为上个月最后一天
this
.
msg
.
QStartDate
=
this
.
year
+
'-'
+
this
.
month
+
'-01'
this
.
msg
.
QEndDate
=
this
.
year
+
'-'
+
this
.
month
+
'-'
+
now
.
getDate
()
this
.
research
()
},
SelectDate
(){
this
.
showTime
=
true
},
goDetails
(
item
)
{
if
(
url
)
{
let
path
=
`/pages/user-center/pointsDetails?data=
${
encodeURIComponent
(
item
)}
`
uni
.
navigateTo
({
url
:
path
,
});
}
},
scroll
(
e
)
{
this
.
scrollTop
=
e
.
detail
.
scrollTop
;
},
goUrl
(
url
)
{
uni
.
navigateTo
({
url
});
},
lower
(
e
)
{
if
(
this
.
msg
.
pageIndex
<
this
.
page_count
)
{
this
.
msg
.
pageIndex
++
;
this
.
status
=
"loading"
;
this
.
getList
();
}
else
{
this
.
status
=
"nomore"
;
}
},
research
(
ID
)
{
if
(
ID
==
this
.
msg
.
Type
)
return
if
(
ID
>=
0
)
this
.
msg
.
Type
=
ID
this
.
msg
.
pageIndex
=
1
this
.
dataList
=
[]
this
.
getList
()
},
getList
()
{
this
.
loading
=
true
uni
.
showLoading
({
title
:
'加载中'
,
icon
:
'none'
})
this
.
apipost
(
'b2b_get_GetCustomerIntegralPageList'
,
this
.
msg
,
(
res
)
=>
{
this
.
loading
=
false
uni
.
hideLoading
();
this
.
dataList
=
this
.
dataList
.
concat
(
res
.
data
.
pageData
)
this
.
page_count
=
res
.
data
.
pageCount
;
},(
err
)
=>
{
this
.
loading
=
false
uni
.
hideLoading
();
}
);
},
GetCustomerIntegral
()
{
this
.
apipost
(
"b2b_get_GetCustomerIntegralDetail"
,{},
(
res
)
=>
{
this
.
CustomerIntegral
=
res
.
data
}
);
},
goBack
(){
uni
.
navigateBack
({
delta
:
-
1
})
}
}
};
</
script
>
<
style
scoped
>
@import
url('../../asset/css/flex.css')
;
.listBox
{
height
:
1px
;
flex
:
1
;
}
.listBox.active
{
min-height
:
936
rpx
;
}
.row-sbas-n
{
justify-content
:
space-between
;
}
.relative
{
position
:
relative
;
}
.userStyle
.userBox
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
background
:
url('https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Upload/Goods/638778933736114322.png')
no-repeat
;
background-size
:
100%
auto
;
background-color
:
#F3F2EF
;
min-height
:
100vh
;
//
padding-bottom
:
env
(
safe-area-inset-bottom
);
}
.order_bar_list
{
padding
:
22
rpx
55
rpx
;
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
justify-content
:
space-between
;
}
.order_bar_item
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
margin-top
:
20
rpx
;
position
:
relative
;
}
.badge
{
position
:
absolute
;
right
:
-10
rpx
;
top
:
-10
rpx
;
padding
:
0
8
rpx
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
font-size
:
20
rpx
;
background
:
#FF3166
;
color
:
#fff
;
min-width
:
28
rpx
;
height
:
28
rpx
;
border-radius
:
14
rpx
;
}
.headStatus
{
position
:
fixed
;
width
:
140vw
;
padding-right
:
40vw
;
padding-bottom
:
10px
;
left
:
0
;
right
:
0
;
top
:
0
;
display
:
flex
;
background
:
#CFE2A0
;
}
.headStatus
.title
{
font-size
:
32
rpx
;
color
:
#000
;
flex
:
1
;
width
:
1px
;
line-height
:
34px
;
text-align
:
center
;
}
.userMyOrder
{
background
:
#FFF
;
border-radius
:
20
rpx
;
padding
:
33
rpx
0
22
rpx
0
;
}
.userMyOrderTitle
{
padding
:
23
rpx
31
rpx
0
31
rpx
;
}
.userMyOrderTitL
{
font-family
:
PingFang
SC
;
font-weight
:
800
;
font-size
:
32
rpx
;
color
:
#080A09
;
}
.userMyOrderTitR
{
font-family
:
PingFang
SC
;
font-weight
:
500
;
font-size
:
24
rpx
;
color
:
#B2B3B3
;
align-items
:
center
;
}
.userMyOrderTitRIght
{
margin-left
:
11
rpx
;
transform
:
rotate
(
90deg
);
}
.orderProductBox
{
padding
:
0
20
rpx
;
}
.orderProduct
{
width
:
648
rpx
;
height
:
132
rpx
;
background
:
#F7F7F7
;
border-radius
:
18
rpx
;
padding
:
21
rpx
20
rpx
;
}
.orderProductL
{
width
:
91
rpx
;
height
:
88
rpx
;
border-radius
:
14
rpx
;
overflow
:
hidden
;
margin-right
:
18
rpx
;
}
.orderProductR_state
{
font-family
:
PingFang
SC
;
font-weight
:
500
;
font-size
:
28
rpx
;
color
:
#080A09
;
padding-top
:
5
rpx
;
}
.orderProductR_text
{
width
:
100%
;
font-family
:
PingFang
SC
;
font-weight
:
500
;
font-size
:
24
rpx
;
color
:
#8C8C8C
;
padding-top
:
4
rpx
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
}
.userMyOrderBox
{
background
:
#FFFFFF
;
height
:
100%
;
overflow
:
hidden
;
border-radius
:
20
rpx
;
padding
:
25
rpx
34
rpx
45
rpx
34
rpx
;
}
.userHeadPList
{
padding
:
20
rpx
0
;
}
.userHeadPListL
{
width
:
91
rpx
;
height
:
88
rpx
;
border-radius
:
14
rpx
;
overflow
:
hidden
;
position
:
relative
;
}
.userHeadPListL
image
{
width
:
91
rpx
;
height
:
88
rpx
;
display
:
block
;
}
.userHeadPListL
text
{
position
:
absolute
;
left
:
0
;
right
:
0
;
bottom
:
0
;
z-index
:
1
;
background
:
rgb
(
178
,
179
,
179
,
.8
);
border-radius
:
0
rpx
0
rpx
14
rpx
14
rpx
;
color
:
#fff
;
font-size
:
20
rpx
;
padding
:
5
rpx
0
;
text-align
:
center
;
}
.userHeadPListA
{
margin-left
:
29
rpx
;
margin-right
:
20
rpx
;
}
.userHeadPListATitel
{
font-weight
:
bold
;
font-size
:
28
rpx
;
color
:
#080A09
;
margin-top
:
5
rpx
;
}
.userHeadPListATime
{
font-weight
:
500
;
font-size
:
24
rpx
;
color
:
#8C8C8C
;
margin-top
:
18
rpx
;
}
.userHeadPListR
{
font-weight
:
bold
;
font-size
:
28
rpx
;
color
:
#B99846
;
}
.userMyOrderState
{
margin-bottom
:
40
rpx
;
}
.userMyOrderState
view
{
flex
:
1
;
margin-left
:
20
rpx
;
background
:
#F3F2EF
;
color
:
#757776
;
font-size
:
29
rpx
;
text-align
:
center
;
line-height
:
80
rpx
;
border-radius
:
14
rpx
;
}
.userMyOrderState
view
:first-child
{
margin-left
:
0
;
}
.userMyOrderState
view
.active
{
background
:
#000
;
color
:
#fff
;
}
.userHeaderBox
{
width
:
750
rpx
;
}
.titlenav
{
width
:
100%
;
text-align
:
center
;
font-size
:
16px
;
color
:
#000
;
position
:
relative
;
padding
:
15
rpx
0
;
}
.carrHeader-left-icon
{
position
:
absolute
;
left
:
32
rpx
;
top
:
20
rpx
;
z-index
:
2
;
}
.userHeadPic
{
padding
:
29
rpx
20
rpx
25
rpx
62
rpx
;
}
.userHeadPicL
{
width
:
97
rpx
;
height
:
97
rpx
;
overflow
:
hidden
;
border-radius
:
50%
;
margin-right
:
27
rpx
;
}
.userHeadPicL
image
{
width
:
97
rpx
;
height
:
97
rpx
;
display
:
block
;
}
.userHeadPicR_title
{
font-family
:
PingFang
SC
;
font-weight
:
bold
;
font-size
:
36
rpx
;
color
:
#080A09
;
white-space
:
nowrap
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
}
.userHeadPicR_text
{
font-family
:
PingFang
SC
;
font-weight
:
500
;
font-size
:
24
rpx
;
color
:
#61462E
;
margin-top
:
16
rpx
;
letter-spacing
:
1
rpx
;
}
.jz_LineDetaVipPr
{
margin-top
:
28
rpx
;
position
:
relative
;
left
:
-20
rpx
;
}
.jz_LineDetaVip
{
width
:
100%
;
height
:
120
rpx
;
background
:
linear-gradient
(
90deg
,
#3F423F
,
#313131
);
border-radius
:
18
rpx
;
display
:
flex
;
flex-direction
:
column
;
padding
:
15
rpx
0
6
rpx
0
;
margin-top
:
18
rpx
;
margin-bottom
:
18
rpx
;
}
.jz_LineDetaVipTop
{
font-family
:
PingFang
SC
;
font-weight
:
400
;
font-size
:
24
rpx
;
color
:
#E2C27A
;
letter-spacing
:
.1
rpx
;
display
:
flex
;
align-content
:
center
;
padding
:
0
34
rpx
;
}
.jz_LineDetaVipTop
img
{
width
:
21
rpx
;
height
:
21
rpx
;
display
:
inline-block
;
margin-left
:
5
rpx
;
}
.jz_LineDetaVPB
{
display
:
flex
;
}
.jz_LineDetaVPBBox
{
display
:
flex
;
align-items
:
center
;
width
:
1px
;
flex
:
1
;
}
.jz_LineDetaVPBN
{
width
:
30
rpx
;
height
:
30
rpx
;
background
:
#2E2E2E
;
border-radius
:
50%
;
text-align
:
center
;
line-height
:
28
rpx
;
font-family
:
DIN
Black
;
font-weight
:
bold
;
font-size
:
24
rpx
;
color
:
#494949
;
;
}
.jz_LineDetaVPBLine
{
flex
:
1
;
height
:
10
rpx
;
background
:
#000
;
}
.jz_LineDetaVPBBoxI
{
position
:
relative
;
flex
:
1
;
}
.jz_LineDetaVPBBoxI
img
{
width
:
87
rpx
;
height
:
99
rpx
;
position
:
absolute
;
bottom
:
-35
rpx
;
right
:
8
rpx
;
z-index
:
2
;
}
.jz_LineDetaVPBBox.active
.jz_LineDetaVPBN
{
background
:
linear-gradient
(
270deg
,
#C99E59
,
#FFFFB3
);
}
.jz_LineDetaVPBBox.active
.jz_LineDetaVPBLine
{
background
:
#C99E59
;
color
:
#583F2C
;
}
.VPBLRadiusL
{
border-radius
:
20
rpx
0
0
20
rpx
;
}
.VPBLRadiusR
{
border-radius
:
0
20
rpx
20
rpx
0
;
}
.jz_LineDetaVPBY
{
position
:
absolute
;
left
:
-29
rpx
;
right
:
0
;
top
:
0
;
}
.userHeadPasBox
{
padding
:
0
30
rpx
;
}
.userHeadPNum
{
width
:
330
rpx
;
border-radius
:
18
rpx
;
background
:
rgba
(
255
,
255
,
255
,
.2
);
padding
:
30
rpx
20
rpx
40
rpx
50
rpx
;
}
.userHeadPNumT
{
font-weight
:
500
;
font-size
:
28
rpx
;
color
:
#4F360D
;
margin-bottom
:
21
rpx
;
}
.userHeadPNumB
{
color
:
#FF3166
;
font-size
:
48
rpx
;
font-weight
:
bold
;
}
.userHeadPNumB
text
{
font-size
:
29
rpx
;
}
.userHeadPNum.active
.userHeadPNumB
{
color
:
#4F360D
;
}
.userHeadPNumS
{
border-radius
:
18
rpx
;
background
:
rgba
(
255
,
255
,
255
,
.2
);
padding
:
30
rpx
40
rpx
40
rpx
50
rpx
;
margin-top
:
30
rpx
;
margin-bottom
:
40
rpx
;
}
.userHeadPNumSL
{
font-size
:
29
rpx
;
color
:
#4F360D
;
}
.userHeadPNumSR
{
color
:
#4F360D
;
font-size
:
29
rpx
;
font-weight
:
bold
;
}
.userHeadPNumSR
text
{
font-size
:
48
rpx
;
}
</
style
>
\ No newline at end of file
pages/user-center/pointsDetails.vue
0 → 100644
View file @
672d031a
<
template
>
<view
class=
"hapPasDetBox column"
style=
"width:100vw;height:100vh;background: #F3F1EF;"
>
<view
class=
"hapPasDetTitle"
>
积分
{{
PassbookAata
.
type
==
1
?
'收获'
:
'消耗'
}}
</view>
<view
class=
"hapPasDetNum"
>
{{
PassbookAata
.
type
==
1
?
'+'
:
'-'
}}{{
PassbookAata
.
integralNum
}}
</view>
<view
class=
"hapPasDetBox"
>
<view
class=
"hapPasDetImg row"
@
click=
"goProduct"
>
<image
mode=
"aspectFit"
:src=
"PassbookAata.imgCover"
/>
<view
class=
"col"
>
{{
PassbookAata
.
lineName
}}
</view>
</view>
<view
class=
"row hapPasDetText"
>
<text
class=
"hapPasDetL"
>
订单号
</text>
<view
class=
"hapPasDetR col"
>
<text
class=
"hapPasDetRC"
>
{{
PassbookAata
.
orderId
}}
</text>
<text
class=
"hapPasDetRCop"
@
click=
"handleCopy(PassbookAata.orderId)"
>
复制
</text>
</view>
</view>
<view
class=
"row hapPasDetText"
>
<text
class=
"hapPasDetL"
>
{{
PassbookAata
.
type
==
1
?
'收获'
:
'消耗'
}}
日期
</text>
<view
class=
"hapPasDetR col"
>
<text
class=
"hapPasDetRC"
>
{{
PassbookAata
.
updateTime
}}
</text>
</view>
</view>
<view
class=
"row hapPasDetText"
>
<text
class=
"hapPasDetL"
>
团号
</text>
<view
class=
"hapPasDetR col"
>
<text
class=
"hapPasDetRC"
>
{{
PassbookAata
.
tcnum
}}
</text>
<text
class=
"hapPasDetRCop"
@
click=
"handleCopy(PassbookAata.tcnum)"
>
复制
</text>
</view>
</view>
<view
class=
"row hapPasDetText"
>
<text
class=
"hapPasDetL"
>
出团日期
</text>
<view
class=
"hapPasDetR col"
>
<text
class=
"hapPasDetRC"
>
{{
PassbookAata
.
tcStartDate
}}
</text>
</view>
</view>
<view
class=
"row hapPasDetText"
>
<text
class=
"hapPasDetL"
>
订单人数
</text>
<view
class=
"hapPasDetR col"
>
<text
class=
"hapPasDetRC active"
>
{{
PassbookAata
.
peopleNum
}}
人
</text>
</view>
</view>
</view>
</view>
</
template
>
<
script
>
export
default
{
components
:
{
},
data
()
{
return
{
scrollTop
:
0
,
PassbookAata
:{},
};
},
onLoad
(
option
)
{
if
(
option
.
data
){
this
.
PassbookAata
=
decodeURIComponent
(
option
.
data
)
}
},
onShow
()
{
uni
.
setNavigationBarTitle
({
title
:
""
})
},
methods
:
{
async
handleCopy
(
text
){
try
{
await
uni
.
copyText
(
text
);
uni
.
showToast
({
title
:
'复制成功'
,
icon
:
'success'
,
});
}
catch
(
err
)
{
uni
.
showToast
({
title
:
'复制失败'
,
icon
:
'none'
,
duration
:
1500
});
}
},
goProduct
(){
return
uni
.
navigateTo
({
url
:
"/pages/product/productDetails/productDetails?id="
+
this
.
PassbookAata
.
orderId
})
}
}
};
</
script
>
<
style
scoped
>
@import
url('../../asset/css/flex.css')
;
.hapPasDetTitle
{
font-weight
:
bold
;
font-size
:
32
rpx
;
color
:
#080A0A
;
line-height
:
70
rpx
;
text-align
:
center
;
padding
:
39
rpx
0
40
rpx
0
;
}
.hapPasDetNum
{
font-weight
:
bold
;
font-size
:
52
rpx
;
color
:
#B99846
;
line-height
:
70
rpx
;
text-align
:
center
;
margin-bottom
:
48
rpx
;
}
.hapPasDetBox
{
background
:
#FFFFFF
;
border-radius
:
18
rpx
18
rpx
18
rpx
18
rpx
;
padding
:
40
rpx
;
}
.hapPasDetImg
{
margin-bottom
:
50
rpx
;
}
.hapPasDetImg
image
{
width
:
141
rpx
;
height
:
141
rpx
;
border-radius
:
14
rpx
14
rpx
14
rpx
14
rpx
;
border
:
1
rpx
solid
#000000
;
display
:
inline-block
;
}
.hapPasDetImg
view
{
margin-left
:
30
rpx
;
font-weight
:
bold
;
font-size
:
28
rpx
;
color
:
#080A0A
;
word-break
:
break-all
;
text-overflow
:
ellipsis
;
display
:
-webkit-box
;
-webkit-box-orient
:
vertical
;
-webkit-line-clamp
:
4
;
overflow
:
hidden
;
}
.hapPasDetText
{
padding
:
0
0
10
rpx
0
;
}
.hapPasDetL
{
width
:
180
rpx
;
font-weight
:
500
;
font-size
:
28
rpx
;
color
:
#757776
;
line-height
:
70
rpx
;
}
.hapPasDetR
{
font-size
:
28
rpx
;
line-height
:
70
rpx
;
}
.hapPasDetRC
{
font-weight
:
bold
;
color
:
#080A09
;
}
.hapPasDetRC.active
{
color
:
#FF3166
;
}
.hapPasDetRCop
{
line-height
:
35
rpx
;
background
:
#E9E4E0
;
border-radius
:
15
rpx
15
rpx
15
rpx
15
rpx
;
color
:
#000000
;
font-weight
:
500
;
display
:
inline-block
;
padding
:
0
10
rpx
;
margin-left
:
30
rpx
;
}
</
style
>
\ No newline at end of file
pages/user-center/userVip-center.vue
View file @
672d031a
...
...
@@ -4,15 +4,15 @@
@
scrolltoupper=
"scrollTopHandler"
class=
"col"
style=
"height: 1px;width: 100%;"
>
<view
class=
"userStyle"
>
<view
class=
"headStatus"
v-if=
"scrollTop > 50"
:style=
"
{
<view
class=
"headStatus"
v-if=
"scrollTop > 50"
:style=
"
[titleStyle,
{
zIndex: scrollTop
<
10
?
'
unset
'
:
2
,
opacity:
scrollTop
<
10
?
'
100
'
:
scrollTop
,
}"
>
}
]
"
>
<view
class=
"title"
>
{{
pageTitle
}}
</view>
</view>
<view
class=
"userBox"
>
<vipUserHeader
v-if=
"statistics&&statistics.isVip==1"
:
user_info=
"user_info"
:
statistics=
"statistics"
:b2b_user_info=
"b2b_user_info"
@
login=
"openAuth"
></vipUserHeader>
<userHeader
v-if=
"statistics&&statistics.isVip!=1"
:
user_info=
"user_info"
:
statistics=
"statistics"
:b2b_user_info=
"b2b_user_info"
@
login=
"openAuth"
></userHeader>
<vipUserHeader
v-if=
"statistics&&statistics.isVip==1"
:statistics=
"statistics"
:b2b_user_info=
"b2b_user_info"
@
login=
"openAuth"
></vipUserHeader>
<userHeader
v-if=
"statistics&&statistics.isVip!=1"
:statistics=
"statistics"
:b2b_user_info=
"b2b_user_info"
@
login=
"openAuth"
></userHeader>
<view
class=
"userMyOrderBox"
>
<view
style=
"position: relative;top:-13rpx"
>
<view
class=
"userMyOrder"
>
...
...
@@ -108,6 +108,7 @@
</view>
</view>
<view
style=
"height: 140rpx;"
></view>
</view>
</view>
...
...
@@ -139,8 +140,6 @@
showAuth
:
false
,
b2b_user_info
:
{},
mall_UserInfo
:
{},
u
:
{},
user_info
:
{},
statistics
:
{},
msg
:{
pageSize
:
100
,
...
...
@@ -153,7 +152,8 @@
indicatorDots
:
true
,
autoplay
:
true
,
interval
:
4000
,
duration
:
1000
duration
:
1000
,
titleStyle
:
{},
};
},
onLoad
()
{
...
...
@@ -162,7 +162,14 @@
this
.
showAuth
=
!
this
.
mall_UserInfo
||
!
this
.
b2b_user_info
;
},
onShow
()
{
this
.
userCenterinfo
(
2
);
const
that
=
this
uni
.
getSystemInfo
({
success
(
res
)
{
that
.
titleStyle
=
{
paddingTop
:
`
${
res
.
statusBarHeight
}
px`
};
},
});
this
.
GetCustomerCenter
()
this
.
g
=
[]
this
.
init
()
...
...
@@ -221,27 +228,9 @@
}
uni
.
navigateTo
({
url
});
},
//获取菜单配置
userCenterinfo
(
type
=
1
)
{
uni
.
showNavigationBarLoading
();
this
.
request2
({
url
:
"/api/Mall/GetUserCenter"
,
data
:
{},
},
(
res
)
=>
{
uni
.
hideNavigationBarLoading
();
this
.
user_info
=
res
.
data
.
user_info
;
if
(
this
.
mall_UserInfo
&&
type
==
1
)
{
// this.getLogin()
}
}
);
},
reloadUserinfo
()
{
this
.
b2b_user_info
=
uni
.
getStorageSync
(
'b2b_user'
);
this
.
userCenterinfo
();
this
.
u
=
this
.
user_info
;
this
.
GetCustomerCenter
();
this
.
mall_UserInfo
=
uni
.
getStorageSync
(
"mall_UserInfo"
)
?
uni
.
getStorageSync
(
"mall_UserInfo"
)
:
{};
},
...
...
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