<template> 
 | 
  <div class="main_app"> 
 | 
    <div class="mb20 main_header"> 
 | 
      <div class="platgroup_tabs"> 
 | 
        <div class="tab" :class="{ active: activeGroup.id === item.id }" @click="platgroupClick(item)" 
 | 
          v-for="(item, i) in PlatGroupList" :key="i"> 
 | 
          {{ item.name }} 
 | 
        </div> 
 | 
      </div> 
 | 
    </div> 
 | 
    <div class="df_sb"> 
 | 
      <QueryForm v-model="filters" :query-form-config="queryQueueUpConfig" @handleQuery="getList(1)" @clear="clear"> 
 | 
      </QueryForm> 
 | 
      <el-button @click="openSign" type="primary" style="align-self: flex-start;">车辆签到</el-button> 
 | 
    </div> 
 | 
    <div class="main_content"> 
 | 
      <div class="static_wrap"> 
 | 
        <span>等待:<span class="num">{{ staticParam.waitNum }}</span></span> 
 | 
        <span class="mr30">{{ }}</span> 
 | 
        <span>挂起:<span class="red">{{ staticParam.exceptionNum }}</span></span> 
 | 
        <span></span> 
 | 
      </div> 
 | 
    </div> 
 | 
    <el-table class="mb20" v-loading="loading" :data="dataList" stripe row-key="id" default-expand-all> 
 | 
      <el-table-column type="index" label="序号" width="80" /> 
 | 
      <el-table-column label="车牌号" width="130"> 
 | 
        <template slot-scope="{ row }"> 
 | 
          <div class="plate_id"> 
 | 
            <span>{{ row.carCodeFront.slice(0, 1) }}</span> 
 | 
            <span>{{ row.carCodeFront.slice(1, 2) }}</span> 
 | 
            <span>·</span> 
 | 
            <span>{{ row.carCodeFront.slice(2) }}</span> 
 | 
          </div> 
 | 
        </template> 
 | 
      </el-table-column> 
 | 
      <el-table-column prop="carrierName" label="运输公司" min-width="120"> 
 | 
        <template v-slot="scope"> 
 | 
          <span>{{ scope.row.carrierName || '-' }}</span> 
 | 
        </template> 
 | 
      </el-table-column> 
 | 
      <el-table-column prop="contractNum" label="运输单号/合同号" min-width="120"> 
 | 
        <template v-slot="scope"> 
 | 
          <span>{{ scope.row.billCode || scope.row.contractNum || '-' }}</span> 
 | 
        </template> 
 | 
      </el-table-column> 
 | 
      <el-table-column prop="totalNum" label="总运输量(万支)" min-width="110"> 
 | 
        <template v-slot="scope"> 
 | 
          <span>{{ scope.row.totalNum || '-' }}</span> 
 | 
        </template> 
 | 
      </el-table-column> 
 | 
      <el-table-column label="驾驶员" min-width="130"> 
 | 
        <template slot-scope="{ row }"> 
 | 
          <span class="mr10">{{ row.driverName }}</span> 
 | 
          <span>{{ row.drivierPhone }}</span> 
 | 
        </template> 
 | 
      </el-table-column> 
 | 
      <el-table-column prop="signDate" label="签到时间" min-width="150" /> 
 | 
      <el-table-column label="操作" align="center" width="100" fixed="right"> 
 | 
        <template slot-scope="{ row }"> 
 | 
          <el-button v-if="row.billCode" type="text" @click="handleDetail(row)" 
 | 
            v-permissions="['business:company:update']">运单详情</el-button> 
 | 
          <el-button v-else type="text" @click="subDetail(row)">预约详情</el-button> 
 | 
        </template> 
 | 
      </el-table-column> 
 | 
    </el-table> 
 | 
    <!-- <el-table v-else class="mb20" v-loading="loading" :data="dataList" stripe row-key="id" default-expand-all> 
 | 
      <el-table-column type="index" label="序号" width="80" /> 
 | 
      <el-table-column label="车牌号" width="130"> 
 | 
        <template slot-scope="{ row }"> 
 | 
          <div class="plate_id"> 
 | 
            <span>{{ row.carCodeFront.slice(0, 1) }}</span> 
 | 
            <span>{{ row.carCodeFront.slice(1, 2) }}</span> 
 | 
            <span>·</span> 
 | 
            <span>{{ row.carCodeFront.slice(2) }}</span> 
 | 
          </div> 
 | 
        </template> 
 | 
      </el-table-column> 
 | 
      <el-table-column prop="carrierName" label="运输公司" min-width="120" /> 
 | 
      <el-table-column prop="totalNum" label="总运输量(万支)" min-width="110" /> 
 | 
      <el-table-column label="驾驶员" min-width="130"> 
 | 
        <template slot-scope="{ row }"> 
 | 
          <span class="mr10">{{ row.driverName }}</span> 
 | 
          <span>{{ row.drivierPhone }}</span> 
 | 
        </template> 
 | 
      </el-table-column> 
 | 
      <el-table-column prop="signDate" label="签到时间" min-width="150" /> 
 | 
      <el-table-column label="操作" align="center" width="100" fixed="right"> 
 | 
        <template slot-scope="{ row }"> 
 | 
          <el-button v-if="row.billCode" type="text" @click="handleDetail(row)" 
 | 
            v-permissions="['business:company:update']">运单详情</el-button> 
 | 
          <el-button v-else type="text" @click="subDetail(row)">预约详情</el-button> 
 | 
        </template> 
 | 
      </el-table-column> 
 | 
    </el-table> --> 
 | 
    <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="pagination" /> 
 | 
  
 | 
    <!--  --> 
 | 
    <PlatformSign ref="PlatformSignRef" v-if="isPlatformSign" @success="getPlatGroupList" 
 | 
      @close="isPlatformSign = false" /> 
 | 
    <WaybillDetail ref="WaybillDetailRef" v-if="isShowDetail" @success="getList" @close="isShowDetail = false" /> 
 | 
    <DriverDetail v-if="isShowDriver" ref="DriverDetailRef" /> 
 | 
  </div> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
import Pagination from '@/components/common/Pagination' 
 | 
import QueryForm from '@/components/common/QueryForm' 
 | 
import { 
 | 
  getPlatformGroupList, 
 | 
  platformLineUpPage, 
 | 
  getPlatformGroupWork 
 | 
} from '@/api' 
 | 
import { queryQueueUpConfig } from './config' 
 | 
import WaybillDetail from './components/WaybillDetail.vue' 
 | 
import DriverDetail from "@/views/task/driverDetail.vue" 
 | 
import PlatformSign from './components/PlatformSign.vue' 
 | 
export default { 
 | 
  components: { 
 | 
    Pagination, 
 | 
    QueryForm, 
 | 
    PlatformSign, 
 | 
    WaybillDetail, 
 | 
    DriverDetail 
 | 
  }, 
 | 
  data() { 
 | 
    return { 
 | 
      filters: {}, 
 | 
      activeGroup: { 
 | 
        type: 2 
 | 
      }, 
 | 
      PlatGroupList: [], 
 | 
      staticParam: {}, 
 | 
      dataList: [], 
 | 
      loading: false, 
 | 
      isShowDriver: false, 
 | 
      isPlatformSign: false, 
 | 
      pagination: { 
 | 
        pageSize: 10, 
 | 
        page: 1, 
 | 
        total: 0, 
 | 
      }, 
 | 
      queryQueueUpConfig, 
 | 
      isShowDetail: false, // 运单详情 
 | 
      detail: {} 
 | 
    } 
 | 
  }, 
 | 
  created() { 
 | 
    this.getPlatGroupList() 
 | 
  }, 
 | 
  methods: { 
 | 
    openSign() { 
 | 
      this.isPlatformSign = true 
 | 
      this.$nextTick(() => { 
 | 
        this.$refs.PlatformSignRef.isShowModal = true 
 | 
        this.$refs.PlatformSignRef.activePlat = this.activeGroup 
 | 
        this.$refs.PlatformSignRef.carCodeFront = '' 
 | 
        this.$refs.PlatformSignRef.pagination = { 
 | 
          total: 0, 
 | 
          pageSize: 10, 
 | 
          page: 1 
 | 
        } 
 | 
        this.$refs.PlatformSignRef.getList() 
 | 
      }) 
 | 
    }, 
 | 
    getPlatGroupList() { 
 | 
      getPlatformGroupList({ 
 | 
        queryData: 1, 
 | 
        queryType: 1 
 | 
      }).then(res => { 
 | 
        this.PlatGroupList = res || [] 
 | 
        if (res && res.length > 0) { 
 | 
          if (this.activeGroup && this.activeGroup.id) { 
 | 
            this.activeGroup = res.find(item => item.id === this.activeGroup.id) 
 | 
          } else { 
 | 
            this.activeGroup = res[0] 
 | 
          } 
 | 
  
 | 
          this.getPlatformGroupWork() 
 | 
          this.getList() 
 | 
        } 
 | 
      }) 
 | 
    }, 
 | 
    getList() { 
 | 
      const { activeGroup, pagination, filters } = this 
 | 
      this.loading = true 
 | 
      platformLineUpPage({ 
 | 
        model: { platformGroupId: activeGroup.id, ...filters, callType: 3 }, 
 | 
        capacity: pagination.pageSize, 
 | 
        page: pagination.page, 
 | 
      }).then(res => { 
 | 
        this.loading = false 
 | 
        this.dataList = res.records || [] 
 | 
        this.pagination.total = res.total || 0 
 | 
      }, () => { 
 | 
        this.loading = false 
 | 
      }) 
 | 
    }, 
 | 
    getPlatformGroupWork() { 
 | 
      const { activeGroup } = this 
 | 
      getPlatformGroupWork(activeGroup.id).then(res => { 
 | 
        this.staticParam = res || {} 
 | 
      }) 
 | 
    }, 
 | 
    handleSizeChange(e) { 
 | 
      this.pagination.pageSize = e 
 | 
      this.getList() 
 | 
    }, 
 | 
    handlePageChange(e) { 
 | 
      this.pagination.page = e 
 | 
      this.getList() 
 | 
    }, 
 | 
    platgroupClick(item) { 
 | 
      this.activeGroup = { ...item } 
 | 
      this.pagination.page = 1 
 | 
      this.filters = {} 
 | 
      this.getPlatformGroupWork() 
 | 
      this.getList() 
 | 
    }, 
 | 
    clear() { 
 | 
      this.pagination.page = 1 
 | 
      this.filters = {} 
 | 
      this.getList() 
 | 
    }, 
 | 
    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() 
 | 
      }) 
 | 
    }, 
 | 
  } 
 | 
} 
 | 
</script> 
 | 
  
 | 
<style lang="scss" scoped> 
 | 
@import "@/assets/style/variables.scss"; 
 | 
  
 | 
.main_content { 
 | 
  background-color: #fff; 
 | 
  position: relative; 
 | 
  z-index: 999; 
 | 
  top: -10; 
 | 
  margin: -20px; 
 | 
  padding: 0 20px; 
 | 
  
 | 
  .static_wrap { 
 | 
    height: 50px; 
 | 
    line-height: 50px; 
 | 
    color: #666666; 
 | 
    font-size: 15px; 
 | 
    padding: 0 20px; 
 | 
    background: #F4FAFB; 
 | 
    border-radius: 2px 2px 0px 0px; 
 | 
    margin-bottom: 36px; 
 | 
  
 | 
    .num { 
 | 
      color: #111111; 
 | 
    } 
 | 
  } 
 | 
} 
 | 
  
 | 
.plate_id { 
 | 
  display: flex; 
 | 
  width: 120px; 
 | 
  font-weight: 600; 
 | 
  height: 30px; 
 | 
  line-height: 30px; 
 | 
  font-size: 16px; 
 | 
  color: #111111; 
 | 
  border-radius: 4px; 
 | 
  border: 1px solid #dfdede; 
 | 
  
 | 
  span { 
 | 
    &:nth-of-type(1) { 
 | 
      background: $primary-color; 
 | 
      padding: 0 6px; 
 | 
      color: #fff 
 | 
    } 
 | 
  
 | 
    &:nth-of-type(2) { 
 | 
      padding-left: 2px; 
 | 
    } 
 | 
  
 | 
    &:nth-of-type(4) { 
 | 
      padding-right: 3px; 
 | 
    } 
 | 
  } 
 | 
} 
 | 
  
 | 
  
 | 
.main_header { 
 | 
  .platgroup_tabs { 
 | 
    flex: 1; 
 | 
    display: flex; 
 | 
    border-bottom: 1px solid #dfe2e8; 
 | 
  
 | 
    .tab { 
 | 
      color: #666666; 
 | 
      margin-right: 40px; 
 | 
      cursor: pointer; 
 | 
      padding-bottom: 14px; 
 | 
      border-bottom: 2px solid #fff; 
 | 
    } 
 | 
  
 | 
    .active { 
 | 
      font-weight: 500; 
 | 
      font-size: 15px; 
 | 
      color: #222222; 
 | 
      border-bottom: 2px solid $primary-color; 
 | 
    } 
 | 
  } 
 | 
} 
 | 
</style> 
 |