3 changed files with 207 additions and 17 deletions
@ -0,0 +1,165 @@ |
|||||
|
<template> |
||||
|
<view class="container"> |
||||
|
<!-- 搜索框 --> |
||||
|
<search class="search" tips="搜索商品" @event="$navTo('pages/search/index')" /> |
||||
|
|
||||
|
<!-- 一级分类 --> |
||||
|
<primary v-if="setting.style == PageCategoryStyleEnum.ONE_LEVEL_BIG.value || setting.style == PageCategoryStyleEnum.ONE_LEVEL_SMALL.value" |
||||
|
:display="setting.style" :list="list" /> |
||||
|
|
||||
|
<!-- 二级分类 --> |
||||
|
<secondary v-if="setting.style == PageCategoryStyleEnum.TWO_LEVEL.value" :list="list" /> |
||||
|
|
||||
|
<!-- 分类+商品 --> |
||||
|
<commodity v-if="setting.style == PageCategoryStyleEnum.COMMODITY.value" ref="mescrollItem" :list="list" :setting="setting" /> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import MescrollCompMixin from '@/components/mescroll-uni/mixins/mescroll-comp' |
||||
|
import { setCartTabBadge } from '@/core/app' |
||||
|
import SettingKeyEnum from '@/common/enum/setting/Key' |
||||
|
import { PageCategoryStyleEnum } from '@/common/enum/store/page/category' |
||||
|
import SettingModel from '@/common/model/Setting' |
||||
|
import * as CategoryApi from '@/api/category' |
||||
|
import Empty from '@/components/empty' |
||||
|
import Search from '@/components/search' |
||||
|
import Primary from './components/primary' |
||||
|
import Secondary from './components/secondary' |
||||
|
import Commodity from './components/commodity' |
||||
|
|
||||
|
// 最后一次刷新时间 |
||||
|
let lastRefreshTime; |
||||
|
|
||||
|
export default { |
||||
|
components: { |
||||
|
Search, |
||||
|
Empty, |
||||
|
Primary, |
||||
|
Secondary, |
||||
|
Commodity |
||||
|
}, |
||||
|
mixins: [MescrollCompMixin], |
||||
|
data() { |
||||
|
return { |
||||
|
// 枚举类 |
||||
|
PageCategoryStyleEnum, |
||||
|
// 分类列表 |
||||
|
list: [], |
||||
|
// 分类模板设置 |
||||
|
setting: {}, |
||||
|
// 正在加载中 |
||||
|
isLoading: true |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 生命周期函数--监听页面加载 |
||||
|
*/ |
||||
|
onLoad() { |
||||
|
// 加载页面数据 |
||||
|
this.onRefreshPage() |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 生命周期函数--监听页面显示 |
||||
|
*/ |
||||
|
onShow() { |
||||
|
// 每间隔5分钟自动刷新一次页面数据 |
||||
|
const curTime = new Date().getTime() |
||||
|
if ((curTime - lastRefreshTime) > 5 * 60 * 1000) { |
||||
|
this.onRefreshPage() |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
|
||||
|
// 刷新页面 |
||||
|
onRefreshPage() { |
||||
|
// 记录刷新时间 |
||||
|
lastRefreshTime = new Date().getTime() |
||||
|
// 获取页面数据 |
||||
|
this.getPageData() |
||||
|
// 更新购物车角标 |
||||
|
setCartTabBadge() |
||||
|
}, |
||||
|
|
||||
|
// 获取页面数据 |
||||
|
getPageData() { |
||||
|
const app = this |
||||
|
app.isLoading = true |
||||
|
Promise.all([ |
||||
|
// 获取分类模板设置 |
||||
|
// 优化建议: 可以将此处的false改为true 启用缓存 |
||||
|
SettingModel.data(false), |
||||
|
// 获取分类列表 |
||||
|
CategoryApi.list() |
||||
|
]) |
||||
|
.then(result => { |
||||
|
// 初始化分类模板设置 |
||||
|
app.initSetting(result[0]) |
||||
|
// 初始化分类列表数据 |
||||
|
app.initCategory(result[1]) |
||||
|
}) |
||||
|
.finally(() => app.isLoading = false) |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 初始化分类模板设置 |
||||
|
* @param {Object} result |
||||
|
*/ |
||||
|
initSetting(setting) { |
||||
|
this.setting = setting[SettingKeyEnum.PAGE_CATEGORY_TEMPLATE.value] |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 初始化分类列表数据 |
||||
|
* @param {Object} result |
||||
|
*/ |
||||
|
initCategory(result) { |
||||
|
this.list = result.data.list |
||||
|
}, |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 设置分享内容 |
||||
|
*/ |
||||
|
onShareAppMessage() { |
||||
|
const app = this |
||||
|
return { |
||||
|
title: _this.templet.shareTitle, |
||||
|
path: '/pages/category/index?' + app.$getShareUrlParams() |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 分享到朋友圈 |
||||
|
* 本接口为 Beta 版本,暂只在 Android 平台支持,详见分享到朋友圈 (Beta) |
||||
|
* https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share-timeline.html |
||||
|
*/ |
||||
|
onShareTimeline() { |
||||
|
const app = this |
||||
|
return { |
||||
|
title: _this.templet.shareTitle, |
||||
|
path: '/pages/category/index?' + app.$getShareUrlParams() |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style> |
||||
|
page { |
||||
|
background: #fff; |
||||
|
} |
||||
|
</style> |
||||
|
<style lang="scss" scoped> |
||||
|
// 搜索框 |
||||
|
.search { |
||||
|
position: fixed; |
||||
|
top: var(--window-top); |
||||
|
left: var(--window-left); |
||||
|
right: var(--window-right); |
||||
|
z-index: 9; |
||||
|
} |
||||
|
</style> |
||||
Loading…
Reference in new issue