调整分享部分方法,修改点餐页分享

This commit is contained in:
2026-01-21 15:11:01 +08:00
parent 654ed39854
commit 8f1b21bf00
7 changed files with 200 additions and 72 deletions

View File

@@ -364,15 +364,15 @@
await handleMixinOnLoad(options)
console.log('shopInfo', uni.cache.get('shopInfo'));
console.log('【页面】开始处理自身业务逻辑');
setTimeout(() => {
showPageLoading.value = false;
getUnReadMsgCount();
}, 800);
onPageShow()
} else {
onPageShow()
}
setTimeout(() => {
showPageLoading.value = false;
getUnReadMsgCount();
}, 800);
});
async function onPageShow() {

View File

@@ -15,7 +15,7 @@
</up-swiper>
<view class="shop_sku_name u-flex u-row-between">
<view class="u-line-1" style="max-width: 600rpx;">{{ goods.name }}</view>
<ymfShare />
<ymfShare @shareClick="shareClick" />
</view>
<view class="shop_sku_description" v-if="isSkuGoods">
{{ goods.shortTitle ? goods.shortTitle : '' }}
@@ -506,8 +506,10 @@
swiperCurrent.value = e.current;
}
const emits = defineEmits(['prveImgs', 'websocketsendMessage', 'close', 'modalAdd'])
const emits = defineEmits(['prveImgs', 'websocketsendMessage', 'close', 'modalAdd','shareClick'])
function shareClick(){
emits('shareClick',props.goods)
}
function prveImgs(images, currentUrl) {
emits('prveImgs', images, currentUrl)
}

View File

@@ -573,17 +573,13 @@
<Loading :isLoading="!useSocket.isConnected" />
<ModalList></ModalList>
<recommendGoodsModal v-if="isDataLoaded" @onBuyClick="onBuyClick"></recommendGoodsModal>
<view
v-for="(item,index) in goodsModalList" :key="index"
>
<goodsModal :key="index" v-model="item.show" :goods="item.goods" @prveImgs="prveImgs" @close="goodsModalClose(index)"
@websocketsendMessage="websocketsendMessage"
@modalAdd="modalAdd"
:GoodsIDInCartNumMap="GoodsIDInCartNumMap"
></goodsModal>
<view v-for="(item,index) in goodsModalList" :key="index">
<goodsModal :key="index" v-model="item.show" :goods="item.goods" @prveImgs="prveImgs"
@shareClick="shareClick" @close="goodsModalClose(index)" @websocketsendMessage="websocketsendMessage"
@modalAdd="modalAdd" :GoodsIDInCartNumMap="GoodsIDInCartNumMap"></goodsModal>
</view>
<xbSwiperPreview :visable="showPrveImg" :imgs="prveImgsList" @update:visable="updateShowPrveImg">
</xbSwiperPreview>
<!-- 显示选择人数popup -->
@@ -749,7 +745,9 @@
useCartStore
} from '@/stores/order.js';
import {
computed, provide, reactive
computed,
provide,
reactive
} from 'vue';
const cartStore = useCartStore();
/**
@@ -874,11 +872,11 @@
* 返回购物车对应的商品数量
*/
function returnGoodsImCartNum(goods) {
if(!goods){
if (!goods) {
return 0
}
if (GoodsIDInCartNumMap.value.hasOwnProperty(goods.id)) {
return GoodsIDInCartNumMap.value[goods.id]
return GoodsIDInCartNumMap.value[goods.id]
}
return 0
}
@@ -1369,13 +1367,14 @@
let res = await APIminiAppinfo(item.id);
prveImgs(res.images);
}
const goodsModalList=ref([])
function goodsModalClose(index){
goodsModalList.value.splice(index,1)
const goodsModalList = ref([])
function goodsModalClose(index) {
goodsModalList.value.splice(index, 1)
}
function modalAdd(item){
function modalAdd(item) {
clickspecifications(item)
}
@@ -1395,8 +1394,8 @@
if (item.isSoldStock == 1 || (item.isSaleTime == 0 && !item.isSaleTimeshow)) {
return uni.showToast({
title:'商品已下架或不在可售时间内',
icon:'none'
title: '商品已下架或不在可售时间内',
icon: 'none'
});
}
@@ -1444,11 +1443,12 @@
specifications.item.amountcartNumber = 0;
// showShopsku.value = true;
goodsModalList.value.push({
show:true,
goods:{
show: true,
goods: {
...specifications.item,
/*过滤掉只有一个规格且下架的商品或者skuList为空的商品*/
relatedRecommendJson:(specifications.item.relatedRecommendJson||[]).filter(v=>v.skuList&&v.skuList.length)
relatedRecommendJson: (specifications.item.relatedRecommendJson || []).filter(v => v
.skuList && v.skuList.length)
}
})
};
@@ -1685,20 +1685,20 @@
// 返回商品对应sku数据
function cartInit(arr) {
const result = []
cartStore.carts = arr.map(v => {
const goods = cartStore.allGoodsArr.find(g => g.id == v.product_id)
const goodsSkuList = goods ? goods.skuList : []
const findSku = goodsSkuList.find(sku => sku.id == v.sku_id)
const memberPrice = findSku ? findSku.memberPrice : 0
const is_temporary=v.is_temporary||v.isTemporary
const is_temporary = v.is_temporary || v.isTemporary
const is_time_discount = limitUtils.canUseLimitTimeDiscount({
...v,
memberPrice
}, cartStore.limitTimeDiscount, shopInfo,
shopUserInfo.value, 'product_id');
if (!goods&&!is_temporary) {
if (!goods && !is_temporary) {
console.log('删除未匹配到的商品', {
id: v.id,
operate_type: "del",
@@ -2195,7 +2195,7 @@
// 列表请求
const productqueryProduct = async () => {
cartStore.goodsIsloading = false;
allGoodsArr.value=[]
allGoodsArr.value = []
try {
shopProductList.hots = await productminiApphotsquery();
shopProductList.productInfo = await APIgroupquery();
@@ -2238,7 +2238,7 @@
// console.log('allGoodsArr', allGoodsArr);
// console.log('shopProductList', shopProductList);
console.log('cartStore.carts', cartStore.carts)
cartStore.allGoodsArr=allGoodsArr.value
cartStore.allGoodsArr = allGoodsArr.value
if (cartStore.carts.length > 0) {
cartInit(cartStore.carts);
}
@@ -2260,6 +2260,16 @@
}, 1000);
return false;
}
if (pageOptions.showGoodsId) {
const item = allGoodsArr.value.find(v => v.id == pageOptions.showGoodsId)
if (item) {
clickspecifications(item)
}
pageOptions.showGoodsId = null
}
};
provide('cartStore', cartStore);
@@ -2440,36 +2450,70 @@
}
});
}
import {
shareMixin,
handleMixinOnLoad,returnQuery
handleMixinOnLoad,
returnQuery,
jsonToUrl,
returnCommonQuery
} from '@/utils/share.js'
defineOptions({
mixins: [shareMixin],
});
import { onShareTimeline } from '@dcloudio/uni-app';
// defineOptions({
// mixins: [shareMixin],
// });
let isGoodsShare = ref(false)
function shareClick() {
isGoodsShare.value = true
}
onShareAppMessage((res)=>{
let query=returnQuery()
query+='&type=beforehand'
return {
...res,
...query,
path: '/pages/product/index' + '?' + query,
query,
async function onShare(){
const queryJson = await returnCommonQuery()
let query = jsonToUrl(queryJson)
query += '&type=beforehand'
let json={}
if (goodsModalList.value.length && isGoodsShare.value) {
const goods = goodsModalList.value[goodsModalList.value.length - 1].goods
query += '&showGoodsId=' + goods.id
json.title = goods.name
json.imageUrl = goods.coverImg
json.showGoodsId = goods.id
}else{
json.title=uni.cache.get('shopInfo').shopName||''
json.imageUrl=uni.cache.get('shopInfo').logo||''
}
})
console.log('onShareAppMessage', {
query,
...json,
path: '/pages/product/index' + '?' + query
});
return {
query,
...json,
path: '/pages/product/index' + '?' + query
}
}
const pageOptions=reactive({})
onShareAppMessage(onShare)
onShareTimeline(onShare)
const pageOptions = reactive({})
onLoad(async (e) => {
Object.assign(pageOptions,e)
Object.assign(pageOptions, e)
if (e.type) {
orderType.value = e.type;
}
await handleMixinOnLoad(e)
const userInfo= userStore.userInfo
const shopInfoRes=userStore.shopInfo
await handleMixinOnLoad({
...e,
shopId: e.shopId || uni.cache.get('shopId')
})
const userInfo = userStore.userInfo
const shopInfoRes = userStore.shopInfo
// //获取用户信息
// const userInfo = await APIshopUserInfo({
// shopId: uni.cache.get('shopId')
@@ -2617,6 +2661,7 @@
useSocket.setOnMessage(() => {});
}
onHide(() => {
isGoodsShare.value=false
closeSocket();
});
onUnload(() => {