| | |
| | | <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> |
| | |
| | | </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> |
| | |
| | | <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"> |
| | |
| | | <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> |
| | |
| | | |
| | | <script> |
| | | import { mapState } from 'vuex' |
| | | import { formatPhoneStar } from '@/utils/utils.js' |
| | | import CustomTabbar from '@/components/custom-tabbar/custom-tabbar.vue' |
| | | export default { |
| | | components: { |
| | |
| | | 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) |
| | | }, |
| | |
| | | }, |
| | | 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({ |
| | |
| | | |
| | | .stat-label { |
| | | display: flex; |
| | | align-items: center; |
| | | height: 40rpx; |
| | | text { |
| | | font-size: 24rpx; |
| | |
| | | background: #10B2FA; |
| | | border-radius: 8rpx; |
| | | margin-right: 20rpx; |
| | | |
| | | &.city-delivery { |
| | | background: #FA8010; |
| | | } |
| | | } |
| | | |
| | | .order-user { |