lanan-app/components/tabBar/tabBar.vue
2024-09-06 09:19:01 +08:00

284 lines
6.3 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="bottoms">
<view class="box" :class="{active: aindex == 1}" @click="getgogo(1)" v-if="identity == 'user' ">
<view class="imgs">
<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>
</view>
<view class="">首页</view>
</view>
<view class="box" :class="{active: aindex == 8}" @click="getgogo(8)" v-if="identity == 'police' ">
<view class="imgs">
<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>
</view>
<view class="">首页</view>
</view>
<!-- <view class="box" @click="getgogo(2)">
<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>
</view> -->
<!-- #ifdef APP-PLUS || H5 -->
<view class="box" :class="{active: aindex == 3}" @click="getgogo(3)">
<view class="imgs">
<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>
</view>
<view class="">运力</view>
</view>
<!-- #endif -->
<view class="box" :class="{active: aindex == 4}" @click="getgogo(4)">
<view class="imgs">
<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>
</view>
<view class="">个人中心</view>
</view>
</view>
</template>
<script>
import request from '../../utils/request';
import {
getToken
} from '@/utils/auth'
const innerAudioContext = uni.createInnerAudioContext();
// #ifdef APP || H5
const jyJPush = uni.requireNativePlugin('JY-JPush');
// #endif
export default {
data() {
return {
msgSocket: this.$msgSocket,
aindex: 1,
msgNum: null,
identity: 'user',
nowPageInterval: null,
arr: [{
text: '首页'
},
{
text: '消息'
},
{
text: '运力'
},
{
text: '个人中心'
},
]
}
},
props: {
msg: String|Number
},
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.identity = uni.getStorageSync('identity');
// #endif
if (!this.nowPageInterval) {
this.nowPageInterval = setInterval(() => {
// console.log('this.$msgSocket: ',this.$msgSocket);
this.msgSocket = this.$msgSocket
}, 3000);
}
console.log(this.aindex);
setTimeout(() => {
this.msgInfo()
}, 2000);
this.aindex = this.msg
if (this.identity == 'police' && this.msg == '1') {
this.aindex = '8'
}
this.getbottom()
},
watch: {
msgSocket(newVal, oldVal) {
console.log('msgSocket值发生变化', newVal, oldVal)
this.msgInfo()
},
deep: true,
},
methods: {
dianyidain() {
console.log('执行了dianyidain');
// #ifdef APP-PLUS
innerAudioContext.src = '../../static/msgV.mp3';
// #endif
// #ifndef APP-PLUS
innerAudioContext.src = 'https://www.nuoyunr.com/lananRsc/rescue/msgV.mp3';
// #endif
// 设置播放次数和计数器
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("发出提示音", res);
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;
background: #fff;
display: flex;
justify-content: space-between;
font-size: 14px;
font-weight: 400;
color: #FFFFFF;
padding: 12rpx 40rpx;
box-sizing: border-box;
box-shadow: 4rpx 2rpx 12rpx 0 #c3c3c3;
}
.box {
flex: 1;
width: 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: 12px;
color: #929292;
&.active {
color: #327DFB;
}
}
.imgs {
margin: 0 auto;
width: 50rpx;
height: 50rpx;
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;
}
</style>