Files
pupil/pages/index/index.vue
2023-01-05 21:57:51 +08:00

236 lines
5.4 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- 首页 -->
<template>
<view>
<!-- 搜索框 -->
<view class="search_box">
<view class="search_box_border">
<u-input placeholder="搜索优质产品" placeholder-style="color: #969696" prefixIcon="search"
prefixIconStyle="font-size: 22px;color: #909399;margin-left:30rpx" readonly @tap="toSearch()">
</u-input>
</view>
</view>
<view class="content">
<!-- 分类模块 -->
<view class="classify">
<u-grid :border="false" col="5">
<u-grid-item v-for="(listItem,listIndex) in classifyList" :key="listIndex" @click="toClassify()">
<u--image :src="imgUrl+listItem.icon" width="86rpx" height="86rpx" :lazy-load="true">
</u--image>
<!-- <u-icon size="86rpx" :name="listItem.icon"></u-icon> -->
<text class="grid-text">{{listItem.name}}</text>
</u-grid-item>
</u-grid>
</view>
<!-- 分类模块下的轮播图 -->
<view>
<u-swiper :list="swiperList" keyName="img" indicatorMode="line" radius="0" circular></u-swiper>
</view>
<!-- <view style="width: 100px; height: 100px; z-index: 999;">
<u-button type="primary" open-type="getPhoneNumber" size="medium" @getphonenumber="getphonenumber">
获取电话号码</u-button>
</view> -->
<!-- 选项卡: 上架时间和点赞量 -->
<view>
<u-tabs :list="tabList" lineColor="#15CA65" :is-scroll="false"
activeStyle="color:#15CA65;font-weight: bold;">
</u-tabs>
</view>
<!-- 产品 -->
<products ref="getProducts" @getChild="getChild()"></products>
<view style="font-size: 24rpx;color: #A3A3A3;text-align: center;padding: 26rpx 0;"
v-if="reachBottomLength==0">
没有更多数据了</view>
</view>
</view>
</template>
<script>
import {
serverHost
} from '@/service/request.js'
export default {
data() {
return {
classifyList: [],
tabList: [{
name: '上架时间'
},
{
name: '点赞量'
},
],
imgUrl: '',
swiperList: [],
reachBottomLength: ''
}
},
onReachBottom() {
this.$refs.getProducts.pageNum += 1
if (this.reachBottomLength !== 0) {
this.$refs.getProducts.getProducts()
}
},
onLoad() {
this.getCategories()
this.getBanner()
this.getImgUrl()
this.getToken()
this.imgUrl = uni.getStorageSync('img_url')
},
methods: {
getToken() {
var that = this
uni.login({
"provider": "weixin",
"onlyAuthorize": true, // 微信登录仅请求授权认证
success: function(event) {
const {
code
} = event
that.$apiServe.login({
code: code
}).then(res => {
var data = res.data.data
// console.log('登录code换取的信息', data);
uni.setStorageSync('token', data.token);
uni.setStorageSync('avatar', data.avatar);
uni.setStorageSync('nickname', data.nickname);
})
},
fail: function(err) {
// 登录授权失败
// err.code是错误码
}
})
},
//获取手机code
getphonenumber(e) {
let that = this
// const {
// code
// } = e.detail;
// console.log("手机code : ", code);
},
//获取子组件的getProducts方法返回数据的length用于当length为0时取消发送请求
getChild(e) {
this.reachBottomLength = e
},
//获取一级分类
getCategories() {
this.$apiServe.getCategories().then(res => {
this.classifyList = res.data.data
}).finally(_ => {})
},
//获取首页轮播图
getBanner() {
this.$apiServe.getBanner().then(res => {
let banner = res.data.data
for (const item of banner) {
item.img = this.imgUrl + item.img
}
this.swiperList = res.data.data
}).finally(_ => {})
},
//点击搜索框跳转到搜索页面
toSearch() {
uni.navigateTo({
url: '../../packageSearch/search/search'
})
},
//点击一级分类跳转到分类页
toClassify() {
uni.navigateTo({
url: '../../packageSearch/goods-category-search/category-index'
})
},
getImgUrl() {
this.$apiServe.getImgUrl().then(res => {
try {
uni.setStorageSync('img_url', res.data.data.img_url);
} catch (e) {
// error
}
}).finally(_ => {})
}
}
}
</script>
<style lang="scss">
// 搜索框样式
.search_box {
background: linear-gradient(135deg, #12CA64 0%, #1ACA67 100%);
.search_box_border {
width: 94.6%;
height: 124rpx;
background: linear-gradient(320deg, #36E182 0%, #26DD76 100%, #26DD76 100%);
margin: 0 auto;
box-shadow: 0 -1px 3px 0 #31B96D;
border-radius: 38rpx 38rpx 0 0;
.u-border {
border: none;
padding-top: 16px !important;
.u-input__content {
height: 64rpx;
border-radius: 32rpx;
background-color: #fff;
.u-input__content__field-wrapper__field {
font-size: 26rpx !important;
}
}
}
}
}
.content {
//分类模块
.classify {
height: 350rpx;
background: #FFFFFF;
border-radius: 24rpx;
box-shadow: 0px 2px 4px 0px rgba(206, 206, 206, 0.5);
.u-grid {
padding-top: 30rpx;
.grid-text {
padding-top: 8rpx;
font-size: 24rpx;
}
.u-grid-item {
padding-bottom: 38rpx;
}
}
}
//轮播图
.u-swiper__wrapper__item__wrapper {
margin-top: 20rpx;
height: 290rpx;
}
.u-swiper-indicator__wrapper {
display: none !important;
}
// 选项卡
.u-tabs__wrapper__nav {
background-color: #FFFFFF;
.u-tabs__wrapper__nav__item {
padding: 0 !important;
flex: 1;
}
}
}
</style>