feat(custom): build

This commit is contained in:
2023-11-28 17:59:45 +08:00
parent 22868fdf2c
commit d5c4651665
39 changed files with 5779 additions and 10624 deletions

View File

@@ -9,11 +9,20 @@
<nut-swiper
:init-page="0"
:pagination-visible="true"
pagination-color="#426543"
auto-play="3000"
pagination-color="#000"
duration="1000"
:loop="false"
>
<nut-swiper-item v-for="(itm, idx) in swiperList" :key="idx">
<img :alt="itm.ID.toString()" :src="itm.url" />
<view
class="item"
v-for="(item, index) in itm"
:key="index"
@click="toDetails(item)"
>
<image :src="item.icon" />
<text>{{ item.name }}</text>
</view>
</nut-swiper-item>
</nut-swiper>
<!-- 金刚区 -->
@@ -29,29 +38,7 @@
</nut-grid-item>
</nut-grid>
</view>
<view class="goodBox">
<view
class="good"
v-for="item in (merdata as any[])"
:key="item.ID"
@click.stop="toMerDetails(item)"
>
<image :src="(item.head_photo as string)" />
<view class="good-text-box">
<text class="good-text">{{ item.name }}</text>
<text style="color: #999"
>距离我{{
calculateDistance(
userLocalNum.t,
userLocalNum.l,
Number(item.lat),
Number(item.lon)
)
}}
</text>
</view>
</view>
</view>
<MerList />
<!-- 签到弹窗 -->
<Popup />
</view>
@@ -60,59 +47,50 @@
<script lang="ts" setup>
import { ref } from "vue";
import Taro from "@tarojs/taro";
import { bindParent, getBanner } from "@/api/user";
import { getMerList } from "@/api/goods";
import { calculateDistance } from "@/utils";
import Popup from "@/components/Popup.vue";
import MerList from "@/components/MerList.vue";
import { getHomeList } from "@/api/home";
const searchValue = ref("");
const swiperList = ref<any>([]);
interface SwiperList {
ID: number;
icon: string;
name: string;
}
const swiperList = ref<Array<Array<SwiperList>>>([]);
const userMenuList = ref([
{
id: 1,
label: "活动游戏",
url: `/pages/game/gamehome/index?uid=${Taro.getStorageSync("token")}`,
icon: "http://jdt168.com/uploads/merchant/20220829/caad6be8983e88c41d28da7d124bc37b.png",
icon: "//jdt168.com/uploads/merchant/20220829/caad6be8983e88c41d28da7d124bc37b.png",
},
{
id: 2,
label: "活动商品",
url: "/pages/hotGoods/index/index",
icon: "http://jdt168.com/uploads/def/20230509/d59e7fcb65a88bc56694dae4f9d21b51.png",
// url: "/pages/hotGoods/index/index",
url: "",
icon: "//jdt168.com/uploads/def/20230509/d59e7fcb65a88bc56694dae4f9d21b51.png",
},
{
id: 3,
label: "商户入驻",
url: "/pages/users/settled_mer/index",
icon: "http://jdt168.com/uploads/merchant/20220829/6fe67b93721a42aedc842c4f19d6f2d3.png",
icon: "//jdt168.com/uploads/merchant/20220829/6fe67b93721a42aedc842c4f19d6f2d3.png",
},
{
id: 4,
label: "最新资讯",
url: "",
icon: "http://jdt168.com/uploads/merchant/20220829/b975136a9b64aab69bf11d75a194f1ea.png",
icon: "//jdt168.com/uploads/merchant/20220829/b975136a9b64aab69bf11d75a194f1ea.png",
},
]);
Taro.useDidShow(async () => {
await getBannerList();
await get_mer_list();
if (Taro.getStorageSync("token") && Taro.getStorageSync("bind_id")) {
try {
const res = await bindParent({
uid: Taro.getStorageSync("bind_id"),
});
Taro.showToast({
title: res.msg,
});
Taro.removeStorageSync("bind_id");
} catch (error) {
Taro.removeStorageSync("bind_id");
throw error;
}
}
});
Taro.useShareAppMessage(() => ({
@@ -122,34 +100,23 @@ Taro.useShareAppMessage(() => ({
"https://upload.jdt168.com/1694242954957988438_微信图片_20230909150016.jpg",
}));
const merdata = ref([]);
const userLocalNum = ref({
l: 0,
t: 0,
});
const get_mer_list = async () => {
Taro.getLocation({
type: "wgs84",
success: (res) => {
userLocalNum.value.l = res.longitude;
userLocalNum.value.t = res.latitude;
},
});
const res = await getMerList({
PageNum: 1,
PageSize: 10,
Btype: 2,
classid: 0,
});
merdata.value = res.data.data;
};
const getBannerList = async () => {
const { data }: any = await getBanner();
swiperList.value = data.data;
const { data } = await getHomeList();
if (data.data.length > 0) {
// for (let i = 0; i < 31; i++) {
// data.data.push({
// ID: i,
// icon: "//jdt168.com/uploads/def/20230509/d59e7fcb65a88bc56694dae4f9d21b51.png",
// name: "活动商品",
// });
// }
// 数组分组
const arr = [];
for (let i = 0; i < data.data.length; i += 10) {
arr.push(data.data.slice(i, i + 10));
}
swiperList.value = arr;
}
};
const toPage = (url: string) => {
@@ -158,18 +125,33 @@ const toPage = (url: string) => {
});
};
const toMerDetails = (item: any) => {
Taro.setStorageSync("mer_info", item);
const toDetails = (item: SwiperList) => {
Taro.navigateTo({
url: `/pages/mer/mer_detail/index`,
url: `/pages/search/index?id=${item.ID}&name=${item.name}`,
});
};
</script>
<style lang="scss">
.nut-swiper-item img {
width: 100%;
height: 350px;
.nut-swiper {
background: #ffffff;
.nut-swiper-item {
display: grid;
grid-template-columns: repeat(5, 1fr);
.item {
display: flex;
flex-direction: column;
align-items: center;
image {
width: 100px;
height: 100px;
border-radius: 50%;
}
}
}
}
.titleImg {
@@ -195,57 +177,4 @@ const toMerDetails = (item: any) => {
height: 80px;
}
}
.goodBox {
display: flex;
padding: 20px;
flex-wrap: wrap;
justify-content: space-between;
.good {
width: 340px;
background-color: #fff;
margin-bottom: 20px;
border-radius: 10px;
image {
width: 100%;
height: 250px;
border-top-right-radius: 10px;
border-top-left-radius: 10px;
}
.good-text-box {
padding: 10px;
.good-text {
flex-shrink: 0;
font-size: 28px;
color: #333;
font-weight: 400;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
word-break: break-word;
}
.good-price-box {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 10px;
.good-text-price {
font-size: 28px;
font-weight: bold;
color: #ff0000;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
}
}
}
}
}
</style>