Commit 2c5ceacb authored by spc's avatar spc

Merge branch 'feihesanqi_20251014' of http://gitlab.dui88.com/fh/20250528_FHQ1...

Merge branch 'feihesanqi_20251014' of http://gitlab.dui88.com/fh/20250528_FHQ1 into feihesanqi_20251014
parents 2e2527a1 4697870b
...@@ -185,7 +185,7 @@ ...@@ -185,7 +185,7 @@
.session_status_tag { .session_status_tag {
&.ongoing { &.ongoing {
.status_text { .status_text {
color: #1C1C1C; // 颜色通过内联样式动态设置
font-weight: bold; font-weight: bold;
font-size: 20rpx; font-size: 20rpx;
} }
...@@ -207,7 +207,7 @@ ...@@ -207,7 +207,7 @@
&.start_time_text { &.start_time_text {
font-size: 30rpx; font-size: 30rpx;
font-weight: 100; font-weight: 100;
color: #503404; // 颜色通过内联样式动态设置
} }
} }
} }
...@@ -215,7 +215,7 @@ ...@@ -215,7 +215,7 @@
.session_status_tag { .session_status_tag {
&.upcoming { &.upcoming {
.upcoming_text { .upcoming_text {
color: #1C1C1C; // 颜色通过内联样式动态设置
font-weight: bold; font-weight: bold;
font-size: 20rpx; font-size: 20rpx;
} }
...@@ -223,7 +223,7 @@ ...@@ -223,7 +223,7 @@
&.ended { &.ended {
.ended_text { .ended_text {
color: #1C1C1C; // 颜色通过内联样式动态设置
font-weight: bold; font-weight: bold;
font-size: 20rpx; font-size: 20rpx;
} }
...@@ -345,7 +345,7 @@ ...@@ -345,7 +345,7 @@
.good_price { .good_price {
font-size: 24rpx; font-size: 24rpx;
color: #B27C1E; // 颜色通过内联样式动态设置
} }
.good_original_price { .good_original_price {
...@@ -479,7 +479,7 @@ ...@@ -479,7 +479,7 @@
.session_status_tag { .session_status_tag {
&.ongoing { &.ongoing {
.status_text { .status_text {
color: #1d1e25; // 颜色通过内联样式动态设置
// font-weight: bold; // font-weight: bold;
font-size: 40rpx; font-size: 40rpx;
} }
...@@ -487,7 +487,7 @@ ...@@ -487,7 +487,7 @@
&.upcoming { &.upcoming {
.upcoming_text { .upcoming_text {
color: #1d1e25; // 颜色通过内联样式动态设置
font-weight: bold; font-weight: bold;
font-size: 40rpx; font-size: 40rpx;
} }
...@@ -495,7 +495,7 @@ ...@@ -495,7 +495,7 @@
&.ended { &.ended {
.ended_text { .ended_text {
color: #1d1e25; // 颜色通过内联样式动态设置
font-weight: bold; font-weight: bold;
font-size: 40rpx; font-size: 40rpx;
} }
...@@ -505,7 +505,7 @@ ...@@ -505,7 +505,7 @@
.tab_time_info { .tab_time_info {
.tab_time_text { .tab_time_text {
font-size: 20rpx; font-size: 20rpx;
color: #B27C1E; // 颜色通过内联样式动态设置
font-weight: bold; font-weight: bold;
display: flex; display: flex;
align-items: center; align-items: center;
...@@ -515,7 +515,7 @@ ...@@ -515,7 +515,7 @@
&.start_time_text { &.start_time_text {
font-size: 30rpx; font-size: 30rpx;
font-weight: 100; font-weight: 100;
color: #503404; // 颜色通过内联样式动态设置
} }
// 倒计时数字样式 // 倒计时数字样式
......
...@@ -36,17 +36,17 @@ ...@@ -36,17 +36,17 @@
</view> </view>
</view> </view>
<view class="session_status_tag ongoing"> <view class="session_status_tag ongoing">
<text class="status_text">正在秒杀</text> <text class="status_text" :style="{ color: getColor('statusTextColor')[itemIndex] }">正在秒杀</text>
</view> </view>
</view> </view>
<!-- 即将开始/已过期状态:开始时间在上,状态文案在下 --> <!-- 即将开始/已过期状态:开始时间在上,状态文案在下 -->
<view v-else class="tab_content_other"> <view v-else class="tab_content_other">
<view class="tab_time_info"> <view class="tab_time_info">
<text class="tab_time_text start_time_text">{{ getStartTime(session) }}</text> <text class="tab_time_text start_time_text" :style="{ color: getColor('statusTextColor')[itemIndex] }">{{ getStartTime(session) }}</text>
</view> </view>
<view class="session_status_tag" :class="session.status"> <view class="session_status_tag" :class="session.status">
<text v-if="session.status === 'upcoming'" class="status_text upcoming_text">即将开始</text> <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">已结束</text> <text v-else class="status_text ended_text" :style="{ color: getColor('statusTextColor')[itemIndex] }">已结束</text>
</view> </view>
</view> </view>
</view> </view>
...@@ -55,9 +55,9 @@ ...@@ -55,9 +55,9 @@
<!-- 单场次状态显示 --> <!-- 单场次状态显示 -->
<view class="single_session_status" v-else-if="creditsSaleData.sessions && creditsSaleData.sessions.length === 1"> <view class="single_session_status" v-else-if="creditsSaleData.sessions && creditsSaleData.sessions.length === 1">
<view class="session_status_tag" :class="creditsSaleData.sessions[0].status"> <view class="session_status_tag" :class="creditsSaleData.sessions[0].status">
<text v-if="creditsSaleData.sessions[0].status === 'ongoing'" class="status_text">正在秒杀</text> <text v-if="creditsSaleData.sessions[0].status === 'ongoing'" class="status_text" :style="{ color: getColor('statusTextColor')[itemIndex] }">正在秒杀</text>
<text v-else-if="creditsSaleData.sessions[0].status === 'upcoming'" class="status_text upcoming_text">即将开始</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">已结束</text> <text v-else class="status_text ended_text" :style="{ color: getColor('statusTextColor')[itemIndex] }">已结束</text>
</view> </view>
<view class="tab_time_info"> <view class="tab_time_info">
<view v-if="creditsSaleData.sessions[0].status === 'ongoing'" class="tab_time_text countdown_display"> <view v-if="creditsSaleData.sessions[0].status === 'ongoing'" class="tab_time_text countdown_display">
...@@ -71,7 +71,7 @@ ...@@ -71,7 +71,7 @@
</view> </view>
</view> </view>
</view> </view>
<text v-else class="tab_time_text start_time_text">{{ getStartTime(creditsSaleData.sessions[0]) }}</text> <text v-else class="tab_time_text start_time_text" :style="{ color: getColor('statusTextColor')[itemIndex] }">{{ getStartTime(creditsSaleData.sessions[0]) }}</text>
</view> </view>
</view> </view>
...@@ -96,7 +96,7 @@ ...@@ -96,7 +96,7 @@
<text class="good_name">{{ good.name }}</text> <text class="good_name">{{ good.name }}</text>
<!-- 积分价格 --> <!-- 积分价格 -->
<view class="good_price_container"> <view class="good_price_container">
<text class="good_price">{{ good.points }}积分</text> <text class="good_price" :style="{ color: getColor('goodPriceColor')[itemIndex] }">{{ good.points }}积分</text>
<text class="good_original_price" <text class="good_original_price"
v-if="good.originalPoints && good.originalPoints !== good.points">{{ v-if="good.originalPoints && good.originalPoints !== good.points">{{
good.originalPoints }}积分</text> good.originalPoints }}积分</text>
...@@ -161,6 +161,14 @@ const getColor = (type) => { ...@@ -161,6 +161,14 @@ const getColor = (type) => {
// Tab切换区域背景色 // Tab切换区域背景色
colors = ['#e5d5b0', '#a9cce8', '#d7c9ee', '#e6d7a5', '#2b221d']; colors = ['#e5d5b0', '#a9cce8', '#d7c9ee', '#e6d7a5', '#2b221d'];
break; break;
case 'statusTextColor':
// 状态文字和时间文字颜色
colors = ['#503404', '#284a6c', '#322d6f', '#513403', '#f7d1a0'];
break;
case 'goodPriceColor':
// 商品价格颜色
colors = ['#a57e35', '#354a69', '#342e6b', '#754b20', '#eae3be'];
break;
} }
return colors; return colors;
}; };
...@@ -589,9 +597,9 @@ const generateTestSeckillData = () => { ...@@ -589,9 +597,9 @@ const generateTestSeckillData = () => {
const session1Start = baseTime - 3 * 60 * 60 * 1000; // 3小时前 const session1Start = baseTime - 3 * 60 * 60 * 1000; // 3小时前
const session1End = baseTime - 2 * 60 * 60 * 1000; // 2小时前 const session1End = baseTime - 2 * 60 * 60 * 1000; // 2小时前
// 第二场:已结束(2小时前开始,1小时前结束) // 第二场:正在秒杀(30分钟前开始,30分钟后结束)
const session2Start = baseTime - 2 * 60 * 60 * 1000; // 2小时 const session2Start = baseTime - 30 * 60 * 1000; // 30分钟
const session2End = baseTime - 1 * 60 * 60 * 1000; // 1小时前 const session2End = baseTime + 30 * 60 * 1000; // 30分钟后
// 第三场:即将开始(1小时后开始,2小时后结束) // 第三场:即将开始(1小时后开始,2小时后结束)
const session3Start = baseTime + 1 * 60 * 60 * 1000; // 1小时后 const session3Start = baseTime + 1 * 60 * 60 * 1000; // 1小时后
...@@ -649,23 +657,55 @@ const generateTestSeckillData = () => { ...@@ -649,23 +657,55 @@ const generateTestSeckillData = () => {
"end": session2End, "end": session2End,
"goods": [ "goods": [
{ {
"button": {"key": 2, "text": "即将开始"}, "button": {"key": 1, "text": "立即抢购"},
"credits": 200, "credits": 200,
"creditsType": "CREDITS", "creditsType": "CREDITS",
"creditsTypeName": "积分", "creditsTypeName": "积分",
"goods": { "goods": {
"id": 201, "id": 201,
"goodsName": "测试商品C - 即将开始", "goodsName": "限时秒杀商品A - 正在进行中",
"goodsImage": ["https://via.placeholder.com/150/2196F3/FFFFFF?text=GoodC"], "goodsImage": ["https://via.placeholder.com/150/FF6B35/FFFFFF?text=SeckillA"],
"credits": "200", "credits": "200",
"priceSale": "400.00", "priceSale": "400.00",
"stock": 8 "stock": 15
}, },
"priceSale": "400.00", "priceSale": "400.00",
"stock": 15
},
{
"button": {"key": 1, "text": "立即抢购"},
"credits": 300,
"creditsType": "CREDITS",
"creditsTypeName": "积分",
"goods": {
"id": 202,
"goodsName": "限时秒杀商品B - 正在进行中",
"goodsImage": ["https://via.placeholder.com/150/4CAF50/FFFFFF?text=SeckillB"],
"credits": "300",
"priceSale": "600.00",
"stock": 8
},
"priceSale": "600.00",
"stock": 8 "stock": 8
},
{
"button": {"key": 1, "text": "立即抢购"},
"credits": 150,
"creditsType": "CREDITS",
"creditsTypeName": "积分",
"goods": {
"id": 203,
"goodsName": "限时秒杀商品C - 正在进行中",
"goodsImage": ["https://via.placeholder.com/150/9C27B0/FFFFFF?text=SeckillC"],
"credits": "150",
"priceSale": "300.00",
"stock": 12
},
"priceSale": "300.00",
"stock": 12
} }
], ],
"sessionKey": "session_2_upcoming", "sessionKey": "session_2_ongoing",
"start": session2Start "start": session2Start
}, },
{ {
...@@ -793,18 +833,18 @@ const generateTestSeckillData = () => { ...@@ -793,18 +833,18 @@ const generateTestSeckillData = () => {
const loadSeckillData = async () => { const loadSeckillData = async () => {
try { try {
// 使用测试数据 // 使用测试数据
const testData = generateTestSeckillData(); // const testData = generateTestSeckillData();
mapSeckillDataToCreditsSale(testData); // mapSeckillDataToCreditsSale(testData);
// // 初始化倒计时 // // // 初始化倒计时
initCountdowns(); // initCountdowns();
// 如果需要真实数据,可以取消注释下面的代码 // 如果需要真实数据,可以取消注释下面的代码
// const seckillData = await integralStore.getSeckillData(props.isdebug); const seckillData = await integralStore.getSeckillData(props.isdebug);
// if (seckillData) { if (seckillData) {
// mapSeckillDataToCreditsSale(seckillData); mapSeckillDataToCreditsSale(seckillData);
// // 初始化倒计时 // 初始化倒计时
// initCountdowns(); initCountdowns();
// } }
} catch (error) { } catch (error) {
console.error('获取秒杀数据失败:', error); console.error('获取秒杀数据失败:', error);
} }
......
...@@ -178,6 +178,7 @@ const checkAndUpdateTaskResult = async () => { ...@@ -178,6 +178,7 @@ const checkAndUpdateTaskResult = async () => {
}; };
onMounted(async () => { onMounted(async () => {
//签到奖品
await checkAndUpdateTaskResult(); await checkAndUpdateTaskResult();
// 调用邀请活动首页接口 // 调用邀请活动首页接口
......
...@@ -16,6 +16,17 @@ ...@@ -16,6 +16,17 @@
/> />
</view> </view>
<!-- 邀请奖品弹窗 -->
<InvitePrizePanel
:visible="isShowInvitePrizePanel"
:inviteCount="1"
:prizeName="'奖品名称奖品名称'"
:prizeImage="''"
@close="handleCloseInvitePrizePanel"
@record="handleInvitePrizePanelRecord"
@prize="handleInvitePrizePanelPrize"
/>
<!-- 分享登录弹窗 --> <!-- 分享登录弹窗 -->
<!-- <sharepoplogin <!-- <sharepoplogin
...@@ -65,11 +76,7 @@ const userStore = useUserStore(); ...@@ -65,11 +76,7 @@ const userStore = useUserStore();
const globalStore = useGlobalStore(); const globalStore = useGlobalStore();
const integralStore = useIntegralStore(); const integralStore = useIntegralStore();
const isLogin = computed(()=>{ const isLogin = ref(false);
//return false
console.log('isLogin--sharepage:', userStore.isLogin);
return userStore.isLogin;
})
const isnew = ref(false); const isnew = ref(false);
...@@ -78,6 +85,12 @@ const unionId = ref(''); ...@@ -78,6 +85,12 @@ const unionId = ref('');
const showPhone = ref(false); const showPhone = ref(false);
const isShowInvitePrizePanel = ref(false);
const inviteCount = ref(0);
const prizeName = ref('');
const prizeImage = ref('');
// 获取邀请码和unionId // 获取邀请码和unionId
const initInviteParams = () => { const initInviteParams = () => {
const pages = getCurrentPages(); const pages = getCurrentPages();
...@@ -94,6 +107,32 @@ const initInviteParams = () => { ...@@ -94,6 +107,32 @@ const initInviteParams = () => {
}; };
onMounted(() => { onMounted(() => {
// 调用邀请活动首页接口
const integralStore = useIntegralStore();
//获取邀请码和奖励
const res = await integralStore.getOriginInviteHome();
// const unionId = uni.getStorageSync('unionId');
const unclaimedPrize = res.data?.unclaimedPrize;
if(res.success){
if(res.data?.notLogin){
isLogin.value = false;
}else{
isLogin.value = true;
if(unclaimedPrize) {
isShowInvitePrizePanel.value = true;
inviteCount.value = res.data?.invitedCount;
prizeName.value = unclaimedPrize?.prizeName;
prizeImage.value = res.data?.prizeImageUrl;
}
}
}else{
uni.showToast({title: '网络问题,请稍后再试', icon: 'none'});
}
console.log('onMounted--sharepage:', isLogin.value);
// 页面加载时显示分享未登录弹窗 // 页面加载时显示分享未登录弹窗
// showShareNPopNoLogin.value = true; // showShareNPopNoLogin.value = true;
...@@ -108,8 +147,8 @@ onMounted(() => { ...@@ -108,8 +147,8 @@ onMounted(() => {
} }
}); });
// Phone authorization // Phone authorization
const onGetPhoneNumber = async (e) => { const onGetPhoneNumber = async (e) => {
console.log('onGetPhoneNumber', e.detail) console.log('onGetPhoneNumber', e.detail)
showLoading('授权中...') showLoading('授权中...')
const pages = getCurrentPages(); const pages = getCurrentPages();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment