yangan
2025-02-27 ea7457be6870e35cd385e163ca9bba26d7621d66
pages/tabbar-page/index-tabbar/index-tabbar.vue
@@ -23,6 +23,20 @@
      <driver-index v-if="roleType == 3"
         ref="driverIndexRef"
         :indexdriverBillOfLoadingData="indexdriverBillOfLoadingData"></driver-index>
      <load-unload ref="LoadUnloadRef"
         v-if="roleType == 5"></load-unload>
      <!--       <selectTarget v-if="roleType == 5"
         ref="LoadUnloadRef"></selectTarget> -->
         <sampling
          v-if="roleType == 6"
          ref="samplingRef"
         :samplingData="samplingData"
         />
         <entranceGuard
          v-if="roleType == 7"
          ref="entranceGuardgRef"
         :samplingData="entranceGuardData"
         />
      <tab-bar :current="0"></tab-bar>
      <!-- 推送消息弹窗 -->
      <u-modal :show="messagePushShow"
@@ -39,20 +53,29 @@
   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 LoadUnload from '@/pages/loadUnload-page/loadUnload-page.vue'
   import selectTarget from '@/pages/loadUnload-page/selectTarget/selectTarget.vue';
   import { mapState, mapMutations,mapGetters } from 'vuex';
   import { webSocketUrl } from '@/api/request.js';
   import sampling from '@/pages/sampling-page/index.vue'
   import entranceGuard from '@/pages/entranceGuard/index.vue'
   let socket = null;
   export default {
      components: {
         customerIndex,
         driverIndex,
         freightForwarderIndex
         freightForwarderIndex,
         LoadUnload,
         selectTarget,
         sampling,
         entranceGuard
      },
      computed: {
         ...mapState(['globalweighHouseCode', 'globalweigh', 'globalisconnect', 'globalSocket', 'websocketData',
            'globalIntervalId'
         ])
         ]),
       ...mapGetters(['websocketData'])
      },
      //首页下拉刷新
      onPullDownRefresh() {
@@ -105,9 +128,73 @@
                  uni.stopPullDownRefresh();
               }
            });
         }else if(this.roleType == 6){
            this.$reqGet('inspectedTaskPage',{inspectionStatus:2}).then(res => {
               if (res.code == 0) {
                  if(res.data.records.length){
                     this.orderPlanData  = [res.data.records[0]]
                  }else{
                     this.orderPlanData  = [];
                  }
                  this.$u.toast('加载成功');
                  uni.hideLoading();
                  uni.stopPullDownRefresh();
               } else {
                  this.$u.toast('加载失败');
                  uni.hideLoading();
                  uni.stopPullDownRefresh();
               }
            });
         }else if(this.roleType == 7){
            this.$reqGet('gateAuth',{current:1,size:5,status:30}).then(res => {
               if (res.code == 0) {
                  if(res.data.records.length){
                     this.orderPlanData  = res.data.records;
                  }else{
                     this.orderPlanData  = [];
                  }
                  this.$u.toast('加载成功');
                  uni.hideLoading();
                  uni.stopPullDownRefresh();
               } else {
                  this.$u.toast('加载失败');
                  uni.hideLoading();
                  uni.stopPullDownRefresh();
               }
            });
         }
      },
      onHide() {
         console.log('页面隐藏')
         this.$nextTick(()=>{
            if(this.roleType === 7){
               this.$refs.entranceGuardgRef.clearTime();
            }else{
               this.$refs.samplingRef.clearTime();
            }
         })
      },
      onUnload() {
         console.log('页面卸载');
         this.$store.dispatch('websocketOnClose')
         clearInterval(this.globalIntervalId);
         this.changeisconnect(false)
      },
      onShow() {
         this.init();
         this.messageReq();
      },
      onLoad() {
         this.$store.dispatch('websocketInit')
         this.$store.commit('changeisLogin', true)
         console.log(this.globalisconnect, 'index的ws数据');
         this.userAuthorization();
         this.messageReq();
         // 开启双人通话
         wx.setEnable1v1Chat({
            enable: true,
@@ -129,8 +216,10 @@
            roleType: null,
            orderPlanDataStore: [],
            indexHuoDaiOrderPlanData: [],
            entranceGuardData:[],
            indexHistoryCoalData: [],
            indexdriverBillOfLoadingData: {},
            samplingData:[],
            messagePushShow: false,
            messageList: {
               title: '',
@@ -142,20 +231,19 @@
         };
      },
      watch: {
         '$store.state.websocketData'(v) {
         'websocketData': {
             handler(v){
            console.log(v, '接受的ws数据');
            if (v.startsWith('weigh')) {
            if(v){
            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);
                  } else {
                     this.changeinfraredStatus(false);
                     this.changeWeigh(nowWeighObj.weigh);
                  }
                  this.changeWeigh(nowWeighObj.weigh);
                  this.changeinfraredStatus(!!nowWeighObj.eqInfraredStatus);
                  let warningState = nowWeighObj.warning == 1
                  this.changeWarning(warningState)
               }
            } else if (v.startsWith('msg')) {
            } else if (v.startsWith('msg')) {  //消息
               function removeTags(str) {
                  return str.replace(/<\/?[^>]+>/gi, '');
               }
@@ -165,32 +253,48 @@
                  title: this.messageList.title.slice(0, 8) + '...',
                  content: removeTags(this.messageList.content).trim().slice(0, 8) + '...'
               }
               this.messagePushShow = true;
            } else {}
               this.messagePushShow = !this.messageList.appUserId || uni.getStorageSync('userId') === this.messageList
                  .appUserId;
            } else if (v.startsWith('wsg')) {  //提醒磅房有车
               let wsgObj = JSON.parse(v.slice(5));
               if (uni.getStorageSync('carNo') === wsgObj.carNo && !wsgObj.peopleWeigh) {
                  this.changewsgVisiable(true)  //磅房忙碌的弹框的现隐藏
                  this.changewsgContent(wsgObj.content)  //磅房忙碌的弹框的内容提示
               }
               if (uni.getStorageSync('carNo') === wsgObj.carNo && wsgObj.peopleWeigh === 2) {
                  this.changeconfirmWeighVisiable(true)
                  this.changeconfirmWeighContent(wsgObj.content)
               }
            }
            //取样员页面
            else if (v.startsWith('inspect')) {
               //收到通知更新数据
               this.$nextTick(() => {
                     this.$refs.samplingRef.init();
                  });
            }
            //门卫页面
            else if (v.startsWith('gate_auth')) {
               //收到通知更新数据
               this.$nextTick(() => {
                     this.$refs.entranceGuardgRef.init();
                  });
            }
            }
             },
             deep:true,
             immediate:true
         }
      },
      onShow() {
         this.init();
         console.log(this.globalisconnect);
         if (this.globalisconnect) {
            this.$store.dispatch('websocketInit')
            this.changeisconnect(false)
            console.log(this.globalisconnect, 'index的ws心事’');
         }
         this.userAuthorization();
         this.messageReq();
      },
      onHide() {
         console.log('页面隐藏')
      },
      onUnload() {
         console.log('页面卸载');
         this.$store.dispatch('websocketOnClose')
         clearInterval(this.globalIntervalId);
         this.changeisconnect(true)
      },
      methods: {
         ...mapMutations(['pushMessage', 'changeWeigh', 'changeinfraredStatus', 'changeisconnect', 'websocketInit']),
         ...mapMutations(['pushMessage', 'changeWeigh', 'changeinfraredStatus', 'changeisconnect', 'websocketInit',
            'changewsgVisiable', 'changewsgContent', 'changeconfirmWeighVisiable', 'changeconfirmWeighContent',
            'changeWarning'
         ]),
         messagePage() {
            uni.navigateTo({
               url: '/pages/public-page/message/message'
@@ -217,6 +321,26 @@
                     this.$refs.driverIndexRef.init();
                  });
                  break;
               case 5:
                  console.log('LoadUnloadRef');
                  this.$nextTick(() => {
                     this.$refs.LoadUnloadRef.init();
                  });
                  break;
               case 6:
                  console.log('samplingRef');
                  this.$nextTick(() => {
                     this.$refs.samplingRef.init();
                     this.$refs.samplingRef.timerFun();
                  });
                  break;
                  case 7:
                  console.log('entranceGuardgRef');
                  this.$nextTick(() => {
                     this.$refs.entranceGuardgRef.init();
                     this.$refs.entranceGuardgRef.timerFun();
                  });
                  break;
               default:
                  break;
            }
@@ -225,29 +349,26 @@
         userAuthorization() {
            wx.getSetting({
               success(res) {
                  // wx.startRecord();
                  console.log('授权相机/麦克风权限success');
                  console.log(res);
                  if (!res.authSetting['scope.record'] || !res.authSetting['scope.camera']) {
                     if (!res.authSetting['scope.camera']) {
                        wx.authorize({
                           scope: 'scope.camera',
                           success() {
                              // 用户已经同意小程序使用录音功能,后续调用 wx.startRecord 接口不会弹窗询问
                              console.log('授权成功');
                              console.log('相机成功');
                           },
                           fail() {
                              console.log('授权失败');
                              console.log('相机失败');
                           }
                        });
                     } else if (!res.authSetting['scope.record']) {
                        wx.authorize({
                           scope: 'scope.record',
                           success() {
                              // 用户已经同意小程序使用录音功能,后续调用 wx.startRecord 接口不会弹窗询问
                              console.log('授权成功');
                              console.log('录音成功');
                           },
                           fail: () => {
                              console.log('授权失败');
                              console.log('录音失败');
                           }
                        });
                     }
@@ -255,64 +376,7 @@
               },
               fail() {
                  console.log('获取失败');
               }
            });
         },
         // 初始化websocket
         initWebsocket() {
            let wsUrl = `${webSocketUrl}?access_token=${uni.getStorageSync('token')}`;
            socket = uni.connectSocket({
               url: wsUrl,
               header: {
                  CLIENT_TOC: 'Y'
               },
               complete: res => {
                  console.log(res, 'socket结果');
                  if (res.errMsg == 'connectSocket:ok') {
                     this.changeisconnect(true);
                     this.isconnect = true;
                  }
               }
            });
            socket.onOpen(() => {
               console.log('onOpen');
               this.intervalId = setInterval(() => {
                  socket.send({
                     data: JSON.stringify({ type: 'ping' }),
                     success(e) {
                        console.log(e, '发送心跳成功');
                     }
                  });
               }, 30000);
            });
            // 获取服务器传来的数据,做相应处理
            socket.onMessage(res => {
               console.log('message', res);
               if (res.data.startsWith('weigh')) {
                  let nowWeighObj = JSON.parse(res.data.slice(7));
                  if (this.globalweighHouseCode && nowWeighObj.eqCode == this.globalweighHouseCode) {
                     if (nowWeighObj.eqInfraredStatus) {
                        this.changeinfraredStatus(true);
                        this.changeWeigh(nowWeighObj.weigh);
                     } else {
                        this.changeinfraredStatus(false);
                        this.changeWeigh(nowWeighObj.weigh);
                     }
                  }
               } else if (res.data.startsWith('msg')) {
                  this.messageList = JSON.parse(res.data.slice(5));
                  this.messagePushShow = true;
               } else {}
            });
            socket.onClose(e => {
               console.log('webSocketClose', e);
               this.isconnect = false;
               this.changeisconnect(false);
            });
            socket.onError(err => {
               console.log('socket报错', err);
               this.$u.toast('出现错误,请重新进入该页面,重试!!');
            });
         },
         messageconfirm() {
@@ -377,4 +441,4 @@
         }
      }
   }
</style>
</style>