diff --git a/src/app/pages/basic-data/airline/airline.component.html b/src/app/pages/basic-data/airline/airline.component.html index fca1e01..5fde90d 100644 --- a/src/app/pages/basic-data/airline/airline.component.html +++ b/src/app/pages/basic-data/airline/airline.component.html @@ -14,7 +14,7 @@ 查找定位 - +
- {{airline_col.COL_CN}} + 上级母公司 + - + {{i+1}} - - {{airline_row['renderFlight'][airline_col.COL_CODE]}} + {{airline.airlineCode}} + {{airline.airlineName}} + {{airline.briefNameChn}} + {{airline.airlineNameEng}} + {{airline.briefNameEng}} + {{airline.airlineCodeIata}} + {{airline.airlineCodeCaa}} + {{airline.airlineCodeIcao}} + {{airline.parentAirlineId}} + diff --git a/src/app/pages/basic-data/airline/airline.component.ts b/src/app/pages/basic-data/airline/airline.component.ts index 4a26cea..114b9a2 100644 --- a/src/app/pages/basic-data/airline/airline.component.ts +++ b/src/app/pages/basic-data/airline/airline.component.ts @@ -1,139 +1,42 @@ import { Component, OnInit } from '@angular/core'; -import { ChangeDetectorRef } from '@angular/core'; import { HttpClientService } from '../../../services/http-client.service'; -import dateFormatter from '../../../utils/data-formatter'; +import { BasicDataService } from '../../basic-data-service' import { HttpParams } from '@angular/common/http'; import * as $ from 'jquery'; - @Component({ - selector: 'app-airline', - templateUrl: './airline.component.html', - styleUrls: ['./airline.component.scss'] + selector: 'app-airline', + templateUrl: './airline.component.html', + styleUrls: ['./airline.component.scss'] }) export class AirlineComponent implements OnInit { - constructor( - private httpCilent: HttpClientService, - private changeDetectorRef: ChangeDetectorRef -) { } + constructor( + private httpCilent: HttpClientService, + private basicDataService: BasicDataService + ) { } -public raw_data: Array = []; //原始数据,即航班计划 + // 搜索条件 + SEARCH = ''; //手动输入条件 + FLT_POS = 1; //过滤还是定位 + SEL_COL = ''; //选择列名 -public combined_data: Array = []; //组合数据,即链接航班,显示信息等组合好之后的数据 - -public render_data: Array = []; //显示数据,即需要显示的数据 - -public airline_lists: Array; //列数据 - -public row_state: any = { renderFlight: {} }; - -// 搜索条件 -SEARCH = ''; //手动输入条件 -FLT_POS = 1; //过滤还是定位 -SEL_COL = ''; //选择列名 - -public filterItems = { - JT: '', //航空集团 - HZ: '', //航班代理 -} - -public formatter = { - 'JT': { - 'GH': '国内航空集团', - 'CH': '国际航空集团', - "QH": '其他航空集团' - }, - 'HZ': { - 'GZ': '广州', - 'XG': '香港华明', - "QT": '其他城市' - }, - 'SODT': dateFormatter, - 'ESTT': dateFormatter, - 'ACTT': dateFormatter -} - -selectRow(i) { - this.row_state = i; - this.changeDetectorRef.detectChanges(); -} - -getColor(col_CODE) { - if (col_CODE === 'SODT') { - return 'skyblue' - } else { - return null + airlines:Array; + public row_state: any = { renderFlight: {} }; + public render_data: Array = []; //显示数据,即需要显示的数据 + public return_data: Array = []; //下拉框显示数据 + //下拉框 + public filterItems = { + airlineName:'', + briefNameChn:'', } -} - -ngOnInit() { - this.changeDetectorRef.detach(); - /* 获取显示列 */ - this.httpCilent.get('/assets/mock-data/airline-code.json').subscribe( - data => { - data.sort(function (a, b) { - return (a['COL_ORDER'] - b['COL_ORDER']); - }) - this.airline_lists = data; - } - ) - /* 获取航空公司信息 */ - this.httpCilent.get('/assets/mock-data/airline-code-data.json').subscribe( - data => { - //解析数据 - data.forEach(element => { - this.raw_data.push(JSON.parse(element.value)); - }); - - let combined_linked_data = this.raw_data; - - combined_linked_data.forEach(element => { - let row_flights = {}; - let render_flight = {}; - let render_pre_flight = {}; - let render_rea_flight = {}; - row_flights['preFlight'] = element; - - for (let i = 0; i < this.airline_lists.length; i++) { - let key = this.airline_lists[i]['COL_CODE'] - render_flight[key] = typeof (this.formatter[key]) === 'function' ? this.formatter[key](row_flights['preFlight'][key], 1) : this.formatter[key] ? this.formatter[key][row_flights['preFlight'][key]] : row_flights['preFlight'][key]; - } - row_flights['renderFlight'] = render_flight; - if (element['isLinked']) { - row_flights['preFlight'] = element['linkFlight']; - delete element['linkFlight']; - delete element['isLinked']; - row_flights['reaFlight'] = element; - - for (let i = 0; i < this.airline_lists.length; i++) { - let key = this.airline_lists[i]['COL_CODE'] - if (this.formatter.hasOwnProperty(key)) { - if (typeof (this.formatter[key]) === 'function') { - render_flight[key] = (row_flights['preFlight'][key] === row_flights['reaFlight'][key]) ? (this.formatter[key](row_flights['preFlight'][key], 1)) : (this.formatter[key](row_flights['preFlight'][key], 1) + '/' + this.formatter[key](row_flights['reaFlight'][key], 1)); - render_pre_flight[key] = this.formatter[key](row_flights['preFlight'][key], 1); - render_rea_flight[key] = this.formatter[key](row_flights['reaFlight'][key], 1); - } else { - render_flight[key] = (row_flights['preFlight'][key] === row_flights['reaFlight'][key]) ? (this.formatter[key][row_flights['preFlight'][key]]) : (this.formatter[key][row_flights['preFlight'][key]] + '/' + this.formatter[key][row_flights['reaFlight'][key]]); - render_pre_flight[key] = this.formatter[key][row_flights['preFlight'][key]]; - render_rea_flight[key] = this.formatter[key][row_flights['reaFlight'][key]]; - } - } else { - render_flight[key] = (row_flights['preFlight'][key] === row_flights['reaFlight'][key]) ? (row_flights['preFlight'][key]) : (row_flights['preFlight'][key] + '/' + row_flights['reaFlight'][key]); - render_pre_flight[key] = row_flights['preFlight'][key]; - render_rea_flight[key] = row_flights['reaFlight'][key]; - } - } - row_flights['renderFlight'] = render_flight; - row_flights['renderPreFlight'] = render_pre_flight; - row_flights['renderReaFlight'] = render_rea_flight; - } - this.combined_data.push(row_flights); - }) - //this.doSequence(this.combined_data); - this.render_data = this.combined_data - this.changeDetectorRef.detectChanges(); - } - ) + ngOnInit() { + this.airlines = this.basicDataService.airline; + this.basicDataService.airline_subject.subscribe( + data=>{ + this.airlines = data; + this.render_data = this.airlines; + } + ) /** * 固定表头 */ @@ -143,128 +46,36 @@ ngOnInit() { this.querySelector('thead').style.transform = 'translateY(' + scrollTop + 'px)'; } tableCont.addEventListener('scroll',scrollHandle); -} + } -/** - * 执行排序并渲染 - */ -/* doSequence(sequenceData) { - sequenceData.forEach(element => { - element['ORDER'] = this.sequence(element); - }) - - sequenceData.sort(function (a, b) { - return (a['ORDER'] - b['ORDER']); - }) - - this.render_data = sequenceData; - this.row_state = this.render_data.length > 0 ? this.render_data[0] : { renderFlight: {} }; - this.changeDetectorRef.detectChanges(); -} */ - -/** - * 过滤及定位 - * @param filterItems - * @return - */ //输入框回车事件 inputEnter() { if (this.FLT_POS === 1) { - this.selectChange() + this.inputFilter(this.airlines) } else { - this.selectChange() - this.inputPosition(this.render_data) + this.inputFilter(this.airlines) + // this.inputPosition(this.render_data) } } //下拉框选择筛选 selectChange() { - let filter_data = []; - let filterItems = this.filterItems; - this.combined_data.forEach(item => { - filter_data.push(Object.assign({}, item)); - }) - //下拉框筛选 - filter_data = filter_data.filter(item => { - if (item) { + this.return_data = this.airlines.filter(item=>{ let is_satis = true; - for (const key in filterItems) { - if (filterItems.hasOwnProperty(key) && filterItems[key]) { - if (item['preFlight'][key] === filterItems[key]) { + for (const key in this.filterItems) {debugger + if (this.filterItems.hasOwnProperty(key) && this.filterItems[key]) { + if (item[key] === this.filterItems[key]) { is_satis = true; continue; } else { is_satis = false; break; } - } } return is_satis; - } else if (item) { - let is_satis = true; - for (const key in filterItems) { - if (filterItems.hasOwnProperty(key) && filterItems[key]) { - if (item['reaFlight'][key] === filterItems[key]) { - is_satis = true; - continue; - } else { - is_satis = false; - break; - } - - } - } - return is_satis; - } else { - let pre_satis = true; - let rea_satis = true; - for (const key in filterItems) { - if (filterItems.hasOwnProperty(key) && filterItems[key]) { - if (item['preFlight'][key] === filterItems[key]) { - pre_satis = true; - continue; - } else { - pre_satis = false; - break; - } - - } - } - for (const key in filterItems) { - if (filterItems.hasOwnProperty(key) && filterItems[key]) { - if (item['reaFlight'][key] === filterItems[key]) { - rea_satis = true; - continue; - } else { - rea_satis = false; - break; - } - - } - } - - if (pre_satis && !rea_satis) { - item['renderFlight'] = item['renderPreFlight']; - return pre_satis; - } else if (!pre_satis && rea_satis) { - item['renderFlight'] = item['renderReaFlight']; - return rea_satis; - } else if (pre_satis && rea_satis) { - return pre_satis && rea_satis; - } else { - return false; - } - } }) - if (this.FLT_POS === 1) { - this.inputFilter(filter_data); - } else { - this.render_data = filter_data; - this.row_state = this.render_data.length > 0 ? this.render_data[0] : { renderFlight: {} }; - // this.inputPosition(this.render_data); - this.changeDetectorRef.detectChanges(); - } + this.render_data = this.return_data; } //输入框筛选 @@ -273,8 +84,8 @@ inputFilter(filterData) { if (this.SEL_COL) { let sel_col = this.SEL_COL; filterData = filterData.filter(item => { - if (item['renderFlight'][sel_col]) { - if (item['renderFlight'][sel_col].toString().match(new RegExp(this.SEARCH, 'i'))) { + if (item[sel_col]) { + if (item[sel_col].toString().match(new RegExp(this.SEARCH, 'i'))) { return true; } } else { @@ -289,10 +100,10 @@ inputFilter(filterData) { } else { filterData = filterData.filter(item => { let is_satis = false; - for (const key in item['renderFlight']) { - if (item['renderFlight'].hasOwnProperty(key)) { - if (item['renderFlight'][key]) { - if (item['renderFlight'][key].toString().match(new RegExp(this.SEARCH, 'i'))) { + 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 { @@ -318,7 +129,6 @@ inputFilter(filterData) { } this.render_data = filterData; this.row_state = this.render_data.length > 0 ? this.render_data[0] : { renderFlight: {} }; - this.changeDetectorRef.detectChanges(); } positionArray: Array = []; @@ -329,8 +139,8 @@ inputPosition(filterData) { if (this.SEL_COL) { let sel_col = this.SEL_COL; filterData.forEach(element => { - if (element['renderFlight'][sel_col]) { - if (element['renderFlight'][sel_col].toString().match(new RegExp(this.SEARCH, 'i'))) { + if (element[sel_col]) { + if (element[sel_col].toString().match(new RegExp(this.SEARCH, 'i'))) { transArray.push(element) } } else { @@ -341,10 +151,10 @@ inputPosition(filterData) { }); } else { filterData.forEach(element => { - for (const key in element['renderFlight']) { - if (element['renderFlight'].hasOwnProperty(key)) { - if (element['renderFlight'][key]) { - if (element['renderFlight'][key].toString().match(new RegExp(this.SEARCH, 'i'))) { + 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 { @@ -381,12 +191,5 @@ inputPosition(filterData) { } else { alert('没有搜索到相关数据'); } - - this.changeDetectorRef.detectChanges(); - - let tr = $(".selected"); - let objTr = tr[0]; - $("#table-container").animate({ scrollTop: objTr.offsetTop - 42 }, "slow"); - } }