Files
airport-chengdu-web/src/app/pages/seasonal-plan/seasonal-plan.component.ts
T

530 lines
19 KiB
TypeScript

import { Component, OnInit } from '@angular/core';
import { HttpClientService } from '../../services/http-client.service';
import { HttpParams } from '@angular/common/http';
import * as $ from 'jquery';
import { BasicDataService } from '../basic-data-service'
@Component({
selector: 'app-seasonal-plan',
templateUrl: './seasonal-plan.component.html',
styleUrls: ['./seasonal-plan.component.scss']
})
export class SeasonalPlanComponent implements OnInit {
constructor(
private httpCilent: HttpClientService,
private basicDataService: BasicDataService
) { }
//勾选复选框
public checkboxGroup = {
'related': false,
'detail': false
}
// 搜索条件
SEARCH = ''; //手动输入条件
FLT_POS = 1; //过滤还是定位
SEL_COL = ''; //选择列名
public filterItems = {
airlineId: '', //航空公司
routeType: '', //航线类别
flightTypeCode: '', //航班类别
arriOrDept: '', //到达/出发
flightTask: '', //航班任务
}
public tabClose: boolean = true;
seasonals : Array<any>;
airlines : Array<any>; //航空公司
public row_state: any = { renderFlight: {} };
public render_data: Array<object> = []; //显示数据,即需要显示的数据
public return_data: Array<object> = []; //下拉框显示数据
ngOnInit() {
/* 获取季度计划信息 */
this.httpCilent.get('/adminapi/schedule/flightSchdSeasons').subscribe(
data => {
this.seasonals = data.body;
this.render_data = this.seasonals;
if(this.airlines && this.airlines.length > 0){//航空公司列表数据转换
this.basicDataTransHandle();
}
this.render_data.forEach(element => {//航线类别列表显示数据转换
if (element['routeType'] == 'D') {
element['routeType'] = '国内'
return element['routeType'];
}
if(element['routeType'] == 'I'){
element['routeType'] = '国际'
return element['routeType'];
}
if(element['routeType'] == 'M'){
element['routeType'] = '混合'
return element['routeType'];
}
if(element['routeType'] = 'R'){
element['routeType'] = '地区'
return element['routeType'];
}
});
this.render_data.forEach(item => {//到达/出发列表显示数据转换
if(item['arriOrDept'] == 'A'){
item['arriOrDept'] = '到达'
return item['arriOrDept']
}
if(item['arriOrDept'] == 'D'){
item['arriOrDept'] = '出发'
return item['arriOrDept']
}
});
this.render_data.forEach(item => {//航班类别列表显示数据转换
if(item['flightTypeCode'] == 'P'){
item['flightTypeCode'] = '客机'
return item['flightTypeCode']
}
if(item['flightTypeCode'] == 'F'){
item['flightTypeCode'] = '货机'
return item['flightTypeCode']
}
if(item['flightTypeCode'] == 'B'){
item['flightTypeCode'] = '专机'
return item['flightTypeCode']
}
if(item['flightTypeCode'] == 'O'){
item['flightTypeCode'] = '公务机'
return item['flightTypeCode']
}
if(item['flightTypeCode'] == 'M'){
item['flightTypeCode'] = '军机'
return item['flightTypeCode']
}
if(item['flightTypeCode'] == 'X'){
item['flightTypeCode'] = '其他'
return item['flightTypeCode']
}
});
this.render_data.forEach(item => {//航班任务列表显示数据转换
if(item['flightTask'] == 'S'){
item['flightTask'] = '正班'
return item['flightTask']
}
if(item['flightTask'] == 'N'){
item['flightTask'] = '包机'
return item['flightTask']
}
if(item['flightTask'] == 'E'){
item['flightTask'] = '急救'
return item['flightTask']
}
if(item['flightTask'] == 'B'){
item['flightTask'] = '专机'
return item['flightTask']
}
if(item['flightTask'] == 'G'){
item['flightTask'] = '通用'
return item['flightTask']
}
if(item['flightTask'] == 'J'){
item['flightTask'] = '加班'
return item['flightTask']
}
if(item['flightTask'] == 'M'){
item['flightTask'] = '军用'
return item['flightTask']
}
if(item['flightTask'] == 'Q'){
item['flightTask'] = '补班'
return item['flightTask']
}
if(item['flightTask'] == 'X'){
item['flightTask'] = '其他'
return item['flightTask']
}
if(item['flightTask'] == 'A'){
item['flightTask'] = '计划外'
return item['flightTask']
}
});
}
)
//航空公司
this.airlines = this.basicDataService.airline;
this.basicDataService.airline_subject.subscribe(
data=>{
this.airlines = data;
}
)
/**
* 固定表头
*/
var tableCont = document.querySelector('#table-container');
function scrollHandle (){
var scrollTop = this.scrollTop;
this.querySelector('thead').style.transform = 'translateY(' + scrollTop + 'px)';
}
tableCont.addEventListener('scroll',scrollHandle);
}
//航空公司名称数据转换处理
basicDataTransHandle() {
this.render_data.forEach(item => {
let airlineLinkIndex = this.airlines.findIndex(val => val.airlineId === item['airlineId']);
item['airlineChnName'] = this.airlines[airlineLinkIndex].airlineName;
})
}
/**
* 复选框勾选事件
*/
checkboxChange() {
for (const key in this.checkboxGroup) {
if (this.checkboxGroup.hasOwnProperty(key)) {
if (this.checkboxGroup[key]) {
this.tabClose = false;
break;
} else {
this.tabClose = true;
continue;
}
}
}
}
/**
* tab项切换事件
*/
nzClick() {
}
/**
* 刷新
*/
refresh() {
this.render_data.reverse();
}
/**
* 选中某行
* @param i
*/
selectRow(i) {
this.row_state = i;
}
//输入框回车事件
inputEnter() {
if (this.FLT_POS === 1) {
this.inputFilter(this.seasonals)
} else {
this.inputFilter(this.seasonals)
this.inputPosition(this.seasonals)
}
}
//下拉框选择筛选
selectChange() {
this.return_data = this.seasonals.filter(item=>{
let is_satis = true;
if(item['routeType'] == '国内'){
item['routeType'] = 'D'
}
if(item['routeType'] == '国际'){
item['routeType'] = 'I'
}
if(item['routeType'] == '混合'){
item['routeType'] = 'M'
}
if(item['routeType'] == '地区'){
item['routeType'] = 'R'
}
//到达/出发
if(item['arriOrDept'] == '到达'){
item['arriOrDept'] = 'A'
}
if(item['arriOrDept'] == '出发'){
item['arriOrDept'] = 'D'
}
//航班类别
if(item['flightTypeCode'] == '客机'){
item['flightTypeCode'] = 'P'
}
if(item['flightTypeCode'] == '货机'){
item['flightTypeCode'] = 'F'
}
if(item['flightTypeCode'] == '专机'){
item['flightTypeCode'] = 'B'
}
if(item['flightTypeCode'] == '公务机'){
item['flightTypeCode'] = 'O'
}
if(item['flightTypeCode'] == '军机'){
item['flightTypeCode'] = 'M'
}
if(item['flightTypeCode'] == '其他'){
item['flightTypeCode'] = 'X'
}
//航班任务
if(item['flightTask'] == '正班'){
item['flightTask'] = 'S'
}
if(item['flightTask'] == '包机'){
item['flightTask'] = 'N'
}
if(item['flightTask'] == '急救'){
item['flightTask'] = 'E'
}
if(item['flightTask'] == '专机'){
item['flightTask'] = 'B'
}
if(item['flightTask'] == '通用'){
item['flightTask'] = 'G'
}
if(item['flightTask'] == '加班'){
item['flightTask'] = 'J'
}
if(item['flightTask'] == '军用'){
item['flightTask'] = 'M'
}
if(item['flightTask'] == '补班'){
item['flightTask'] = 'Q'
}
if(item['flightTask'] == '其他'){
item['flightTask'] = 'X'
}
if(item['flightTask'] == '计划外'){
item['flightTask'] = 'A'
}
for (const key in this.filterItems) {
if (this.filterItems.hasOwnProperty(key) && this.filterItems[key]) {
if (item[key] === +this.filterItems[key] || item[key] === this.filterItems[key]) {
is_satis = true;
continue;
}else {
is_satis = false;
break;
}
}
}
return is_satis;
})
this.return_data.forEach(element => {//航线类别列表显示数据转换
if (element['routeType'] == 'D') {
element['routeType'] = '国内'
return element['routeType'];
}
if(element['routeType'] == 'I'){
element['routeType'] = '国际'
return element['routeType'];
}
if(element['routeType'] == 'M'){
element['routeType'] = '混合'
return element['routeType'];
}
if(element['routeType'] == 'R'){
element['routeType'] = '地区'
return element['routeType'];
}
});
this.return_data.forEach(item => {//到达/出发列表显示数据转换
if(item['arriOrDept'] == 'A'){
item['arriOrDept'] = '到达'
return item['arriOrDept']
}
if(item['arriOrDept'] == 'D'){
item['arriOrDept'] = '出发'
return item['arriOrDept']
}
});
this.return_data.forEach(item => {//航班类别列表显示数据转换
if(item['flightTypeCode'] == 'P'){
item['flightTypeCode'] = '客机'
return item['flightTypeCode']
}
if(item['flightTypeCode'] == 'F'){
item['flightTypeCode'] = '货机'
return item['flightTypeCode']
}
if(item['flightTypeCode'] == 'B'){
item['flightTypeCode'] = '专机'
return item['flightTypeCode']
}
if(item['flightTypeCode'] == 'O'){
item['flightTypeCode'] = '公务机'
return item['flightTypeCode']
}
if(item['flightTypeCode'] == 'M'){
item['flightTypeCode'] = '军机'
return item['flightTypeCode']
}
if(item['flightTypeCode'] == 'X'){
item['flightTypeCode'] = '其他'
return item['flightTypeCode']
}
});
this.return_data.forEach(item => {//航班任务列表显示数据转换
if(item['flightTask'] == 'S'){
item['flightTask'] = '正班'
return item['flightTask']
}
if(item['flightTask'] == 'N'){
item['flightTask'] = '包机'
return item['flightTask']
}
if(item['flightTask'] == 'E'){
item['flightTask'] = '急救'
return item['flightTask']
}
if(item['flightTask'] == 'B'){
item['flightTask'] = '专机'
return item['flightTask']
}
if(item['flightTask'] == 'G'){
item['flightTask'] = '通用'
return item['flightTask']
}
if(item['flightTask'] == 'J'){
item['flightTask'] = '加班'
return item['flightTask']
}
if(item['flightTask'] == 'M'){
item['flightTask'] = '军用'
return item['flightTask']
}
if(item['flightTask'] == 'Q'){
item['flightTask'] = '补班'
return item['flightTask']
}
if(item['flightTask'] == 'X'){
item['flightTask'] = '其他'
return item['flightTask']
}
if(item['flightTask'] == 'A'){
item['flightTask'] = '计划外'
return item['flightTask']
}
});
this.render_data = this.return_data;
}
//输入框筛选
inputFilter(filterData) {
if (this.SEARCH) {
if (this.SEL_COL) {
let sel_col = this.SEL_COL;
filterData = filterData.filter(item => {
if (item[sel_col]) {
if (item[sel_col].toString().match(new RegExp(this.SEARCH, 'i'))) {
return true;
}
} else {
if (this.SEARCH) {
return false;
} else {
return true;
}
}
})
} else {
filterData = filterData.filter(item => {
let is_satis = false;
for (const key in item) {
if (item.hasOwnProperty(key)) {
if (item[key]) {
if (item[key].toString().match(new RegExp(this.SEARCH, 'i'))) {
is_satis = true;
break;
} else {
is_satis = false;
continue;
}
} else {
if (this.SEARCH) {
is_satis = false;
continue;
} else {
is_satis = true;
break;
}
}
} else {
continue;
}
}
return is_satis;
})
}
}
this.render_data = filterData;
this.row_state = this.render_data.length > 0 ? this.render_data[0] : { renderFlight: {} };
}
positionArray: Array<any> = [];
positionArrayIndex: number = 0;
//输入框定位
inputPosition(filterData) {
let transArray = []
if (this.SEL_COL) {
let sel_col = this.SEL_COL;
filterData.forEach(element => {
if (element[sel_col]) {
if (element[sel_col].toString().match(new RegExp(this.SEARCH, 'i'))) {
transArray.push(element)
}
} else {
if (!this.SEARCH) {
transArray.push(element)
}
}
});
} else {
filterData.forEach(element => {
for (const key in element) {
if (element.hasOwnProperty(key)) {
if (element[key]) {
if (element[key].toString().match(new RegExp(this.SEARCH, 'i'))) {
transArray.push(element)
break;
} else {
continue;
}
} else {
if (this.SEARCH) {
continue;
} else {
transArray.push(element)
break;
}
}
} else {
continue;
}
}
});
}
if (transArray.length > 0) {
if (transArray.toString() == this.positionArray.toString()) {
this.positionArrayIndex++;
if (this.positionArrayIndex === this.positionArray.length) {
this.positionArrayIndex = 0;
}
this.row_state = this.positionArray[this.positionArrayIndex];
} else {
this.positionArray = transArray;
this.positionArrayIndex = 0;
this.row_state = this.positionArray[this.positionArrayIndex];
}
} else {
alert('没有搜索到相关数据');
}
let tr = $(".selected");
let objTr = tr[0];
if (objTr) {
$("#table-container").animate({ scrollTop: objTr.offsetTop - 42 }, "slow");
}
}
}