MrShi
2026-06-09 3f9032e92fdd383bfefc87a0bec9b242e1223851
app/pages/index/index.vue
@@ -63,7 +63,7 @@
         </view>
      </view>
      <scroll-view class="hall-page__body" scroll-y :style="bodyStyle">
      <scroll-view class="hall-page__body" scroll-y :style="bodyStyle" @scrolltolower="handleScrollToLower">
         <view class="hall-page__verified" v-if="!hasApprovedOfficial">
            <image src="/static/image/default_unverified@2x.png" mode="widthFix"></image>
            <button @click="toDriverCertification">去认证</button>
@@ -155,7 +155,7 @@
                           <text class="order-card__action-text">联系</text>
                        </view>
                     </view>
                     <button class="order-card__button order-card__button--code" hover-class="order-card__button--hover" @click.stop="handleShowPickupCode(item)">存件码</button>
                     <button class="order-card__button order-card__button--code" hover-class="order-card__button--hover" @click.stop="handleShowPickupCode(item)" v-if="item.takeShopId">存件码</button>
                  </template>
                  <button v-else class="order-card__button" hover-class="order-card__button--hover" @click.stop="handleGrabOrder(item)">立即抢单</button>
               </view>
@@ -261,6 +261,8 @@
<script>
   import { mapState } from 'vuex'
   import { checkLocationPermission } from '@/utils/utils'
   export default {
      data() {
         return {
@@ -339,7 +341,13 @@
         this.scrollHeight = Math.max(windowHeight - this.headerHeight, 0)
         if (this.userInfo.auditStatus === 99) return;
         this.acceptingStatus = this.userInfo.acceptingStatus || 0
         this.loadOrdersByTab(this.activeTab)
         this.init()
         uni.$on('locationPermissionGranted', () => {
            this.init()
         })
         uni.$on('jiedanSuccess', () => {
            this.loadOrdersByTab(this.activeTab)
         })
      },
      onShow() {
@@ -347,14 +355,6 @@
         this.getCategoryListData()
         this.getActiveOrderCount()
         this.getUserInfoDetail()
      },
      onReachBottom() {
         if (this.acceptingStatus === 0) return;
         if (this.activeTab === 'hall') {
            this.hallPage++
            this.getHallOrders()
         }
      },
      computed: {
@@ -394,6 +394,29 @@
      },
      methods: {
         init() {
            console.log('index-init')
            this.$u.api.centerInfo().then(res => {
               if (res.code === 200) {
                  this.acceptingStatus = res.data.acceptingStatus
                  if (res.data.acceptingStatus === 1) {
                     this.loadOrdersByTab(this.activeTab)
                  }
               }
            })
         },
         handleScrollToLower() {
            if (this.acceptingStatus === 0) return;
            this.hallPage++
            if (this.activeTab === 'hall') {
               console.log('hall')
               this.getHallOrders()
            } else if (this.activeTab === 'pickup') {
               this.getPickupOrders()
            } else if (this.activeTab === 'delivering') {
               this.getDeliveringOrders()
            }
         },
         getUserInfoDetail() {
            this.$u.api.verifyDetail().then(res => {
               if (res.code === 200) {
@@ -490,12 +513,19 @@
            })
         },
         getActiveOrderCount() {
            this.$u.api.activeOrderCount().then(res => {
               if (res.code === 200) {
                  this.activeOrderCount = res.data
            checkLocationPermission().then((granted) => {
               if (granted) {
                  console.log('已有位置权限-订单数量')
                  this.$u.api.activeOrderCount().then(res => {
                     if (res.code === 200) {
                        this.activeOrderCount = res.data
                     }
                  }).catch((err) => {
                     this.activeOrderCount = null
                  })
               } else {
                  console.log('还没有位置权限-订单数量')
               }
            }).catch((err) => {
               this.activeOrderCount = null
            })
         },
@@ -608,14 +638,17 @@
            if (this.userInfo.auditStatus === 99) return;
            if (this.acceptingStatus === 0) return;
            if (tab === 'hall') {
               console.log('抢单大厅')
               this.hallPage = 1
               this.hallHasMore = true
               this.orderList = []
               this.getHallOrders()
            } else if (tab === 'pickup') {
               console.log('待取货')
               this.pickupOrderList = []
               this.getPickupOrders()
            } else if (tab === 'delivering') {
               console.log('配送中')
               this.deliveringOrderList = []
               this.getDeliveringOrders()
            }
@@ -626,81 +659,103 @@
            if (this.hallLoading || !this.hallHasMore) {
               return
            }
            this.hallLoading = true
            let distance = null
            if (this.selectedFilters.distance !== '不限') {
               const distanceText = this.selectedFilters.distance
               if (distanceText.includes('km')) {
                  distance = parseInt(distanceText) * 1000
            checkLocationPermission().then((granted) => {
               if (granted) {
                  console.log('已有位置权限')
                  this.hallLoading = true
                  let distance = null
                  if (this.selectedFilters.distance !== '不限') {
                     const distanceText = this.selectedFilters.distance
                     if (distanceText.includes('km')) {
                        distance = parseInt(distanceText) * 1000
                     } else {
                        distance = parseInt(distanceText)
                     }
                  }
                  const sortTypeMap = {
                     '综合排序': 1,
                     '距离最近': 2
                  }
                  const sortType = this.selectedFilters.sort !== '不限' ? (sortTypeMap[this.selectedFilters.sort] || null) : null
                  let gradeId = null
                  if (this.selectedFilters.level !== '不限') {
                     const selectedCategory = this.categoryList.find(item => item.name === this.selectedFilters.level)
                     if (selectedCategory) {
                        gradeId = selectedCategory.id
                     }
                  }
                  this.$u.api.grabOrderHall({
                     capacity: this.hallPageSize,
                     page: this.hallPage,
                     model: {
                        distance: distance,
                        gradeId: gradeId,
                        sortType: sortType
                     }
                  }).then(res => {
                     this.hallLoading = false
                     if (res.code === 200) {
                        const list = res.data.records || []
                        this.orderList = this.hallPage === 1 ? list : this.orderList.concat(list)
                        this.hallHasMore = list.length >= this.hallPageSize
                     }
                  }).finally(() => {
                     this.hallLoading = false
                  })
               } else {
                  distance = parseInt(distanceText)
                  console.log('还没有位置权限')
               }
            }
            const sortTypeMap = {
               '综合排序': 1,
               '距离最近': 2
            }
            const sortType = this.selectedFilters.sort !== '不限' ? (sortTypeMap[this.selectedFilters.sort] || null) : null
            let gradeId = null
            if (this.selectedFilters.level !== '不限') {
               const selectedCategory = this.categoryList.find(item => item.name === this.selectedFilters.level)
               if (selectedCategory) {
                  gradeId = selectedCategory.id
               }
            }
            console.log('接单大厅:', { distance, gradeId, sortType })
            this.$u.api.grabOrderHall({
               capacity: this.hallPageSize,
               page: this.hallPage,
               model: {
                  distance: distance,
                  gradeId: gradeId,
                  sortType: sortType
               }
            }).then(res => {
               console.log('接单大厅', res)
               this.hallLoading = false
               if (res.code === 200) {
                  const list = res.data.records || []
                  this.orderList = this.hallPage === 1 ? list : this.orderList.concat(list)
                  this.hallHasMore = list.length >= this.hallPageSize
               }
            }).catch((err) => {
               this.hallLoading = false
            })
         },
         getPickupOrders() {
            if (this.acceptingStatus === 0) return;
            if (this.pickupLoading) return
            this.pickupLoading = true
            this.$u.api.activeOrders({ status: 3 }).then(res => {
               console.log('待取货:', res)
               this.pickupLoading = false
               if (res.code === 200) {
                  this.pickupOrderList = res.data.records || res.data || []
            checkLocationPermission().then((granted) => {
               if (granted) {
                  console.log('已有位置权限')
                  this.pickupLoading = true
                  this.$u.api.activeOrders({ status: 3 }).then(res => {
                     console.log('待取货:', res)
                     this.pickupLoading = false
                     if (res.code === 200) {
                        this.pickupOrderList = res.data.records || res.data || []
                     }
                  }).catch((err) => {
                     this.pickupLoading = false
                  })
               } else {
                  console.log('还没有位置权限')
               }
            }).catch((err) => {
               this.pickupLoading = false
            })
         },
         getDeliveringOrders() {
            if (this.acceptingStatus === 0) return;
            if (this.deliveringLoading) return
            this.deliveringLoading = true
            this.$u.api.activeOrders({ status: 4 }).then(res => {
               console.log('配送中:', res)
               this.deliveringLoading = false
               if (res.code === 200) {
                  this.deliveringOrderList = res.data || []
            checkLocationPermission().then((granted) => {
               if (granted) {
                  console.log('已有位置权限')
                  this.deliveringLoading = true
                  this.$u.api.activeOrders({ status: 4 }).then(res => {
                     console.log('配送中:', res)
                     this.deliveringLoading = false
                     if (res.code === 200) {
                        this.deliveringOrderList = res.data || []
                     }
                  }).catch((err) => {
                     this.deliveringLoading = false
                  })
               } else {
                  console.log('还没有位置权限')
               }
            }).catch((err) => {
               this.deliveringLoading = false
            })
         },