yangan
2024-09-26 0eab6dcc163bec041d44bc27c9c89ef9c6ec988d
pages/tabbar-page/index-tabbar/index-tabbar.vue
@@ -1,157 +1,422 @@
<template>
   <view>
      <customer-index v-if="roleType == 1" ref="customerIndexRef" :orderPlanDataStore="orderPlanDataStore"></customer-index>
      <freight-forwarder-index
         v-if="roleType == 2"
   <view class="max-block">
      <view class="search-bar">
         <view class="icon-body">
            <view class="icon-box"
               @click="messagePage" v-if="roleType != 6">
               <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"
         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>
         :indexHuoDaiOrderPlanData="indexHuoDaiOrderPlanData"></freight-forwarder-index>
      <driver-index v-if="roleType == 3"
         ref="driverIndexRef"
         :indexdriverBillOfLoadingData="indexdriverBillOfLoadingData"></driver-index>
      <load-unload ref="LoadUnloadRef"
         v-if="roleType == 5" :indexLoadUnloadBillOfLoadingData="detailData"></load-unload>
      <doorkeep-index ref="doorkeepIndexRef"
         v-if="roleType == 6"></doorkeep-index>
      <!--       <selectTarget v-if="roleType == 5"
         ref="LoadUnloadRef"></selectTarget> -->
    <qualityIndex ref="qualityIndexRef" v-if="roleType == 7"></qualityIndex>
      <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 } from 'vuex';
export default {
   components: {
      customerIndex,
      driverIndex,
      freightForwarderIndex
   },
   //首页下拉刷新
   onPullDownRefresh() {
      uni.showLoading({
         title: '加载中...'
      });
      // 客户获取日计划
      if (this.roleType == 1) {
         this.$reqGet('GetOrderPlan').then(res => {
            if (res.data) {
               this.orderPlanDataStore = res.data;
               uni.hideLoading();
               uni.stopPullDownRefresh();
            }
         });
      } else if (this.roleType == 2) {
         this.$reqGet('huoDaiList').then(res => {
            this.indexHuoDaiOrderPlanData = res.data;
         });
         // 获取历史提煤单
         this.$reqGet('getJhOrderPlanDataPage', { current: 1, size: 10 }).then(res => {
            if (res.data.records) {
               this.indexHistoryCoalData = [...this.historyCoalData, ...res.data.records];
               uni.hideLoading();
               uni.stopPullDownRefresh();
            }
         });
      } else {
         this.$reqGet('qiangDanList').then(res => {
            this.indexdriverBillOfLoadingData = res.data;
            uni.hideLoading();
            uni.stopPullDownRefresh();
         });
      }
   },
   onLoad() {
      // 开启双人通话
      wx.setEnable1v1Chat({
         enable: true,
         backgroundType: 1,
         minWindowType: 2,
         success() {
            console.log('开启双人通话成功');
         },
         fail() {
            console.log('开启双人通话失败');
         },
         complete() {
            console.log('开启双人通话成功Complete');
   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 LoadUnload from '@/pages/loadUnload-page/loadUnload-page.vue'
     import qualityIndex from '@/pages/quality-inspection-page/qualityIndex/qualityIndex'
   import doorkeepIndex from '@/pages/doorkeeper-page/doorkeeper-index/doorkeeper-index.vue';
   import { mapState, mapMutations, mapGetters } from 'vuex';
   export default {
      components: {
         customerIndex,
         driverIndex,
         freightForwarderIndex,
         LoadUnload,
            qualityIndex,  //化验
         doorkeepIndex,
      },
      computed: {
         ...mapState(['globalweighHouseCode', 'globalweigh', 'globalisconnect', 'globalSocket', 'websocketData',
            'globalIntervalId'
         ]),
      ...mapGetters(['websocketData'])
      },
      //首页下拉刷新
      onPullDownRefresh() {
         if(this.roleType!==6){
            uni.showLoading({ title: '加载中...' });
         }else{
            this.$refs.doorkeepIndexRef.TaskCoalList()
         }
      });
   },
   data() {
      return {
         roleType: null,
         orderPlanDataStore: [],
         indexHuoDaiOrderPlanData: [],
         indexHistoryCoalData: [],
         indexdriverBillOfLoadingData: []
      };
   },
   onShow() {
      this.init();
      this.userAuthorization();
   },
   methods: {
      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;
            default:
               break;
         // 获取历史收发单
         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.$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();
               }
            });
         }else if(this.roleType == 5){
            //装卸员
            this.getDetailData();
         }
      },
      // 要求用户授权相机/麦克风权限
      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('授权失败');
                        }
                     });
                  }
               }
      // getWarehouseListFun() {
      //       this.$reqGet('getWarehouseList').then(res => {
      //          uni.hideLoading()
      //          if (res.code === 0) {
      //             if(res.data.length){
      //                this.getDetailData();
      //             }
      //          } else {
      //             this.$u.toast('加载失败')
      //          }
      //       })
      //    },
      onHide() {
         console.log('页面隐藏')
      },
      onUnload() {
         console.log('页面卸载');
         this.$store.dispatch('websocketOnClose')
         clearInterval(this.globalIntervalId);
         this.changeisconnect(false)
      },
      onShow() {
          this.count = this.count +1;
         this.init();
         this.messageReq();
      },
      onLoad() {
         this.$store.dispatch('websocketInit')
         this.$store.commit('changeisLogin', true)
         console.log(this.globalisconnect, 'index的ws数据');
      /*  #ifdef MP-WEIXIN */
         this.userAuthorization();
      /*  #endif */
         this.messageReq();
         // 开启双人通话
      /*  #ifdef MP-WEIXIN */
         wx.setEnable1v1Chat({
            enable: true,
            backgroundType: 1,
            minWindowType: 2,
            success() {
               console.log('开启双人通话成功');
            },
            fail() {
               console.log('获取失败');
               console.log('开启双人通话失败');
            },
            complete() {
               console.log('开启双人通话成功Complete');
            }
         });
      /*  #endif */
      },
      data() {
         return {
            roleType: null,
            orderPlanDataStore: [],
            indexHuoDaiOrderPlanData: [],
            indexHistoryCoalData: [],
            count:0,
            detailData:[],
            indexdriverBillOfLoadingData: {},
            messagePushShow: false,
            messageList: {
               title: '',
               content: "",
            },
            isconnect: false,
            dotShow: false,
            appHide: false
         };
      },
      watch: {
         'websocketData': {
        handler(v) {
          console.log(v, '接受的ws数据');
          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);
                  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 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)
               }
            }
          }
        },
        deep: true,
        immediate: true
         }
      },
      methods: {
         ...mapMutations(['pushMessage', 'changeWeigh', 'changeinfraredStatus', 'changeisconnect', 'websocketInit',
            'changewsgVisiable', 'changewsgContent', 'changeconfirmWeighVisiable', 'changeconfirmWeighContent',
            'changeWarning'
         ]),
         messagePage() {
            uni.navigateTo({
               url: '/pages/public-page/message/message'
            });
         },
         init() {
            this.roleType = uni.getStorageSync('roleType');
        console.log(this.roleType,'this.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 5:
                  console.log('LoadUnloadRef');
                  this.$nextTick(() => {
                     console.log(this.count,'count')
                        this.$refs.LoadUnloadRef.init();
                  });
                  break;
          case 7:
            console.log('qualityIndexRef');
            this.$nextTick(() => {
              console.log(this.count,'count')
              if(this.count <=1){
                this.$refs.qualityIndexRef.init();
              }
            });
            break;
               case 6:
                  console.log('doorkeepIndexRef');
                  this.$nextTick(() => {
                     this.$refs.doorkeepIndexRef.init();
                  });
                  break;
               default:
                  break;
            }
         },
         // 要求用户授权相机/麦克风权限
      /*  #ifdef MP-WEIXIN */
         userAuthorization() {
            wx.getSetting({
               success(res) {
                  console.log(res);
                  if (!res.authSetting['scope.record'] || !res.authSetting['scope.camera']) {
                     if (!res.authSetting['scope.camera']) {
                        wx.authorize({
                           scope: 'scope.camera',
                           success() {
                              console.log('相机成功');
                           },
                           fail() {
                              console.log('相机失败');
                           }
                        });
                     } else if (!res.authSetting['scope.record']) {
                        wx.authorize({
                           scope: 'scope.record',
                           success() {
                              console.log('录音成功');
                           },
                           fail: () => {
                              console.log('录音失败');
                           }
                        });
                     }
                  }
               },
               fail() {
                  console.log('获取失败');
               },
            });
         },
      /*  #endif */
         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;
               }
            });
         },
       getDetailData(){
               this.$reqGet('getTaskCoalListByBunkerId', { bunkerIds:uni.getStorageSync('bunkerIds'),productIds:uni.getStorageSync('productIds')}).then(res => {
               if (res.code === 0) {
                  this.detailData = res.data.map(item=>{
                     item.tmTaskCoalList.map(el=>{
                      el.flag = el.isPretendDischar ? false : true
                     return el
                     })
                   return item;
                  });
                     this.$u.toast('加载成功');
                     uni.stopPullDownRefresh();
                       uni.hideLoading();
               }
            })
         },
      }
   }
};
   };
</script>
<style lang="scss" scoped></style>
<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: calc(100% - 200rpx);
      position: absolute;
      top: vww(96);
      right: 100rpx;
      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>