238 lines
5.4 KiB
Vue
238 lines
5.4 KiB
Vue
<!-- 首页 -->
|
||
<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
|
||
console.log("登录code", code);
|
||
let fromData = {
|
||
code: code
|
||
}
|
||
that.$apiServe.login({
|
||
code: code
|
||
}).then(res => {
|
||
console.log('登录code换取的用户', res.data.data);
|
||
uni.setStorageSync('token', res.data.data.token);
|
||
})
|
||
},
|
||
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>
|