qingyiay
2023-05-09 01e96c8855927df67ac8a6831e345b6cb33140d1
pages/freight-forwarder-page/freightForwarder-index/freightForwarder-index.vue
@@ -1,59 +1,102 @@
<template>
   <view class="freightForwarder-index">
      <view class="freightForwarder-index-body">
         <u-empty mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png" textSize="30" iconSize="1000" v-if="orderPlanData.length == 0"></u-empty>
         <card v-for="(item, index) in orderPlanData" :key="index" :name="item.id" @click="cardBodyClick(item)" backgroundType="1">
            <template v-slot:left>
               <view class="card-left__top">
                  <text>{{ item.carNum }}</text>
                  张
               </view>
               <view class="card-left__utils"><u-button text="转发" type="primary" @tap.stop="forwardClick(item)" shape="circle"></u-button></view>
            </template>
            <template v-slot:right-top>
               <view class="right-top">
                  <view class="card-right-top-row">
                     <view>
                        <text>转发剩余:{{ item.carNumSurplusHuodai || 0 }}</text>
         <view class="wait-collection" style="background: url('https://mx.jzeg.cn:9095/appimg/image/banner/customerbanner.png') no-repeat;background-size:contain"></view>
         <view style="position: relative;top: -120px;">
            <u-empty mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png" textSize="30" iconSize="1000" v-if="orderPlanData.length == 0"></u-empty>
         </view>
         <view class="collection-form">
            <view class="collection-form-item" v-for="(item, index) in orderPlanData" :key="index" @click="cardBodyClick(item)">
               <view class="first-line">
                  <view class="dispatch-receive">
                     <view v-if="item.orderType == '外销' || item.orderType == '内销' || item.orderType == '转出'" class="container">
                        <view class="dispatch">{{ item.deptName }}</view>
                        <view class="receive-icon"></view>
                        <view class="receive">{{ item.customerName }}</view>
                     </view>
                     <view>
                        <text>{{ item.coalName || '' }}</text>
                     <view v-else-if="item.orderType == '外购' || item.orderType == '内购' || item.orderType == '转入'" class="container">
                        <view class="dispatch">{{ item.customerName }}</view>
                        <view class="receive-icon"></view>
                        <view class="receive">{{ item.deptName }}</view>
                     </view>
                  </view>
                  <view class="point-number">
                     <text class="residue">{{ item.carNumSurplusHuodai || 0 }}</text>
                     <text>/{{ item.carNum }}</text>
                  </view>
               </view>
            </template>
            <template v-slot:right-bottom>
               <view class="code">
                  <text>编号:{{ item.orderCode || '' }}</text>
               <view class="second-line">
                  <view class="coal-name">
                     <view class="">{{ item.coalName }}</view>
                     <view class="black-bar"></view>
                     <view class="coal-type" v-if="item.orderType">{{ item.orderType }}</view>
                  </view>
               </view>
            </template>
         </card>
      </view>
      <view class="history-numbers">
         <combined-title title="历史提煤单"></combined-title>
         <scroll-view :scroll-top="scrollTop" scroll-y="true" class="scroll-Y" @scrolltolower="historyScrolltolower">
            <uni-table border stripe emptyText="暂无更多数据" :loading="loading">
               <uni-tr>
                  <uni-th width="100" align="center">发运日期</uni-th>
                  <uni-th width="100" align="center">所属单位</uni-th>
                  <uni-th align="center" width="150">煤场名称</uni-th>
                  <uni-th align="center" width="100">煤种名称</uni-th>
                  <uni-th align="center" width="150">订单编号</uni-th>
                  <uni-th align="center" width="100">订单剩余量</uni-th>
                  <uni-th align="center" width="80">提煤单个数</uni-th>
               </uni-tr>
               <uni-tr v-for="(item, index) in historyCoalData" :key="index">
                  <uni-td align="center" @row-click="faYundetail(item)">{{ item.sendDate }}</uni-td>
                  <uni-td align="left" @row-click="faYundetail(item)">{{ item.deptName }}</uni-td>
                  <uni-td align="center" @row-click="faYundetail(item)">{{ item.filedName }}</uni-td>
                  <uni-td align="center" @row-click="faYundetail(item)">{{ item.coalName }}</uni-td>
                  <uni-td align="center" @row-click="faYundetail(item)">{{ item.orderCode }}</uni-td>
                  <uni-td align="center" @row-click="faYundetail(item)">{{ item.carNumSurplus }}</uni-td>
                  <uni-td align="center" @row-click="faYundetail(item)">{{ item.tmCount }}</uni-td>
               </uni-tr>
            </uni-table>
            <view class="more_text" v-if="showMoreData && historyCoalData.length !== 0">没有数据了...</view>
         </scroll-view>
               <view class="third-line">
                  <view class="time-icon">
                     <view
                        style="width: 24rpx;height: 24rpx;line-height: 24rpx;background: url('https://mx.jzeg.cn:9095/appimg/image/banner/clock.png') no-repeat;background-size: cover"
                     ></view>
                  </view>
                  <view class="send-date">{{ item.sendDate }}</view>
               </view>
               <view class="fourth-line">
                  <view class="forward" @click.stop="forwardClick(item)"><view class="button-image">转发</view></view>
               </view>
            </view>
         </view>
         <!-- <view class="transparent">
            <u-empty mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png" textSize="30" iconSize="1000" v-if="orderPlanData.length == 0"></u-empty>
         </view> -->
         <view class="history-numbers">
            <combined-title title="历史提煤单"></combined-title>
            <scroll-view :scroll-top="scrollTop" scroll-y="true" class="scroll-Y" @scrolltolower="historyScrolltolower">
               <u-empty mode="data" icon="http://cdn.uviewui.com/uview/empty/data.png" textSize="30" iconSize="1000" v-if="historyCoalData.length === 0"></u-empty>
               <view class="history-information" v-for="(item, index) in historyCoalData" :key="index" @click="faYundetail(item)">
                  <view class="first">
                     <view class="">{{ item.deptName || '' }}</view>
                     <view class=""><u-icon name="arrow-right" color="#999999" size="40"></u-icon></view>
                  </view>
                  <view class="second">
                     <view class="coal-name">{{ item.coalName || '' }}</view>
                     <view class="order-type" v-if="item.orderType">{{ item.orderType || '' }}</view>
                  </view>
                  <view class="third">
                     <view class="third-line">
                        <view class="third-line_text">领取数:</view>
                        <view class="third-line_num">{{ item.cars2 }}</view>
                     </view>
                     <view class="third-line">
                        <view class="third-line_text">剩余数:</view>
                        <view class="third-line_num" v-if="roleType == 1">{{ item.carNumSurplus1 }}</view>
                        <view class="third-line_num" v-else-if="roleType == 2">{{ item.carNumSurplus }}</view>
                     </view>
                     <view class="third-line">
                        <view class="third-line_text">提煤单个数::</view>
                        <view class="third-line_num">{{ item.tmCount }}</view>
                     </view>
                  </view>
                  <view class="fourth">
                     <view class="fourth-icon">
                        <view
                           style="width: 24rpx;height: 24rpx;line-height: 24rpx;background: url('https://mx.jzeg.cn:9095/appimg/image/banner/clock.png') no-repeat;background-size: cover"
                        ></view>
                     </view>
                     <view class="senddate">{{ item.sendDate }}</view>
                  </view>
                  <view class="fourth">
                     <view class="fourth-icon">
                        <view
                           style="width: 26rpx;height: 26rpx;line-height: 26rpx;background: url('https://mx.jzeg.cn:9095/appimg/image/banner/carnNUm.png') no-repeat;background-size: cover"
                        ></view>
                     </view>
                     <view class="senddate">{{ item.orderCode }}</view>
                  </view>
               </view>
               <view class="more_text" v-if="showMoreData && historyCoalData.length !== 0">没有数据了...</view>
               <view class="white-block"></view>
            </scroll-view>
         </view>
      </view>
   </view>
</template>
@@ -118,15 +161,18 @@
   methods: {
      // 获取历史提煤单
      getJhOrderPlanDataPage() {
         this.loading = true;
         uni.showLoading({
            title: '加载中'
         });
         this.$reqGet('getJhOrderPlanDataPage', { current: this.pageCurrent, size: this.pageSize }).then(res => {
            if (res.data.records) {
               if (this.pageCurrent > 1) {
                  this.historyCoalData = this.historyCoalData.concat(res.data.records);
                  this.loading = false;
                  this.historyCoalData = this.ArrSet(this.historyCoalData, 'id');
                  uni.hideLoading();
               } else {
                  this.historyCoalData = res.data.records;
                  this.loading = false;
                  uni.hideLoading();
               }
            }
         });
@@ -136,6 +182,15 @@
         if (this.pageCurrent * this.pageSize >= this.total) return (this.showMoreData = true);
         this.pageCurrent++;
         this.getJhOrderPlanDataPage();
      },
      //fix 点击提煤单返回会增加重复数据
      ArrSet(Arr, id) {
         var obj = {};
         const arrays = Arr.reduce((setArr, item) => {
            obj[item[id]] ? '' : (obj[item[id]] = true && setArr.push(item));
            return setArr;
         }, []);
         return arrays;
      },
      init() {
         this.huoDaiList();
@@ -175,63 +230,262 @@
</script>
<style lang="scss" scoped>
@mixin flex {
   display: flex;
   justify-content: space-between;
   align-items: center;
}
.scroll-Y {
   height: 600rpx;
   margin-bottom: vww(50);
   height: 900rpx;
   .more_text {
      color: #999;
      color: #333;
      font-size: 24rpx;
      text-align: center;
   }
}
::v-deep.freightForwarder-index {
   width: 94%;
   margin: 0 auto;
   // 主体
   .freightForwarder-index-body {
      margin-bottom: vww(10);
      // 卡片样式
      .card-left__top {
         margin-top: vww(26);
         text-align: center;
         color: #ffffff;
         text {
            font-size: vww(48);
            font-weight: 800;
         }
.history-numbers {
   width: 100%;
   position: relative;
   top: vww(-110);
   .history-information {
      width: 690rpx;
      height: 398rpx;
      margin: vww(10) vww(15);
      background: #ffffff;
      box-shadow: 0rpx 0rpx 14rpx 0rpx rgba(73, 120, 240, 0.14), 0rpx 7rpx 45rpx 0rpx rgba(73, 120, 240, 0.12);
      border-radius: 20rpx;
      @include flex flex-direction: column;
      align-items: flex-start;
      justify-content: space-evenly;
      overflow: hidden;
      .first {
         width: 96%;
         height: 34rpx;
         font-size: 32rpx;
         font-family: Microsoft YaHei;
         font-weight: 300;
         color: #303030;
         @include flex;
         margin: vww(10) vww(10) 0;
      }
      .card-left__utils {
         display: flex;
         padding: 0 vww(15) 0 vww(15);
         .u-button {
            width: vww(55);
            height: vww(24);
            background-color: #fff;
            color: #1987ff;
      .second {
         width: 100%;
         height: 31rpx;
         font-size: 30rpx;
         font-family: Microsoft YaHei;
         font-weight: 300;
         color: #515151;
         margin: vww(10) vww(10) 0;
         @include flex;
         justify-content: flex-start;
         .coal-name {
            min-width: vww(30);
            height: vww(20);
            margin-right: vww(21);
         }
      }
      .right-top {
         display: flex;
         flex-flow: column nowrap;
         align-content: space-around;
         .card-right-top-row {
            margin-top: vww(26);
         .order-type {
            color: #035cfb;
            border: 2px solid #035cfb;
            border-radius: 4rpx;
            padding: vww(2) vww(4);
            text-align: center;
            &:nth-child(1) {
               display: flex;
               justify-content: space-between;
               view {
                  text-align: center;
                  width: 50%;
               }
         }
      }
      .third {
         width: 96%;
         height: 31rpx;
         font-size: 30rpx;
         font-family: Microsoft YaHei;
         font-weight: 300;
         color: #515151;
         margin: vww(10) vww(10) 0;
         @include flex;
         .third-line {
            @include flex;
            &_text {
               color: #919090;
            }
            &_num {
               color: #035cfb;
            }
         }
      }
      .code {
         margin-top: vww(2);
         text-align: center;
      .fourth {
         width: 50%;
         height: 31rpx;
         font-size: 30rpx;
         font-family: Microsoft YaHei;
         font-weight: 300;
         color: #515151;
         margin: vww(10) vww(10) 0;
         @include flex;
         .fourth-icon {
            width: vww(13);
            height: vww(13);
            margin-right: vww(14);
         }
         .senddate {
            flex: 1;
         }
      }
   }
}
::v-deep.freightForwarder-index {
   width: 100%;
   margin: 0 auto;
   // 主体
   .freightForwarder-index-body {
      .wait-collection {
         width: 100%;
         height: 600rpx;
         position: relative;
         top: vww(-10);
         z-index: 0;
      }
      .collection-form {
         width: vww(345);
         margin: 0 vww(15);
         position: relative;
         top: vww(-144);
         .collection-form-item {
            width: 690rpx;
            height: 300rpx;
            background: #ffffff;
            box-shadow: 4rpx 6rpx 25rpx 0rpx rgba(73, 120, 240, 0.15);
            border-radius: 20rpx;
            overflow: hidden;
            @include flex flex-direction: column;
            position: relative;
            align-items: flex-start;
            margin-top: vww(10);
            .first-line {
               width: 94%;
               height: vww(30);
               margin: vww(10) vww(16) 0 vww(16);
               display: flex;
               justify-content: space-between;
               .dispatch-receive {
                  width: 70%;
                  display: flex;
                  justify-content: space-between;
                  align-items: center;
                  .container {
                     width: 100%;
                     display: flex;
                     justify-content: space-between;
                     align-items: center;
                  }
                  .receive-icon {
                     width: 62rpx;
                     height: 14rpx;
                     border-bottom: 3px solid #275fa5;
                     position: relative;
                     &:after {
                        content: '';
                        position: absolute;
                        width: 3px;
                        height: 10px;
                        background-color: #275fa5;
                        right: 0;
                        transform: rotate(-45deg);
                     }
                  }
               }
               .point-number {
                  width: 15%;
                  text {
                     font-size: 24rpx;
                     font-family: Microsoft YaHei;
                     font-weight: 400;
                     color: #c78a64;
                  }
                  .residue {
                     font-size: 40rpx;
                     font-family: CTCuHeiSJ;
                     font-weight: 400;
                     color: #f81414;
                  }
               }
            }
            .second-line {
               width: 100%;
               height: vww(30);
               margin-left: vww(12);
               display: flex;
               justify-content: flex-start;
               align-items: center;
               .coal-name {
                  flex-grow: 1;
                  height: 30rpx;
                  font-size: 30rpx;
                  font-family: Microsoft YaHei;
                  font-weight: 300;
                  color: #515151;
                  position: relative;
                  display: flex;
                  align-items: center;
                  .black-bar {
                     width: 2rpx;
                     height: 30rpx;
                     background: #515151;
                     margin-left: vww(12);
                  }
                  .coal-type {
                     margin-left: vww(12);
                     min-width: vww(50);
                     height: 30rpx;
                     line-height: 30rpx;
                     font-size: 30rpx;
                     font-family: Microsoft YaHei;
                     font-weight: 300;
                     color: #515151;
                  }
               }
            }
            .third-line {
               width: 40%;
               height: vww(30);
               margin-left: vww(15);
               display: flex;
               justify-content: flex-start;
               align-items: center;
               .send-date {
                  width: 148rpx;
                  height: 24rpx;
                  margin-left: vww(14);
                  line-height: 24rpx;
                  font-size: 28rpx;
                  font-family: Microsoft YaHei;
                  font-weight: 300;
                  color: #515151;
               }
            }
            .fourth-line {
               width: 40%;
               height: vww(30);
               @include flex;
               position: relative;
               left: 60%;
               bottom: vww(10);
               .forward {
                  width: vww(123);
                  height: vww(48);
                  left: vww(140);
                  .button-image {
                     width: 100%;
                     height: 100%;
                     background: url('../../../static/image/banner/button.png') no-repeat;
                     background-size: cover;
                     font-size: 28rpx;
                     font-family: Microsoft YaHei;
                     font-weight: 300;
                     color: #fff;
                     text-align: center;
                     line-height: vww(45);
                  }
               }
            }
         }
      }
   }
}