xuxueyang
2024-09-26 05bd41aab8c9dba2cf7afcd78493415761f11d9d
pages/order/order-delivery.vue
@@ -1,77 +1,116 @@
<template>
   <view class="list-container order-sale supplier">
      <view class="component-tab-container m-t-12">
      <view class="component-tab-container m-t-12" v-if="!range||range=='today'">
         <view class="tab-item" :class="[query.status==''?'cur':'']" @click="changeIndex('')">全部订单</view>
         <view class="tab-item" :class="[query.status=='PENDING'?'cur':'']" @click="changeIndex('PENDING')">待入位
         </view>
         <view class="tab-item" :class="[query.status=='ARRIVED'?'cur':'']" @click="changeIndex('ARRIVED')">已入位
         </view>
      </view>
      <view class="p15" style="min-height: calc(100vh - 160rpx);">
      <view class="m-t-12 flex" v-if="!range||range=='today'">
         <view class="m-l-a m-r-a text-center" :class="[query.date?'':'desc-gray']"
            @click="show_time_picker_time=true">
            订单日期:{{query.date || '请选择日期'}}
         </view>
         <view class="m-l-a m-r-20 w-fit flex">
            <radio :checked="selecttoday" @click="changeSelecrRange"></radio>
            <view>只查看今日</view>
         </view>
      </view>
      <view class="search-container m-t-12 flex" v-if="list&&list.length>0">
         <view class="component-filter-container p10  m-l-10 flex flex1" style="text-align: right;">
            <view class="flex1 m-l-a m-r-10" @click="selectAllOrder" style="text-align: right;">
               点击打印全部(已选{{ids.length}}个)
            </view>
         </view>
      </view>
      <view class="p15" style="min-height: calc(100vh - 400rpx);">
         <no-data v-if="!list||list.length==0" style="width: 100%;"></no-data>
         <view v-for="(item,index) in list" :key="index" class="m-b-24 order-sale-list list-container">
         <view v-for="(dto,index) in list" :key="index" class="m-b-24 order-sale-list list-container">
            <view class="order-sale-item list-item">
               <view class="title flex">
                  <view>订单单号:{{item.orderNo}}</view>
                  <view class="m-l-a m-r-0 status">{{item.statusStr}}</view>
                  <view>订单单号:{{dto.orderNo}}</view>
                  <view class="m-l-a m-r-15 status">{{dto.statusStr}}</view>
                  <radio class="m-l-15 m-r-0" :checked="ids.indexOf(dto.orderNo)>=0" @click="changeItem(dto)">
                  </radio>
               </view>
               <view class="line" v-if="false"></view>
               <view class="flower flex" v-if="false">
                  <image class="image img100 m-r-6" :src="item.flowerCover" @click="previewImg(item.flowerCover)">
                  </image>
                  <view class="flex1">
                     <view class=" flex">
                        <view class="title">{{item.flowerName }}
                        </view>
                     </view>
                     <view class="each-list flex">
                        <view class="each-item">
                           <view class="label">颜色</view>
                           <view class="value">{{ item.flowerColor || '-' }}</view>
               <view v-if="dto.items">
                  <view v-for="(item,k) of dto.items" :key="k">
                     <view class="line" v-if="true"></view>
                     <!--             <view class="supplier-name ">
                        <image class="icon-dp" src="/static/common/icon-dp.png"></image>
                        {{ item.supplierName }}
                     </view> -->
                     <view class="flower flex m-t-12" v-if="true">
                        <image class="image img100 m-r-6" :src="item.flowerCover"
                           @click="previewImg(item.flowerCover)">
                        </image>
                        <view class="flex1">
                           <view class=" flex">
                              <view class="title"><span
                                    class="level">{{ item.flowerCategory || ''}}</span><span
                                    class="level">{{ item.flowerLevelStr || ''}}</span>{{item.flowerName }}
                              </view>
                           </view>
                           <view class="each-list">
                              <view class="each-item flex1 flex">
                                 <view class="label">颜色</view>
                                 <view class="value">{{ item.flowerColor || '-' }}</view>
                              </view>
                              <view class="each-item flex1 flex">
                                 <view class="label">规格</view>
                                 <view class="value">{{ item.flowerUnit || '-' }}</view>
                              </view>
                           </view>
                        </view>
                        <view class="each-item">
                           <view class="label">规格</view>
                           <view class="value">{{ item.flowerUnit || '-' }}</view>
                        <view class="each-list price">
                           <view class="each-item flex1">
                              <view class="value">¥{{ item.price || '-' }}</view>
                           </view>
                           <view class="each-item flex1">
                              <view class="value">x {{ item.num || 0 }}</view>
                           </view>
                        </view>
                     </view>
                     <view class="line"></view>
                     <view class="buttons">
                        <view class="button button-1" @click="printDeliveryOrder(item)">打印</view>
                     </view>
                  </view>
                  <view class="each-list price">
                     <view class="each-item">
                        <view class="value">¥{{ item.price || '-' }}</view>
                     </view>
                     <view class="each-item">
                        <view class="value">x {{ item.num || 0 }}</view>
                     </view>
                  </view>
               </view>
               <view class="line"></view>
               <view class="delivery-form">
                  <view class="form-item" style="max-width: 100%;">
                     <view class="label">下单时间</view>
                     <view class="value">{{item.paymentTime}}</view>
                     <view class="value">{{dto.paymentTime}}</view>
                  </view>
               </view>
               <view class="delivery-form">
                  <view class="form-item">
                     <view class="label">仓库名称</view>
                     <view class="value red">{{item.warehouseName}}</view>
                     <view class="value red">{{dto.warehouseName || '待分配'}}</view>
                  </view>
                  <view class="form-item">
                     <view class="label">库位名称</view>
                     <view class="value red">{{item.warehouseLocationCode}}</view>
                     <view class="value red">{{dto.warehouseLocationCode || '待分配'}}</view>
                  </view>
               </view>
               <view class="line"></view>
               <view class="buttons">
                  <view class="button button-1 m-r-10" v-if="item.status==='PENDING'"
                     @click="toDetail(item,'PENDING')">确认入位</view>
                  <view class="button button-0" @click="toDetail(item,'')">查看详情</view>
                  <view class="button button-1 m-r-10" v-if="dto.status==='PENDING'"
                     @click="toDetail(dto,'PENDING')">确认入位</view>
                  <view class="button button-0" @click="toDetail(dto,'')">查看详情</view>
               </view>
@@ -82,6 +121,10 @@
      <!-- 判断是否到底了,自动吧 -->
      <footer-msg :more="page.total>0&&page.total>page.current*page.size"></footer-msg>
      <u-calendar :show="show_time_picker_time" mode="single" @confirm="select_time_picker_time"
         @cancel="show_time_picker_time = false" :monthNum="12" :maxDate="defaultDatePre"
         :defaultDate="defaultDatePre" @close="show_time_picker_time = false" minDate="2024-07-01" toolTip="选择订单日期">
      </u-calendar>
   </view>
</template>
@@ -89,40 +132,133 @@
   export default {
      data() {
         return {
            ids:[],
            tabIndex: 0,
            query: {
               status: '',
               date: '',
            },
            selecttoday: true,
            defaultDatePre: new Date(),
            show_time_picker_time: false,
            range: '', //today的话才有查询条件,其他的话,不展示顶部查询条件(yesterday、month、todayall)
         }
      },
      onLoad(options) {
      async onLoad(options) {
         if (options.status) {
            this.query.status = options.status || ''
         }
         this.listApi = '/api/supplier/delivery/list/today'
         this.getList()
         this.range = options.range || ''
         //目前应该是admin(质检人员不会用这个页面)
         if (this.range === 'todayall') {
            this.listApi = '/api/supplier/delivery/list/today'
         } else if (this.range === 'month') {
            this.listApi = '/api/supplier/delivery/list/month'
         } else if (this.range === 'yesterday') {
            this.listApi = '/api/supplier/delivery/list/yesterday'
         } else {
            this.listApi = '/api/supplier/delivery/list/today'
         }
         // this.listApi = '/api/supplier/delivery/list'
         await this.getList()
         // this.list = [{
         //    items: [{}, {}]
         // }]
      },
      onReachBottom() {
         this.page.current += 1
         this.getMore()
      },
      async onShow() {
         if (this.sign['delivery']) {
            await this.$store.dispatch('sign_clear', 'delivery');
            this.ids = []
            this.refreshList()
         }
      },
      async onPullDownRefresh() {
         this.page.current = 1
         this.ids = []
         await this.getList()
         uni.stopPullDownRefresh()
      },
      methods: {
         selectAllOrder() {
            if (this.ids.length > 0) {
               // this.$message.showToast('敬请期待')
               var arr = []
               for (var item of this.list) {
                  if (this.ids.indexOf(item.orderNo) >= 0) {
                     for (var each of item.items) {
                        arr.push(each)
                     }
                  }
               }
               if (arr.length > 0) {
                  this.$storage.setItem('cache_delivery_order_print', JSON.stringify(arr))
                  uni.navigateTo({
                     url: '/sub_pages/supplier/print/print-list'
                  })
               }
            }
         },
         changeItem(item) {
            if (this.ids.indexOf(item.orderNo) >= 0) {
               this.ids.splice(this.ids.indexOf(item.orderNo), 1)
            } else {
               this.ids.push(item.orderNo)
            }
         },
         printDeliveryOrder(item) {
            var arr = []
            arr.push(item)
            this.$storage.setItem('cache_delivery_order_print', JSON.stringify(arr))
            uni.navigateTo({
               url: '/sub_pages/supplier/print/print-list'
            })
         },
         async select_time_picker_time(e) {
            this.ids = []
            this.selecttoday = false
            this.listApi = '/api/supplier/delivery/list'
            var vv = e && e.length >= 1 && new Date(e[0]) || new Date()
            this.show_time_picker_time = false;
            this.query.date = this.$util.toDate(vv) || ''
            this.refreshList()
         },
         changeSelecrRange() {
            if (this.selecttoday) {
               return
            }
            this.selecttoday = !this.selecttoday
            this.ids = []
            this.$nextTick(() => {
               if (this.selecttoday) {
                  this.query.date = ''
                  this.listApi = '/api/supplier/delivery/list/today'
               } else {
                  this.listApi = '/api/supplier/delivery/list'
               }
               this.refreshList()
            })
         },
         changeIndex(status) {
            if (this.query.status !== status) {
               this.query.status = status
               this.ids = []
               // 刷新 query
               this.refreshList()
            }
@@ -131,7 +267,8 @@
            uni.navigateTo({
               url: `/pages/order/order-delivery-detail?id=${item.id}&status=${status}`
            })
         }
         },
      }
   }
</script>
@@ -142,6 +279,34 @@
         background-color: #fff;
         margin-bottom: 20rpx;
         padding: 22rpx;
         .each-item {
            .label {
               min-width: 120rpx;
            }
            .label:after {
               content: ":";
               margin-right: 10rpx;
            }
         }
         .supplier-name {
            border-bottom: 2rpx solid #EEEEEE;
            font-weight: 600;
            font-size: 28rpx;
            color: #000000;
            padding-bottom: 10rpx;
            line-height: 40rpx;
            .icon-dp {
               width: 27rpx;
               height: 27rpx;
               display: inline-block;
               vertical-align: middle;
            }
         }
         .buttons {
            display: flex;
@@ -178,6 +343,14 @@
            font-size: 28rpx;
            color: #000000;
            line-height: 40rpx;
            .level {
               font-weight: 400;
               font-size: 28rpx;
               color: #20613D;
               line-height: 40rpx;
               margin-right: 20rpx;
            }
         }
         .status {
@@ -207,6 +380,14 @@
               font-size: 28rpx;
               color: #000000;
               line-height: 40rpx;
               .level {
                  font-weight: 400;
                  font-size: 28rpx;
                  color: #20613D;
                  line-height: 40rpx;
                  margin-right: 20rpx;
               }
            }
            .desc {}