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.
 
 
 
 
 

509 lines
12 KiB

<template>
<!-- 首页 -->
<view class="container" style="padding-top: 90px;background-color: #FFFFFF;">
<view class="" style="width: 100vw;">
<view class="status_bar"></view>
<navigationBar custom="true">
<view :style="{width: '100vw',height: '50px', color: 'white'}" style="background-image: linear-gradient(to right, #58BEE0, #84CCCA);position: fixed;z-index: 999;top:40px;">
<view :style="{padding: '10px', paddingLeft: '20px'}" style="display: flex;align-items: center;">
<view class="backHome" @click="backHome"></view>
<view style="font-size: 16px;font-weight: bold;line-height: 30px;margin-left: 10px;">话题分类</view>
</view>
</view>
</navigationBar>
</view>
<view class="menu_title">
<view class="dis-flex">
<image class="menu_img" :src="menuLists[currentMenu].img" mode=""></image>
<view class="tab-item">#{{ menuLists[currentMenu].title }}#</view>
<view style="flex:1;">
<view class="menu_btn" @click="showRightMenu">选择话题</view>
</view>
</view>
</view>
<!-- <loadlogo v-if="!loadlogo" /> -->
<view class="page-index" :style="'background-color: ' + datas.page.background" :class="!!bottomMenu ? 'bottomPadding' : ''">
<view class="">
<view style="">
<view class="list-con" v-show="tabIndex==1">
<pic-text-list :isClass="true" :communityList="communityList" @changenoMore1="changenoMore1" :scrollLock="scrollLock" @changeScrollLock="changeScrollLock"></pic-text-list>
<!-- <block v-for="(item, index) in communityList" :key="index">
<view @click="toDetails(item.id)" style="border-bottom: 1px solid #efefef;">
<pic-text :info="item" :index="index" :stopVideo="stopVideo" :currentPlay="currentPlay" @changePlay="changePlay()"></pic-text>
</view>
</block> -->
<load-more :isMore="communityList.length==0"></load-more>
<!-- <none-mores v-if="communityList.length==0"></none-mores> -->
</view>
</view>
</view>
<!-- <view class="full"></view> -->
</view>
<PopManager :show="showRight" :type="'top'" @clickmask="showRight = false" class="right_menu">
<cover-view v-if="showRight" class="menu_box">
<cover-view class="menu_close" @click="hideRightMenu">
<cover-image :src="imageRootNew+'mb-plus.png'" class="closeImg"></cover-image>
</cover-view>
<cover-view class="" style="height: calc(100vh - 130px);overflow-y: scroll;">
<cover-view v-for="(item,index) in menuLists" :key="index" :class="{active:currentMenu==index}"
@click="changeMenu(index)" class="menu_item">
{{item.title}}
</cover-view>
</cover-view>
</cover-view>
</PopManager>
</view>
</template>
<script>
let innerAudioContext = uni.createInnerAudioContext();
import App from '@/common/js/app.js';
import Loadlogo from '@/components/template/loadlogo.vue';
import wxApi from '@/common/js/wxApi.js';
import PopManager from '@/components/template/PopManager.vue';
// import picText from "@/components/template/pic_text/pic_text.vue"
import picTextList from "@/components/template/pic_text/pic_text_list.vue"
import loadMore from '@/components/template/loadmore.vue'
import noneMores from '@/components/template/nonemores.vue'
export default {
data() {
return {
loadlogo: false,
loadAgain: false,
datas: {
basic: [],
adv: '',
page: {}
},
pageInfo: {},
bottomMenu: null,
bgAudioMannager:'',
muiick:'',
seeting:null,
pagenum:0,
isred:0,
height:40,
isRedId:null,
isRedShare:null,
shareShow:false,
hintShow:false,
tabIndex: 1,
communityList: [],
tab1Page: 1,
page_index: 10,
noMore1: false,
// stopVideo: 0,
scrollLock: false,
// scrollTimer: null,
// currentPlay: -2,//当前正在播放的视频在列表中的索引,-2表示没有正在播放
showRight: false,//右侧话题边栏
menuLists: [],
currentMenu: 0,
currentMenuId: null
};
},
components: {
Loadlogo,
PopManager,
// picText,
picTextList,
loadMore,
noneMores
},
onReady(){
// console.log('onReady比onLoad慢')
},
onLoad(e) {
// console.log('onLoad')
let _this = this;
uni.getSystemInfo({
success:function(data){
// 将其赋值给this
_this.height=data.statusBarHeight;
}
})
this.currentMenu = e.index;
this.currentMenuId = e.id;
this.getMenu();
},
onShow() {
this.getList();
},
onHide() {
let _this = this,
play_Audio = false,
pageAudio = _this.pageInfo.music;
if (!play_Audio) {
innerAudioContext.pause();
innerAudioContext.onPause(() => {
console.log('暂停播放');
});
}
// _this.isTabbars = false;
_this.play_Audio = play_Audio;
},
created() {},
mounted() {
this.$nextTick(function() {
this.getcurCityTime();
});
},
watch:{
},
methods: {
backHome(){
uni.navigateBack({
delta:1
})
},
getcurCityTime() {
let _this = this,
agencyData = uni.getStorageSync('agencyData'),
timestamp = new Date().getTime(),
cityTime = uni.getStorageSync('cityTimestamp'),
nowTime = !!cityTime ? timestamp - cityTime : '';
if (!!nowTime) {
let nowTime_m = parseInt((nowTime / 1000 / 60) % 60);
if (nowTime_m > 120) {
// #ifdef H5
wxApi.wxRegister(() => {
jWeixin.getLocation({
type: 'gcj02',
success: function(res) {
App.getAreaId(
res,
'',
'',
options => {
console.log('拿到了');
if (agencyData.areaid !== options.data.areaid) {
uni.showModal({
title: `定位到您在${options.data.areaname}`,
content: `是否切换至该城市进行探索`,
confirmText: '切换',
success: function(calback) {
if (calback.confirm) {
uni.setStorageSync('agencyData', options.data);
_this.$nextTick(function() {
_this.$refs.diypages.currentaidCity = options.data.areaname;
uni.setStorageSync('curLoction', res);
});
}
}
});
}
},
true
);
}
});
});
// #endif
// #ifdef MP-WEIXIN
App.getLocation().then(res => {
App.getAreaId(
res,
'',
'',
options => {
if (agencyData.areaid !== options.data.areaid) {
uni.showModal({
title: `定位到您在${options.data.areaname}`,
content: `是否切换至该城市进行探索`,
confirmText: '切换',
success: function(calback) {
if (calback.confirm) {
uni.setStorageSync('agencyData', options.data);
_this.$nextTick(function() {
_this.$refs.diypages.currentaidCity = options.data.areaname;
uni.setStorageSync('curLoction', res);
});
}
}
});
}
},
true
);
});
// #endif
}
}
},
toArticle(id){
App.navigationTo({
url:`pages/mainPages/headline/headlineDetail?headline_id=${id}`
})
},
// 获取学生社区图文列表
getList(page = 1, isPage = false){
let _this = this;
let data = {
id: 0,//0对应掌上生活的全部类目
two_id: this.currentMenuId,
page,
page_index: _this.page_index,
homeflag: 1,
keyword: '',
};
App._post_form('&p=pocket&do=infoList', data, res => {
let list = [];
if (!isPage) {
if (res.data.list.length > 0) {
list = res.data.list;
_this.setData({
communityList: list
})
} else {
_this.noMore1 = true;
uni.showToast({
title: '暂无数据',
icon: 'none'
})
}
}else{//第二页走这里
if (res.data.list.length > 0){
list = [..._this.communityList, ...res.data.list];
_this.setData({
communityList: list
})
}else{
_this.noMore1 = true;
}
}
});
},
changenoMore1(e){
this.noMore1 = e;
},
changeScrollLock(e){
this.scrollLock = e;
},
showRightMenu(){
this.showRight = true;
},
hideRightMenu(){
this.showRight = false;
},
changeMenu(i){
this.currentMenu = i;
this.currentMenuId = this.menuLists[this.currentMenu].id;
this.showRight = false;
this.communityList = [];
this.getList();
},
getMenu(){
let data = {
is_two: 1,
is_set: 0
};
App._post_form('&p=pocket&do=classList', data, res => {
this.menuLists = res.data.list;
});
}
},
destroyed() {
},
onPullDownRefresh() {
//停止下拉刷新
uni.stopPullDownRefresh();
},
onPageScroll(e){
//页面滚动,视频暂停
this.scrollLock = true;
},
onReachBottom(e) {
// uni.$emit('isBottomMore');
// uni.$emit('tabisBottomMore');
// console.log(this.tabIndex, this.noMore1, this.noMore2)
if(this.tabIndex==1){
if(!this.noMore1){
this.tab1Page++;
this.getList(this.tab1Page, true);
}else{
uni.showToast({
title: '没有更多了',
icon: 'none'
})
}
}
},
onShareAppMessage(res){
let _this = this;
if (res.from === 'button') {// 来自页面内分享按钮
let listId = res.target.id;
let title = res.target.dataset.title;
App._post_form('&p=pocket&do=shareNum', { id: listId }, res => {
for(let index=0;index<_this.communityList.length;index++){
if(_this.communityList[index].id == listId){
_this.communityList[index].share++;
}
}
setTimeout(()=>{
uni.showToast({
icon: 'none',
title: '分享成功',
duration: 2000
});
}, 2000)
});
return {
title: '粤职才',
path: '/pagesA/pictureTextDetails/pictureTextDetails?id='+listId
}
}else{
return {
title: '话题分类',
path: '/pagesA/communityClassification/communityClassification'
}
}
}
};
</script>
<style scoped lang="scss">
.container {
background-color: #ffd93f;
-webkit-overflow-scrolling: touch;
}
.page-index {
width: 100vw;
overflow: hidden;
background-color: #fff;
position: relative;
}
.bottomPadding {
padding-bottom: 100upx;
}
.full {
width: 750upx;
height: 110upx;
background: #f8f8f8;
}
//
.status_bar {
height: var(--status-bar-height);
width: 100%;
background-color: #fff;
position: fixed;
padding-bottom: 15px;
z-index: 99;
top: 0px;
background-image: linear-gradient(to right, #58BEE0, #84CCCA);
}
.backHome{
width: 14rpx;
height: 14rpx;
border: 2px solid #fff;
border-right-color: transparent;
border-top-color: transparent;
transform: scaleX(1.2) rotate(45deg);
}
.dis-flex{
display: flex;
align-items: center;
}
.list-con{
padding: 0px 10px;
.list-item{
display: flex;
justify-content: space-between;
border-bottom: 1px solid #efefef;
padding: 10px 4px;
}
.list-title{
display:-webkit-box;//将盒子转换为弹性盒子
-webkit-box-orient:vertical;//文本显示方式默认水平
-webkit-line-clamp:2;//设置显示多少行
overflow:hidden;
font-size: 14px;
color: #333;
margin-bottom: 7px;
}
.list-img{
width: 80px;
height: 60px;
border-radius: 8px;
margin-left: 20px;
background-color: #d1d1d1;
}
}
.menu_title{
margin-bottom: 20px;
background-image: linear-gradient(to right, #58BEE0, #84CCCA);
&>view{
position: relative;
top: 12px;
z-index: 1;
.tab-item{
color: #fff;
font-size: 14px;
padding: 10rpx 30rpx;
}
.menu_img{
width: 140rpx;height: 140rpx;border-radius: 10px;
margin-left: 15px;
}
.menu_btn{
width: 180rpx;
height: 60rpx;
line-height: 60rpx;
border-radius: 100px;
background-color: rgba(255, 255, 255, 1);
color: rgba(81, 156, 251, 1);
font-size: 14px;
text-align: center;
margin: 0px 15px 0px auto;
}
}
}
.right_menu{
.menu_box{
padding-top: 90px;
width: 50vw;height: 100vh;
position: fixed;top: 0px;
left: 50%;z-index: 9999;
background-color: #fff;
}
.menu_close{
margin: 0rpx 0rpx 0rpx 30rpx;
.closeImg{
width: 40rpx;
height: 40rpx;
transform: rotate(45deg);
}
}
.menu_item{
width: 300rpx;
height: 88rpx;
line-height: 88rpx;
border-radius: 5px;
color: #444;
background-color: rgba(227, 245, 245, 1);
text-align: center;
font-size: 14px;
margin: 40rpx auto;
&.active{
color: #fff;
background-color: rgba(103, 209, 252, 1);
}
}
}
/deep/ .loadMore-box{
background-color: #fff !important;
padding-top: 20rpx;
}
/deep/ .more-status{
display: none !important;
}
</style>