Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
飞
飞鹤小程序
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
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
FH
飞鹤小程序
Commits
c755b612
Commit
c755b612
authored
Oct 30, 2025
by
jt
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feihesanqi_20251014' of gitlab2.dui88.com:fh/20250528_FHQ1 into feihesanqi_20251014
parents
99a3c713
25a8330b
Changes
25
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
891 additions
and
675 deletions
+891
-675
CanEatAnswerPopup.vue
components/CanEatAnswerPopup.vue
+41
-18
RegisterLayer.vue
components/RegisterLayer.vue
+2
-2
InviteGift.vue
components/integralArea/InviteGift.vue
+0
-4
SignRuleDes.less
components/qiandao/SignRuleDes.less
+21
-13
SignRuleDes.vue
components/qiandao/SignRuleDes.vue
+8
-6
GongzhonghaoPop.vue
components/renwu/GongzhonghaoPop.vue
+3
-2
TaskCompleteTips.less
components/renwu/TaskCompleteTips.less
+16
-11
TaskCompleteTips.vue
components/renwu/TaskCompleteTips.vue
+2
-2
TaskPerson.vue
components/renwu/TaskPerson.vue
+2
-2
getSigninAndTaskInMock.json
mock/getSigninAndTaskInMock.json
+1
-155
index.vue
pages/index/index.vue
+118
-19
sharepage.less
pages/invate/sharepage.less
+2
-2
sharepage.vue
pages/invate/sharepage.vue
+1
-1
addressEdit.vue
v3/addressList/addressEdit.vue
+114
-159
addressList.vue
v3/addressList/addressList.vue
+50
-29
goodDetail.vue
v3/goodDetail/goodDetail.vue
+134
-44
index.vue
v3/more/index.vue
+8
-8
orderDetail.vue
v3/orderDetail/orderDetail.vue
+95
-42
payResultPage.vue
v3/payResultPage/payResultPage.vue
+45
-22
settlementCenter.vue
v3/settlementCenter/settlementCenter.vue
+132
-92
Brand.vue
views/Brand.vue
+2
-0
Home.vue
views/Home.vue
+11
-16
Integral.less
views/Integral.less
+46
-1
Integral.vue
views/Integral.vue
+23
-13
My.vue
views/My.vue
+14
-12
No files found.
components/CanEatAnswerPopup.vue
View file @
c755b612
<
template
>
<uni-popup
ref=
"answerPopup"
type=
"bottom"
:maskClick=
"false"
:safe-area=
"true"
>
<uni-popup
ref=
"answerPopup"
type=
"bottom"
:maskClick=
"false"
:safe-area=
"true"
:backgroundColor=
"'rgba(0, 0, 0, 0.5)'"
>
<view
class=
"answer-popup-container"
>
<view
class=
"answer-popup"
>
<!-- 关闭按钮 -->
<view
class=
"close-btn"
@
tap=
"handleClose"
>
×
</view>
<view
class=
"close-btn"
@
tap=
"handleClose"
>
<image
:src=
"`$
{$baseUrl}homepage/Q3Res/canEatCloseBtn.png`" mode="aspectFit">
</image>
</view>
<!-- 结果标题和图标 -->
<view
class=
"result-header"
>
...
...
@@ -94,11 +96,11 @@ export default {
// 根据fallResult或allResult字符串生成显示用的选项分布数据
displayOptionDistribution
()
{
const
labels
=
[
'能吃'
,
'少吃'
,
'慎吃'
,
'禁吃'
];
// 确保所有数据都被正确记录
console
.
log
(
'AllResult数据:'
,
this
.
allResult
,
'类型:'
,
typeof
this
.
allResult
);
console
.
log
(
'FallResult数据:'
,
this
.
fallResult
,
'类型:'
,
typeof
this
.
fallResult
);
// 首先检查fallResult
if
(
this
.
fallResult
&&
this
.
fallResult
!==
null
&&
this
.
fallResult
.
trim
()
!==
''
&&
this
.
fallResult
.
includes
(
'|'
))
{
try
{
...
...
@@ -112,7 +114,7 @@ export default {
console
.
error
(
'处理fallResult时出错:'
,
error
);
}
}
// 然后检查allResult,使用更宽松的判断条件
if
(
this
.
allResult
&&
this
.
allResult
!==
null
&&
typeof
this
.
allResult
===
'string'
)
{
// 即使不包含|符号,也尝试处理
...
...
@@ -129,7 +131,7 @@ export default {
percentage
:
`
${
percent
}
%`
}));
}
// 最后使用默认的optionDistribution
console
.
log
(
'使用默认optionDistribution'
);
return
this
.
optionDistribution
;
...
...
@@ -149,9 +151,21 @@ export default {
},
methods
:
{
openPopup
()
{
// 禁止背景页面滚动(小程序原生方式)
wx
.
setPageStyle
({
style
:
{
overflow
:
'hidden'
}
});
this
.
$refs
.
answerPopup
.
open
();
},
closePopup
()
{
// 恢复背景页面滚动(小程序原生方式)
wx
.
setPageStyle
({
style
:
{
overflow
:
'auto'
}
});
if
(
this
.
$refs
.
answerPopup
)
{
this
.
$refs
.
answerPopup
.
close
();
}
...
...
@@ -191,11 +205,15 @@ export default {
right
:
20
rpx
;
width
:
60
rpx
;
height
:
60
rpx
;
line-height
:
60
rpx
;
text-align
:
center
;
font-size
:
40
rpx
;
color
:
#999
;
z-index
:
10
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
}
.close-btn
image
{
width
:
100%
;
height
:
100%
;
}
.result-header
{
...
...
@@ -241,7 +259,7 @@ export default {
.option-distribution
{
display
:
flex
;
gap
:
5
rpx
;
gap
:
3
rpx
;
margin-bottom
:
30
rpx
;
align-items
:
center
;
width
:
100%
;
...
...
@@ -264,18 +282,22 @@ export default {
/* 从左到右4种颜色 - 反转顺序 */
.option-bar
:nth-child
(
1
)
{
border-radius
:
50
rpx
20
rpx
50
rpx
50
rpx
;
background
:
#D3A458
;
}
.option-bar
:nth-child
(
2
)
{
border-radius
:
20
rpx
10
rpx
20
rpx
10
rpx
;
background
:
#B27C1E
;
}
.option-bar
:nth-child
(
3
)
{
border-radius
:
20
rpx
10
rpx
20
rpx
10
rpx
;
background
:
#8D5C05
;
}
.option-bar
:nth-child
(
4
)
{
border-radius
:
20
rpx
50
rpx
50
rpx
20
rpx
;
background
:
#644104
;
}
...
...
@@ -298,8 +320,8 @@ export default {
.question-answer-section
{
background
:
#FFFFFF
;
height
:
164
rpx
;
padding
:
2
0
rpx
;
/* height: 164rpx; */
padding
:
4
0
rpx
;
border-radius
:
20
rpx
;
margin-bottom
:
30
rpx
;
overflow-y
:
auto
;
...
...
@@ -309,6 +331,7 @@ export default {
font-size
:
28
rpx
;
color
:
#333
;
display
:
block
;
font-weight
:
bolder
;
margin-bottom
:
15
rpx
;
line-height
:
1.6
;
}
...
...
@@ -317,13 +340,13 @@ export default {
font-size
:
28
rpx
;
color
:
#D3A358
;
display
:
block
;
font-weight
:
bold
;
/* font-weight: bold; */
}
.analysis-section
{
background
:
#FFFFFF
;
height
:
446
rpx
;
padding
:
2
0
rpx
;
padding
:
4
0
rpx
;
border-radius
:
36
rpx
;
margin-bottom
:
40
rpx
;
overflow-y
:
auto
;
...
...
@@ -331,15 +354,15 @@ export default {
.analysis-title
{
font-size
:
30
rpx
;
font-weight
:
bold
;
color
:
#
333
;
font-weight
:
bold
er
;
color
:
#
000
;
display
:
block
;
margin-bottom
:
15
rpx
;
}
.analysis-content
{
font-size
:
28
rpx
;
color
:
#
333
;
color
:
#
999999
;
line-height
:
1.8
;
white-space
:
pre-wrap
;
}
...
...
components/RegisterLayer.vue
View file @
c755b612
...
...
@@ -89,7 +89,7 @@
</view>
</view>
<view
class=
"agreement_section"
>
<
!--
<
view
class=
"agreement_section"
>
<view
class=
"agreement_checkbox"
>
<view
class=
"checkbox"
:class=
"
{ checked: agreementChecked }" @click="agreementChecked = !agreementChecked">
<text
v-if=
"agreementChecked"
class=
"checkmark"
>
✓
</text>
...
...
@@ -98,7 +98,7 @@
data-type=
"member"
>
《星妈会用户注册协议》
</text><text
class=
"agreement_link"
@
click=
"openAgreement"
data-type=
"privacy"
>
《星妈会隐私政策》
</text></text>
</view>
</view>
</view>
-->
<button
v-if=
"pageStatus.btnStatus"
form-type=
"submit"
class=
"form_btn"
:class=
"
{ disabled: !isBtnActive }">
完成
...
...
components/integralArea/InviteGift.vue
View file @
c755b612
...
...
@@ -66,10 +66,6 @@ onMounted(() => {
// 去邀请按钮点击事件
const
handleInviteClick
=
()
=>
{
console
.
log
(
'去邀请按钮点击'
);
// jump({
// url: '/pages/invate/sharepage',
// type: JumpType.INNER
// });
emit
(
'invite'
);
};
...
...
components/qiandao/SignRuleDes.less
View file @
c755b612
...
...
@@ -36,22 +36,30 @@
}
.rule_list {
width: 100%;
margin-left: 108rpx;
margin-left: 56rpx;
margin-right: 56rpx;
height: 190rpx;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
.rule_date {
font-size: 26rpx;
color: #54390D;
.rule_rich_text {
width: 100%;
display: block;
}
.rule_text {
font-size: 26rpx;
color: #54390D;
// line-height: 1.5;
display: block;
// margin-bottom: 20rpx;
// :deep(.rule_date) {
// font-size: 26rpx;
// color: #54390D;
// // line-height: 1.5;
// // margin-bottom: 12rpx;
// display: block;
// }
:deep(.rule_text) {
font-size: 24rpx;
color: #54390D;
// line-height: 1.8;
display: block;
// margin-bottom: 8rpx;
}
}
}
}
...
...
components/qiandao/SignRuleDes.vue
View file @
c755b612
...
...
@@ -6,11 +6,7 @@
<text
class=
"rule_title"
>
任务规则
</text>
<view
class=
"rule_list"
>
<text
class=
"rule_date"
>
2025年4月1日签到规则升级
</text>
<text
class=
"rule_text"
>
1. 当月连签2天后,单日签到奖励升至2分
</text>
<text
class=
"rule_text"
>
2. 当周满签7天,额外再奖励5分
</text>
<text
class=
"rule_text"
>
3. 断签也有机会补,邀请小伙伴帮你助力
</text>
<text
class=
"rule_text"
>
4. 每月1号连签次数清零
</text>
<rich-text
class=
"rule_rich_text"
:nodes=
"ruleContent"
></rich-text>
</view>
</view>
...
...
@@ -23,7 +19,8 @@
</
template
>
<
script
setup
>
import
{
defineProps
,
defineEmits
}
from
'vue'
;
import
{
defineProps
,
defineEmits
,
ref
}
from
'vue'
;
import
{
useIntegralStore
}
from
'../../stores/integral'
;
// Props 定义
const
props
=
defineProps
({
...
...
@@ -35,6 +32,11 @@ const props = defineProps({
// Emits 定义
const
emit
=
defineEmits
([
'close'
]);
const
integralStore
=
useIntegralStore
();
const
ruleText
=
ref
(
integralStore
.
signinAndTaskInfo
?.
checkInTodo
?.
checkInExtra
?.
rule
);
// 富文本内容字符串
const
ruleContent
=
ref
(
ruleText
.
value
?
ruleText
.
value
:
'<div class="rule_text">2025年4月1日签到规则升级</div><div class="rule_text">1. 当月连签2天后,单日签到奖励升至2分</div><div class="rule_text">2. 当周满签7天,额外再奖励5分</div><div class="rule_text">3. 断签也有机会补,邀请小伙伴帮你助力</div><div class="rule_text">4. 每月1号连签次数清零</div>'
);
// 关闭弹窗
const
handleClose
=
()
=>
{
...
...
components/renwu/GongzhonghaoPop.vue
View file @
c755b612
<
template
>
<view
class=
"gongzhonghao_pop_overlay"
v-if=
"visible"
@
click=
"handleClose"
>
<view
class=
"gongzhonghao_pop_container"
@
click
.
stop
>
<view
class=
"gongzhonghao_pop_overlay"
v-if=
"visible"
>
<view
class=
"gongzhonghao_pop_container"
>
<!-- 弹窗头部 -->
<view
class=
"pop_header"
>
<text
class=
"pop_title"
>
{{
props
.
title
}}
</text>
...
...
@@ -19,6 +19,7 @@
class=
"qr_code_img"
:src=
"props.qrCodeUrl"
mode=
"aspectFit"
:show-menu-by-longpress=
"true"
/>
</view>
...
...
components/renwu/TaskCompleteTips.less
View file @
c755b612
...
...
@@ -30,17 +30,22 @@
z-index: 2;
.tips_title {
font-size:
50
rpx;
font-weight:
bold
;
font-size:
64
rpx;
font-weight:
400rpx
;
color: #ffffff;
margin-bottom: 20rpx;
text-align: center;
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
max-width: 560rpx;
}
.points_text {
font-size: 32rpx;
color: #ffffff;
margin-bottom:
8
0rpx;
margin-bottom:
6
0rpx;
text-align: center;
}
...
...
@@ -48,7 +53,7 @@
position: relative;
width: 300rpx;
height: 300rpx;
margin-bottom:
9
0rpx;
margin-bottom:
6
0rpx;
display: flex;
align-items: center;
justify-content: center;
...
...
@@ -56,8 +61,8 @@
.task_complete_icon {
position: absolute;
width:
122
rpx;
height:
12
2rpx;
width:
238
rpx;
height:
23
2rpx;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
...
...
@@ -69,8 +74,8 @@
}
.accept_button {
width: 3
00
rpx;
height:
80
rpx;
width: 3
24
rpx;
height:
78
rpx;
background: #D3A458;
border-radius: 40rpx;
display: flex;
...
...
@@ -81,7 +86,7 @@
.accept_button_text {
font-size: 32rpx;
color: #ffffff;
font-weight:
5
00;
font-weight:
4
00;
}
}
...
...
@@ -92,14 +97,14 @@
display: flex;
align-items: center;
justify-content: center;
background: rgba(
0, 0, 0
, 0.5);
background: rgba(
255, 255, 255
, 0.5);
.close_icon {
margin-top: -7rpx;
margin-left: 2rpx;
font-size: 40rpx;
color: #ffffff;
font-weight: bold;
//
font-weight: bold;
}
}
}
...
...
components/renwu/TaskCompleteTips.vue
View file @
c755b612
...
...
@@ -13,7 +13,7 @@
<!-- 第三行:图片 -->
<view
class=
"task_complete_icon_container"
>
<image
class=
"task_complete_icon"
:class=
"
{ 'task_complete_icon_animating': isAnimating }" :src="$baseUrl + `integral/1023/jifenIcon
1
.png`" mode="aspectFit" />
<image
class=
"task_complete_icon"
:class=
"
{ 'task_complete_icon_animating': isAnimating }" :src="$baseUrl + `integral/1023/jifenIcon
_renwu
.png`" mode="aspectFit" />
</view>
<!-- 第四行:开心收下按钮 -->
...
...
@@ -40,7 +40,7 @@ const props = defineProps({
},
points
:
{
type
:
Number
,
default
:
10
0
default
:
0
},
taskTitle
:
{
type
:
String
,
...
...
components/renwu/TaskPerson.vue
View file @
c755b612
...
...
@@ -103,14 +103,14 @@
</view>
</view>
<view
class=
"agreement_section"
>
<
!--
<
view
class=
"agreement_section"
>
<view
class=
"agreement_checkbox"
>
<view
class=
"checkbox"
:class=
"
{ checked: agreementChecked }" @click="toggleAgreement">
<text
v-if=
"agreementChecked"
class=
"checkmark"
>
✓
</text>
</view>
<text
class=
"agreement_text"
>
我已阅读并同意
<text
class=
"agreement_link"
@
click=
"handleAgreementClick('member')"
>
《星妈会用户注册协议》
</text><text
class=
"agreement_link"
@
click=
"handleAgreementClick('privacy')"
>
《星妈会隐私政策》
</text></text>
</view>
</view>
</view>
-->
<button
v-if=
"pageStatus.btnStatus"
form-type=
"submit"
class=
"form_btn"
:class=
"
{ disabled: !agreementChecked }">
完成
...
...
mock/getSigninAndTaskInMock.json
View file @
c755b612
{
"ok"
:
true
,
"success"
:
true
,
"msg"
:
"获取签到任务成功"
,
"code"
:
"200"
,
"data"
:
{
"checkInTodo"
:
{
"id"
:
1
,
"name"
:
"每日签到"
,
"checkInExtra"
:
{
"rule"
:
"连续签到7天可获得额外奖励"
,
"type"
:
"daily_checkin"
,
"taskCode"
:
"CHECKIN_001"
,
"taskId"
:
"checkin_daily_001"
,
"joinRecord"
:
[
{
"index"
:
1
,
"joined"
:
true
,
"credits"
:
10
,
"coefficient"
:
0
,
"today"
:
false
},
{
"index"
:
2
,
"joined"
:
true
,
"credits"
:
10
,
"coefficient"
:
0
,
"today"
:
false
},
{
"index"
:
3
,
"joined"
:
true
,
"credits"
:
10
,
"coefficient"
:
1
,
"today"
:
true
},
{
"index"
:
4
,
"joined"
:
false
,
"credits"
:
10
,
"coefficient"
:
1
,
"today"
:
false
},
{
"index"
:
5
,
"joined"
:
false
,
"credits"
:
10
,
"coefficient"
:
1
,
"today"
:
false
},
{
"index"
:
6
,
"joined"
:
false
,
"credits"
:
10
,
"coefficient"
:
1
,
"today"
:
false
},
{
"index"
:
7
,
"joined"
:
false
,
"credits"
:
20
,
"coefficient"
:
2
,
"today"
:
false
}
]
}
},
"taskTodo"
:
[
{
"id"
:
1
,
"name"
:
"完善信息"
,
"taskTodoExtra"
:
{
"title"
:
"完善信息"
,
"sort"
:
1
,
"credits"
:
20
,
"type"
:
"Perfect"
,
"icon"
:
"https://course.feihe.com/momclub-picture/brandpage/v1_ip1.png"
,
"desc"
:
"完善宝宝基本信息,获得个性化推荐"
,
"extra"
:
"完善信息"
,
"status"
:
"1"
}
},
{
"id"
:
3
,
"name"
:
"浏览星妈优选商城"
,
"taskTodoExtra"
:
{
"title"
:
"浏览星妈优选商城"
,
"sort"
:
3
,
"credits"
:
20
,
"type"
:
"BROWSE_PAGE"
,
"icon"
:
"https://course.feihe.com/momclub-picture/brandpage/v1_ip1.png"
,
"desc"
:
"浏览星妈优选商城商品"
,
"extra"
:
"浏览星妈优选商城"
,
"status"
:
"1"
}
},
{
"id"
:
4
,
"name"
:
"完成首单优选消费"
,
"taskTodoExtra"
:
{
"title"
:
"完成首单优选消费"
,
"sort"
:
4
,
"credits"
:
20
,
"type"
:
"EXCHANGE_GOODS"
,
"icon"
:
"https://course.feihe.com/momclub-picture/brandpage/v1_ip2.png"
,
"desc"
:
"在星妈优选商城完成首单消费"
,
"extra"
:
"完成首单优选消费"
,
"status"
:
"1"
}
},
{
"id"
:
5
,
"name"
:
"关注公众号"
,
"taskTodoExtra"
:
{
"title"
:
"关注公众号"
,
"sort"
:
5
,
"credits"
:
20
,
"type"
:
"FollowWx"
,
"icon"
:
"https://course.feihe.com/momclub-picture/brandpage/v1_ip2.png"
,
"desc"
:
"关注星妈会官方微信公众号"
,
"extra"
:
"关注公众号"
,
"status"
:
"1"
}
},
{
"id"
:
6
,
"name"
:
"添加企业微信"
,
"taskTodoExtra"
:
{
"title"
:
"添加企业微信"
,
"sort"
:
6
,
"credits"
:
20
,
"type"
:
"AddQw"
,
"icon"
:
"https://course.feihe.com/momclub-picture/brandpage/v1_ip1.png"
,
"desc"
:
"添加星妈会企业微信客服"
,
"extra"
:
"添加企业微信"
,
"status"
:
"1"
}
},
{
"id"
:
7
,
"name"
:
"注册会员"
,
"taskTodoExtra"
:
{
"title"
:
"注册会员"
,
"sort"
:
7
,
"credits"
:
20
,
"type"
:
"Register"
,
"icon"
:
"https://course.feihe.com/momclub-picture/brandpage/v1_ip1.png"
,
"desc"
:
"注册星妈会会员"
,
"extra"
:
"注册会员"
,
"status"
:
"1"
}
}
]
}
}
\ No newline at end of file
{
"code"
:
"000000"
,
"data"
:{
"checkInTodo"
:{
"checkInExtra"
:{
"joinRecord"
:[{
"coefficient"
:
null
,
"credits"
:
"5"
,
"index"
:
"1"
,
"joined"
:
false
,
"today"
:
false
},{
"coefficient"
:
null
,
"credits"
:
"5"
,
"index"
:
"2"
,
"joined"
:
true
,
"today"
:
true
},{
"coefficient"
:
null
,
"credits"
:
"6"
,
"index"
:
"3"
,
"joined"
:
false
,
"today"
:
false
},{
"coefficient"
:
null
,
"credits"
:
"6"
,
"index"
:
"4"
,
"joined"
:
false
,
"today"
:
false
},{
"coefficient"
:
null
,
"credits"
:
"6"
,
"index"
:
"5"
,
"joined"
:
false
,
"today"
:
false
},{
"coefficient"
:
null
,
"credits"
:
"6"
,
"index"
:
"6"
,
"joined"
:
false
,
"today"
:
false
},{
"coefficient"
:
null
,
"credits"
:
"6"
,
"index"
:
"7"
,
"joined"
:
false
,
"today"
:
false
}],
"rule"
:
null
,
"taskCode"
:
null
,
"taskId"
:
"1115"
,
"type"
:
"CheckIn"
},
"id"
:
1115
,
"name"
:
"每日签到-修改"
},
"taskTodo"
:[{
"id"
:
1195
,
"name"
:
"小哇演示"
,
"taskTodoExtra"
:{
"credits"
:
"20"
,
"desc"
:
"小哇演示"
,
"extra"
:
"{
\"
type
\"
:
\"
GOODS
\"
,
\"
value
\"
:
\"
607028533731099656
\"
,
\"
label
\"
:
\"
飞鹤星飞帆1段婴儿配方奶粉一段700g(0-6月龄)JXH自营积分+现金1
\"
,
\"
url
\"
:
\"
#/goods/607028533731099656
\"
,
\"
skuId
\"
:
\"
607028533731099657
\"
}"
,
"icon"
:
"https://firmus-member-test-1253290912.cos.ap-beijing.myqcloud.com/xmh-mini-program/manager/image/2025/10/28/xmh-mini-program_1761636548928_c8b83a5e3c4a40b5b8971f3acbd83362.png"
,
"limit"
:
null
,
"sort"
:
"1"
,
"status"
:
"1"
,
"title"
:
"小哇演示"
,
"type"
:
"BROWSE_PAGE"
}},{
"id"
:
1120
,
"name"
:
"关注公众号"
,
"taskTodoExtra"
:{
"credits"
:
"10"
,
"desc"
:
"关注公众号"
,
"extra"
:
null
,
"icon"
:
"https://firmus-member-test-1253290912.cos.ap-beijing.myqcloud.com/xmh-mini-program/manager/image/2025/10/19/xmh-mini-program_1760883654444_2791e90272af46f29fa07bf4ae90dd53.png"
,
"limit"
:
null
,
"sort"
:
"4"
,
"status"
:
"1"
,
"title"
:
"关注公众号"
,
"type"
:
"FollowWx"
}},{
"id"
:
1207
,
"name"
:
"浏览test"
,
"taskTodoExtra"
:{
"credits"
:
"10"
,
"desc"
:
"浏览test"
,
"extra"
:
"{
\"
type
\"
:
\"
SELF_GOODS
\"
,
\"
value
\"
:82,
\"
label
\"
:
\"
飞鹤星飞帆1段婴儿配方奶粉xiaowa
\"
,
\"
url
\"
:
\"
#/goods/82
\"
}"
,
"icon"
:
"https://firmus-member-test-1253290912.cos.ap-beijing.myqcloud.com/xmh-mini-program/manager/image/2025/10/28/xmh-mini-program_1761652747376_75e68bd480a34eea9ec5b693a8de65f5.png"
,
"limit"
:
null
,
"sort"
:
"10"
,
"status"
:
"1"
,
"title"
:
"浏览test"
,
"type"
:
"BROWSE_PAGE"
}},{
"id"
:
1127
,
"name"
:
"消费任务消费任务消费任务"
,
"taskTodoExtra"
:{
"credits"
:
"100"
,
"desc"
:
"消费任务副标题"
,
"extra"
:
"[{
\"
itemFeaturesPayType
\"
:
\"
7
\"
,
\"
itemId
\"
:
\"
825847777614046618
\"
,
\"
pictUrl
\"
:
\"
https://fh01-dev-bucket.oss-cn-beijing.aliyuncs.com/xxyx-fn_bp_bs/item-img/c9a1a676-48ce-7e9a-e7d7d0f70faa009b.jpg
\"
,
\"
price
\"
:
\"
100
\"
,
\"
skuFeatures
\"
:
\"
1
\"
,
\"
skuId
\"
:
\"
825847777614046619
\"
,
\"
skuProperties
\"
:
\"
435315499745502188:700462790409131774;435315875667965138:183166545774596244;
\"
,
\"
skuStatus
\"
:1,
\"
status
\"
:1,
\"
storeName
\"
:
\"
xgren联营店铺001分店
\"
,
\"
title
\"
:
\"
任相阁-黑人牙刷30支联营
\"
}]"
,
"icon"
:
"https://firmus-member-test-1253290912.cos.ap-beijing.myqcloud.com/xmh-mini-program/manager/image/2025/10/21/xmh-mini-program_1761027269827_446aa82498834c3abb6b98126599308d.jpg"
,
"limit"
:
null
,
"sort"
:
"23"
,
"status"
:
"3"
,
"title"
:
"消费任务消费任务消费任务"
,
"type"
:
"EXCHANGE_GOODS"
}}]},
"message"
:
"success"
,
"ok"
:
true
,
"success"
:
true
}
\ No newline at end of file
pages/index/index.vue
View file @
c755b612
...
...
@@ -56,6 +56,14 @@
:description=
"gongzhonghaoDescription"
:qrCodeUrl=
"gongzhonghaoQrCodeUrl"
@
close=
"handleCloseGongzhonghaoPop"
@
download=
"handleDownloadQrCode"
/>
<!-- 视频弹窗 -->
<view
v-if=
"showVideo"
class=
"video-popup1"
>
<video
:src=
"currentVideoUrl"
controls
autoplay
:style=
"
{ width: videoWidth + 'px', height: videoHeight + 'px' }" @loadedmetadata="onVideoLoadedMeta"
@play="onVideoPlay">
</video>
<view
class=
"close-btn-bottom"
@
tap=
"closeVideo"
>
×
</view>
</view>
<button
v-if=
"isBackApp"
class=
"back-app"
open-type=
"launchApp"
app-parameter=
"wechat"
@
binderror=
"handleLaunchAppError"
:style=
"
{
...
...
@@ -68,9 +76,9 @@
<!-- 悬浮授权手机号模块 -->
<view
class=
"auth-phone-module"
v-if=
"!userStore.memberInfo?.mobile"
>
<image
class=
"auth-phone-bg"
:src=
"$baseUrl + 'homepage/Q3Res/accessBg
2
.png'"
></image>
<image
class=
"auth-phone-bg"
:src=
"$baseUrl + 'homepage/Q3Res/accessBg
3
.png'"
></image>
<view
class=
"auth-phone-btn-container"
>
<image
class=
"auth-phone-btn"
:src=
"$baseUrl + 'homepage/Q3Res/accessBtn
2
.png'"
@
tap=
"handleAuthPhoneClick"
>
<image
class=
"auth-phone-btn"
:src=
"$baseUrl + 'homepage/Q3Res/accessBtn
3
.png'"
@
tap=
"handleAuthPhoneClick"
>
</image>
</view>
</view>
...
...
@@ -133,6 +141,12 @@ const gongzhonghaoTitle = ref('公众号');
const
gongzhonghaoDescription
=
ref
(
'长按关注星妈会公众号,了解更多专业育儿资讯'
);
const
gongzhonghaoQrCodeUrl
=
ref
(
'https://course.feihe.com/momclub-picture/homepage/qrcode_gzh.png'
);
// 视频弹窗相关
const
showVideo
=
ref
(
false
);
const
currentVideoUrl
=
ref
(
''
);
const
videoWidth
=
ref
(
375
);
const
videoHeight
=
ref
(
210
);
// 处理返回APP失败的情况
const
handleLaunchAppError
=
(
e
)
=>
{
...
...
@@ -209,23 +223,26 @@ const handleCloseTaskCompleteTips = async () => {
};
// 完成任务并显示完成提示
const
handleTaskComplete
=
async
(
taskIdParam
)
=>
{
taskId
.
value
=
0
;
const
integralStore
=
useIntegralStore
();
const
res
=
await
taskCompleteJSON
(
taskIdParam
);
console
.
log
(
'taskCompleteJSON res:'
,
res
);
globalStore
.
isShowTaskComplete
=
true
;
globalStore
.
taskCompletePoints
=
res
?.
data
?.
actualCredits
;
globalStore
.
taskCompleteTitle
=
res
?.
data
?.
taskName
;
//刷新签到和任务信息
await
integralStore
.
getSigninAndTaskInfo
();
};
onShow
(
async
()
=>
{
console
.
log
(
'onShow--index'
);
//完成了浏览任务
if
(
taskId
.
value
>
0
)
{
const
integralStore
=
useIntegralStore
();
const
res
=
await
taskCompleteJSON
(
taskId
.
value
);
console
.
log
(
'taskCompleteJSON res:'
,
res
);
globalStore
.
isShowTaskComplete
=
true
;
globalStore
.
taskCompletePoints
=
res
?.
data
?.
actualCredits
;
globalStore
.
taskCompleteTitle
=
res
?.
data
?.
taskName
;
//刷新签到和任务信息
await
integralStore
.
getSigninAndTaskInfo
();
await
handleTaskComplete
(
taskId
.
value
);
}
});
...
...
@@ -339,7 +356,7 @@ const handleTaskClick = async (data) => {
});
return
;
}
// data.task.taskTodoExtra.type = 'FollowWx'
taskId
.
value
=
0
;
switch
(
data
.
task
.
taskTodoExtra
.
type
)
{
case
'Perfect'
:
...
...
@@ -354,11 +371,42 @@ const handleTaskClick = async (data) => {
// 这里可以设置任务ID用于后续完成检测
const
extra1
=
JSON
.
parse
(
data
?.
task
?.
taskTodoExtra
?.
extra
);
console
.
log
(
'extra66666:'
,
extra1
);
jump
({
type
:
JumpType
.
H5
,
url
:
extra1
.
url
});
if
(
extra1
.
type
==
'VIDEO'
)
{
showVideo
.
value
=
true
;
currentVideoUrl
.
value
=
extra1
.
url
;
}
else
if
(
extra1
.
type
==
'GOODS'
){
let
url
=
`subPackages/shopMainProcess/product/index?productId=
${
extra1
.
value
}
&skuId=
${
extra1
.
skuId
}
&entrySource=xmh_wechatmp_points_north`
;
jump
({
type
:
JumpType
.
MINI
,
url
:
url
,
extra
:
{
envVersion
:
"release"
,
appId
:
"wx4205ec55b793245e"
,
embedded
:
true
}
});
}
else
if
(
extra1
.
type
==
'PAGE'
||
extra1
.
type
==
'MINI_APP'
){
jump
({
type
:
JumpType
.
INNER
,
url
:
extra1
.
url
});
}
else
if
(
extra1
.
type
==
'MINI_APP_THIRD'
){
jump
({
type
:
JumpType
.
MINI
,
url
:
extra1
.
url
,
extra
:
{
envVersion
:
"release"
,
appId
:
extra1
.
value
,
embedded
:
true
}
});
}
else
if
(
extra1
.
type
==
'SELF_GOODS'
){
jump
({
type
:
JumpType
.
INNER
,
url
:
`/v3/goodDetail/goodDetail?gid=
${
extra1
.
value
}
`
});
}
else
{
jump
({
type
:
JumpType
.
H5
,
url
:
extra1
.
url
});
}
// console.log('extra66666:', extra1);
break
;
case
'FirstOrder'
:
//完成首单优选消费
const
extra2
=
JSON
.
parse
(
data
?.
task
?.
taskTodoExtra
?.
extra
);
...
...
@@ -493,6 +541,30 @@ const handleTaskPersonSubmit = (formData) => {
icon
:
'success'
});
};
// 视频弹窗相关方法
const
closeVideo
=
async
()
=>
{
//完成了浏览任务
if
(
taskId
.
value
>
0
)
{
await
handleTaskComplete
(
taskId
.
value
);
}
showVideo
.
value
=
false
;
currentVideoUrl
.
value
=
''
;
};
const
onVideoLoadedMeta
=
(
e
)
=>
{
const
{
width
,
height
}
=
e
.
detail
;
const
pageWidth
=
uni
.
upx2px
(
750
);
const
ratio
=
height
/
width
;
videoWidth
.
value
=
pageWidth
;
videoHeight
.
value
=
pageWidth
;
// pageWidth * ratio;
};
const
onVideoPlay
=
()
=>
{
console
.
log
(
'视频播放'
);
};
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
@@ -605,4 +677,31 @@ const handleTaskPersonSubmit = (formData) => {
.auth-phone-btn
:active
{
transform
:
scale
(
0
.95
);
}
.video-popup1
{
position
:
fixed
;
left
:
0
;
top
:
0
;
right
:
0
;
bottom
:
0
;
background
:
rgba
(
0
,
0
,
0
,
0
.7
);
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
justify-content
:
center
;
z-index
:
9999
;
}
.close-btn-bottom
{
margin
:
32rpx
auto
0
auto
;
width
:
64rpx
;
height
:
64rpx
;
border-radius
:
50%
;
background
:
rgba
(
0
,
0
,
0
,
0
.5
);
color
:
#fff
;
font-size
:
44rpx
;
line-height
:
64rpx
;
text-align
:
center
;
z-index
:
10001
;
}
</
style
>
\ No newline at end of file
pages/invate/sharepage.less
View file @
c755b612
...
...
@@ -9,7 +9,7 @@
top: 0;
left: 0;
width: 100%;
height: 2
462
rpx;
height: 2
800
rpx;
.background_image {
position: absolute;
top: 0;
...
...
@@ -21,7 +21,7 @@
// 一键领取按钮
.claim_button {
position:
absolute
;
position:
fixed
;
bottom: 60rpx;
left: 50%;
transform: translateX(-50%);
...
...
pages/invate/sharepage.vue
View file @
c755b612
...
...
@@ -2,7 +2,7 @@
<view
class=
"sharepage_container"
>
<view
class=
"background_image_container"
>
<!-- 背景图片 -->
<image
class=
"background_image"
:src=
"$baseUrl + 'homepage/shareImg_jf
1
.jpg'"
mode=
"aspectFit"
/>
<image
class=
"background_image"
:src=
"$baseUrl + 'homepage/shareImg_jf
2
.jpg'"
mode=
"aspectFit"
/>
<!-- 一键领取按钮 -->
<view
class=
"claim_button"
@
click=
"handleClaim"
>
...
...
v3/addressList/addressEdit.vue
View file @
c755b612
This diff is collapsed.
Click to expand it.
v3/addressList/addressList.vue
View file @
c755b612
...
...
@@ -30,14 +30,22 @@
<!-- 删除确认弹窗 -->
<view
v-if=
"showDeleteConfirm"
class=
"modal-overlay"
@
tap=
"cancelDelete"
>
<view
class=
"modal-cont
ainer
"
@
tap
.
stop
>
<view
class=
"modal-cont
ent
"
@
tap
.
stop
>
<view
class=
"modal-title"
>
确认删除
</view>
<view
class=
"modal-
content
"
>
确定要删除该收货地址吗?
</view>
<view
class=
"modal-
message
"
>
确定要删除该收货地址吗?
</view>
<view
class=
"modal-buttons"
>
<view
class=
"modal-cancel"
@
tap=
"cancelDelete"
>
取消
</view>
<view
class=
"modal-confirm"
@
tap=
"deleteAddress"
>
删除
</view>
<view
class=
"modal-btn cancel-btn"
@
tap=
"cancelDelete"
>
<image
:src=
"$baseUrl + 'homepage/Q3Res/buyCancelBtn.png'"
mode=
"aspectFill"
></image>
</view>
<view
class=
"modal-btn confirm-btn"
@
tap=
"deleteAddress"
>
<image
:src=
"$baseUrl + 'homepage/Q3Res/buyComfirmBtn.png'"
mode=
"aspectFill"
></image>
</view>
</view>
</view>
<!-- 关闭按钮 -->
<view
class=
"modal-close-btn"
@
tap=
"cancelDelete"
>
<image
:src=
"$baseUrl + 'homepage/Q3Res/commonCloseBtn1.png'"
mode=
"aspectFill"
></image>
</view>
</view>
</view>
</
template
>
...
...
@@ -95,7 +103,7 @@ export default {
// 使用uni-app的全局状态来存储选中的地址
// 这是一种更可靠的数据传递方式
uni
.
setStorageSync
(
'selectedAddressForSettlement'
,
addressData
);
console
.
log
(
'存储选中的地址信息:'
,
addressData
);
// 返回上一页(结算页面)
...
...
@@ -180,7 +188,7 @@ export default {
addAddress
()
{
// 防连点检查
if
(
this
.
isSubmitting
)
return
;
// 检查地址数量限制
if
(
this
.
addressList
.
length
>=
20
)
{
uni
.
showToast
({
...
...
@@ -221,7 +229,7 @@ export default {
if
(
this
.
isSubmitting
||
this
.
currentDeleteIndex
<
0
)
return
;
this
.
isSubmitting
=
true
;
this
.
isLoading
=
true
;
const
address
=
this
.
addressList
[
this
.
currentDeleteIndex
];
try
{
const
response
=
await
deleteAddress
({
id
:
address
.
id
});
...
...
@@ -231,7 +239,7 @@ export default {
this
.
addressList
.
splice
(
this
.
currentDeleteIndex
,
1
);
uni
.
showToast
({
title
:
'删除成功'
,
icon
:
'
success
'
icon
:
'
none
'
});
}
else
{
uni
.
showToast
({
...
...
@@ -485,47 +493,60 @@ export default {
z-index
:
200
;
}
.modal-cont
ainer
{
width
:
60
0
rpx
;
.modal-cont
ent
{
width
:
55
0
rpx
;
background-color
:
#ffffff
;
border-radius
:
20
rpx
;
overflow
:
hidden
;
padding
:
50
rpx
;
text-align
:
center
;
}
.modal-title
{
text-align
:
center
;
font-size
:
34
rpx
;
font-weight
:
bold
;
padding
:
30
rpx
;
border-bottom
:
1
rpx
solid
#e0e0e0
;
margin-bottom
:
30
rpx
;
text-align
:
center
;
}
.modal-content
{
text-align
:
center
;
.modal-message
{
font-size
:
32
rpx
;
color
:
#333333
;
padding
:
40
rpx
30
rpx
;
margin-bottom
:
30
rpx
;
text-align
:
center
;
}
.modal-buttons
{
display
:
flex
;
border-top
:
1
rpx
solid
#e0e0e0
;
justify-content
:
space-between
;
gap
:
30
rpx
;
}
.modal-cancel
,
.modal-confirm
{
flex
:
1
;
text-align
:
center
;
padding
:
30
rpx
;
font-size
:
32
rpx
;
.modal-btn
{
height
:
78
rpx
;
}
.modal-cancel
{
color
:
#666666
;
border-right
:
1
rpx
solid
#e0e0e0
;
.modal-btn
image
{
width
:
220
rpx
!important
;
height
:
78
rpx
!important
;
}
.cancel-btn
{
margin-right
:
20
rpx
;
}
.confirm-btn
{
margin-left
:
20
rpx
;
}
.modal-close-btn
{
position
:
absolute
;
top
:
30
rpx
;
right
:
30
rpx
;
z-index
:
201
;
}
.modal-confirm
{
color
:
#ff4444
;
.modal-close-btn
image
{
width
:
40
rpx
;
height
:
40
rpx
;
}
</
style
>
v3/goodDetail/goodDetail.vue
View file @
c755b612
...
...
@@ -49,18 +49,26 @@
<view
class=
"detail-section"
>
<text
class=
"detail-title"
>
详情信息
</text>
<view
class=
"detail-banner"
v-if=
"goodsData.goodsContent"
>
<rich-text
class=
"banner-text"
:nodes=
"goodsData.goodsContent"
></rich-text>
<rich-text
style=
"width: 100%; /* 或设置为具体的像素值 */ overflow-x: hidden;"
class=
"banner-text"
:nodes=
"formatRichText(goodsData.goodsContent)"
></rich-text>
</view>
</view>
</view>
<!-- 底部兑换按钮 -->
<view
class=
"bottom-bar"
>
<button
class=
"exchange-btn"
:class=
"getButtonClass()"
:disabled=
"!canExchange"
@
click=
"handleExchange"
>
<button
class=
"exchange-btn"
:class=
"getButtonClass()"
@
click=
"handleExchange"
>
{{
getButtonText
()
}}
</button>
</view>
<!-- 悬浮客服按钮 -->
<view
class=
"service-btn"
@
click=
"handleServiceClick"
>
<image
class=
"service-icon"
:src=
"$baseUrl + 'homepage/Q3Res/settlementCenter_serviceBtn.png'"
mode=
"aspectFit"
>
</image>
</view>
<!-- 规格选择弹窗 -->
<view
class=
"spec-modal-overlay"
v-if=
"showSpecModal"
@
click=
"closeSpecModal"
>
<view
class=
"spec-modal-content"
@
click
.
stop
>
...
...
@@ -78,7 +86,7 @@
</view>
<view
class=
"product-details"
>
<text
class=
"product-points"
>
{{
goodsData
.
points
}}{{
goodsData
.
creditsTypeName
||
'积分'
}}
</text>
}}
</text>
<text
class=
"product-stock"
>
库存
{{
formatCount
(
goodsData
.
exchangeCount
)
}}
件
</text>
</view>
</view>
...
...
@@ -101,6 +109,8 @@
<text
class=
"quantity-label"
>
选择数量
<text
class=
"limit-text"
v-if=
"goodsData.goodsLimit"
>
(限购
{{
goodsData
.
goodsLimit
}}
件)
</text></text>
<view
class=
"quantity-selector"
>
<image
class=
"quantity-bg"
:src=
"$baseUrl + 'homepage/Q3Res/objectSelectConBg.png'"
mode=
"aspectFill"
></image>
<view
class=
"quantity-btn "
@
click=
"decreaseQuantity"
:disabled=
"quantity
<
=
1
"
>
-
</view>
<text
class=
"quantity-value"
>
{{
quantity
}}
</text>
<view
class=
"quantity-btn "
@
click=
"increaseQuantity"
...
...
@@ -126,14 +136,18 @@
<view
class=
"modal-title"
>
兑换确认
</view>
<view
class=
"modal-message"
>
本次兑换需要消耗
{{
goodsData
.
points
}}{{
goodsData
.
creditsTypeName
||
'积分'
}}
</view>
<view
class=
"modal-buttons"
>
<button
class=
"modal-btn cancel-btn"
@
click=
"closeModal"
>
取消
</button>
<button
class=
"modal-btn confirm-btn"
@
click=
"confirmExchange"
>
确定
</button>
<view
class=
"modal-btn cancel-btn"
@
click=
"closeModal"
>
<image
:src=
"$baseUrl + 'homepage/Q3Res/buyCancelBtn.png'"
mode=
"aspectFill"
></image>
</view>
<view
class=
"modal-btn confirm-btn"
@
click=
"confirmExchange"
>
<image
:src=
"$baseUrl + 'homepage/Q3Res/buyComfirmBtn.png'"
mode=
"aspectFill"
></image>
</view>
</view>
<view
class=
"modal-disclaimer"
>
{{
isPhysicalGoods
()
?
'已发货商品非质量问题不退不换'
:
'兑换完成后不退不换'
}}
</view>
</view>
<!-- 关闭按钮 -->
<view
class=
"modal-close-btn"
@
click=
"closeModal"
>
<
text
class=
"modal-close-icon"
>
×
</text
>
<
image
:src=
"$baseUrl + 'homepage/Q3Res/commonCloseBtn1.png'"
mode=
"aspectFit"
></image
>
</view>
</view>
</view>
...
...
@@ -143,6 +157,7 @@
import
{
fetchGoodsDetail
,
fetchSeckillDetail
,
fetchGoodsPrice
,
fetchTradeCredits
,
fetchSeckillTakeOrder
}
from
'@/api/goods.js'
;
import
{
useUserStore
}
from
'@/stores/user'
;
import
{
jump
,
JumpType
}
from
'../../utils'
;
import
{
useHomeStore
}
from
'../../stores/home'
;
export
default
{
data
()
{
...
...
@@ -345,6 +360,27 @@ export default {
uni
.
navigateBack
();
},
// 客服按钮点击事件
handleServiceClick
()
{
// 客服功能逻辑,可根据实际需求调整
console
.
log
(
'客服按钮点击'
);
// 可以跳转到客服页面或打开客服弹窗
console
.
log
(
'客服点击'
);
const
homeStore
=
useHomeStore
();
const
{
memberId
,
mobile
,
openId
,
unionId
}
=
homeStore
.
homeInfo
;
const
customerUrl
=
`https://intelcc-user.icsoc.net/?channelKey=45839e0505554f8c8aea3c7b6259b049&init=1&crmld=
${
memberId
}
&mobile=
${
mobile
}
&openId=
${
openId
}
&unionId=
${
unionId
}
`
;
jump
({
type
:
JumpType
.
H5
,
url
:
customerUrl
});
},
// 初始化用户状态
async
initUserStatus
()
{
// 获取用户store实例
...
...
@@ -563,6 +599,23 @@ export default {
};
return
levelMap
[
memberLevelName
]
||
1
;
},
// 富文本格式化处理函数
formatRichText
(
html
)
{
let
newContent
=
html
.
replace
(
/<img
[^
>
]
*>/gi
,
function
(
match
,
capture
)
{
match
=
match
.
replace
(
/style="
[^
"
]
+"/gi
,
''
).
replace
(
/style='
[^
'
]
+'/gi
,
''
);
match
=
match
.
replace
(
/width="
[^
"
]
+"/gi
,
''
).
replace
(
/width='
[^
'
]
+'/gi
,
''
);
match
=
match
.
replace
(
/height="
[^
"
]
+"/gi
,
''
).
replace
(
/height='
[^
'
]
+'/gi
,
''
);
return
match
;
});
newContent
=
newContent
.
replace
(
/style="
[^
"
]
+"/gi
,
function
(
match
,
capture
)
{
match
=
match
.
replace
(
/width:
[^
;
]
+;/gi
,
'max-width:100%;'
).
replace
(
/width:
[^
;
]
+;/gi
,
'max-width:100%;'
);
return
match
;
});
newContent
=
newContent
.
replace
(
/<br
[^
>
]
*
\/
>/gi
,
''
);
newContent
=
newContent
.
replace
(
/<img/gi
,
'<img style="max-width:100%;height:auto;display:block;margin-top:0;margin-bottom:0;"'
);
return
newContent
;
},
// 根据等级数字获取等级名称
getUserLevelName
(
level
)
{
...
...
@@ -729,8 +782,14 @@ export default {
// 处理兑换
handleExchange
()
{
console
.
log
(
'handleExchange 被调用'
);
console
.
log
(
'登录状态:'
,
this
.
cfgStatus
.
isRegister
);
console
.
log
(
'canExchange:'
,
this
.
canExchange
);
console
.
log
(
'goodsState:'
,
this
.
goodsData
.
goodsState
);
if
(
!
this
.
cfgStatus
.
isRegister
)
{
// 未登录,跳转到登录注册页面
console
.
log
(
'未登录,跳转到登录页面'
);
jump
({
type
:
JumpType
.
INNER
,
url
:
"/pages/activity/register"
,
...
...
@@ -738,10 +797,13 @@ export default {
return
;
}
if
(
!
this
.
canExchange
)
{
console
.
log
(
'不可兑换,显示提示信息'
);
this
.
showStatusMessage
();
return
;
}
console
.
log
(
'可以兑换,继续执行兑换流程'
);
// 根据商品类型决定弹窗流程
if
(
this
.
isPhysicalGoods
())
{
// 实物商品:显示规格选择弹窗
...
...
@@ -1073,7 +1135,7 @@ export default {
orderId
:
orderData
?
(
orderData
.
orderId
||
orderData
.
orderNo
||
orderData
.
id
)
:
''
,
// 积分信息
pointsValue
:
`
${
this
.
goodsData
.
points
}
${
this
.
goodsData
.
creditsTypeName
||
'积分'
}
`
,
pointsValue
:
`
${
this
.
goodsData
.
points
}
`
,
creditsTypeName
:
this
.
goodsData
.
creditsTypeName
||
'积分'
,
// 商品信息
...
...
@@ -1134,14 +1196,15 @@ export default {
min-height
:
100vh
;
background-color
:
#f5f5f5
;
box-sizing
:
border-box
;
overflow-x
:
hidden
;
/* 禁止横向滚动 */
overflow-x
:
hidden
;
/* 禁止横向滚动 */
position
:
relative
;
}
/* 禁止整个页面横向滚动 */
page
{
overflow-x
:
hidden
;
width
:
100%
;
width
:
100%
;
}
/* 确保所有内容区域都不会超出屏幕宽度 */
...
...
@@ -1203,7 +1266,7 @@ page {
.goods-carousel
{
width
:
100%
;
height
:
750
rpx
;
margin-bottom
:
20
rpx
;
/* margin-bottom: 20rpx; */
}
.carousel-swiper
{
...
...
@@ -1390,9 +1453,10 @@ page {
.detail-banner
{
width
:
100%
;
min-height
:
200
rpx
;
background-color
:
#f8f8f8
;
padding
:
30
rpx
;
border-radius
:
10
rpx
;
overflow
:
hidden
;
/* background-color: #f8f8f8; */
/* padding: 30rpx; */
/* border-radius: 10rpx; */
}
.banner-text
{
...
...
@@ -1413,6 +1477,26 @@ page {
box-shadow
:
0
-2
rpx
10
rpx
rgba
(
0
,
0
,
0
,
0.1
);
}
/* 悬浮客服按钮 */
.service-btn
{
position
:
fixed
;
bottom
:
200
rpx
;
right
:
30
rpx
;
width
:
96
rpx
;
height
:
96
rpx
;
background-color
:
#d3a458
;
border-radius
:
50%
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
z-index
:
100
;
}
.service-icon
{
width
:
60
rpx
;
height
:
60
rpx
;
}
.exchange-btn
{
width
:
100%
;
height
:
90
rpx
;
...
...
@@ -1605,28 +1689,39 @@ page {
.quantity-selector
{
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
gap
:
0
;
border
:
2
rpx
solid
#A8A8A8
;
border-radius
:
8
rpx
;
padding
:
0
;
width
:
fit-content
;
position
:
relative
;
width
:
204
rpx
;
height
:
58
rpx
;
margin-right
:
auto
;
}
.quantity-bg
{
position
:
absolute
;
width
:
204
rpx
;
height
:
58
rpx
;
z-index
:
1
;
}
.quantity-btn
{
width
:
60
rpx
;
height
:
60
rpx
;
border-right
:
1
rpx
solid
#A8A8A8
;
background-color
:
#fff
;
color
:
#A8A8A8
;
font-
size
:
32
rpx
;
/* background-color: #F5F5F5; */
color
:
#333
;
font-size
:
40
rpx
;
font-
weight
:
bold
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
z-index
:
2
;
border-right
:
none
;
}
.quantity-btn
:last-child
{
border-right
:
none
;
border-left
:
1
rpx
solid
#A8A8A8
;
/*
border-right: none;
border-left: 1rpx solid #A8A8A8;
*/
}
.quantity-btn
:disabled
{
...
...
@@ -1635,12 +1730,13 @@ page {
}
.quantity-value
{
margin
:
0
30
rpx
;
font-size
:
32
rpx
;
color
:
#333
;
font-weight
:
500
;
min-width
:
80
rpx
;
min-width
:
40
rpx
;
text-align
:
center
;
padding
:
0
20
rpx
;
z-index
:
2
;
padding
:
0
;
}
/* 秒杀商品数量显示 */
...
...
@@ -1721,13 +1817,12 @@ page {
align-items
:
center
;
justify-content
:
center
;
margin
:
40
rpx
auto
0
;
background-color
:
#B0B0B0
;
border-radius
:
50%
;
}
.modal-close-
ico
n
{
font-size
:
40
rpx
;
color
:
#fff
;
.modal-close-
bt
n
{
width
:
56
rpx
;
height
:
56
rpx
;
}
.modal-title
{
...
...
@@ -1748,30 +1843,25 @@ page {
.modal-buttons
{
display
:
flex
;
gap
:
20
rpx
;
margin-top
:
25
rpx
;
justify-content
:
space-between
;
/* gap: 30rpx; */
}
.modal-btn
{
flex
:
1
;
height
:
80
rpx
;
border-radius
:
40
rpx
;
font-size
:
28
rpx
;
border
:
none
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
height
:
78
rpx
;
}
.modal-btn
image
{
width
:
220
rpx
!important
;
height
:
78
rpx
!important
;
}
.cancel-btn
{
background-color
:
#fff
;
color
:
#D3A458
;
border
:
2
rpx
solid
#D3A458
;
/* margin-right: 20rpx; */
}
.confirm-btn
{
background-color
:
#D3A458
;
color
:
#fff
;
/* margin-left: 20rpx; */
}
.modal-disclaimer
{
...
...
v3/more/index.vue
View file @
c755b612
...
...
@@ -22,7 +22,7 @@
</view>
<text
class=
"menu-text"
>
异业合作
</text>
</view>
<
text
class=
"arrow"
>
›
</text
>
<
image
class=
"arrow"
:src=
"$baseUrl + 'homepage/Q3Res/rightArrowBtn.png'"
mode=
"aspectFit"
/
>
</view>
<view
class=
"menu-item"
@
tap=
"handleItemTap('feedback')"
>
...
...
@@ -33,7 +33,7 @@
</view>
<text
class=
"menu-text"
>
意见反馈
</text>
</view>
<
text
class=
"arrow"
>
›
</text
>
<
image
class=
"arrow"
:src=
"$baseUrl + 'homepage/Q3Res/rightArrowBtn.png'"
mode=
"aspectFit"
/
>
</view>
<view
class=
"menu-item"
@
tap=
"handleItemTap('userPolicy')"
>
...
...
@@ -44,7 +44,7 @@
</view>
<text
class=
"menu-text"
>
用户政策
</text>
</view>
<
text
class=
"arrow"
>
›
</text
>
<
image
class=
"arrow"
:src=
"$baseUrl + 'homepage/Q3Res/rightArrowBtn.png'"
mode=
"aspectFit"
/
>
</view>
<view
class=
"menu-item"
@
tap=
"handleItemTap('privacyPolicy')"
>
...
...
@@ -55,7 +55,7 @@
</view>
<text
class=
"menu-text"
>
隐私协议
</text>
</view>
<
text
class=
"arrow"
>
›
</text
>
<
image
class=
"arrow"
:src=
"$baseUrl + 'homepage/Q3Res/rightArrowBtn.png'"
mode=
"aspectFit"
/
>
</view>
<view
class=
"menu-item cancel-account"
@
tap=
"handleItemTap('cancelAccount')"
>
...
...
@@ -68,7 +68,7 @@
</view>
<view
class=
"cancel-text-container"
>
<text
class=
"cancel-text"
>
注销后无法恢复
</text>
<
text
class=
"arrow"
>
›
</text
>
<
image
class=
"arrow"
:src=
"$baseUrl + 'homepage/Q3Res/rightArrowBtn.png'"
mode=
"aspectFit"
/
>
</view>
</view>
</view>
...
...
@@ -219,8 +219,8 @@ export default {
}
.arrow
{
font-size
:
40
rpx
;
color
:
#C8C8C8
;
width
:
14
rpx
;
height
:
23
rpx
;
}
/* 注销账号特殊样式 */
...
...
@@ -232,6 +232,6 @@ export default {
.cancel-text
{
font-size
:
26
rpx
;
color
:
#999999
;
margin-right
:
1
0
rpx
;
margin-right
:
3
0
rpx
;
}
</
style
>
v3/orderDetail/orderDetail.vue
View file @
c755b612
...
...
@@ -2,6 +2,8 @@
<view
class=
"container"
>
<!-- 内容区域 -->
<view
class=
"content"
>
<!-- 顶部背景渐变 -->
<view
class=
"top-gradient-bg"
></view>
<!-- 订单状态 -->
<view
class=
"status-section"
:class=
"statusClass"
>
<image
class=
"status-icon"
:src=
"getStatusIcon()"
mode=
"aspectFit"
></image>
...
...
@@ -56,11 +58,21 @@
<view
v-if=
"orderData.virtualType === 'card' && orderData.coupon && orderData.coupon.cards && orderData.coupon.cards.length > 0 && orderData.coupon.cards[0].code"
class=
"coupon-code-item"
>
<text
class=
"coupon-label"
>
券码
</text>
<!-- 当只有code没有pwd时显示券码,否则显示卡号 -->
<text
class=
"coupon-label"
>
{{
orderData
.
coupon
.
cards
[
0
].
pwd
?
'卡号'
:
'券码'
}}
</text>
<view
class=
"coupon-code-content"
>
<text
class=
"coupon-code"
>
{{
orderData
.
coupon
.
cards
[
0
].
code
}}
</text>
<text
class=
"copy-btn"
@
click=
"copyCouponCode(orderData.coupon.cards[0].code)"
>
复制
</text>
</view>
<!-- 卡密展示 - 如果存在pwd字段,换行显示 -->
<view
v-if=
"orderData.coupon.cards[0].pwd"
class=
"pwd-section"
>
<text
class=
"coupon-label"
>
卡密
</text>
<view
class=
"coupon-code-content"
>
<text
class=
"coupon-code"
>
{{
orderData
.
coupon
.
cards
[
0
].
pwd
}}
</text>
<text
class=
"copy-btn"
@
click=
"copyCouponCode(orderData.coupon.cards[0].pwd)"
>
复制
</text>
</view>
</view>
</view>
<!-- 过期时间 -->
...
...
@@ -149,9 +161,11 @@
<!-- 操作按钮 - 实物订单退货按钮在右下角 -->
<view
v-if=
"showActionButton"
class=
"action-container"
>
<button
class=
"action-btn"
:class=
"{
<view
v-if=
"orderData.productType === 'virtual' && orderData.virtualType === 'coupon'"
class=
"action-btn btn-use"
@
click=
"handleAction"
>
<image
:src=
"$baseUrl + 'homepage/Q3Res/orderDetailToUseBtn.png'"
mode=
"aspectFill"
></image>
</view>
<button
v-else
class=
"action-btn"
:class=
"{
'btn-refund': orderData.productType === 'physical',
'btn-use': orderData.productType === 'virtual',
'corner-btn': orderData.productType === 'physical'
}"
@
click=
"handleAction"
>
{{ actionButtonText }}
</button>
</view>
...
...
@@ -172,14 +186,18 @@
<view
class=
"modal-title"
>
确认退货
</view>
<view
class=
"modal-message"
>
确定要申请退货吗?
</view>
<view
class=
"modal-buttons"
>
<button
class=
"modal-btn cancel-btn"
@
click=
"closeRefundModal"
>
取消
</button>
<button
class=
"modal-btn confirm-btn"
@
click=
"confirmRefund"
>
确定
</button>
<view
class=
"modal-btn cancel-btn"
@
click=
"closeRefundModal"
>
<image
:src=
"$baseUrl + 'homepage/Q3Res/buyCancelBtn.png'"
mode=
"aspectFill"
></image>
</view>
<view
class=
"modal-btn confirm-btn"
@
click=
"confirmRefund"
>
<image
:src=
"$baseUrl + 'homepage/Q3Res/buyComfirmBtn.png'"
mode=
"aspectFill"
></image>
</view>
</view>
<
view
class=
"modal-disclaimer"
>
申请退货后将由客服进行审核处理
</view
>
<
!-- <view class="modal-disclaimer">申请退货后将由客服进行审核处理</view> --
>
</view>
<!-- 关闭按钮 -->
<view
class=
"modal-close-btn"
@
click=
"closeRefundModal"
>
<
text
class=
"modal-close-icon"
>
×
</text
>
<
image
:src=
"$baseUrl + 'homepage/Q3Res/commonCloseBtn1.png'"
mode=
"aspectFit"
></image
>
</view>
</view>
</template>
...
...
@@ -377,7 +395,7 @@ export default {
// 页面跳转
navigateToCoupon
:
()
=>
{
const
url
=
'subPackages/
xmhMainProcess/mine/index
'
;
const
url
=
'subPackages/
shopMainProcess/coupons/couponList
'
;
const
type
=
JumpType
.
MINI
;
const
extra
=
{
appId
:
'wx4205ec55b793245e'
,
//星妈优选小程序
...
...
@@ -749,6 +767,7 @@ export default {
min-height
:
100vh
;
background-color
:
#f5f5f5
;
box-sizing
:
border-box
;
overflow
:
hidden
;
}
/* 内容区域 */
...
...
@@ -757,12 +776,21 @@ export default {
box-sizing
:
border-box
;
}
/* 顶部背景渐变 */
.top-gradient-bg
{
position
:
absolute
;
top
:
0
;
left
:
0
;
width
:
100%
;
height
:
200
rpx
;
background
:
linear-gradient
(
180deg
,
#ECC990
0%
,
rgba
(
211
,
164
,
88
,
0
)
100%
);
}
/* 订单状态 */
.status-section
{
padding
:
40
rpx
2
0
rpx
;
padding
:
20
rpx
8
0
rpx
;
display
:
flex
;
align-items
:
center
;
background
:
linear-gradient
(
180deg
,
#ECC990
0%
,
rgba
(
211
,
164
,
88
,
0
)
100%
);
position
:
relative
;
margin
:
0
-20
rpx
;
width
:
calc
(
100%
+
40
rpx
);
...
...
@@ -807,6 +835,8 @@ export default {
/* 收货地址 */
.address-section
{
z-index
:
1
;
position
:
relative
;
background-color
:
#fff
;
padding
:
30
rpx
20
rpx
;
margin-bottom
:
20
rpx
;
...
...
@@ -1082,8 +1112,13 @@ export default {
padding
:
80
rpx
30
rpx
;
box-shadow
:
0
-2
rpx
10
rpx
rgba
(
0
,
0
,
0
,
0.1
);
z-index
:
100
;
/*
实物商品按钮使用flex布局,将
按钮推到右侧 */
/*
虚拟商品按钮居中显示,实物商品
按钮推到右侧 */
display
:
flex
;
justify-content
:
center
;
}
/* 实物商品按钮容器特殊样式 */
.action-container
:has
(
.btn-refund
)
{
justify-content
:
flex-end
;
}
...
...
@@ -1094,6 +1129,7 @@ export default {
border-radius
:
44
rpx
;
font-size
:
32
rpx
;
font-weight
:
bold
;
text-align
:
center
;
}
/* 实物商品申请退货按钮样式 - 右下角 */
...
...
@@ -1113,20 +1149,38 @@ export default {
z-index
:
101
;
}
/* 去使用图片按钮样式 */
.action-btn.btn-use
{
background-color
:
#d3a458
;
color
:
#fff
;
background-color
:
transparent
;
/* 虚拟商品按钮保持在容器中 */
position
:
static
;
box-shadow
:
none
;
/* 确保图片充满按钮 */
overflow
:
hidden
;
/* 调整按钮尺寸为484*90 */
width
:
484
rpx
;
height
:
90
rpx
;
border-radius
:
45
rpx
;
}
/* 去使用按钮内的图片样式 */
.action-btn.btn-use
image
{
width
:
100%
;
height
:
100%
;
border-radius
:
45
rpx
;
}
/* 券码和过期时间样式 - 现在是模块1的一部分 */
.coupon-section
{
/* 已迁移到module-card-code */
margin-top
:
30
rpx
;
padding-top
:
30
rpx
;
border-top
:
1
rpx
solid
#f0f0f0
;
}
.coupon-code-item
{
margin-bottom
:
20
rpx
;
}
.coupon-code-item
,
.expire-time-item
{
display
:
flex
;
align-items
:
center
;
...
...
@@ -1134,6 +1188,11 @@ export default {
margin-bottom
:
20
rpx
;
}
/* 卡号和卡密之间的间距 */
.pwd-section
{
margin-top
:
20
rpx
;
}
.coupon-label
{
font-size
:
28
rpx
;
color
:
#666
;
...
...
@@ -1185,18 +1244,15 @@ export default {
.module-payment
,
.module-order-info
,
.module-logistics
{
z-index
:
1
;
position
:
relative
;
background-color
:
#fff
;
padding
:
30
rpx
20
rpx
;
margin-bottom
:
20
rpx
;
border-radius
:
20
rpx
;
}
/* 券码和过期时间样式 */
.coupon-section
{
margin-top
:
30
rpx
;
padding-top
:
30
rpx
;
border-top
:
1
rpx
solid
#f0f0f0
;
}
/* 券码和过期时间样式 - 已在上方定义 */
/* 使用说明样式 - 现在是模块3 */
.usage-instructions
{
...
...
@@ -1228,8 +1284,8 @@ export default {
position
:
fixed
;
bottom
:
200
rpx
;
right
:
30
rpx
;
width
:
120
rpx
;
height
:
120
rpx
;
width
:
96
rpx
;
height
:
96
rpx
;
background-color
:
#d3a458
;
border-radius
:
50%
;
display
:
flex
;
...
...
@@ -1255,6 +1311,7 @@ export default {
align-items
:
center
;
justify-content
:
center
;
z-index
:
9999
;
flex-direction
:
column
;
}
.modal-content
{
...
...
@@ -1289,23 +1346,20 @@ export default {
}
.modal-btn
{
flex
:
1
;
height
:
88
rpx
;
line-height
:
88
rpx
;
text-align
:
center
;
font-size
:
32
rpx
;
border-radius
:
44
rpx
;
border
:
none
;
height
:
78
rpx
;
}
.modal-btn
image
{
width
:
220
rpx
!important
;
height
:
78
rpx
!important
;
}
.cancel-btn
{
background-color
:
#f5f5f5
;
color
:
#666
;
margin-right
:
20
rpx
;
}
.confirm-btn
{
background-color
:
#d3a458
;
color
:
#fff
;
margin-left
:
20
rpx
;
}
.modal-disclaimer
{
...
...
@@ -1316,18 +1370,17 @@ export default {
}
.modal-close-btn
{
position
:
absolute
;
top
:
-80
rpx
;
right
:
20
rpx
;
width
:
60
rpx
;
height
:
60
rpx
;
width
:
56
rpx
;
height
:
56
rpx
;
border-radius
:
50%
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
margin-top
:
80
rpx
;
}
.modal-close-
icon
{
font-size
:
60
rpx
;
color
:
#fff
;
.modal-close-
btn
{
width
:
56
rpx
;
height
:
56
rpx
;
}
</
style
>
v3/payResultPage/payResultPage.vue
View file @
c755b612
...
...
@@ -6,7 +6,9 @@
<view
class=
"result-section"
>
<!-- 状态图标 -->
<view
class=
"result-icon"
:class=
"resultIconClass"
>
<text
class=
"icon-text"
>
{{
resultIcon
}}
</text>
<image
:src=
"$baseUrl + (isSuccess ? 'homepage/Q3Res/payResultSucIcon.png' : 'homepage/Q3Res/payResultFailIcon.png')"
mode=
"aspectFit"
class=
"result-icon-img"
></image>
</view>
<!-- 状态文字 -->
...
...
@@ -15,12 +17,12 @@
<!-- 成功状态显示积分信息 -->
<view
v-if=
"isSuccess"
class=
"points-info"
>
<text
class=
"points-value"
>
{{
pointsValue
}}
</text>
<
!--
<text
class=
"points-unit"
>
{{
resultData
.
creditsTypeName
||
'积分'
}}
</text>
--
>
<
text
class=
"points-unit"
>
{{
resultData
.
creditsTypeName
||
'积分'
}}
</text
>
</view>
<!-- 失败状态显示失败原因 -->
<view
v-if=
"!isSuccess"
class=
"failure-info"
>
<text
class=
"failure-reason"
>
{{
failureReason
}}
</text>
<text
class=
"failure-reason"
>
失败原因:
{{
failureReason
}}
</text>
</view>
<!-- 支付方式信息 - 仅成功状态显示 -->
...
...
@@ -34,7 +36,11 @@
<!-- 底部操作按钮 -->
<view
class=
"action-section"
>
<button
class=
"action-btn"
@
click=
"handleAction"
>
{{
actionButtonText
}}
</button>
<view
class=
"action-btn"
@
click=
"handleAction"
>
<image
:src=
"$baseUrl + (isSuccess ? 'homepage/Q3Res/payResultLookOrderBtn.png' : 'homepage/Q3Res/payResultBackHome.png')"
mode=
"aspectFit"
class=
"action-btn-img"
></image>
</view>
</view>
<!-- 活动banner -->
...
...
@@ -224,7 +230,7 @@ export default {
// 处理活动banner点击
handleVipActiveClick
(
index
,
item
)
{
console
.
log
(
'活动banner点击:'
,
item
);
// 只保留跳转功能,从item.link获取跳转参数
const
url
=
item
?.
link
?.
url
||
item
?.
linkUrl
||
''
;
const
type
=
item
?.
link
?.
type
||
(
item
?.
linkType
===
'h5'
?
JumpType
.
H5
:
JumpType
.
PAGE
);
...
...
@@ -246,6 +252,7 @@ export default {
min-height
:
100vh
;
background-color
:
#f5f5f5
;
box-sizing
:
border-box
;
background-color
:
#fff
;
}
...
...
@@ -253,16 +260,18 @@ export default {
.content
{
padding
:
0
;
box-sizing
:
border-box
;
background-color
:
#fff
;
}
/* 支付结果状态 */
.result-section
{
background-color
:
#fff
;
padding
:
80
rpx
30
rpx
4
0
rpx
;
padding
:
60
rpx
30
rpx
3
0
rpx
;
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
text-align
:
center
;
margin-bottom
:
20
rpx
;
}
.result-icon
{
...
...
@@ -272,34 +281,42 @@ export default {
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
margin-bottom
:
3
0
rpx
;
margin-bottom
:
2
0
rpx
;
}
.result-icon.icon-success
{
background-color
:
#d3a458
;
/* background-color: #d3a458; */
}
.result-icon.icon-failure
{
background-color
:
#d3a458
;
/* background-color: #d3a458; */
}
.icon-text
{
font-size
:
60
rpx
;
color
:
#fff
;
font-weight
:
bold
;
.result-icon-img
{
width
:
80
rpx
;
height
:
80
rpx
;
}
.action-btn-img
{
width
:
100%
;
height
:
88
rpx
;
}
.result-text
{
font-size
:
36
rpx
;
font-weight
:
bold
;
color
:
#333
;
margin-bottom
:
20
rpx
;
margin-bottom
:
25
rpx
;
padding
:
10
rpx
30
rpx
;
border-radius
:
10
rpx
;
}
.points-info
{
display
:
flex
;
align-items
:
baseline
;
margin-bottom
:
30
rpx
;
margin-bottom
:
25
rpx
;
padding
:
10
rpx
30
rpx
;
border-radius
:
10
rpx
;
}
.points-value
{
...
...
@@ -315,7 +332,9 @@ export default {
}
.failure-info
{
margin-bottom
:
30
rpx
;
margin-bottom
:
60
rpx
;
padding
:
10
rpx
30
rpx
;
border-radius
:
10
rpx
;
}
.failure-reason
{
...
...
@@ -325,6 +344,9 @@ export default {
.payment-info
{
width
:
100%
;
padding
:
10
rpx
30
rpx
;
border-radius
:
10
rpx
;
margin-bottom
:
10
rpx
;
}
.payment-row
{
...
...
@@ -341,13 +363,14 @@ export default {
.payment-value
{
font-size
:
28
rpx
;
color
:
#
999
;
color
:
#
000
;
}
/* 操作按钮区域 */
.action-section
{
padding
:
4
0
rpx
30
rpx
;
padding
:
3
0
rpx
30
rpx
;
background-color
:
#fff
;
margin-bottom
:
20
rpx
;
}
.action-btn
{
...
...
@@ -357,8 +380,8 @@ export default {
font-size
:
32
rpx
;
font-weight
:
bold
;
background-color
:
#fff
;
color
:
#
333
;
border
:
1
rpx
solid
#ddd
;
color
:
#
000000
;
/* border: 2rpx solid #000000; */
}
/* 活动banner区域 */
...
...
@@ -383,8 +406,8 @@ export default {
position
:
fixed
;
bottom
:
200
rpx
;
right
:
30
rpx
;
width
:
120
rpx
;
height
:
120
rpx
;
width
:
96
rpx
;
height
:
96
rpx
;
background-color
:
#d3a458
;
border-radius
:
50%
;
display
:
flex
;
...
...
v3/settlementCenter/settlementCenter.vue
View file @
c755b612
...
...
@@ -16,7 +16,9 @@
</view>
</view>
</view>
<view
class=
"arrow-icon"
>
{{
">"
}}
</view>
<view
class=
"arrow-icon"
>
<image
:src=
"$baseUrl + 'homepage/Q3Res/rightArrowBtn.png'"
mode=
"aspectFill"
></image>
</view>
</view>
<!-- 订单信息模块 -->
...
...
@@ -91,14 +93,18 @@
<view
class=
"modal-message"
>
本次兑换需要消耗
{{
goodsInfo
.
points
*
goodsInfo
.
quantity
}}{{
goodsInfo
.
creditsTypeName
||
'积分'
}}
</view>
<view
class=
"modal-buttons"
>
<button
class=
"modal-btn cancel-btn"
@
click=
"closeModal"
>
取消
</button>
<button
class=
"modal-btn confirm-btn"
@
click=
"confirmExchange"
>
确定
</button>
<view
class=
"modal-btn cancel-btn"
@
click=
"closeModal"
>
<image
:src=
"$baseUrl + 'homepage/Q3Res/buyCancelBtn.png'"
mode=
"aspectFill"
></image>
</view>
<view
class=
"modal-btn confirm-btn"
@
click=
"confirmExchange"
>
<image
:src=
"$baseUrl + 'homepage/Q3Res/buyComfirmBtn.png'"
mode=
"aspectFill"
></image>
</view>
</view>
<view
class=
"modal-disclaimer"
>
{{
isPhysicalGoods
()
?
'已发货商品非质量问题不退不换'
:
'兑换完成后不退不换'
}}
</view>
</view>
<!-- 关闭按钮 -->
<view
class=
"modal-close-btn"
@
click=
"closeModal"
>
<
text
class=
"modal-close-icon"
>
×
</text
>
<
image
:src=
"$baseUrl + 'homepage/Q3Res/commonCloseBtn1.png'"
mode=
"aspectFit"
></image
>
</view>
</view>
<!-- 地址添加确认弹窗 -->
...
...
@@ -107,13 +113,36 @@
<view
class=
"modal-title"
>
提示
</view>
<view
class=
"modal-message"
>
您还没有收货地址,是否添加地址?
</view>
<view
class=
"modal-buttons"
>
<button
class=
"modal-btn cancel-btn"
@
click=
"handleAddressCancel"
>
取消
</button>
<button
class=
"modal-btn confirm-btn"
@
click=
"confirmAddAddress"
>
添加地址
</button>
<view
class=
"modal-btn cancel-btn"
@
click=
"handleAddressCancel"
>
<image
:src=
"$baseUrl + 'homepage/Q3Res/buyCancelBtn.png'"
mode=
"aspectFill"
></image>
</view>
<view
class=
"modal-btn confirm-btn"
@
click=
"confirmAddAddress"
>
<image
:src=
"$baseUrl + 'homepage/Q3Res/buyComfirmBtn.png'"
mode=
"aspectFill"
></image>
</view>
</view>
</view>
<!-- 关闭按钮 -->
<view
class=
"modal-close-btn"
@
click=
"closeAddressModal"
>
<text
class=
"modal-close-icon"
>
×
</text>
<image
:src=
"$baseUrl + 'homepage/Q3Res/commonCloseBtn1.png'"
mode=
"aspectFit"
></image>
</view>
</view>
<!-- 选择地址提示弹窗 -->
<view
class=
"modal-overlay"
v-if=
"showSelectAddressModal"
@
click=
"closeSelectAddressModal"
>
<view
class=
"modal-content"
@
click
.
stop
>
<view
class=
"modal-title"
>
提示
</view>
<view
class=
"modal-message"
>
请先选择收货地址
</view>
<view
class=
"modal-buttons"
>
<view
class=
"modal-btn cancel-btn"
@
click=
"closeSelectAddressModal"
>
<image
:src=
"$baseUrl + 'homepage/Q3Res/buyCancelBtn.png'"
mode=
"aspectFill"
></image>
</view>
<view
class=
"modal-btn confirm-btn"
@
click=
"handleGoSelectAddress"
>
<image
:src=
"$baseUrl + 'homepage/Q3Res/buyComfirmBtn.png'"
mode=
"aspectFill"
></image>
</view>
</view>
</view>
<!-- 关闭按钮 -->
<view
class=
"modal-close-btn"
@
click=
"closeSelectAddressModal"
>
<image
:src=
"$baseUrl + 'homepage/Q3Res/commonCloseBtn1.png'"
mode=
"aspectFit"
></image>
</view>
</view>
</
template
>
...
...
@@ -126,34 +155,35 @@ import { jump, JumpType } from '../../utils';
export
default
{
data
()
{
return
{
orderNotes
:
''
,
// 订单来源子渠道
orderSubSource
:
''
,
// 订单参数
orderParams
:
{},
priceData
:
null
,
// 地址信息
selectedAddress
:
null
,
hasAddress
:
false
,
fullAddress
:
''
,
recipientName
:
''
,
recipientPhone
:
''
,
// 商品信息
goodsInfo
:
{
name
:
''
,
spec
:
''
,
points
:
0
,
quantity
:
1
},
// 商店信息
homeStore
:
null
,
// 弹窗状态
showConfirmModal
:
false
,
showAddressModal
:
false
,
// 用于防连点
isSubmitting
:
false
}
return
{
orderNotes
:
''
,
// 订单来源子渠道
orderSubSource
:
''
,
// 订单参数
orderParams
:
{},
priceData
:
null
,
// 地址信息
selectedAddress
:
null
,
hasAddress
:
false
,
fullAddress
:
''
,
recipientName
:
''
,
recipientPhone
:
''
,
// 商品信息
goodsInfo
:
{
name
:
''
,
spec
:
''
,
points
:
0
,
quantity
:
1
},
// 商店信息
homeStore
:
null
,
// 弹窗状态
showConfirmModal
:
false
,
showAddressModal
:
false
,
showSelectAddressModal
:
false
,
// 用于防连点
isSubmitting
:
false
}
},
onLoad
(
options
)
{
console
.
log
(
'结算页面参数:'
,
options
);
...
...
@@ -204,8 +234,11 @@ export default {
}
}
// 页面显示时重新检查地址(从地址编辑页面返回时或无选中地址时)
this
.
checkAddress
();
// 只有在没有选中地址的情况下才重新检查地址
// 这样当用户从地址选择页返回但没有选择新地址时,会保留之前已有的地址
if
(
!
this
.
selectedAddress
||
!
this
.
hasAddress
)
{
this
.
checkAddress
();
}
// 如果已经有地址了,关闭地址弹窗
if
(
this
.
hasAddress
&&
this
.
showAddressModal
)
{
...
...
@@ -312,6 +345,17 @@ export default {
closeAddressModal
()
{
this
.
showAddressModal
=
false
;
},
// 关闭选择地址提示弹窗
closeSelectAddressModal
()
{
this
.
showSelectAddressModal
=
false
;
},
// 处理选择地址
handleGoSelectAddress
()
{
this
.
closeSelectAddressModal
();
this
.
selectAddress
();
},
// 处理地址弹窗取消
handleAddressCancel
()
{
...
...
@@ -360,17 +404,8 @@ export default {
try
{
// 检查是否有收货地址
if
(
!
this
.
hasAddress
||
!
this
.
selectedAddress
)
{
uni
.
showModal
({
title
:
'提示'
,
content
:
'请先选择收货地址'
,
confirmText
:
'去选择'
,
cancelText
:
'取消'
,
success
:
(
res
)
=>
{
if
(
res
.
confirm
)
{
this
.
selectAddress
();
}
}
});
// 显示选择地址提示弹窗
this
.
showSelectAddressModal
=
true
;
return
;
}
...
...
@@ -467,7 +502,7 @@ export default {
orderId
:
orderId
,
// 积分信息
pointsValue
:
`
${
this
.
goodsInfo
.
points
*
this
.
goodsInfo
.
quantity
}
${
this
.
goodsInfo
.
creditsTypeName
}
`
,
pointsValue
:
`
${
this
.
goodsInfo
.
points
*
this
.
goodsInfo
.
quantity
}
`
,
creditsTypeName
:
this
.
goodsInfo
.
creditsTypeName
,
// 商品信息
...
...
@@ -539,6 +574,7 @@ export default {
align-items
:
center
;
justify-content
:
center
;
z-index
:
9999
;
flex-direction
:
column
;
}
.modal-content
{
...
...
@@ -570,27 +606,27 @@ export default {
display
:
flex
;
gap
:
20
rpx
;
margin-bottom
:
30
rpx
;
justify-content
:
center
;
}
.modal-btn
{
flex
:
1
;
height
:
88
rpx
;
border-radius
:
44
rpx
;
font-size
:
30
rpx
;
line-height
:
88
rpx
;
padding
:
0
;
width
:
220
rpx
!important
;
height
:
78
rpx
!important
;
position
:
relative
;
}
.modal-btn
image
{
width
:
220
rpx
!important
;
height
:
78
rpx
!important
;
}
.cancel-btn
{
background-color
:
#f5f5f5
;
color
:
#666
;
border
:
none
;
}
.confirm-btn
{
background-color
:
#e6a23c
;
color
:
#fff
;
border
:
none
;
margin-left
:
20
rpx
;
}
.modal-disclaimer
{
...
...
@@ -601,22 +637,16 @@ export default {
}
.modal-close-btn
{
position
:
absolute
;
bottom
:
-100
rpx
;
width
:
80
rpx
;
height
:
80
rpx
;
background-color
:
#fff
;
width
:
56
rpx
;
height
:
56
rpx
;
border-radius
:
50%
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
box-shadow
:
0
2
rpx
10
rpx
rgba
(
0
,
0
,
0
,
0.1
)
;
margin-top
:
80
rpx
;
}
.modal-close-icon
{
font-size
:
50
rpx
;
color
:
#999
;
}
.container
{
width
:
100%
;
...
...
@@ -657,6 +687,7 @@ export default {
.address-info
{
flex
:
1
;
margin-right
:
20
rpx
;
}
.address-text
{
...
...
@@ -685,8 +716,13 @@ export default {
}
.arrow-icon
{
font-size
:
32
rpx
;
color
:
#999
;
width
:
20
rpx
;
height
:
32
rpx
;
}
.arrow-icon
image
{
width
:
100%
;
height
:
100%
;
}
/* 订单信息模块 */
...
...
@@ -770,7 +806,7 @@ export default {
.product-price
{
font-size
:
32
rpx
;
color
:
#
e6a23c
;
color
:
#
D3A458
;
font-weight
:
bold
;
display
:
inline-block
;
margin-right
:
20
rpx
;
...
...
@@ -862,29 +898,29 @@ export default {
.summary-price
{
font-size
:
28
rpx
;
color
:
#
e6a23c
;
color
:
#
D3A458
;
font-weight
:
bold
;
}
/* 客服按钮 */
.service-btn
{
position
:
fixed
;
bottom
:
2
0
0
rpx
;
bottom
:
2
2
0
rpx
;
right
:
30
rpx
;
width
:
120
rpx
;
height
:
120
rpx
;
background-color
:
#
e6a23c
;
width
:
96
rpx
;
height
:
96
rpx
;
background-color
:
#
D3A458
;
border-radius
:
50%
;
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
justify-content
:
center
;
z-index
:
100
;
box-shadow
:
0
2
rpx
10
rpx
rgba
(
0
,
0
,
0
,
0.2
);
}
.service-icon
{
width
:
100%
;
height
:
100%
;
width
:
60
rpx
;
height
:
60
rpx
;
}
/* 底部提交栏 */
...
...
@@ -894,42 +930,46 @@ export default {
left
:
0
;
right
:
0
;
background-color
:
#fff
;
padding
:
20
rpx
30
rpx
4
0
rpx
;
padding
:
40
rpx
20
rpx
60
rpx
2
0
rpx
;
box-sizing
:
border-box
;
box-shadow
:
0
-2
rpx
10
rpx
rgba
(
0
,
0
,
0
,
0.1
);
display
:
flex
;
align-items
:
center
;
justify-content
:
flex-end
;
justify-content
:
space-between
;
width
:
100%
;
}
.total-info
{
width
:
60%
;
display
:
flex
;
flex-direction
:
column
;
flex-direction
:
row
;
margin-right
:
20
rpx
;
align-items
:
center
;
}
.total-label
{
font-size
:
24
rpx
;
color
:
#666
;
margin-bottom
:
5
rpx
;
}
.total-price
{
font-size
:
32
rpx
;
color
:
#
e6a23c
;
color
:
#
D3A458
;
font-weight
:
bold
;
margin-left
:
20
rpx
;
display
:
block
;
}
.submit-btn
{
width
:
2
00
rpx
;
height
:
80
rpx
;
background-color
:
#
e6a23c
;
width
:
2
48
rpx
;
height
:
74
rpx
;
background-color
:
#
D3A458
;
color
:
#fff
;
font-size
:
28
rpx
;
border-radius
:
40
rpx
;
border-radius
:
37
rpx
;
border
:
none
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
line-height
:
74
rpx
;
padding
:
0
;
}
.submit-btn
:active
{
...
...
views/Brand.vue
View file @
c755b612
...
...
@@ -547,6 +547,8 @@ export default {
},
jumpLink
(
_link
,
videoUrl
,
evt
)
{
console
.
log
(
'jumpLink1111111:'
,
_link
,
videoUrl
);
if
(
evt
)
{
md
.
sensorLog
(
evt
);
if
(
evt
.
currentTarget
.
dataset
.
comlog
)
{
...
...
views/Home.vue
View file @
c755b612
...
...
@@ -467,7 +467,7 @@ export default {
currentQuestion
:
''
,
correctAnswer
:
''
,
answerAnalysis
:
''
,
// 悬浮图片相关配置
floatIcon
:
{
// imageUrl: 'homepage/btnclose.png',
...
...
@@ -1036,6 +1036,15 @@ export default {
// 处理能不能吃答题
async
handleCanEatAnswer
(
answerIndex
)
{
// 添加登录检查
if
(
!
this
.
homeStore
.
isLogin
)
{
jump
({
type
:
JumpType
.
INNER
,
url
:
"/pages/activity/register"
,
});
return
;
}
if
(
!
this
.
canEatData
||
!
this
.
canEatData
.
id
)
{
uni
.
showToast
({
title
:
'数据异常,请稍后重试'
,
...
...
@@ -1100,21 +1109,7 @@ export default {
// 显示奖励弹窗
showRewardPopup
(
rewardData
)
{
// 设置奖励信息
let
rewardText
=
''
;
if
(
rewardData
.
credits
)
{
// 处理字符串格式的积分
const
credits
=
parseInt
(
rewardData
.
credits
)
||
0
;
if
(
credits
>
0
)
{
rewardText
+=
`
${
credits
}
`
;
}
}
if
(
rewardData
.
prizeName
)
{
if
(
rewardText
)
{
rewardText
+=
`
${
rewardData
.
prizeName
}
`
;
}
else
{
rewardText
=
rewardData
.
prizeName
;
}
}
let
rewardText
=
rewardData
.
prizeName
;
// 根据奖品类型设置图片
let
imageUrl
=
''
;
...
...
views/Integral.less
View file @
c755b612
...
...
@@ -730,7 +730,7 @@
width: 384rpx;
height: 86rpx;
background: rgba(255, 255, 255, 0);
border:
1
px solid #e6a23c;
border:
2
px solid #e6a23c;
border-radius: 60rpx;
display: flex;
align-items: center;
...
...
@@ -748,6 +748,51 @@
&:active {
transform: scale(0.95);
}
// itemIndex = 0
&.item-0 {
border-color: #503404;
.task_button_text.item-0 {
color: #503404;
}
}
// itemIndex = 1
&.item-1 {
border-color: #284A6C;
.task_button_text.item-1 {
color: #284A6C;
}
}
// itemIndex = 2
&.item-2 {
border-color: #322D6F;
.task_button_text.item-2 {
color: #322D6F;
}
}
// itemIndex = 3
&.item-3 {
border-color: #513403;
.task_button_text.item-3 {
color: #513403;
}
}
// itemIndex = 4
&.item-4 {
border-color: #F7D1A0;
.task_button_text.item-4 {
color: #F7D1A0;
}
}
}
}
...
...
views/Integral.vue
View file @
c755b612
...
...
@@ -258,7 +258,7 @@
mode="
aspectFit
" />
</view>
<text class="
day_label
" :class="`item-${itemIndex
}
`">{{ (day < todaynum && !signinStatus[day - 1])
? '未签到' :
`第${day
}
天`
}}
</text>
? '未签到' :
getWeekdayLabel(day)
}}
</text>
</view>
</view>
...
...
@@ -267,8 +267,8 @@
<text class="
signin_button_text
">立即签到</text>
</view>
<!-- 已签到状态 -->
<view v-else class="
task_button
" @click="
handleTaskButtonClick
">
<text class="
task_button_text
">赚更多积分</text>
<view v-else class="
task_button
"
:class="`item-${itemIndex
}
`"
@click="
handleTaskButtonClick
">
<text class="
task_button_text
"
:class="`item-${itemIndex
}
`"
>赚更多积分</text>
</view>
</view>
<!-- 积分限时购 -->
...
...
@@ -381,14 +381,18 @@
<
view
class
=
"title-container1"
>
<
text
class
=
"title-text1"
>
{{
goodItem
?.
goodsName
}}
<
/text
>
<
/view
>
<
text
v
-
if
=
"Number(goodItem?.priceSale) && Number(goodItem?.credits)"
class
=
"num0"
>
低至
{{
<
text
class
=
"price-text"
><
text
class
=
"num"
>
{{
goodItem
?.
credits
}}
<
/text>积分</
text
>
<!--
<
text
v
-
if
=
"Number(goodItem?.priceSale) && Number(goodItem?.credits)"
class
=
"num0"
>
低至
{{
goodItem
?.
credits
}}
<
text
class
=
"price-text0"
>
积分
<
/text><tex
t
class
=
"price-text1"
>+<
/text><text class="price-text0">¥</
text
>
{{
goodItem
?.
priceSale
}}
<
/text
>
<
text
v
-
else
-
if
=
"Number(goodItem?.priceSale)"
class
=
"price-text"
><
text
class
=
"num"
>
¥
{{
goodItem
?.
priceSale
}}
<
/text></
text
>
<
text
v
-
else
-
if
=
"Number(goodItem?.credits)"
class
=
"price-text"
><
text
class
=
"num"
>
{{
goodItem
?.
credits
}}
<
/text>积分</
text
>
goodItem
?.
credits
}}
<
/text>积分</
text
>
-->
<
/view
>
<
/view
>
...
...
@@ -455,10 +459,10 @@
<
/view
>
<!--
查看更多容器
-->
<
view
class
=
"more-container"
v
-
if
=
"goodsDataArr?.length > 0"
@
click
=
"handleMoreClick"
>
<
!--
<
view
class
=
"more-container"
v
-
if
=
"goodsDataArr?.length > 0"
@
click
=
"handleMoreClick"
>
<
text
class
=
"more-text"
>
点击查看更多
<
/text
>
<
image
class
=
"more-arrow"
:
src
=
"$baseUrl + `integral/${tupianBanben
}
/integralArrow.png`"
mode
=
"aspectFit"
/>
<
/view
>
<
/view>
--
>
<!--
测试注册层按钮(开发调试用)
-->
<!--
<
view
class
=
"test-register-btn"
@
click
=
"showRegisterDialog"
v
-
if
=
"!islogin"
>
...
...
@@ -1635,6 +1639,12 @@ const getProgress = (index) => {
}
return
progress
;
}
// 将天数转换为星期标签
const
getWeekdayLabel
=
(
day
)
=>
{
const
weekdays
=
[
''
,
'周一'
,
'周二'
,
'周三'
,
'周四'
,
'周五'
,
'周六'
,
'周日'
];
return
weekdays
[
day
]
||
`第${day
}
天`
;
}
const
getColor
=
(
type
)
=>
{
let
colors
=
''
;
switch
(
type
)
{
...
...
@@ -1880,9 +1890,9 @@ onMounted(async () => {
}
);
await
userStore
.
loadMemberInfo
();
await
integralStore
.
getSigninAndTaskInfo
(
isdebug
.
value
);
await
integralStore
.
getSigninAndTaskInfo
();
await
integralStore
.
getPointsBenefitCoupon
(
isdebug
.
value
);
await
integralStore
.
getPointsBenefitCoupon
();
//初始化签掉数据
...
...
@@ -2708,12 +2718,12 @@ const handleSigninClick = async () => {
buttonName: "立即签到",
}
);
const data = await integralStore.checkIn(signinInfo.value.id,
isdebug.value
);
const data = await integralStore.checkIn(signinInfo.value.id, );
console.log('
datacheckIn
=
', data);
if (data.success) {
showSignedTips.value = true;
earnedPoints.value = data?.data?.credits;
await integralStore.getSigninAndTaskInfo(
isdebug.value
);
await integralStore.getSigninAndTaskInfo();
console.log('
5555555
');
initSignin();
}
else {
...
...
@@ -2792,7 +2802,7 @@ const handleExchangeClick = (benefit, index) => {
jump({
type: JumpType.INNER,
url: `/v3/goodDetail/goodDetail?gid=${benefit.appGoodsId
}
`
url: `/v3/goodDetail/goodDetail?gid=${benefit.appGoodsId
}
&orderSubSource=resource
`
}
);
// 如果有跳转链接,则跳转
// if (benefit.url) {
...
...
@@ -2908,7 +2918,7 @@ const handleRecordClick = () => {
// 分享配置
onShareAppMessage(() => {
return {
title:
'
积分分享
'
,
title:
integralStore.originInviteHome?.data?.invitationText
,
path: '
/
pages
/
invate
/
sharepage
' + '
?
inviteCode
=
' + integralStore.originInviteHome?.data?.invitationCode,
imageUrl: integralStore.originInviteHome?.data?.invitationImageUrl || '
https
:
//course.feihe.com/momclub-picture/integral/1023/invate_star_character1023.png'
}
;
...
...
views/My.vue
View file @
c755b612
...
...
@@ -103,7 +103,8 @@
</view>
<!-- 完成任务模块 -->
<view
class=
"task-module"
>
<view
class=
"task-module"
v-if=
"!cfgStatus.isRegister || (babyInfo?.allBabyBaseInfo && babyInfo.allBabyBaseInfo.length > 0)"
>
<image
class=
"task-guide-bg"
:src=
"$baseUrl + 'homepage/Q3Res/my_taskGuideBg.png'"
></image>
<image
class=
"task-do-btn"
:src=
"$baseUrl + 'homepage/Q3Res/my_taskDoBtn.png'"
@
tap=
"handleTaskClick"
></image>
</view>
...
...
@@ -145,7 +146,7 @@
}"
>
<image
class=
"menu-icon"
:src=
"$baseUrl + 'homepage/Q3Res/myIcon_myOrder.png'"
mode=
"aspectFit"
/>
<text
class=
"menu-title"
>
我的订单
</text>
<
text
class=
"menu-arrow"
>
〉
</text
>
<
image
class=
"menu-arrow"
:src=
"$baseUrl + 'homepage/Q3Res/rightArrowBtn.png'"
mode=
"aspectFit"
/
>
</view>
<view
class=
"menu-item"
@
click=
"navigateToWithLogin('/v3/addressList/addressList')"
:data-log=
"{
xcxClick: '我的页面点击',
...
...
@@ -154,7 +155,7 @@
}"
>
<image
class=
"menu-icon"
:src=
"$baseUrl + 'homepage/Q3Res/myIcon_address.png'"
mode=
"aspectFit"
/>
<text
class=
"menu-title"
>
收货地址管理
</text>
<
text
class=
"menu-arrow"
>
〉
</text
>
<
image
class=
"menu-arrow"
:src=
"$baseUrl + 'homepage/Q3Res/rightArrowBtn.png'"
mode=
"aspectFit"
/
>
</view>
<view
class=
"menu-item"
@
click=
"navigateToCouponWithLogin()"
:data-log=
"{
xcxClick: '我的页面点击',
...
...
@@ -163,7 +164,7 @@
}"
>
<image
class=
"menu-icon"
:src=
"$baseUrl + 'homepage/Q3Res/myIcon_myCupon.png'"
mode=
"aspectFit"
/>
<text
class=
"menu-title"
>
我的优惠券
</text>
<
text
class=
"menu-arrow"
>
〉
</text
>
<
image
class=
"menu-arrow"
:src=
"$baseUrl + 'homepage/Q3Res/rightArrowBtn.png'"
mode=
"aspectFit"
/
>
</view>
<view
class=
"menu-item"
@
click=
"navigateToWithLogin('/v3/more/index')"
:data-log=
"{
xcxClick: '我的页面点击',
...
...
@@ -172,12 +173,12 @@
}"
>
<image
class=
"menu-icon"
:src=
"$baseUrl + 'homepage/Q3Res/myIcon_more.png'"
mode=
"aspectFit"
/>
<text
class=
"menu-title"
>
更多
</text>
<
text
class=
"menu-arrow"
>
〉
</text
>
<
image
class=
"menu-arrow"
:src=
"$baseUrl + 'homepage/Q3Res/rightArrowBtn.png'"
mode=
"aspectFit"
/
>
</view>
</view>
<!-- 协议 -->
<view
class=
"protocol-container"
>
<
!-- <
view class="protocol-container">
<image :src="$baseUrl + 'my/protocol.png'" mode="aspectFit" />
<view class="hot-member" :data-log="{
xcxClick: '我的页面点击',
...
...
@@ -189,7 +190,7 @@
pageName: '我的页面',
buttonName: '隐私协议',
}" @click="handleHot" data-type="privacy"></view>
</view>
</view>
-->
<RegisterLayer
v-model=
"showRegisterLayer"
@
confirm=
"onRegisterConfirm"
/>
</view>
...
...
@@ -210,6 +211,7 @@
.menu-container
{
width
:
702
rpx
;
margin
:
0
auto
;
margin-bottom
:
100
rpx
;
}
.menu-item
{
...
...
@@ -226,7 +228,7 @@
.menu-icon
{
width
:
40
rpx
;
height
:
40
rpx
;
margin-right
:
20
rpx
;
margin-right
:
35
rpx
;
}
.menu-title
{
...
...
@@ -236,8 +238,8 @@
}
.menu-arrow
{
font-size
:
2
4
rpx
;
color
:
#999999
;
width
:
1
4
rpx
;
height
:
23
rpx
;
}
/* 任务模块样式 */
...
...
@@ -316,7 +318,7 @@ const handleTaskClick = async () => {
});
return
;
}
// 已登录,正常执行任务逻辑
await
integralStore
.
getSigninAndTaskInfo
(
false
);
globalStore
.
showTaskPop
(
integralStore
?.
signinAndTaskInfo
?.
data
?.
taskTodo
);
...
...
@@ -350,7 +352,7 @@ function clickRegisterShield() {
// 页面跳转
const
navigateToCoupon
=
()
=>
{
const
url
=
'subPackages/
xmhMainProcess/mine/index
'
;
const
url
=
'subPackages/
shopMainProcess/coupons/couponList
'
;
const
type
=
JumpType
.
MINI
;
const
extra
=
{
appId
:
'wx4205ec55b793245e'
,
//星妈优选小程序
...
...
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