|  |  | 
 |  |  | <template> | 
 |  |  |   <GlobalWindow | 
 |  |  |     title="月台叫号-xx号月台" | 
 |  |  |     :visible.sync="isShowModal" | 
 |  |  |     width="800px" | 
 |  |  |     :confirm-working="subLoading" | 
 |  |  |     @confirm="handleSub" | 
 |  |  |   > | 
 |  |  |   <GlobalWindow :title="callType == 1 ? '叫号入园-' + title : '月台叫号-' + 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="param.aa" | 
 |  |  |           placeholder="请输入车牌号" | 
 |  |  |         ></el-input> | 
 |  |  |         <el-button type="primary">查找</el-button> | 
 |  |  |         <el-button>重置</el-button> | 
 |  |  |         <el-input class="flex1 mr20" v-model="carCodeFront" placeholder="请输入车牌号"></el-input> | 
 |  |  |         <el-button type="primary" @click="getList">查找</el-button> | 
 |  |  |         <el-button @click="reset">重置</el-button> | 
 |  |  |       </div> | 
 |  |  |       <div class="list"> | 
 |  |  |         <div class="item"> | 
 |  |  |         <div class="item" v-for="item in dataList" :key="item.id"> | 
 |  |  |           <div class="head df_sb"> | 
 |  |  |             <div class="plate">皖A12122</div> | 
 |  |  |             <div class="status">已签到</div> | 
 |  |  |             <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">{{ statusMap[item.status] }}</div> | 
 |  |  |           </div> | 
 |  |  |           <div class="info"> | 
 |  |  |             <div class="ite"> | 
 |  |  |             <div v-if="item.billCode" class="ite"> | 
 |  |  |               <span>运输单号:</span> | 
 |  |  |               <span>12312</span> | 
 |  |  |               <span>{{ item.billCode }}</span> | 
 |  |  |             </div> | 
 |  |  |             <div v-else class="ite"> | 
 |  |  |               <span>合同单号:</span> | 
 |  |  |               <span>{{ item.contractNum }}</span> | 
 |  |  |             </div> | 
 |  |  |             <div class="ite"> | 
 |  |  |               <span>驾驶员:</span> | 
 |  |  |               <span>12312</span> | 
 |  |  |               <span>{{ item.driverName }}</span> | 
 |  |  |             </div> | 
 |  |  |             <div class="ite"> | 
 |  |  |               <span>手机号:</span> | 
 |  |  |               <span>12312</span> | 
 |  |  |               <span>{{ item.drivierPhone }}</span> | 
 |  |  |             </div> | 
 |  |  |             <div class="ite"> | 
 |  |  |               <span>总运输量:</span> | 
 |  |  |               <span>12312</span> | 
 |  |  |               <span>{{ item.totalNum || item.ioQty }}万支</span> | 
 |  |  |             </div> | 
 |  |  |             <div class="ite" style="width: 66%"> | 
 |  |  |             <div v-if="item.billCode" class="ite" style="width: 66%"> | 
 |  |  |               <span>运输公司:</span> | 
 |  |  |               <span>12312</span> | 
 |  |  |               <span>{{ item.carrierName }}</span> | 
 |  |  |             </div> | 
 |  |  |           </div> | 
 |  |  |           <div class="footer df_sb"> | 
 |  |  |             <div class="detail">运单详情</div> | 
 |  |  |             <el-button type="primary">叫号</el-button> | 
 |  |  |             <div v-if="item.billCode" @click="handleDetail(item)" class="detail">运单详情</div> | 
 |  |  |             <div v-else class="detail"  @click="subDetail(item)">预约详情</div> | 
 |  |  |             <el-button v-preventReClick :loading="loadingCall" type="primary" @click="handleCall(item)">叫号</el-button> | 
 |  |  |           </div> | 
 |  |  |         </div> | 
 |  |  |       </div> | 
 |  |  |       <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="pagination"> | 
 |  |  |       </pagination> | 
 |  |  |     </div> | 
 |  |  |     <!--  --> | 
 |  |  |     <WaybillDetail ref="WaybillDetailRef" v-if="isShowDetail" @success="getList" @close="isShowDetail = false" /> | 
 |  |  |     <DriverDetail v-if="isShowDriver" ref="DriverDetailRef" /> | 
 |  |  |   </GlobalWindow> | 
 |  |  | </template> | 
 |  |  |  | 
 |  |  | <script> | 
 |  |  | import GlobalWindow from '@/components/common/GlobalWindow' | 
 |  |  | import { getPlatform, PlatformEdit, PlatformDel } from '@/api' | 
 |  |  | import Pagination from '@/components/common/Pagination' | 
 |  |  | import { platformCallList, platformCallNumber, platformInPark } from '@/api' | 
 |  |  | import { statusMap } from '../config' | 
 |  |  | import { Message } from 'element-ui' | 
 |  |  | import WaybillDetail from './WaybillDetail.vue' | 
 |  |  | import DriverDetail from "@/views/task/driverDetail.vue" | 
 |  |  | export default { | 
 |  |  |   components: { | 
 |  |  |     GlobalWindow | 
 |  |  |     GlobalWindow, | 
 |  |  |     Pagination, | 
 |  |  |     WaybillDetail, | 
 |  |  |     DriverDetail | 
 |  |  |   }, | 
 |  |  |   data () { | 
 |  |  |   data() { | 
 |  |  |     return { | 
 |  |  |       statusMap, | 
 |  |  |       isShowModal: false, | 
 |  |  |       subLoading: false, | 
 |  |  |       param: {} | 
 |  |  |       pagination: { | 
 |  |  |         total: 0, | 
 |  |  |         pageSize: 10, | 
 |  |  |         page: 1 | 
 |  |  |       }, | 
 |  |  |       carCodeFront: '', | 
 |  |  |       title: '', | 
 |  |  |       callType: '1', | 
 |  |  |       activePlat: {}, | 
 |  |  |       dataList: [], | 
 |  |  |       isShowDetail: false, // 运单详情 | 
 |  |  |       isShowDriver: false, // 预约详情 | 
 |  |  |       loadingCall: false | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |   }, | 
 |  |  |   methods: { | 
 |  |  |     handleSub () { | 
 |  |  |     handleCall(item) { | 
 |  |  |       const { activePlat, callType } = this | 
 |  |  |       this.loadingCall = true | 
 |  |  |       if (callType == 1) { // 入园叫号 | 
 |  |  |         platformInPark({ | 
 |  |  |           jobId: item.id, | 
 |  |  |           platformId: activePlat.id | 
 |  |  |         }).then(() => { | 
 |  |  |           this.loadingCall = false | 
 |  |  |           Message.success('叫号成功') | 
 |  |  |           this.$emit('success') | 
 |  |  |           this.getList() | 
 |  |  |         },() => {this.loadingCall = false}) | 
 |  |  |       } else { | 
 |  |  |         this.loadingCall = true | 
 |  |  |         platformCallNumber({ platformId: activePlat.id, jobId: item.id }).then(res => { | 
 |  |  |           this.loadingCall = false | 
 |  |  |           Message.success('叫号成功') | 
 |  |  |           this.$emit('success') | 
 |  |  |           this.getList() | 
 |  |  |         },()=> {this.loadingCall = false}) | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |     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() | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |     getList() { | 
 |  |  |       const { activePlat, pagination, carCodeFront, callType } = this | 
 |  |  |       platformCallList({ | 
 |  |  |         model: { callType, platformId: activePlat.id, carCodeFront }, | 
 |  |  |         page: pagination.page, | 
 |  |  |         capacity: pagination.pageSize | 
 |  |  |       }).then(res => { | 
 |  |  |         this.dataList = res.records | 
 |  |  |         this.pagination.total = res.total | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |     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({ | 
 |  |  | 
 |  |  |       }, () => { | 
 |  |  |         this.subLoading = false | 
 |  |  |       }) | 
 |  |  |     }, | 
 |  |  |     } | 
 |  |  |   } | 
 |  |  |  | 
 |  |  | } | 
 |  |  | 
 |  |  |  | 
 |  |  | <style lang="scss" scoped> | 
 |  |  | @import "@/assets/style/variables.scss"; | 
 |  |  |  | 
 |  |  | .queuing_modal { | 
 |  |  |   padding: 10px 30px; | 
 |  |  |  | 
 |  |  |   .list { | 
 |  |  |     .item { | 
 |  |  |       background: #f4fafb; | 
 |  |  | 
 |  |  |       border: 1px solid #dfe2e8; | 
 |  |  |       margin-bottom: 10px; | 
 |  |  |       padding: 16px; | 
 |  |  |  | 
 |  |  |       .head { | 
 |  |  |         margin-bottom: 15px; | 
 |  |  |  | 
 |  |  |         .plate { | 
 |  |  |           width: 90px; | 
 |  |  |           text-align: center; | 
 |  |  | 
 |  |  |           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; | 
 |  |  |         } | 
 |  |  |       } | 
 |  |  |     } |