<template> 
 | 
  <GlobalWindow title="车辆签到" :visible.sync="isShowModal" :showConfirm="false" width="800px"> 
 | 
    <div class="queuing_modal"> 
 | 
      <div class="df_ac mb20"> 
 | 
        <span>搜索车辆:</span> 
 | 
        <el-input class="flex1 mr20" v-model="carCodeFront" placeholder="请输入车牌号"></el-input> 
 | 
        <el-button type="primary" @click="getList(1)">查找</el-button> 
 | 
        <el-button @click="reset">重置</el-button> 
 | 
      </div> 
 | 
      <div class="list"> 
 | 
        <div class="item" v-for="item in dataList" :key="item.id"> 
 | 
          <div class="head df_sb"> 
 | 
            <div v-if="item.carCodeFront" class="code"> 
 | 
              <span>{{ item.carCodeFront.slice(0, 1) }}</span> 
 | 
              <span>{{ item.carCodeFront.slice(1, 2) }}</span> 
 | 
              <span>·</span> 
 | 
              <span>{{ item.carCodeFront.slice(2) }}</span> 
 | 
            </div> 
 | 
            <div class="status" :class="{ red: item.status == 0 }">{{ statusMap[item.status] }}</div> 
 | 
          </div> 
 | 
          <div class="info"> 
 | 
            <div v-if="item.billCode" class="ite"> 
 | 
              <span>运输单号:</span> 
 | 
              <span>{{ item.billCode }}</span> 
 | 
            </div> 
 | 
            <div v-else class="ite"> 
 | 
              <span>合同单号:</span> 
 | 
              <span>{{ item.contractNum }}</span> 
 | 
            </div> 
 | 
            <div class="ite"> 
 | 
              <span>驾驶员:</span> 
 | 
              <span>{{ item.driverName }}</span> 
 | 
            </div> 
 | 
            <div class="ite"> 
 | 
              <span>手机号:</span> 
 | 
              <span>{{ item.drivierPhone }}</span> 
 | 
            </div> 
 | 
            <div class="ite"> 
 | 
              <span>总运输量:</span> 
 | 
              <span>{{ item.totalNum || item.ioQty }}万支</span> 
 | 
            </div> 
 | 
            <div v-if="item.type != 4" class="ite" style="width: 66%"> 
 | 
              <span>运输公司:</span> 
 | 
              <span>{{ item.carrierName }}</span> 
 | 
            </div> 
 | 
          </div> 
 | 
          <div class="footer df_sb"> 
 | 
            <div @click="handleDetail(item)" v-if="item.billCode" class="detail">运单详情</div> 
 | 
            <div @click="subDetail(item)" v-else class="detail">预约详情</div> 
 | 
            <el-button type="primary" @click="handleCall(item)">签到</el-button> 
 | 
          </div> 
 | 
        </div> 
 | 
      </div> 
 | 
      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="pagination"> 
 | 
      </pagination> 
 | 
    </div> 
 | 
    <WaybillDetailRef v-if="isShowDetail" ref="WaybillDetailRef" /> 
 | 
    <DriverDetail v-if="isShowDriver" ref="DriverDetailRef" /> 
 | 
  </GlobalWindow> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
import GlobalWindow from '@/components/common/GlobalWindow' 
 | 
import Pagination from '@/components/common/Pagination' 
 | 
import WaybillDetailRef from "./WaybillDetail.vue" 
 | 
import DriverDetail from "@/views/task/driverDetail.vue" 
 | 
import { platformJobPage, platformJobSign } from '@/api' 
 | 
import { statusMap } from '../config' 
 | 
import { Message } from 'element-ui' 
 | 
export default { 
 | 
  components: { 
 | 
    GlobalWindow, 
 | 
    Pagination, 
 | 
    WaybillDetailRef, 
 | 
    DriverDetail 
 | 
  }, 
 | 
  data() { 
 | 
    return { 
 | 
      statusMap, 
 | 
      isShowModal: false, 
 | 
      isShowDetail: false, 
 | 
      isShowDriver: false, 
 | 
      subLoading: false, 
 | 
      pagination: { 
 | 
        total: 0, 
 | 
        pageSize: 10, 
 | 
        page: 1 
 | 
      }, 
 | 
      carCodeFront: '', 
 | 
      // activePlat: {}, 
 | 
      dataList: [] 
 | 
  
 | 
    } 
 | 
  }, 
 | 
  methods: { 
 | 
    handleCall(item) { 
 | 
      // const activePlatform = this.activePlat 
 | 
      platformJobSign({ jobId: item.id, signType: '2' }).then(res => { 
 | 
        if (res.code == 200) { 
 | 
          Message.success('签到成功') 
 | 
          this.$emit('success') 
 | 
          this.getList() 
 | 
        } 
 | 
      }) 
 | 
    }, 
 | 
    getList(page) { 
 | 
      const { activePlat, pagination, carCodeFront } = this 
 | 
      if (page) { 
 | 
        pagination.page = page 
 | 
      } 
 | 
      platformJobPage({ 
 | 
        model: { platformGroupId: activePlat.id, queryStatus: '0,1', carCodeFront }, 
 | 
        page: pagination.page, 
 | 
        capacity: pagination.pageSize 
 | 
      }).then(res => { 
 | 
        this.dataList = res.records 
 | 
        this.pagination.total = res.total 
 | 
      }) 
 | 
    }, 
 | 
    subDetail(row) { 
 | 
      this.isShowDriver = true 
 | 
      this.$nextTick(() => { 
 | 
        this.$refs.DriverDetailRef.id = row.bookId 
 | 
        this.$refs.DriverDetailRef.type = row.objType 
 | 
        this.$refs.DriverDetailRef.getDetail() 
 | 
        this.$refs.DriverDetailRef.isShowModal = true 
 | 
      }) 
 | 
    }, 
 | 
    handleDetail(row) { 
 | 
      this.isShowDetail = true 
 | 
      this.$nextTick(() => { 
 | 
        this.$refs.WaybillDetailRef.isShowModal = true 
 | 
        this.$refs.WaybillDetailRef.id = row.id 
 | 
        this.$refs.WaybillDetailRef.getDetail() 
 | 
      }) 
 | 
    }, 
 | 
    reset() { 
 | 
      this.carCodeFront = '' 
 | 
      this.pagination.page = 1 
 | 
      this.pagination.pageSize = 10 
 | 
      this.getList() 
 | 
    }, 
 | 
    handleSizeChange(e) { 
 | 
      this.pagination.pageSize = e 
 | 
      this.getList() 
 | 
    }, 
 | 
    handlePageChange(e) { 
 | 
      this.pagination.page = e 
 | 
      this.getList() 
 | 
    }, 
 | 
    handleSub() { 
 | 
      const { param } = this 
 | 
      this.subLoading = true 
 | 
      PlatformEdit({ 
 | 
        ...param 
 | 
      }).then(res => { 
 | 
        this.subLoading = false 
 | 
        this.isShowEdit = false 
 | 
        this.$tip.success('提交成功') 
 | 
        this.getList() 
 | 
      }, () => { 
 | 
        this.subLoading = false 
 | 
      }) 
 | 
    } 
 | 
  } 
 | 
  
 | 
} 
 | 
</script> 
 | 
  
 | 
<style lang="scss" scoped> 
 | 
@import "@/assets/style/variables.scss"; 
 | 
  
 | 
.queuing_modal { 
 | 
  padding: 10px 30px; 
 | 
  
 | 
  .list { 
 | 
    .item { 
 | 
      background: #f4fafb; 
 | 
      border-radius: 2px; 
 | 
      border: 1px solid #dfe2e8; 
 | 
      margin-bottom: 10px; 
 | 
      padding: 16px; 
 | 
  
 | 
      .head { 
 | 
        margin-bottom: 15px; 
 | 
  
 | 
        .plate { 
 | 
          width: 90px; 
 | 
          text-align: center; 
 | 
          font-size: 15px; 
 | 
          color: #111111; 
 | 
          padding: 4px 5px; 
 | 
          font-weight: 700; 
 | 
          border: 1px solid #279baa; 
 | 
          background-color: #fff; 
 | 
        } 
 | 
  
 | 
        .status { 
 | 
          color: $primaryColor; 
 | 
        } 
 | 
  
 | 
        .code { 
 | 
          display: flex; 
 | 
          font-weight: 600; 
 | 
          height: 30px; 
 | 
          line-height: 30px; 
 | 
          font-size: 15px; 
 | 
          color: #111111; 
 | 
          background-color: #fff; 
 | 
          border-radius: 4px; 
 | 
          border: 1px solid $primaryColor; 
 | 
          padding-right: 4px; 
 | 
  
 | 
          span { 
 | 
            &:nth-of-type(1) { 
 | 
              background: $primaryColor; 
 | 
              padding: 0 8px; 
 | 
              color: #fff; 
 | 
            } 
 | 
  
 | 
            &:nth-of-type(2) { 
 | 
              padding-left: 4px; 
 | 
            } 
 | 
          } 
 | 
        } 
 | 
      } 
 | 
  
 | 
      .info { 
 | 
        display: flex; 
 | 
        flex-wrap: wrap; 
 | 
  
 | 
        .ite { 
 | 
          width: 33.3%; 
 | 
          margin-bottom: 8px; 
 | 
  
 | 
          span { 
 | 
            &:nth-child(1) { 
 | 
              color: #666666; 
 | 
            } 
 | 
          } 
 | 
        } 
 | 
      } 
 | 
  
 | 
      .footer { 
 | 
        .detail { 
 | 
          color: $primaryColor; 
 | 
          cursor: pointer; 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
} 
 | 
</style> 
 |