284 lines
6.3 KiB
Vue
284 lines
6.3 KiB
Vue
<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>
|