Commit d3a0bb19 authored by jt's avatar jt

Merge branch 'feihesanqi_20251014' of gitlab2.dui88.com:fh/20250528_FHQ1 into feihesanqi_20251014

parents 5c5f5a0c b7cae427
......@@ -15,14 +15,8 @@ export const fetchGoodsDetail = (data) => api.get('/c/goods/detail', data);
/**
* 获取秒杀商品详情
* @param {Object} data - 请求参数
* @param {string} data.id - 商品ID (必须)
* @param {string} [data.phone] - 充值号码 (可选)
* @param {string} [data.buyNum=1] - 下单数量 (可选,默认1)
* @param {string} [data.storeId] - 门店ID (可选)
* @param {string} [data.amount] - 充值面额 (可选)
* @param {string} [data.channel] - 渠道 (可选)
* @param {string} [data.addressId] - 地址ID (可选)
* @param {string} data.appGoodsId - 应用商品ID (必须)
* @param {string} data.gid - 商品ID (必须)
* @param {string} data.activityId - 活动ID (必须)
* @param {string} data.sessionKey - 会话密钥 (必须)
* @returns {Promise} API响应
* @description 获取秒杀商品详情信息
......
......@@ -14,9 +14,9 @@
<text class="card_description">成功邀请一位好友注册即可获得XXX</text>
<!-- 去邀请按钮 -->
<Button class="invite_button" @click="handleInviteClick" type="share">
<view class="invite_button" @tap="handleInviteClick" open-type="share">
<text class="invite_button_text">去邀请</text>
</Button>
</view>
</view>
<!-- 3D星星角色 -->
<view class="star_character">
......@@ -33,13 +33,13 @@
</view>
<!-- 3D星星角色 -->
<view class="star_character">
<!-- <view class="star_character">
<image
class="star_img"
:src="$baseUrl + 'integral/1023/star_character.png'"
mode="aspectFit"
/>
</view>
</view> -->
</view>
</view>
</template>
......@@ -47,17 +47,33 @@
<script setup>
import { defineEmits } from 'vue';
import { onShareAppMessage } from '@dcloudio/uni-app';
import { jump, JumpType } from '../../utils';
// Emits 定义
const emit = defineEmits(['invite', 'record']);
// 去邀请按钮点击事件
const handleInviteClick = () => {
console.log('去邀请按钮点击');
jump({
url: '/pages/invate/sharepage',
type: JumpType.INNER
});
emit('invite');
};
// 分享配置
onShareAppMessage(() => {
return {
title: '积分分享',
path: '/pages/invate/sharepage',
imageUrl: ''
};
});
// 邀请记录按钮点击事件
const handleRecordClick = () => {
console.log('邀请记录按钮点击');
......
......@@ -10,7 +10,7 @@
<view class="prize_image_area">
<image
class="prize_image"
:src="prizeImage || $baseUrl + 'integral/1023/prize_placeholder.png'"
:src="prizeImage || $baseUrl + 'integral/1023/invate_star_character1023.png'"
mode="aspectFit"
/>
</view>
......
.sharenpopnologin_overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
display: flex;
align-items: center;
justify-content: center;
z-index: 9999;
.sharenpopnologin_container {
width: 546rpx;
height: 536rpx;
background: linear-gradient(to top, #ffffff 0%, #ffffff 50%, #FFE9C5 100%); // 金色渐变,上面渐变更慢
border-radius: 30rpx;
box-shadow: 0 8rpx 32rpx rgba(0, 0, 0, 0.2);
position: relative;
padding: 92rpx 30rpx 0rpx 30rpx;
.popup_content {
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
.popup_title {
font-size: 36rpx;
font-weight: bold;
color: #D3A458;
margin-bottom: 60rpx;
line-height: 1.4;
}
.star_character {
margin-bottom: 60rpx;
.star_img {
width: 200rpx;
height: 200rpx;
}
}
.view_button {
width: 400rpx;
height: 80rpx;
background: #D3A458; // 金色渐变
border-radius: 40rpx;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 4rpx 16rpx rgba(212, 164, 104, 0.3);
.view_button_text {
font-size: 32rpx;
font-weight: bold;
color: #ffffff;
}
}
}
.close_button {
position: absolute;
bottom: -120rpx;
left: 50%;
transform: translateX(-50%);
width: 60rpx;
height: 60rpx;
background: rgba(255, 255, 255, 0.3);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.2);
z-index: 2;
.close_icon {
font-size: 36rpx;
color: #fff;
font-weight: bold;
line-height: 1;
}
}
}
}
<template>
<view class="sharenpopnologin_overlay" v-if="visible">
<view class="sharenpopnologin_container" @click.stop>
<!-- 弹窗内容 -->
<view class="popup_content">
<!-- 标题文字 -->
<text class="popup_title">快去查看你的权益吧</text>
<!-- 3D星星角色 -->
<view class="star_character">
<image
class="star_img"
:src="$baseUrl + 'integral/1023/invate_star_character1023.png'"
mode="aspectFit"
/>
</view>
<!-- 立即查看按钮 -->
<view class="view_button" @click="handleViewBenefits">
<text class="view_button_text">立即查看</text>
</view>
</view>
<!-- 关闭按钮 -->
<view class="close_button" @click="handleClose">
<text class="close_icon">×</text>
</view>
</view>
</view>
</template>
<script setup>
import { defineProps, defineEmits } from 'vue';
import { jump, JumpType } from '../../utils';
// Props 定义
const props = defineProps({
visible: {
type: Boolean,
default: false
}
});
// Emits 定义
const emit = defineEmits(['close', 'viewBenefits']);
// 关闭弹窗
const handleClose = () => {
emit('close');
gotoIntegral();
};
// 查看权益按钮点击
const handleViewBenefits = () => {
emit('viewBenefits');
emit('close');
gotoIntegral();
};
const gotoIntegral = () => {
jump({
url: '/pages/index/index?pageType=integral',
type: JumpType.INNER
});
};
</script>
<style lang="less" scoped>
@import '@/components/integralArea/sharenpopnologin.less';
</style>
.sharepoplogin_overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
display: flex;
align-items: center;
justify-content: center;
z-index: 9999;
.sharepoplogin_container {
// box-sizing: border-box;
width: 546rpx;
height: 536rpx;
background: linear-gradient(to top, #ffffff 0%, #ffffff 50%, #FFE9C5 100%); // 金色渐变,上面渐变更慢
border-radius: 30rpx;
box-shadow: 0 8rpx 32rpx rgba(0, 0, 0, 0.2);
position: relative;
padding: 72rpx 30rpx 0rpx 30rpx;
.popup_content {
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
.popup_title {
font-size: 36rpx;
font-weight: bold;
color: #D3A458;
margin-bottom: 16rpx;
line-height: 1.4;
}
.popup_subtitle {
font-size: 28rpx;
color: #54390D;
margin-bottom: 40rpx;
line-height: 1.4;
}
.star_character {
margin-bottom: 40rpx;
.star_img {
width: 200rpx;
height: 200rpx;
}
}
.benefits_button {
width: 400rpx;
height: 80rpx;
background: #D3A458;
border-radius: 40rpx;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 4rpx 16rpx rgba(212, 164, 104, 0.3);
.benefits_button_text {
font-size: 32rpx;
font-weight: bold;
color: #ffffff;
}
}
}
.close_button {
position: absolute;
bottom: -120rpx;
left: 50%;
transform: translateX(-50%);
width: 60rpx;
height: 60rpx;
background: rgba(255, 255, 255, 0.3);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.2);
z-index: 2;
.close_icon {
font-size: 36rpx;
color: #fff;
font-weight: bold;
line-height: 1;
}
}
}
}
<template>
<view class="sharepoplogin_overlay" v-if="visible">
<view class="sharepoplogin_container" @click.stop>
<!-- 弹窗内容 -->
<view class="popup_content">
<!-- 标题文字 -->
<text class="popup_title">你已注册过飞鹤星妈会会员</text>
<text class="popup_subtitle">直接领取你的权益吧</text>
<!-- 3D星星角色 -->
<view class="star_character">
<image
class="star_img"
:src="$baseUrl + 'integral/1023/invate_star_character1023.png'"
mode="aspectFit"
/>
</view>
<!-- 查看权益按钮 -->
<view class="benefits_button" @click="handleViewBenefits">
<text class="benefits_button_text">查看我的权益</text>
</view>
</view>
<!-- 关闭按钮 -->
<view class="close_button" @click="handleClose">
<text class="close_icon">×</text>
</view>
</view>
</view>
</template>
<script setup>
import { defineProps, defineEmits } from 'vue';
import { jump, JumpType } from '../../utils';
// Props 定义
const props = defineProps({
visible: {
type: Boolean,
default: false
}
});
// Emits 定义
const emit = defineEmits(['close', 'viewBenefits']);
// 关闭弹窗
const handleClose = () => {
emit('close');
gotoIntegral();
};
// 查看权益按钮点击
const handleViewBenefits = () => {
emit('viewBenefits');
emit('close');
gotoIntegral();
};
const gotoIntegral = () => {
jump({
url: '/pages/index/index?pageType=integral',
type: JumpType.INNER
});
};
</script>
<style lang="less" scoped>
@import '@/components/integralArea/sharepoplogin.less';
</style>
......@@ -9,11 +9,59 @@
<text class="claim_text">一键领取</text>
</view>
</view>
<!-- 分享登录弹窗 -->
<sharepoplogin
:visible="showSharePopLogin"
@close="handleCloseSharePopLogin"
@viewBenefits="handleViewBenefits"
/>
<!-- 分享未登录弹窗 -->
<sharenpopnologin
:visible="showShareNPopNoLogin"
@close="handleCloseShareNPopNoLogin"
@viewBenefits="handleViewBenefits"
/>
</view>
</template>
<script setup>
import { onMounted, ref } from 'vue';
import { onShareAppMessage } from '@dcloudio/uni-app';
import sharepoplogin from '@/components/integralArea/sharepoplogin.vue';
import sharenpopnologin from '@/components/integralArea/sharenpopnologin.vue';
// 分享登录弹窗状态
const showSharePopLogin = ref(false);
// 分享未登录弹窗状态
const showShareNPopNoLogin = ref(true);
onMounted(() => {
// 页面加载时显示分享未登录弹窗
showShareNPopNoLogin.value = true;
});
// 关闭分享登录弹窗
const handleCloseSharePopLogin = () => {
showSharePopLogin.value = false;
};
// 关闭分享未登录弹窗
const handleCloseShareNPopNoLogin = () => {
showShareNPopNoLogin.value = false;
};
// 查看权益按钮点击
const handleViewBenefits = () => {
console.log('查看我的权益');
// 这里可以添加跳转到权益页面的逻辑
uni.showToast({
title: '跳转到权益页面',
icon: 'none'
});
};
// 一键领取按钮点击事件
const handleClaim = () => {
......
......@@ -314,20 +314,14 @@ export default {
// 构建秒杀API请求参数
const seckillParams = {
id: this.seckillParams.appGoodsId,
phone: options.phone || '',
buyNum: options.buyNum || '1',
storeId: options.storeId || '',
amount: options.amount || '',
channel: options.channel || '',
addressId: options.addressId || '',
appGoodsId: this.seckillParams.appGoodsId,
gid: this.seckillParams.appGoodsId,
activityId: this.seckillParams.activityId,
sessionKey: this.seckillParams.sessionKey
};
console.log('秒杀API请求参数:', seckillParams);
if (seckillParams.id && seckillParams.appGoodsId && seckillParams.sessionKey) {
if (seckillParams.gid && seckillParams.activityId && seckillParams.sessionKey) {
this.fetchSeckillDetail(seckillParams);
} else {
uni.showToast({
......@@ -682,9 +676,9 @@ export default {
getButtonClass() {
const classes = {};
// 未登录状态
// 未登录状态保持正常样式
if (!this.cfgStatus.isRegister) {
return classes; // 未登录时保持正常样式
return classes;
}
// 根据兑换状态添加对应样式
......@@ -1281,14 +1275,14 @@ export default {
.points-value {
font-size: 48rpx;
font-weight: bold;
color: #e6a23c;
color: #D3A458;
margin-right: 10rpx;
}
.points-unit {
font-size: 28rpx;
font-weight: normal;
color: #e6a23c;
color: #D3A458;
}
.exchange-count {
......@@ -1379,7 +1373,7 @@ export default {
.exchange-btn {
width: 100%;
height: 90rpx;
background-color: #e6a23c;
background-color: #D3A458;
color: #fff;
font-size: 32rpx;
border-radius: 45rpx;
......@@ -1390,32 +1384,23 @@ export default {
}
.exchange-btn:active {
background-color: #d4902b;
}
.exchange-btn.disabled {
background-color: #ccc;
color: #999;
}
.exchange-btn.sold-out {
background-color: #999;
color: #fff;
}
.exchange-btn.insufficient-points {
background-color: #f56c6c;
color: #fff;
background-color: #B8944A;
}
.exchange-btn.insufficient-level {
background-color: #909399;
/* 未登录状态保持金色背景 */
.exchange-btn:not(.sold-out):not(.insufficient-points):not(.insufficient-level):not(.exchange-limit):not(.disabled) {
background-color: #D3A458;
color: #fff;
}
.exchange-btn.exchange-limit {
background-color: #909399;
color: #fff;
/* 各种不可兑换状态都显示灰色背景 */
.exchange-btn.sold-out,
.exchange-btn.insufficient-points,
.exchange-btn.insufficient-level,
.exchange-btn.exchange-limit,
.exchange-btn.disabled {
background-color: #ccc;
color: #999;
}
/* 规格选择弹窗样式 */
......@@ -1489,7 +1474,7 @@ export default {
.product-points {
font-size: 32rpx;
font-weight: bold;
color: #e6a23c;
color: #D3A458;
margin-bottom: 10rpx;
display: block;
}
......
......@@ -2828,23 +2828,23 @@ const handleInviteClick = () => {
console.log('准备调起分享面板');
// 方法1:使用 showShareMenu
uni.showShareMenu({
withShareTicket: true,
menus: ['shareAppMessage', 'shareTimeline'],
success: (res) => {
console.log('showShareMenu 成功:', res);
},
fail: (err) => {
console.error('showShareMenu 失败:', err);
// 备用方案:显示提示用户手动分享
uni.showModal({
title: '分享提示',
content: '请点击右上角菜单选择分享给好友或朋友圈',
showCancel: false,
confirmText: '知道了'
});
}
});
// uni.showShareMenu({
// withShareTicket: true,
// menus: ['shareAppMessage', 'shareTimeline'],
// success: (res) => {
// console.log('showShareMenu 成功:', res);
// },
// fail: (err) => {
// console.error('showShareMenu 失败:', err);
// // 备用方案:显示提示用户手动分享
// uni.showModal({
// title: '分享提示',
// content: '请点击右上角菜单选择分享给好友或朋友圈',
// showCancel: false,
// confirmText: '知道了'
// });
// }
// });
// 展示邀请得礼弹窗
// globalStore.isShowInvitePrizePanel = true;
......
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