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 ) { } // 搜索条件 SEARCH = ''; //手动输入条件 FLT_POS = 1; //过滤还是定位 SEL_COL = ''; //选择列名 public filterItems = { airlineId: '', //航空公司 routeType: '', //航线类别 flightTypeCode: '', //航班类别 arriOrDept: '', //到达/出发 flightTask: '', //航班任务 } seasonals : Array; airlines : Array; //航空公司 public row_state: any = { renderFlight: {} }; public render_data: Array = []; //显示数据,即需要显示的数据 public return_data: Array = []; //下拉框显示数据 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; }) } /** * 刷新 */ 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 = []; 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]; $("#table-container").animate({ scrollTop: objTr.offsetTop - 42 }, "slow"); } }