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
e743c4af
Commit
e743c4af
authored
Oct 30, 2025
by
spc
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixed
parent
3add8d9d
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
393 additions
and
308 deletions
+393
-308
person.vue
pages/person/person.vue
+7
-15
addressEdit.vue
v3/addressList/addressEdit.vue
+50
-36
addressList.vue
v3/addressList/addressList.vue
+1
-1
goodDetail.vue
v3/goodDetail/goodDetail.vue
+18
-15
logoffConfirmPage.vue
v3/logoffConfirmPage/logoffConfirmPage.vue
+1
-4
orderDetail.vue
v3/orderDetail/orderDetail.vue
+227
-121
settlementCenter.vue
v3/settlementCenter/settlementCenter.vue
+69
-58
Home.vue
views/Home.vue
+6
-48
My.vue
views/My.vue
+14
-10
No files found.
pages/person/person.vue
View file @
e743c4af
...
...
@@ -280,15 +280,7 @@ const formItems = ref([
range
:
babyGenderMap
.
map
((
i
)
=>
i
.
label
),
mode
:
"custom"
,
},
{
label
:
"喂养方式"
,
name
:
"feedingType"
,
required
:
false
,
placeholder
:
"未选择"
,
type
:
"picker"
,
range
:
[
"奶粉喂养"
,
"母乳喂养"
,
"母乳奶粉混合喂养"
],
mode
:
"custom"
,
},
{
label
:
"喂养方式"
,
name
:
"feedingType"
,
required
:
true
,
placeholder
:
"未选择"
,
type
:
"picker"
,
range
:
[
"奶粉喂养"
,
"母乳喂养"
,
"母乳奶粉混合喂养"
],
mode
:
"custom"
,
},
{
label
:
"孕周"
,
name
:
"gestationalWeeks"
,
...
...
@@ -543,7 +535,7 @@ const checkAndUpdateTaskResult = async () => {
await
integralStore
.
queryTodoResultServer
();
console
.
log
(
'queryTodoResult:'
,
integralStore
.
queryTodoResult
);
if
(
integralStore
.
queryTodoResult
?.
success
&&
integralStore
.
queryTodoResult
?.
data
?.
length
>
0
)
{
if
(
integralStore
.
queryTodoResult
?.
success
&&
integralStore
.
queryTodoResult
?.
data
?.
length
>
0
)
{
globalStore
.
isShowTaskComplete
=
true
;
globalStore
.
taskCompletePoints
=
integralStore
.
queryTodoResult
.
data
[
0
]?.
actualCredits
;
globalStore
.
taskCompleteTitle
=
integralStore
.
queryTodoResult
.
data
[
0
]?.
taskName
;
...
...
v3/addressList/addressEdit.vue
View file @
e743c4af
...
...
@@ -4,7 +4,7 @@
<view
class=
"form-item"
>
<text
class=
"label"
>
收货人
</text>
<input
class=
"input"
v-model=
"formData.name"
placeholder=
"请输入收货人姓名"
maxlength=
"30"
@
input=
"limitNameInput"
/>
@
input=
"limitNameInput"
placeholder-style=
"color: #BFBFBF;"
/>
<view
class=
"wechat-import"
@
tap=
"importFromWechat"
>
<image
class=
"wechat-icon"
:src=
"$baseUrl + 'homepage/Q3Res/wechatIcon.png'"
mode=
"aspectFit"
>
</image>
...
...
@@ -14,14 +14,15 @@
<view
class=
"form-item"
>
<text
class=
"label"
>
手机号码
</text>
<input
class=
"input"
:class=
"
{ 'error': phoneError }" v-model="formData.phone" placeholder="请输入手机号码"
type="number" maxlength="11" @input="validatePhone" />
type="number" maxlength="11" @input="validatePhone"
placeholder-style="color: #BFBFBF;"
/>
<text
v-if=
"phoneError"
class=
"error-text"
>
请输入正确的手机号码
</text>
</view>
<view
class=
"form-item"
>
<text
class=
"label"
>
所在地区
</text>
<view
class=
"region-select"
@
tap=
"showRegionPicker"
>
<text
class=
"region-text"
>
{{
formData
.
region
||
'请选择省/市/区'
}}
</text>
<text
class=
"region-text"
:class=
"
{ 'placeholder-color': !formData.region }">
{{
formData
.
region
||
'请选择省/市/区'
}}
</text>
<image
class=
"arrow"
:src=
"$baseUrl + 'homepage/Q3Res/rightArrowBtn.png'"
mode=
"aspectFit"
/>
</view>
</view>
...
...
@@ -29,20 +30,20 @@
<view
class=
"form-item"
>
<text
class=
"label"
>
详细地址
</text>
<input
class=
"textarea"
v-model=
"formData.detailAddress"
placeholder=
"请填写详细地址"
maxlength=
"100"
@
input=
"limitDetailAddress"
/>
@
input=
"limitDetailAddress"
placeholder-style=
"color: #BFBFBF;"
/>
<text
class=
"char-count"
>
{{
formData
.
detailAddress
.
length
}}
/100
</text>
</view>
<view
class=
"form-item"
>
<text
class=
"label"
>
门牌号
</text>
<input
class=
"input"
v-model=
"formData.houseNumber"
placeholder=
"街道、门牌号等"
maxlength=
"50"
@
input=
"limitHouseNumber"
/>
@
input=
"limitHouseNumber"
placeholder-style=
"color: #BFBFBF;"
/>
<text
class=
"char-count"
>
{{
formData
.
houseNumber
.
length
}}
/50
</text>
</view>
<view
class=
"default-switch"
@
tap=
"toggleDefault"
>
<view
class=
"default-switch"
>
<text
class=
"switch-text"
>
设为默认地址
</text>
<view
class=
"switch"
:class=
"
{ 'active': formData.isDefault }">
<view
class=
"switch"
@
tap=
"toggleDefault"
:class=
"
{ 'active': formData.isDefault }">
<view
class=
"switch-dot"
:class=
"
{ 'active': formData.isDefault }">
</view>
</view>
</view>
...
...
@@ -356,13 +357,13 @@ export default {
isItemSelected
(
item
,
index
)
{
switch
(
this
.
currentLevel
)
{
case
0
:
return
this
.
selectedProvince
&&
this
.
selectedProvince
.
id
===
item
.
code
;
return
this
.
selectedProvince
&&
this
.
selectedProvince
.
code
===
item
.
code
;
case
1
:
return
this
.
selectedCity
&&
this
.
selectedCity
.
id
===
item
.
code
;
return
this
.
selectedCity
&&
this
.
selectedCity
.
code
===
item
.
code
;
case
2
:
return
this
.
selectedDistrict
&&
this
.
selectedDistrict
.
id
===
item
.
code
;
return
this
.
selectedDistrict
&&
this
.
selectedDistrict
.
code
===
item
.
code
;
case
3
:
return
this
.
selectedStreet
&&
this
.
selectedStreet
.
id
===
item
.
code
;
return
this
.
selectedStreet
&&
this
.
selectedStreet
.
code
===
item
.
code
;
default
:
return
false
;
}
...
...
@@ -398,9 +399,9 @@ export default {
this
.
districts
=
[];
this
.
streets
=
[];
// 更新picker值并加载城市
// 更新picker值并加载城市
,使用code而不是id
this
.
pickerValue
=
[
provinceIndex
,
0
,
0
,
0
];
await
this
.
loadCities
(
this
.
selectedProvince
.
id
);
await
this
.
loadCities
(
this
.
selectedProvince
.
code
);
}
// 城市变化
...
...
@@ -412,9 +413,9 @@ export default {
this
.
districts
=
[];
this
.
streets
=
[];
// 更新picker值并加载区县
// 更新picker值并加载区县
,使用code而不是id
this
.
pickerValue
=
[
provinceIndex
,
cityIndex
,
0
,
0
];
await
this
.
loadDistricts
(
this
.
selectedCity
.
id
);
await
this
.
loadDistricts
(
this
.
selectedCity
.
code
);
}
// 区县变化
...
...
@@ -424,9 +425,9 @@ export default {
this
.
selectedStreet
=
null
;
this
.
streets
=
[];
// 更新picker值并加载街道
// 更新picker值并加载街道
,使用code而不是id
this
.
pickerValue
=
[
provinceIndex
,
cityIndex
,
districtIndex
,
0
];
await
this
.
loadStreets
(
this
.
selectedDistrict
.
id
);
await
this
.
loadStreets
(
this
.
selectedDistrict
.
code
);
}
// 街道变化
...
...
@@ -682,7 +683,7 @@ export default {
uni
.
showToast
({
title
:
'已设为默认地址'
,
icon
:
'
success
'
icon
:
'
none
'
});
}
catch
(
error
)
{
console
.
error
(
'设置默认地址失败:'
,
error
);
...
...
@@ -946,17 +947,14 @@ export default {
<
style
scoped
>
.address-edit-container
{
padding-bottom
:
200
rpx
;
/* background-color: #F8F8F8; */
min-
height
:
100vh
;
background
:
var
(
--B10
,
#FAFAFA
)
;
top
:
0
;
height
:
100vh
;
}
.form-container
{
padding
:
10
rpx
;
/* background-color: #FFFFFF; */
border-radius
:
20
rpx
;
margin
:
20
rpx
;
background
:
var
(
--B10
,
#FAFAFA
);
overflow
:
hidden
;
}
...
...
@@ -975,34 +973,42 @@ export default {
font-size
:
24
rpx
;
color
:
#999999
;
margin-left
:
20
rpx
;
margin-right
:
40
rpx
;
}
.form-item
{
display
:
flex
;
align-items
:
center
;
margin-bottom
:
0
;
padding
:
20
rpx
;
padding
:
0
20
rpx
;
height
:
104
rpx
;
border-bottom
:
1
rpx
solid
#f0f0f0
;
width
:
100%
;
box-sizing
:
border-box
;
}
.label
{
font-size
:
30
rpx
;
color
:
#
333333
;
font-size
:
26
rpx
;
color
:
#
000
;
width
:
120
rpx
;
flex-shrink
:
0
;
margin-right
:
20
rpx
;
margin-left
:
54
rpx
;
margin-right
:
80
rpx
;
font-weight
:
400
;
}
.input
{
flex
:
1
;
font-size
:
30
rpx
;
font-size
:
24
rpx
;
color
:
#000
;
padding
:
0
;
border
:
none
;
outline
:
none
;
}
/* 占位符样式已通过placeholder-style属性设置 */
.wechat-import
{
display
:
flex
;
align-items
:
center
;
...
...
@@ -1019,7 +1025,7 @@ export default {
.textarea
{
flex
:
1
;
font-size
:
30
rpx
;
font-size
:
24
rpx
;
min-height
:
80
rpx
;
padding
:
0
;
resize
:
none
;
...
...
@@ -1039,28 +1045,35 @@ export default {
}
.region-text
{
font-size
:
30
rpx
;
color
:
#999999
;
font-size
:
24
rpx
;
color
:
#000
;
}
.region-text.placeholder-color
{
color
:
#BFBFBF
;
}
.arrow
{
width
:
14
rpx
;
height
:
23
rpx
;
margin-right
:
40
rpx
;
}
.default-switch
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
padding
:
20
rpx
;
padding
:
0
20
rpx
;
height
:
104
rpx
;
border-bottom
:
1
rpx
solid
#f0f0f0
;
width
:
100%
;
box-sizing
:
border-box
;
}
.switch-text
{
font-size
:
30
rpx
;
color
:
#333333
;
font-size
:
26
rpx
;
color
:
#000
;
margin-left
:
54
rpx
;
}
.switch
{
...
...
@@ -1069,6 +1082,7 @@ export default {
background-color
:
#E5E5E5
;
border-radius
:
48
rpx
;
position
:
relative
;
margin-right
:
40
rpx
;
transition
:
background-color
0.3s
ease
;
}
...
...
v3/addressList/addressList.vue
View file @
e743c4af
...
...
@@ -190,7 +190,7 @@ export default {
if
(
this
.
isSubmitting
)
return
;
// 检查地址数量限制
if
(
this
.
addressList
.
length
>=
2
1
)
{
if
(
this
.
addressList
.
length
>=
2
0
)
{
uni
.
showToast
({
title
:
'地址添加已经达到上限啦~'
,
icon
:
'none'
,
...
...
v3/goodDetail/goodDetail.vue
View file @
e743c4af
...
...
@@ -109,7 +109,7 @@
<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'"
<image
class=
"quantity-bg"
:src=
"$baseUrl + 'homepage/Q3Res/objectSelectConBg
2
.png'"
mode=
"aspectFill"
></image>
<view
class=
"quantity-btn "
@
click=
"decreaseQuantity"
:disabled=
"quantity
<
=
1
"
>
-
</view>
<text
class=
"quantity-value"
>
{{
quantity
}}
</text>
...
...
@@ -602,13 +602,13 @@ export default {
// 富文本格式化处理函数
formatRichText
(
html
)
{
let
newContent
=
html
.
replace
(
/<img
[^
>
]
*>/gi
,
function
(
match
,
capture
)
{
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
)
{
newContent
=
newContent
.
replace
(
/style="
[^
"
]
+"/gi
,
function
(
match
,
capture
)
{
match
=
match
.
replace
(
/width:
[^
;
]
+;/gi
,
'max-width:100%;'
).
replace
(
/width:
[^
;
]
+;/gi
,
'max-width:100%;'
);
return
match
;
});
...
...
@@ -841,16 +841,19 @@ export default {
break
;
case
'canExchange'
:
default
:
message
=
'可以兑换'
;
//
message = '可以兑换';
break
;
}
}
if
(
message
)
{
uni
.
showToast
({
title
:
message
,
icon
:
'none'
,
duration
:
2000
});
}
},
// 关闭规格选择弹窗
...
...
@@ -1493,8 +1496,8 @@ page {
}
.service-icon
{
width
:
60
rpx
;
height
:
60
rpx
;
width
:
96
rpx
;
height
:
96
rpx
;
}
.exchange-btn
{
...
...
@@ -1713,7 +1716,7 @@ page {
font-size
:
40
rpx
;
font-weight
:
bold
;
display
:
flex
;
align-items
:
center
;
/* align-items: center; */
justify-content
:
center
;
z-index
:
2
;
border-right
:
none
;
...
...
v3/logoffConfirmPage/logoffConfirmPage.vue
View file @
e743c4af
...
...
@@ -83,10 +83,7 @@ export default {
doTerminate
().
then
(
res
=>
{
uni
.
hideLoading
();
if
(
res
.
ok
)
{
uni
.
showToast
({
title
:
'注销申请已提交'
,
icon
:
'success'
});
// 可以跳转到登录页面或首页
setTimeout
(()
=>
{
uni
.
reLaunch
({
...
...
v3/orderDetail/orderDetail.vue
View file @
e743c4af
...
...
@@ -26,18 +26,26 @@
</view>
</view>
</view>
<text
class=
"address-arrow"
>
{{
">"
}}
</text>
<!--
<view
class=
"arrow-icon"
>
<image
:src=
"$baseUrl + 'homepage/Q3Res/rightArrowBtn.png'"
mode=
"aspectFill"
></image>
</view>
-->
</view>
<!-- 模块1: 商品信息和券码 -->
<view
class=
"module-product-info"
>
<view
class=
"product-detail"
>
<view
class=
"product-image"
>
<!-- 优先使用后端返回的goodsImage -->
<image
v-if=
"orderData.goodsImage && orderData.goodsImage.length > 0"
:src=
"orderData.goodsImage[0]"
mode=
"aspectFill"
class=
"product-img"
/>
<!-- 使用goodsIcon作为备选图片源 -->
<image
v-else-if=
"orderData.goodsIcon"
:src=
"orderData.goodsIcon"
mode=
"aspectFill"
class=
"product-img"
/>
<!-- 其次使用二维码图片(针对虚拟商品) -->
<image
v-else-if=
"orderData.productType === 'virtual' && orderData.coupon && orderData.coupon.qrImage"
:src=
"orderData.coupon.qrImage"
mode=
"aspectFill"
class=
"product-img"
/>
<!-- 最后显示占位文本 -->
<text
v-else
class=
"image-placeholder"
>
{{
orderData
.
productType
===
'virtual'
?
'优惠券'
:
'商品'
}}
</text>
</view>
...
...
@@ -58,28 +66,30 @@
<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"
>
<!-- 当只有code没有pwd时显示券码,否则显示卡号 -->
<!-- 当只有code没有pwd时显示券码,否则显示卡号 - label和value在同一行 -->
<div
class=
"coupon-field"
>
<text
class=
"coupon-label"
>
{{
orderData
.
coupon
.
cards
[
0
].
pwd
?
'卡号'
:
'券码'
}}
</text>
<view
class=
"coupon-code-content"
>
<div
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>
</div>
</div>
<!-- 卡密展示 - 如果存在pwd字段,
换行
显示 -->
<
view
v-if=
"orderData.coupon.cards[0].pwd"
class=
"pwd-section
"
>
<!-- 卡密展示 - 如果存在pwd字段,
在独立行中
显示 -->
<
div
v-if=
"orderData.coupon.cards[0].pwd"
class=
"coupon-field
"
>
<text
class=
"coupon-label"
>
卡密
</text>
<
view
class=
"coupon-code-content"
>
<
div
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
>
</
div
>
</
div
>
</view>
<!-- 过期时间 -->
<
view
v-if=
"orderData.expireTime"
class=
"expire-time-item
"
>
<
div
v-if=
"orderData.expireTime"
class=
"coupon-field
"
>
<text
class=
"coupon-label"
>
{{
orderData
.
virtualType
===
'coupon'
?
'优惠券时间'
:
'过期时间'
}}
</text>
<text
class=
"expire-time"
>
{{
orderData
.
expireTime
}}
</text>
</
view
>
</
div
>
</view>
</view>
...
...
@@ -141,27 +151,36 @@
<!-- 物流信息 - 仅实物商品且已发货/已完成时显示 -->
<view
v-if=
"orderData.productType === 'physical' && (orderData.status === 'shipped' || orderData.status === 'completed' || orderData.status === '已发货' || orderData.status === '已完成')"
class=
"module-logistics"
@
click=
"viewLogistics"
>
<view
class=
"logistics-content"
>
v-if=
"orderData.productType === 'physical' && (orderData.status === 'shipped' || orderData.status === 'completed' || orderData.status === '已发货' || orderData.status === '已完成') && orderData.logisticsList && orderData.logisticsList.length > 0"
class=
"module-logistics"
>
<view
v-for=
"(logistics, index) in orderData.logisticsList"
:key=
"index"
class=
"logistics-content"
@
click=
"viewLogistics(index)"
>
<!-- 显示包裹序号 -->
<view
v-if=
"orderData.logisticsList.length > 1"
class=
"package-number"
>
<text>
包裹 {{ index + 1 }}
</text>
</view>
<view
class=
"logistics-row"
>
<text
class=
"logistics-label"
>
物流公司
</text>
<text
class=
"logistics-value"
>
{{
orderData.logisticsC
ompany }}
</text>
<text
class=
"logistics-value"
>
{{
logistics.c
ompany }}
</text>
</view>
<view
class=
"logistics-row"
>
<text
class=
"logistics-label"
>
物流单号
</text>
<view
class=
"logistics-right"
>
<text
class=
"logistics-value"
>
{{
orderData
.trackingNumber }}
</text>
<text
class=
"copy-btn"
@
click
.
stop=
"copyTrackingNumber"
>
复制
</text>
<text
class=
"logistics-value"
>
{{
logistics
.trackingNumber }}
</text>
<text
class=
"copy-btn"
@
click
.
stop=
"copyTrackingNumber
(logistics.trackingNumber)
"
>
复制
</text>
</view>
</view>
<text
class=
"arrow-icon"
>
{{ ">" }}
</text>
<view
class=
"arrow-icon"
>
<image
class=
"arrow-image"
:src=
"$baseUrl + 'homepage/Q3Res/rightArrowBtn.png'"
mode=
"aspectFill"
></image>
</view>
</view>
</view>
<!-- 操作按钮 - 实物订单退货按钮在右下角 -->
<view
v-if=
"showActionButton"
class=
"action-container"
>
<view
v-if=
"orderData.productType === 'virtual' && orderData.virtualType === 'coupon'"
class=
"action-btn btn-use"
@
click=
"handleAction"
>
<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=
"{
...
...
@@ -216,6 +235,7 @@ export default {
return
{
// 订单数据
orderData
:
{
logisticsList
:
[],
productType
:
''
,
// 'physical' | 'virtual'
virtualType
:
''
,
// 'coupon' | 'card' - 区分优选券和异业卡券
status
:
''
,
// 实物: '等待商家发货' | '已发货' | '已完成' | 虚拟: '交易成功' | '交易关闭'
...
...
@@ -527,10 +547,38 @@ export default {
this
.
orderData
.
actualPayment
=
`
${
creditsValue
}${
creditsType
}
`
;
// 设置物流信息(仅实物商品)
if
(
this
.
orderData
.
productType
===
'physical'
&&
this
.
orderData
.
express
&&
Object
.
keys
(
this
.
orderData
.
express
).
length
>
0
)
{
this
.
orderData
.
logisticsCompany
=
this
.
orderData
.
express
.
company
||
''
;
// 优先从trackingNumber获取,如果不存在则尝试从order_no获取
this
.
orderData
.
trackingNumber
=
this
.
orderData
.
express
.
trackingNumber
||
this
.
orderData
.
express
.
order_no
||
''
;
if
(
this
.
orderData
.
productType
===
'physical'
)
{
// 处理多物流信息
if
(
this
.
orderData
.
express
&&
Object
.
keys
(
this
.
orderData
.
express
).
length
>
0
)
{
// 检查是否有多个物流信息
if
(
this
.
orderData
.
express
.
logisticsList
&&
Array
.
isArray
(
this
.
orderData
.
express
.
logisticsList
)
&&
this
.
orderData
.
express
.
logisticsList
.
length
>
0
)
{
// 有多物流列表
this
.
orderData
.
logisticsList
=
this
.
orderData
.
express
.
logisticsList
.
map
(
item
=>
({
company
:
item
.
company
||
''
,
trackingNumber
:
item
.
trackingNumber
||
item
.
order_no
||
''
}));
}
else
if
(
this
.
orderData
.
express
.
trackingNumber
||
this
.
orderData
.
express
.
order_no
)
{
// 只有单个物流信息
this
.
orderData
.
logisticsList
=
[{
company
:
this
.
orderData
.
express
.
company
||
''
,
trackingNumber
:
this
.
orderData
.
express
.
trackingNumber
||
this
.
orderData
.
express
.
order_no
||
''
}];
}
else
{
// 兼容旧数据格式或逗号分隔的物流信息
const
companies
=
(
this
.
orderData
.
logisticsCompany
||
''
).
split
(
','
);
const
trackingNumbers
=
(
this
.
orderData
.
express
.
trackingNumber
||
this
.
orderData
.
express
.
order_no
||
this
.
orderData
.
trackingNumber
||
''
).
split
(
','
);
this
.
orderData
.
logisticsList
=
[];
for
(
let
i
=
0
;
i
<
Math
.
max
(
companies
.
length
,
trackingNumbers
.
length
);
i
++
)
{
this
.
orderData
.
logisticsList
.
push
({
company
:
companies
[
i
]
||
companies
[
0
]
||
''
,
trackingNumber
:
trackingNumbers
[
i
]
||
''
});
}
}
}
else
{
this
.
orderData
.
logisticsList
=
[];
}
}
// 设置有效期和使用说明(非实物商品)
...
...
@@ -612,7 +660,7 @@ export default {
success
:
()
=>
{
uni
.
showToast
({
title
:
'订单编号已复制'
,
icon
:
'
success
'
icon
:
'
none
'
});
}
});
...
...
@@ -627,13 +675,13 @@ export default {
},
// 复制物流单号
copyTrackingNumber
()
{
copyTrackingNumber
(
trackingNumber
)
{
uni
.
setClipboardData
({
data
:
t
his
.
orderData
.
t
rackingNumber
,
data
:
trackingNumber
,
success
:
()
=>
{
uni
.
showToast
({
title
:
'物流单号已复制'
,
icon
:
'
success
'
icon
:
'
none
'
});
}
});
...
...
@@ -646,17 +694,18 @@ export default {
success
:
()
=>
{
uni
.
showToast
({
title
:
'券码已复制'
,
icon
:
'
success
'
icon
:
'
none
'
});
}
});
},
// 查看物流详情
viewLogistics
()
{
// 跳转到物流页面并传递订单ID
viewLogistics
(
index
)
{
const
logistics
=
this
.
orderData
.
logisticsList
[
index
];
// 跳转到物流页面并传递订单ID和物流信息
uni
.
navigateTo
({
url
:
'/v3/logisticsPage/logisticsPage?orderId='
+
(
this
.
orderData
.
orderNo
||
this
.
orderData
.
orderNumber
)
url
:
`/v3/logisticsPage/logisticsPage?orderId=
${
this
.
orderData
.
orderNo
||
this
.
orderData
.
orderNumber
}
&company=
${
encodeURIComponent
(
logistics
.
company
)}
&trackingNumber=
${
encodeURIComponent
(
logistics
.
trackingNumber
)}
`
});
},
...
...
@@ -691,7 +740,7 @@ export default {
if
(
response
.
ok
&&
response
.
data
)
{
uni
.
showToast
({
title
:
'申请退货成功'
,
icon
:
'
success
'
icon
:
'
none
'
});
// 刷新订单状态
this
.
loadOrderDetail
(
this
.
orderData
.
orderNo
||
this
.
orderData
.
orderNumber
);
...
...
@@ -734,7 +783,7 @@ export default {
success
:
()
=>
{
uni
.
showToast
({
title
:
'订单编号已复制'
,
icon
:
'
success
'
icon
:
'
none
'
});
}
});
...
...
@@ -782,13 +831,13 @@ export default {
top
:
0
;
left
:
0
;
width
:
100%
;
height
:
2
0
0
rpx
;
height
:
2
4
0
rpx
;
background
:
linear-gradient
(
180deg
,
#ECC990
0%
,
rgba
(
211
,
164
,
88
,
0
)
100%
);
}
/* 订单状态 */
.status-section
{
padding
:
20
rpx
8
0
rpx
;
padding
:
20
rpx
6
0
rpx
;
display
:
flex
;
align-items
:
center
;
position
:
relative
;
...
...
@@ -798,14 +847,14 @@ export default {
}
.status-icon
{
width
:
4
4
rpx
;
height
:
4
4
rpx
;
width
:
3
4
rpx
;
height
:
3
4
rpx
;
margin-right
:
20
rpx
;
flex-shrink
:
0
;
}
.status-text
{
font-size
:
36
rpx
;
font-size
:
28
rpx
;
font-weight
:
bold
;
color
:
#fff
;
flex-shrink
:
0
;
...
...
@@ -824,7 +873,7 @@ export default {
}
.failure-reason
{
font-size
:
2
6
rpx
;
font-size
:
2
4
rpx
;
color
:
#fff
;
margin-left
:
20
rpx
;
flex-shrink
:
0
;
...
...
@@ -881,11 +930,7 @@ export default {
color
:
#666
;
}
.address-arrow
{
font-size
:
32
rpx
;
color
:
#999
;
margin-left
:
20
rpx
;
}
/* 商品详情 - 现在是模块2的一部分 */
.product-section
{
...
...
@@ -898,8 +943,8 @@ export default {
}
.product-image
{
width
:
1
0
0
rpx
;
height
:
1
0
0
rpx
;
width
:
1
8
0
rpx
;
height
:
1
8
0
rpx
;
background-color
:
#f0e6d2
;
border-radius
:
10
rpx
;
display
:
flex
;
...
...
@@ -925,7 +970,7 @@ export default {
}
.product-name
{
font-size
:
30
rpx
;
font-size
:
28
rpx
;
color
:
#333
;
line-height
:
1.4
;
margin-bottom
:
12
rpx
;
...
...
@@ -959,13 +1004,13 @@ export default {
}
.product-price
{
font-size
:
3
4
rpx
;
font-size
:
3
2
rpx
;
color
:
#d3a458
;
font-weight
:
bold
;
}
.product-quantity
{
font-size
:
2
6
rpx
;
font-size
:
2
4
rpx
;
color
:
#999
;
}
...
...
@@ -982,13 +1027,14 @@ export default {
}
.payment-label
{
font-size
:
30
rpx
;
color
:
#333
;
font-size
:
28
rpx
;
color
:
var
(
--B700
,
#1C1C1C
);
font-weight
:
bold
;
}
.payment-value
{
font-size
:
30
rpx
;
color
:
#
333
;
font-size
:
28
rpx
;
color
:
#
A8A8A8
;
}
.payment-total
{
...
...
@@ -1003,6 +1049,7 @@ export default {
font-size
:
30
rpx
;
color
:
#333
;
margin-right
:
10
rpx
;
font-weight
:
bold
;
}
.total-value
{
...
...
@@ -1020,7 +1067,7 @@ export default {
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
margin-bottom
:
2
0
rpx
;
margin-bottom
:
3
0
rpx
;
}
.info-row
:last-child
{
...
...
@@ -1028,8 +1075,9 @@ export default {
}
.info-label
{
font-size
:
30
rpx
;
font-size
:
28
rpx
;
color
:
#333
;
font-weight
:
bold
;
}
.info-right
{
...
...
@@ -1039,8 +1087,8 @@ export default {
}
.info-value
{
font-size
:
30
rpx
;
color
:
#
666
;
font-size
:
28
rpx
;
color
:
#
A8A8A8
;
}
/* 已统一到上方的.copy-btn样式 */
...
...
@@ -1059,9 +1107,32 @@ export default {
.module-logistics
{
background-color
:
#fff
;
padding
:
30
rpx
20
rpx
;
border-radius
:
20
rpx
;
margin-bottom
:
20
rpx
;
padding
:
20
rpx
;
}
.logistics-content
{
position
:
relative
;
padding
:
10
rpx
0
;
}
.logistics-content
:not
(
:last-child
)
{
border-bottom
:
1
rpx
solid
#f0f0f0
;
margin-bottom
:
20
rpx
;
}
.package-number
{
background-color
:
#f5f5f5
;
padding
:
8
rpx
20
rpx
;
border-radius
:
20
rpx
;
margin-bottom
:
16
rpx
;
display
:
inline-block
;
}
.package-number
text
{
font-size
:
24
rpx
;
color
:
#666
;
}
.logistics-row
{
...
...
@@ -1069,7 +1140,8 @@ export default {
align-items
:
center
;
justify-content
:
space-between
;
margin-bottom
:
20
rpx
;
width
:
100%
;
/* 限制最大宽度,为右箭头留出空间 */
max-width
:
calc
(
100%
-
60
rpx
);
}
.logistics-row
:last-child
{
...
...
@@ -1079,26 +1151,44 @@ export default {
.logistics-label
{
font-size
:
30
rpx
;
color
:
#333
;
/* 固定标签宽度,确保对齐 */
width
:
140
rpx
;
font-weight
:
bold
;
}
.logistics-right
{
display
:
flex
;
align-items
:
center
;
gap
:
20
rpx
;
/* 内容区域不换行 */
flex-shrink
:
0
;
}
.logistics-value
{
font-size
:
30
rpx
;
color
:
#666
;
/* 限制值的最大宽度,防止过长 */
max-width
:
400
rpx
;
/* 文本超出时省略 */
white-space
:
nowrap
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
}
.arrow-icon
{
font-size
:
32
rpx
;
color
:
#999
;
position
:
absolute
;
right
:
3
0
rpx
;
right
:
1
0
rpx
;
top
:
50%
;
transform
:
translateY
(
-50%
);
/* 确保箭头在最上层 */
z-index
:
1
;
}
.arrow-icon
image
{
width
:
14
rpx
;
height
:
23
rpx
;
}
/* 操作按钮容器 */
...
...
@@ -1108,8 +1198,9 @@ export default {
bottom
:
0
;
left
:
0
;
right
:
0
;
height
:
180
rpx
;
background-color
:
#fff
;
padding
:
8
0
rpx
30
rpx
;
padding
:
0
rpx
30
rpx
;
box-shadow
:
0
-2
rpx
10
rpx
rgba
(
0
,
0
,
0
,
0.1
);
z-index
:
100
;
/* 虚拟商品按钮居中显示,实物商品按钮推到右侧 */
...
...
@@ -1117,6 +1208,8 @@ export default {
justify-content
:
center
;
}
/* 实物商品按钮容器特殊样式 */
.action-container
:has
(
.btn-refund
)
{
justify-content
:
flex-end
;
...
...
@@ -1127,26 +1220,26 @@ export default {
width
:
100%
;
height
:
88
rpx
;
border-radius
:
44
rpx
;
font-size
:
3
2
rpx
;
font-weight
:
bold
;
font-size
:
3
0
rpx
;
font-weight
:
500
;
text-align
:
center
;
}
/* 实物商品申请退货按钮样式 - 右下角 */
.action-btn.corner-btn
{
width
:
2
00
rpx
;
height
:
80
rpx
;
border-radius
:
4
0
rpx
;
width
:
2
48
rpx
;
height
:
74
rpx
;
border-radius
:
5
0
rpx
;
background-color
:
#fff
;
color
:
#
333
;
border
:
1
rpx
solid
#
ddd
;
color
:
#
000
;
border
:
1
rpx
solid
#
000
;
/* 调整位置,使其在右下角 */
position
:
fixed
;
bottom
:
30
rpx
;
right
:
30
rpx
;
right
:
26
rpx
;
box-shadow
:
0
2
rpx
10
rpx
rgba
(
0
,
0
,
0
,
0.1
);
/* 确保按钮显示在客服按钮上方 */
z-index
:
101
;
margin-top
:
30
rpx
;
}
/* 去使用图片按钮样式 */
...
...
@@ -1173,31 +1266,34 @@ export default {
/* 券码和过期时间样式 - 现在是模块1的一部分 */
.coupon-section
{
margin-top
:
30
rpx
;
padding-top
:
30
rpx
;
border-top
:
1
rpx
solid
#f0f0f0
;
/* padding-top: 30rpx; */
/* border-top: 1rpx solid #f0f0f0; */
}
.coupon-code-item
{
margin-bottom
:
20
rpx
;
}
.expire-time-item
{
.coupon-field
{
margin-bottom
:
25
rpx
;
width
:
100%
;
padding
:
0
rpx
;
/* background-color: #f5f5f5; */
border-radius
:
10
rpx
;
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
margin-bottom
:
20
rpx
;
}
/* 卡号和卡密之间的间距 */
.pwd-section
{
margin-top
:
20
rpx
;
}
.coupon-label
{
font-size
:
28
rpx
;
color
:
#
666
;
color
:
#
333
;
text-align
:
left
;
white-space
:
nowrap
;
font-weight
:
600
;
margin-right
:
20
rpx
;
}
.coupon-code-content
{
...
...
@@ -1215,27 +1311,34 @@ export default {
}
.coupon-code
{
font-size
:
2
6
rpx
;
color
:
#
333
;
font-size
:
2
8
rpx
;
color
:
#
A8A8A8
;
letter-spacing
:
2
rpx
;
}
.expire-time
{
flex
:
1
;
font-size
:
28
rpx
;
color
:
#
666
;
color
:
#
A8A8A8
;
text-align
:
right
;
}
/* 复制按钮样式 - 统一调整为与图2一致 */
.copy-btn
{
font-size
:
26
rpx
;
color
:
#666
;
font-size
:
20
rpx
;
white-space
:
nowrap
;
padding
:
8
rpx
24
rpx
;
border
:
1
rpx
solid
#ddd
;
border-radius
:
18
rpx
;
background-color
:
#f5f5f5
;
color
:
#A8A8A8
;
text-align
:
center
;
font-style
:
normal
;
font-weight
:
500
;
line-height
:
32
rpx
;
border-radius
:
24
rpx
;
border
:
1px
solid
#A8A8A8
;
width
:
74
rpx
;
height
:
32
rpx
;
flex-shrink
:
0
;
background
:
#FFF
;
/* 120% */
}
/* 模块样式 */
...
...
@@ -1260,7 +1363,7 @@ export default {
}
.section-title
{
font-size
:
30
rpx
;
font-size
:
28
rpx
;
color
:
#333
;
font-weight
:
bold
;
margin-bottom
:
24
rpx
;
...
...
@@ -1270,7 +1373,7 @@ export default {
.instruction-content
,
.instruction-text
{
font-size
:
28
rpx
;
color
:
#
666
;
color
:
#
A8A8A8
;
line-height
:
44
rpx
;
}
...
...
@@ -1315,38 +1418,44 @@ export default {
}
.modal-content
{
background-color
:
#fff
;
border-radius
:
20
rpx
;
width
:
80%
;
max-width
:
500
rpx
;
padding
:
40
rpx
;
position
:
relative
;
width
:
546
rpx
;
height
:
418
rpx
;
flex-shrink
:
0
;
border-radius
:
38
rpx
;
background
:
linear-gradient
(
180deg
,
#FFE9C5
0%
,
#FFF
52.87%
);
}
.modal-title
{
font-size
:
36
rpx
;
font-weight
:
bold
;
color
:
#333
;
color
:
#D3A458
;
text-align
:
center
;
margin-bottom
:
30
rpx
;
font-size
:
40
rpx
;
font-style
:
normal
;
font-weight
:
600
;
line-height
:
normal
;
margin-top
:
62
rpx
;
}
.modal-message
{
font-size
:
28
rpx
;
color
:
#666
;
color
:
var
(
--B900
,
#000
);
text-align
:
center
;
line-height
:
44
rpx
;
margin-bottom
:
40
rpx
;
font-size
:
28
rpx
;
font-style
:
normal
;
font-weight
:
400
;
line-height
:
normal
;
margin-top
:
22
rpx
;
}
.modal-buttons
{
display
:
flex
;
justify-content
:
space-between
;
gap
:
30
rpx
;
gap
:
20
rpx
;
margin-top
:
70
rpx
;
justify-content
:
center
;
}
.modal-btn
{
height
:
78
rpx
;
width
:
220
rpx
!important
;
height
:
78
rpx
!important
;
position
:
relative
;
}
.modal-btn
image
{
...
...
@@ -1355,10 +1464,11 @@ export default {
}
.cancel-btn
{
margin-right
:
20
rpx
;
border
:
none
;
}
.confirm-btn
{
border
:
none
;
margin-left
:
20
rpx
;
}
...
...
@@ -1366,7 +1476,8 @@ export default {
font-size
:
24
rpx
;
color
:
#999
;
text-align
:
center
;
margin-top
:
20
rpx
;
line-height
:
1.4
;
margin-top
:
40
rpx
;
}
.modal-close-btn
{
...
...
@@ -1378,9 +1489,4 @@ export default {
justify-content
:
center
;
margin-top
:
80
rpx
;
}
.modal-close-btn
{
width
:
56
rpx
;
height
:
56
rpx
;
}
</
style
>
v3/settlementCenter/settlementCenter.vue
View file @
e743c4af
...
...
@@ -50,20 +50,20 @@
<!-- 配送方式 -->
<view
class=
"delivery-section"
>
<text
class=
"delivery-label"
>
配送方式
</text>
<text
class=
"delivery-label"
style=
"font-weight: bold;"
>
配送方式
</text>
<text
class=
"delivery-method"
>
快递邮寄
</text>
</view>
<!-- 订单备注 -->
<view
class=
"notes-section"
>
<text
class=
"notes-label"
>
订单备注
</text>
<text
class=
"notes-label"
style=
"font-weight: bold;"
>
订单备注
</text>
<text
class=
"notes-hint"
>
选填:对本次交易的说明(最多40字)
</text>
<input
class=
"notes-input"
placeholder=
"请输入订单备注"
maxlength=
"40"
v-model=
"orderNotes"
/>
</view>
<!-- 订单汇总 -->
<view
class=
"summary-section"
>
<text
class=
"summary-label"
>
共
{{
goodsInfo
.
quantity
}}
件
</text>
<text
class=
"summary-label"
style=
"font-weight: bold;"
>
共
{{
goodsInfo
.
quantity
}}
件
</text>
<text
class=
"summary-price"
>
小计:
{{
goodsInfo
.
points
*
goodsInfo
.
quantity
}}{{
goodsInfo
.
creditsTypeName
}}
</text>
</view>
...
...
@@ -79,7 +79,7 @@
<!-- 底部提交栏 -->
<view
class=
"bottom-bar"
>
<view
class=
"total-info"
>
<text
class=
"total-label"
>
商品积分
</text>
<text
class=
"total-label"
style=
"font-weight: bold;"
>
商品积分
</text>
<text
class=
"total-price"
>
{{
goodsInfo
.
points
*
goodsInfo
.
quantity
}}{{
goodsInfo
.
creditsTypeName
}}
</text>
</view>
...
...
@@ -578,34 +578,39 @@ export default {
}
.modal-content
{
background-color
:
#fff
;
border-radius
:
30
rpx
;
padding
:
40
rpx
;
width
:
80%
;
max-width
:
600
rpx
;
box-sizing
:
border-box
;
width
:
546
rpx
;
height
:
418
rpx
;
flex-shrink
:
0
;
border-radius
:
38
rpx
;
background
:
linear-gradient
(
180deg
,
#FFE9C5
0%
,
#FFF
52.87%
);
}
.modal-title
{
font-size
:
36
rpx
;
font-weight
:
bold
;
color
:
#
333
;
color
:
#
D3A458
;
text-align
:
center
;
margin-bottom
:
30
rpx
;
font-size
:
40
rpx
;
font-style
:
normal
;
font-weight
:
600
;
line-height
:
normal
;
margin-top
:
62
rpx
;
}
.modal-message
{
font-size
:
28
rpx
;
color
:
#666
;
color
:
var
(
--B900
,
#000
);
text-align
:
center
;
margin-bottom
:
40
rpx
;
line-height
:
1.5
;
font-size
:
28
rpx
;
font-style
:
normal
;
font-weight
:
400
;
line-height
:
normal
;
margin-top
:
22
rpx
;
}
.modal-buttons
{
display
:
flex
;
gap
:
20
rpx
;
margin-
bottom
:
3
0
rpx
;
margin-
top
:
6
0
rpx
;
justify-content
:
center
;
}
...
...
@@ -634,6 +639,7 @@ export default {
color
:
#999
;
text-align
:
center
;
line-height
:
1.4
;
margin-top
:
40
rpx
;
}
.modal-close-btn
{
...
...
@@ -697,11 +703,13 @@ export default {
margin-bottom
:
10
rpx
;
display
:
block
;
overflow
:
hidden
;
font-weight
:
bold
;
}
.address-text.no-address
{
color
:
#999
;
font-style
:
italic
;
font-weight
:
500
;
}
.recipient-info
{
...
...
@@ -837,7 +845,7 @@ export default {
.delivery-label
{
font-size
:
28
rpx
;
color
:
#
333
;
color
:
#
A8A8A8
;
}
.delivery-method
{
...
...
@@ -862,7 +870,7 @@ export default {
.notes-hint
{
font-size
:
24
rpx
;
color
:
#
999
;
color
:
#
A8A8A8
;
margin-bottom
:
10
rpx
;
margin-left
:
20
rpx
;
display
:
inline-block
;
...
...
@@ -888,12 +896,13 @@ export default {
margin-bottom
:
0
;
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
justify-content
:
flex-end
;
}
.summary-label
{
font-size
:
28
rpx
;
color
:
#333
;
margin-right
:
20
rpx
;
}
.summary-price
{
...
...
@@ -909,7 +918,6 @@ export default {
right
:
30
rpx
;
width
:
96
rpx
;
height
:
96
rpx
;
background-color
:
#D3A458
;
border-radius
:
50%
;
display
:
flex
;
align-items
:
center
;
...
...
@@ -919,8 +927,8 @@ export default {
}
.service-icon
{
width
:
60
rpx
;
height
:
60
rpx
;
width
:
96
rpx
;
height
:
96
rpx
;
}
/* 底部提交栏 */
...
...
@@ -943,13 +951,15 @@ export default {
width
:
60%
;
display
:
flex
;
flex-direction
:
row
;
margin-left
:
20
rpx
;
margin-right
:
20
rpx
;
align-items
:
center
;
}
.total-label
{
font-size
:
24
rpx
;
color
:
#666
;
color
:
#000
;
font-weight
:
bold
;
}
.total-price
{
...
...
@@ -965,11 +975,12 @@ export default {
height
:
74
rpx
;
background-color
:
#D3A458
;
color
:
#fff
;
font-size
:
28
rpx
;
font-size
:
30
rpx
;
border-radius
:
37
rpx
;
border
:
none
;
line-height
:
74
rpx
;
padding
:
0
;
font-weight
:
bold
;
}
.submit-btn
:active
{
...
...
views/Home.vue
View file @
e743c4af
...
...
@@ -2617,13 +2617,13 @@ export default {
.gold-coin {
position: absolute;
width:
167
rpx;
height:
162
rpx;
width:
333
rpx;
height:
333
rpx;
animation-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55);
}
.gold-coin-1 {
animation: goldCoinFly 1.5s
ease-out
1;
animation: goldCoinFly 1.5s
cubic-bezier(0.34, 1.56, 0.64, 1) 1s
1;
z-index: 5;
}
...
...
@@ -2650,59 +2650,17 @@ export default {
}
}
/* 单个金币从
中间飞向底部导航"我的"图标的动画 - 自然延续的曲线波
动 */
/* 单个金币从
上方中间飞向底部导航"我的"图标的动画 - 简化为贝塞尔曲线直线运
动 */
@keyframes goldCoinFly {
0% {
transform: translate(
0, 0
) scale(1.3) rotate(0deg);
transform: translate(
-50%, -50%
) scale(1.3) rotate(0deg);
opacity: 1;
left: 50%;
top: 50%;
}
20% {
transform: translate(100rpx, 120rpx) scale(1.25) rotate(10deg);
opacity: 1;
left: 50%;
top: 50%;
}
40% {
transform: translate(160rpx, 280rpx) scale(1.2) rotate(15deg);
opacity: 1;
left: 50%;
top: 50%;
}
60% {
transform: translate(190rpx, 380rpx) scale(1.1) rotate(25deg);
opacity: 0.95;
left: 50%;
top: 50%;
}
70% {
transform: translate(200rpx, 420rpx) scale(0.9) rotate(30deg);
opacity: 0.8;
left: 50%;
top: 50%;
}
80% {
transform: translate(208rpx, 460rpx) scale(0.7) rotate(38deg);
opacity: 0.6;
left: 50%;
top: 50%;
}
90% {
transform: translate(215rpx, 500rpx) scale(0.3) rotate(42deg);
opacity: 0.3;
left: 50%;
top: 50%;
}
100% {
transform: translate(
220rpx, 55
0rpx) scale(0) rotate(45deg);
transform: translate(
145rpx, 48
0rpx) scale(0) rotate(45deg);
opacity: 0;
left: 50%;
top: 50%;
...
...
views/My.vue
View file @
e743c4af
...
...
@@ -191,8 +191,8 @@
buttonName: '隐私协议',
}" @click="handleHot" data-type="privacy"></view>
</view> -->
<RegisterLayer
v-model=
"showRegisterLayer"
@
confirm=
"onRegisterConfirm"
/>
</view>
<RegisterLayer
v-model=
"showRegisterLayer"
@
confirm=
"onRegisterConfirm"
@
cancel=
"onRegisterCancel"
/>
<!-- 生日弹窗 type 3 钻石、4 星光、5 星耀 -->
<!-- <popup-shengri v-if="isTip" type="3" @close="isTip = false"></popup-shengri> -->
...
...
@@ -515,7 +515,13 @@ const handleEditProfile = (e) => {
}
};
const
onRegisterConfirm
=
(
data
)
=>
{
const
onRegisterConfirm
=
async
()
=>
{
await
pageCfgStore
.
fetchCfg
();
// 只调用一次initData,loadMemberInfo已在initData内部处理
initData
();
showRegisterLayer
.
value
=
false
;
};
const
onRegisterCancel
=
()
=>
{
showRegisterLayer
.
value
=
false
;
};
...
...
@@ -650,7 +656,6 @@ const getRealtimePhoneNumber = async (e) => {
return
;
}
await
userStore
.
phoneCallback
(
e
.
detail
,
async
()
=>
{
showRegisterLayer
.
value
=
true
;
// 简化回调,避免重复调用接口
showLoading
();
await
pageCfgStore
.
fetchCfg
();
...
...
@@ -689,6 +694,9 @@ const handleChangeBaby = (e) => {
showBabySwitcher
.
value
=
true
;
};
async
function
onSelectBaby
(
baby
)
{
// 处理宝宝切换逻辑
showBabySwitcher
.
value
=
false
;
...
...
@@ -707,12 +715,8 @@ async function onSelectBaby(baby) {
}
function
handleAddBabyInfoClick
()
{
md
.
sensorLogTake
({
xcxClick
:
"我的页面点击"
,
pageName
:
"我的页面"
,
buttonName
:
"去添加宝宝信息"
,
});
navigateTo
(
"/pages/person/person?type=add"
);
// 显示RegisterLayer弹窗
showRegisterLayer
.
value
=
true
;
}
function
onAddBaby
()
{
...
...
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