lanan-app/components/tabBar/tabBar.vue

274 lines
5.9 KiB
Vue
Raw Normal View History

2024-08-20 20:02:05 +08:00
<template>
<view class="bottoms">
2024-08-22 19:34:47 +08:00
<view class="box" :class="{active: aindex == 1}" @click="getgogo(1)" v-if="role == 'user' ">
2024-08-20 20:02:05 +08:00
<view class="imgs">
2024-08-23 23:17:22 +08:00
<image mode="aspectFit" src="@/static/icons/tabbar/home.png" v-show="aindex != 1"></image>
<image mode="aspectFit" src="@/static/icons/tabbar/home-checked.png" v-show="aindex == 1"></image>
2024-08-20 20:02:05 +08:00
</view>
<view class="">首页</view>
</view>
2024-08-22 19:34:47 +08:00
<view class="box" :class="{active: aindex == 8}" @click="getgogo(8)" v-if="role == 'police' ">
2024-08-20 20:02:05 +08:00
<view class="imgs">
2024-08-23 23:17:22 +08:00
<image mode="aspectFit" src="@/static/icons/tabbar/home.png" v-show="aindex != 8"></image>
<image mode="aspectFit" src="@/static/icons/tabbar/home-checked.png" v-show="aindex == 8"></image>
2024-08-20 20:02:05 +08:00
</view>
<view class="">首页</view>
</view>
2024-08-22 19:34:47 +08:00
<!-- <view class="box" @click="getgogo(2)">
2024-08-20 20:02:05 +08:00
<view class="imgs" style="position: relative;">
<view class="hongdian" v-if=" msgNum && msgNum != 0 ">
{{msgNum || ""}}
</view>
<view class="imgs">
<image src="../../static/message.png" v-show="aindex == 2"></image>
<image src="../../static/messagex.png" v-show="aindex != 2"></image>
</view>
</view>
<view class="">消息</view>
2024-08-22 19:34:47 +08:00
</view> -->
2024-08-20 20:02:05 +08:00
<!-- #ifdef APP-PLUS || H5 -->
2024-08-22 19:34:47 +08:00
<view class="box" :class="{active: aindex == 3}" @click="getgogo(3)">
2024-08-20 20:02:05 +08:00
<view class="imgs">
2024-08-23 23:17:22 +08:00
<image mode="aspectFit" src="@/static/icons/tabbar/car.png" v-show="aindex != 3"></image>
<image mode="aspectFit" src="@/static/icons/tabbar/car-checked.png" v-show="aindex == 3"></image>
2024-08-20 20:02:05 +08:00
</view>
<view class="">运力</view>
</view>
<!-- #endif -->
2024-08-22 19:34:47 +08:00
<view class="box" :class="{active: aindex == 4}" @click="getgogo(4)">
2024-08-20 20:02:05 +08:00
<view class="imgs">
2024-08-23 23:17:22 +08:00
<image mode="aspectFit" src="@/static/icons/tabbar/my.png" v-show="aindex != 4"></image>
<image mode="aspectFit" src="@/static/icons/tabbar/my-checked.png" v-show="aindex == 4"></image>
2024-08-20 20:02:05 +08:00
</view>
<view class="">个人中心</view>
</view>
</view>
</template>
<script>
import request from '../../utils/request';
import {
getToken
} from '@/utils/auth'
const innerAudioContext = uni.createInnerAudioContext();
const jyJPush = uni.requireNativePlugin('JY-JPush');
export default {
data() {
return {
msgSocket: this.$msgSocket,
aindex: 1,
msgNum: null,
role: 'user',
nowPageInterval: null,
arr: [{
text: '首页'
},
{
text: '消息'
},
{
text: '运力'
},
{
text: '个人中心'
},
]
}
},
props: {
2024-08-23 23:34:35 +08:00
msg: String|Number
2024-08-20 20:02:05 +08:00
},
onLoad() {
console.log('tabbag', uni.getStorageSync('identity'));
},
onUnload() {
if (this.nowPageInterval) {
clearTimeout(this.nowPageInterval);
}
},
mounted() {
// #ifdef APP || H5
console.log('tabbag', uni.getStorageSync('identity'));
this.role = uni.getStorageSync('identity');
// #endif
if (!this.nowPageInterval) {
this.nowPageInterval = setInterval(() => {
this.msgSocket = this.$msgSocket
}, 3000);
}
console.log(this.aindex);
setTimeout(() => {
this.msgInfo()
}, 2000);
this.aindex = this.msg
this.getbottom()
},
watch: {
msgSocket(newVal, oldVal) {
console.log('msgSocket值发生变化', newVal, oldVal)
this.msgInfo()
},
deep: true,
},
methods: {
dianyidain() {
console.log('执行了dianyidain');
innerAudioContext.src = 'https://www.nuoyunr.com/lananRsc/rescue/msgV.mp3';
// 设置播放次数和计数器
const playCount = 5;
let currentCount = 0;
// 监听音频播放结束事件
innerAudioContext.onEnded(() => {
// 播放计数加一
currentCount++;
// 判断是否达到播放次数上限
if (currentCount < playCount) {
// 继续播放
innerAudioContext.play();
} else {
// 播放完成,可以在这里添加额外的逻辑
console.log('播放完成');
}
});
// 初次播放
innerAudioContext.play();
},
msgInfo() {
console.log(this.msgSocket, 'msgSocket')
if (this.msgSocket) {
console.log('消息回调启动成功')
this.msgSocket.onMessage(res => {
console.log("发出提示音");
this.getbottom();
this.dianyidain()
})
}
},
async getbottom() {
if (!getToken()) {
return
}
let res = await request({
url: '/announcement/announcement/getOwnNoRead',
method: 'get',
})
console.log('jitiao', res);
if (res.code == 200) {
this.msgNum = res.data
}
},
getgogo(index) {
if (index == 1) {
this.aindex = index
uni.reLaunch({
url: '/pages/rescue/rescue'
})
}
if (index == 2) {
this.aindex = index
uni.reLaunch({
url: '/pages/message/message'
})
}
if (index == 3) {
this.aindex = index
uni.reLaunch({
url: '/pages/move/move'
})
}
if (index == 4) {
this.aindex = index
uni.reLaunch({
url: '/pages/my/my'
})
}
if (index == 8) {
this.aindex = index
uni.reLaunch({
url: '/pages/rescue/trafficPolice'
})
}
}
}
}
</script>
<style scoped lang="scss">
.bottoms {
width: 100%;
position: fixed;
bottom: 0px;
2024-08-22 19:34:47 +08:00
background: #fff;
2024-08-20 20:02:05 +08:00
display: flex;
justify-content: space-between;
font-size: 14px;
font-weight: 400;
color: #FFFFFF;
2024-08-22 19:34:47 +08:00
padding: 12rpx 40rpx;
box-sizing: border-box;
box-shadow: 4rpx 2rpx 12rpx 0 #c3c3c3;
2024-08-20 20:02:05 +08:00
}
.box {
2024-08-22 19:34:47 +08:00
flex: 1;
width: 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
2024-08-20 20:02:05 +08:00
font-size: 12px;
2024-08-22 19:34:47 +08:00
color: #929292;
2024-08-23 23:34:35 +08:00
2024-08-22 19:34:47 +08:00
&.active {
color: #327DFB;
}
2024-08-20 20:02:05 +08:00
}
.imgs {
margin: 0 auto;
2024-08-22 19:34:47 +08:00
width: 50rpx;
height: 50rpx;
2024-08-20 20:02:05 +08:00
image {
width: 100%;
height: 100%;
}
}
.hongdian {
width: 12px;
height: 12px;
background-color: crimson;
border-radius: 50%;
overflow: hidden;
position: absolute;
top: -5px;
right: -8px;
z-index: 9999;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 2px;
}
2024-08-23 23:34:35 +08:00
</style>