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
Expand all
Hide 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
...
@@ -55,23 +55,23 @@
...
@@ -55,23 +55,23 @@
<view
v-else-if=
"item.type === 'display'"
class=
"form-input-box"
>
<view
v-else-if=
"item.type === 'display'"
class=
"form-input-box"
>
<view
class=
"form-input"
style=
"color: #222"
>
{{
<view
class=
"form-input"
style=
"color: #222"
>
{{
formData
[
item
.
name
]
||
item
.
placeholder
formData
[
item
.
name
]
||
item
.
placeholder
}}
</view>
}}
</view>
</view>
</view>
<view
v-else-if=
"item.type === 'display-obj'"
class=
"form-input-box"
>
<view
v-else-if=
"item.type === 'display-obj'"
class=
"form-input-box"
>
<view
class=
"form-input"
style=
"color: #222"
>
{{
<view
class=
"form-input"
style=
"color: #222"
>
{{
getLabelByValue
(
item
,
formData
[
item
.
name
])
getLabelByValue
(
item
,
formData
[
item
.
name
])
}}
</view>
}}
</view>
</view>
</view>
<!-- 选择器类型 -->
<!-- 选择器类型 -->
<picker-custom
v-else-if=
"item.type === 'picker'"
:mode=
"item.mode"
:range=
"item.range"
:value=
"item.mode === 'date'
<picker-custom
v-else-if=
"item.type === 'picker'"
:mode=
"item.mode"
:range=
"item.range"
:value=
"item.mode === 'date'
? formData[item.name]
? formData[item.name]
: getPickerIndex(item)
: getPickerIndex(item)
"
:onPickerChange=
"(e) => onPickerChange(e, item.name)"
"
:onPickerChange=
"(e) => onPickerChange(e, item.name)"
:onLayerVisibleChange=
"(e) => (pageStatus.btnStatus = !e)"
:onStatusChange=
"onDateStatusChange"
>
:onLayerVisibleChange=
"(e) => (pageStatus.btnStatus = !e)"
:onStatusChange=
"onDateStatusChange"
>
<view
class=
"form-input-box"
>
<view
class=
"form-input-box"
>
<view
class=
"form-input"
>
{{
<view
class=
"form-input"
>
{{
getLabelByValue
(
item
,
formData
[
item
.
name
])
||
item
.
placeholder
getLabelByValue
(
item
,
formData
[
item
.
name
])
||
item
.
placeholder
}}
</view>
}}
</view>
<image
class=
"form-input-icon"
:src=
"$baseUrl + 'person/icon_arrow_yellow_right.png'"
/>
<image
class=
"form-input-icon"
:src=
"$baseUrl + 'person/icon_arrow_yellow_right.png'"
/>
</view>
</view>
</picker-custom>
</picker-custom>
...
@@ -280,15 +280,7 @@ const formItems = ref([
...
@@ -280,15 +280,7 @@ const formItems = ref([
range
:
babyGenderMap
.
map
((
i
)
=>
i
.
label
),
range
:
babyGenderMap
.
map
((
i
)
=>
i
.
label
),
mode
:
"custom"
,
mode
:
"custom"
,
},
},
{
{
label
:
"喂养方式"
,
name
:
"feedingType"
,
required
:
true
,
placeholder
:
"未选择"
,
type
:
"picker"
,
range
:
[
"奶粉喂养"
,
"母乳喂养"
,
"母乳奶粉混合喂养"
],
mode
:
"custom"
,
},
label
:
"喂养方式"
,
name
:
"feedingType"
,
required
:
false
,
placeholder
:
"未选择"
,
type
:
"picker"
,
range
:
[
"奶粉喂养"
,
"母乳喂养"
,
"母乳奶粉混合喂养"
],
mode
:
"custom"
,
},
{
{
label
:
"孕周"
,
label
:
"孕周"
,
name
:
"gestationalWeeks"
,
name
:
"gestationalWeeks"
,
...
@@ -543,7 +535,7 @@ const checkAndUpdateTaskResult = async () => {
...
@@ -543,7 +535,7 @@ const checkAndUpdateTaskResult = async () => {
await
integralStore
.
queryTodoResultServer
();
await
integralStore
.
queryTodoResultServer
();
console
.
log
(
'queryTodoResult:'
,
integralStore
.
queryTodoResult
);
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
.
isShowTaskComplete
=
true
;
globalStore
.
taskCompletePoints
=
integralStore
.
queryTodoResult
.
data
[
0
]?.
actualCredits
;
globalStore
.
taskCompletePoints
=
integralStore
.
queryTodoResult
.
data
[
0
]?.
actualCredits
;
globalStore
.
taskCompleteTitle
=
integralStore
.
queryTodoResult
.
data
[
0
]?.
taskName
;
globalStore
.
taskCompleteTitle
=
integralStore
.
queryTodoResult
.
data
[
0
]?.
taskName
;
...
...
v3/addressList/addressEdit.vue
View file @
e743c4af
...
@@ -4,7 +4,7 @@
...
@@ -4,7 +4,7 @@
<view
class=
"form-item"
>
<view
class=
"form-item"
>
<text
class=
"label"
>
收货人
</text>
<text
class=
"label"
>
收货人
</text>
<input
class=
"input"
v-model=
"formData.name"
placeholder=
"请输入收货人姓名"
maxlength=
"30"
<input
class=
"input"
v-model=
"formData.name"
placeholder=
"请输入收货人姓名"
maxlength=
"30"
@
input=
"limitNameInput"
/>
@
input=
"limitNameInput"
placeholder-style=
"color: #BFBFBF;"
/>
<view
class=
"wechat-import"
@
tap=
"importFromWechat"
>
<view
class=
"wechat-import"
@
tap=
"importFromWechat"
>
<image
class=
"wechat-icon"
:src=
"$baseUrl + 'homepage/Q3Res/wechatIcon.png'"
mode=
"aspectFit"
>
<image
class=
"wechat-icon"
:src=
"$baseUrl + 'homepage/Q3Res/wechatIcon.png'"
mode=
"aspectFit"
>
</image>
</image>
...
@@ -14,14 +14,15 @@
...
@@ -14,14 +14,15 @@
<view
class=
"form-item"
>
<view
class=
"form-item"
>
<text
class=
"label"
>
手机号码
</text>
<text
class=
"label"
>
手机号码
</text>
<input
class=
"input"
:class=
"
{ 'error': phoneError }" v-model="formData.phone" placeholder="请输入手机号码"
<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>
<text
v-if=
"phoneError"
class=
"error-text"
>
请输入正确的手机号码
</text>
</view>
</view>
<view
class=
"form-item"
>
<view
class=
"form-item"
>
<text
class=
"label"
>
所在地区
</text>
<text
class=
"label"
>
所在地区
</text>
<view
class=
"region-select"
@
tap=
"showRegionPicker"
>
<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"
/>
<image
class=
"arrow"
:src=
"$baseUrl + 'homepage/Q3Res/rightArrowBtn.png'"
mode=
"aspectFit"
/>
</view>
</view>
</view>
</view>
...
@@ -29,20 +30,20 @@
...
@@ -29,20 +30,20 @@
<view
class=
"form-item"
>
<view
class=
"form-item"
>
<text
class=
"label"
>
详细地址
</text>
<text
class=
"label"
>
详细地址
</text>
<input
class=
"textarea"
v-model=
"formData.detailAddress"
placeholder=
"请填写详细地址"
maxlength=
"100"
<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>
<text
class=
"char-count"
>
{{
formData
.
detailAddress
.
length
}}
/100
</text>
</view>
</view>
<view
class=
"form-item"
>
<view
class=
"form-item"
>
<text
class=
"label"
>
门牌号
</text>
<text
class=
"label"
>
门牌号
</text>
<input
class=
"input"
v-model=
"formData.houseNumber"
placeholder=
"街道、门牌号等"
maxlength=
"50"
<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>
<text
class=
"char-count"
>
{{
formData
.
houseNumber
.
length
}}
/50
</text>
</view>
</view>
<view
class=
"default-switch"
@
tap=
"toggleDefault"
>
<view
class=
"default-switch"
>
<text
class=
"switch-text"
>
设为默认地址
</text>
<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
class=
"switch-dot"
:class=
"
{ 'active': formData.isDefault }">
</view>
</view>
</view>
</view>
</view>
...
@@ -356,13 +357,13 @@ export default {
...
@@ -356,13 +357,13 @@ export default {
isItemSelected
(
item
,
index
)
{
isItemSelected
(
item
,
index
)
{
switch
(
this
.
currentLevel
)
{
switch
(
this
.
currentLevel
)
{
case
0
:
case
0
:
return
this
.
selectedProvince
&&
this
.
selectedProvince
.
id
===
item
.
code
;
return
this
.
selectedProvince
&&
this
.
selectedProvince
.
code
===
item
.
code
;
case
1
:
case
1
:
return
this
.
selectedCity
&&
this
.
selectedCity
.
id
===
item
.
code
;
return
this
.
selectedCity
&&
this
.
selectedCity
.
code
===
item
.
code
;
case
2
:
case
2
:
return
this
.
selectedDistrict
&&
this
.
selectedDistrict
.
id
===
item
.
code
;
return
this
.
selectedDistrict
&&
this
.
selectedDistrict
.
code
===
item
.
code
;
case
3
:
case
3
:
return
this
.
selectedStreet
&&
this
.
selectedStreet
.
id
===
item
.
code
;
return
this
.
selectedStreet
&&
this
.
selectedStreet
.
code
===
item
.
code
;
default
:
default
:
return
false
;
return
false
;
}
}
...
@@ -398,9 +399,9 @@ export default {
...
@@ -398,9 +399,9 @@ export default {
this
.
districts
=
[];
this
.
districts
=
[];
this
.
streets
=
[];
this
.
streets
=
[];
// 更新picker值并加载城市
// 更新picker值并加载城市
,使用code而不是id
this
.
pickerValue
=
[
provinceIndex
,
0
,
0
,
0
];
this
.
pickerValue
=
[
provinceIndex
,
0
,
0
,
0
];
await
this
.
loadCities
(
this
.
selectedProvince
.
id
);
await
this
.
loadCities
(
this
.
selectedProvince
.
code
);
}
}
// 城市变化
// 城市变化
...
@@ -412,9 +413,9 @@ export default {
...
@@ -412,9 +413,9 @@ export default {
this
.
districts
=
[];
this
.
districts
=
[];
this
.
streets
=
[];
this
.
streets
=
[];
// 更新picker值并加载区县
// 更新picker值并加载区县
,使用code而不是id
this
.
pickerValue
=
[
provinceIndex
,
cityIndex
,
0
,
0
];
this
.
pickerValue
=
[
provinceIndex
,
cityIndex
,
0
,
0
];
await
this
.
loadDistricts
(
this
.
selectedCity
.
id
);
await
this
.
loadDistricts
(
this
.
selectedCity
.
code
);
}
}
// 区县变化
// 区县变化
...
@@ -424,9 +425,9 @@ export default {
...
@@ -424,9 +425,9 @@ export default {
this
.
selectedStreet
=
null
;
this
.
selectedStreet
=
null
;
this
.
streets
=
[];
this
.
streets
=
[];
// 更新picker值并加载街道
// 更新picker值并加载街道
,使用code而不是id
this
.
pickerValue
=
[
provinceIndex
,
cityIndex
,
districtIndex
,
0
];
this
.
pickerValue
=
[
provinceIndex
,
cityIndex
,
districtIndex
,
0
];
await
this
.
loadStreets
(
this
.
selectedDistrict
.
id
);
await
this
.
loadStreets
(
this
.
selectedDistrict
.
code
);
}
}
// 街道变化
// 街道变化
...
@@ -682,7 +683,7 @@ export default {
...
@@ -682,7 +683,7 @@ export default {
uni
.
showToast
({
uni
.
showToast
({
title
:
'已设为默认地址'
,
title
:
'已设为默认地址'
,
icon
:
'
success
'
icon
:
'
none
'
});
});
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
'设置默认地址失败:'
,
error
);
console
.
error
(
'设置默认地址失败:'
,
error
);
...
@@ -946,17 +947,14 @@ export default {
...
@@ -946,17 +947,14 @@ export default {
<
style
scoped
>
<
style
scoped
>
.address-edit-container
{
.address-edit-container
{
padding-bottom
:
200
rpx
;
background
:
var
(
--B10
,
#FAFAFA
)
;
/* background-color: #F8F8F8; */
top
:
0
;
min-
height
:
100vh
;
height
:
100vh
;
}
}
.form-container
{
.form-container
{
padding
:
10
rpx
;
background
:
var
(
--B10
,
#FAFAFA
);
/* background-color: #FFFFFF; */
border-radius
:
20
rpx
;
margin
:
20
rpx
;
overflow
:
hidden
;
overflow
:
hidden
;
}
}
...
@@ -975,34 +973,42 @@ export default {
...
@@ -975,34 +973,42 @@ export default {
font-size
:
24
rpx
;
font-size
:
24
rpx
;
color
:
#999999
;
color
:
#999999
;
margin-left
:
20
rpx
;
margin-left
:
20
rpx
;
margin-right
:
40
rpx
;
}
}
.form-item
{
.form-item
{
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
margin-bottom
:
0
;
margin-bottom
:
0
;
padding
:
20
rpx
;
padding
:
0
20
rpx
;
height
:
104
rpx
;
border-bottom
:
1
rpx
solid
#f0f0f0
;
border-bottom
:
1
rpx
solid
#f0f0f0
;
width
:
100%
;
width
:
100%
;
box-sizing
:
border-box
;
box-sizing
:
border-box
;
}
}
.label
{
.label
{
font-size
:
30
rpx
;
font-size
:
26
rpx
;
color
:
#
333333
;
color
:
#
000
;
width
:
120
rpx
;
width
:
120
rpx
;
flex-shrink
:
0
;
flex-shrink
:
0
;
margin-right
:
20
rpx
;
margin-left
:
54
rpx
;
margin-right
:
80
rpx
;
font-weight
:
400
;
}
}
.input
{
.input
{
flex
:
1
;
flex
:
1
;
font-size
:
30
rpx
;
font-size
:
24
rpx
;
color
:
#000
;
padding
:
0
;
padding
:
0
;
border
:
none
;
border
:
none
;
outline
:
none
;
outline
:
none
;
}
}
/* 占位符样式已通过placeholder-style属性设置 */
.wechat-import
{
.wechat-import
{
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
...
@@ -1019,7 +1025,7 @@ export default {
...
@@ -1019,7 +1025,7 @@ export default {
.textarea
{
.textarea
{
flex
:
1
;
flex
:
1
;
font-size
:
30
rpx
;
font-size
:
24
rpx
;
min-height
:
80
rpx
;
min-height
:
80
rpx
;
padding
:
0
;
padding
:
0
;
resize
:
none
;
resize
:
none
;
...
@@ -1039,28 +1045,35 @@ export default {
...
@@ -1039,28 +1045,35 @@ export default {
}
}
.region-text
{
.region-text
{
font-size
:
30
rpx
;
font-size
:
24
rpx
;
color
:
#999999
;
color
:
#000
;
}
.region-text.placeholder-color
{
color
:
#BFBFBF
;
}
}
.arrow
{
.arrow
{
width
:
14
rpx
;
width
:
14
rpx
;
height
:
23
rpx
;
height
:
23
rpx
;
margin-right
:
40
rpx
;
}
}
.default-switch
{
.default-switch
{
display
:
flex
;
display
:
flex
;
justify-content
:
space-between
;
justify-content
:
space-between
;
align-items
:
center
;
align-items
:
center
;
padding
:
20
rpx
;
padding
:
0
20
rpx
;
height
:
104
rpx
;
border-bottom
:
1
rpx
solid
#f0f0f0
;
border-bottom
:
1
rpx
solid
#f0f0f0
;
width
:
100%
;
width
:
100%
;
box-sizing
:
border-box
;
box-sizing
:
border-box
;
}
}
.switch-text
{
.switch-text
{
font-size
:
30
rpx
;
font-size
:
26
rpx
;
color
:
#333333
;
color
:
#000
;
margin-left
:
54
rpx
;
}
}
.switch
{
.switch
{
...
@@ -1069,6 +1082,7 @@ export default {
...
@@ -1069,6 +1082,7 @@ export default {
background-color
:
#E5E5E5
;
background-color
:
#E5E5E5
;
border-radius
:
48
rpx
;
border-radius
:
48
rpx
;
position
:
relative
;
position
:
relative
;
margin-right
:
40
rpx
;
transition
:
background-color
0.3s
ease
;
transition
:
background-color
0.3s
ease
;
}
}
...
...
v3/addressList/addressList.vue
View file @
e743c4af
...
@@ -190,7 +190,7 @@ export default {
...
@@ -190,7 +190,7 @@ export default {
if
(
this
.
isSubmitting
)
return
;
if
(
this
.
isSubmitting
)
return
;
// 检查地址数量限制
// 检查地址数量限制
if
(
this
.
addressList
.
length
>=
2
1
)
{
if
(
this
.
addressList
.
length
>=
2
0
)
{
uni
.
showToast
({
uni
.
showToast
({
title
:
'地址添加已经达到上限啦~'
,
title
:
'地址添加已经达到上限啦~'
,
icon
:
'none'
,
icon
:
'none'
,
...
...
v3/goodDetail/goodDetail.vue
View file @
e743c4af
...
@@ -50,7 +50,7 @@
...
@@ -50,7 +50,7 @@
<text
class=
"detail-title"
>
详情信息
</text>
<text
class=
"detail-title"
>
详情信息
</text>
<view
class=
"detail-banner"
v-if=
"goodsData.goodsContent"
>
<view
class=
"detail-banner"
v-if=
"goodsData.goodsContent"
>
<rich-text
style=
"width: 100%; /* 或设置为具体的像素值 */ overflow-x: hidden;"
class=
"banner-text"
<rich-text
style=
"width: 100%; /* 或设置为具体的像素值 */ overflow-x: hidden;"
class=
"banner-text"
:nodes=
"formatRichText(goodsData.goodsContent)"
></rich-text>
:nodes=
"formatRichText(goodsData.goodsContent)"
></rich-text>
</view>
</view>
</view>
</view>
</view>
</view>
...
@@ -86,7 +86,7 @@
...
@@ -86,7 +86,7 @@
</view>
</view>
<view
class=
"product-details"
>
<view
class=
"product-details"
>
<text
class=
"product-points"
>
{{
goodsData
.
points
}}{{
goodsData
.
creditsTypeName
||
'积分'
<text
class=
"product-points"
>
{{
goodsData
.
points
}}{{
goodsData
.
creditsTypeName
||
'积分'
}}
</text>
}}
</text>
<text
class=
"product-stock"
>
库存
{{
formatCount
(
goodsData
.
exchangeCount
)
}}
件
</text>
<text
class=
"product-stock"
>
库存
{{
formatCount
(
goodsData
.
exchangeCount
)
}}
件
</text>
</view>
</view>
</view>
</view>
...
@@ -109,7 +109,7 @@
...
@@ -109,7 +109,7 @@
<text
class=
"quantity-label"
>
选择数量
<text
class=
"limit-text"
v-if=
"goodsData.goodsLimit"
>
(限购
{{
<text
class=
"quantity-label"
>
选择数量
<text
class=
"limit-text"
v-if=
"goodsData.goodsLimit"
>
(限购
{{
goodsData
.
goodsLimit
}}
件)
</text></text>
goodsData
.
goodsLimit
}}
件)
</text></text>
<view
class=
"quantity-selector"
>
<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>
mode=
"aspectFill"
></image>
<view
class=
"quantity-btn "
@
click=
"decreaseQuantity"
:disabled=
"quantity
<
=
1
"
>
-
</view>
<view
class=
"quantity-btn "
@
click=
"decreaseQuantity"
:disabled=
"quantity
<
=
1
"
>
-
</view>
<text
class=
"quantity-value"
>
{{
quantity
}}
</text>
<text
class=
"quantity-value"
>
{{
quantity
}}
</text>
...
@@ -599,16 +599,16 @@ export default {
...
@@ -599,16 +599,16 @@ export default {
};
};
return
levelMap
[
memberLevelName
]
||
1
;
return
levelMap
[
memberLevelName
]
||
1
;
},
},
// 富文本格式化处理函数
// 富文本格式化处理函数
formatRichText
(
html
)
{
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
(
/style="
[^
"
]
+"/gi
,
''
).
replace
(
/style='
[^
'
]
+'/gi
,
''
);
match
=
match
.
replace
(
/width="
[^
"
]
+"/gi
,
''
).
replace
(
/width='
[^
'
]
+'/gi
,
''
);
match
=
match
.
replace
(
/width="
[^
"
]
+"/gi
,
''
).
replace
(
/width='
[^
'
]
+'/gi
,
''
);
match
=
match
.
replace
(
/height="
[^
"
]
+"/gi
,
''
).
replace
(
/height='
[^
'
]
+'/gi
,
''
);
match
=
match
.
replace
(
/height="
[^
"
]
+"/gi
,
''
).
replace
(
/height='
[^
'
]
+'/gi
,
''
);
return
match
;
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%;'
);
match
=
match
.
replace
(
/width:
[^
;
]
+;/gi
,
'max-width:100%;'
).
replace
(
/width:
[^
;
]
+;/gi
,
'max-width:100%;'
);
return
match
;
return
match
;
});
});
...
@@ -841,16 +841,19 @@ export default {
...
@@ -841,16 +841,19 @@ export default {
break
;
break
;
case
'canExchange'
:
case
'canExchange'
:
default
:
default
:
message
=
'可以兑换'
;
//
message = '可以兑换';
break
;
break
;
}
}
}
}
uni
.
showToast
({
if
(
message
)
{
title
:
message
,
uni
.
showToast
({
icon
:
'none'
,
title
:
message
,
duration
:
2000
icon
:
'none'
,
});
duration
:
2000
});
}
},
},
// 关闭规格选择弹窗
// 关闭规格选择弹窗
...
@@ -1493,8 +1496,8 @@ page {
...
@@ -1493,8 +1496,8 @@ page {
}
}
.service-icon
{
.service-icon
{
width
:
60
rpx
;
width
:
96
rpx
;
height
:
60
rpx
;
height
:
96
rpx
;
}
}
.exchange-btn
{
.exchange-btn
{
...
@@ -1713,7 +1716,7 @@ page {
...
@@ -1713,7 +1716,7 @@ page {
font-size
:
40
rpx
;
font-size
:
40
rpx
;
font-weight
:
bold
;
font-weight
:
bold
;
display
:
flex
;
display
:
flex
;
align-items
:
center
;
/* align-items: center; */
justify-content
:
center
;
justify-content
:
center
;
z-index
:
2
;
z-index
:
2
;
border-right
:
none
;
border-right
:
none
;
...
...
v3/logoffConfirmPage/logoffConfirmPage.vue
View file @
e743c4af
...
@@ -83,10 +83,7 @@ export default {
...
@@ -83,10 +83,7 @@ export default {
doTerminate
().
then
(
res
=>
{
doTerminate
().
then
(
res
=>
{
uni
.
hideLoading
();
uni
.
hideLoading
();
if
(
res
.
ok
)
{
if
(
res
.
ok
)
{
uni
.
showToast
({
title
:
'注销申请已提交'
,
icon
:
'success'
});
// 可以跳转到登录页面或首页
// 可以跳转到登录页面或首页
setTimeout
(()
=>
{
setTimeout
(()
=>
{
uni
.
reLaunch
({
uni
.
reLaunch
({
...
...
v3/orderDetail/orderDetail.vue
View file @
e743c4af
This diff is collapsed.
Click to expand it.
v3/settlementCenter/settlementCenter.vue
View file @
e743c4af
...
@@ -50,20 +50,20 @@
...
@@ -50,20 +50,20 @@
<!-- 配送方式 -->
<!-- 配送方式 -->
<view
class=
"delivery-section"
>
<view
class=
"delivery-section"
>
<text
class=
"delivery-label"
>
配送方式
</text>
<text
class=
"delivery-label"
style=
"font-weight: bold;"
>
配送方式
</text>
<text
class=
"delivery-method"
>
快递邮寄
</text>
<text
class=
"delivery-method"
>
快递邮寄
</text>
</view>
</view>
<!-- 订单备注 -->
<!-- 订单备注 -->
<view
class=
"notes-section"
>
<view
class=
"notes-section"
>
<text
class=
"notes-label"
>
订单备注
</text>
<text
class=
"notes-label"
style=
"font-weight: bold;"
>
订单备注
</text>
<text
class=
"notes-hint"
>
选填:对本次交易的说明(最多40字)
</text>
<text
class=
"notes-hint"
>
选填:对本次交易的说明(最多40字)
</text>
<input
class=
"notes-input"
placeholder=
"请输入订单备注"
maxlength=
"40"
v-model=
"orderNotes"
/>
<input
class=
"notes-input"
placeholder=
"请输入订单备注"
maxlength=
"40"
v-model=
"orderNotes"
/>
</view>
</view>
<!-- 订单汇总 -->
<!-- 订单汇总 -->
<view
class=
"summary-section"
>
<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
}}{{
<text
class=
"summary-price"
>
小计:
{{
goodsInfo
.
points
*
goodsInfo
.
quantity
}}{{
goodsInfo
.
creditsTypeName
}}
</text>
goodsInfo
.
creditsTypeName
}}
</text>
</view>
</view>
...
@@ -79,7 +79,7 @@
...
@@ -79,7 +79,7 @@
<!-- 底部提交栏 -->
<!-- 底部提交栏 -->
<view
class=
"bottom-bar"
>
<view
class=
"bottom-bar"
>
<view
class=
"total-info"
>
<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
class=
"total-price"
>
{{
goodsInfo
.
points
*
goodsInfo
.
quantity
}}{{
goodsInfo
.
creditsTypeName
}}
</text>
}}
</text>
</view>
</view>
...
@@ -155,35 +155,35 @@ import { jump, JumpType } from '../../utils';
...
@@ -155,35 +155,35 @@ import { jump, JumpType } from '../../utils';
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
orderNotes
:
''
,
orderNotes
:
''
,
// 订单来源子渠道
// 订单来源子渠道
orderSubSource
:
''
,
orderSubSource
:
''
,
// 订单参数
// 订单参数
orderParams
:
{},
orderParams
:
{},
priceData
:
null
,
priceData
:
null
,
// 地址信息
// 地址信息
selectedAddress
:
null
,
selectedAddress
:
null
,
hasAddress
:
false
,
hasAddress
:
false
,
fullAddress
:
''
,
fullAddress
:
''
,
recipientName
:
''
,
recipientName
:
''
,
recipientPhone
:
''
,
recipientPhone
:
''
,
// 商品信息
// 商品信息
goodsInfo
:
{
goodsInfo
:
{
name
:
''
,
name
:
''
,
spec
:
''
,
spec
:
''
,
points
:
0
,
points
:
0
,
quantity
:
1
quantity
:
1
},
},
// 商店信息
// 商店信息
homeStore
:
null
,
homeStore
:
null
,
// 弹窗状态
// 弹窗状态
showConfirmModal
:
false
,
showConfirmModal
:
false
,
showAddressModal
:
false
,
showAddressModal
:
false
,
showSelectAddressModal
:
false
,
showSelectAddressModal
:
false
,
// 用于防连点
// 用于防连点
isSubmitting
:
false
isSubmitting
:
false
}
}
},
},
onLoad
(
options
)
{
onLoad
(
options
)
{
console
.
log
(
'结算页面参数:'
,
options
);
console
.
log
(
'结算页面参数:'
,
options
);
...
@@ -345,12 +345,12 @@ export default {
...
@@ -345,12 +345,12 @@ export default {
closeAddressModal
()
{
closeAddressModal
()
{
this
.
showAddressModal
=
false
;
this
.
showAddressModal
=
false
;
},
},
// 关闭选择地址提示弹窗
// 关闭选择地址提示弹窗
closeSelectAddressModal
()
{
closeSelectAddressModal
()
{
this
.
showSelectAddressModal
=
false
;
this
.
showSelectAddressModal
=
false
;
},
},
// 处理选择地址
// 处理选择地址
handleGoSelectAddress
()
{
handleGoSelectAddress
()
{
this
.
closeSelectAddressModal
();
this
.
closeSelectAddressModal
();
...
@@ -578,34 +578,39 @@ export default {
...
@@ -578,34 +578,39 @@ export default {
}
}
.modal-content
{
.modal-content
{
background-color
:
#fff
;
width
:
546
rpx
;
border-radius
:
30
rpx
;
height
:
418
rpx
;
padding
:
40
rpx
;
flex-shrink
:
0
;
width
:
80%
;
border-radius
:
38
rpx
;
max-width
:
600
rpx
;
background
:
linear-gradient
(
180deg
,
#FFE9C5
0%
,
#FFF
52.87%
);
box-sizing
:
border-box
;
}
}
.modal-title
{
.modal-title
{
font-size
:
36
rpx
;
font-weight
:
bold
;
color
:
#
333
;
color
:
#
D3A458
;
text-align
:
center
;
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
{
.modal-message
{
font-size
:
28
rpx
;
color
:
var
(
--B900
,
#000
);
color
:
#666
;
text-align
:
center
;
text-align
:
center
;
margin-bottom
:
40
rpx
;
font-size
:
28
rpx
;
line-height
:
1.5
;
font-style
:
normal
;
font-weight
:
400
;
line-height
:
normal
;
margin-top
:
22
rpx
;
}
}
.modal-buttons
{
.modal-buttons
{
display
:
flex
;
display
:
flex
;
gap
:
20
rpx
;
gap
:
20
rpx
;
margin-
bottom
:
3
0
rpx
;
margin-
top
:
6
0
rpx
;
justify-content
:
center
;
justify-content
:
center
;
}
}
...
@@ -634,6 +639,7 @@ export default {
...
@@ -634,6 +639,7 @@ export default {
color
:
#999
;
color
:
#999
;
text-align
:
center
;
text-align
:
center
;
line-height
:
1.4
;
line-height
:
1.4
;
margin-top
:
40
rpx
;
}
}
.modal-close-btn
{
.modal-close-btn
{
...
@@ -697,11 +703,13 @@ export default {
...
@@ -697,11 +703,13 @@ export default {
margin-bottom
:
10
rpx
;
margin-bottom
:
10
rpx
;
display
:
block
;
display
:
block
;
overflow
:
hidden
;
overflow
:
hidden
;
font-weight
:
bold
;
}
}
.address-text.no-address
{
.address-text.no-address
{
color
:
#999
;
color
:
#999
;
font-style
:
italic
;
font-style
:
italic
;
font-weight
:
500
;
}
}
.recipient-info
{
.recipient-info
{
...
@@ -837,7 +845,7 @@ export default {
...
@@ -837,7 +845,7 @@ export default {
.delivery-label
{
.delivery-label
{
font-size
:
28
rpx
;
font-size
:
28
rpx
;
color
:
#
333
;
color
:
#
A8A8A8
;
}
}
.delivery-method
{
.delivery-method
{
...
@@ -862,7 +870,7 @@ export default {
...
@@ -862,7 +870,7 @@ export default {
.notes-hint
{
.notes-hint
{
font-size
:
24
rpx
;
font-size
:
24
rpx
;
color
:
#
999
;
color
:
#
A8A8A8
;
margin-bottom
:
10
rpx
;
margin-bottom
:
10
rpx
;
margin-left
:
20
rpx
;
margin-left
:
20
rpx
;
display
:
inline-block
;
display
:
inline-block
;
...
@@ -888,12 +896,13 @@ export default {
...
@@ -888,12 +896,13 @@ export default {
margin-bottom
:
0
;
margin-bottom
:
0
;
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
justify-content
:
space-between
;
justify-content
:
flex-end
;
}
}
.summary-label
{
.summary-label
{
font-size
:
28
rpx
;
font-size
:
28
rpx
;
color
:
#333
;
color
:
#333
;
margin-right
:
20
rpx
;
}
}
.summary-price
{
.summary-price
{
...
@@ -909,7 +918,6 @@ export default {
...
@@ -909,7 +918,6 @@ export default {
right
:
30
rpx
;
right
:
30
rpx
;
width
:
96
rpx
;
width
:
96
rpx
;
height
:
96
rpx
;
height
:
96
rpx
;
background-color
:
#D3A458
;
border-radius
:
50%
;
border-radius
:
50%
;
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
...
@@ -919,8 +927,8 @@ export default {
...
@@ -919,8 +927,8 @@ export default {
}
}
.service-icon
{
.service-icon
{
width
:
60
rpx
;
width
:
96
rpx
;
height
:
60
rpx
;
height
:
96
rpx
;
}
}
/* 底部提交栏 */
/* 底部提交栏 */
...
@@ -943,13 +951,15 @@ export default {
...
@@ -943,13 +951,15 @@ export default {
width
:
60%
;
width
:
60%
;
display
:
flex
;
display
:
flex
;
flex-direction
:
row
;
flex-direction
:
row
;
margin-left
:
20
rpx
;
margin-right
:
20
rpx
;
margin-right
:
20
rpx
;
align-items
:
center
;
align-items
:
center
;
}
}
.total-label
{
.total-label
{
font-size
:
24
rpx
;
font-size
:
24
rpx
;
color
:
#666
;
color
:
#000
;
font-weight
:
bold
;
}
}
.total-price
{
.total-price
{
...
@@ -965,11 +975,12 @@ export default {
...
@@ -965,11 +975,12 @@ export default {
height
:
74
rpx
;
height
:
74
rpx
;
background-color
:
#D3A458
;
background-color
:
#D3A458
;
color
:
#fff
;
color
:
#fff
;
font-size
:
28
rpx
;
font-size
:
30
rpx
;
border-radius
:
37
rpx
;
border-radius
:
37
rpx
;
border
:
none
;
border
:
none
;
line-height
:
74
rpx
;
line-height
:
74
rpx
;
padding
:
0
;
padding
:
0
;
font-weight
:
bold
;
}
}
.submit-btn
:active
{
.submit-btn
:active
{
...
...
views/Home.vue
View file @
e743c4af
...
@@ -2617,13 +2617,13 @@ export default {
...
@@ -2617,13 +2617,13 @@ export default {
.gold-coin {
.gold-coin {
position: absolute;
position: absolute;
width:
167
rpx;
width:
333
rpx;
height:
162
rpx;
height:
333
rpx;
animation-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55);
animation-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55);
}
}
.gold-coin-1 {
.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;
z-index: 5;
}
}
...
@@ -2650,59 +2650,17 @@ export default {
...
@@ -2650,59 +2650,17 @@ export default {
}
}
}
}
/* 单个金币从
中间飞向底部导航"我的"图标的动画 - 自然延续的曲线波
动 */
/* 单个金币从
上方中间飞向底部导航"我的"图标的动画 - 简化为贝塞尔曲线直线运
动 */
@keyframes goldCoinFly {
@keyframes goldCoinFly {
0% {
0% {
transform: translate(
0, 0
) scale(1.3) rotate(0deg);
transform: translate(
-50%, -50%
) scale(1.3) rotate(0deg);
opacity: 1;
opacity: 1;
left: 50%;
left: 50%;
top: 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% {
100% {
transform: translate(
220rpx, 55
0rpx) scale(0) rotate(45deg);
transform: translate(
145rpx, 48
0rpx) scale(0) rotate(45deg);
opacity: 0;
opacity: 0;
left: 50%;
left: 50%;
top: 50%;
top: 50%;
...
...
views/My.vue
View file @
e743c4af
...
@@ -191,8 +191,8 @@
...
@@ -191,8 +191,8 @@
buttonName: '隐私协议',
buttonName: '隐私协议',
}" @click="handleHot" data-type="privacy"></view>
}" @click="handleHot" data-type="privacy"></view>
</view> -->
</view> -->
<RegisterLayer
v-model=
"showRegisterLayer"
@
confirm=
"onRegisterConfirm"
/>
</view>
</view>
<RegisterLayer
v-model=
"showRegisterLayer"
@
confirm=
"onRegisterConfirm"
@
cancel=
"onRegisterCancel"
/>
<!-- 生日弹窗 type 3 钻石、4 星光、5 星耀 -->
<!-- 生日弹窗 type 3 钻石、4 星光、5 星耀 -->
<!-- <popup-shengri v-if="isTip" type="3" @close="isTip = false"></popup-shengri> -->
<!-- <popup-shengri v-if="isTip" type="3" @close="isTip = false"></popup-shengri> -->
...
@@ -515,7 +515,13 @@ const handleEditProfile = (e) => {
...
@@ -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
;
showRegisterLayer
.
value
=
false
;
};
};
...
@@ -650,7 +656,6 @@ const getRealtimePhoneNumber = async (e) => {
...
@@ -650,7 +656,6 @@ const getRealtimePhoneNumber = async (e) => {
return
;
return
;
}
}
await
userStore
.
phoneCallback
(
e
.
detail
,
async
()
=>
{
await
userStore
.
phoneCallback
(
e
.
detail
,
async
()
=>
{
showRegisterLayer
.
value
=
true
;
// 简化回调,避免重复调用接口
// 简化回调,避免重复调用接口
showLoading
();
showLoading
();
await
pageCfgStore
.
fetchCfg
();
await
pageCfgStore
.
fetchCfg
();
...
@@ -689,6 +694,9 @@ const handleChangeBaby = (e) => {
...
@@ -689,6 +694,9 @@ const handleChangeBaby = (e) => {
showBabySwitcher
.
value
=
true
;
showBabySwitcher
.
value
=
true
;
};
};
async
function
onSelectBaby
(
baby
)
{
async
function
onSelectBaby
(
baby
)
{
// 处理宝宝切换逻辑
// 处理宝宝切换逻辑
showBabySwitcher
.
value
=
false
;
showBabySwitcher
.
value
=
false
;
...
@@ -707,12 +715,8 @@ async function onSelectBaby(baby) {
...
@@ -707,12 +715,8 @@ async function onSelectBaby(baby) {
}
}
function
handleAddBabyInfoClick
()
{
function
handleAddBabyInfoClick
()
{
md
.
sensorLogTake
({
// 显示RegisterLayer弹窗
xcxClick
:
"我的页面点击"
,
showRegisterLayer
.
value
=
true
;
pageName
:
"我的页面"
,
buttonName
:
"去添加宝宝信息"
,
});
navigateTo
(
"/pages/person/person?type=add"
);
}
}
function
onAddBaby
()
{
function
onAddBaby
()
{
...
@@ -1258,4 +1262,4 @@ defineExpose({});
...
@@ -1258,4 +1262,4 @@ defineExpose({});
}
}
}
}
}
}
</
style
>
</
style
>
\ No newline at end of file
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