新增营销系统、分销系统、会员功能、门店、提现功能

This commit is contained in:
Shaw
2024-02-08 21:01:37 +08:00
parent 68b3f2dcc3
commit 17c043348a
1398 changed files with 81279 additions and 56269 deletions

View File

@ -1,121 +1,89 @@
<template>
<layout>
<uv-sticky customNavHeight="0">
<uv-navbar
:fixed="false"
:safeAreaInsetTop="true"
autoBack
title="折扣专区"
/>
</uv-sticky>
<view class="swiper">
<image :src="discountBg" />
<image class="image" :src="discountBg" mode="widthFix" />
</view>
<div class="time-bar">
<uv-tabs :current="active">
<uv-tab v-for="(item, index) in times">
<template #title>
<div class="time-bar-item">
<div class="time">15:00</div>
<div class="status">已结束</div>
<div
class="countdown"
v-if="index == active"
>15:00</div>
</div>
</template>
</uv-tab>
</uv-tabs>
</div>
<div class="discount-top">
<container>
<card>
<goods
list
title="Cookawu灰色涤纶宽松T 恤潮趣味罗文落肩上衣"
primary
groupNum="3"
price="239"
original="339"
>
<template #action>
<uv-button
round
block
type="primary"
>
立即拼团
</uv-button>
</template>
</goods>
</card>
</container>
</div>
<blank size="15"></blank>
<container min>
<uv-grid
:border="false"
:col="2"
:gutter="10"
<view class="time-bar">
<div class="time-bar-item" v-for="(item,index) in timesList" :key="index" :class="activeIndex === index && 'on'" @tap="timeChange(item,index)">
<div class="time">{{item.time}}</div>
<div class="status">
<text v-if="item.status === 0">已结束</text>
<text v-if="item.status === 1">抢购中</text>
<text v-if="item.status === 2">未开始</text>
</div>
<div
class="countdown"
v-if="item.status === 1"
>
<text>已结束</text>
<uv-count-down :time="item.countdown" format="HH:mm:ss" @finish="countDownFinish"></uv-count-down>
</div>
</div>
</view>
<view
class="product-box"
v-if="!listEmpty"
>
<template
v-for="(item,index) in dataList"
:key="item.id"
>
<uv-grid-item>
<card>
<goods
card
title="Cookawu灰色涤纶宽松T 恤潮趣味罗文落肩上衣"
primary
groupNum="3"
price="239"
original="339"
>
<template #action>
<uv-button
round
block
type="primary"
>
立即拼团
</uv-button>
</template>
</goods>
</card>
</uv-grid-item>
<uv-grid-item>
<view class="product-item" :class="index === 0 && 'isFirst'">
<goods
card
title="Cookawu灰色涤纶宽松T 恤潮趣味罗文落肩上衣"
primary
groupNum="3"
price="239"
original="339"
/>
</uv-grid-item>
<uv-grid-item>
<goods
card
title="Cookawu灰色涤纶宽松T 恤潮趣味罗文落肩上衣"
primary
groupNum="3"
price="239"
original="339"
/>
</uv-grid-item>
<uv-grid-item>
<goods
card
title="Cookawu灰色涤纶宽松T 恤潮趣味罗文落肩上衣"
primary
groupNum="3"
price="239"
original="339"
/>
</uv-grid-item>
</uv-grid>
</container>
<blank size="15"></blank>
link
:hasFirst="index === 0"
:data="item"
:price="item.price"
:buyProgress="index === 0"
:original="true"
:total="index !== 0"
>
</goods>
</view>
</template>
</view>
<Empty
v-else
:iconSrc="emptyCollectIcon"
>
这里空空如也~
</Empty>
<!-- 加载中 -->
<ListLoadLoading v-if="loading" />
<!-- 加载完毕-->
<ListLoadOver v-if="loadend" />
</layout>
</template>
<script setup>
import { discountBg } from "@/utils/images";
import { ref } from 'vue'
const active = ref(0)
const times = ref([1, 2, 3, 4, 5, 6, 7])
<script setup>
import { computed, ref } from 'vue'
import {getActivityProList, getProductList} from '@/api/product'
import { onLoad } from '@dcloudio/uni-app'
import { useActivity } from '@/hooks/useActivity'
import ListLoadOver from "@/components/ListLoadOver/index.vue";
import ListLoadLoading from "@/components/ListLoadLoading/index.vue";
import {emptyCollectIcon} from "@/utils/images";
import Empty from "@/components/Empty/index.vue";
import { discountBg } from "@/utils/images";
import LazyImage from '@/components/LazyImage/index.vue'
const { refresh, dataList, loading, loadend, listEmpty, otherQuery, activeIndex, timesList, timeChange, countDownFinish, handleGetTimeList} = useActivity(getActivityProList)
onLoad(async (option) => {
otherQuery.value = {
type:3
}
await handleGetTimeList()
})
</script>
@ -129,9 +97,21 @@ const times = ref([1, 2, 3, 4, 5, 6, 7])
}
}
.discount-top {
margin-top: 20rpx;
z-index: 9;
position: relative;
.product-box {
width: 100%;
padding: 30rpx;
box-sizing: border-box;
display: flex;
justify-content: space-between;
flex-wrap: wrap;
.product-item {
background: #FFFFFF;
width: calc((100% - 20rpx) / 2);
margin-bottom: 20rpx;
border-radius: 15rpx;
&.isFirst{
width: 100%;
}
}
}
</style>