3 changed files with 442 additions and 4 deletions
@ -0,0 +1,430 @@ |
|||
<template> |
|||
<view class="container"> |
|||
<!-- 搜索框 --> |
|||
<view class="search"> |
|||
<view class="search-wrapper"> |
|||
<view class="index-search"> |
|||
<view class="index-cont-search t-c"> |
|||
<text class="search-icon iconfont icon-search"></text> |
|||
<text class="search-text"> |
|||
<input type="text" placeholder="请输入关键字" v-model="searchValue"> |
|||
</text> |
|||
<button class="search-text-bu" @click="onSearch">搜索</button> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
<view class="secondary"> |
|||
<!-- 二级分类 20 --> |
|||
<view class="cate-content"> |
|||
<!-- 左侧 一级分类 --> |
|||
<scroll-view class="cate-left" scroll-y="true"> |
|||
<view class="type-nav" :class="{ selected: curIndex == index }" v-for="(item, index) in menus" :key="index" |
|||
@click="handleSelectNav(index)"> |
|||
<image class="cate-left-image" :src="'./static/tabbar/recommend-cate.png'"></image> |
|||
<text class="cate-left-text">{{ item.name }}</text> |
|||
</view> |
|||
</scroll-view> |
|||
<!-- 右侧 二级分类 --> |
|||
<scroll-view class="cate-right" :scroll-top="scrollTop" :scroll-y="true" |
|||
:style="{ height: `${scrollHeight}px` }"> |
|||
<!-- 有数据的时候 --> |
|||
<view v-if="list.length>0" class="cate-right-cont"> |
|||
<view class="cate-two-box"> |
|||
<view class="cate-cont-box"> |
|||
<view class="flex-two" v-for="(item, idx) in list" :key="idx" |
|||
@click="onTargetGoods(item.goods_islicode)"> |
|||
<view class="cate-img-padding"> |
|||
<view v-if="item.rankingDetails.goodsImage" class="cate-img"> |
|||
<image class="image" mode="scaleToFill" :src="item.rankingDetails.goodsImage"></image> |
|||
</view> |
|||
</view> |
|||
<view class="name"> |
|||
<text>{{ item.goodsName }}</text> |
|||
<text class="name-price">¥ {{ item.rankingDetails.price }}</text> |
|||
<text class="name-type">交易类型:{{ item.rankingDetails.goodsEntrust == 1 ? '转让' : '授权'}}</text> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
<!-- 空白提示 --> |
|||
<view v-else class="cate-right-cont"> |
|||
<view class="empty-content"> |
|||
<view class="empty-icon"> |
|||
<image class="image" src="/static/empty.png" mode="widthFix"></image> |
|||
</view> |
|||
<view class="tips">暂无数据</view> |
|||
</view> |
|||
|
|||
</view> |
|||
|
|||
</scroll-view> |
|||
|
|||
</view> |
|||
|
|||
</view> |
|||
|
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import MescrollCompMixin from '@/components/mescroll-uni/mixins/mescroll-comp' |
|||
import {PageCategoryStyleEnum} from '@/common/enum/store/page/category' |
|||
import * as GoodsApi from '@/api/goods' |
|||
import Empty from '@/components/empty' |
|||
import Secondary from './components/secondary' |
|||
import {rpx2px, base64ToUint8Array} from '@/utils/util' |
|||
|
|||
|
|||
// 左侧菜单(固定) |
|||
const menus = [ |
|||
{id: 'all', name: '标的推荐', type: 0}, |
|||
{id: 'rs', name: '销售排行', type: 1}, |
|||
{id: 'rd', name: '店铺排行', type: 2}, |
|||
] |
|||
|
|||
// 最后一次刷新时间 |
|||
let lastRefreshTime; |
|||
|
|||
export default { |
|||
components: { |
|||
Empty, |
|||
Secondary, |
|||
}, |
|||
mixins: [MescrollCompMixin], |
|||
data() { |
|||
return { |
|||
searchValue: '', |
|||
// 枚举类 |
|||
PageCategoryStyleEnum, |
|||
// 分类列表 |
|||
list: [], |
|||
// 分类模板设置 |
|||
setting: {}, |
|||
// 正在加载中 |
|||
isLoading: true, |
|||
// 一级分类:指针 |
|||
curIndex: 0, |
|||
//默认显示第一页 |
|||
page: 1, |
|||
// 列表高度 |
|||
scrollHeight: 0, |
|||
// 内容区竖向滚动条位置 |
|||
scrollTop: 0, |
|||
// 菜单 |
|||
menus, |
|||
} |
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面加载 |
|||
*/ |
|||
onLoad() { |
|||
// 加载页面数据 |
|||
this.onRefreshPage() |
|||
}, |
|||
|
|||
/** |
|||
* 生命周期函数--监听页面显示 |
|||
*/ |
|||
onShow() { |
|||
// 每间隔5分钟自动刷新一次页面数据 |
|||
const curTime = new Date().getTime() |
|||
if ((curTime - lastRefreshTime) > 5 * 60 * 1000) { |
|||
this.onRefreshPage() |
|||
} |
|||
}, |
|||
created() { |
|||
// 设置分类列表高度 |
|||
this.setListHeight() |
|||
}, |
|||
methods: { |
|||
// 搜索 |
|||
async onSearch() { |
|||
if (this.searchValue == '') { |
|||
this.$error('请输入搜索关键词'); |
|||
} else { |
|||
} |
|||
}, |
|||
|
|||
// 设置列表内容的高度 |
|||
setListHeight() { |
|||
const {windowHeight} = uni.getSystemInfoSync() |
|||
this.scrollHeight = windowHeight - rpx2px(96) |
|||
}, |
|||
|
|||
// 刷新页面 |
|||
onRefreshPage() { |
|||
// 记录刷新时间 |
|||
lastRefreshTime = new Date().getTime() |
|||
//加载分类数据 |
|||
this.getCatList() |
|||
}, |
|||
|
|||
// 一级分类:选中分类 |
|||
handleSelectNav(index) { |
|||
this.curIndex = index |
|||
this.scrollTop = 0 |
|||
this.getCatList() |
|||
}, |
|||
// 查询分类 获取列表 |
|||
getCatList() { |
|||
let item = menus[this.curIndex] |
|||
let type = item.type |
|||
let param = { |
|||
goods_type: '', //1.文化资源数据,2.文化数字内容 |
|||
lbdSet: 1, //1 热门标的推荐 2 交易(销售) 3 点击 |
|||
pageIndex: this.page, |
|||
pageRows: 10, |
|||
typeStatus: 1, |
|||
} |
|||
|
|||
if (type === 1) { |
|||
param.lbdSet = 2 |
|||
} else if (type === 2) { |
|||
param.lbdSet = 3 |
|||
} |
|||
this.bindData(param) |
|||
}, |
|||
// 标的详情 |
|||
onTargetGoods(gislicode) { |
|||
// this.$toast(goodsId) |
|||
this.$navTo('pages/goods/detail', {gislicode}) |
|||
}, |
|||
// 绑定数据 |
|||
async bindData(param) { |
|||
const app = this |
|||
GoodsApi.getRankingList(param).then(res=>{ |
|||
app.list = res.data |
|||
}); |
|||
}, |
|||
}, |
|||
|
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> // 搜索框 |
|||
.search { |
|||
position: fixed; |
|||
float: top; |
|||
top: var(--window-top); |
|||
left: var(--window-left); |
|||
right: var(--window-right); |
|||
z-index: 19; |
|||
|
|||
.search-wrapper { |
|||
background: #1c223b; |
|||
padding: 0rpx 20rpx 20rpx 20rpx; |
|||
} |
|||
|
|||
.index-search { |
|||
border-bottom: 0; |
|||
background: #fff; |
|||
border-radius: 50rpx; |
|||
overflow: hidden; |
|||
font-size: 28rpx; |
|||
color: #6d6d6d; |
|||
box-sizing: border-box; |
|||
height: 74rpx; |
|||
line-height: 74rpx; |
|||
|
|||
.index-cont-search { |
|||
width: 100%; |
|||
font-size: 28rpx; |
|||
background: #f7f7f7; |
|||
display: flex; |
|||
justify-content: center; |
|||
align-items: center; |
|||
|
|||
.search-icon { |
|||
font-size: 34rpx; |
|||
margin-left: 50rpx; |
|||
} |
|||
|
|||
.search-text { |
|||
text-align: left; |
|||
float: left; |
|||
margin-left: 20rpx; |
|||
width: 100%; |
|||
|
|||
input { |
|||
font-size: 20rpx; |
|||
} |
|||
} |
|||
.search-text-bu { |
|||
margin-right: 20rpx; |
|||
color: #ffffff; |
|||
background-color: #1c223b; |
|||
font-size: 20rpx; |
|||
width: 120rpx; |
|||
height: 50rpx; |
|||
text-align: center; |
|||
border-radius: 50rpx; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
// |
|||
.secondary { |
|||
z-index: 19; |
|||
border-top: 1rpx solid #444; |
|||
height: 100vh; |
|||
} |
|||
|
|||
// 分类内容 |
|||
.cate-content { |
|||
display: flex; |
|||
z-index: 1; |
|||
background: #fff; |
|||
padding-top: 96rpx; |
|||
height: 100%; |
|||
} |
|||
|
|||
// 一级分类+二级分类 20 |
|||
.cate-left { |
|||
// height: 100%; |
|||
display: flex; |
|||
flex-direction: column; |
|||
flex: 0 0 26%; |
|||
background: #f8f8f8; |
|||
color: #444; |
|||
margin-right: 22rpx; |
|||
} |
|||
|
|||
|
|||
.cate-right { |
|||
display: flex; |
|||
flex-direction: column; |
|||
height: 100%; |
|||
overflow: hidden; |
|||
|
|||
.cate-right-cont { |
|||
width: 100%; |
|||
display: flex; |
|||
flex-flow: row wrap; |
|||
align-content: flex-start; |
|||
padding-top: 15 rpx; |
|||
|
|||
.cate-two-box { |
|||
width: 100%; |
|||
padding: 0 10px; |
|||
} |
|||
|
|||
// 空白提示 |
|||
.empty-content { |
|||
box-sizing: border-box; |
|||
width: 100%; |
|||
padding: 140rpx 50rpx; |
|||
text-align: center; |
|||
|
|||
.tips { |
|||
font-size: 28rpx; |
|||
color: gray; |
|||
margin: 50rpx 0; |
|||
} |
|||
|
|||
.empty-icon .image { |
|||
width: 280rpx; |
|||
} |
|||
|
|||
} |
|||
} |
|||
} |
|||
|
|||
// 左侧一级分类 |
|||
.type-nav { |
|||
position: relative; |
|||
height: 180rpx; |
|||
z-index: 10; |
|||
font-size: 26rpx; |
|||
display: flex; |
|||
justify-content: center; |
|||
align-items: center; |
|||
font-weight: bold; |
|||
|
|||
&.selected { |
|||
background: #fff; |
|||
color: #cec7bf; |
|||
border-right: none; |
|||
font-size: 28rpx; |
|||
font-weight: bold; |
|||
} |
|||
|
|||
.cate-left-image{ |
|||
position: absolute; |
|||
width: 50rpx; |
|||
height: 50rpx; |
|||
border-radius: 10rpx; |
|||
margin-bottom: 20rpx; |
|||
} |
|||
.cate-left-text{ |
|||
position: absolute; |
|||
margin-top: 80rpx; |
|||
} |
|||
} |
|||
|
|||
// 右侧二级分类 |
|||
.cate-cont-box { |
|||
margin-bottom: 30rpx; |
|||
padding-bottom: 10rpx; |
|||
background: #fff; |
|||
overflow: hidden; |
|||
|
|||
.name { |
|||
width: 45%; |
|||
height: 200rpx; |
|||
float: left; |
|||
margin-left: 51%; |
|||
margin-top: -45%; |
|||
display: inline-block; |
|||
font-size: 26rpx; |
|||
font-weight: bold; |
|||
color: #444444; |
|||
|
|||
.name-price{ |
|||
color: #fe7730; |
|||
margin-top: 30rpx; |
|||
} |
|||
.name-type{ |
|||
color: #cec7bf; |
|||
margin-top: 20rpx; |
|||
} |
|||
} |
|||
|
|||
|
|||
.flex-two { |
|||
float: left; |
|||
width: 100%; |
|||
background-color: #f7f7f7; |
|||
margin-bottom: 20rpx; |
|||
|
|||
text { |
|||
display: inline-block; |
|||
} |
|||
|
|||
.cate-img-padding { |
|||
width: 250rpx; |
|||
height: 250rpx; |
|||
padding: 16rpx 16rpx 4rpx 16rpx; |
|||
} |
|||
|
|||
.cate-img { |
|||
position: relative; |
|||
width: 100%; |
|||
padding-top: 100%; |
|||
|
|||
.image { |
|||
width: 100%; |
|||
height: 100%; |
|||
position: absolute; |
|||
top: 0; |
|||
left: 0; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
</style> |
|||
|
After Width: | Height: | Size: 1.1 KiB |
Loading…
Reference in new issue