| | |
| | | <view class="top-search"> |
| | | <view class="searchbox"> |
| | | <u-icon name="search" color="#999999" size="28"></u-icon> |
| | | <input class="search-input" v-model="keyword" @confirm="getFirstPageData" type="text" placeholder="输入姓名、电话、订单编号搜索"> |
| | | <input class="search-input" v-model="keyword" @confirm="getFirstPageData" type="text" |
| | | placeholder="输入姓名、电话、订单编号搜索"> |
| | | </view> |
| | | </view> |
| | | <scroll-view scroll-x class="tabs-row page-padding" style="padding: 0 0 0 30rpx !important;" show-scrollbar="false"> |
| | | <scroll-view scroll-x class="tabs-row page-padding" style="padding: 0 0 0 30rpx !important;" |
| | | show-scrollbar="false"> |
| | | <view class="tabs-inner"> |
| | | <view |
| | | v-for="item in filterTabs" |
| | | :key="item.value" |
| | | class="filter-tab" |
| | | :class="{ active: activeTab === item.value }" |
| | | @click="changeTab(item) " |
| | | > |
| | | <view v-for="item in filterTabs" :key="item.value" class="filter-tab" |
| | | :class="{ active: activeTab === item.value }" @click="changeTab(item) "> |
| | | {{ item.label }} |
| | | </view> |
| | | </view> |
| | |
| | | <view class="content-wrap"> |
| | | <view class="page-padding card-list"> |
| | | <view v-for="(item, index) in dataList" :key="item.id" class="order-card"> |
| | | <view class="order-head" :class="item.mode === 'city' ? 'city-head-bg' : 'local-head-bg'" @click="jumpOrderDetail(item.id)"> |
| | | <view class="order-head" :class="item.mode === 'city' ? 'city-head-bg' : 'local-head-bg'" |
| | | @click="jumpOrderDetail(item.id)"> |
| | | <view v-if="item.type === 0" class="head-local"> |
| | | <view class="mode-tag local-tag">就地寄存</view> |
| | | <view class="head-copy single-copy"> |
| | |
| | | <text class="head-user">{{ item.takeUser ||'' }}</text> |
| | | </view> |
| | | <view style="display: flex;flex-direction: column;"> |
| | | <text v-if="item.status ===5 && item.overdueStatus ===1 " class="status-text" style="color: red;">超时未取件</text> |
| | | <text v-else-if="item.status ===5 && item.overdueStatus ===3 " class="status-text" style="color: red;">超时到店取件</text> |
| | | <text v-else-if="item.status < 7" class=" status-text status-orange">{{ item.statusName||'' }}</text> |
| | | <text v-else-if="item.status ===7" class=" status-text status-grey">{{ item.statusName||'' }}</text> |
| | | <text v-else class=" status-text status-grey">{{ item.statusName||'' }}</text> |
| | | <text v-if="item.status ===5 && item.overdueStatus ===1 " class="status-text" style="color: red;font-size: 24rpx;">逾期费用¥{{((item.overdueFee || 0)/100).toFixed(2)}}</text> |
| | | <text v-if="item.status ===5 && item.overdueStatus ===3 " class="status-text" style="color: red;font-size: 24rpx;">逾期费用¥{{((item.overdueFee || 0)/100).toFixed(2)}}</text> |
| | | <text v-if="item.status ===5 && item.overdueStatus ===1 " class="status-text" |
| | | style="color: red;">超时未取件</text> |
| | | <text v-else-if="item.status ===5 && item.overdueStatus ===3 " class="status-text" |
| | | style="color: red;">超时到店取件</text> |
| | | <text v-else-if="item.status < 7" |
| | | class=" status-text status-orange">{{ item.statusName||'' }}</text> |
| | | <text v-else-if="item.status ===7" |
| | | class=" status-text status-grey">{{ item.statusName||'' }}</text> |
| | | <text v-else class=" status-text status-grey">{{ item.statusName||'' }}</text> |
| | | <text v-if="item.status ===5 && item.overdueStatus ===1 " class="status-text" |
| | | style="color: red;font-size: 24rpx;">逾期费用¥{{((item.overdueFee || 0)/100).toFixed(2)}}</text> |
| | | <text v-if="item.status ===5 && item.overdueStatus ===3 " class="status-text" |
| | | style="color: red;font-size: 24rpx;">逾期费用¥{{((item.overdueFee || 0)/100).toFixed(2)}}</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view v-else class="head-city"> |
| | | <view class="head-copy city-left"> |
| | | <view class="mode-tag city-tag">同城寄送</view> |
| | |
| | | </view> |
| | | <view class="head-copy city-right align-right"> |
| | | <view style="display: flex;flex-direction: column;"> |
| | | <text v-if="item.status ===5 && item.overdueStatus ===1 " class="status-text" style="color: red;">超时未取件</text> |
| | | <text v-else-if="item.status ===5 && item.overdueStatus ===3 " class="status-text" style="color: red;">超时到店取件</text> |
| | | <text v-else-if="item.status < 7" class=" status-text status-orange">{{ item.statusName||'' }}</text> |
| | | <text v-else-if="item.status ===7" class=" status-text status-grey">{{ item.statusName||'' }}</text> |
| | | <text v-else class=" status-text status-grey">{{ item.statusName||'' }}</text> |
| | | <text v-if="item.status ===5 && item.overdueStatus ===1 " class="status-text" style="color: red;font-size: 24rpx;">逾期费用¥{{((item.overdueFee || 0)/100).toFixed(2)}}</text> |
| | | <text v-if="item.status ===5 && item.overdueStatus ===3 " class="status-text" style="color: red;font-size: 24rpx;">逾期费用¥{{((item.overdueFee || 0)/100).toFixed(2)}}</text> |
| | | <text v-if="item.status ===5 && item.overdueStatus ===1 " class="status-text" |
| | | style="color: red;">超时未取件</text> |
| | | <text v-else-if="item.status ===5 && item.overdueStatus ===3 " class="status-text" |
| | | style="color: red;">超时到店取件</text> |
| | | <text v-else-if="item.status < 7" |
| | | class=" status-text status-orange">{{ item.statusName||'' }}</text> |
| | | <text v-else-if="item.status ===7" |
| | | class=" status-text status-grey">{{ item.statusName||'' }}</text> |
| | | <text v-else class=" status-text status-grey">{{ item.statusName||'' }}</text> |
| | | <text v-if="item.status ===5 && item.overdueStatus ===1 " class="status-text" |
| | | style="color: red;font-size: 24rpx;">逾期费用¥{{((item.overdueFee || 0)/100).toFixed(2)}}</text> |
| | | <text v-if="item.status ===5 && item.overdueStatus ===3 " class="status-text" |
| | | style="color: red;font-size: 24rpx;">逾期费用¥{{((item.overdueFee || 0)/100).toFixed(2)}}</text> |
| | | </view> |
| | | <text class="head-name text-ellipsis">{{ item.takeShopName || item.takeLocation||'' }}</text> |
| | | <text |
| | | class="head-name text-ellipsis">{{ item.takeShopName || item.takeLocation||'' }}</text> |
| | | <text class="head-user">{{ item.takeUser||'' }}</text> |
| | | </view> |
| | | </view> |
| | |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="price-line" > |
| | | <view class="price-line"> |
| | | <view class="pickup-wrap" v-if="item.expectedTakeTime"> |
| | | <text class="pickup-label">预计取件时间:</text> |
| | | <text class="pickup-value">{{ item.expectedTakeTime ||'' }}</text> |
| | |
| | | <view class="amount-area"> |
| | | <view class="pay-row"> |
| | | <text class="pay-label">实付款:</text> |
| | | <text class="pay-value">{{(((item.estimatedAmount || 0) - (item.deductionAmount || 0)) / 100).toFixed(2) }}</text> |
| | | <text |
| | | class="pay-value">{{(((item.estimatedAmount || 0) - (item.deductionAmount || 0)) / 100).toFixed(2) }}</text> |
| | | </view> |
| | | <view class="insurance-row"> |
| | | <text class="insurance-label">含行李保费:</text> |
| | |
| | | |
| | | <view class="card-footer"> |
| | | <view class="footer-actions" v-if="item.type===0"> |
| | | <view class="footer-btn contact-btn" @click="contactPhone(item,0)" v-if="item.status ===1 ||item.status ===5 || item.status==2 || item.status===98">联系门店</view> |
| | | <view class="footer-btn contact-btn" v-if="[0,1].includes(item.status) && item.abnormalOrder !== 1" @click="cancelOrder(item)">取消订单</view> |
| | | <view class="footer-btn contact-btn" @click="deleteOrder(item)" v-if="item.status ===7 || item.status===96 || item.status == 99">删除订单</view> |
| | | <view class="footer-btn primary-btn" @click="payOrder(item)" v-if="item.status ===0">立即支付</view> |
| | | <view class="footer-btn primary-btn" @click="payOrderFee(item)" v-if="item.status ===5 && item.overdueStatus===3 ">立即支付</view> |
| | | <view class="footer-btn primary-btn" v-if="item.status >=1 &&item.status <7 " @click="openQrcode(item)" >核销码</view> |
| | | <view class="footer-btn primary-btn" @click="evaluateOrder(item)" v-if="item.status ===7 && !item.commentStatus ">评价订单</view> |
| | | <view class="footer-btn contact-btn" @click="contactPhone(item,0)" |
| | | v-if="item.status ===1 ||item.status ===5 || item.status==2 || item.status===98">联系门店 |
| | | </view> |
| | | <view class="footer-btn contact-btn" |
| | | v-if="[0,1].includes(item.status) && item.abnormalOrder !== 1" |
| | | @click="cancelOrder(item)">取消订单</view> |
| | | <view class="footer-btn contact-btn" @click="deleteOrder(item)" |
| | | v-if="item.status ===7 || item.status===96 || item.status == 99">删除订单</view> |
| | | <view class="footer-btn primary-btn" @click="payOrder(item)" v-if="item.status ===0">立即支付 |
| | | </view> |
| | | <view class="footer-btn primary-btn" @click="payOrderFee(item)" |
| | | v-if="item.status ===5 && item.overdueStatus===3 ">立即支付</view> |
| | | <view class="footer-btn primary-btn" v-if="item.status >=1 &&item.status <7 " |
| | | @click="openQrcode(item)">核销码</view> |
| | | <view class="footer-btn primary-btn" @click="evaluateOrder(item)" |
| | | v-if="item.status ===7 && !item.commentStatus ">评价订单</view> |
| | | </view> |
| | | <view class="footer-actions" v-else> |
| | | <view class="footer-btn contact-btn" @click="contactPhone(item,0)" v-if="(item.status ===1 || item.status ==2) && item.takeShopId">联系门店</view> |
| | | <view class="footer-btn contact-btn" @click="contactPhone(item,2)" v-if="[3,4,5].includes(item.status) && !item.takeShopId">联系骑手</view> |
| | | <view class="footer-btn contact-btn" @click="contactPhone(item,1)" v-if="item.status ===5 && item.takeShopId">联系门店</view> |
| | | <view class="footer-btn contact-btn" v-if="[0,1,2].includes(item.status)" @click="cancelOrder(item)">取消订单</view> |
| | | <view class="footer-btn primary-btn" @click="payOrder(item)" v-if="item.status ===0">立即支付</view> |
| | | <view class="footer-btn primary-btn" @click="payOrderFee(item)" v-if="item.status ===5 && item.overdueStatus===3 ">立即支付</view> |
| | | <view class="footer-btn contact-btn" @click="deleteOrder(item)" v-if="item.status ===7 || item.status===96 || item.status == 99">删除订单</view> |
| | | <view class="footer-btn primary-btn" @click="cancelOrder(item)" v-if="item.status ===1">申请退款</view> |
| | | <view class="footer-btn primary-btn" v-if="item.status ===1 || (item.takeShopId && item.status ===5)" @click="openQrcode(item)" >核销码</view> |
| | | <view class="footer-btn primary-btn" @click="doneOrder(item)" v-if="!item.takeShopId && item.status ===5">确认收货</view> |
| | | <view class="footer-btn primary-btn" @click="evaluateOrder(item)" v-if="item.status ===7 && !item.commentStatus ">评价订单</view> |
| | | <view class="footer-btn contact-btn" @click="contactPhone(item,0)" |
| | | v-if="(item.status ===1 || item.status ==2) && item.takeShopId">联系门店</view> |
| | | <view class="footer-btn contact-btn" @click="contactPhone(item,2)" |
| | | v-if="[3,4,5].includes(item.status) && !item.takeShopId">联系骑手</view> |
| | | <view class="footer-btn contact-btn" @click="contactPhone(item,1)" |
| | | v-if="item.status ===5 && item.takeShopId">联系门店</view> |
| | | <view class="footer-btn contact-btn" v-if="[0].includes(item.status)" |
| | | @click="cancelOrder(item)">取消订单</view> |
| | | <view class="footer-btn primary-btn" @click="payOrder(item)" v-if="item.status ===0">立即支付 |
| | | </view> |
| | | <view class="footer-btn primary-btn" @click="payOrderFee(item)" |
| | | v-if="item.status ===5 && item.overdueStatus===3 ">立即支付</view> |
| | | <view class="footer-btn contact-btn" @click="deleteOrder(item)" |
| | | v-if="item.status ===7 || item.status===96 || item.status == 99">删除订单</view> |
| | | <view class="footer-btn primary-btn" @click="cancelOrder(item)" v-if="item.abnormalOrder === 0 && [1,2].includes(item.status)">申请退款 |
| | | </view> |
| | | <view class="footer-btn primary-btn" |
| | | v-if="item.status ===1 || (item.takeShopId && item.status ===5)" |
| | | @click="openQrcode(item)">核销码</view> |
| | | <view class="footer-btn primary-btn" @click="doneOrder(item)" |
| | | v-if="!item.takeShopId && item.status ===5">确认收货</view> |
| | | <view class="footer-btn primary-btn" @click="evaluateOrder(item)" |
| | | v-if="item.status ===7 && !item.commentStatus ">评价订单</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | <view v-else-if="!hasNext && !dataList.length" class="loading-text">暂无数据</view> |
| | | </view> |
| | | </view> |
| | | <u-popup :show="showPhone" round="15" mode="bottom" :safeAreaInsetBottom="true" @close="contactPhone()" :closeable="true" :closeOnClickOverlay="true"> |
| | | <u-popup :show="showPhone" round="15" mode="bottom" :safeAreaInsetBottom="true" @close="contactPhone()" |
| | | :closeable="true" :closeOnClickOverlay="true"> |
| | | <view class="phone"> |
| | | <view class="phone-head"> |
| | | <view></view> |
| | | <text>{{linkItem.title}}</text> |
| | | <text>{{linkItem.title}}</text> |
| | | </view> |
| | | <!-- <view class="phone-item"> |
| | | <view> |
| | |
| | | </view> |
| | | <view class="line" v-if="serverPhone && serverPhone.length"></view> |
| | | </view> --> |
| | | <view class="phone-item" > |
| | | <view @click="contactPhoneDo()"> |
| | | <image src="/static/icon/ic_call@2x.png" mode="widthFix" ></image> |
| | | <text >{{linkItem.linkname||''}} </text> |
| | | <text style="margin-left: 10px;"> {{linkItem.linkphone||''}}</text> |
| | | </view> |
| | | </view> |
| | | <view style="width: 100%; height: 30rpx;"></view> |
| | | <view class="phone-item"> |
| | | <view @click="contactPhoneDo()"> |
| | | <image src="/static/icon/ic_call@2x.png" mode="widthFix"></image> |
| | | <text>{{linkItem.linkname||''}} </text> |
| | | <text style="margin-left: 10px;"> {{linkItem.linkphone||''}}</text> |
| | | </view> |
| | | </view> |
| | | <view style="width: 100%; height: 30rpx;"></view> |
| | | <!-- <view class="phone-botton" @click="contactPhone()" >关闭</view> --> |
| | | </view> |
| | | </u-popup> |
| | |
| | | </view> |
| | | </view> |
| | | </u-popup> |
| | | <u-popup :show="showQrcode" round="15" @close="openQrcode()" :safeAreaInsetBottom="false" mode="bottom" :closeable="true" :closeOnClickOverlay="false"> |
| | | <u-popup :show="showQrcode" round="15" @close="openQrcode()" :safeAreaInsetBottom="false" mode="bottom" |
| | | :closeable="true" :closeOnClickOverlay="false"> |
| | | <view class="tc" style="height: auto;width: 100%; "> |
| | | <view class="tc-contemt" style="text-align: center;"> |
| | | <view style="margin-bottom: 30rpx;"> |
| | | <view style="margin-bottom: 30rpx;"> |
| | | <text class="pickup-code" style="font-size: 48rpx;">行李编号:{{ currentOrder.sortnum||'' }}</text> |
| | | <view class="pickup-code" style="margin-left: 60rpx;font-size: 28rpx;text-align: left;font-weight: normal;">用户:{{currentOrder.takeUser||''}}({{currentOrder.takePhone||''}})</view> |
| | | <view class="pickup-code" style="margin-left: 60rpx;font-size: 28rpx;text-align: left;font-weight: normal;" v-if="currentOrder.type === 1">门店:{{ currentOrder.status === 1 ? currentOrder.depositShopName||'' : currentOrder.status === 5 ? currentOrder.takeShopName||'' : ''}}</view> |
| | | <view class="pickup-code" style="margin-left: 60rpx;font-size: 28rpx;text-align: left;font-weight: normal;" v-else>门店:{{ currentOrder.depositShopName||'' }}</view> |
| | | <view class="item-form-list" style="align-items:baseline;" v-if="currentOrder && currentOrder.orderImages && currentOrder.orderImages.length"> |
| | | <view class="item-form-list-row" v-for="(item,index) in currentOrder.orderImages" key="item"> |
| | | <image :src="item" mode="widthFix" @click="previewImage(currentOrder.orderImages,index)" ></image> |
| | | </view> |
| | | <view class="pickup-code" |
| | | style="margin-left: 60rpx;font-size: 28rpx;text-align: left;font-weight: normal;"> |
| | | 用户:{{currentOrder.takeUser||''}}({{currentOrder.takePhone||''}})</view> |
| | | <view class="pickup-code" |
| | | style="margin-left: 60rpx;font-size: 28rpx;text-align: left;font-weight: normal;" |
| | | v-if="currentOrder.type === 1"> |
| | | 门店:{{ currentOrder.status === 1 ? currentOrder.depositShopName||'' : currentOrder.status === 5 ? currentOrder.takeShopName||'' : ''}} |
| | | </view> |
| | | <view class="pickup-code" |
| | | style="margin-left: 60rpx;font-size: 28rpx;text-align: left;font-weight: normal;" v-else> |
| | | 门店:{{ currentOrder.depositShopName||'' }}</view> |
| | | <view class="item-form-list" style="align-items:baseline;" |
| | | v-if="currentOrder && currentOrder.orderImages && currentOrder.orderImages.length"> |
| | | <view class="item-form-list-row" v-for="(item,index) in currentOrder.orderImages" |
| | | key="item"> |
| | | <image :src="item" mode="widthFix" |
| | | @click="previewImage(currentOrder.orderImages,index)"></image> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="qrcode-box"> |
| | | <canvas canvas-id="qrcodeCanvas" id="qrcodeCanvas" style="width: 100px; height: 100px; position: fixed; top: -100%; left: -100%; z-index: -1;"></canvas> |
| | | <canvas canvas-id="qrcodeCanvas" id="qrcodeCanvas" |
| | | style="width: 100px; height: 100px; position: fixed; top: -100%; left: -100%; z-index: -1;"></canvas> |
| | | <image class="qrcode-image" :src="qrcodeImage" mode="widthFix"></image> |
| | | </view> |
| | | <text class="pickup-code">核销码:{{ currentOrder.memberVerifyCode||'' }}</text> |
| | | <text class="pickup-tip" @tap="copyCode">点击复制核销码</text> |
| | | </view> |
| | | |
| | | |
| | | </view> |
| | | </u-popup> |
| | | <custom-tabbar></custom-tabbar> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { mapState } from 'vuex' |
| | | import { |
| | | mapState |
| | | } from 'vuex' |
| | | import CustomTabbar from '@/components/custom-tabbar/custom-tabbar.vue' |
| | | import drawQrcode from 'weapp-qrcode' |
| | | export default { |
| | |
| | | data() { |
| | | return { |
| | | activeTab: -1, |
| | | loading:false, |
| | | loading: false, |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | showDone:false, |
| | | showCancel:false, |
| | | showDelete:false, |
| | | showQrcode:false, |
| | | showPay:false, |
| | | showPhone:false, |
| | | total:0, |
| | | hasNext:true, |
| | | keyword:'', |
| | | showDone: false, |
| | | showCancel: false, |
| | | showDelete: false, |
| | | showQrcode: false, |
| | | showPay: false, |
| | | showPhone: false, |
| | | total: 0, |
| | | hasNext: true, |
| | | keyword: '', |
| | | userType: 0, |
| | | qrcodeImage:null, |
| | | qrcodeImage: null, |
| | | isLoadingMore: false, |
| | | currentOrder:null, |
| | | contanctType:0, |
| | | linkItem:{title:'',linkname:'',linkphone:''}, |
| | | filterTabs: [ |
| | | { label: '全部' ,value: -1}, |
| | | { label: '待支付',value: 0 }, |
| | | { label: '待核验', value: 1}, |
| | | { label: '待配送', value: 2 }, |
| | | { label: '待收货', value: 3}, |
| | | { label: '已完成', value: 4}, |
| | | { label: '已取消', value: 5} |
| | | currentOrder: null, |
| | | contanctType: 0, |
| | | linkItem: { |
| | | title: '', |
| | | linkname: '', |
| | | linkphone: '' |
| | | }, |
| | | filterTabs: [{ |
| | | label: '全部', |
| | | value: -1 |
| | | }, |
| | | { |
| | | label: '待支付', |
| | | value: 0 |
| | | }, |
| | | { |
| | | label: '待核验', |
| | | value: 1 |
| | | }, |
| | | { |
| | | label: '待配送', |
| | | value: 2 |
| | | }, |
| | | { |
| | | label: '待收货', |
| | | value: 3 |
| | | }, |
| | | { |
| | | label: '已完成', |
| | | value: 4 |
| | | }, |
| | | { |
| | | label: '已取消', |
| | | value: 5 |
| | | } |
| | | ], |
| | | dataList: [] |
| | | } |
| | |
| | | // } |
| | | // }, |
| | | onLoad(options) { |
| | | console.log(options ) |
| | | console.log(options) |
| | | this.activeTab = -1 |
| | | /* if (options.status != null && options.status != undefined) { |
| | | this.activeTab = Number(options.status) |
| | | } */ |
| | | this.getFirstPageData() |
| | | var that =this |
| | | uni.$on('updateOrder',function(data){ |
| | | console.log('监听到事件来自 update ,携带参数 msg 为:' ,data); |
| | | if(data.delete == 1){ |
| | | var that = this |
| | | uni.$on('updateOrder', function(data) { |
| | | console.log('监听到事件来自 update ,携带参数 msg 为:', data); |
| | | if (data.delete == 1) { |
| | | //删除订单,强制刷新数据 |
| | | that.getFirstPageData() |
| | | }else if(data.info!=null && data.info.orderId!=null){ |
| | | console.log('监听到事件来自 update 01:' ,data); |
| | | that.dataList.forEach((item,index)=>{ |
| | | if(item.id==data.info.orderId){ |
| | | console.log('监听到事件来自 update 02:' ,data); |
| | | } else if (data.info != null && data.info.orderId != null) { |
| | | console.log('监听到事件来自 update 01:', data); |
| | | that.dataList.forEach((item, index) => { |
| | | if (item.id == data.info.orderId) { |
| | | console.log('监听到事件来自 update 02:', data); |
| | | item.status = data.info.orderStatus |
| | | item.commentStatus = data.info.commentStatus |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | | }) |
| | | uni.$on('shuaxin', (orderStatus) => { |
| | | }) |
| | | // uni.$on('shuaxin', (orderStatus) => { |
| | | // this.activeTab = -1 |
| | | // this.showDone=false |
| | | // this.showCancel=false |
| | | // this.showDelete=false |
| | | // this.showQrcode=false |
| | | // this.showPay=false |
| | | // this.contanctType =0 |
| | | // this.showPhone=false |
| | | // this.loading=false |
| | | // this.currentOrder=null |
| | | // this.linkItem={title:'',linkname:'',linkphone:''} |
| | | // if( Number(orderStatus) === -2){ |
| | | // this.activeTab = 0 |
| | | // } else if( Number(orderStatus) !== 0 ){ |
| | | // this.activeTab = Number(orderStatus) |
| | | // } |
| | | // this.getFirstPageData() |
| | | // }) |
| | | }, |
| | | onShow() { |
| | | const status = uni.getStorageSync('orderStatus'); |
| | | if (String(status) !== '') { |
| | | this.activeTab = -1 |
| | | this.showDone=false |
| | | this.showCancel=false |
| | | this.showDelete=false |
| | | this.showQrcode=false |
| | | this.showPay=false |
| | | this.contanctType =0 |
| | | this.showPhone=false |
| | | this.loading=false |
| | | this.currentOrder=null |
| | | this.linkItem={title:'',linkname:'',linkphone:''} |
| | | if( Number(orderStatus) === -2){ |
| | | this.showDone = false |
| | | this.showCancel = false |
| | | this.showDelete = false |
| | | this.showQrcode = false |
| | | this.showPay = false |
| | | this.contanctType = 0 |
| | | this.showPhone = false |
| | | this.loading = false |
| | | this.currentOrder = null |
| | | this.linkItem = { |
| | | title: '', |
| | | linkname: '', |
| | | linkphone: '' |
| | | } |
| | | if (Number(status) === -2) { |
| | | this.activeTab = 0 |
| | | } else if( Number(orderStatus) !== 0 ){ |
| | | this.activeTab = Number(orderStatus) |
| | | } else if (Number(status) !== 0) { |
| | | this.activeTab = Number(status) |
| | | } |
| | | this.getFirstPageData() |
| | | }) |
| | | uni.removeStorageSync('orderStatus'); |
| | | } else { |
| | | if (this.currentPage === 1) { |
| | | this.getFirstPageData() |
| | | } |
| | | } |
| | | }, |
| | | onReachBottom(){ |
| | | onReachBottom() { |
| | | this.getDataList(); |
| | | }, |
| | | methods: { |
| | | previewImage(images,index = 0) { |
| | | previewImage(images, index = 0) { |
| | | uni.previewImage({ |
| | | current: index, |
| | | urls: images |
| | | current: index, |
| | | urls: images |
| | | }); |
| | | }, |
| | | changeTab(item){ |
| | | this.activeTab = item.value |
| | | this.getFirstPageData() |
| | | changeTab(item) { |
| | | this.activeTab = item.value |
| | | this.getFirstPageData() |
| | | }, |
| | | payOrderFee(info){ |
| | | payOrderFee(info) { |
| | | var that = this; |
| | | uni.showLoading({ title: '发起支付中...', mask: true }) |
| | | uni.showLoading({ |
| | | title: '发起支付中...', |
| | | mask: true |
| | | }) |
| | | this.$u.api.payOverdueFee({ |
| | | orderId: info.id |
| | | }).then(res => { |
| | |
| | | }, |
| | | fail: (err) => { |
| | | if (err.errMsg.includes('cancel')) { |
| | | uni.showToast({ title: '已取消支付', icon: 'none' }) |
| | | uni.showToast({ |
| | | title: '已取消支付', |
| | | icon: 'none' |
| | | }) |
| | | } else { |
| | | uni.showToast({ title: '支付失败', icon: 'none' }) |
| | | uni.showToast({ |
| | | title: '支付失败', |
| | | icon: 'none' |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | } else { |
| | | uni.showToast({ title: res.msg || '支付失败', icon: 'none' }) |
| | | uni.showToast({ |
| | | title: res.msg || '支付失败', |
| | | icon: 'none' |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | uni.hideLoading() |
| | | uni.showToast({ title: '支付失败', icon: 'none' }) |
| | | uni.showToast({ |
| | | title: '支付失败', |
| | | icon: 'none' |
| | | }) |
| | | }) |
| | | }, |
| | | payOrder(item){ |
| | | payOrder(item) { |
| | | var that = this; |
| | | uni.showLoading({ title: '发起支付中...', mask: true }) |
| | | uni.showLoading({ |
| | | title: '发起支付中...', |
| | | mask: true |
| | | }) |
| | | this.$u.api.continuePayOrder({ |
| | | orderId: item.id |
| | | }).then(res => { |
| | |
| | | }, |
| | | fail: (err) => { |
| | | if (err.errMsg.includes('cancel')) { |
| | | uni.showToast({ title: '已取消支付', icon: 'none' }) |
| | | uni.showToast({ |
| | | title: '已取消支付', |
| | | icon: 'none' |
| | | }) |
| | | } else { |
| | | uni.showToast({ title: '支付失败', icon: 'none' }) |
| | | uni.showToast({ |
| | | title: '支付失败', |
| | | icon: 'none' |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | } else { |
| | | uni.showToast({ title: res.msg || '支付失败', icon: 'none' }) |
| | | uni.showToast({ |
| | | title: res.msg || '支付失败', |
| | | icon: 'none' |
| | | }) |
| | | } |
| | | }).catch(err => { |
| | | uni.hideLoading() |
| | | uni.showToast({ title: '支付失败', icon: 'none' }) |
| | | uni.showToast({ |
| | | title: '支付失败', |
| | | icon: 'none' |
| | | }) |
| | | }) |
| | | }, |
| | | doneOrder(item){ |
| | | doneOrder(item) { |
| | | this.currentOrder = null |
| | | this.showDone = !this.showDone |
| | | if(this.showDone){ |
| | | if (this.showDone) { |
| | | this.currentOrder = item |
| | | } |
| | | }, |
| | | async doneOrderDo(){ |
| | | if(this.userType == 1 || this.currentOrder==null || this.currentOrder.id == null) { |
| | | async doneOrderDo() { |
| | | if (this.userType == 1 || this.currentOrder == null || this.currentOrder.id == null) { |
| | | return |
| | | } |
| | | var that =this |
| | | let res = await this.$u.api.confirmReceipt({ orderId: this.currentOrder.id }); |
| | | if (res.code === 200 ) { |
| | | var that = this |
| | | let res = await this.$u.api.confirmReceipt({ |
| | | orderId: this.currentOrder.id |
| | | }); |
| | | if (res.code === 200) { |
| | | that.showDone = false |
| | | that.getFirstPageData() |
| | | that.showDone() |
| | | } |
| | | }, |
| | | contactPhone(item,type){ |
| | | this.showPhone = !this.showPhone |
| | | this.linkItem = {title:'',linkname:'',linkphone:''} |
| | | console.log("==================================",this.showPhone) |
| | | if(!item){ |
| | | return |
| | | } |
| | | if(type == 0){ |
| | | this.linkItem = {title:'联系门店',linkname:item.depositShopName,linkphone:item.depositShopPhone} |
| | | }else if(type ==2){ |
| | | this.linkItem = {title:'联系骑手',linkname:item.driverName,linkphone:item.driverPhone} |
| | | }else if(type ==1){ |
| | | this.linkItem = {title:'联系门店',linkname:item.takeShopName,linkphone:item.takeShopPhone} |
| | | } |
| | | }, |
| | | contactPhoneDo(){ |
| | | if(this.linkItem.linkphone !=null && this.linkItem.linkphone!=''){ |
| | | contactPhone(item, type) { |
| | | this.showPhone = !this.showPhone |
| | | this.linkItem = { |
| | | title: '', |
| | | linkname: '', |
| | | linkphone: '' |
| | | } |
| | | console.log("==================================", this.showPhone) |
| | | if (!item) { |
| | | return |
| | | } |
| | | if (type == 0) { |
| | | this.linkItem = { |
| | | title: '联系门店', |
| | | linkname: item.depositShopName, |
| | | linkphone: item.depositShopPhone |
| | | } |
| | | } else if (type == 2) { |
| | | this.linkItem = { |
| | | title: '联系骑手', |
| | | linkname: item.driverName, |
| | | linkphone: item.driverPhone |
| | | } |
| | | } else if (type == 1) { |
| | | this.linkItem = { |
| | | title: '联系门店', |
| | | linkname: item.takeShopName, |
| | | linkphone: item.takeShopPhone |
| | | } |
| | | } |
| | | }, |
| | | contactPhoneDo() { |
| | | if (this.linkItem.linkphone != null && this.linkItem.linkphone != '') { |
| | | uni.makePhoneCall({ |
| | | phoneNumber: this.linkItem.linkphone |
| | | phoneNumber: this.linkItem.linkphone |
| | | }) |
| | | } |
| | | }, |
| | | cancelOrder(item){ |
| | | cancelOrder(item) { |
| | | this.currentOrder = null |
| | | this.showCancel = !this.showCancel |
| | | if(this.showCancel){ |
| | | if (this.showCancel) { |
| | | this.currentOrder = item |
| | | } |
| | | }, |
| | | deleteOrder(item){ |
| | | deleteOrder(item) { |
| | | this.currentOrder = null |
| | | this.showDelete = !this.showDelete |
| | | if(this.showDelete){ |
| | | if (this.showDelete) { |
| | | this.currentOrder = item |
| | | } |
| | | }, |
| | | async cancelOrderDo(){ |
| | | if( this.currentOrder==null || this.currentOrder.id == null) { |
| | | async cancelOrderDo() { |
| | | if (this.currentOrder == null || this.currentOrder.id == null) { |
| | | return |
| | | } |
| | | var that =this |
| | | let res = await that.$u.api.cancelOrder({ orderId: this.currentOrder.id }); |
| | | if (res.code === 200 ) { |
| | | var that = this |
| | | let res = await that.$u.api.cancelOrder({ |
| | | orderId: this.currentOrder.id |
| | | }); |
| | | if (res.code === 200) { |
| | | this.showCancel = false |
| | | //修改订单状态 |
| | | this.dataList.forEach(item=>{ |
| | | if(item.id==this.currentOrder.id){ |
| | | this.dataList.forEach(item => { |
| | | if (item.id == this.currentOrder.id) { |
| | | item.status = 4 |
| | | } |
| | | }) |
| | | }) |
| | | that.getFirstPageData() |
| | | } |
| | | } |
| | | }, |
| | | async deleteOrderDo(){ |
| | | if( this.currentOrder==null || this.currentOrder.id == null) { |
| | | async deleteOrderDo() { |
| | | if (this.currentOrder == null || this.currentOrder.id == null) { |
| | | return |
| | | } |
| | | var that =this |
| | | let res = await that.$u.api.deleteOrder({ orderId: this.currentOrder.id }); |
| | | if (res.code === 200 ) { |
| | | var that = this |
| | | let res = await that.$u.api.deleteOrder({ |
| | | orderId: this.currentOrder.id |
| | | }); |
| | | if (res.code === 200) { |
| | | this.showDelete = false |
| | | this.getFirstPageData() |
| | | } |
| | | } |
| | | }, |
| | | copyCode() { |
| | | if (!this.currentOrder || !this.currentOrder.memberVerifyCode) { |
| | |
| | | } |
| | | }) |
| | | }, |
| | | async openQrcode(item){ |
| | | async openQrcode(item) { |
| | | this.currentOrder = null |
| | | this.qrcodeImage=null |
| | | var that =this |
| | | if(!this.showQrcode){ |
| | | this.showQrcode =true |
| | | this.qrcodeImage = null |
| | | var that = this |
| | | if (!this.showQrcode) { |
| | | this.showQrcode = true |
| | | this.currentOrder = item |
| | | drawQrcode({ |
| | | canvasId: 'qrcodeCanvas', |
| | |
| | | } |
| | | }, this) |
| | | }, 100) |
| | | }else{ |
| | | } else { |
| | | this.showQrcode = false |
| | | } |
| | | }, |
| | | getFirstPageData(){ |
| | | getFirstPageData() { |
| | | this.currentPage = 0 |
| | | this.hasNext=true |
| | | this.total=0 |
| | | this.dataList=[] |
| | | this.hasNext = true |
| | | this.total = 0 |
| | | this.dataList = [] |
| | | this.getDataList() |
| | | }, |
| | | async getDataList(){ |
| | | if(this.loading || !this.hasNext){ |
| | | return |
| | | } |
| | | this.loading=true |
| | | this.currentPage = this.currentPage+1 |
| | | if(this.currentPage == 1){ |
| | | this.hasNext =true |
| | | this.dataList=[] |
| | | } |
| | | var that =this |
| | | let res ={}; |
| | | res = await that.$u.api.myOrderPage({ |
| | | capacity:10, |
| | | model: { |
| | | combinedStatus: this.activeTab == -1?'':this.activeTab, |
| | | keyword: this.keyword |
| | | }, |
| | | page:this.currentPage |
| | | }); |
| | | |
| | | console.log(res) |
| | | if (res.code === 200 ) { |
| | | if ( res.data && res.data.page ===this.currentPage) { |
| | | res.data.records = res.data.records||[] |
| | | that.dataList.push(...res.data.records) |
| | | that.total=res.data.total |
| | | if( this.currentPage >= res.data.pageCount||0){ |
| | | that.hasNext=false |
| | | }else{ |
| | | that.hasNext=true |
| | | } |
| | | async getDataList() { |
| | | if (this.loading || !this.hasNext) { |
| | | return |
| | | } |
| | | this.loading = true |
| | | this.currentPage = this.currentPage + 1 |
| | | if (this.currentPage == 1) { |
| | | this.hasNext = true |
| | | this.dataList = [] |
| | | } |
| | | var that = this |
| | | let res = {}; |
| | | res = await that.$u.api.myOrderPage({ |
| | | capacity: 10, |
| | | model: { |
| | | combinedStatus: this.activeTab == -1 ? '' : this.activeTab, |
| | | keyword: this.keyword |
| | | }, |
| | | page: this.currentPage |
| | | }); |
| | | |
| | | console.log(res) |
| | | if (res.code === 200) { |
| | | if (res.data && res.data.page === this.currentPage) { |
| | | res.data.records = res.data.records || [] |
| | | that.dataList.push(...res.data.records) |
| | | that.total = res.data.total |
| | | if (this.currentPage >= res.data.pageCount || 0) { |
| | | that.hasNext = false |
| | | } else { |
| | | that.hasNext = true |
| | | } |
| | | } |
| | | this.loading=false |
| | | } |
| | | } |
| | | this.loading = false |
| | | }, |
| | | jumpOrderDetail(id){ |
| | | jumpOrderDetail(id) { |
| | | uni.navigateTo({ |
| | | url:'/pages/delivery-order-detail/delivery-order-detail?userType=0&id='+id |
| | | url: '/pages/delivery-order-detail/delivery-order-detail?userType=0&id=' + id |
| | | }) |
| | | }, |
| | | evaluateOrder(item){ |
| | | evaluateOrder(item) { |
| | | uni.navigateTo({ |
| | | url:`/pages/evaluate/evaluate?id=${item.id}&type=${item.type}&takeShopId=${item.takeShopId || ''}` |
| | | url: `/pages/evaluate/evaluate?id=${item.id}&type=${item.type}&takeShopId=${item.takeShopId || ''}` |
| | | }) |
| | | } |
| | | } |
| | |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .tc-contemt{ |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | .tc-contemt { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | } |
| | | |
| | | .itinerary-page { |
| | | min-height: 100vh; |
| | | background: #f7f7f7; |
| | |
| | | z-index: 1; |
| | | padding-bottom: 18rpx; |
| | | } |
| | | |
| | | |
| | | .page-padding { |
| | | padding: 0 30rpx; |
| | | box-sizing: border-box; |
| | |
| | | align-items: center; |
| | | padding: 0 30rpx; |
| | | box-sizing: border-box; |
| | | background: rgba(255,255,255,0.9); |
| | | background: rgba(255, 255, 255, 0.9); |
| | | border-radius: 16rpx; |
| | | overflow: hidden; |
| | | } |
| | |
| | | background: #fff4e8; |
| | | } |
| | | |
| | | .head-local{ |
| | | flex: 1; |
| | | padding: 24rpx 30rpx; |
| | | min-width: 0; |
| | | display: flex; |
| | | align-items: center; |
| | | background: linear-gradient(90deg, #15B9F7 -20%, #ffffff 100%); |
| | | .head-local { |
| | | flex: 1; |
| | | padding: 24rpx 30rpx; |
| | | min-width: 0; |
| | | display: flex; |
| | | align-items: center; |
| | | background: linear-gradient(90deg, #15B9F7 -20%, #ffffff 100%); |
| | | } |
| | | |
| | | .head-city { |
| | | flex: 1; |
| | | min-width: 0; |
| | | padding: 24rpx 30rpx; |
| | | background: linear-gradient(90deg, #FA8010 -20%, #ffffff 100%); |
| | | padding: 24rpx 30rpx; |
| | | background: linear-gradient(90deg, #FA8010 -20%, #ffffff 100%); |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | |
| | | overflow: hidden; |
| | | text-align: center; |
| | | text-overflow: ellipsis; |
| | | max-width: 100%; |
| | | max-width: 100%; |
| | | } |
| | | |
| | | .city-arrow { |
| | |
| | | color: #10B2FA; |
| | | flex-shrink: 0; |
| | | } |
| | | .status-orange{ |
| | | |
| | | .status-orange { |
| | | color: #FA8010 !important; |
| | | } |
| | | |
| | | |
| | | .status-grey{ |
| | | .status-grey { |
| | | color: #666666 !important; |
| | | } |
| | | |
| | |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .status-orange{ |
| | | .status-orange { |
| | | color: #FA8010 !important; |
| | | } |
| | | |
| | | |
| | | .status-orange{ |
| | | .status-orange { |
| | | color: #FA8010 !important; |
| | | } |
| | | |
| | |
| | | align-items: flex-start; |
| | | justify-content: space-between; |
| | | margin-bottom: 26rpx; |
| | | |
| | | &:last-child { |
| | | margin: 0 !important; |
| | | } |
| | |
| | | font-size: 24rpx; |
| | | color: #8C939F; |
| | | } |
| | | .price-line{ |
| | | |
| | | .price-line { |
| | | padding: 0 30rpx; |
| | | box-sizing: border-box; |
| | | display: flex; |
| | | align-items: end; |
| | | } |
| | | |
| | | .amount-area { |
| | | width: 50%; |
| | | // padding: 0 30rpx; |
| | |
| | | box-sizing: border-box; |
| | | margin-right: 20rpx; |
| | | white-space: nowrap; |
| | | |
| | | &:last-child { |
| | | margin: 0 !important; |
| | | } |
| | |
| | | font-size: 22rpx; |
| | | color: #a5aab3; |
| | | } |
| | | |
| | | .qrcode-box { |
| | | margin-top: 40rpx; |
| | | width: 360rpx; |
| | |
| | | border-radius: 8rpx; |
| | | box-sizing: border-box; |
| | | position: relative; |
| | | |
| | | canvas { |
| | | position: absolute; |
| | | top: 0; |
| | |
| | | opacity: 0; |
| | | } |
| | | } |
| | | |
| | | .item-form-list { |
| | | max-width: 100%; |
| | | display: flex; |
| | |
| | | align-items: center; |
| | | justify-content: center; |
| | | gap: 20rpx; |
| | | |
| | | .item-form-list-row { |
| | | border-radius: 8rpx; |
| | | overflow: hidden; |
| | | |
| | | image { |
| | | width: 130rpx; |
| | | max-height: 150rpx; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .qrcode-image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | |
| | | .pickup-code { |
| | | margin-top: 32rpx; |
| | | font-weight: 600; |
| | | font-size: 36rpx; |
| | | color: #222222; |
| | | } |
| | | |
| | | |
| | | .pickup-tip { |
| | | font-weight: 400; |
| | | font-size: 24rpx; |
| | | color: #999999; |
| | | margin-top: 24rpx; |
| | | } |
| | | </style> |
| | | </style> |