You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
341 lines
6.2 KiB
341 lines
6.2 KiB
<template>
|
|
<div class="hom-page home_page_content">
|
|
<!-- 头部 -->
|
|
<FixedHead>
|
|
<category-list @tabChange="tabChange"></category-list>
|
|
</FixedHead>
|
|
<!-- 首页画布骨架屏 -->
|
|
|
|
<Skeleton v-if="isFirst" :loading="loading" :isFirst="isFirst" />
|
|
<template v-if="!isFirst">
|
|
<!-- 首页画布 -->
|
|
<view
|
|
id="home_canvas_page"
|
|
v-if="activeTab===0"
|
|
>
|
|
<canvas-page
|
|
ref="canvasPage"
|
|
:componentsData="componentsData"
|
|
:terminal="terminal"
|
|
:typeId="1"
|
|
/>
|
|
</view>
|
|
|
|
<!-- 其他分类 -->
|
|
<category-show
|
|
ref="categoryShow"
|
|
v-else
|
|
:classifyId="classifyId"
|
|
/>
|
|
|
|
|
|
<ListBottomTips
|
|
:loading="false"
|
|
v-if="activeTab===0 && scrollTop>400"
|
|
/>
|
|
|
|
<Agreement />
|
|
|
|
<global-loading />
|
|
|
|
<AdWindow
|
|
ref="adWindow"
|
|
:triggerCondition="1"
|
|
/>
|
|
|
|
</template>
|
|
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import AdWindow from "@/components/adWindow";
|
|
import api from '@/components/canvasShow/config/api'
|
|
import CategoryList from "@/components/basics/categoryList.vue"
|
|
import CategoryShow from "@/components/basics/categoryShow.vue"
|
|
import canvasPage from '@/components/canvasShow/canvasShowPage.vue'
|
|
import FixedHead from "./component/FixedHead";
|
|
import ListBottomTips from "@/components/ListBottomTips";
|
|
import Agreement from "./component/Agreement";
|
|
import Skeleton from "./component/Skeleton";
|
|
|
|
const NET = require('@/utils/request')
|
|
const API = require('../../../config/api')
|
|
export default {
|
|
components: {
|
|
AdWindow,
|
|
CategoryList,
|
|
CategoryShow,
|
|
canvasPage,
|
|
FixedHead,
|
|
ListBottomTips,
|
|
Agreement,
|
|
Skeleton
|
|
},
|
|
data() {
|
|
return {
|
|
loading: true,
|
|
isFirst: true,
|
|
classifyId: 0, // 分类ID
|
|
terminal: API.terminal,
|
|
activeTab: 0,
|
|
componentsData: [],
|
|
typeId: 1,
|
|
scrollTop: 0
|
|
}
|
|
},
|
|
onReachBottom() {
|
|
this.HandleLoadMoreProduct()
|
|
},
|
|
onLoad() {
|
|
this.$nextTick(async () => {
|
|
await this.handleGetCanvas()
|
|
if(this.$refs.adWindow){
|
|
this.$refs.adWindow.getAd()
|
|
}
|
|
})
|
|
},
|
|
onPageScroll(e) {
|
|
this.scrollTop = e.scrollTop
|
|
},
|
|
methods: {
|
|
// 读取画布
|
|
async handleGetCanvas() {
|
|
this.loading = true
|
|
const apiUrl = api.getCanvas + '?terminal=' + this.terminal + '&type=' + this.typeId
|
|
const {data} = await NET.request(apiUrl, {}, 'GET')
|
|
if (JSON.stringify(data) !== '{}') {
|
|
this.componentsData = JSON.parse(data.json)
|
|
this.isFirst = false
|
|
this.loading = false
|
|
}
|
|
},
|
|
// 分享到朋友圈
|
|
onShareTimeline: function () {
|
|
return {
|
|
title: this.miniHomeRemark,
|
|
imageUrl: this.miniHomeImg,
|
|
path: 'pages/tabbar/index/index',
|
|
}
|
|
},
|
|
// 分享好友
|
|
onShareAppMessage: function () {
|
|
return {
|
|
title: this.miniHomeRemark,
|
|
imageUrl: this.miniHomeImg,
|
|
path: 'pages/tabbar/index/index',
|
|
}
|
|
},
|
|
/**
|
|
* 请求非首页的子组件的下一页
|
|
* */
|
|
HandleLoadMoreProduct() {
|
|
if (this.activeTab !== 0) {
|
|
let pitchOnPage = this.$refs.categoryShow
|
|
if (pitchOnPage.total !== 0 && pitchOnPage.productList.length < pitchOnPage.total) {
|
|
pitchOnPage.page++
|
|
pitchOnPage.handleGetProductData()
|
|
}
|
|
}
|
|
},
|
|
|
|
tabChange(index, id) {
|
|
this.activeTab = index
|
|
this.classifyId = id
|
|
},
|
|
|
|
}
|
|
};
|
|
</script>
|
|
|
|
<style
|
|
lang="scss"
|
|
scoped
|
|
>
|
|
.header {
|
|
background: #fff;
|
|
|
|
.toLive {
|
|
height: 40px;
|
|
color: #FFF;
|
|
background-color: #333;
|
|
}
|
|
|
|
.topBox {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
|
|
.logo {
|
|
width: 280rpx;
|
|
height: 100%;
|
|
//margin-top: -40rpx;
|
|
// margin-left: 30rpx;
|
|
}
|
|
|
|
.search-btn {
|
|
height: 66rpx;
|
|
background: rgba(255, 255, 255, 1);
|
|
border-radius: 33rpx;
|
|
display: flex;
|
|
flex-direction: row;
|
|
align-items: center;
|
|
margin-right: 30rpx;
|
|
|
|
.search-icon {
|
|
width: 60rpx;
|
|
height: 60rpx;
|
|
// margin-left: 33rpx;
|
|
}
|
|
|
|
.search-word {
|
|
font-size: 26rpx;
|
|
font-weight: 400;
|
|
color: rgba(153, 153, 153, 1);
|
|
margin-left: 10rpx;
|
|
}
|
|
}
|
|
|
|
.tabs-nav-warp {
|
|
margin-top: 20rpx;
|
|
padding: 0 30rpx;
|
|
}
|
|
|
|
.tabs-nav {
|
|
.ul {
|
|
display: flex;
|
|
|
|
.li {
|
|
flex: 1 0 auto;
|
|
margin-left: 36rpx;
|
|
font-size: 30rpx;
|
|
color: #999999;
|
|
position: relative;
|
|
padding-bottom: 18rpx;
|
|
|
|
&:first-child {
|
|
margin-left: 0;
|
|
}
|
|
|
|
&.on {
|
|
&:after {
|
|
content: '';
|
|
width: 100%;
|
|
height: 4rpx;
|
|
background: #C5AA7B;
|
|
position: absolute;
|
|
left: 0;
|
|
bottom: 0;
|
|
}
|
|
|
|
font-weight: bold;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.weiXinBox {
|
|
width: 100%;
|
|
//position: fixed;
|
|
background: #FFFFFF;
|
|
//z-index: 99;
|
|
}
|
|
|
|
.wxBtnBg {
|
|
padding: 0 20rpx;
|
|
|
|
.weiXinBoxBtn {
|
|
display: flex;
|
|
align-items: center;
|
|
padding: 10rpx 0 10rpx 15rpx;
|
|
width: 100%;
|
|
background: #F3F4F5;
|
|
opacity: 1;
|
|
|
|
.search-icon {
|
|
width: 50rpx;
|
|
height: 50rpx;
|
|
margin-right: 20rpx;
|
|
}
|
|
|
|
text {
|
|
color: #999999;
|
|
}
|
|
}
|
|
}
|
|
|
|
.terminal1 {
|
|
.header {
|
|
.topBox {
|
|
// justify-content: left;
|
|
|
|
.search-btn {
|
|
.search-icon {
|
|
margin-left: 0rpx;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.topTitle {
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
height: 100rpx;
|
|
width: 100%;
|
|
|
|
.topText {
|
|
text-align: center;
|
|
color: #000000;
|
|
font-size: 38rpx;
|
|
font-weight: bold;
|
|
}
|
|
}
|
|
|
|
.topWap {
|
|
padding-top: 30rpx;
|
|
|
|
.logo {
|
|
margin-top: 0 !important;
|
|
}
|
|
}
|
|
|
|
.terminal2 {
|
|
}
|
|
|
|
.terminal3 {
|
|
}
|
|
|
|
// 触底样式
|
|
.reachBottom {
|
|
margin-top: 30rpx;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
|
|
.reach-icon {
|
|
width: 150rpx;
|
|
height: 150rpx;
|
|
}
|
|
|
|
.reach-text {
|
|
margin: 20rpx 0;
|
|
color: #CCCCCC;
|
|
}
|
|
}
|
|
|
|
|
|
// 优化兼容UI
|
|
.home_page_content {
|
|
#home_canvas_page {
|
|
width: 100%;
|
|
position: relative;
|
|
}
|
|
|
|
}
|
|
</style>
|