160 lines
3.8 KiB
Vue
160 lines
3.8 KiB
Vue
<!--
|
||
@name: index
|
||
@author: kahu4
|
||
@date: 2024-01-17 17:00
|
||
@description:分销商品
|
||
@update: 2024-01-17 17:00
|
||
-->
|
||
<script setup>
|
||
import Header from '@/components/Header/index.vue'
|
||
import { useScroll } from "@/hooks/useScroll";
|
||
import { onLoad, onPageScroll, onShareAppMessage, onShareTimeline } from "@dcloudio/uni-app";
|
||
import { onMounted, ref } from "vue";
|
||
import GoodsCom from "@/components/goodsComponents/Goods.vue";
|
||
import { usePage } from "@/hooks";
|
||
import { getProductList } from "@/api/product";
|
||
import { useRouter } from "@/hooks/useRouter";
|
||
import { useMainStore } from "@/store/store";
|
||
import { useShare } from "@/hooks/useShare";
|
||
import GoodsSharePopup from '@/components/Share/Goods.vue'
|
||
import GoodsPoster from '@/components/Poster/Goods.vue'
|
||
|
||
const mainStore = useMainStore();
|
||
const {scrollTop} = useScroll()
|
||
onPageScroll(() => {
|
||
})
|
||
const {refresh, dataList, loadend, loading, listEmpty, otherQuery} = usePage(getProductList)
|
||
const {shareAppMessage, shareTimeline, distributionGoodsDetailShare, shareH5} = useShare();
|
||
|
||
onShareAppMessage(shareAppMessage)
|
||
onShareTimeline(shareTimeline)
|
||
const {push, getParams} = useRouter()
|
||
|
||
const distributorId = ref()
|
||
onLoad((options) => {
|
||
const params = getParams(options);
|
||
distributorId.value = params.distributionId
|
||
otherQuery.value = {
|
||
isDistribution: 1
|
||
}
|
||
})
|
||
|
||
// ======================= 分享相关 ================================
|
||
const goodsShare = ref()
|
||
const goodsPoster = ref()
|
||
|
||
function doShare(goods) {
|
||
goodsShare.value.open('分享赚', goods)
|
||
}
|
||
|
||
async function shareConfirm(shareItem, goods) {
|
||
distributionGoodsDetailShare(goods, distributorId.value)
|
||
if (shareItem.value === 'photo') {
|
||
goodsPoster.value.open(goods)
|
||
return
|
||
}
|
||
if (shareItem.value === 'wechat') {
|
||
shareH5()
|
||
}
|
||
}
|
||
|
||
onMounted(() => {
|
||
refresh()
|
||
})
|
||
</script>
|
||
|
||
<template>
|
||
|
||
<view class="goods-list">
|
||
<Header
|
||
:scroll-top="scrollTop"
|
||
system-bar-area-bg="#fff"
|
||
header-area-bg="#fff"> 分销商品
|
||
</Header>
|
||
<view class="goods-list__inner">
|
||
<template
|
||
v-for="item in dataList"
|
||
:key="item.id"
|
||
>
|
||
<view class="product">
|
||
<GoodsCom
|
||
row
|
||
img-width="160rpx"
|
||
:ratio="true"
|
||
:goods="item"
|
||
infoPadding="10rpx 10rpx"
|
||
>
|
||
<template #options>
|
||
<view class="good-bottom">
|
||
<view class="price">
|
||
¥{{ item.price }}
|
||
</view>
|
||
<view class="sale flex flex-jc__sb flex-ai__end">
|
||
<view class="left">
|
||
<text class="gray-color">预计佣金:</text>
|
||
¥999-999
|
||
</view>
|
||
<view
|
||
class="btn"
|
||
@click.stop="doShare(item)">
|
||
分享赚
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</template>
|
||
</GoodsCom>
|
||
</view>
|
||
</template>
|
||
</view>
|
||
|
||
<GoodsSharePopup
|
||
ref="goodsShare"
|
||
@share="shareConfirm" />
|
||
|
||
<GoodsPoster ref="goodsPoster" />
|
||
</view>
|
||
</template>
|
||
|
||
<style
|
||
scoped
|
||
lang="scss">
|
||
.goods-list {
|
||
&__inner {
|
||
width: 100%;
|
||
@include usePadding(34, 34);
|
||
|
||
.product {
|
||
background: #fff;
|
||
border-radius: 15rpx;
|
||
margin-bottom: 20rpx;
|
||
|
||
.good-bottom {
|
||
width: 100%;
|
||
|
||
.price {
|
||
color: $primary-color;
|
||
font-size: 30rpx;
|
||
}
|
||
|
||
.sale {
|
||
width: 100%;
|
||
font-size: 24rpx;
|
||
|
||
.btn {
|
||
@include usePadding(24, 11);
|
||
color: #fff;
|
||
background: #333;
|
||
border-radius: 15rpx;
|
||
margin-right: 20rpx;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
.gray-color {
|
||
color: $tips-color;
|
||
}
|
||
</style>
|