<template>
|
<view class="max-block">
|
<view class="search-bar">
|
<view class="icon-body">
|
<view class="icon-box"
|
@click="messagePage">
|
<u-badge :isDot="true"
|
type="error"
|
v-if="dotShow"></u-badge>
|
<u-icon name="chat"
|
color="#fff"
|
size="50"></u-icon>
|
</view>
|
</view>
|
</view>
|
<customer-index v-if="roleType == 1||roleType == 4"
|
ref="customerIndexRef"
|
:orderPlanDataStore="orderPlanDataStore"></customer-index>
|
<freight-forwarder-index v-if="roleType == 2"
|
ref="freightForwarderIndexRef"
|
:indexHistoryCoalData="indexHistoryCoalData"
|
:indexHuoDaiOrderPlanData="indexHuoDaiOrderPlanData"></freight-forwarder-index>
|
<driver-index v-if="roleType == 3"
|
ref="driverIndexRef"
|
:indexdriverBillOfLoadingData="indexdriverBillOfLoadingData"></driver-index>
|
<tab-bar :current="0"></tab-bar>
|
<!-- 推送消息弹窗 -->
|
<u-modal :show="messagePushShow"
|
:title="messageList.title"
|
@confirm="messageconfirm"
|
confirm-text="前去查看">
|
<view class="slot-content"><u-parse :content="messageList.content"></u-parse></view>
|
</u-modal>
|
<!-- <view class="white-block"></view> -->
|
</view>
|
</template>
|
|
<script>
|
import customerIndex from '@/pages/customer-page/customer-index/customer-index.vue';
|
import driverIndex from '@/pages/driver-page/driver-index/driver-index.vue';
|
import freightForwarderIndex from '@/pages/freight-forwarder-page/freightForwarder-index/freightForwarder-index.vue';
|
import { mapState, mapMutations } from 'vuex';
|
import { webSocketUrl } from '@/api/request.js';
|
|
let socket = null;
|
export default {
|
components: {
|
customerIndex,
|
driverIndex,
|
freightForwarderIndex
|
},
|
computed: {
|
...mapState(['globalweighHouseCode', 'globalweigh', 'globalisconnect', 'globalSocket', 'websocketData',
|
'globalIntervalId'
|
])
|
},
|
//首页下拉刷新
|
onPullDownRefresh() {
|
uni.showLoading({ title: '加载中...' });
|
// 获取历史通知单
|
if (this.roleType == 1 || this.roleType == 2) {
|
this.$reqGet('getJhOrderPlanDataPage', { current: 1, size: 10 }).then(res => {
|
if (res.data.records) {
|
this.indexHistoryCoalData = res.data.records;
|
uni.hideLoading();
|
uni.stopPullDownRefresh();
|
} else {
|
this.$u.toast('加载失败');
|
}
|
});
|
}
|
// 客户获取日计划
|
if (this.roleType == 1 || this.roleType == 4) {
|
this.$reqGet('GetOrderPlan').then(res => {
|
if (res.data) {
|
this.orderPlanDataStore = res.data;
|
this.$u.toast('加载成功');
|
uni.hideLoading();
|
uni.stopPullDownRefresh();
|
} else {
|
this.$u.toast('加载失败');
|
}
|
});
|
} else if (this.roleType == 2) {
|
this.$reqGet('huoDaiList').then(res => {
|
if (res.data) {
|
this.indexHuoDaiOrderPlanData = res.data;
|
this.$u.toast('加载成功');
|
uni.hideLoading();
|
uni.stopPullDownRefresh();
|
} else {
|
this.$u.toast('加载失败');
|
}
|
});
|
} else if (this.roleType == 3) {
|
this.$reqGet('qiangDanList').then(res => {
|
if (res.code == 0) {
|
this.indexdriverBillOfLoadingData = res.data;
|
this.$u.toast('加载成功');
|
uni.hideLoading();
|
uni.stopPullDownRefresh();
|
} else {
|
this.$u.toast('加载失败');
|
uni.hideLoading();
|
uni.stopPullDownRefresh();
|
}
|
});
|
}
|
},
|
onLoad() {
|
// 开启双人通话
|
wx.setEnable1v1Chat({
|
enable: true,
|
backgroundType: 1,
|
minWindowType: 2,
|
success() {
|
console.log('开启双人通话成功');
|
},
|
fail() {
|
console.log('开启双人通话失败');
|
},
|
complete() {
|
console.log('开启双人通话成功Complete');
|
}
|
});
|
},
|
data() {
|
return {
|
roleType: null,
|
orderPlanDataStore: [],
|
indexHuoDaiOrderPlanData: [],
|
indexHistoryCoalData: [],
|
indexdriverBillOfLoadingData: {},
|
messagePushShow: false,
|
messageList: {
|
title: '',
|
content: "",
|
},
|
isconnect: false,
|
dotShow: false,
|
appHide: false
|
};
|
},
|
watch: {
|
'$store.state.websocketData'(v) {
|
console.log(v, '接受的ws数据');
|
if (v.startsWith('weigh')) {
|
let nowWeighObj = JSON.parse(v.slice(7));
|
if (this.globalweighHouseCode && nowWeighObj.eqCode == this.globalweighHouseCode) {
|
if (nowWeighObj.eqInfraredStatus) {
|
this.changeinfraredStatus(true);
|
this.changeWeigh(nowWeighObj.weigh);
|
let warningState = nowWeighObj.warning == 1
|
this.changeWarning(warningState)
|
} else {
|
this.changeinfraredStatus(false);
|
this.changeWeigh(nowWeighObj.weigh);
|
let warningState = nowWeighObj.warning == 1
|
this.changeWarning(warningState)
|
}
|
}
|
} else if (v.startsWith('msg')) {
|
function removeTags(str) {
|
return str.replace(/<\/?[^>]+>/gi, '');
|
}
|
this.messageList = JSON.parse(v.slice(5));
|
this.messageList = {
|
...this.messageList,
|
title: this.messageList.title.slice(0, 8) + '...',
|
content: removeTags(this.messageList.content).trim().slice(0, 8) + '...'
|
}
|
this.messagePushShow = true;
|
} else {}
|
}
|
},
|
onShow() {
|
this.init();
|
if (this.globalisconnect) {
|
this.$store.dispatch('websocketInit')
|
this.changeisconnect(false)
|
this.changeisLogin(true)
|
console.log(this.globalisconnect, 'index的ws数据’');
|
}
|
this.userAuthorization();
|
this.messageReq();
|
},
|
onUnload() {
|
console.log('页面卸载');
|
this.$store.dispatch('websocketOnClose')
|
clearInterval(this.globalIntervalId);
|
this.changeisconnect(true)
|
},
|
methods: {
|
...mapMutations(['pushMessage', 'changeWeigh', 'changeinfraredStatus', 'changeisconnect', 'websocketInit',
|
'changeisLogin', 'changeWarning'
|
]),
|
messagePage() {
|
uni.navigateTo({
|
url: '/pages/public-page/message/message'
|
});
|
},
|
init() {
|
this.roleType = uni.getStorageSync('roleType');
|
switch (this.roleType) {
|
case 1:
|
console.log('customerIndexRef');
|
this.$nextTick(() => {
|
this.$refs.customerIndexRef.init();
|
});
|
break;
|
case 2:
|
console.log('freightForwarderIndexRef');
|
this.$nextTick(() => {
|
this.$refs.freightForwarderIndexRef.init();
|
});
|
break;
|
case 3:
|
console.log('driverIndexRef');
|
this.$nextTick(() => {
|
this.$refs.driverIndexRef.init();
|
});
|
break;
|
case 4:
|
console.log('customerIndexRef');
|
this.$nextTick(() => {
|
this.$refs.customerIndexRef.init();
|
});
|
break;
|
default:
|
break;
|
}
|
},
|
// 要求用户授权相机/麦克风权限
|
userAuthorization() {
|
wx.getSetting({
|
success(res) {
|
// wx.startRecord();
|
console.log('授权相机/麦克风权限success');
|
if (!res.authSetting['scope.record'] || !res.authSetting['scope.camera']) {
|
if (!res.authSetting['scope.camera']) {
|
wx.authorize({
|
scope: 'scope.camera',
|
success() {
|
// 用户已经同意小程序使用录音功能,后续调用 wx.startRecord 接口不会弹窗询问
|
console.log('授权成功');
|
},
|
fail() {
|
console.log('授权失败');
|
}
|
});
|
} else if (!res.authSetting['scope.record']) {
|
wx.authorize({
|
scope: 'scope.record',
|
success() {
|
// 用户已经同意小程序使用录音功能,后续调用 wx.startRecord 接口不会弹窗询问
|
console.log('授权成功');
|
},
|
fail: () => {
|
console.log('授权失败');
|
}
|
});
|
}
|
}
|
},
|
fail() {
|
console.log('获取失败');
|
}
|
});
|
},
|
messageconfirm() {
|
this.messagePushShow = false;
|
uni.navigateTo({
|
url: '/pages/public-page/message/message'
|
});
|
},
|
messageReq() {
|
this.$reqGet('getMessageByUser', { current: 1, size: 10 }).then(res => {
|
if (res.code == 0) {
|
this.messageList = res.data.records;
|
let filtermessage = this.messageList.filter(v => v.status == 0);
|
this.dotShow = filtermessage.length > 0;
|
}
|
});
|
}
|
}
|
};
|
</script>
|
|
<style lang="scss"
|
scoped>
|
.max-block {
|
font-family: siYuanLight !important;
|
}
|
|
.white-block {
|
width: 100%;
|
height: vww(20);
|
margin-top: vww(10);
|
}
|
|
.search-bar {
|
height: vww(20);
|
width: 96%;
|
position: absolute;
|
top: vww(96);
|
right: vww(32);
|
z-index: 1;
|
|
.icon-body {
|
position: relative;
|
display: flex;
|
justify-content: flex-end;
|
|
.icon-box {
|
width: vww(30);
|
height: vww(30);
|
border-radius: 50%;
|
display: flex;
|
justify-content: center;
|
align-items: center;
|
position: relative;
|
|
/deep/ .u-badge {
|
position: absolute;
|
left: vww(18);
|
top: vww(5);
|
z-index: 1;
|
}
|
}
|
}
|
}
|
</style>
|