lanan-repair-app/components/tabBar/tabBar.vue

275 lines
6.7 KiB
Vue
Raw Normal View History

2024-10-09 13:34:36 +08:00
<template>
<view class="bottoms">
<view class="box" :class="{active: aindex == 1}" @click="getgogo(1)">
<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 == 2}" @click="getgogo(2)">
<view class="imgs">
<image mode="aspectFit" src="@/static/icons/tabbar/order.png" v-show="aindex != 2"></image>
<image mode="aspectFit" src="@/static/icons/tabbar/order-checked.png" v-show="aindex == 2"></image>
</view>
2024-10-30 18:14:19 +08:00
<view class="">{{ title }}</view>
2024-10-09 13:34:36 +08:00
</view>
2024-10-16 17:14:49 +08:00
<!-- <view class="box" :class="{active: aindex == 3}" @click="getgogo(3)">-->
<!-- <view class="imgs">-->
<!-- <image mode="aspectFit" src="@/static/icons/tabbar/my.png" v-show="aindex != 3"></image>-->
<!-- <image mode="aspectFit" src="@/static/icons/tabbar/my-checked.png" v-show="aindex == 3"></image>-->
<!-- </view>-->
<!-- <view class="">我的</view>-->
<!-- </view>-->
2024-10-09 13:34:36 +08:00
</view>
</template>
<script>
import request from '../../utils/request';
import {
2024-10-23 17:59:56 +08:00
getToken,getUserInfo
2024-10-09 13:34:36 +08:00
} from '@/utils/auth'
2024-10-17 15:22:37 +08:00
let innerAudioContext ='';
// #ifdef APP || H5
const jyJPush = uni.requireNativePlugin('JY-JPush');
// #endif
2024-10-09 13:34:36 +08:00
export default {
data() {
return {
2024-10-17 15:22:37 +08:00
msgSocket: this.$msgSocket,
// 是否正在播放
ifPlay:false,
2024-10-09 13:34:36 +08:00
aindex: 1,
msgNum: null,
identity: 'user',
nowPageInterval: null,
2024-10-23 17:59:56 +08:00
userInfo:{},
2024-10-09 13:34:36 +08:00
arr: [{
text: '首页'
},
{
text: '消息'
},
{
text: '运力'
}
]
}
},
props: {
2024-10-30 18:14:19 +08:00
msg: {
type: String|Number,
default: ''
},
title: {
type: String,
default: '工单'
},
2024-10-09 13:34:36 +08:00
},
onLoad() {
2024-10-23 17:59:56 +08:00
this.userInfo = getUserInfo();
2024-10-09 13:34:36 +08:00
console.log('tabbag', uni.getStorageSync('identity'));
},
onUnload() {
if (this.nowPageInterval) {
clearTimeout(this.nowPageInterval);
}
},
mounted() {
// #ifdef APP || H5
this.identity = uni.getStorageSync('identity');
// #endif
2024-10-17 15:22:37 +08:00
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);
2024-10-09 13:34:36 +08:00
this.aindex = this.msg
},
2024-10-17 15:22:37 +08:00
watch: {
msgSocket(newVal, oldVal) {
console.log('msgSocket值发生变化', newVal, oldVal)
this.msgInfo()
},
deep: true,
},
2024-10-09 13:34:36 +08:00
methods: {
2024-10-17 15:22:37 +08:00
dianyidain() {
if(!this.ifPlay){
console.log('执行了dianyidain');
if(innerAudioContext!=""){
try {
console.log('调用前先销毁');
innerAudioContext.stop();
innerAudioContext.destroy();
innerAudioContext="";
}catch (e){
console.log('销毁出错');
}
}
innerAudioContext = uni.createInnerAudioContext();
this.ifPlay=true
// #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 = 3;
let currentCount = 0;
// 初次播放
innerAudioContext.play();
innerAudioContext.onError((err) => {
console.error('播放错误', err);
this.ifPlay=false
innerAudioContext.stop();
innerAudioContext.destroy(); // 播放错误后释放实例
});
// 监听音频播放结束事件
innerAudioContext.onEnded(() => {
// 播放计数加一
currentCount++;
// 判断是否达到播放次数上限
if (currentCount < playCount) {
// 继续播放
innerAudioContext.play();
} else {
// 播放完成,可以在这里添加额外的逻辑
console.log('播放完成');
this.ifPlay=false
//及时释放资源
innerAudioContext.stop();
innerAudioContext.destroy();
}
});
}else{
console.log('正在播放音频,拒绝播放请求');
}
},
msgInfo() {
console.log(this.msgSocket, 'msgSocket')
if (this.msgSocket) {
console.log('消息回调启动成功')
this.msgSocket.onMessage(res => {
console.log("发出提示音", res);
// this.getbottom();
this.dianyidain()
})
}
},
2024-10-09 13:34:36 +08:00
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) {
2024-10-23 17:59:56 +08:00
const userInfo = getUserInfo()
if (index == 1) {
2024-10-09 13:34:36 +08:00
this.aindex = index
2024-10-23 17:59:56 +08:00
if (userInfo.roleCodes.includes("repair_warehouse")){
//跳转首页
uni.navigateTo({
url: '/pages-warehouse/home/home'
})
} else {
uni.reLaunch({
url: '/pages-home/home/home'
})
}
2024-10-09 13:34:36 +08:00
}
if (index == 2) {
this.aindex = index
uni.reLaunch({
url: '/pages-order/orderList/orderList'
})
}
if (index == 3) {
this.aindex = index
uni.reLaunch({
url: '/pages/my/my'
})
}
}
}
}
</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;
position: relative;
z-index: 99;
}
.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>