|
@@ -1,7 +1,7 @@
|
|
|
<!--
|
|
|
* @Author: your name
|
|
|
* @Date: 2022-01-17 10:39:22
|
|
|
- * @LastEditTime: 2022-05-27 19:10:44
|
|
|
+ * @LastEditTime: 2022-05-30 18:26:00
|
|
|
* @LastEditors: your name
|
|
|
* @Description: 航班视图
|
|
|
-->
|
|
@@ -16,37 +16,69 @@
|
|
|
<div class="part1_info">
|
|
|
<div class="part1_info_box">
|
|
|
<el-row>
|
|
|
- <el-col :xs="24" :sm="24" :xl="12">
|
|
|
+ <el-col
|
|
|
+ :xs="24"
|
|
|
+ :sm="24"
|
|
|
+ :xl="12"
|
|
|
+ >
|
|
|
<span>起飞机场简称:</span>
|
|
|
</el-col>
|
|
|
- <el-col :xs="24" :sm="24" :xl="12">
|
|
|
+ <el-col
|
|
|
+ :xs="24"
|
|
|
+ :sm="24"
|
|
|
+ :xl="12"
|
|
|
+ >
|
|
|
<span>{{ flightInfo.departureName }}</span>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row>
|
|
|
- <el-col :xs="24" :sm="24" :xl="12">
|
|
|
+ <el-col
|
|
|
+ :xs="24"
|
|
|
+ :sm="24"
|
|
|
+ :xl="12"
|
|
|
+ >
|
|
|
<span>起飞机场三字码:</span>
|
|
|
</el-col>
|
|
|
- <el-col :xs="24" :sm="24" :xl="12">
|
|
|
+ <el-col
|
|
|
+ :xs="24"
|
|
|
+ :sm="24"
|
|
|
+ :xl="12"
|
|
|
+ >
|
|
|
<span>{{ flightInfo.PlanDepartureApt }}</span>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row>
|
|
|
- <el-col :xs="24" :sm="24" :xl="12">
|
|
|
+ <el-col
|
|
|
+ :xs="24"
|
|
|
+ :sm="24"
|
|
|
+ :xl="12"
|
|
|
+ >
|
|
|
<span>起飞机场航站楼:</span>
|
|
|
</el-col>
|
|
|
- <el-col :xs="24" :sm="24" :xl="12">
|
|
|
+ <el-col
|
|
|
+ :xs="24"
|
|
|
+ :sm="24"
|
|
|
+ :xl="12"
|
|
|
+ >
|
|
|
<span>{{ flightInfo.DepartureBuild }}</span>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row>
|
|
|
- <el-col :xs="24" :sm="24" :xl="12">
|
|
|
+ <el-col
|
|
|
+ :xs="24"
|
|
|
+ :sm="24"
|
|
|
+ :xl="12"
|
|
|
+ >
|
|
|
<span>
|
|
|
日期:
|
|
|
{{ flightInfo.PlanDepartureTime && flightInfo.PlanDepartureTime.split("T")[0] }}
|
|
|
</span>
|
|
|
</el-col>
|
|
|
- <el-col :xs="24" :sm="24" :xl="12">
|
|
|
+ <el-col
|
|
|
+ :xs="24"
|
|
|
+ :sm="24"
|
|
|
+ :xl="12"
|
|
|
+ >
|
|
|
<span>
|
|
|
时间:
|
|
|
{{ flightInfo.PlanDepartureTime && flightInfo.PlanDepartureTime.split("T")[1] }}
|
|
@@ -80,65 +112,121 @@
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row>
|
|
|
- <el-col :xs="24" :sm="24" :xl="12">
|
|
|
+ <el-col
|
|
|
+ :xs="24"
|
|
|
+ :sm="24"
|
|
|
+ :xl="12"
|
|
|
+ >
|
|
|
<span>托运旅客数:</span>
|
|
|
<span>{{ flightInfo.count1 }}</span>
|
|
|
</el-col>
|
|
|
- <el-col :xs="24" :sm="24" :xl="12">
|
|
|
+ <el-col
|
|
|
+ :xs="24"
|
|
|
+ :sm="24"
|
|
|
+ :xl="12"
|
|
|
+ >
|
|
|
<span>终点行李数:</span>
|
|
|
<span>{{ flightInfo.count2 }}</span>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row>
|
|
|
- <el-col :xs="18" :sm="18" :xl="12">
|
|
|
+ <el-col
|
|
|
+ :xs="18"
|
|
|
+ :sm="18"
|
|
|
+ :xl="12"
|
|
|
+ >
|
|
|
<span>中转进行李数:</span>
|
|
|
</el-col>
|
|
|
- <el-col :xs="6" :sm="6" :xl="12">
|
|
|
+ <el-col
|
|
|
+ :xs="6"
|
|
|
+ :sm="6"
|
|
|
+ :xl="12"
|
|
|
+ >
|
|
|
<span>{{ flightInfo.count4 }}</span>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row>
|
|
|
- <el-col :xs="18" :sm="18" :xl="12">
|
|
|
+ <el-col
|
|
|
+ :xs="18"
|
|
|
+ :sm="18"
|
|
|
+ :xl="12"
|
|
|
+ >
|
|
|
<span>中转出行李数:</span>
|
|
|
</el-col>
|
|
|
- <el-col :xs="6" :sm="6" :xl="12">
|
|
|
+ <el-col
|
|
|
+ :xs="6"
|
|
|
+ :sm="6"
|
|
|
+ :xl="12"
|
|
|
+ >
|
|
|
<span>{{ flightInfo.count3 }}</span>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
</div>
|
|
|
<div class="part1_info_box">
|
|
|
<el-row>
|
|
|
- <el-col :xs="24" :sm="24" :xl="12">
|
|
|
+ <el-col
|
|
|
+ :xs="24"
|
|
|
+ :sm="24"
|
|
|
+ :xl="12"
|
|
|
+ >
|
|
|
<span>降落机场简称:</span>
|
|
|
</el-col>
|
|
|
- <el-col :xs="24" :sm="24" :xl="12">
|
|
|
+ <el-col
|
|
|
+ :xs="24"
|
|
|
+ :sm="24"
|
|
|
+ :xl="12"
|
|
|
+ >
|
|
|
<span>{{ flightInfo.landingName }}</span>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row>
|
|
|
- <el-col :xs="24" :sm="24" :xl="12">
|
|
|
+ <el-col
|
|
|
+ :xs="24"
|
|
|
+ :sm="24"
|
|
|
+ :xl="12"
|
|
|
+ >
|
|
|
<span>降落机场三字码:</span>
|
|
|
</el-col>
|
|
|
- <el-col :xs="24" :sm="24" :xl="12">
|
|
|
+ <el-col
|
|
|
+ :xs="24"
|
|
|
+ :sm="24"
|
|
|
+ :xl="12"
|
|
|
+ >
|
|
|
<span>{{ flightInfo.PlanLandingApt }}</span>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row>
|
|
|
- <el-col :xs="24" :sm="24" :xl="12">
|
|
|
+ <el-col
|
|
|
+ :xs="24"
|
|
|
+ :sm="24"
|
|
|
+ :xl="12"
|
|
|
+ >
|
|
|
<span>降落机场航站楼:</span>
|
|
|
</el-col>
|
|
|
- <el-col :xs="24" :sm="24" :xl="12">
|
|
|
+ <el-col
|
|
|
+ :xs="24"
|
|
|
+ :sm="24"
|
|
|
+ :xl="12"
|
|
|
+ >
|
|
|
<span>{{ flightInfo.LandingBuild }}</span>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row>
|
|
|
- <el-col :xs="24" :sm="24" :xl="12">
|
|
|
+ <el-col
|
|
|
+ :xs="24"
|
|
|
+ :sm="24"
|
|
|
+ :xl="12"
|
|
|
+ >
|
|
|
<span>
|
|
|
日期:
|
|
|
{{ flightInfo.ExpectLandingTime && flightInfo.ExpectLandingTime.split("T")[0] }}
|
|
|
</span>
|
|
|
</el-col>
|
|
|
- <el-col :xs="24" :sm="24" :xl="12">
|
|
|
+ <el-col
|
|
|
+ :xs="24"
|
|
|
+ :sm="24"
|
|
|
+ :xl="12"
|
|
|
+ >
|
|
|
<span>
|
|
|
时间:
|
|
|
{{ flightInfo.ExpectLandingTime && flightInfo.ExpectLandingTime.split("T")[1] }}
|
|
@@ -146,10 +234,18 @@
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
<el-row>
|
|
|
- <el-col :xs="24" :sm="24" :xl="12">
|
|
|
+ <el-col
|
|
|
+ :xs="24"
|
|
|
+ :sm="24"
|
|
|
+ :xl="12"
|
|
|
+ >
|
|
|
<span>提取转盘:{{ flightInfo.Carousel }}</span>
|
|
|
</el-col>
|
|
|
- <el-col :xs="24" :sm="24" :xl="12">
|
|
|
+ <el-col
|
|
|
+ :xs="24"
|
|
|
+ :sm="24"
|
|
|
+ :xl="12"
|
|
|
+ >
|
|
|
<span>停机位:{{ flightInfo.StandForLanding }}</span>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
@@ -275,7 +371,7 @@
|
|
|
</div>
|
|
|
<el-table
|
|
|
ref="flightBaggageTable"
|
|
|
- :data="filteredTableData"
|
|
|
+ :data="dealedTableData"
|
|
|
border
|
|
|
style="width: 100%"
|
|
|
height="calc(100vh - 80px - 16px - 16px - 344px - 8px - 204px - 62px)"
|
|
@@ -283,6 +379,7 @@
|
|
|
size="mini"
|
|
|
show-summary
|
|
|
:summary-method="summaryRow(flightBaggageTableData.length)"
|
|
|
+ :header-cell-class-name="headerCellClass"
|
|
|
:header-cell-style="{ color: '#101116' }"
|
|
|
:row-class-name="rowClass"
|
|
|
:cell-class-name="cellClass"
|
|
@@ -299,16 +396,13 @@
|
|
|
:formatter="tableFormat"
|
|
|
>
|
|
|
<template #header>
|
|
|
- <div class="table-header-cell">
|
|
|
- <span>{{ col.label }}</span>
|
|
|
- <template v-if="flightBaggageTableFilters[col.prop]">
|
|
|
- <TableHeaderCellWithFilter
|
|
|
- :label="col.label"
|
|
|
- :filter-options="flightBaggageTableFilters[col.prop]"
|
|
|
- :filter-value.sync="filterValues[col.prop]"
|
|
|
- />
|
|
|
- </template>
|
|
|
- </div>
|
|
|
+ <TableHeaderCell
|
|
|
+ :label="col.label"
|
|
|
+ :filter-options="flightBaggageTableFilters[col.prop]"
|
|
|
+ :filter-values.sync="filterValues[col.prop]"
|
|
|
+ :sortable="col.sortable"
|
|
|
+ :sort-rule.sync="tableDataSortRules[col.prop]"
|
|
|
+ />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
@@ -358,7 +452,7 @@ import TimeZoneSelector from '@/components/TimeZoneSelector'
|
|
|
import { queryMap, myQuery } from '@/api/dataIntegration'
|
|
|
import tableColsMixin from '../../mixins/tableCols'
|
|
|
import timeZoneMixin from '../../mixins/timeZone'
|
|
|
-import TableHeaderCellWithFilter from '@/components/TableHeaderCellWithFilter'
|
|
|
+import TableHeaderCell from '@/components/TableHeaderCell'
|
|
|
import { setTableFilters } from '@/utils/table'
|
|
|
import { mapGetters } from 'vuex'
|
|
|
|
|
@@ -386,13 +480,13 @@ import { mapGetters } from 'vuex'
|
|
|
// ]
|
|
|
const departureBaggageTableColumn = [
|
|
|
// { label: '序号', prop: 'index' },
|
|
|
- { label: '旅客姓名', prop: 'PassengerNameUpcase', width: 140, fixed: 'left' },
|
|
|
- { label: '行李牌号', prop: 'BagSN', width: 120, fixed: 'left' },
|
|
|
- { label: '特殊行李类型', prop: 'SpecialType', width: 120 },
|
|
|
- { label: '容器编号', prop: 'U_Device_ID', width: 120 },
|
|
|
+ { label: '旅客姓名', prop: 'PassengerNameUpcase', width: 140, fixed: 'left', filterable: true, sortable: true },
|
|
|
+ { label: '行李牌号', prop: 'BagSN', width: 120, fixed: 'left', filterable: true, sortable: true },
|
|
|
+ { label: '特殊行李类型', prop: 'SpecialType', width: 120, filterable: true, sortable: true },
|
|
|
+ { label: '容器编号', prop: 'U_Device_ID', width: 120, filterable: true, sortable: true },
|
|
|
{ label: '装载序号', prop: 'LoadSN' },
|
|
|
{ label: '值机', prop: 'checkIn', width: 140 },
|
|
|
- { label: '状态', prop: 'latestStatus' },
|
|
|
+ { label: '状态', prop: 'latestStatus', filterable: true, sortable: true },
|
|
|
{ label: '安检', prop: 'DealInfo', width: 140 },
|
|
|
{ label: '分拣', prop: 'sortLocationMark', width: 140 },
|
|
|
{ label: '装车', prop: 'loadLocationMark', width: 140 },
|
|
@@ -405,7 +499,7 @@ export default {
|
|
|
components: {
|
|
|
Dialog,
|
|
|
TimeZoneSelector,
|
|
|
- TableHeaderCellWithFilter
|
|
|
+ TableHeaderCell
|
|
|
},
|
|
|
mixins: [tableColsMixin, timeZoneMixin],
|
|
|
data() {
|
|
@@ -448,35 +542,36 @@ export default {
|
|
|
transferInBaggageTableData: [], // 中转进
|
|
|
transferOutBaggageTableData: [], // 中转出
|
|
|
flightBaggageTableData: [], // 行李列表
|
|
|
- flightBaggageTableFilters: {
|
|
|
- PassengerNameUpcase: [],
|
|
|
- BagSN: [],
|
|
|
- SpecialType: [],
|
|
|
- U_Device_ID: [],
|
|
|
- latestStatus: []
|
|
|
- },
|
|
|
- filterValues: {
|
|
|
- PassengerNameUpcase: '',
|
|
|
- BagSN: '',
|
|
|
- SpecialType: '',
|
|
|
- U_Device_ID: '',
|
|
|
- latestStatus: ''
|
|
|
- },
|
|
|
+ flightBaggageTableFilters: {},
|
|
|
+ filterValues: {},
|
|
|
+ tableDataSortRules: {},
|
|
|
warningContainers: []
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
|
...mapGetters(['clickedCells']),
|
|
|
- filteredTableData() {
|
|
|
- return this.flightBaggageTableData.filter(item => {
|
|
|
+ dealedTableData() {
|
|
|
+ const filtered = this.flightBaggageTableData.filter(item => {
|
|
|
let flag = true
|
|
|
- Object.entries(this.filterValues).forEach(([key, value]) => {
|
|
|
- if (value !== '' && item[key] !== value) {
|
|
|
+ Object.entries(this.filterValues).forEach(([key, arr]) => {
|
|
|
+ if (arr.length && !arr.includes(item[key])) {
|
|
|
flag = false
|
|
|
}
|
|
|
})
|
|
|
return flag
|
|
|
})
|
|
|
+ const sortRules = Object.entries(this.tableDataSortRules).reduce(
|
|
|
+ (pre, [key, value]) => {
|
|
|
+ if (value) {
|
|
|
+ pre[0].push(key)
|
|
|
+ value = value === 'ascending' ? 'asc' : 'desc'
|
|
|
+ pre[1].push(value)
|
|
|
+ }
|
|
|
+ return pre
|
|
|
+ },
|
|
|
+ [[], []]
|
|
|
+ )
|
|
|
+ return this._.orderBy(filtered, sortRules[0], sortRules[1])
|
|
|
}
|
|
|
},
|
|
|
watch: {
|
|
@@ -505,6 +600,17 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
+ created() {
|
|
|
+ Object.values(this.tableCols).forEach(({ prop, filterable, sortable }) => {
|
|
|
+ if (filterable) {
|
|
|
+ this.$set(this.flightBaggageTableFilters, prop, [])
|
|
|
+ this.$set(this.filterValues, prop, [])
|
|
|
+ }
|
|
|
+ if (sortable) {
|
|
|
+ this.$set(this.tableDataSortRules, prop, '')
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
mounted() {
|
|
|
this.queryData = this._.cloneDeep(this.$route.query)
|
|
|
const { FlightNO, FlightDate } = this.queryData
|
|
@@ -522,6 +628,9 @@ export default {
|
|
|
this.$refs['flightBaggageTable'].doLayout()
|
|
|
})
|
|
|
},
|
|
|
+ beforeDestroy() {
|
|
|
+ this.fullscreenLoading = false
|
|
|
+ },
|
|
|
methods: {
|
|
|
rowClass({ row, rowIndex }) {
|
|
|
const classes = []
|
|
@@ -530,6 +639,15 @@ export default {
|
|
|
}
|
|
|
return classes.join(' ')
|
|
|
},
|
|
|
+ // 给表头单元格加上 ascending 或 descending 使用 element 自带的排序箭头变色
|
|
|
+ headerCellClass({ row, column, rowIndex, columnIndex }) {
|
|
|
+ const classes = []
|
|
|
+ const rule = this.tableDataSortRules[column.property]
|
|
|
+ if (rule) {
|
|
|
+ classes.push(rule)
|
|
|
+ }
|
|
|
+ return classes.join(' ')
|
|
|
+ },
|
|
|
cellClass({ row, column, rowIndex, columnIndex }) {
|
|
|
const classes = []
|
|
|
if (
|
|
@@ -780,7 +898,7 @@ export default {
|
|
|
&:last-child {
|
|
|
margin: 0;
|
|
|
}
|
|
|
- @media only screen and (max-width: 1600px) {
|
|
|
+ @media only screen and (max-width: 1919px) {
|
|
|
.el-col-sm-24:nth-child(2) {
|
|
|
margin-top: 24px;
|
|
|
}
|