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>
|