拼团修改

This commit is contained in:
2025-12-18 09:42:46 +08:00
parent 261c7af9f8
commit a4043cbfd0
3 changed files with 101 additions and 75 deletions

View File

@@ -1,7 +1,7 @@
<template>
<view class="min-page bg-f7 color-333 u-font-28 relative">
<view class="top" :style="topStyle">
<up-navbar bg-color="transparent" :fixed="false" :placeholder="false" title="订单详情" left-icon-color="#fff"
<up-navbar bg-color="transparent" :fixed="false" :placeholder="false" title="订单详情" left-icon-color="#fff" @leftClick="uni.navigateBack()"
title-color="#fff"></up-navbar>
<view class="u-flex info u-col-center">
</view>
@@ -184,8 +184,16 @@
})
function init(opt) {
// 获取小程序进入场景和参数
const launchOptions = uni.getLaunchOptionsSync();
console.log(launchOptions);
// 获取链接上的参数
const launchOptionsQuery = launchOptions.query;
console.log('launchOptionsQuery', launchOptionsQuery);
Object.assign(query, launchOptionsQuery)
console.log(opt)
Object.assign(query, opt)
console.log(query)
getDetail()
}
const item = reactive({})

View File

@@ -33,9 +33,10 @@
</view>
</view>
<view class="bg-f7" style="height: 32rpx"></view>
<view class="groups">
<view class="color-000 u-m-b-28 u-font-32 font-700">立即拼团</view>
<template v-if="item.gbOrderList.length">
<view class="bg-f7" style="height: 32rpx"></view>
<view class="groups">
<view class="color-000 u-m-b-28 u-font-32 font-700">立即拼团</view>
<view class="item u-flex" v-for="(item,index) in item.gbOrderList" :key="index">
<up-avatar size="76rpx" :src="item.avatar"></up-avatar>
<view class="u-flex u-flex-1 u-p-l-22 u-col-center u-row-between">
@@ -52,8 +53,10 @@
</view>
</view>
</view>
</view>
</template>
<view class="bg-f7" style="height: 32rpx"></view>
@@ -196,7 +199,7 @@
const popupData = reactive({
show: false,
item:null
item: null
});
function exchangeClick() {
@@ -204,13 +207,13 @@
}
function fastBuy(item){
popupData.item=item;
function fastBuy(item) {
popupData.item = item;
popupData.show = true
}
watch(()=>popupData.show,(newval)=>{
if(!newval){
popupData.item=null
watch(() => popupData.show, (newval) => {
if (!newval) {
popupData.item = null
}
})
@@ -230,7 +233,7 @@
shopId: item.shopId,
number: 1,
price: item.extraPrice,
groupOrderNo:popupData.item?popupData.item.groupOrderNo:'',
groupOrderNo: popupData.item ? popupData.item.groupOrderNo : '',
openId
}).then(orderRes => {
popupData.show = false;
@@ -238,7 +241,8 @@
console.log(res)
if (res) {
uni.redirectTo({
url: '/groupBuying/success/index?detailId='+orderRes.goodsRecord.id
url: '/groupBuying/success/index?detailId=' + orderRes.goodsRecord
.id
})
} else {
uni.showToast({
@@ -327,20 +331,29 @@
const query = reactive({
shopId: '',
wareId: '',
groupOrderNo:''
})
const coverImgs = ref([])
function init(opt) {
// 获取小程序进入场景和参数
const launchOptions = uni.getLaunchOptionsSync();
console.log(launchOptions);
// 获取链接上的参数
const launchOptionsQuery = launchOptions.query;
console.log('launchOptionsQuery', launchOptionsQuery);
Object.assign(query, launchOptionsQuery)
console.log(opt)
Object.assign(query, opt)
console.log(query)
getDetail()
}
function getDetail() {
Api.wareDetail(query).then(res => {
res.wareCommentImgs = res.wareCommentImgs.split(',').filter(v=>v)
res.wareCommentImgs = res.wareCommentImgs.split(',').filter(v => v)
Object.assign(item, res)
console.log(item)
coverImgs.value = res.wareImgs.split(',')
@@ -354,8 +367,8 @@
* @returns {number} 剩余时间(毫秒)
*/
function returnRemainingTime(item) {
if (!item?.groupEndTime) return 0; // 容错无结束时间则返回0
return dayjs(item.groupEndTime).valueOf() - dayjs().valueOf();
if (!item?.groupEndTime) return 0; // 容错无结束时间则返回0
return dayjs(item.groupEndTime).valueOf() - dayjs().valueOf();
}
/**
@@ -364,44 +377,44 @@
* @returns {string} 格式化后的时分秒(如 09:09:09、72:00:00、00:00:00
*/
function formatTimeToHMS(ms) {
// 边界1已过期/无剩余时间 → 显示00:00:00
if (ms <= 0) return '00:00:00';
// 边界1已过期/无剩余时间 → 显示00:00:00
if (ms <= 0) return '00:00:00';
// 边界2超过72小时 → 按72小时算72*60*60*1000 = 259200000毫秒
const maxMs = 72 * 60 * 60 * 1000;
const validMs = Math.min(ms, maxMs);
// 边界2超过72小时 → 按72小时算72*60*60*1000 = 259200000毫秒
const maxMs = 72 * 60 * 60 * 1000;
const validMs = Math.min(ms, maxMs);
// 转换为总秒数(取整,避免小数)
const totalSeconds = Math.floor(validMs / 1000);
// 转换为总秒数(取整,避免小数)
const totalSeconds = Math.floor(validMs / 1000);
// 拆解小时、分钟、秒
const hours = Math.floor(totalSeconds / 3600);
const remainingSeconds = totalSeconds % 3600;
const minutes = Math.floor(remainingSeconds / 60);
const seconds = remainingSeconds % 60;
// 拆解小时、分钟、秒
const hours = Math.floor(totalSeconds / 3600);
const remainingSeconds = totalSeconds % 3600;
const minutes = Math.floor(remainingSeconds / 60);
const seconds = remainingSeconds % 60;
// 补零(确保两位数,如 9 → 09
const pad = (num) => String(num).padStart(2, '0');
return `${pad(hours)}:${pad(minutes)}:${pad(seconds)}`;
// 补零(确保两位数,如 9 → 09
const pad = (num) => String(num).padStart(2, '0');
return `${pad(hours)}:${pad(minutes)}:${pad(seconds)}`;
}
let timer=null
let nowTime=ref(Date.now())
timer=setInterval(()=>{
nowTime.value=Date.now()
},1000)
let timer = null
let nowTime = ref(Date.now())
timer = setInterval(() => {
nowTime.value = Date.now()
}, 1000)
// 组合使用:获取格式化后的剩余时间
function getRemainingHMS(item) {
nowTime.value
const ms = returnRemainingTime(item);
return formatTimeToHMS(ms);
const ms = returnRemainingTime(item);
return formatTimeToHMS(ms);
}
function returnNeedPerpole(data){
return data.groupPeopleNum-data.currentPeopleNum
function returnNeedPerpole(data) {
return data.groupPeopleNum - data.currentPeopleNum
}
@@ -622,24 +635,28 @@
width: 100%;
}
.groups{
.groups {
padding: 28rpx 22rpx;
background-color: #fff;
.item{
.item {
padding: 28rpx 0;
border-bottom: 2rpx solid #EDEDED;
&:last-child{
&:last-child {
border-bottom: none;
}
.main-color{
color: #ed5a2e;
.main-color {
color: #ed5a2e;
}
.btn{
.btn {
padding: 8rpx 26rpx;
border-radius: 36rpx;
background: #E8AD7B;
font-weight: 700;
color: #fff;
font-weight: 700;
color: #fff;
}
}
}

View File

@@ -352,12 +352,13 @@
onShareAppMessage(() => {
console.log('onShareAppMessage')
console.log(shareItem)
const query=`groupOrderNo=${shareItem.groupOrderNo}&shopId=${shareItem.shopId}`
return wxShare({
title: shareItem.wareJson.wareName,
imageUrl: shareItem.goodsImg,
path:'/groupBuying/goodsDetail/goodsDetail',
query: `wareId=${shareItem.wareId}&shopId=${shareItem.shopId}`,
path:'/groupBuying/detail/index' +'?'+query,
query,
})
})
onLoad(getData)