MrShi
23 小时以前 9fb9e0b5b7c2664552f06a683fe1204525d8fd4e
mini-program/pagesA/pages/order/order.vue
@@ -1,60 +1,199 @@
<template>
   <view class="box">
      <view class="cate">
         <view @click="i = index" :class="i === index ? 'cate-item active' : 'cate-item'" v-for="(item, index) in list" :key="index">
            {{item}}
            <view class="cate-item-xiab" v-if="i === index"></view>
         <view @click="changeRow(index)" :class="active === index ? 'cate-item active' : 'cate-item'" v-for="(item, index) in cate" :key="'cate_'+index">
            {{item.name}}
            <view class="cate-item-xiab" v-if="active === index"></view>
         </view>
      </view>
      <view class="list">
         <view class="list-item" v-for="(item, index) in 5" :key="index">
         <view class="list-item" v-for="(item, index) in dataList" :key="index">
            <view class="a">
               <view class="a-left">
                  <view class="a-left-tips">自提</view>
                  <text>鼎元农机一号经销商</text>
                  <view class="a-left-tips">{{item.receiveType==1?'自提':'快递配送'}}</view>
                  <text>订单号:{{item.id}}</text>
               </view>
               <view class="a-right">待付款:</view>
               <text v-if="item.status ==0" class="a-right">待支付</text>
               <text  v-if="item.status ==1" class="a-right">{{item.receiveType==1?'待自提':'待发货'}}</text>
               <text  v-if="item.status ==2" class="a-right">待收货</text>
               <text  v-if="item.status ==3" class="a-right grey">交易完成</text>
               <text  v-if="item.status ==4" class="a-right grey">已取消</text>
               <text  v-if="item.status ==6" class="a-right grey">已退款</text>
            </view>
            <view class="b">
               <view class="b-item">
               <view class="b-item" v-for="(item1, index1) in (item.goodsorderDetailList||[])">
                  <view class="b-item-image">
                     <image src="/static/logo.png" mode="widthFix"></image>
                     <image :src="item1.imgurl||'/static/logo.png'" mode="widthFix"></image>
                  </view>
                  <view class="b-item-title">中联艾禾宽齿 适用雷沃/中联/久保田</view>
                  <view class="b-item-title">{{item1.name||''}}</view>
                  <view class="b-item-jia">
                     <text>¥499.00</text>
                     <text>x1</text>
                     <text>¥{{(item1.price||0).toFixed(2)}}</text>
                     <text>x{{item1.goodsNum||0}}</text>
                  </view>
               </view>
               <view class="b-item" v-for="(item1, index1) in (item.goodsorderDetailList||[])">
                  <view class="b-item-image">
                     <image :src="item1.imgurl||'/static/logo.png'" mode="widthFix"></image>
                  </view>
                  <view class="b-item-title">{{item1.name||''}}</view>
                  <view class="b-item-jia">
                     <text>¥{{(item1.price||0).toFixed(2)}}</text>
                     <text>x{{item1.goodsNum||0}}</text>
                  </view>
               </view>
            </view>
            <view class="c">
               <view class="c-label">
                  <view class="c-label-title">需付款:</view>
                  <view class="c-label-title">实付款:</view>
                  <view class="c-label-price">
                     <text>998</text>
                     <text>.00</text>
                     <text>{{(item.price||0).toFixed(2)}}</text>
                     <text></text>
                  </view>
               </view>
               <view class="c-btns">
                  <view class="c-btns-item blue">联系客户</view>
                  <view class="c-btns-item bluebg">自提核销</view>
                  <view class="c-btns-item blue" @click="contactPhone(item)">联系客户</view>
                  <view class="c-btns-item bg" v-if="item.status==1 && item.receiveType==1">自提核销</view>
               </view>
            </view>
            <view class="d">
               订单备注:11月22日来拿
            <view class="d" v-if="item.memberInfo">
               订单备注:{{item.memberInfo||''}}
            </view>
         </view>
         <view v-if="!hasNext" class="nomore">已加载全部</view>
      </view>
      <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>联系客户</text>
            </view>
            <!-- <view class="phone-item">
               <view>
                  <image style="width: 36rpx;height: 36rpx" src="/static/icon/ic_kefu.png" mode="widthFix"></image>
                  <button open-type="contact" plain="true" bindcontact="handleContact">在线客服</button>
               </view>
                <view class="line" v-if="serverPhone && serverPhone.length"></view>
            </view> -->
             <view class="phone-item" >
                <view>
                  <image src="/static/icon/ic_call@2x.png" mode="widthFix" @click="contactPhoneDo()" ></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>
</template>
<script>
   import { mapState } from 'vuex'
   export default {
      computed: {
         ...mapState(['navHeight', 'statusbarHeight','shopInfo', 'shopToken'])
      },
      data() {
         return {
            i: 0,
            list: ['全部', '待支付', '待自提']
            i: '',
            active:0,
            showPhone:false,
            loading:false,
            currentPage:1,
            total:0,
            hasNext:true,
            dataList:[],
            shop:{},
            linkItem:{},
            cate: [
               { name: '全部', id: '' },
               { name: '待支付', id: 0 },
               { name: '待发货/自提', id: 1 }
            ]
         };
      },
      onLoad(options) {
         if (options.status) {
            this.i = Number(options.status)
         }
      },
      onShow() {
         this.shop  ={}
         this.checkShopLogin()
         this.shop = this.shopInfo || {}
         this.getFirstPageData()
      },
      onReachBottom(){
         this.getDataList();
      },
      methods: {
         contactPhone(item){
             this.showPhone = !this.showPhone
             this.linkItem = item ||{}
             console.log("==================================",this.showPhone)
         },
         contactPhoneDo(){
            if(this.linkItem.linkphone !=null && this.linkItem.linkphone!=''){
               uni.makePhoneCall({
                  phoneNumber: this.linkItem.linkphone
               })
            }
         },
         changeRow(index) {
            this.active=index
            this.i = this.cate[index].id
            this.getFirstPageData()
         },
         getFirstPageData(){
            this.currentPage = 0
            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 = await that.$u.api.shopOrderPage({
                     capacity:10,
                     model: {
                        receiveType: 1,
                        status: this.i
                     },
                     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
         },
         checkShopLogin(){
            var that =this
            if( this.shopInfo ==null || this.shopInfo.id==null ||  this.shopToken==null || this.shopToken==''){
               uni.navigateTo({
                  url: '/pages/login/login'
               })
            }
         }
      }
   }
</script>
@@ -69,6 +208,7 @@
      .list {
         width: 100%;
         padding: 22rpx 30rpx;
         padding-bottom: 60rpx;
         box-sizing: border-box;
         .list-item {
            width: 100%;
@@ -110,10 +250,12 @@
                  font-size: 26rpx;
                  color: #E4001D;
               }
               .grey{
                  color: #999999 !important;
               }
            }
            .b {
               width: 100%;
               height: 136rpx;
               display: flex;
               flex-direction: column;
               margin-top: 22rpx;
@@ -145,6 +287,10 @@
                     font-size: 30rpx;
                     color: #222222;
                     margin-right: 30rpx;
                     display: -webkit-box;
                     -webkit-line-clamp: 2; /* 限制文本为2行 */
                     -webkit-box-orient: vertical;
                     overflow: hidden;
                  }
                  .b-item-jia {
                     flex-shrink: 0;
@@ -211,9 +357,17 @@
                     border: 1rpx solid #004096;
                     color: #004096 !important;
                  }
                  .bluebg {
                     background: #004096 !important;
                  .bg{
                     background: #004096;
                     border-radius: 34rpx;
                     border: 1rpx solid #004096;
                     font-family: PingFangSC, PingFang SC;
                     font-weight: 400;
                     font-size: 28rpx;
                     color: #FFFFFF !important;
                     line-height: 40rpx;
                     text-align: center;
                     font-style: normal;
                  }
                  .c-btns-item {
                     padding: 0 24rpx;
@@ -233,17 +387,6 @@
                     }
                  }
               }
            }
            .d {
               width: 100%;
               padding: 20rpx;
               box-sizing: border-box;
               background: #F8F9FB;
               border-radius: 8rpx;
               font-weight: 400;
               font-size: 26rpx;
               color: #666666;
               margin-top: 24rpx;
            }
         }
      }