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
bf203755
Commit
bf203755
authored
Nov 03, 2025
by
spc
Browse files
Options
Browse Files
Download
Plain Diff
merge
parents
0e56e9fa
bfca9ac7
Changes
11
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
209 additions
and
68 deletions
+209
-68
request.js
api/request.js
+3
-2
SeckillSection.less
components/SeckillSection.less
+53
-6
SeckillSection.vue
components/SeckillSection.vue
+55
-47
InviteGift.less
components/integralArea/InviteGift.less
+1
-1
InviteGift.vue
components/integralArea/InviteGift.vue
+1
-1
SignedTips.vue
components/qiandao/SignedTips.vue
+17
-0
md.js
md.js
+1
-1
pages.json
pages.json
+68
-0
sharepage.vue
pages/invate/sharepage.vue
+3
-3
user.js
stores/user.js
+1
-1
My.vue
views/My.vue
+6
-6
No files found.
api/request.js
View file @
bf203755
...
...
@@ -16,9 +16,10 @@ const {
// request.js
// 通常可以吧 baseUrl 单独放在一个 js 文件了
// const baseUrl = "http://172.16.230.108:7777/pmall";
const
baseUrl
=
"https://momclub-test.feihe.com/pmall"
;
//测试环境
//
const baseUrl = "https://momclub-test.feihe.com/pmall";//测试环境
// const baseUrl = "https://momclub-uat.feihe.com/pmall";//测试环境
// let baseUrl = "https://momclub.feihe.com/pmall";//生产环境
// const baseUrl = "https://momclub-test.feihe.com/pmall";
let
baseUrl
=
"https://momclub.feihe.com/pmall"
;
//生产环境
// const baseUrl = "https://docs.dui88.com/mock/1956/api";//mock
// const baseUrl = "https://feihe.m.duibatest.com.cn/pmall"
...
...
components/SeckillSection.less
View file @
bf203755
...
...
@@ -174,14 +174,14 @@
border-radius: 4rpx;
text-align: center;
line-height: 36rpx;
font-size:
16
rpx;
font-weight:
bold
;
font-size:
24
rpx;
font-weight:
400
;
}
.countdown_colon {
// 颜色通过内联样式动态设置
font-size:
16
rpx;
font-weight:
bold
;
font-size:
24
rpx;
font-weight:
400
;
margin: 0 2rpx;
}
}
...
...
@@ -496,6 +496,53 @@
justify-content: space-between;
padding: 40rpx 34rpx;
// 正在秒杀状态布局
.single_session_content_ongoing {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
}
// 未开始/已结束状态布局 - 时间在前,状态在后,无间距
.single_session_content_other {
display: flex;
align-items: center;
justify-content: flex-start;
width: 100%;
gap: 0;
.tab_time_info {
margin: 0;
padding: 0;
display: flex;
align-items: center;
.tab_time_text {
&.start_time_text {
font-size: 28rpx;
font-weight: 400;
// 颜色通过内联样式动态设置
}
}
}
.session_status_tag {
margin: 0;
padding: 0;
margin-left: 0;
.status_text {
&.upcoming_text,
&.ended_text {
// 颜色通过内联样式动态设置
font-weight: 400;
font-size: 28rpx;
}
}
}
}
.session_status_tag {
&.ongoing {
.status_text {
...
...
@@ -572,8 +619,8 @@
.countdown_colon {
// 颜色通过内联样式动态设置
font-size: 2
0
rpx;
font-weight:
bold
;
font-size: 2
4
rpx;
font-weight:
400
;
margin: 0 4rpx;
}
}
...
...
components/SeckillSection.vue
View file @
bf203755
...
...
@@ -41,17 +41,17 @@
</view>
</view>
<view
class=
"session_status_tag ongoing"
>
<text
class=
"status_text"
:style=
"
{ color:
getColor('ongoingS
tatusTextColor')[itemIndex] }">正在秒杀
</text>
<text
class=
"status_text"
:style=
"
{ color:
index === currentSessionIndex ? getColor('ongoingStatusTextColor')[itemIndex] : getColor('s
tatusTextColor')[itemIndex] }">正在秒杀
</text>
</view>
</view>
<!-- 即将开始/已过期状态:开始时间在上,状态文案在下 -->
<view
v-else
class=
"tab_content_other"
>
<view
class=
"tab_time_info"
>
<text
class=
"tab_time_text start_time_text"
:style=
"
{ color: getColor('statusTextColor')[itemIndex] }">
{{
getStartTime
(
session
)
}}
</text>
<text
class=
"tab_time_text start_time_text"
:style=
"
{ color:
index === currentSessionIndex ? getColor('ongoingStatusTextColor')[itemIndex] :
getColor('statusTextColor')[itemIndex] }">
{{
getStartTime
(
session
)
}}
</text>
</view>
<view
class=
"session_status_tag"
:class=
"session.status"
>
<text
v-if=
"session.status === 'upcoming'"
class=
"status_text upcoming_text"
:style=
"
{ color: getColor('statusTextColor')[itemIndex] }">即将开始
</text>
<text
v-else
class=
"status_text ended_text"
:style=
"
{ color: getColor('statusTextColor')[itemIndex] }">已结束
</text>
<text
v-if=
"session.status === 'upcoming'"
class=
"status_text upcoming_text"
:style=
"
{ color:
index === currentSessionIndex ? getColor('ongoingStatusTextColor')[itemIndex] :
getColor('statusTextColor')[itemIndex] }">即将开始
</text>
<text
v-else
class=
"status_text ended_text"
:style=
"
{ color:
index === currentSessionIndex ? getColor('ongoingStatusTextColor')[itemIndex] :
getColor('statusTextColor')[itemIndex] }">已结束
</text>
</view>
</view>
</view>
...
...
@@ -83,17 +83,17 @@
</view>
</view>
<view
class=
"session_status_tag ongoing"
>
<text
class=
"status_text"
:style=
"
{ color:
getColor('ongoingS
tatusTextColor')[itemIndex] }">正在秒杀
</text>
<text
class=
"status_text"
:style=
"
{ color:
index === currentSessionIndex ? getColor('ongoingStatusTextColor')[itemIndex] : getColor('s
tatusTextColor')[itemIndex] }">正在秒杀
</text>
</view>
</view>
<!-- 即将开始/已过期状态:开始时间在上,状态文案在下 -->
<view
v-else
class=
"tab_content_other"
>
<view
class=
"tab_time_info"
>
<text
class=
"tab_time_text start_time_text"
:style=
"
{ color: getColor('statusTextColor')[itemIndex] }">
{{
getStartTime
(
session
)
}}
</text>
<text
class=
"tab_time_text start_time_text"
:style=
"
{ color:
index === currentSessionIndex ? getColor('ongoingStatusTextColor')[itemIndex] :
getColor('statusTextColor')[itemIndex] }">
{{
getStartTime
(
session
)
}}
</text>
</view>
<view
class=
"session_status_tag"
:class=
"session.status"
>
<text
v-if=
"session.status === 'upcoming'"
class=
"status_text upcoming_text"
:style=
"
{ color: getColor('statusTextColor')[itemIndex] }">即将开始
</text>
<text
v-else
class=
"status_text ended_text"
:style=
"
{ color: getColor('statusTextColor')[itemIndex] }">已结束
</text>
<text
v-if=
"session.status === 'upcoming'"
class=
"status_text upcoming_text"
:style=
"
{ color:
index === currentSessionIndex ? getColor('ongoingStatusTextColor')[itemIndex] :
getColor('statusTextColor')[itemIndex] }">即将开始
</text>
<text
v-else
class=
"status_text ended_text"
:style=
"
{ color:
index === currentSessionIndex ? getColor('ongoingStatusTextColor')[itemIndex] :
getColor('statusTextColor')[itemIndex] }">已结束
</text>
</view>
</view>
</view>
...
...
@@ -102,13 +102,12 @@
<!-- 单场次状态显示 -->
<view
class=
"single_session_status"
v-else-if=
"creditsSaleData.sessions && creditsSaleData.sessions.length === 1"
>
<view
v-if=
"creditsSaleData.sessions[0].status === 'ongoing'"
class=
"single_session_content_ongoing"
>
<view
class=
"session_status_tag"
:class=
"creditsSaleData.sessions[0].status"
>
<text
v-if=
"creditsSaleData.sessions[0].status === 'ongoing'"
class=
"status_text"
:style=
"
{ color: getColor('ongoingStatusTextColor')[itemIndex] }">正在秒杀
</text>
<text
v-else-if=
"creditsSaleData.sessions[0].status === 'upcoming'"
class=
"status_text upcoming_text"
:style=
"
{ color: getColor('statusTextColor')[itemIndex] }">即将开始
</text>
<text
v-else
class=
"status_text ended_text"
:style=
"
{ color: getColor('statusTextColor')[itemIndex] }">已结束
</text>
<text
class=
"status_text"
:style=
"
{ color: getColor('ongoingStatusTextColor')[itemIndex] }">正在秒杀
</text>
</view>
<view
class=
"tab_time_info"
>
<view
v-if=
"creditsSaleData.sessions[0].status === 'ongoing'"
class=
"tab_time_text countdown_display"
>
<view
class=
"tab_time_text countdown_display"
>
<text
class=
"countdown_label"
:style=
"
{ color: getColor('countdownColor')[itemIndex] }">倒计时
</text>
<view
class=
"countdown_numbers"
>
<view
v-for=
"(timeUnit, index) in getCountdownUnits(creditsSaleData.sessions[0].countdown)"
...
...
@@ -119,7 +118,16 @@
</view>
</view>
</view>
<text
v-else
class=
"tab_time_text start_time_text"
:style=
"
{ color: getColor('statusTextColor')[itemIndex] }">
{{
getStartTime
(
creditsSaleData
.
sessions
[
0
])
}}
</text>
</view>
</view>
<view
v-else
class=
"single_session_content_other"
>
<view
class=
"tab_time_info"
>
<text
class=
"tab_time_text start_time_text"
:style=
"
{ color: getColor('ongoingStatusTextColor')[itemIndex] }">
{{
getStartTime
(
creditsSaleData
.
sessions
[
0
])
}}
</text>
</view>
<view
class=
"session_status_tag"
:class=
"creditsSaleData.sessions[0].status"
>
<text
v-if=
"creditsSaleData.sessions[0].status === 'upcoming'"
class=
"status_text upcoming_text"
:style=
"
{ color: getColor('ongoingStatusTextColor')[itemIndex] }">即将开始
</text>
<text
v-else
class=
"status_text ended_text"
:style=
"
{ color: getColor('ongoingStatusTextColor')[itemIndex] }">已结束
</text>
</view>
</view>
</view>
...
...
@@ -221,7 +229,7 @@ const getColor = (type) => {
colors
=
[
'#B27C1E'
,
'#578EC4'
,
'#7556A8'
,
'#CEA46C'
,
'#E7CCA4'
];
break
;
case
'ongoingStatusTextColor'
:
//
正在秒杀状态文字颜色
//
被选中的tab的文字颜色(status_text和tab_time_text)
colors
=
[
'#1c1c1c'
,
'#1c1c1c'
,
'#1c1c1c'
,
'#1c1c1c'
,
'#FFF0DF'
];
break
;
case
'buttonGradientColor'
:
...
...
@@ -333,7 +341,7 @@ const getGoodButtonInfo = (good, session) => {
// 未开始场次
if
(
status
===
'upcoming'
)
{
return
{
text
:
'
即将
开始'
,
disabled
:
true
};
return
{
text
:
'
未
开始'
,
disabled
:
true
};
}
// 已结束场次
...
...
@@ -703,19 +711,19 @@ const generateTestSeckillData = () => {
// 第一场:已结束(3小时前开始,2小时前结束)
const
session1Start
=
baseTime
-
3
*
60
*
60
*
1000
;
// 3小时前
const
session1End
=
baseTime
-
2
*
60
*
60
*
1000
;
// 2小时前
const
session1End
=
baseTime
-
1
*
60
*
60
*
1000
;
// 2小时前
// 第二场:正在秒杀(30分钟前开始,30分钟后结束)
const
session2Start
=
baseTime
-
30
*
60
*
1000
;
// 30分钟前
const
session2End
=
baseTime
-
30
*
60
*
1000
;
// 30分钟后
const
session2End
=
baseTime
+
30
*
60
*
1000
;
// 30分钟后
// 第三场:即将开始(1小时后开始,2小时后结束)
const
session3Start
=
baseTime
-
1
*
60
*
60
*
1000
;
// 1小时后
const
session3End
=
baseTime
-
2
*
60
*
60
*
1000
;
// 2小时后
const
session3Start
=
baseTime
+
1
*
60
*
60
*
1000
;
// 1小时后
const
session3End
=
baseTime
+
2
*
60
*
60
*
1000
;
// 2小时后
// 第四场:即将开始(2小时后开始,3小时后结束)
const
session4Start
=
baseTime
-
2
*
60
*
60
*
1000
;
// 2小时后
const
session4End
=
baseTime
-
3
*
60
*
60
*
1000
;
// 3小时后
const
session4Start
=
baseTime
+
2
*
60
*
60
*
1000
;
// 2小时后
const
session4End
=
baseTime
+
3
*
60
*
60
*
1000
;
// 3小时后
return
{
"code"
:
"000000"
,
...
...
@@ -741,22 +749,22 @@ const generateTestSeckillData = () => {
"priceSale"
:
"200.00"
,
"stock"
:
10
},
{
"button"
:
{
"key"
:
1
,
"text"
:
"立即抢购"
},
"credits"
:
150
,
"creditsType"
:
"CREDITS"
,
"creditsTypeName"
:
"积分"
,
"goods"
:
{
"id"
:
102
,
"goodsName"
:
"测试商品B - 正在进行中"
,
"goodsImage"
:
[
"https://via.placeholder.com/150/4CAF50/FFFFFF?text=GoodB"
],
"credits"
:
"150"
,
"priceSale"
:
"300.00"
,
"stock"
:
5
},
"priceSale"
:
"300.00"
,
"stock"
:
5
}
//
{
//
"button": {"key": 1, "text": "立即抢购"},
//
"credits": 150,
//
"creditsType": "CREDITS",
//
"creditsTypeName": "积分",
//
"goods": {
//
"id": 102,
//
"goodsName": "测试商品B - 正在进行中",
//
"goodsImage": ["https://via.placeholder.com/150/4CAF50/FFFFFF?text=GoodB"],
//
"credits": "150",
//
"priceSale": "300.00",
//
"stock": 5
//
},
//
"priceSale": "300.00",
//
"stock": 5
//
}
],
"sessionKey"
:
"session_1_ongoing"
,
"start"
:
session1Start
...
...
components/integralArea/InviteGift.less
View file @
bf203755
...
...
@@ -66,7 +66,7 @@
margin-left: 0rpx;
align-items: center;
justify-content: center;
box-shadow: 0 2rpx 8rpx rgba(160, 123, 77, 0.3);
//
box-shadow: 0 2rpx 8rpx rgba(160, 123, 77, 0.3);
transition: transform 0.2s ease;
.invite_button_text {
...
...
components/integralArea/InviteGift.vue
View file @
bf203755
...
...
@@ -22,7 +22,7 @@
<view
class=
"star_character"
>
<image
class=
"star_img"
:src=
"$baseUrl +
'integral/1023/invate_star_character1023.png'
"
:src=
"$baseUrl +
(itemIndex != 4 ? 'integral/1023/invate_star_character1023.png' : 'integral/1023/invate_star_character102302.png')
"
mode=
"aspectFit"
/>
</view>
...
...
components/qiandao/SignedTips.vue
View file @
bf203755
...
...
@@ -63,6 +63,23 @@ watch(() => props.visible, (newVal) => {
}
isAnimating
.
value
=
false
;
}
// #ifdef MP-WEIXIN
if
(
newVal
)
{
// 弹窗展示时,禁止页面滚动
wx
.
setPageStyle
({
style
:
{
overflow
:
'hidden'
}
});
}
else
{
// 弹窗关闭时,恢复页面滚动
wx
.
setPageStyle
({
style
:
{
overflow
:
'auto'
}
});
}
});
// 关闭弹窗
...
...
md.js
View file @
bf203755
...
...
@@ -6,7 +6,7 @@ const init = (SENSORS_URL) => {
sensors
.
setPara
({
name
:
"sensors"
,
server_url
:
SENSORS_URL
,
show_log
:
fals
e
,
show_log
:
tru
e
,
autoTrack
:
{
appLaunch
:
true
,
// 默认为 true,false 则关闭 $MPLaunch 事件采集
appShow
:
true
,
// 默认为 true,false 则关闭 $MPShow 事件采集
...
...
pages.json
View file @
bf203755
...
...
@@ -398,6 +398,74 @@
}
]
},
{
"root"
:
"v3"
,
"pages"
:
[
{
"path"
:
"addressList/addressList"
,
"style"
:
{
"navigationBarTitleText"
:
"收货地址管理"
,
"navigationStyle"
:
"default"
}
},
{
"path"
:
"addressList/addressEdit"
,
"style"
:
{
"navigationBarTitleText"
:
"填写收货地址"
,
"navigationStyle"
:
"default"
}
},
{
"path"
:
"more/index"
,
"style"
:
{
"navigationBarTitleText"
:
"更多"
,
"navigationStyle"
:
"default"
}
},
{
"path"
:
"goodDetail/goodDetail"
,
"style"
:
{
"navigationBarTitleText"
:
"商品详情"
}
},
{
"path"
:
"settlementCenter/settlementCenter"
,
"style"
:
{
"navigationBarTitleText"
:
"结算中心"
}
},
{
"path"
:
"orderDetail/orderDetail"
,
"style"
:
{
"navigationBarTitleText"
:
"订单详情"
}
},
{
"path"
:
"payResultPage/payResultPage"
,
"style"
:
{
"navigationBarTitleText"
:
"支付结果"
}
},
{
"path"
:
"logoffConfirmPage/logoffConfirmPage"
,
"style"
:
{
"navigationBarTitleText"
:
"注销账号"
}
},
{
"path"
:
"orderList/orderList"
,
"style"
:
{
"navigationBarTitleText"
:
"我的订单"
}
},
{
"path"
:
"logisticsPage/logisticsPage"
,
"style"
:
{
"navigationBarTitleText"
:
""
}
}
]
},
{
"root"
:
"v3"
,
"pages"
:
[
...
...
pages/invate/sharepage.vue
View file @
bf203755
...
...
@@ -353,9 +353,9 @@ const handleClaim = () => {
};
const
gotoIntegral
=
()
=>
{
jump
({
url
:
'/pages/index/index?pageType=integral'
,
type
:
JumpType
.
INNER
uni
.
redirectTo
({
url
:
'/pages/index/index?pageType=integral'
});
};
...
...
stores/user.js
View file @
bf203755
...
...
@@ -253,7 +253,7 @@ export const useUserStore = defineStore("userInfo", {
uni
.
setStorageSync
(
'memberId'
,
data
?.
memberId
)
}
uni
.
setStorageSync
(
'loginStatus'
,
data
?.
memberId
==
"not_login"
?
0
:
1
)
this
.
userInfo
=
data
;
//
this.userInfo = data;
// this.memberInfo = data;
// if (data?.memberId !== "not_login") {
// this.babyInfo = data;
...
...
views/My.vue
View file @
bf203755
...
...
@@ -38,7 +38,7 @@
xcxClick: '我的页面点击',
pageName: '我的页面',
buttonName: '宝宝信息切换',
}">
}"
>
<text
class=
"nickname"
@
click=
"handleEditProfile"
>
{{
babyInfo
?.
babyStage
===
0
?
"备孕"
...
...
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