接口数据对接

This commit is contained in:
714943302@qq.com
2018-11-21 18:24:06 +08:00
parent 93f9dc0940
commit afa2130c8d
2 changed files with 210 additions and 328 deletions
@@ -14,12 +14,12 @@
<input type="radio" [(ngModel)]="FLT_POS" [value]="2" name="filter-position"> <input type="radio" [(ngModel)]="FLT_POS" [value]="2" name="filter-position">
<span>查找定位</span> <span>查找定位</span>
</label> </label>
<input class="form-control" [(ngModel)]="SEARCH" type="text" (keyup.enter) = "inputEnter()"> <input class="form-control" [(ngModel)]="SEARCH" type="text" (keyup.enter) = "inputEnter()" id="inputerInfo">
</div> </div>
<div class="line-operator-right mb-3 col-xlg-4 col-mlg-4 col-xl-4 col-lg-1"> <div class="line-operator-right mb-3 col-xlg-4 col-mlg-4 col-xl-4 col-lg-1">
<!-- <button type="button" class="btn btn-info mr-3">值机岛编辑</button> <!-- <button type="button" class="btn btn-info mr-3">值机岛编辑</button>
<button type="button" class="btn btn-info mr-3">打印</button> --> <button type="button" class="btn btn-info mr-3">打印</button> -->
<button type="button" class="btn btn-info mr-3">刷新</button> <button type="button" class="btn btn-info mr-3" (click)="clearFiter()">刷新</button>
</div> </div>
</div> </div>
</div> </div>
@@ -30,18 +30,17 @@
<thead> <thead>
<tr> <tr>
<th>序号</th> <th>序号</th>
<!-- <th>值机岛代码</th> <th>值机岛代码</th>
<th>值机岛名称</th> --> <th>值机岛名称</th>
<th *ngFor="let airline_col of col_lists">{{airline_col.COL_CN}}</th> <!-- th *ngFor="let airline_col of col_lists">{{airline_col.COL_CN}}</th> -->
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr *ngFor="let airline_row of render_data;let i = index" (click)="selectRow(airline_row)" <tr *ngFor="let checkinGroup of checkinGroups;let i = index">
[ngClass]="{'selected':row_state['renderFlight']===airline_row['renderFlight']}">
<td>{{i+1}}</td> <td>{{i+1}}</td>
<!-- <td>{{airline_col.checkinGroupCode}}</td> <td>{{checkinGroup.checkinGroupCode}}</td>
<td>{{airline_col.checkinGroupName}}</td> --> <td>{{checkinGroup.checkinGroupName}}</td>
<td *ngFor="let airline_col of col_lists" [ngStyle]="{'background-color':getColor(airline_col.COL_CODE)}">{{airline_row['renderFlight'][airline_col.COL_CODE]}}</td> <!-- <td *ngFor="let airline_col of col_lists" [ngStyle]="{'background-color':getColor(airline_col.COL_CODE)}">{{airline_row['renderFlight'][airline_col.COL_CODE]}}</td> -->
</tr> </tr>
</tbody> </tbody>
</table> </table>
@@ -1,9 +1,8 @@
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { ChangeDetectorRef } from '@angular/core';
import { HttpClientService } from '../../../services/http-client.service'; import { HttpClientService } from '../../../services/http-client.service';
import dateFormatter from '../../../utils/data-formatter';
import { HttpParams } from '@angular/common/http'; import { HttpParams } from '@angular/common/http';
import * as $ from 'jquery'; import * as $ from 'jquery';
import { BasicDataService } from '../../basic-data-service'
@Component({ @Component({
selector: 'app-checkin-group', selector: 'app-checkin-group',
templateUrl: './checkin-group.component.html', templateUrl: './checkin-group.component.html',
@@ -13,367 +12,251 @@ export class CheckinGroupComponent implements OnInit {
constructor( constructor(
private httpCilent: HttpClientService, private httpCilent: HttpClientService,
private changeDetectorRef: ChangeDetectorRef private basicDataService: BasicDataService
) { } ) { }
public raw_data: Array<object> = []; //原始数据,即航班计划
public combined_data: Array<object> = []; //组合数据,即链接航班,显示信息等组合好之后的数据
public render_data: Array<object> = []; //显示数据,即需要显示的数据
public col_lists: Array<object>; //列数据
public row_state: any = { renderFlight: {} };
// 搜索条件 // 搜索条件
SEARCH = ''; //手动输入条件 SEARCH = ''; //手动输入条件
FLT_POS = 1; //过滤还是定位 FLT_POS = 1; //过滤还是定位
SEL_COL = ''; //选择列名 SEL_COL = ''; //选择列名
public filterItems = { checkinGroups : Array<any>;
public row_state: any = { renderFlight: {} };
} public render_data: Array<object> = []; //显示数据,即需要显示的数据
public formatter = {
'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
}
}
ngOnInit() { ngOnInit() {
this.changeDetectorRef.detach(); this.checkinGroups = this.basicDataService.checkin_group;
/* 获取显示列 */ this.basicDataService.checkin_group_subject.subscribe(
this.httpCilent.get('/assets/mock-data/checkin-group.json').subscribe( data=>{
data => { this.checkinGroups = data;
data.sort(function (a, b) { this.render_data = this.checkinGroups;
return (a['COL_ORDER'] - b['COL_ORDER']);
})
this.col_lists = data;
} }
) )
/* 获取值机岛信息 */ /**
this.httpCilent.get('/assets/mock-data/checkin-data.json').subscribe( * 固定表头
data => { */
//解析数据 var tableCont = document.querySelector('#table-container');
data.forEach(element => { function scrollHandle (){
this.raw_data.push(JSON.parse(element.value)); var scrollTop = this.scrollTop;
}); this.querySelector('thead').style.transform = 'translateY(' + scrollTop + 'px)';
}
let combined_linked_data = this.raw_data tableCont.addEventListener('scroll',scrollHandle);
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.col_lists.length; i++) {
let key = this.col_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.col_lists.length; i++) {
let key = this.col_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();
}
)
/**
* 固定表头
*/
var tableCont = document.querySelector('#table-container')
function scrollHandle (){
var scrollTop = this.scrollTop;
this.querySelector('thead').style.transform = 'translateY(' + scrollTop + 'px)';
}
tableCont.addEventListener('scroll',scrollHandle)
} }
/** //刷新
* 执行排序并渲染 clearFiter(){
*/ $("#inputerInfo").val(""); //清空过滤或查找定位文本框
/* doSequence(sequenceData) { this.ngOnInit();
sequenceData.forEach(element => { }
element['ORDER'] = '+' + element['order']
})
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() { inputEnter() {
if (this.FLT_POS === 1) { if (this.FLT_POS === 1) {
this.selectChange() this.selectChange()
} else { } else {
this.selectChange() this.selectChange()
this.inputPosition(this.render_data) this.inputPosition(this.render_data)
} }
} }
//下拉框选择筛选 //下拉框选择筛选
selectChange() { selectChange() {
let filter_data = []; let filter_data = [];
let filterItems = this.filterItems; let filtercheckinGroups = this.render_data;
this.combined_data.forEach(item => { this.render_data.forEach(item => {
filter_data.push(Object.assign({}, item)); filter_data.push(Object.assign({}, item));
}) })
//下拉框筛选 if (this.FLT_POS === 1) {
filter_data = filter_data.filter(item => { this.inputFilter(filter_data);
if (item) { } else {
let is_satis = true; this.checkinGroups = filter_data;
for (const key in filterItems) { this.row_state = this.checkinGroups.length > 0 ? this.checkinGroups[0] : { renderFlight: {} };
if (filterItems.hasOwnProperty(key) && filterItems[key]) { }
if (item['preFlight'][key] === filterItems[key]) { //下拉框筛选
is_satis = true; filter_data = filter_data.filter(item => {
continue; if (item) {
} else { let is_satis = true;
is_satis = false; for (const key in filtercheckinGroups) {
break; if (filtercheckinGroups.hasOwnProperty(key) && filtercheckinGroups[key]) {
} if (item[key] === filtercheckinGroups[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;
} }
} }
}) return is_satis;
if (this.FLT_POS === 1) { } else if (item) {
this.inputFilter(filter_data); let is_satis = true;
for (const key in filtercheckinGroups) {
if (filtercheckinGroups.hasOwnProperty(key) && filtercheckinGroups[key]) {
if (item[key] === filtercheckinGroups[key]) {
is_satis = true;
continue;
} else {
is_satis = false;
break;
}
}
}
return is_satis;
} else { } else {
this.render_data = filter_data; let pre_satis = true;
this.row_state = this.render_data.length > 0 ? this.render_data[0] : { renderFlight: {} }; let rea_satis = true;
// this.inputPosition(this.render_data); for (const key in filtercheckinGroups) {
this.changeDetectorRef.detectChanges(); if (filtercheckinGroups.hasOwnProperty(key) && filtercheckinGroups[key]) {
if (item[key] === filtercheckinGroups[key]) {
pre_satis = true;
continue;
} else {
pre_satis = false;
break;
}
}
}
for (const key in filtercheckinGroups) {
if (filtercheckinGroups.hasOwnProperty(key) && filtercheckinGroups[key]) {
if (item[key] === filtercheckinGroups[key]) {
rea_satis = true;
continue;
} else {
rea_satis = false;
break;
}
}
}
if (pre_satis && !rea_satis) {
item = item;
return pre_satis;
} else if (!pre_satis && rea_satis) {
item = item;
return rea_satis;
} else if (pre_satis && rea_satis) {
return pre_satis && rea_satis;
} else {
return false;
}
} }
})
} }
//输入框筛选 //输入框筛选
inputFilter(filterData) { inputFilter(filterData) {
if (this.SEARCH) { if (this.SEARCH) {
if (this.SEL_COL) { if (this.SEL_COL) {
let sel_col = this.SEL_COL; let sel_col = this.SEL_COL;
filterData = filterData.filter(item => { filterData = filterData.filter(item => {
if (item['renderFlight'][sel_col]) { if (item[sel_col]) {
if (item['renderFlight'][sel_col].toString().match(new RegExp(this.SEARCH, 'i'))) { if (item[sel_col].toString().match(new RegExp(this.SEARCH, 'i'))) {
return true; return true;
}
} else {
if (this.SEARCH) {
return false;
} else {
return true;
}
} }
}) } else {
} else { if (this.SEARCH) {
filterData = filterData.filter(item => { return false;
let is_satis = false; } else {
for (const key in item['renderFlight']) { return true;
if (item['renderFlight'].hasOwnProperty(key)) { }
if (item['renderFlight'][key]) { }
if (item['renderFlight'][key].toString().match(new RegExp(this.SEARCH, 'i'))) { })
is_satis = true;
break; } else {
} else { filterData = filterData.filter(item => {
is_satis = false; let is_satis = false;
continue; 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 { } else {
if (this.SEARCH) { is_satis = false;
is_satis = false; continue;
continue;
} else {
is_satis = true;
break;
}
} }
} else { } else {
continue; if (this.SEARCH) {
is_satis = false;
continue;
} else {
is_satis = true;
break;
}
} }
} else {
continue;
} }
return is_satis; }
}) return is_satis;
} })
} }
this.render_data = filterData; }
this.row_state = this.render_data.length > 0 ? this.render_data[0] : { renderFlight: {} }; this.checkinGroups = filterData;
this.changeDetectorRef.detectChanges(); this.row_state = this.checkinGroups.length > 0 ? this.checkinGroups[0] : { renderFlight: {} };
} }
positionArray: Array<any> = []; positionArray: Array<any> = [];
positionArrayIndex: number = 0; positionArrayIndex: number = 0;
//输入框定位 //输入框定位
inputPosition(filterData) { inputPosition(filterData) {
let transArray = [] let transArray = []
if (this.SEL_COL) { if (this.SEL_COL) {
let sel_col = this.SEL_COL; let sel_col = this.SEL_COL;
filterData.forEach(element => { filterData.forEach(element => {
if (element['renderFlight'][sel_col]) { if (element[sel_col]) {
if (element['renderFlight'][sel_col].toString().match(new RegExp(this.SEARCH, 'i'))) { if (element[sel_col].toString().match(new RegExp(this.SEARCH, 'i'))) {
transArray.push(element) transArray.push(element)
}
} else {
if (!this.SEARCH) {
transArray.push(element)
}
} }
});
} 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'))) {
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 { } else {
this.positionArray = transArray; if (!this.SEARCH) {
this.positionArrayIndex = 0; transArray.push(element)
this.row_state = this.positionArray[this.positionArrayIndex]; }
} }
} else { });
alert('没有搜索到相关数据'); } 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;
}
}
this.changeDetectorRef.detectChanges(); } else {
continue;
}
}
});
}
let tr = $(".selected"); if (transArray.length > 0) {
let objTr = tr[0]; if (transArray.toString() == this.positionArray.toString()) {
$("#table-container").animate({ scrollTop: objTr.offsetTop - 42 }, "slow"); 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('没有搜索到相关数据');
}
}
} }