yangan
2024-08-08 7af16f32de779ba2360344218f807c9909677ee1
pages/driver-page/driver-index/driver-index.vue
@@ -1,403 +1,1278 @@
<template>
   <view class="driver-index">
      <view class="driver-index-body">
         <!-- 待领取提煤单 -->
         <combined-title title="待领取"></combined-title>
         <u-empty
            mode="data"
            icon="http://cdn.uviewui.com/uview/empty/data.png"
            textSize="30"
            iconSize="1000"
            v-if="driverBillOfLoadingData.list1 ? (driverBillOfLoadingData.list1.length == 0 ? true : false) : true"
         ></u-empty>
         <card v-for="(item, index) in driverBillOfLoadingData.list1" :key="index" :name="item.id" backgroundType="2">
            <template v-slot:left>
               <view class="card-left__top">
                  <view>
                     {{ item.carNum }}
                     <text>张</text>
                  </view>
                  <view>
                     {{ item.carNum - item.taskNum }}
                     <text>张</text>
                  </view>
               </view>
               <view class="card-left__utils">
                  <u-button @tap.stop="qiangDanBtn(item)" text="抢单" type="primary" shape="circle" v-if="item.carNum - item.taskNum !== 0"></u-button>
               </view>
            </template>
            <template v-slot:right-top>
               <view class="right-top">
                  <view class="card-right-top-row">
                     <view>
                        <text>{{ item.deptName || '' }}</text>
                     </view>
                     <view>
                        <text>{{ item.coalName || '' }}</text>
                     </view>
                  </view>
                  <view class="card-right-top-row">
                     <view>
                        <text>剩余{{ item.carNum - item.taskNum }}张</text>
                     </view>
                  </view>
                  <view class="card-right-top-row">
                     <view>
                        <text>{{ item.filedName || '' }}</text>
                     </view>
                  </view>
                  <view class="card-right-top-row">
                     <view>
                        <text>{{ item.orderCode || '' }}</text>
                     </view>
                  </view>
               </view>
            </template>
         </card>
         <!-- 抢单提示模态框 -->
         <view class="qianDanModel">
            <u-modal :show="qiangDanShow" :title="qiangDanTitle" showCancelButton :content="qiangDanContent" @confirm="qiangDanConfirm" @cancel="qiangDanCancel"></u-modal>
         </view>
         <!-- 待预约提煤单 -->
         <combined-title title="待预约提煤单"></combined-title>
         <u-empty
            mode="data"
            icon="http://cdn.uviewui.com/uview/empty/data.png"
            textSize="30"
            iconSize="1000"
            v-if="driverBillOfLoadingData.list3 ? (driverBillOfLoadingData.list3.length == 0 ? true : false) : true"
         ></u-empty>
         <view>
            <!-- 待预约提煤单 -->
            <view class="daiYuYue" v-for="(item, index) in driverBillOfLoadingData.list3" :key="index">
               <view class="daiYuYueTop">
                  <view class="tmcode">提煤单编号:{{ item.code }}</view>
               </view>
               <view class="daiYuYueTable">
                  <!-- <view>{{ item.deptName }}</view>
                  <view>{{ item.coalName }}</view>
                  <view>已预约:{{ item.cars }} 车</view> -->
                  <uni-table border stripe emptyText="暂无更多数据">
                     <uni-tr>
                        <uni-th align="center">矿场</uni-th>
                        <uni-th align="center">煤种</uni-th>
                        <uni-th align="center">发运日期</uni-th>
                     </uni-tr>
                     <uni-tr>
                        <uni-td align="left">{{ item.deptName || '' }}</uni-td>
                        <uni-td align="left">{{ item.coalName || '' }}</uni-td>
                        <uni-td align="left">{{ item.sendDate || '' }}</uni-td>
                     </uni-tr>
                     <uni-tr style="margin: 0 auto;">
                        <uni-th align="center">煤场</uni-th>
                        <uni-th align="center">客户</uni-th>
                     </uni-tr>
                     <uni-tr style="margin: 0 auto;">
                        <uni-td align="left">{{ item.filedName || '' }}</uni-td>
                        <uni-td align="left">{{ item.customerName || '' }}</uni-td>
                     </uni-tr>
                  </uni-table>
               </view>
               <view><u-button text="预约" type="primary" @click="toAppointmentClick(item)"></u-button></view>
   <view class="">
      <view class="driver-index">
         <view class="driver-index-body">
            <!-- 待领取收发单 -->
            <view class="wait-collection"
               style="background: url('https://mx.jzeg.cn:9096/appimg/image/banner/diverbanner.png') no-repeat;background-size:contain">
            </view>
         </view>
            <!-- 引导页 -->
            <noob-tour></noob-tour>
            <!-- 自主配送界面 -->
            <!-- <view class="self-deliver">
               <view class="self-deliver_text">
                  创建自主配送单
               </view>
               <view class="self-deliver_btn">
                  <u-button text="去创建"
                     type="primary"
                     shape="cirle"
                     @click="selfDeliver"></u-button>
               </view>
            </view> -->
            <view class="collection-form">
               <view class="collection-form-item"
                  v-for="(item, index) in driverBillOfLoadingData.list1"
                  :key="index">
                  <view class="main-divider"></view>
                  <view class="first-line">
                     <view class="main-information">
                        <view class="sign">装</view>
                        <view class="filedname exceedHide">
                           <text
                              v-if="item.orderType == '外销' || item.orderType == '内销'||item.orderType == '外销退'  ">{{ item.deptName|| ''  }}</text>
                           <text
                              v-else-if="item.orderType == '外购' || item.orderType == '内购'||item.orderType == '外购退'  ">{{ item.customerId?item.customerName:item.customerNameCopy|| ''  }}</text>
                           <text v-else-if="item.orderType == '转出'|| item.orderType == '转入'">{{item.filedName}}
         <!-- 已预约提煤单 -->
         <combined-title title="已预约提煤单"></combined-title>
         <u-empty
            mode="data"
            icon="http://cdn.uviewui.com/uview/empty/data.png"
            textSize="30"
            iconSize="1000"
            v-if="driverBillOfLoadingData.list2 ? (driverBillOfLoadingData.list2.length == 0 ? true : false) : true"
         ></u-empty>
         <view class="Reserved">
            <view @click="list3CardIconClick(item)" class="haveYuYue" v-for="(item, index) in driverBillOfLoadingData.list2" :key="index">
               <view class="haveYuYueTop">
                  <text class="tmcode">提煤单编号:{{ item.code || '' }}</text>
               </view>
               <view class="haveYuYueCenter">
                  <view>{{ item.deptName || '' }}</view>
                  <view>{{ item.coalName || '' }}</view>
               </view>
               <view class="haveYuYueBottom">
                  <text>{{ item.yuYueSection || '时段' }}</text>
                           </text>
                        </view>
                     </view>
                     <view class="point-number">
                        <text class="residue">{{ item.carNum - item.taskNum }}</text>
                        <text>/{{ item.carNum }}</text>
                     </view>
                  </view>
                  <view class="first-extra">
                     <view class="main-information">
                        <view class="sign">卸</view>
                        <view class="filedname exceedHide">
                           <text v-if="item.orderType == '外销' || item.orderType == '内销'||item.orderType == '外销退' ">
                              {{ item.customerNameCopy ? item.customerNameCopy : item.customerName|| ''  }}
                           </text>
                           <text
                              v-else-if="item.orderType == '外购' || item.orderType == '内购'||item.orderType == '外购退'  ">{{ item.deptName|| ''  }}</text>
                           <text
                              v-else-if="item.orderType == '转出'|| item.orderType == '转入'">{{item.toFiledName}}
                           </text>
                        </view>
                     </view>
                  </view>
                  <!-- <view class="second-line">
                     <view class="coal-name">{{ item.coalName }}</view>
                  </view> -->
                  <view class="third-line">
                     <view class="time-icon"><u-icon name="clock"
                           color="#515151"
                           size="40"></u-icon></view>
                     <view class="send-date">{{ item.sendDate }}</view>
                     <view class="type">
                        <view class="coal-name">{{ item.productNames || item.productName }}</view>
                     </view>
                  </view>
                  <view class="fourth-line"
                     @click="qiangDanBtn(item)"
                     v-if="item.carNum - item.taskNum !== 0">
                     <!-- <view class="button-img">立即接单</view> -->
                     <u-button type="primary"
                        class="button-img">立即接单</u-button>
                  </view>
               </view>
            </view>
            <view class="white-block"></view>
            <!-- 接单提示模态框 -->
            <view class="qianDanModel">
               <u-modal :show="qiangDanShow"
                  :title="qiangDanTitle"
                  showCancelButton
                  :content="qiangDanContent"
                  @confirm="qiangDanConfirm"
                  @cancel="qiangDanCancel"></u-modal>
            </view>
            <!-- 待预约收发单 -->
            <view class="wait-appointment">
               <combined-title title="待预约收发单"></combined-title>
               <u-empty mode="data"
                  icon="http://cdn.uviewui.com/uview/empty/data.png"
                  text="暂无数据"
                  textSize="30"
                  iconSize="1000"
                  v-if="driverBillOfLoadingData.list3 ? (driverBillOfLoadingData.list3.length == 0 ? true : false) : true"></u-empty>
               <view class="appointment-form">
                  <view class="appointment-form-item"
                     v-for="(item, index) in driverBillOfLoadingData.list3"
                     :key="index">
                     <view class="main-divider"></view>
                     <view class="first-line">
                        <view class="main-information">
                           <view class="sign">装</view>
                           <view class="filedname exceedHide">
                              <text
                                 v-if="item.orderType == '外销' || item.orderType == '内销'||item.orderType == '外销退' ">{{ item.deptName }}</text>
                              <text
                                 v-else-if="item.orderType == '外购' || item.orderType == '内购'||item.orderType == '外购退' ">{{ item.customerName }}</text>
                              <text
                                 v-else-if="item.orderType == '转出'|| item.orderType == '转入'">{{item.filedName}}
                              </text>
                           </view>
                        </view>
                        <view class="map-icon"
                           @click.stop="skipMap(item)">
                           <view><u-icon name="map"
                                 color="#4978F0"
                                 size="40"></u-icon></view>
                        </view>
                     </view>
                     <view class="first-extra">
                        <view class="main-information">
                           <view class="sign">卸</view>
                           <view class="filedname exceedHide">
                              <text
                                 v-if="item.orderType == '外销' || item.orderType == '内销'||item.orderType == '外销退' ">{{ item.customerName }}</text>
                              <text
                                 v-else-if="item.orderType == '外购' || item.orderType == '内购'||item.orderType == '外购退'  ">{{ item.deptName }}</text>
                              <text
                                 v-else-if="item.orderType == '转出'|| item.orderType == '转入'">{{item.toFiledName}}</text>
                           </view>
                        </view>
                        <view class="map-icon"
                           @click.stop="skipMap(item)">
                           <view><u-icon name="map"
                                 color="#4978F0"
                                 size="40"></u-icon></view>
                        </view>
                     </view>
                     <view class="third-line">
                        <view class="clock">
                           <view class="time-icon"><u-icon name="clock"
                                 color="#515151"
                                 size="40"></u-icon></view>
                           <view class="send-date">{{ item.sendDate }}</view>
                        </view>
                        <view class="type">
                           <view class="coal-name">{{ item.productNames || item.productName }}</view>
                           <!-- <view class="order-type">{{ item.orderType }}</view> -->
                        </view>
                     </view>
                     <view class="fifth-line">
                        <view class="button-img"
                            v-if="item.isDanger === 1 && !item.idCardEscort"
                           @click.stop="cancelCerifCate(item)">
                           道路运输证
                        </view>
                        <view class="button-img"
                           @click.stop="cancelAppoint(item)">
                           请求退单
                        </view>
                        <view class="button-img"
                           @click.stop="toAppointmentClick(item)">立即预约</view>
                     </view>
                  </view>
               </view>
            </view>
            <!-- 请求退单弹窗 -->
            <view class="">
               <u-modal :show="cancelAppointShow"
                  title="退单确认"
                  showCancelButton
                  content="是否确认退单"
                  @confirm="cancelAppointConfirm"
                  @cancel="cancelAppointCancel"></u-modal>
            </view>
            <!-- 场内接单弹窗 -->
            <view class="">
               <u-modal :show="insideConnectShow"
                  title="接单选择"
                  showCancelButton
                  cancel-text="正常接单"
                  confirm-text="场内接单"
                  content="场内接单无需称皮,是否确认接单"
                  @confirm="insideConnectConfirm"
                  @cancel="insideConnectCancel"></u-modal>
            </view>
            <!-- 已预约收发单 -->
            <!-- 填写集装箱号 -->
               <view class="">
               <u-modal :show="enterCode"
                  title="集装箱号"
                  showCancelButton
                  content="请填写集装箱号"
                  @confirm="cancelCodeEnter"
                  @cancel="cancelCodeCancel">
                  <view style="    display: flex; align-items: center;">
                      <text>请输入:</text>   <u--input
                  style="border: 1px solid black"
                  v-model="enterCodeStr"
                        placeholder="请输入集装箱号"></u--input>
                  </view>
                  </u-modal>
            </view>
            <view class="Reserved">
               <combined-title title="已预约收发单"></combined-title>
               <u-empty mode="data"
                  icon="http://cdn.uviewui.com/uview/empty/data.png"
                  textSize="30"
                  iconSize="1000"
                  text="暂无数据"
                  v-if="driverBillOfLoadingData.list2 ? (driverBillOfLoadingData.list2.length == 0 ? true : false) : true"></u-empty>
               <view class="appointment-form">
                  <view class="appointment-form-item"
                     v-for="(item, index) in driverBillOfLoadingData.list2"
                     :key="index"
                     @click="list3CardIconClick(item)">
                     <view class="main-divider"></view>
                     <view class="first-line">
                        <view class="main-information">
                           <view class="sign">装</view>
                           <view class="filedname exceedHide">
                              <text
                                 v-if="item.orderType == '外销' || item.orderType == '内销'||item.orderType == '外销退' ">{{ item.deptName }}</text>
                              <text
                                 v-else-if="item.orderType == '外购' || item.orderType == '内购'||item.orderType == '外购退'  ">{{ item.customerName }}</text>
                              <text v-else-if="item.orderType == '转出'||item.orderType == '转入'">
                                 {{item.filedName}}
                              </text>
                           </view>
                        </view>
                        <view class="map-icon"
                           @click.stop="skipMap(item)">
                           <view><u-icon name="map"
                                 color="#4978F0"
                                 size="40"></u-icon></view>
                        </view>
                     </view>
                     <view class="second-line">
                        <view class="main-information">
                           <view class="sign">卸</view>
                           <view class="filedname exceedHide">
                              <text
                                 v-if="item.orderType == '外销' || item.orderType == '内销'||item.orderType == '外销退' ">{{ item.customerName }}</text>
                              <text
                                 v-else-if="item.orderType == '外购' || item.orderType == '内购'||item.orderType == '外购退' ">{{ item.deptName }}</text>
                              <text v-else-if="item.orderType == '转出'||item.orderType == '转入'">
                                 {{item.toFiledName}}
                              </text>
                           </view>
                        </view>
                        <view class="map-icon"
                           @click.stop="skipMap(item)">
                           <view><u-icon name="map"
                                 color="#4978F0"
                                 size="40"></u-icon></view>
                        </view>
                     </view>
                     <view class="third-line">
                        <view class="clock havedclock">
                           <view class="time-icon"><u-icon name="clock"
                                 color="#515151"
                                 size="40"></u-icon></view>
                           <view class="send-date">{{ item.yuYueSection|| ''  }}</view>
                        </view>
                        <view class="type">
                           <view class="coal-name">{{ item.productNames || item.productName }}</view>
                           <!-- <view class="order-type">{{ item.orderType }}</view> -->
                        </view>
                     </view>
                     <view class="fourth-line"
                        v-if="item.isDanger === 1">
                           <view class="button-img"
                              @click.stop="cancelCerifCate(item)">
                              道路运输证
                           </view>
                        <view class="button-img"
                           @click.stop="cancelAppoint(item)">
                           请求退单
                        </view>
                     </view>
                  </view>
               </view>
               <view class="white-block"></view>
            </view>
         </view>
      </view>
      <u-popup :show="show"
         @close="close"
         @open="open"
         mode="center"
         round="10">
         <view class="receiverPopup">
            <view class="image">
               <u--image
                  :src="previewImageSrc != null ? BaseUrl + previewImageSrc : ''"
                  width="80px"
                  height="80px"
                  >
                  <view slot="error"
                     style="font-size: 24rpx;">加载失败</view>
               </u--image>
            </view>
            <view class="tables">
               <uni-table border
                  stripe
                  type="selection"
                  @selection-change="selectionChange"
                  emptyText="暂无更多数据">
                  <uni-tr>
                     <uni-th align="center">押运员</uni-th>
                     <uni-th align="center">身份证号</uni-th>
                     <uni-th align="center">手机号</uni-th>
                  </uni-tr>
                  <uni-tr v-for="(item, index) in inspectData"
                     :key="item.id">
                     <uni-td align="center">{{ item.name.split("|")[0]  }}</uni-td>
                     <uni-td align="center">{{ item.name.split("|")[1]  }}</uni-td>
                     <uni-td align="center">{{ item.name.split("|")[2]  }}</uni-td>
                  </uni-tr>
               </uni-table>
            </view>
            <view class="receiverPopup__btn"><u-button text="确定"
                  type="primary"
                  @click="popClick"
                  :loading="ClickLoading"></u-button></view>
         </view>
      </u-popup>
   </view>
</template>
<script>
import { customerId } from '@/utils/status';
export default {
   props: {
      indexdriverBillOfLoadingData: {
         type: Object,
         default: {}
      }
   },
   watch: {
      indexdriverBillOfLoadingData: {
         handler(v) {
            this.driverBillOfLoadingData = v;
         },
         deep: true,
         immediate: true
      }
   },
   data() {
      return {
         driverBillOfLoadingData: {},
         // 抢单模态框
         qiangDanShow: false,
         qiangDanTitle: '抢单提示',
         qiangDanContent: '',
         qiangDanOrderPlanId: null,
         fleetId: '',
         xsUserId: '',
         customerId: ''
      };
   },
   onShow() {
      this.init();
   },
   methods: {
      init() {
         this.qiangDanList();
   import { customerId } from '@/utils/status';
   import combinedTitle from '@/components/combined-title/combined-title.vue';
   import previewImage from '@/components/kxj-previewImage/kxj-previewImage.vue';
   import { mapState } from 'vuex'
   import { BaseUrl } from '@/api/publicInterface.js'
   export default {
      components: {
         combinedTitle,
         previewImage,
      },
      // 司机首页列表
      qiangDanList() {
         uni.showLoading({
            title: '加载中...'
         });
         this.$reqGet('qiangDanList').then(res => {
            uni.hideLoading();
            this.driverBillOfLoadingData = res.data;
         });
      },
      // 抢单按钮
      qiangDanBtn(value) {
         if (value.tmcCount == '0') {
            this.qiangDan(value.orderPlanId, value.fleetId, value.customerId === null ? '0' : value.customerId, value.xsUserId === null ? '0' : value.xsUserId);
         } else {
            this.qiangDanOrderPlanId = value.orderPlanId;
            this.fleetId = value.fleetId;
            this.customerId = value.customerId === null ? '0' : value.customerId;
            this.xsUserId = value.xsUserId === null ? '0' : value.xsUserId;
            this.qiangDanShow = true;
            this.qiangDanContent = `已抢${value.tmcCount}单,确定抢单?`;
      props: {
         indexdriverBillOfLoadingData: {
            type: Object,
            default: {}
         }
      },
      // 抢单模态框
      qiangDanConfirm() {
         this.qiangDanContent = '';
         this.qiangDanShow = false;
         this.qiangDan(this.qiangDanOrderPlanId, this.fleetId, this.customerId, this.xsUserId);
      watch: {
         indexdriverBillOfLoadingData: {
            handler(v) {
               this.driverBillOfLoadingData = v;
            },
            deep: true,
            immediate: true
         }
      },
      qiangDanCancel() {
         this.qiangDanShow = false;
      computed: {
         ...mapState(['driverTourImgList']),
         roleType() {
            return uni.getStorageSync('roleType');
         },
      },
      // 抢单请求
      qiangDan(id, fleetId, customerId, xsUserId) {
         this.$reqPost('qiangDan', { orderPlanId: id, fleetId: fleetId, customerId: customerId, xsUserId: xsUserId }, 'params')
            .then(res => {
               if (res.code == 0) {
                  this.$u.toast('抢单成功');
      data() {
         return {
            show: false,
            BaseUrl,
            yaList:[],
            inspectData:[],
            activeObj:{},
            driverBillOfLoadingData: {
               list1: [],
               list2: [],
               list3: []
            },
            // 接单模态框
            qiangDanShow: false,
            enterCode:false,
            enterCodeStr:'',
            qiangDanTitle: '接单提示',
            qiangDanContent: '',
            qiangDanOrderPlanId: null,
            isFirstLogin: true, //是否是第一次登录
            phone: "",
            isFirstTime: false, //是否是登录进入首页,还是别的页面返回 false是登录 true是别的页面
            cancelAppointShow: false, //确认退单弹窗控制
            cancelAppointId: '',
            insideConnectShow: false,
            orderPlanId: '',
            fleetId: '',
            customerId: '',
            xsUserId: '',
            filedId: '',
            previewImageSrc:"",
         };
      },
      onShow() {
         this.init();
      },
      methods: {
         open() {},
         close() {
            this.show = false;
         },
         selectionChange(e) {
            this.yaList= e.detail.index.map(item=>{
               return this.inspectData[item]
            })
         },
         popClick(){
            let data=this.yaList.map(item=>{
               return  item.name
            })
            let paramsData={
               idCardEscort:data.join(','),roadTransportId:this.yaList[0].roadTransportId,id: this.yaList[0].Id
            }
            this.$reqPut('saveMyEscort', paramsData, 'json')
               .then(res => {
                  if (res.code == 0) {
                     this.$u.toast('添加成功');
                     this.qiangDanList();
                     this.show=false
                  } else {
                     this.$u.toast(res.msg ? res.msg : '添加失败');
                  }
               })
         },
         // 跳转地图
         skipMap(val) {
            uni.navigateTo({
               url: `/pages/public-page/mapRoute/mapRoute?customerId=${val.customerId}&filedId=${val.filedId}&orderType=${val.orderType}${
               val.toFiledId ? `&toFiledId=${val.toFiledId}&filedId=${val.filedId}` : ''
            }`
            });
         },
         init() {
            this.inspectData=[]
            this.qiangDanList();
         },
         // 司机首页列表
         qiangDanList() {
            uni.showLoading({
               title: '加载中...'
            });
            this.$reqGet('qiangDanList').then(res => {
               uni.hideLoading();
               this.driverBillOfLoadingData = res.data;
            });
         },
         // 接单按钮
         qiangDanBtn(value) {
            //是否可以场内接单,1 可以2不可以
            if (value.isInsideConnect === 1) {
               this.insideConnectShow = true
               this.orderPlanId = value.orderPlanId
               this.fleetId = value.fleetId
               this.customerId = !value.customerId ? '0' : value.customerId
               this.xsUserId = !value.xsUserId ? '0' : value.xsUserId
               this.filedId = value.filedId
            } else {
               if (value.tmcCount == '0') {
                  this.qiangDan(value.orderPlanId, value.fleetId, !value.customerId ? '0' : value.customerId,
                     !value.xsUserId ? '0' : value.xsUserId);
               } else {
                  this.$u.toast(res.msg ? res.msg : '抢单失败');
                  this.qiangDanOrderPlanId = value.orderPlanId;
                  this.fleetId = value.fleetId;
                  this.customerId = !value.customerId ? '0' : value.customerId;
                  this.xsUserId = !value.xsUserId ? '0' : value.xsUserId;
                  this.qiangDanShow = true;
                  this.qiangDanContent = `已接${value.tmcCount}单,确定接单?`;
               }
            }
         },
         // 接单模态框
         qiangDanConfirm() {
            this.qiangDanContent = '';
            this.qiangDanShow = false;
            this.qiangDan(this.qiangDanOrderPlanId, this.fleetId, this.customerId, this.xsUserId);
         },
         qiangDanCancel() {
            this.qiangDanShow = false;
         },
         // 接单请求
         qiangDan(id, fleetId, customerId, xsUserId) {
            uni.showLoading({
               title: '加载中'
            })
            this.$reqPost('qiangDan', {
                  orderPlanId: id,
                  fleetId: fleetId,
                  customerId: customerId,
                  xsUserId: xsUserId
               }, 'params')
               .then(res => {
                  uni.hideLoading()
                  if (res.code == 0) {
                     this.$u.toast('接单成功');
                  } else {
                     this.$u.toast(res.msg ? res.msg : '接单失败');
                  }
               })
               .then(() => {
                  setTimeout(() => {
                     this.qiangDanList();
                  }, 1500);
               }).catch(e => {
                  uni.hideLoading()
               })
         },
         insideConnectHandle(orderPlanId, fleetId, customerId, xsUserId, filedId) {
            uni.showLoading({
               title: '加载中'
            })
            this.$reqPost('insideConnect', {
               orderPlanId,
               fleetId,
               customerId,
               xsUserId,
               filedId
            }, 'params').then(res => {
               uni.hideLoading()
               if (res.code == 0) {
                  this.$u.toast('场内接单成功');
               } else {
                  this.$u.toast(res.msg ? res.msg : '场内接单失败');
               }
            })
            .then(() => {
         },
         list3CardIconClick(value) {
            uni.navigateTo({
               url: `/subPages/bill-of-lading-details/bill-of-lading-details?orderPlanId=${value.id}&yyId=${value.yyId}&orderType=${value.orderType}`
            });
         },
         // 收发单详情
         cardBodyClick(name) {
            uni.navigateTo({
               url: `/subPages/bill-of-lading-details/bill-of-lading-details?orderPlanId=${name}`
            });
         },
         // 请求退单
         cancelAppoint(item) {
            if (item.status >= 3) {
               this.$u.toast('当前状态不可退单')
               return
            }
            this.cancelAppointShow = true
            this.cancelAppointId = item.id
         },
         cancelCerifCate(value){
            this.$reqGet('getMyEscortList', { customerId: value.customerId }).then(res => {
               this.inspectData=[]
               if (res.code == 0) {
                  this.previewImageSrc=res.data.certificateImg
                  this.inspectData=res.data.persons.map(item=>{
                     return {name:item,roadTransportId:res.data.id,Id: value.id}
                  })
                  this.show=true
               } else {
                  this.$u.toast(res.msg ? res.msg : '请添加道路运输证');
                  uni.navigateTo({
                     url: '/pages/driver-page/drvier-my/certifiCate/certifiCate'
                  })
               }
            })
         },
         // 退单弹窗确认
         cancelAppointConfirm() {
            this.cancelAppointShow = false
            uni.showLoading({
               title: '加载中'
            })
            this.$reqPost('cancelAppoint', { takeCoalId: this.cancelAppointId }, 'params').then(res => {
               uni.hideLoading()
               if (res.code == 0) {
                  this.$u.toast('退单成功');
               } else {
                  this.$u.toast(res.msg ? res.msg : '退单失败');
               }
            }).then(() => {
               setTimeout(() => {
                  this.qiangDanList();
               }, 1000);
            });
      },
      list3CardIconClick(value) {
         uni.navigateTo({
            url: `/pages/driver-page/driver-index/bill-of-lading-details/bill-of-lading-details?orderPlanId=${value.id}&yyId=${value.yyId}`
         });
      },
      // 提煤单详情
      cardBodyClick(name) {
         uni.navigateTo({
            url: `/pages/driver-page/driver-index/bill-of-lading-details/bill-of-lading-details?orderPlanId=${name}`
         });
      },
      // 去预约
      toAppointmentClick(value) {
         uni.navigateTo({
            url: `/pages/driver-page/appointment/appointment?takeCoalId=${value.id}&filedId=${value.filedId}&deptId=${value.deptId}&sendDate=${value.sendDate}`
         });
            }).catch(e => {
               uni.hideLoading()
            })
         },
         // 退单弹窗取消
         cancelAppointCancel() {
            this.cancelAppointShow = false
         },
         insideConnectCancel() {
            this.insideConnectShow = false
            this.qiangDan(this.orderPlanId, this.fleetId, this.customerId, this.xsUserId)
         },
         // 场内接单
         insideConnectConfirm() {
            this.insideConnectShow = false
            this.insideConnectHandle(this.orderPlanId, this.fleetId, this.customerId, this.xsUserId, this.filedId)
         },
         // 去预约
         toAppointmentClick(value) {
            // 由于自主配送单 是外购单 但是不需要填写原发为1不需要填写原发
            uni.setStorageSync('isNeedOrigin', value.orderType === '外购' && value.isSpecial === 1 ? 1 : 0);
            //判断是不是集装箱 是否需要输入
            this.activeObj = value;
            if(value.isDanger === 1){
               if(!value.idCardEscort){
                  this.$u.toast('请选择道路运输证司机!');
                  this.cancelCerifCate(value);
                  return
               }
            }
            if(value.isContainerNum){
              this.enterCode = true;
            }else{
              this.enterCode = false;
                 if (value.orderType === '外购') {
               uni.navigateTo({
                  url: `/subPages/bill-of-lading-details/originInfo/originInfo?orderPlanId=${value.id}&filedId=${value.filedId}&deptId=${value.deptId}&sendDate=${value.sendDate}&isSpecial=${value.isSpecial}&isWeight=${value.isWeight}`
               });
            } else {
               uni.navigateTo({
                  url: `/pages/driver-page/appointment/appointment?takeCoalId=${value.id}&filedId=${value.filedId}&deptId=${value.deptId}&sendDate=${value.sendDate}`
               });
            }
              }
         },
         // 自主配送
         selfDeliver() {
            uni.navigateTo({
               url: '/pages/driver-page/driver-index/SelfDelivery/SelfDelivery'
            })
         },
         cancelCodeEnter(){
            console.log(this.activeObj,'tmid')
            this.activeObj.containerNumber = this.enterCodeStr;
             this.$reqPut('addContainer',{
               id:this.activeObj.id,
               containerNumber:this.activeObj.containerNumber
            }).then(res=>{
               this.$u.toast('操作成功');
               this.enterCodeStr = '';
               this.enterCode = false;
            }).catch(err=>{
            }).finally(() => {
               if (this.activeObj.orderType === '外购') {
               uni.navigateTo({
                  url: `/subPages/bill-of-lading-details/originInfo/originInfo?orderPlanId=${this.activeObj.id}&filedId=${this.activeObj.filedId}&deptId=${this.activeObj.deptId}&sendDate=${this.activeObj.sendDate}&isSpecial=${this.activeObj.isSpecial}&isWeight=${this.activeObj.isWeight}`
               });
            } else {
               uni.navigateTo({
                  url: `/pages/driver-page/appointment/appointment?takeCoalId=${this.activeObj.id}&filedId=${this.activeObj.filedId}&deptId=${this.activeObj.deptId}&sendDate=${this.activeObj.sendDate}`
               });
            }
            })
         },
         cancelCodeCancel(){
            this.enterCode = false;
            this.enterCodeStr = '';
               if (this.activeObj.orderType === '外购') {
               uni.navigateTo({
                  url: `/subPages/bill-of-lading-details/originInfo/originInfo?orderPlanId=${this.activeObj.id}&filedId=${this.activeObj.filedId}&deptId=${this.activeObj.deptId}&sendDate=${this.activeObj.sendDate}&isSpecial=${this.activeObj.isSpecial}&isWeight=${this.activeObj.isWeight}`
               });
            } else {
               uni.navigateTo({
                  url: `/pages/driver-page/appointment/appointment?takeCoalId=${this.activeObj.id}&filedId=${this.activeObj.filedId}&deptId=${this.activeObj.deptId}&sendDate=${this.activeObj.sendDate}`
               });
            }
         }
      }
   }
};
   };
</script>
<style lang="scss" scoped>
::v-deep.driver-index {
   width: 94%;
   margin: 0 auto;
   // 主体
   .driver-index-body {
      margin-bottom: vww(56);
      // 卡片样式
      .card-left__top {
         margin: vww(10) 0;
         padding-left: vww(4);
         display: flex;
         flex-direction: column;
         flex-wrap: wrap;
         justify-content: flex-start;
         height: vww(80);
         text-align: center;
         color: #ffffff;
         &:after {
            content: '';
            position: absolute;
            width: 5px;
            height: vww(80);
            background-color: #fff;
            left: vww(81);
         }
         view {
            font-size: vww(48);
            font-weight: 800;
            width: 50%;
            display: flex;
            flex-direction: column;
            justify-content: flex-start;
            align-items: center;
            text {
               font-size: vww(16);
               font-weight: bold;
            }
         }
      }
      .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;
         }
      }
      .right-top {
         display: flex;
         flex-flow: column nowrap;
         align-content: space-around;
         .card-right-top-row {
            margin-top: vww(8);
            text-align: center;
            &:nth-child(1) {
               display: flex;
               justify-content: space-between;
               view {
                  text-align: center;
                  width: 50%;
               }
            }
         }
<style lang="scss"
   scoped>
   @mixin formItem {
      width: vww(345);
      height: vww(150);
      margin-top: vww(5);
      background: #ffffff;
      box-shadow: 4rpx 6rpx 25rpx 0rpx rgba(73, 120, 240, 0.15);
      border-radius: 20rpx;
      position: relative;
      display: flex;
      flex-direction: column;
      justify-content: space-around;
   }
   @mixin firstLine {
      width: 94%;
      height: vww(68);
      margin: vww(18) vww(16) 0 vww(16);
      display: flex;
      justify-content: space-between;
   }
   @mixin thirdLine {
      width: 30%;
      height: vww(68);
      margin-left: vww(15);
      display: flex;
      justify-content: space-between;
      align-items: center;
      .send-date {
         min-width: 170rpx;
         height: 24rpx;
         line-height: 24rpx;
         font-size: 28rpx;
         font-weight: 300;
         color: #515151;
      }
      // 待预约
      .daiYuYue {
         margin-top: vww(24);
         font-size: 16px;
         font-weight: 300;
         &Top {
            background-color: #f5f5f5;
            height: vww(60);
            padding-left: vww(12);
            line-height: vww(31);
            border: vww(1) solid #eeeeee;
            font-weight: 400;
            .tmcode {
               word-break: break-all;
               width: 100%;
            }
         }
         &Table {
            .uni-table {
               min-width: 94% !important;
               .uni-table-tr {
                  padding: 0;
                  .uni-table-th {
                     width: 33.3%;
                     line-height: 58rpx;
                     padding: vww(5) vww(10);
                     color: #111111;
                     font-weight: 400;
                     background: #f5f5f5;
                  }
                  .uni-table-td {
                     font-weight: 400;
                     line-height: 58rpx;
                     padding: vww(5) vww(10);
                     color: #111111;
                  }
               }
            }
         }
      }
      .Reserved {
         .white-block {
      .havedclock {
         width: 70% !important;
         margin-right: 0 !important;
         .send-date {
            width: 100%;
            height: vww(50);
            text-align: center;
            color: #333;
            margin-top: vww(10);
         }
      }
      // 已预约
      .haveYuYue {
         font-size: 16px;
         font-weight: 300;
         &Top {
            background-color: #f5f5f5;
            height: vww(60);
            padding-left: vww(12);
            line-height: vww(31);
            border: vww(1) solid #eeeeee;
            font-weight: 400;
            .tmcode {
               word-break: break-all;
               width: 100%;
            }
         }
         &Center {
            border: vww(1) solid #eeeeee;
            border-top: none;
            display: flex;
            flex: 1;
            height: vww(40);
            line-height: vww(40);
            view {
               border-right: vww(1) solid #eeeeee;
               width: 33.3%;
               text-align: center;
               &:nth-child(3) {
                  border-right: none;
               }
            }
         }
         &Bottom {
            border: vww(1) solid #eeeeee;
            border-top: none;
            height: vww(40);
            line-height: vww(40);
            text-align: center;
            margin-left: vww(12);
         }
      }
   }
}
</style>
   @mixin flex {
      display: flex;
      justify-content: space-between;
      align-items: center;
   }
   @mixin fourthLine {
      width: 64%;
      height: vww(68);
      display: flex;
      align-items: center;
      position: relative;
      left: vww(102);
      bottom: vww(3);
      .button-img {
         width: vww(122);
         height: vww(41);
         background: url('https://mx.jzeg.cn:9096/appimg/image/banner/button.png') no-repeat;
         background-size: cover;
         font-size: 28rpx;
         font-weight: 300;
         color: #ffffff;
         text-align: center;
         line-height: vww(40);
      }
   }
   .receiverPopup {
      height: vww(220);
      width: 700rpx;
      .image{
         width: 100%;
         height: vww(110);
         display: flex;
         align-items: center;
         justify-content: center;
      }
      .tables{
         width: 100%;
      }
      .receiverPopup__title {
         margin: vww(10) auto 0;
         width: 80%;
         text-align: center;
      }
      &__btn {
         margin: vww(10) auto;
         width: 50%;
         .u-button {
            height: vww(20);
         }
      }
   }
   /deep/.u-button {
      width: 100%;
      height: 28px !important;
      line-height: 40px;
      padding: 0 12px;
      font-size: 28rpx;
      font-weight: 300;
      color: #ffffff;
      background: #497bfb !important;
      letter-spacing: 4rpx;
      border-radius: 37rpx 37rpx 37rpx 37rpx !important;
      box-shadow: 2rpx 3rpx 13rpx 0rpx rgba(43, 98, 239, 0.5), 0rpx 0rpx 9rpx 0rpx rgba(247, 250, 253, 0.29);
   }
   .exceedHide {
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
   }
   ::v-deep.driver-index {
      width: 100%;
      margin: 0 auto;
      // 主体
      .driver-index-body {
         // margin-bottom: vww(56);
         // 待领取收发单
         .wait-collection {
            width: 100%;
            height: 600rpx;
         }
         // 自主配送
         .self-deliver {
            position: relative;
            top: vww(-120);
            width: 88%;
            height: vww(50);
            margin: vww(8) auto;
            padding: 0 vww(8);
            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;
         }
         .collection-form {
            width: vww(345);
            margin: 0 vww(15);
            position: relative;
            top: vww(-120);
            .collection-form-item {
               width: vww(345);
               height: vww(185);
               margin-top: vww(5);
               background: #ffffff;
               box-shadow: 4rpx 6rpx 25rpx 0rpx rgba(73, 120, 240, 0.15);
               border-radius: 20rpx;
               position: relative;
               display: flex;
               flex-direction: column;
               justify-content: space-around;
               .main-divider {
                  width: 560rpx;
                  height: 2rpx;
                  background: #e3e3e3;
                  position: absolute;
                  top: 122rpx;
                  left: 128rpx;
               }
               .first-line {
                  width: 94%;
                  height: vww(68);
                  margin: vww(18) vww(16) 0 vww(16);
                  display: flex;
                  justify-content: space-between;
                  .main-information {
                     width: 88%;
                     height: vww(28);
                     display: flex;
                     justify-content: flex-start;
                     align-items: center;
                     .sign {
                        width: vww(28);
                        height: vww(28);
                        line-height: vww(28);
                        text-align: center;
                        background: url('https://mx.jzeg.cn:9096/appimg/image/banner/blueblock.png') no-repeat;
                        background-size: contain;
                        font-size: 30rpx;
                        font-weight: 400;
                        color: #ffffff;
                        margin-right: vww(20);
                     }
                  }
                  .point-number {
                     position: absolute;
                     right: 0;
                     width: 15%;
                     text {
                        font-size: 24rpx;
                        font-weight: 400;
                        color: #c78a64;
                     }
                     .residue {
                        font-size: 40rpx;
                        font-weight: 400;
                        color: #f81414;
                     }
                  }
               }
               .first-extra {
                  @include firstLine;
                  .main-information {
                     width: 100%;
                     height: vww(28);
                     display: flex;
                     justify-content: flex-start;
                     align-items: center;
                     .sign {
                        width: vww(28);
                        height: vww(28);
                        line-height: vww(28);
                        text-align: center;
                        background: url('https://mx.jzeg.cn:9096/appimg/image/banner/redblock.png') no-repeat;
                        background-size: contain;
                        font-size: 30rpx;
                        font-weight: 400;
                        color: #ffffff;
                        margin-right: vww(20);
                     }
                  }
               }
               .second-line {
                  width: 100%;
                  height: vww(68);
                  margin-left: vww(21);
                  display: flex;
                  justify-content: flex-start;
                  align-items: center;
                  .coal-name {
                     min-width: vww(50);
                     height: 35rpx;
                     font-size: 30rpx;
                     font-weight: 300;
                     color: #515151;
                     position: relative;
                     display: flex;
                     justify-content: flex-start;
                  }
                  .black-block {
                     min-width: vww(50);
                     height: 30rpx;
                     font-size: 30rpx;
                     font-weight: 300;
                     color: #515151;
                     position: relative;
                     top: vww(2);
                     display: flex;
                     justify-content: center;
                     align-items: center;
                     .black-bar {
                        width: 2rpx;
                        height: 30rpx;
                        background: #515151;
                     }
                  }
                  .coal-type {
                     min-width: vww(50);
                     height: 30rpx;
                     font-size: 30rpx;
                     font-weight: 300;
                     color: #515151;
                     text-align: center;
                  }
               }
               .third-line {
                  width: 100%;
                  height: vww(68);
                  margin-left: vww(21);
                  display: flex;
                  justify-content: flex-start;
                  align-items: center;
                  .send-date {
                     min-width: 146rpx;
                     height: 24rpx;
                     margin-left: vww(14);
                     margin-right: vww(56);
                     line-height: 24rpx;
                     font-size: 28rpx;
                     font-weight: 300;
                     color: #515151;
                  }
                  .type {
                     flex: 1;
                     margin-right: vww(10);
                     display: flex;
                     justify-content: center;
                     align-items: center;
                     .coal-name {
                        width: 120rpx;
                        height: 42rpx;
                        line-height: 42rpx;
                        border: 2px solid #035cfb;
                        border-radius: 4rpx;
                        font-size: 28rpx;
                        font-weight: 300;
                        color: #035cfb;
                        text-align: center;
                        padding: vww(3) vww(11);
                        white-space: nowrap;
                        overflow: hidden;
                        text-overflow: ellipsis;
                     }
                  }
               }
               // 待预约
               .fourth-line {
                  width: 30%;
                  height: vww(68);
                  margin-left: vww(15);
                  margin-top: vww(5);
                  display: flex;
                  justify-content: flex-end;
                  position: relative;
                  left: vww(203);
                  bottom: vww(3);
               }
            }
         }
         .wait-appointment,
         .Reserved {
            position: relative;
            top: vww(-120);
         }
         .appointment-form {
            width: vww(345);
            margin: 0 vww(15);
            .appointment-form-item {
               @include formItem;
               height: vww(191);
               justify-content: space-between;
               overflow: hidden;
               .main-divider {
                  width: 560rpx;
                  height: 1rpx;
                  background: #e3e3e3;
                  position: absolute;
                  top: 122rpx;
                  left: 128rpx;
               }
               .first-line {
                  position: relative;
                  @include firstLine;
                  .main-information {
                     width: 100%;
                     height: vww(28);
                     display: flex;
                     justify-content: flex-start;
                     align-items: center;
                     .sign {
                        width: vww(28);
                        height: vww(28);
                        line-height: vww(28);
                        text-align: center;
                        background: url('https://mx.jzeg.cn:9096/appimg/image/banner/blueblock.png') no-repeat;
                        background-size: contain;
                        font-size: 30rpx;
                        font-weight: 400;
                        color: #ffffff;
                        margin-right: vww(20);
                     }
                     .filedname {
                        width: 80%;
                     }
                  }
                  .map-icon {
                     position: absolute;
                     right: vww(-1);
                     top: vww(2)
                  }
               }
               .first-extra {
                  @include firstLine;
                  position: relative;
                  .main-information {
                     width: 100%;
                     height: vww(28);
                     display: flex;
                     justify-content: flex-start;
                     align-items: center;
                     .sign {
                        width: vww(28);
                        height: vww(28);
                        line-height: vww(28);
                        text-align: center;
                        background: url('https://mx.jzeg.cn:9096/appimg/image/banner/redblock.png') no-repeat;
                        background-size: contain;
                        font-size: 30rpx;
                        font-weight: 400;
                        color: #ffffff;
                        margin-right: vww(20);
                     }
                     .filedname {
                        width: 80%;
                     }
                  }
                  .map-icon {
                     position: absolute;
                     right: vww(-1);
                     top: vww(2)
                  }
               }
               .second-line {
                  @include firstLine;
                  margin: 0;
                  margin-left: vww(16);
                  position: relative;
                  .main-information {
                     width: 100%;
                     height: vww(28);
                     display: flex;
                     justify-content: flex-start;
                     align-items: center;
                     .sign {
                        width: vww(28);
                        height: vww(28);
                        line-height: vww(28);
                        text-align: center;
                        background: url('https://mx.jzeg.cn:9096/appimg/image/banner/redblock.png') no-repeat;
                        background-size: contain;
                        font-size: 30rpx;
                        font-weight: 400;
                        color: #ffffff;
                        margin-right: vww(20);
                     }
                     .filedname {
                        width: 80%;
                     }
                  }
                  .map-icon {
                     position: absolute;
                     right: vww(-1);
                     top: vww(2)
                  }
               }
               .third-line {
                  @include thirdLine;
                  width: 94%;
                  justify-content: flex-start;
                  margin-left: vww(18);
                  .clock {
                     width: 40%;
                     height: vww(21);
                     margin-right: vww(50);
                     line-height: vww(21);
                     @include flex;
                     justify-content: flex-start;
                     .send-date {
                        margin-left: vww(14);
                     }
                  }
                  .type {
                     flex: 1;
                     margin-right: vww(10);
                     display: flex;
                     justify-content: center;
                     align-items: center;
                     .order-type,
                     .coal-name {
                        width: 120rpx;
                        height: 42rpx;
                        line-height: 42rpx;
                        border: 2px solid #035cfb;
                        border-radius: 4rpx;
                        font-size: 28rpx;
                        font-weight: 300;
                        color: #035cfb;
                        text-align: center;
                        padding: vww(3) vww(11);
                        white-space: nowrap;
                        overflow: hidden;
                        text-overflow: ellipsis;
                     }
                  }
               }
               .fourth-line {
                  @include fourthLine;
               }
               .fifth-line {
                  height: vww(68);
                  display: flex;
                  align-items: center;
                  .button-img {
                     width: vww(122);
                     height: vww(41);
                     background: url('https://mx.jzeg.cn:9096/appimg/image/banner/button.png') no-repeat;
                     background-size: cover;
                     font-size: 28rpx;
                     font-weight: 300;
                     color: #ffffff;
                     text-align: center;
                     line-height: vww(40);
                  }
               }
            }
         }
         .Reserved {
            .fourth-line {
               justify-content: flex-end;
               letter-spacing: vww(2);
               left: 223rpx !important;
            }
            .white-block {
               width: 100%;
               height: vww(50);
               line-height: vww(50);
               text-align: center;
               color: #333;
               margin-top: vww(10);
            }
         }
         .noob-tour {
            margin-bottom: vww(10);
            position: relative;
            top: -240rpx;
         }
      }
   }
</style>