|
@@ -0,0 +1,687 @@
|
|
|
+<!--
|
|
|
+ * @Author: your name
|
|
|
+ * @Date: 2022-01-17 10:39:22
|
|
|
+ * @LastEditTime: 2022-03-10 15:30:37
|
|
|
+ * @LastEditors: your name
|
|
|
+ * @Description: 航班视图
|
|
|
+-->
|
|
|
+<template>
|
|
|
+ <div class="flight-view">
|
|
|
+ <div class="flight-wrap">
|
|
|
+ <div class="part1">
|
|
|
+ <div class="title">
|
|
|
+ {{ infoData.PlanDepartureApt }} - {{ infoData.FlightNO }} -
|
|
|
+ {{ infoData.PlanLandingApt }}
|
|
|
+ </div>
|
|
|
+ <div class="part1_info">
|
|
|
+ <div class="part1_info_box">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>起飞机场简称:</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>{{ infoData.planDepartureaptName }}</span>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>起飞机场三字码:</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>{{ infoData.PlanDepartureApt }}</span>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>起飞机场航站楼:</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>{{ infoData.DepartureBuild }}</span>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>日期:{{ infoData.PlanDepartureTime.split("T")[0] }}</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>时间:{{ infoData.PlanDepartureTime.split("T")[1] }}</span>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>登机口:{{ infoData.BordingGate }}</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>停机位:{{ infoData.StandForDeparture }}</span>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ <div class="part1_info_box">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>航班号:</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>{{ infoData.FlightNO }}</span>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>航班状态:</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>{{ infoData.FlightStatus }}</span>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>托运旅客数:</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>{{ infoData.passagernum }}</span>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>终点行李数:</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>{{ infoData.terminus }}</span>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>中转行李数:</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>{{ infoData.transfer_all }}</span>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ <div class="part1_info_box">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>降落机场简称:</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>{{ infoData.PlanLandingaptName }}</span>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>降落机场三字码:</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>{{ infoData.PlanLandingApt }}</span>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>降落机场航站楼:</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>{{ infoData.LandingBuild }}</span>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>日期:{{ infoData.PlanLandingTime.split("T")[0] }}</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>时间:{{ infoData.PlanLandingTime.split("T")[1] }}</span>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>提取转盘:{{ infoData.Carousel }}</span>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <span>停机位:{{ infoData.StandForLanding }}</span>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="part2">
|
|
|
+ <el-table
|
|
|
+ :data="containerTableData"
|
|
|
+ border
|
|
|
+ style="width: 100%"
|
|
|
+ height="344"
|
|
|
+ stripe
|
|
|
+ size="mini"
|
|
|
+ show-summary
|
|
|
+ :header-cell-style="{ color: '#101116' }"
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ v-for="item in containerTableColumn"
|
|
|
+ :key="item.id"
|
|
|
+ :prop="item.prop"
|
|
|
+ :label="item.name"
|
|
|
+ :align="item.align"
|
|
|
+ :show-overflow-tooltip="true"
|
|
|
+ />
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ class="part3"
|
|
|
+ style="padding-right: 4px;"
|
|
|
+ >
|
|
|
+ <div class="title">中转进</div>
|
|
|
+ <el-table
|
|
|
+ :data="transferInTableData"
|
|
|
+ border
|
|
|
+ style="width: 100%"
|
|
|
+ height="162"
|
|
|
+ stripe
|
|
|
+ size="mini"
|
|
|
+ show-summary
|
|
|
+ :header-cell-style="{ color: '#101116' }"
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ v-for="item in transferInTableColumn"
|
|
|
+ :key="item.id"
|
|
|
+ :prop="item.prop"
|
|
|
+ :label="item.name"
|
|
|
+ :align="item.align"
|
|
|
+ :show-overflow-tooltip="true"
|
|
|
+ />
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ class="part3"
|
|
|
+ style="padding-left: 4px;"
|
|
|
+ >
|
|
|
+ <div class="title">中转出</div>
|
|
|
+ <el-table
|
|
|
+ :data="transferOutTableData"
|
|
|
+ border
|
|
|
+ style="width: 100%"
|
|
|
+ height="162"
|
|
|
+ stripe
|
|
|
+ size="mini"
|
|
|
+ show-summary
|
|
|
+ :header-cell-style="{ color: '#101116' }"
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ v-for="item in transferOutTableColumn"
|
|
|
+ :key="item.id"
|
|
|
+ :prop="item.prop"
|
|
|
+ :label="item.name"
|
|
|
+ :align="item.align"
|
|
|
+ :show-overflow-tooltip="true"
|
|
|
+ />
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ <div class="part4">
|
|
|
+ <div class="title">
|
|
|
+ <el-cascader
|
|
|
+ placeholder="全部行李"
|
|
|
+ :options="options"
|
|
|
+ :props="props"
|
|
|
+ collapse-tags
|
|
|
+ size="mini"
|
|
|
+ clearable
|
|
|
+ />
|
|
|
+ <div class="search">
|
|
|
+ <el-input
|
|
|
+ v-model="keyWords"
|
|
|
+ placeholder="请输入需要搜索姓名或行李编号"
|
|
|
+ size="mini"
|
|
|
+ style="width: 280px"
|
|
|
+ />
|
|
|
+ <el-button
|
|
|
+ class="searchBtn"
|
|
|
+ type="primary"
|
|
|
+ size="mini"
|
|
|
+ >搜索</el-button>
|
|
|
+ </div>
|
|
|
+ <el-switch
|
|
|
+ v-model="openUTC"
|
|
|
+ active-text="开启UTC"
|
|
|
+ />
|
|
|
+ <el-button
|
|
|
+ class="btn-square"
|
|
|
+ type="primary"
|
|
|
+ icon="el-icon-download"
|
|
|
+ size="mini"
|
|
|
+ />
|
|
|
+ <el-button
|
|
|
+ class="btn-square setBtn"
|
|
|
+ type="primary"
|
|
|
+ icon="el-icon-s-tools"
|
|
|
+ size="mini"
|
|
|
+ @click="show"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <el-table
|
|
|
+ ref="table"
|
|
|
+ :data="baggageTableData"
|
|
|
+ border
|
|
|
+ style="width: 100%"
|
|
|
+ height="320"
|
|
|
+ stripe
|
|
|
+ size="mini"
|
|
|
+ :header-cell-style="{ color: '#101116' }"
|
|
|
+ @row-click="rowClick"
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ v-for="item in tableColsCopy"
|
|
|
+ :key="item.index"
|
|
|
+ :prop="item.prop"
|
|
|
+ :label="item.name"
|
|
|
+ :align="item.align"
|
|
|
+ :sortable="item.sortable"
|
|
|
+ />
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!--列设置-->
|
|
|
+ <Dialog
|
|
|
+ :flag="dialogFlag"
|
|
|
+ class="dialog-check-cols"
|
|
|
+ >
|
|
|
+ <div class="col-dialog">
|
|
|
+ <div class="title">列设置</div>
|
|
|
+ <div class="content">
|
|
|
+ <el-tree
|
|
|
+ :data="tableCols"
|
|
|
+ :class="colsCheckClass"
|
|
|
+ show-checkbox
|
|
|
+ node-key="index"
|
|
|
+ :default-expand-all="true"
|
|
|
+ :props="{
|
|
|
+ label: 'name',
|
|
|
+ children: 'children'
|
|
|
+ }"
|
|
|
+ :default-checked-keys="checkedKeysTemp"
|
|
|
+ @check="handleCheck"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div class="foot right t30">
|
|
|
+ <el-button
|
|
|
+ size="medium"
|
|
|
+ class="r24"
|
|
|
+ type="primary"
|
|
|
+ @click="onCheck"
|
|
|
+ >确定</el-button>
|
|
|
+ <el-button
|
|
|
+ size="medium"
|
|
|
+ @click="hide"
|
|
|
+ >取消</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </Dialog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+<script>
|
|
|
+import Dialog from '@/layout/components/Dialog/index.vue'
|
|
|
+import { baggageSearchIO, baggageSearchIOContainer, baggageSearchIOAll } from '@/api/flight'
|
|
|
+import tableColsMixin from '../../mixins/tableCols'
|
|
|
+
|
|
|
+const arrivalBaggageTableColumn = [
|
|
|
+ { name: '旅客姓名', prop: 'name', align: 'center', sortable: 'custom' },
|
|
|
+ { name: '行李牌号', prop: 'bagNo', align: 'center' },
|
|
|
+ {
|
|
|
+ name: '特殊行李类型',
|
|
|
+ prop: 'specialType',
|
|
|
+ align: 'center',
|
|
|
+ sortable: 'custom'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '容器编号',
|
|
|
+ prop: 'containerNo',
|
|
|
+ align: 'center',
|
|
|
+ sortable: 'custom'
|
|
|
+ },
|
|
|
+ { name: '装载序号', prop: 'loadSequenceIndex', align: 'center' },
|
|
|
+ { name: '卸载', prop: 'uninstall', align: 'center' },
|
|
|
+ { name: '到达', prop: 'arrival', align: 'center' },
|
|
|
+ { name: '提取', prop: 'extract', align: 'center' },
|
|
|
+ { name: '旅客仓位', prop: 'positionNo', align: 'center' },
|
|
|
+ { name: '中转标志', prop: 'transitStatus', align: 'center' },
|
|
|
+ { name: '卷宗号', prop: 'fileNumber', align: 'center' }
|
|
|
+]
|
|
|
+const departureBaggageTableColumn = [
|
|
|
+ { name: '旅客姓名', prop: 'name', align: 'center', sortable: 'custom' },
|
|
|
+ { name: '行李牌号', prop: 'bagNo', align: 'center' },
|
|
|
+ {
|
|
|
+ name: '特殊行李类型',
|
|
|
+ prop: 'specialType',
|
|
|
+ align: 'center',
|
|
|
+ sortable: 'custom'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '容器编号',
|
|
|
+ prop: 'containerNo',
|
|
|
+ align: 'center',
|
|
|
+ sortable: 'custom'
|
|
|
+ },
|
|
|
+ { name: '装载序号', prop: 'loadSequenceIndex', align: 'center' },
|
|
|
+ { name: '值机', prop: 'checkIn', align: 'center' },
|
|
|
+ { name: '安检', prop: 'security', align: 'center' },
|
|
|
+ { name: '分拣', prop: 'sorting', align: 'center' },
|
|
|
+ { name: '装车', prop: 'loading', align: 'center' },
|
|
|
+ { name: '装机', prop: 'installed', align: 'center' },
|
|
|
+ { name: '中转标志', prop: 'transitStatus', align: 'center' },
|
|
|
+ { name: '卷宗号', prop: 'fileNumber', align: 'center' }
|
|
|
+]
|
|
|
+export default {
|
|
|
+ name: 'FlightView',
|
|
|
+ components: {
|
|
|
+ Dialog
|
|
|
+ },
|
|
|
+ mixins: [tableColsMixin],
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ infoData: null,
|
|
|
+ keyWords: '',
|
|
|
+ openUTC: true,
|
|
|
+ props: { multiple: true },
|
|
|
+ options: [
|
|
|
+ { value: 0, label: 'VIP行李' },
|
|
|
+ { value: 0, label: 'VIP行李' }
|
|
|
+ ],
|
|
|
+ containerTableColumn: [
|
|
|
+ { name: '容器编号', prop: 'containerNo', align: 'center' },
|
|
|
+ { name: '类型', prop: 'type', align: 'center' },
|
|
|
+ { name: '行李数', prop: 'total', align: 'center' }
|
|
|
+ ],
|
|
|
+ transferInTableColumn: [
|
|
|
+ { name: '航班号', prop: 'preFlightNo', align: 'center' },
|
|
|
+ { name: '日期', prop: 'preFlightDate', align: 'center' },
|
|
|
+ { name: '时间', prop: 'preFlightLandingDateTime', align: 'center' },
|
|
|
+ { name: '始发站', prop: 'preAirportName', align: 'center' },
|
|
|
+ { name: '航班状态', prop: 'flightStatus', align: 'center' },
|
|
|
+ { name: '中转数', prop: 'total', align: 'center' }
|
|
|
+ ],
|
|
|
+ transferOutTableColumn: [
|
|
|
+ { name: '航班号', prop: 'transferFlightNo', align: 'center' },
|
|
|
+ { name: '日期', prop: 'transferFlightDate', align: 'center' },
|
|
|
+ { name: '时间', prop: 'transferFlightTime', align: 'center' },
|
|
|
+ { name: '目的站', prop: 'destinationAirportName', align: 'center' },
|
|
|
+ { name: '中转数', prop: 'total', align: 'center' }
|
|
|
+ ],
|
|
|
+ tableCols:
|
|
|
+ this.$route.matched[0].path === '/arrival' || this.$route.matched[1].path === '/transfer/arrival'
|
|
|
+ ? arrivalBaggageTableColumn
|
|
|
+ : departureBaggageTableColumn,
|
|
|
+ containerTableData: [], // 容器统计
|
|
|
+ transferInTableData: [], // 中转进
|
|
|
+ transferOutTableData: [], // 中转出
|
|
|
+ baggageTableData: [] // 行列表
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.infoData = this._.cloneDeep(this.$route.query)
|
|
|
+ this.infoData['terminus'] = this['transfer_out_all']
|
|
|
+ ? this.infoData['checkin'] - this['transfer_out_all']
|
|
|
+ : this.infoData['checkin']
|
|
|
+ // console.log(this.infoData)
|
|
|
+ const dataIn = {
|
|
|
+ flightNO: this.infoData.FlightNO,
|
|
|
+ flightDate: this.infoData.FlightDate,
|
|
|
+ preFlightNO: true,
|
|
|
+ transferFlightNO: false
|
|
|
+ }
|
|
|
+ const dataOut = {
|
|
|
+ flightNO: this.infoData.FlightNO,
|
|
|
+ flightDate: this.infoData.FlightDate,
|
|
|
+ preFlightNO: false,
|
|
|
+ transferFlightNO: true
|
|
|
+ }
|
|
|
+ const containerData = {
|
|
|
+ flightNO: this.infoData.FlightNO,
|
|
|
+ flightDate: this.infoData.FlightDate,
|
|
|
+ preFlightNO: true,
|
|
|
+ transferFlightNO: true
|
|
|
+ }
|
|
|
+
|
|
|
+ const searchAllData = {
|
|
|
+ flightNO: this.infoData.FlightNO,
|
|
|
+ flightDate: this.infoData.FlightDate,
|
|
|
+ preFlightNO: true,
|
|
|
+ transferFlightNO: true
|
|
|
+ }
|
|
|
+ this.getbaggageSearchIn(dataIn)
|
|
|
+ this.getbaggageSearchOut(dataOut)
|
|
|
+ this.getBaggageSearchIOContainer(containerData)
|
|
|
+ this.getBaggageSearchIOAll(searchAllData)
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ async getBaggageSearchIOAll(data) {
|
|
|
+ const getNodeInfo = node => `${node.locationPointDescribe ? node.locationPointDescribe : node.locationPoint}\n
|
|
|
+ ${node.realTime}`
|
|
|
+ try {
|
|
|
+ const result = await baggageSearchIOAll(data)
|
|
|
+ this.baggageTableData = result.returnData.map(element => {
|
|
|
+ element['nodeInfos'].forEach(node => {
|
|
|
+ switch (node.nodeCode) {
|
|
|
+ case 'CHECKIN':
|
|
|
+ element['checkIn'] = getNodeInfo(node)
|
|
|
+ break
|
|
|
+ case 'SECURITY':
|
|
|
+ element['security'] = getNodeInfo(node)
|
|
|
+ break
|
|
|
+ case 'SORT':
|
|
|
+ element['sorting'] = getNodeInfo(node)
|
|
|
+ break
|
|
|
+ case 'LOAD':
|
|
|
+ element['loading'] = getNodeInfo(node)
|
|
|
+ break
|
|
|
+ case 'INF':
|
|
|
+ element['installed'] = getNodeInfo(node)
|
|
|
+ break
|
|
|
+ case 'UNLOAD':
|
|
|
+ element['security'] = getNodeInfo(node)
|
|
|
+ element['arrival'] = getNodeInfo(node)
|
|
|
+ break
|
|
|
+ case 'TiQu':
|
|
|
+ element['extract'] = getNodeInfo(node)
|
|
|
+ break
|
|
|
+ default:
|
|
|
+ break
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return element
|
|
|
+ })
|
|
|
+ // result.returnData.forEach(element => {
|
|
|
+ // element['checkIn'] = element.checkInLocation + '\n' + element.checkInTime
|
|
|
+ // element['security'] = element.securityStatus + '\n' + element.securityTime
|
|
|
+ // element['sorting'] = element.sortingNo + '\n' + element.sortingTime
|
|
|
+ // element['loading'] = element.loadingNumber + '\n' + element.loadingTime
|
|
|
+ // element['installed'] = element.installedNumber + '\n' + element.installedTime
|
|
|
+ // element['uninstall'] = element.uninstall + '\n' + element.uninstallTime
|
|
|
+ // element['arrival'] = element.reach + '\n' + element.timeOfArrival
|
|
|
+ // element['extract'] = element.extract + '\n' + element.extractionTime
|
|
|
+ // })
|
|
|
+ // this.baggageTableData = this._.cloneDeep(result.returnData)
|
|
|
+ } catch (error) {
|
|
|
+ console.log(error)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async getBaggageSearchIOContainer(data) {
|
|
|
+ try {
|
|
|
+ const result = await baggageSearchIOContainer(data)
|
|
|
+ this.containerTableData = this._.cloneDeep(result.returnData)
|
|
|
+ } catch (error) {
|
|
|
+ console.log(error)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async getbaggageSearchIn(data) {
|
|
|
+ try {
|
|
|
+ const result = await baggageSearchIO(data)
|
|
|
+ this.transferInTableData = this._.cloneDeep(result.returnData)
|
|
|
+ } catch (error) {
|
|
|
+ console.log(error)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async getbaggageSearchOut(data) {
|
|
|
+ try {
|
|
|
+ const result = await baggageSearchIO(data)
|
|
|
+ this.transferOutTableData = this._.cloneDeep(result.returnData)
|
|
|
+ } catch (error) {
|
|
|
+ console.log(error)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ rowClick(row, column, event) {
|
|
|
+ row['flightNo'] = this.infoData.FlightNO
|
|
|
+ row['flightDate'] = this.infoData.FlightDate
|
|
|
+ this.$router.push({
|
|
|
+ path: `/${this.$route.path.split('/').slice(1, -1).join('/')}/baggageView`,
|
|
|
+ query: row
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+.flight-view {
|
|
|
+ padding: 16px 8px 44px;
|
|
|
+ overflow: hidden;
|
|
|
+ background: #dfe3ea;
|
|
|
+ .flight-wrap {
|
|
|
+ width: 100%;
|
|
|
+ height: calc(100vh - 140px);
|
|
|
+ display: flex;
|
|
|
+ flex-direction: row;
|
|
|
+ justify-content: flex-start;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ overflow: auto;
|
|
|
+ .part1 {
|
|
|
+ width: 71.15%;
|
|
|
+ height: 344px;
|
|
|
+ background: #041741;
|
|
|
+ padding: 24px;
|
|
|
+ .title {
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #ffffff;
|
|
|
+ }
|
|
|
+ .part1_info {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: row;
|
|
|
+ justify-content: space-between;
|
|
|
+ padding-top: 32px;
|
|
|
+
|
|
|
+ .part1_info_box {
|
|
|
+ width: calc(33.333% - 48px);
|
|
|
+ height: 244px;
|
|
|
+ background: #2c416d;
|
|
|
+ position: relative;
|
|
|
+ padding: 24px;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ align-content: space-around;
|
|
|
+ .el-row {
|
|
|
+ margin-bottom: 27px;
|
|
|
+ }
|
|
|
+ span {
|
|
|
+ display: block;
|
|
|
+ font-size: 16px;
|
|
|
+ font-weight: 400;
|
|
|
+ color: #ffffff;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .part1_info_box::after {
|
|
|
+ content: '';
|
|
|
+ border-top: 15px solid transparent;
|
|
|
+ border-left: 10px solid transparent;
|
|
|
+ border-bottom: 10px solid #fff;
|
|
|
+ position: absolute;
|
|
|
+ right: -34px;
|
|
|
+ transform: rotate(-45deg);
|
|
|
+ top: 50%;
|
|
|
+ margin-top: -15px;
|
|
|
+ }
|
|
|
+ .part1_info_box:last-child::after {
|
|
|
+ content: '';
|
|
|
+ border-top: 0;
|
|
|
+ border-left: 0;
|
|
|
+ border-bottom: 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .part2 {
|
|
|
+ width: calc(100% - 71.15%);
|
|
|
+ height: 344px;
|
|
|
+ padding-left: 16px;
|
|
|
+ }
|
|
|
+ .part3 {
|
|
|
+ width: 50%;
|
|
|
+ height: 204px;
|
|
|
+ margin-top: 8px;
|
|
|
+ .title {
|
|
|
+ background: #fafcff;
|
|
|
+ font-size: 14px;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #101116;
|
|
|
+ padding: 12px 0;
|
|
|
+ text-align: center;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .part4 {
|
|
|
+ width: 100%;
|
|
|
+ height: 384px;
|
|
|
+ .title {
|
|
|
+ padding: 16px 0;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: row;
|
|
|
+ justify-content: flex-end;
|
|
|
+ align-items: center;
|
|
|
+ .search {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: row;
|
|
|
+ margin-left: 20px;
|
|
|
+ margin-right: 10px;
|
|
|
+ }
|
|
|
+ .el-button {
|
|
|
+ margin-left: 10px;
|
|
|
+ &.btn-square {
|
|
|
+ width: 30px;
|
|
|
+ height: 30px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .setBtn {
|
|
|
+ margin-right: 30px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ::v-deep .el-table .cell {
|
|
|
+ white-space: pre-line;
|
|
|
+ }
|
|
|
+ .el-table {
|
|
|
+ .el-table__body-wrapper {
|
|
|
+ min-height: 178px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+::v-deep .dialog-check-cols .el-tree {
|
|
|
+ &.has-children .el-tree-node > .el-tree-node__children {
|
|
|
+ display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ }
|
|
|
+ &.no-children {
|
|
|
+ display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|