|  |  | 
 |  |  |   <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" | 
 |  |  |         > | 
 |  |  |         <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 :height="tableHeightNew" 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="运输公司" show-overflow-tooltip min-width="140"> | 
 |  |  |         <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="80"> | 
 |  |  |         <template slot-scope="{ row }"> | 
 |  |  |           <!-- <span v-if="row.status == 2" class="red">月台等待</span> --> | 
 |  |  |           <span v-if="row.status == 2" class="red">等待叫号</span> | 
 |  |  |           <span v-if="row.status == 3" class="primaryColor">入园等待</span> | 
 |  |  |           <span v-if="row.status == 7" class="primaryColor">转移中</span> | 
 |  |  |         </template> | 
 |  |  |       </el-table-column> | 
 |  |  |       <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 | 
 |  |  |   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' | 
 |  |  | import BaseComputHeight from '@/components/base/BaseComputHeight' | 
 |  |  | export default { | 
 |  |  |   data () { | 
 |  |  |   extends: BaseComputHeight, | 
 |  |  |   components: { | 
 |  |  |     Pagination, | 
 |  |  |     QueryForm, | 
 |  |  |     PlatformSign, | 
 |  |  |     WaybillDetail, | 
 |  |  |     DriverDetail | 
 |  |  |   }, | 
 |  |  |   data() { | 
 |  |  |     return { | 
 |  |  |       filters: {}, | 
 |  |  |       activeGroup: { | 
 |  |  |         type: 2 | 
 |  |  |       }, | 
 |  |  |       PlatGroupList: [], | 
 |  |  |  | 
 |  |  |       isShowSet: false, // 月台配置 | 
 |  |  |       setParam: {}, | 
 |  |  |       staticParam: {}, | 
 |  |  |       dataList: [], | 
 |  |  |       loading: false, | 
 |  |  |       isShowDriver: false, | 
 |  |  |       isPlatformSign: false, | 
 |  |  |       pagination: { | 
 |  |  |         pageSize: 10, | 
 |  |  |         page: 1, | 
 |  |  |         total: 0, | 
 |  |  |       }, | 
 |  |  |       queryQueueUpConfig, | 
 |  |  |       isShowDetail: false, // 运单详情 | 
 |  |  |       detail: {} | 
 |  |  |     } | 
 |  |  |   }, | 
 |  |  |   created () { | 
 |  |  |   created() { | 
 |  |  |     this.getPlatGroupList() | 
 |  |  |   }, | 
 |  |  |   methods: { | 
 |  |  |     getPlatGroupList () { | 
 |  |  |     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 () { }, | 
 |  |  |     clear () { } | 
 |  |  |     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> | 
 |  |  | .platform_list { | 
 |  |  |   .item { | 
 |  |  |     padding: 16px 24px; | 
 |  |  |     border-radius: 2px; | 
 |  |  |     border: 2px solid #cccccc; | 
 |  |  |     margin-bottom: 12px; | 
 |  |  |     .head { | 
 |  |  |       display: flex; | 
 |  |  |       justify-content: space-between; | 
 |  |  |       .name { | 
 |  |  |         font-size: 16px; | 
 |  |  |       } | 
 |  |  |       .status { | 
 |  |  |         flex: 1; | 
 |  |  |         margin-left: 50px; | 
 |  |  |         span { | 
 |  |  |           margin-right: 30px; | 
 |  |  |         } | 
 |  |  |       } | 
 |  |  |     } | 
 |  |  |     .info { | 
 |  |  |       margin-top: 10px; | 
 |  |  |       border: 1px solid #999999; | 
 |  |  |       padding: 6px 8px; | 
 |  |  |       border-radius: 2px; | 
 |  |  |       margin-bottom: 10px; | 
 |  |  |       .line { | 
 |  |  |         display: flex; | 
 |  |  |         align-items: center; | 
 |  |  |         justify-content: space-between; | 
 |  |  |         margin-bottom: 6px; | 
 |  |  |         .left { | 
 |  |  |           .plate { | 
 |  |  |             border: 1px solid #4969f6; | 
 |  |  |             border-radius: 2px; | 
 |  |  |             padding: 0 5px; | 
 |  |  |           } | 
 |  |  |         } | 
 |  |  |         .right { | 
 |  |  |           display: flex; | 
 |  |  |           align-items: center; | 
 |  |  |         } | 
 |  |  |       } | 
 |  |  | @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; | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  | } | 
 |  |  |  | 
 |  |  | /*  */ | 
 |  |  | .set_modal { | 
 |  |  |   .title { | 
 |  |  |     font-size: 16px; | 
 |  |  |     font-weight: 600; | 
 |  |  |     margin-bottom: 16px; | 
 |  |  | .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; | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  |   .list { | 
 |  |  | } | 
 |  |  |  | 
 |  |  |  | 
 |  |  | .main_header { | 
 |  |  |   .platgroup_tabs { | 
 |  |  |     flex: 1; | 
 |  |  |     display: flex; | 
 |  |  |     justify-content: space-between; | 
 |  |  |     flex-wrap: wrap; | 
 |  |  |     .item { | 
 |  |  |     border-bottom: 1px solid #dfe2e8; | 
 |  |  |  | 
 |  |  |     .tab { | 
 |  |  |       color: #666666; | 
 |  |  |       margin-right: 40px; | 
 |  |  |       cursor: pointer; | 
 |  |  |       width: 30%; | 
 |  |  |       height: 32px; | 
 |  |  |       background-color: #d9d9d9; | 
 |  |  |       border: 1px solid #4d99a7; | 
 |  |  |       display: flex; | 
 |  |  |       justify-content: center; | 
 |  |  |       align-items: center; | 
 |  |  |       border-radius: 6px; | 
 |  |  |       margin-bottom: 12px; | 
 |  |  |       padding-bottom: 14px; | 
 |  |  |       border-bottom: 2px solid #fff; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     .active { | 
 |  |  |       font-weight: 500; | 
 |  |  |       font-size: 15px; | 
 |  |  |       color: #222222; | 
 |  |  |       border-bottom: 2px solid $primary-color; | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  | } |