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.
159 lines
4.1 KiB
159 lines
4.1 KiB
<template> |
|
<HeaderNav :title="title"></HeaderNav> |
|
<view :class="{show:(footCheck === 'home')}"> |
|
<HomePage v-if="(footCheck === 'home')"></HomePage> |
|
</view> |
|
<view :class="{show:(footCheck === 'order')}" v-if="$store.state.userInfo.store_id > 0"> |
|
<OrderPage ref="orderList" v-if="(footCheck === 'order')"></OrderPage> |
|
</view> |
|
<view :class="{show:(footCheck === 'chat')}"> |
|
<ChatPage v-if="(footCheck === 'chat')"></ChatPage> |
|
</view> |
|
<view :class="{show:(footCheck === 'user')}"> |
|
<UserPage v-if="(footCheck === 'user')" @tabNavTo="footSelect"></UserPage> |
|
</view> |
|
<RightNav v-if="rightShow"></RightNav> |
|
<FooterNav :foot-group="footGroup" @change="footSelect" :footCheck="current"></FooterNav> |
|
<u-modal :show="show" title="登录" content="当前未登录是否前往登录" @confirm="userLogin" @cancel="this.show = false;" |
|
:closeOnClickOverlay="true" showCancelButton></u-modal> |
|
</template> |
|
|
|
<script> |
|
import FooterNav from '@/components/FooterNav/Index.vue'; |
|
import RightNav from '@/components/RightNav/Index.vue'; |
|
import HeaderNav from '@/components/HeaderNav/Index.vue'; |
|
import HomePage from '@/pages/Index/components/HomePage/Index.vue'; |
|
import OrderPage from '@/pages/Index/components/OrderPage/Index.vue'; |
|
import ChatPage from '@/pages/Index/components/ChatPage/Index.vue'; |
|
import UserPage from '@/pages/Index/components/UserPage/Index.vue'; |
|
import {imghost} from "@/config/host"; |
|
import {UserCache} from "@/config/config.js"; |
|
import log from "@/utils/log"; |
|
export default { |
|
components: { |
|
FooterNav, |
|
RightNav, |
|
HeaderNav, |
|
HomePage, |
|
OrderPage, |
|
ChatPage, |
|
UserPage, |
|
}, |
|
data() { |
|
return { |
|
current:0, |
|
footCheck: 'home', |
|
show: false, |
|
title: '标题', |
|
content: 'uview-plus的目标是成为uni-app生态最优秀的UI框架', |
|
footGroup: [{ |
|
image: imghost + "/static/image/foot-nav-button-one", |
|
name: 'home', |
|
title:'汪汪行天下', |
|
is_show:true |
|
}, |
|
{ |
|
image: imghost + "/static/image/foot-nav-button-two", |
|
name: 'order', |
|
title:'订单', |
|
is_show: UserCache.get('store_id', 0) > 0 |
|
}, |
|
{ |
|
image: imghost + "/static/image/foot-nav-button-three", |
|
name: 'chat', |
|
title:'在线沟通', |
|
is_show:true |
|
}, |
|
{ |
|
image: imghost + "/static/image/foot-nav-button-four", |
|
name: 'user', |
|
title:'', |
|
is_show:true |
|
}, |
|
], |
|
rightShow:false, |
|
} |
|
}, |
|
onLoad(option) { |
|
if(option?.foot_check){ |
|
this.footSelect(option.foot_check); |
|
} |
|
}, |
|
methods: { |
|
footSelect(index){ |
|
this.current = index; |
|
this.footCheck = this.footGroup[index].name; |
|
this.title = this.footGroup[index].title; |
|
this.rightShow = this.footCheck === 'home' || this.footCheck === 'user'; |
|
}, |
|
userLogin() { |
|
uni.navigateTo({ |
|
url:'/pages/Login/index' |
|
}) |
|
this.show = false; |
|
}, |
|
// store. |
|
}, |
|
onReachBottom() { |
|
log(this.footCheck); |
|
if(this.footCheck === 'order'){ |
|
this.$refs.orderList.getOrderList(); |
|
} |
|
|
|
}, |
|
onPageScroll(res) { |
|
if (res.scrollTop <= 20) { |
|
uni.$emit('isTop', true); |
|
} else { |
|
uni.$emit('isTop', false); |
|
} |
|
|
|
}, |
|
created() { |
|
// this.pagePadding = (api.navHeight().navPaddingTop+ |
|
// api.navHeight().navHeight + (api.navHeight().headerPadding *2)) |
|
this.footGroup = this.footGroup.filter(v => v.is_show ); |
|
}, |
|
mounted() { |
|
this.title = this.$store.state.title; |
|
let token = uni.getStorageSync('token'); |
|
if (!token) { |
|
this.show = true; |
|
}else{ |
|
let user = UserCache.get(); |
|
this.$store.commit('userInfo', user); |
|
let userExtends = UserCache.extGet(); |
|
this.$store.commit('userExtends', userExtends); |
|
} |
|
}, |
|
watch: { |
|
"$store.state.footCheck": { |
|
handler(newVal, oldVal) { |
|
this.footCheck = newVal; |
|
} |
|
}, |
|
"$store.state.title": { |
|
handler(newVal, oldVal) { |
|
this.title = newVal; |
|
} |
|
} |
|
} |
|
} |
|
</script> |
|
|
|
<style lang="scss"> |
|
@keyframes show { |
|
0% { |
|
display: block; |
|
opacity: 0; |
|
} |
|
|
|
100% { |
|
opacity: 1; |
|
} |
|
} |
|
|
|
.show { |
|
animation: show .5s; |
|
} |
|
</style> |