MrShi
2026-06-05 00a7a61df86db969f2ba61c508d02ba4709ce3d4
small-program/shop/pages/store-home/store-home.vue
@@ -19,28 +19,34 @@
         <view :class="'tab-item  '+(active ==1?'active':'')" @click="changeActive(1)">本月</view>
         <view :class="'tab-item  '+(active ==2?'active':'')" @click="changeActive(2)">上月</view>
        </view>
        <text class="tab-item right">在库订单: {{countData.storageCount||0}}</text>
        <text class="tab-item right">在库订单: {{countData.storageCount > 99 ? '99+' : countData.storageCount || 0}}</text>
      </view>
      
      <view class="stats-cards">
        <view class="stat-card">
          <view class="stat-label">
            <text>销售额(元)</text>
            <image class="stat-icon" src="/static/icon/ic_visible@2x.png"></image>
            <u-icon v-if="showMoney" name="eye" color="#ffffff" size="18" @click="showMoney = !showMoney"></u-icon>
                 <u-icon v-if="!showMoney" name="eye-off" color="#eeeeee" size="18" @click="showMoney = !showMoney"></u-icon>
            <!-- <image v-if="showMoney" class="stat-icon" src="/static/icon/ic_visible@2x.png" @click="showMoney = false"></image>
            <image v-if="!showMoney" class="stat-icon" src="/static/icon/ic_invisible@2x.png" @click="showMoney = true"></image> -->
          </view>
          <text class="stat-value">{{countData.salesAmount}}</text>
          <text class="stat-value" v-if="showMoney">{{((countData.salesAmount || 0)/100).toFixed(2)}}</text>
          <text class="stat-value" v-if="!showMoney">****</text>
        </view>
        <view class="stat-card">
          <view class="stat-label">
            <text>结算利润(元)</text>
          </view>
          <text class="stat-value">{{countData.settlementProfit}}</text>
          <text class="stat-value" v-if="showMoney">{{((countData.settlementProfit|| 0)/100).toFixed(2)}}</text>
          <text class="stat-value" v-if="!showMoney">****</text>
        </view>
        <view class="stat-card">
          <view class="stat-label">
            <text>订单数</text>
          </view>
          <text class="stat-value">{{countData.orderCount||0}}</text>
          <text class="stat-value" v-if="showMoney">{{countData.orderCount > 99 ? '99+' : countData.orderCount || 0}}</text>
          <text class="stat-value" v-if="!showMoney">****</text>
        </view>
      </view>
    </view>
@@ -62,7 +68,7 @@
      </view>
      <view class="func-btn" @click="goToQualification">
        <image class="func-icon" src="/shop/static/icon/ic_wodezizhi@2x.png"></image>
        <text class="func-text">门店资质</text>
        <text class="func-text">营收分析</text>
      </view>
    </view>
    <text class="section-title">待处理订单({{total||0}})</text>
@@ -71,16 +77,17 @@
      <view class="order-item" v-for="(item,index) in dataList" :key="item.id">
        <view class="order-header"  @click="jumpOrderDetails(item.id)">
          <view style="display: flex; align-items: center;">
            <view class="order-tag">{{item.type===1?'同城配送':'就地寄存'}}</view>
            <text class="order-user">{{item.takeUser || ''}} {{item.takePhone||''}}</text>
            <view class="order-tag" :class="{ 'city-delivery': item.type === 1 }">{{item.type===1?'同城寄送':'就地寄存'}}</view>
            <text class="order-user">{{formatName(item.takeUser)}} {{formatPhoneStar(item.takePhone)||''}}</text>
          </view>
        <view style="display: flex;flex-direction: column;">
        <view style="display: flex;flex-direction: column;align-items: flex-end;">
           <text  v-if="item.status ===5 && item.overdueStatus ===1 "  class="order-status" style="color: red;">超时未取件</text>
           <text  v-else-if="item.status ===5 && item.overdueStatus ===3 "  class="order-status" style="color: red;">超时到店取件</text>
           <text v-else class="order-status">{{item.statusName || ''}}</text>
           <text v-if="item.status ===5 && item.overdueStatus ===1 "  class="order-status" style="color: red;font-size: 24rpx;">逾期费用¥{{((item.overdueFee || 0)/100).toFixed(2)}}</text>
           <text v-if="item.status ===5 && item.overdueStatus ===3 "  class="order-status" style="color: red;font-size: 24rpx;">逾期费用¥{{((item.overdueFee || 0)/100).toFixed(2)}}</text>
        </view>
        <text v-if="item.abnormalOrder === 1" class="order-status" style="color: red;">异常转存</text>
      </view>
        </view>
        <view class="order-items"  @click="jumpOrderDetails(item.id)">
          <view class="order-product" v-for="(item1,index1) in item.detailList" :key="item1.id">
@@ -101,9 +108,9 @@
            <text>¥{{((item.estimatedAmount || 0)/100).toFixed(2) }}</text>
          </text>
          <view class="order-buttons">
            <button class="btn secondary" @click="contactPhoneDo(item.takePhone)">联系客户</button>
         <button class="btn secondary" @click="contactPhoneDo(item.driverPhone)" v-if="item.type ===1&&(item.status === 4 || item.status === 3)">联系骑手</button>
            <button class="btn primary"  v-if="item.status ===1 " @click="jumpHexiaoOrder(item)">收件核销</button>
<!--            <button class="btn secondary" @click="contactPhoneDo(item.takePhone)">联系客户</button>
         <button class="btn secondary" @click="contactPhoneDo(item.driverPhone)" v-if="item.type ===1&&(item.status === 4 || item.status === 3)">联系骑手</button> -->
            <button class="btn primary"  v-if="item.status ===1  ||item.status ===4" @click="jumpHexiaoOrder(item)">收件核销</button>
            <button class="btn primary" v-if="item.status ===5 &&(item.overdueStatus ==0 || item.overdueStatus == 1)" @click="jumpHexiaoOrder(item)">确认到店</button>
            <button class="btn primary"  v-if="item.status ===5 && (item.overdueStatus == 4 || item.overdueStatus == 2) " @click="jumpHexiaoOrder(item)">取件核销</button>
         </view>
@@ -120,6 +127,7 @@
<script>
import { mapState } from 'vuex'
import { formatPhoneStar } from '@/utils/utils.js'
import CustomTabbar from '@/components/custom-tabbar/custom-tabbar.vue'
export default {
  components: {
@@ -144,6 +152,13 @@
     this.getFirstPageData()
 },
  methods: {
    formatPhoneStar(phone){
      return formatPhoneStar(phone)
    },
    formatName(name) {
      if (!name) return ''
      return name.length > 7 ? name.substring(0, 7) + '...' : name
    },
     changeActive(index){
        this.getCountData(index)
     },
@@ -248,13 +263,16 @@
      },
      goToQualification() {
        uni.navigateTo({
         url: '/shop/pages/qualification/qualification'
         url: '/shop/pages/revenue-analysis/revenue-analysis'
        })
      },
      goToStore() {
      this.$store.commit('setUserType', 0)
      setTimeout(() => {
        uni.switchTab({
         url: '/pages/index/index'
           url: '/pages/index/index'
        })
      }, 100)
      },
      jumpShopLogin() {
         uni.redirectTo({
@@ -445,6 +463,7 @@
.stat-label {
  display: flex;
  align-items: center;
  height: 40rpx;
  text {
    font-size: 24rpx;
@@ -539,6 +558,10 @@
  background: #10B2FA;
  border-radius: 8rpx;
  margin-right: 20rpx;
  &.city-delivery {
    background: #FA8010;
  }
}
.order-user {