diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 36ff455..177a53f 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -29,6 +29,8 @@ import { WebsocketService } from './services/websocket.service'; /* 路由缓存策略 */ import { AppReuseStrategy } from './router-reuse-strategy'; +import { OperateSpinServiceService } from './services/operate-spin-service.service'; + @NgModule({ declarations: [ AppComponent @@ -48,6 +50,7 @@ import { AppReuseStrategy } from './router-reuse-strategy'; HttpService, HttpClientService, WebsocketService, + OperateSpinServiceService, { provide: RouteReuseStrategy, useClass: AppReuseStrategy } ], bootstrap: [AppComponent] diff --git a/src/app/pages/main/main.component.ts b/src/app/pages/main/main.component.ts index 15d1cd1..e27c850 100644 --- a/src/app/pages/main/main.component.ts +++ b/src/app/pages/main/main.component.ts @@ -250,6 +250,25 @@ export class MainComponent implements OnInit { this.raw_data.push(message); } + //查找链接航班并将其组合成一条数据 + let combined_linked_data = this.dataHandle.findLinkFlights(this.raw_data); + let combined_data = []; + this.combined_data = []; + combined_linked_data.forEach(element => { + let flights_item = this.dataHandle.flightsRenderTransfer(element, this.col_lists); + this.combined_data.push(flights_item); + }); + this.combined_data.forEach(item => { + combined_data.push(this.dataHandle.basicDataTransHandle(item, this.airports, this.citys, this.airlines, this.flightStatus, this.flightTypes)); + }) + this.combined_data = combined_data; + this.combined_data.forEach(element => { + element['ORDER'] = this.orderHandle.sequence(element); + }) + this.combined_data = this.combined_data.sort(function (a, b) { + return (a['ORDER'] - b['ORDER']); + }) + if (this.airlinesSelections.findIndex(airline => airline.airlineCodeIata === message['ALCD']) === -1) { let index = this.airlines.findIndex(val => val.airlineCodeIata === message['ALCD']); this.airlinesSelections.push(this.airlines[index]); @@ -262,7 +281,6 @@ export class MainComponent implements OnInit { let dynamicHandleData = this.dataHandle.dynamicMessageHandle( message, - this.combined_data, this.render_data, this.col_lists, this.filterItems, @@ -274,17 +292,8 @@ export class MainComponent implements OnInit { this.flightStatus, this.flightTypes ) - - this.combined_data = dynamicHandleData.combined_data; this.render_data = dynamicHandleData.render_data; - this.combined_data.forEach(element => { - element['ORDER'] = this.orderHandle.sequence(element); - }) - this.combined_data = this.combined_data.sort(function (a, b) { - return (a['ORDER'] - b['ORDER']); - }) - this.render_data.forEach(element => { element['ORDER'] = this.orderHandle.sequence(element); }) diff --git a/src/app/pages/pages.module.ts b/src/app/pages/pages.module.ts index b90a31a..1f41ca6 100644 --- a/src/app/pages/pages.module.ts +++ b/src/app/pages/pages.module.ts @@ -9,7 +9,7 @@ import { SidebarMenuModule } from '../components/sidebar-menu/sidebar-menu.modul import { BarMenuModule } from '../components/bar-menu/bar-menu.module'; import { BasicDataService } from '../services/basic-data-service'; -import { OperateSpinServiceService } from '../services/operate-spin-service.service'; + @NgModule({ imports: [ @@ -20,6 +20,6 @@ import { OperateSpinServiceService } from '../services/operate-spin-service.serv PagesRoutingModule, ], declarations: [PagesComponent], - providers: [BasicDataService, OperateSpinServiceService] + providers: [BasicDataService] }) export class PagesModule { } diff --git a/src/app/services/http-client.service.ts b/src/app/services/http-client.service.ts index 3f7aa4e..5cfca7c 100644 --- a/src/app/services/http-client.service.ts +++ b/src/app/services/http-client.service.ts @@ -1,6 +1,10 @@ import { Injectable } from '@angular/core'; +import { Router } from '@angular/router'; import { HttpClient, HttpRequest, HttpHeaders, HttpParams } from '@angular/common/http'; import { HttpObserve } from '@angular/common/http/src/client'; +import { OperateSpinServiceService } from './operate-spin-service.service'; +import { ToastService } from '../components/toast/toast.service'; +import { ToastConfig, ToastType } from '../components/toast/toast-model'; import { Observable } from 'rxjs'; @@ -11,7 +15,10 @@ import { Observable } from 'rxjs'; export class HttpClientService { constructor( + private router: Router, private httpClient: HttpClient, + private operateSpinServiceService: OperateSpinServiceService, + private toastService: ToastService, ) { } @@ -113,6 +120,27 @@ export class HttpClientService { observable.subscribe(res => { observer.next(res); }, (err) => { + switch (err.status) { + case 401: { + this.operateSpinServiceService.hideSpin(); + let cookieMsg = ['SESSION', 'token'] + let sessionStorageMsg = ['userInfo'] + sessionStorageMsg.forEach(element => { + sessionStorage.removeItem(element) + }) + cookieMsg.forEach(element => { + this.delCookie(element) + }) + this.router.navigate(['/login']); + break; + }; + case 500: { + this.operateSpinServiceService.hideSpin(); + const toastCfg = new ToastConfig(ToastType.ERROR, '', '数据请求失败!', 5000); + this.toastService.toast(toastCfg); + break; + } + } observer.error(err); }, () => { observer.complete(); @@ -120,4 +148,10 @@ export class HttpClientService { }); } + delCookie($name) { + let myDate = new Date(); + myDate.setTime(-1000); + document.cookie = $name + "=''; expires=" + myDate.toUTCString(); + } + } diff --git a/src/app/utils/flights-data-handle.ts b/src/app/utils/flights-data-handle.ts index 3bfee42..ff4b7c6 100644 --- a/src/app/utils/flights-data-handle.ts +++ b/src/app/utils/flights-data-handle.ts @@ -247,78 +247,9 @@ export class FlightsDataHandle { return item; } - public dynamicMessageHandle(message, combined_data, render_data, col_lists, filterItems, LASTSEARCH, LAST_SEL_COL, airports, citys, airlines, flightStatus, flightTypes) { + public dynamicMessageHandle(message, render_data, col_lists, filterItems, LASTSEARCH, LAST_SEL_COL, airports, citys, airlines, flightStatus, flightTypes) { + if (message.MVIN === 'A') { - //针对combined_data的处理 - let index = combined_data.findIndex(element => { - if (this.orderHandle.isArriFlight(element) || this.orderHandle.isLinked(element)) { - if (element['preFlight']['FLID'] === message.FLID) { - return true; - } else { - return false; - } - } else { - return false; - } - }); - if (index > -1) { - combined_data[index]['preFlight'] = message; - combined_data[index] = this.flightsRenderTransfer(combined_data[index], col_lists); - combined_data[index] = this.basicDataTransHandle(combined_data[index], airports, citys, airlines, flightStatus, flightTypes); - - if (message.UPTP === 'FLOP-AOTP') { - if (this.orderHandle.isArriFlight(combined_data[index])) { - if (message.TAID) { - combined_data.splice(index, 1); - - let i = combined_data.findIndex(element => { - if (this.orderHandle.isDeptFlight(element)) { - if (message.TAID === element['reaFlight']['FLID']) { - return true; - } else { - return false; - } - } else { - return false; - } - }) - combined_data[i]['reaFlight']['TAID'] = message.FLID; - let newFlight = {}; - newFlight['preFlight'] = message; - newFlight['reaFlight'] = combined_data[i]['reaFlight']; - - combined_data.splice(i, 1); - - newFlight = this.flightsRenderTransfer(newFlight, col_lists); - newFlight = this.basicDataTransHandle(newFlight, airports, citys, airlines, flightStatus, flightTypes); - combined_data.push(newFlight) - } - } else if (this.orderHandle.isLinked(combined_data[index])) { - if (!message.TAID) { - let newPreFlight = {}, - newReaFlight = {}; - - newPreFlight['preFlight'] = combined_data[index]['preFlight']; - newPreFlight['renderFlight'] = combined_data[index]['renderPreFlight']; - combined_data.push(newPreFlight); - - delete combined_data[index]['reaFlight']['TAID']; - newPreFlight['reaFlight'] = combined_data[index]['reaFlight']; - newPreFlight['renderFlight'] = combined_data[index]['renderReaFlight']; - combined_data.push(newReaFlight); - - combined_data.splice(index, 1); - } - } - } - } else { - let newFlight = {}; - newFlight['preFlight'] = message; - newFlight = this.flightsRenderTransfer(newFlight, col_lists); - newFlight = this.basicDataTransHandle(newFlight, airports, citys, airlines, flightStatus, flightTypes); - combined_data.push(newFlight); - } - //针对render_data的处理 let index1 = render_data.findIndex(element => { if (this.orderHandle.isArriFlight(element) || this.orderHandle.isLinked(element)) { @@ -390,49 +321,52 @@ export class FlightsDataHandle { } if (is_satis && search_satis) { - if (message.UPTP === 'FLOP-TAOP') { + // if (message.UPTP === 'FLOP-TAOP') { + if (message.TAID) { if (this.orderHandle.isArriFlight(render_data[index1])) { - if (message.TAID) { - let i = render_data.findIndex(element => { - if (this.orderHandle.isDeptFlight(element)) { - if (message.TAID === element['reaFlight']['FLID']) { - return true; - } else { - return false; - } + let i = render_data.findIndex(element => { + if (this.orderHandle.isDeptFlight(element)) { + if (message.TAID === element['reaFlight']['FLID']) { + return true; } else { return false; } - }) - - if (i > -1) { - render_data.splice(index1, 1); - render_data[i]['reaFlight']['TAID'] = message.FLID; - let newFlight = {}; - newFlight['preFlight'] = message; - newFlight['reaFlight'] = render_data[i]['reaFlight']; - render_data.splice(i, 1); - newFlight = this.flightsRenderTransfer(newFlight, col_lists); - newFlight = this.basicDataTransHandle(newFlight, airports, citys, airlines, flightStatus, flightTypes); - render_data.push(newFlight) + } else { + return false; } - } - } else if (this.orderHandle.isLinked(render_data[index1])) { - if (!message.TAID) { - let newPreFlight = {}, - newReaFlight = {}; - delete render_data[index1]['preFlight']['TAID']; - newPreFlight['preFlight'] = render_data[index1]['preFlight']; - newPreFlight['renderFlight'] = render_data[index1]['renderPreFlight']; - delete render_data[index1]['reaFlight']['TAID']; - newPreFlight['reaFlight'] = render_data[index1]['reaFlight']; - newPreFlight['renderFlight'] = render_data[index1]['renderReaFlight']; + }) + + if (i > -1) { + // render_data.splice(index1, 1); + render_data[i]['reaFlight']['TAID'] = message.FLID; + render_data[i]['preFlight'] = message; render_data.splice(index1, 1); - render_data.push(newPreFlight); - render_data.push(newReaFlight); + // let newFlight = {}; + // newFlight['preFlight'] = message; + // newFlight['reaFlight'] = render_data[i]['reaFlight']; + // render_data.splice(i, 1); + render_data[i] = this.flightsRenderTransfer(render_data[i], col_lists); + render_data[i] = this.basicDataTransHandle(render_data[i], airports, citys, airlines, flightStatus, flightTypes); + // render_data.push(newFlight) } } + } else { + if (this.orderHandle.isLinked(render_data[index1])) { + let newPreFlight = {}, + newReaFlight = {}; + + delete render_data[index1]['preFlight']['TAID']; + newPreFlight['preFlight'] = render_data[index1]['preFlight']; + newPreFlight['renderFlight'] = render_data[index1]['renderPreFlight']; + delete render_data[index1]['reaFlight']['TAID']; + newPreFlight['reaFlight'] = render_data[index1]['reaFlight']; + newPreFlight['renderFlight'] = render_data[index1]['renderReaFlight']; + render_data.splice(index1, 1); + render_data.push(newPreFlight); + render_data.push(newReaFlight); + } } + // } } else { if (this.orderHandle.isArriFlight(render_data[index1])) { render_data.splice(index1, 1); @@ -503,56 +437,31 @@ export class FlightsDataHandle { } } if (is_satis && search_satis) { - let i = render_data.findIndex(element => { - if (this.orderHandle.isDeptFlight(element)) { - if (message.TAID === element['reaFlight']['FLID']) { - return true; + if (message.TAID) { + let i = render_data.findIndex(element => { + if (this.orderHandle.isDeptFlight(element)) { + if (message.TAID === element['reaFlight']['FLID']) { + return true; + } else { + return false; + } } else { return false; } - } else { - return false; - } - }) + }) - if (i > -1) { - let newFlight = {}; - newFlight['preFlight'] = message; - newFlight['reaFlight'] = Object.assign({}, render_data[i]['reaFlight']); - render_data.splice(i, 1); - newFlight = this.flightsRenderTransfer(newFlight, col_lists); - newFlight = this.basicDataTransHandle(newFlight, airports, citys, airlines, flightStatus, flightTypes); - render_data.push(newFlight); + if (i > -1) { + render_data[i]['preFlight'] = newFlight['preFlight']; + render_data[i]['renderPreFlight'] = newFlight['renderPreFlight']; + } else { + render_data.push(newFlight); + } } else { render_data.push(newFlight); } } } } else { - //针对combined_data的处理 - let index = combined_data.findIndex(element => { - if (this.orderHandle.isDeptFlight(element) || this.orderHandle.isLinked(element)) { - if (element['reaFlight']['FLID'] === message.FLID) { - return true; - } else { - return false; - } - } else { - return false; - } - }); - if (index > -1) { - combined_data[index]['reaFlight'] = message; - combined_data[index] = this.flightsRenderTransfer(combined_data[index], col_lists); - combined_data[index] = this.basicDataTransHandle(combined_data[index], airports, citys, airlines, flightStatus, flightTypes); - } else { - let newFlight = {}; - newFlight['reaFlight'] = message; - newFlight = this.flightsRenderTransfer(newFlight, col_lists); - newFlight = this.basicDataTransHandle(newFlight, airports, citys, airlines, flightStatus, flightTypes); - combined_data.push(newFlight); - } - //针对render_data的处理 let index1 = render_data.findIndex(element => { if (this.orderHandle.isDeptFlight(element) || this.orderHandle.isLinked(element)) { @@ -703,15 +612,9 @@ export class FlightsDataHandle { return false; } }) - if (i > -1) { - let newFlight = {}; - newFlight['reaFlight'] = message; - newFlight['preFlight'] = Object.assign({}, render_data[i]['preFlight']); - render_data.splice(i, 1); - newFlight = this.flightsRenderTransfer(newFlight, col_lists); - newFlight = this.basicDataTransHandle(newFlight, airports, citys, airlines, flightStatus, flightTypes); - render_data.push(newFlight); + render_data[i]['reaFlight'] = newFlight['reaFlight']; + render_data[i]['renderReaFlight'] = newFlight['renderReaFlight']; } else { render_data.push(newFlight); } @@ -720,7 +623,6 @@ export class FlightsDataHandle { } return { - 'combined_data': combined_data, 'render_data': render_data } }