|
@@ -29,36 +29,10 @@
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item prop="inboundCarrier">
|
|
|
- <el-cascader
|
|
|
- v-model="formData.inboundCarrier"
|
|
|
- class="input-shadow"
|
|
|
- style="width: 150px"
|
|
|
- size="small"
|
|
|
- :options="carrierProps"
|
|
|
- :props="optionProps"
|
|
|
- placeholder="进港承运航司"
|
|
|
- collapse-tags
|
|
|
- clearable
|
|
|
- filterable
|
|
|
- default-first-option
|
|
|
- @change="resetLoopEvent"
|
|
|
- />
|
|
|
+ <el-cascader v-model="formData.inboundCarrier" class="input-shadow" style="width: 150px" size="small" :options="carrierProps" :props="optionProps" placeholder="进港承运航司" collapse-tags clearable filterable default-first-option @change="resetLoopEvent" />
|
|
|
</el-form-item>
|
|
|
<el-form-item prop="outgoingAirline">
|
|
|
- <el-cascader
|
|
|
- v-model="formData.outgoingAirline"
|
|
|
- class="input-shadow"
|
|
|
- style="width: 150px"
|
|
|
- size="small"
|
|
|
- :options="carrierPropsop"
|
|
|
- :props="optionPropser"
|
|
|
- placeholder="离港承运航司"
|
|
|
- collapse-tags
|
|
|
- clearable
|
|
|
- filterable
|
|
|
- default-first-option
|
|
|
- @change="resetLoopEvent"
|
|
|
- />
|
|
|
+ <el-cascader v-model="formData.outgoingAirline" class="input-shadow" style="width: 150px" size="small" :options="carrierPropsop" :props="optionPropser" placeholder="离港承运航司" collapse-tags clearable filterable default-first-option @change="resetLoopEvent" />
|
|
|
</el-form-item>
|
|
|
<!-- <el-form-item prop="startDate">
|
|
|
<el-date-picker
|
|
@@ -85,18 +59,7 @@
|
|
|
/>
|
|
|
</el-form-item> -->
|
|
|
<el-form-item prop="flightDate" label="航班日期">
|
|
|
- <el-date-picker
|
|
|
- v-model="formData.flightDate"
|
|
|
- :clearable="false"
|
|
|
- size="small"
|
|
|
- style="width: 300px"
|
|
|
- type="daterange"
|
|
|
- value-format="yyyy-MM-dd"
|
|
|
- start-placeholder="开始日期"
|
|
|
- end-placeholder="结束日期"
|
|
|
- :picker-options="dateRangePickerOptions"
|
|
|
- @change="dateChangeHandler"
|
|
|
- />
|
|
|
+ <el-date-picker v-model="formData.flightDate" :clearable="false" size="small" style="width: 300px" type="daterange" value-format="yyyy-MM-dd" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="dateRangePickerOptions" @change="dateChangeHandler" />
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
|
<div class="box-item">
|
|
@@ -114,18 +77,7 @@
|
|
|
<el-form-item prop="search">
|
|
|
<el-popover :value="popoverVisible" placement="bottom" trigger="manual">
|
|
|
<span>请输入航班号(示例:CA1234)或行李牌号(示例:1234567890)</span>
|
|
|
- <el-input
|
|
|
- slot="reference"
|
|
|
- v-model="formData.search"
|
|
|
- class="input-shadow"
|
|
|
- style="width: 240px"
|
|
|
- size="small"
|
|
|
- placeholder="请输入内容"
|
|
|
- prefix-icon="el-icon-search"
|
|
|
- clearable
|
|
|
- @focus="popoverVisible = true"
|
|
|
- @blur="popoverVisible = false"
|
|
|
- />
|
|
|
+ <el-input slot="reference" v-model="formData.search" class="input-shadow" style="width: 240px" size="small" placeholder="请输入内容" prefix-icon="el-icon-search" clearable @focus="popoverVisible = true" @blur="popoverVisible = false" />
|
|
|
</el-popover>
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
@@ -157,33 +109,12 @@
|
|
|
</div>
|
|
|
<!--表格-->
|
|
|
<div v-loading="loading" class="terminal-table" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.8)">
|
|
|
- <el-table
|
|
|
- ref="table"
|
|
|
- class="table"
|
|
|
- :data="dealedTableData"
|
|
|
- :height="computedTableHeight"
|
|
|
- show-summary
|
|
|
- :summary-method="summaryMethod"
|
|
|
- :span-method="arraySpanMethod"
|
|
|
- :header-cell-class-name="headerCellClass"
|
|
|
- :row-class-name="tableRowClassName"
|
|
|
- :cell-class-name="cellClass"
|
|
|
- border
|
|
|
- stripe
|
|
|
- fit
|
|
|
- @cell-click="cellClickHandler"
|
|
|
- >
|
|
|
+ <el-table ref="table" class="table" :data="dealedTableData" :height="computedTableHeight" show-summary :summary-method="summaryMethod" :span-method="arraySpanMethod" :header-cell-class-name="headerCellClass" :row-class-name="tableRowClassName" :cell-class-name="cellClass" border stripe fit @cell-click="cellClickHandler">
|
|
|
<el-table-column v-for="col in tableColsCopy" :key="col.prop" :prop="col.prop" :label="col.label" :width="col.width" :fixed="col.fixed">
|
|
|
<el-table-column v-for="childCol in col.children" :key="childCol.prop" :prop="childCol.prop" :label="childCol.label" :width="childCol.width" :formatter="tableFormat">
|
|
|
<template #header>
|
|
|
<el-tooltip :content="childCol.desc || childCol.label" placement="top">
|
|
|
- <TableHeaderCell
|
|
|
- :label="childCol.label"
|
|
|
- :filter-options="tableDataFilters[childCol.prop]"
|
|
|
- :filter-values.sync="filterValues[childCol.prop]"
|
|
|
- :sortable="childCol.sortable"
|
|
|
- :sort-rule.sync="tableDataSortRules[childCol.prop]"
|
|
|
- />
|
|
|
+ <TableHeaderCell :label="childCol.label" :filter-options="tableDataFilters[childCol.prop]" :filter-values.sync="filterValues[childCol.prop]" :sortable="childCol.sortable" :sort-rule.sync="tableDataSortRules[childCol.prop]" />
|
|
|
</el-tooltip>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
@@ -195,19 +126,10 @@
|
|
|
<div class="dialog-wrapper">
|
|
|
<div class="title">列设置</div>
|
|
|
<div class="content">
|
|
|
- <el-tree
|
|
|
- :data="tableCols"
|
|
|
- :class="colsCheckClass"
|
|
|
- show-checkbox
|
|
|
- node-key="index"
|
|
|
- :default-expand-all="true"
|
|
|
- :props="{
|
|
|
+ <el-tree :data="tableCols" :class="colsCheckClass" show-checkbox node-key="index" :default-expand-all="true" :props="{
|
|
|
label: 'label',
|
|
|
children: 'children',
|
|
|
- }"
|
|
|
- :default-checked-keys="checkedKeysTemp"
|
|
|
- @check="handleCheck"
|
|
|
- />
|
|
|
+ }" :default-checked-keys="checkedKeysTemp" @check="handleCheck" />
|
|
|
</div>
|
|
|
<div class="foot right t30">
|
|
|
<el-button size="medium" class="r24" type="primary" @click="onCheck">确定</el-button>
|
|
@@ -235,7 +157,7 @@ export default {
|
|
|
name: "DepartureTerminalView",
|
|
|
components: { Dialog, TimeZoneSelector, TableHeaderCell },
|
|
|
mixins: [terminalMixin, formMixin, tableColsMixin, timeZoneMixin],
|
|
|
- data() {
|
|
|
+ data () {
|
|
|
return {
|
|
|
optionProps: {
|
|
|
value: "inAicompanyCode2",
|
|
@@ -411,14 +333,14 @@ export default {
|
|
|
};
|
|
|
},
|
|
|
computed: {
|
|
|
- singleDay() {
|
|
|
+ singleDay () {
|
|
|
return this.startDate === this.endDate;
|
|
|
},
|
|
|
...mapGetters(["timeZone"]),
|
|
|
},
|
|
|
watch: {
|
|
|
dealedTableData: {
|
|
|
- handler(val) {
|
|
|
+ handler (val) {
|
|
|
this.spanArr = [];
|
|
|
let contactDot = this.contactDot;
|
|
|
val.forEach((item, index, arr) => {
|
|
@@ -438,10 +360,10 @@ export default {
|
|
|
deep: true,
|
|
|
},
|
|
|
},
|
|
|
- created() {
|
|
|
+ created () {
|
|
|
// this.getAirPortData()
|
|
|
},
|
|
|
- mounted() {
|
|
|
+ mounted () {
|
|
|
this.$refs["form"].validateField("flightDate");
|
|
|
this.getAirPortData();
|
|
|
this.table = this.$refs.table.bodyWrapper;
|
|
@@ -450,7 +372,7 @@ export default {
|
|
|
that.scrollTop = this.table.scrollTop;
|
|
|
});
|
|
|
},
|
|
|
- activated() {
|
|
|
+ activated () {
|
|
|
this.table.scrollTop = this.scrollTop;
|
|
|
this.getTableData();
|
|
|
this.getWarningData();
|
|
@@ -468,20 +390,20 @@ export default {
|
|
|
// this.formData.flightDate[1] = endDate
|
|
|
// }
|
|
|
},
|
|
|
- deactivated() {
|
|
|
+ deactivated () {
|
|
|
if (this.loopEvent) {
|
|
|
clearInterval(this.loopEvent);
|
|
|
this.loopEvent = null;
|
|
|
}
|
|
|
},
|
|
|
- beforeDestroy() {
|
|
|
+ beforeDestroy () {
|
|
|
if (this.loopEvent) {
|
|
|
clearInterval(this.loopEvent);
|
|
|
this.loopEvent = null;
|
|
|
}
|
|
|
},
|
|
|
methods: {
|
|
|
- async getWarningData() {
|
|
|
+ async getWarningData () {
|
|
|
try {
|
|
|
const res = await getQuery({
|
|
|
id: DATACONTENT_ID.departureWarningId,
|
|
@@ -497,14 +419,14 @@ export default {
|
|
|
this.$message.error("失败");
|
|
|
}
|
|
|
},
|
|
|
- resetLoopEvent() {
|
|
|
+ resetLoopEvent () {
|
|
|
this.loading = true;
|
|
|
this.hasSetTableScroll = false;
|
|
|
this.loopEvent && clearInterval(this.loopEvent);
|
|
|
this.getTableData();
|
|
|
this.loopEvent = setInterval(this.getTableData, LOOP_INTERVAL.transferArrivalTable);
|
|
|
},
|
|
|
- headerCellClass({ row, column }) {
|
|
|
+ headerCellClass ({ row, column }) {
|
|
|
const classes = [];
|
|
|
const rule = this.tableDataSortRules[column.property];
|
|
|
if (rule) {
|
|
@@ -512,7 +434,7 @@ export default {
|
|
|
}
|
|
|
return classes.join(" ");
|
|
|
},
|
|
|
- tableRowClassName({ row, rowIndex }) {
|
|
|
+ tableRowClassName ({ row, rowIndex }) {
|
|
|
const classes = [];
|
|
|
if (row.hasArrived) {
|
|
|
classes.push("bgl-hui");
|
|
@@ -522,7 +444,7 @@ export default {
|
|
|
}
|
|
|
return classes.join(" ");
|
|
|
},
|
|
|
- changeView() {
|
|
|
+ changeView () {
|
|
|
// const query = {
|
|
|
// ...this.formData,
|
|
|
// startDate: this.startDate,
|
|
@@ -535,18 +457,18 @@ export default {
|
|
|
// })
|
|
|
this.$router.push("/transfer/departure");
|
|
|
},
|
|
|
- airPortChange() {
|
|
|
+ airPortChange () {
|
|
|
this.getAviationData();
|
|
|
this.upAviationData();
|
|
|
this.resetLoopEvent();
|
|
|
},
|
|
|
- dateChangeHandler() {
|
|
|
+ dateChangeHandler () {
|
|
|
this.getAviationData();
|
|
|
this.upAviationData();
|
|
|
this.resetLoopEvent();
|
|
|
},
|
|
|
// 选择机场
|
|
|
- async getAirPortData() {
|
|
|
+ async getAirPortData () {
|
|
|
try {
|
|
|
const res = await getQuery({
|
|
|
id: DATACONTENT_ID.departureAirId,
|
|
@@ -566,7 +488,7 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
// 选择航司
|
|
|
- async getAviationData() {
|
|
|
+ async getAviationData () {
|
|
|
try {
|
|
|
const res = await getQuery({
|
|
|
id: DATACONTENT_ID.departureAviJoinId,
|
|
@@ -582,7 +504,7 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
// 选择航司
|
|
|
- async upAviationData() {
|
|
|
+ async upAviationData () {
|
|
|
try {
|
|
|
const res = await getQuery({
|
|
|
id: DATACONTENT_ID.departureAviLeaveId,
|
|
@@ -608,7 +530,7 @@ export default {
|
|
|
// this.flightAttrQuery(params)
|
|
|
// },
|
|
|
// 获取表格数据
|
|
|
- async getTableData() {
|
|
|
+ async getTableData () {
|
|
|
if (!this.formData.currentAirport || !this.startDate || !this.endDate) {
|
|
|
return;
|
|
|
}
|
|
@@ -647,7 +569,7 @@ export default {
|
|
|
this.loading = false;
|
|
|
}
|
|
|
},
|
|
|
- initTableData(tableData) {
|
|
|
+ initTableData (tableData) {
|
|
|
const currentTime = new Date();
|
|
|
const curTime = this.formatTime(currentTime);
|
|
|
this.arrivalCount = 0;
|
|
@@ -667,27 +589,28 @@ export default {
|
|
|
const planTime = this.formatTime(timeInZone((item.actualDepartureTime ?? "").replace("T", " "), this.timeZone), 2);
|
|
|
const capTime = Math.ceil((planTime - curTime) / (1000 * 60));
|
|
|
if (Number(startTime) - Number(curTime) < 0 && Number(endTime) - Number(curTime) > 0) {
|
|
|
+ const newItem = _.cloneDeep(item);
|
|
|
if (p.flightNO != "" && p.flightNO == item.flightNO) {
|
|
|
if (capTime - p.warningDuration < 0 && capTime - p.alarmDuration > 0) {
|
|
|
item["warningState"] = 1;
|
|
|
- const returnedTarget = Object.assign(item, p);
|
|
|
+ const returnedTarget = Object.assign(newItem, p);
|
|
|
this.sendLog(returnedTarget);
|
|
|
}
|
|
|
if (capTime - p.alarmDuration < 0) {
|
|
|
item["warningState"] = 2;
|
|
|
- const returnedTarget = Object.assign(item, p);
|
|
|
+ const returnedTarget = Object.assign(newItem, p);
|
|
|
this.sendLog(returnedTarget);
|
|
|
}
|
|
|
} else if (p.flightNO == "" && p.IATACode != "") {
|
|
|
if (item.flightNO.substring(0, 2) == p.IATACode) {
|
|
|
if (capTime - p.warningDuration < 0 && capTime - p.alarmDuration > 0) {
|
|
|
item["warningState"] = 1;
|
|
|
- const returnedTarget = Object.assign(item, p);
|
|
|
+ const returnedTarget = Object.assign(newItem, p);
|
|
|
this.sendLog(returnedTarget);
|
|
|
}
|
|
|
if (capTime - p.alarmDuration < 0) {
|
|
|
item["warningState"] = 2;
|
|
|
- const returnedTarget = Object.assign(item, p);
|
|
|
+ const returnedTarget = Object.assign(newItem, p);
|
|
|
this.sendLog(returnedTarget);
|
|
|
}
|
|
|
}
|
|
@@ -704,7 +627,7 @@ export default {
|
|
|
this.setTableScroll();
|
|
|
});
|
|
|
},
|
|
|
- formatTime(date, type = 1) {
|
|
|
+ formatTime (date, type = 1) {
|
|
|
let time = null;
|
|
|
if (type == 1) {
|
|
|
time = parseTime(date, "{y}-{m}-{d} {h}:{i}:{s}");
|
|
@@ -714,7 +637,7 @@ export default {
|
|
|
const newTimt = new Date(time);
|
|
|
return newTimt.getTime();
|
|
|
},
|
|
|
- async sendLog(obj) {
|
|
|
+ async sendLog (obj) {
|
|
|
try {
|
|
|
const newObj = {
|
|
|
logTime: parseTime(new Date(), "{y}-{m}-{d} {h}:{i}:{s}"),
|
|
@@ -733,7 +656,7 @@ export default {
|
|
|
this.$message.error("失败");
|
|
|
}
|
|
|
},
|
|
|
- hasArrived(flight) {
|
|
|
+ hasArrived (flight) {
|
|
|
if (flight.actualLandingTime) {
|
|
|
const now = new Date();
|
|
|
const actualLandingTime = new Date(flight.actualLandingTime.replace("T", " "));
|
|
@@ -743,7 +666,7 @@ export default {
|
|
|
}
|
|
|
return flight["hasArrived"];
|
|
|
},
|
|
|
- setTableScroll() {
|
|
|
+ setTableScroll () {
|
|
|
if (!this.singleDay || this.hasSetTableScroll || this.arrivalCount === 0) {
|
|
|
return;
|
|
|
}
|
|
@@ -763,7 +686,7 @@ export default {
|
|
|
}, 0);
|
|
|
this.hasSetTableScroll = true;
|
|
|
},
|
|
|
- setNumberTransform() {
|
|
|
+ setNumberTransform () {
|
|
|
const numberItems = this.$refs.numberItem; // 拿到数字的ref,计算元素数量
|
|
|
const numberArr = this.orderNum.filter((item) => !isNaN(item));
|
|
|
// 结合CSS 对数字字符进行滚动,显示订单数量
|
|
@@ -773,7 +696,7 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
|
|
|
- toOrderNum(num) {
|
|
|
+ toOrderNum (num) {
|
|
|
num = num.toString();
|
|
|
if (num.length < 6) {
|
|
|
num = "0" + num; // 如未满八位数,添加"0"补位
|
|
@@ -786,7 +709,7 @@ export default {
|
|
|
}
|
|
|
this.setNumberTransform();
|
|
|
},
|
|
|
- arraySpanMethod({ row, column, rowIndex, columnIndex }) {
|
|
|
+ arraySpanMethod ({ row, column, rowIndex, columnIndex }) {
|
|
|
for (let i = 0; i < 7; i++) {
|
|
|
if (columnIndex === i) {
|
|
|
const _row = this.spanArr[rowIndex];
|
|
@@ -798,7 +721,7 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
- exportHandler(refName, tableName) {
|
|
|
+ exportHandler (refName, tableName) {
|
|
|
if (this.loading) {
|
|
|
return;
|
|
|
}
|