PO+MO+PR+Payslip+customAccordin
parent
fefdc5b8c3
commit
b02743ead1
@ -0,0 +1,2 @@
|
|||||||
|
<ng-content >
|
||||||
|
</ng-content>
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { AccordinCustomComponent } from './accordin-custom.component';
|
||||||
|
|
||||||
|
describe('AccordinCustomComponent', () => {
|
||||||
|
let component: AccordinCustomComponent;
|
||||||
|
let fixture: ComponentFixture<AccordinCustomComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ AccordinCustomComponent ],
|
||||||
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(AccordinCustomComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,51 @@
|
|||||||
|
import { Component, OnInit, ViewChildren, QueryList, Input, AfterViewInit, ContentChildren, AfterContentInit, OnDestroy } from '@angular/core';
|
||||||
|
import { AccordinTabCustomComponent } from './accordin-tab-custom/accordin-tab-custom.component';
|
||||||
|
@Component({
|
||||||
|
selector: 'accordin-custom',
|
||||||
|
templateUrl: './accordin-custom.component.html',
|
||||||
|
styleUrls: ['./accordin-custom.component.scss'],
|
||||||
|
})
|
||||||
|
export class AccordinCustomComponent implements OnInit {
|
||||||
|
@ContentChildren(AccordinTabCustomComponent) tabs !: QueryList<AccordinTabCustomComponent>;
|
||||||
|
@Input() activeIndex: number;
|
||||||
|
private destroyed = false;
|
||||||
|
constructor() { }
|
||||||
|
ngOnInit() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnDestroy(): void {
|
||||||
|
this.destroyed = true;
|
||||||
|
}
|
||||||
|
ngAfterContentInit() {
|
||||||
|
this.tabs.notifyOnChanges();
|
||||||
|
this.tabs.changes.subscribe(() => {
|
||||||
|
this.processChildren();
|
||||||
|
});
|
||||||
|
this.processChildren();
|
||||||
|
}
|
||||||
|
|
||||||
|
private processChildren() {
|
||||||
|
// this.tabs.notifyOnChanges();
|
||||||
|
this.tabs.forEach((item: AccordinTabCustomComponent, index) => {
|
||||||
|
item.setAccordion(this);
|
||||||
|
if (index === this.activeIndex) {
|
||||||
|
setTimeout(() => {
|
||||||
|
if (!this.destroyed) {
|
||||||
|
item.setVisibility(true);
|
||||||
|
}
|
||||||
|
}, 200);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public tabClicked(clickedTab: AccordinTabCustomComponent) {
|
||||||
|
this.tabs.forEach((tab: AccordinTabCustomComponent) => {
|
||||||
|
if (tab !== clickedTab) {
|
||||||
|
tab.setVisibility(false);
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,43 @@
|
|||||||
|
<ion-grid class="grid">
|
||||||
|
<!-- header -->
|
||||||
|
<ion-row class="ion-justify-content-center tab-header" (click)="onClick()" >
|
||||||
|
<ion-col [size]="12" no-padding>
|
||||||
|
<div class="header">
|
||||||
|
<img class="imgArrow" [src]="show ? 'assets/imgs/arrowUp.png' : 'assets/imgs/arrowDown.png' "
|
||||||
|
[ngClass]=" direction == 'ltr' ? 'icon right' : 'icon left' " >
|
||||||
|
<ng-container *ngIf="header && !subHeader" >
|
||||||
|
<p [ngClass]=" direction == 'ltr' ? 'title left' : 'title right' " > {{header}} </p>
|
||||||
|
</ng-container>
|
||||||
|
<ng-container *ngIf="header && subHeader ">
|
||||||
|
<!-- <p
|
||||||
|
[ngClass]=" direction == 'ltr' ? 'title-subtitle left' : 'title-subtitle right' "
|
||||||
|
class="innerheader" > <strong> {{header}} </strong> <br> {{subHeader}} </p> -->
|
||||||
|
<ion-row>
|
||||||
|
<ion-col col-6>
|
||||||
|
<p
|
||||||
|
[ngClass]=" direction == 'ltr' ? 'title-subtitle left' : 'title-subtitle right' "
|
||||||
|
class="innerheader" > <strong> {{header}} </strong>
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col col-6> -->
|
||||||
|
<p [ngClass]=" subHeadergreen == true ? 'headerGreen' : 'headerRed' " >
|
||||||
|
{{subHeader}}
|
||||||
|
</p>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
|
||||||
|
</ng-container>
|
||||||
|
</div>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
<!-- rerendered every tiem version-->
|
||||||
|
<ion-row class="zoomIn" *ngIf="show">
|
||||||
|
<ion-col [size]="12" no-padding>
|
||||||
|
<ng-content> </ng-content>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
</ion-grid>
|
||||||
@ -0,0 +1,111 @@
|
|||||||
|
.header {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.grid {
|
||||||
|
padding-top: 0;//orign
|
||||||
|
margin: 10px;
|
||||||
|
background: #ffffff;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab-header {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
border-color: transparent;//#e2e2e2;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 0cm 0cm 0.02cm 0cm;
|
||||||
|
padding-top: 0.2cm;
|
||||||
|
padding-bottom: 0.2cm;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
|
||||||
|
height: 0.9cm;
|
||||||
|
display: inline;
|
||||||
|
vertical-align: middle;
|
||||||
|
margin-left: 0.1cm;
|
||||||
|
margin-right: 0.1cm;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
.imgArrow{
|
||||||
|
height: 20px;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
.left {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right {
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
margin: 0;
|
||||||
|
margin-top: 0.2cm;
|
||||||
|
margin-left: 0.2cm;
|
||||||
|
margin-right: 0.2cm;
|
||||||
|
color: var(--dark);
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden !important;
|
||||||
|
font-size: 0.46cm;
|
||||||
|
width: 78%;
|
||||||
|
font-weight: bold;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.title-subtitle {
|
||||||
|
margin: 0;
|
||||||
|
margin-top: 0.2cm;
|
||||||
|
margin-left: 0.2cm;
|
||||||
|
margin-right: 0.2cm;
|
||||||
|
color: var(--dark);
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden !important;
|
||||||
|
// font-size: 0.36cm;
|
||||||
|
// width: 78%;
|
||||||
|
font-size: 0.46cm;
|
||||||
|
width: 32%;
|
||||||
|
font-weight: bolder;
|
||||||
|
|
||||||
|
}
|
||||||
|
.innerheader h6 {
|
||||||
|
margin: 0em !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
h6
|
||||||
|
{
|
||||||
|
margin: 0em !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.headerRed{
|
||||||
|
color: var(--red);
|
||||||
|
margin: 0;
|
||||||
|
margin-top: 0.17cm;
|
||||||
|
margin-left: 0.2cm;
|
||||||
|
margin-right: 0.2cm;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden !important;
|
||||||
|
font-size: 0.56cm;
|
||||||
|
width: 32%;
|
||||||
|
font-weight: bolder
|
||||||
|
// text-align: right;
|
||||||
|
}
|
||||||
|
.headerGreen{
|
||||||
|
color: var(--green);
|
||||||
|
margin: 0;
|
||||||
|
margin-top: 0.17cm;
|
||||||
|
margin-left: 0.2cm;
|
||||||
|
margin-right: 0.2cm;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden !important;
|
||||||
|
font-size: 0.56cm;
|
||||||
|
width: 32%;
|
||||||
|
font-weight: bolder
|
||||||
|
// text-align: right;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { AccordinTabCustomComponent } from './accordin-tab-custom.component';
|
||||||
|
|
||||||
|
describe('AccordinTabCustomComponent', () => {
|
||||||
|
let component: AccordinTabCustomComponent;
|
||||||
|
let fixture: ComponentFixture<AccordinTabCustomComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ AccordinTabCustomComponent ],
|
||||||
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(AccordinTabCustomComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,50 @@
|
|||||||
|
import { Component, OnInit, Output, EventEmitter, Input, Host } from '@angular/core';
|
||||||
|
import { AccordinCustomComponent } from '../accordin-custom.component';
|
||||||
|
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
|
||||||
|
@Component({
|
||||||
|
selector: 'accordin-tab-custom',
|
||||||
|
templateUrl: './accordin-tab-custom.component.html',
|
||||||
|
styleUrls: ['./accordin-tab-custom.component.scss'],
|
||||||
|
})
|
||||||
|
|
||||||
|
export class AccordinTabCustomComponent implements OnInit {
|
||||||
|
private accordion: AccordinCustomComponent;
|
||||||
|
|
||||||
|
private id: number;
|
||||||
|
public show = false;
|
||||||
|
public direction = 'ltr';
|
||||||
|
@Input() header: string;
|
||||||
|
@Input() subHeader: string;
|
||||||
|
@Input() cache = true;
|
||||||
|
@Input() color = 'primary';
|
||||||
|
@Input() subHeadergreen : true;
|
||||||
|
|
||||||
|
@Output() selected = new EventEmitter();
|
||||||
|
|
||||||
|
constructor( public ts: TranslatorService
|
||||||
|
) { }
|
||||||
|
|
||||||
|
|
||||||
|
ngOnInit() {
|
||||||
|
this.direction = TranslatorService.getCurrentDirection();
|
||||||
|
}
|
||||||
|
|
||||||
|
public setVisibility(show: boolean) {
|
||||||
|
this.show = show;
|
||||||
|
}
|
||||||
|
|
||||||
|
public setAccordion(accordion: AccordinCustomComponent) {
|
||||||
|
this.accordion = accordion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public onClick() {
|
||||||
|
this.setVisibility(!this.show);
|
||||||
|
if (this.show) {
|
||||||
|
if (this.accordion) {
|
||||||
|
this.accordion.tabClicked(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,227 @@
|
|||||||
|
<ion-header>
|
||||||
|
<ion-toolbar class="header-toolbar">
|
||||||
|
<nav-buttons></nav-buttons>
|
||||||
|
<ion-title color="light">
|
||||||
|
{{ts.trPK('worklistMain','ITEM_HIS')}}
|
||||||
|
</ion-title>
|
||||||
|
</ion-toolbar>
|
||||||
|
</ion-header>
|
||||||
|
|
||||||
|
<ion-content class="colorBG">
|
||||||
|
|
||||||
|
<!-- <ion-card>
|
||||||
|
<ion-card-header class="boxHdr">
|
||||||
|
<div class="hrTitle">{{'worklistMain, actionHis' | translate}}</div>
|
||||||
|
</ion-card-header>
|
||||||
|
<ion-card-content> -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- <ion-card class="cardContent"> -->
|
||||||
|
<!-- <ion-card-header class="boxHdr">
|
||||||
|
<div class="hrTitle"> {{ts.trPK('worklistMain','info')}} </div>
|
||||||
|
</ion-card-header> -->
|
||||||
|
<!-- <ion-card-content> -->
|
||||||
|
|
||||||
|
<div [hidden]="itemHistoryRes && itemHistoryRes.length > 0">
|
||||||
|
<p>{{ 'general, empty' | translate}}</p>
|
||||||
|
</div>
|
||||||
|
<ion-list class="itemeHistoryist" *ngIf="itemHistoryRes && itemHistoryRes.length > 0 ">
|
||||||
|
<div>
|
||||||
|
<ion-grid class="gridItemReq">
|
||||||
|
|
||||||
|
<ion-item class="itemReqContent" *ngFor="let itemHistory of itemHistoryRes; let i=index; ">
|
||||||
|
<div class="itemReqDiv">
|
||||||
|
|
||||||
|
<ion-row>
|
||||||
|
<ion-col class="colItemReqHeader">
|
||||||
|
<!-- <label for="">{{ts.trPK('worklistMain','description')}}
|
||||||
|
</label> -->
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<label for="">{{i+1}}. {{itemHistory.OU_NAME}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','operating_unit')}}
|
||||||
|
</label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{itemHistory.OU_NAME}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
<!-- </ion-row>
|
||||||
|
|
||||||
|
<ion-row> -->
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','PONumber')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{itemHistory.PO_NUMBER}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','revision')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{itemHistory.REVISION_NUM}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
<!-- </ion-row>
|
||||||
|
<ion-row> -->
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','CreationDate')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{itemHistory.CREATION_DATE}} </ion-label>
|
||||||
|
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','Supplier')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{itemHistory.SUPPLIER}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
<!-- </ion-row>
|
||||||
|
<ion-row> -->
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','Buyer')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{itemHistory.BUYER}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','uom')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{itemHistory.UOM}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
<!-- </ion-row>
|
||||||
|
<ion-row> -->
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','quantity_ordered')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{itemHistory.QUANTITY_ORDERED}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','quantity_received')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{itemHistory.QUANTITY_RECEIVED}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
<!-- </ion-row>
|
||||||
|
<ion-row> -->
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','bonus_quantity')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{itemHistory.BONUS_QUANTITY}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','purchase_price')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{itemHistory.PURCHASE_PRICE}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
<!-- </ion-row>
|
||||||
|
<ion-row> -->
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','discount')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{itemHistory.DISCOUNT_PERCENTAGE}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','balance_quantity')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{itemHistory.BALANCE_QUANTITY}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
<!-- </ion-row>
|
||||||
|
<ion-row> -->
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','net_price')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{itemHistory.NET_PRICE}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','closure_status')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{itemHistory.CLOSED_CODE}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
|
||||||
|
</ion-row>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</ion-item>
|
||||||
|
|
||||||
|
</ion-grid>
|
||||||
|
</div>
|
||||||
|
</ion-list>
|
||||||
|
<!-- </ion-card-content>
|
||||||
|
</ion-card> -->
|
||||||
|
|
||||||
|
<ion-infinite-scroll (ionInfinite)="doInfinite($event)">
|
||||||
|
<ion-infinite-scroll-content></ion-infinite-scroll-content>
|
||||||
|
</ion-infinite-scroll>
|
||||||
|
</ion-content>
|
||||||
@ -0,0 +1,20 @@
|
|||||||
|
.itemeHistoryist {
|
||||||
|
background: #f0efef;
|
||||||
|
padding: 6px;
|
||||||
|
/* margin-top: 20px; */
|
||||||
|
/* width: 100%;*/
|
||||||
|
}
|
||||||
|
ion-label.labelValue.sc-ion-label-ios-h.sc-ion-label-ios-s.ios.hydrated,
|
||||||
|
ion-label.labelValue.sc-ion-label-md-h.sc-ion-label-md-s.md.hydrated
|
||||||
|
{
|
||||||
|
white-space: pre-wrap !important;
|
||||||
|
--color: initial;
|
||||||
|
display: block;
|
||||||
|
color: var(--color);
|
||||||
|
font-family: var(--ion-font-family,inherit);
|
||||||
|
font-size: inherit;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box
|
||||||
|
}
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { ItemHistoryComponent } from './item-history.component';
|
||||||
|
|
||||||
|
describe('ItemHistoryComponent', () => {
|
||||||
|
let component: ItemHistoryComponent;
|
||||||
|
let fixture: ComponentFixture<ItemHistoryComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ ItemHistoryComponent ],
|
||||||
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(ItemHistoryComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,112 @@
|
|||||||
|
import { ViewNoteModalComponent } from './../view-note-modal/view-note-modal.component';
|
||||||
|
import { WorklistService } from './../service/worklist.service';
|
||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { WorkListActionHistoryRequest } from '../models/ActionHistoryReq';
|
||||||
|
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
|
||||||
|
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
|
||||||
|
import { ModalController } from '@ionic/angular';
|
||||||
|
import { POItemHistoryRequest} from '../models/POItemHistoryReq';
|
||||||
|
import { WorklistMainService } from '../service/work-list.main.service';
|
||||||
|
import { POItemHistoryRes } from '../models/POItemHistoryRes';
|
||||||
|
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-item-history',
|
||||||
|
templateUrl: './item-history.component.html',
|
||||||
|
styleUrls: ['./item-history.component.scss'],
|
||||||
|
})
|
||||||
|
export class ItemHistoryComponent implements OnInit {
|
||||||
|
getPassPOInfo: any;
|
||||||
|
itemHistoryRes: any;
|
||||||
|
IsReachEnd: boolean = false;
|
||||||
|
P_PAGE_NUM: number = 1;
|
||||||
|
P_PAGE_LIMIT: number = 50;
|
||||||
|
POItemHistoryReq:any;
|
||||||
|
getPassItemHistoreyList: any;
|
||||||
|
constructor(
|
||||||
|
public worklistMainService: WorklistMainService,
|
||||||
|
private cs: CommonService,
|
||||||
|
private ts: TranslatorService,
|
||||||
|
private modalCtrl: ModalController,
|
||||||
|
public worklistService: WorklistService
|
||||||
|
) {
|
||||||
|
this.getPassPOInfo = this.cs.sharedService.getSharedData('passPOInfo');
|
||||||
|
this.getPassItemHistoreyList = this.cs.sharedService.getSharedData('passItemHisList');
|
||||||
|
//itemHistoryRes
|
||||||
|
this.POItemHistoryReq = new POItemHistoryRequest();
|
||||||
|
this.POItemHistoryReq.P_PAGE_NUM = this.P_PAGE_NUM;
|
||||||
|
this.POItemHistoryReq.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
|
||||||
|
this.POItemHistoryReq.P_ITEM_ID= this.getPassPOInfo;
|
||||||
|
|
||||||
|
}
|
||||||
|
ngOnInit() {
|
||||||
|
|
||||||
|
this.getItemHistory(this.getPassPOInfo);
|
||||||
|
}
|
||||||
|
getItemHistory(itemID) {
|
||||||
|
console.log(itemID);
|
||||||
|
this.IsReachEnd = false;
|
||||||
|
// const request = new POItemHistoryRequest();
|
||||||
|
// request.P_ITEM_ID=parseInt(itemID);
|
||||||
|
// request.P_PAGE_LIMIT=50;
|
||||||
|
// request.P_PAGE_NUM=1;
|
||||||
|
this.worklistMainService.getPOItemHistory( this.POItemHistoryReq).
|
||||||
|
subscribe((result: POItemHistoryRes) => {
|
||||||
|
|
||||||
|
this.handleItemHistoryResult(result);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
handleItemHistoryResult(result) {
|
||||||
|
if (this.cs.validResponse(result)) {
|
||||||
|
if (this.cs.hasData(result.GetPoItemHistoryList)) {
|
||||||
|
this.itemHistoryRes = result.GetPoItemHistoryList;
|
||||||
|
this.P_PAGE_NUM++;
|
||||||
|
let lastItemIndex = this.itemHistoryRes.length - 1;
|
||||||
|
if (result.GetPoItemHistoryList[lastItemIndex]) {
|
||||||
|
let lastitem = result.GetPoItemHistoryList[lastItemIndex];
|
||||||
|
if (lastitem.NO_OF_ROWS == lastitem.ROW_NUM) {
|
||||||
|
this.IsReachEnd = true;
|
||||||
|
} else {
|
||||||
|
this.IsReachEnd = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
doInfinite(infiniteScroll) {
|
||||||
|
if (!this.IsReachEnd) {
|
||||||
|
// this.POItemHistoryReq.P_PAGE_NUM = this.P_PAGE_NUM;
|
||||||
|
this.worklistMainService.getPOItemHistory(this.POItemHistoryReq).
|
||||||
|
subscribe((result: any) => {
|
||||||
|
if (this.cs.validResponse(result)) {
|
||||||
|
if (result.GetPoItemHistoryList != undefined) {
|
||||||
|
this.P_PAGE_NUM++;
|
||||||
|
(result.GetPoItemHistoryList).forEach(element => {
|
||||||
|
if (element.ROW_NUM == element.NO_OF_ROWS) {
|
||||||
|
this.IsReachEnd = true;
|
||||||
|
} else {
|
||||||
|
this.IsReachEnd = false;
|
||||||
|
}
|
||||||
|
this.itemHistoryRes.push(element);
|
||||||
|
}, (Error) => console.log(Error), () => infiniteScroll.target.complete());
|
||||||
|
}// if list length >0
|
||||||
|
else {
|
||||||
|
this.IsReachEnd = true;
|
||||||
|
}
|
||||||
|
}// if response == 1
|
||||||
|
//this.pageNum++;
|
||||||
|
infiniteScroll.target.complete();
|
||||||
|
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
if (infiniteScroll)
|
||||||
|
infiniteScroll.target.complete();
|
||||||
|
}
|
||||||
|
}//end infiniteScroll
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,210 @@
|
|||||||
|
<ion-header>
|
||||||
|
<ion-toolbar class="header-toolbar">
|
||||||
|
<nav-buttons></nav-buttons>
|
||||||
|
<ion-title color="light">
|
||||||
|
{{ts.trPK('worklistMain','QUOTATION_ANALYSIS')}}
|
||||||
|
</ion-title>
|
||||||
|
</ion-toolbar>
|
||||||
|
</ion-header>
|
||||||
|
|
||||||
|
<ion-content class="colorBG">
|
||||||
|
|
||||||
|
<!-- <ion-card>
|
||||||
|
<ion-card-header class="boxHdr">
|
||||||
|
<div class="hrTitle">{{'worklistMain, actionHis' | translate}}</div>
|
||||||
|
</ion-card-header>
|
||||||
|
<ion-card-content> -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- <ion-card class="cardContent"> -->
|
||||||
|
<!-- <ion-card-header class="boxHdr">
|
||||||
|
<div class="hrTitle"> {{ts.trPK('worklistMain','info')}} </div>
|
||||||
|
</ion-card-header> -->
|
||||||
|
<!-- <ion-card-content> -->
|
||||||
|
|
||||||
|
<div [hidden]="getQutationAnalysis && getQutationAnalysis.length > 0">
|
||||||
|
<p>{{ 'general, empty' | translate}}</p>
|
||||||
|
</div>
|
||||||
|
<ion-list class="itemeHistoryist" *ngIf="getQutationAnalysis && getQutationAnalysis.length > 0 ">
|
||||||
|
<div>
|
||||||
|
<ion-grid class="gridItemReq">
|
||||||
|
|
||||||
|
<ion-item class="itemReqContent" *ngFor="let QutationAnalysis of getQutationAnalysis; let i=index; ">
|
||||||
|
<div class="itemReqDiv">
|
||||||
|
|
||||||
|
<ion-row>
|
||||||
|
<ion-col class="colItemReqHeader">
|
||||||
|
|
||||||
|
<label for="">{{i+1}}. {{QutationAnalysis.ITEM_CODE}} - {{QutationAnalysis.ITEM_DESC}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','QuotationNumber')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{QutationAnalysis.QUOT_NUM}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','vendor_name')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{QutationAnalysis.VENDOR_NAME}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
<!-- </ion-row>
|
||||||
|
<ion-row> -->
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','item_code')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{QutationAnalysis.ITEM_CODE}} </ion-label>
|
||||||
|
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','description')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{QutationAnalysis.ITEM_DESC}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- </ion-row>
|
||||||
|
<ion-row> -->
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','QUOTATION_QTY')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{QutationAnalysis.QUOT_QTY}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','quotation_uom')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{QutationAnalysis.QUOT_UOM}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- </ion-row>
|
||||||
|
<ion-row> -->
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','quotatio_net_price')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{QutationAnalysis.QUOT_UNIT_PRICE}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','quotatio_line_tot')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{QutationAnalysis.QUOT_LINE_TOTAL}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- </ion-row>
|
||||||
|
<ion-row> -->
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','quotatio_bonus_quantity')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{QutationAnalysis.QUOT_BONUS_QTY}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','quotation_delivery_date')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{QutationAnalysis.QUOT_DELIVERY_DATE}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- </ion-row>
|
||||||
|
<ion-row> -->
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','MFG_part_number')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{QutationAnalysis.QUOT_MFG_PART_NUM}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','RFQ_number')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{QutationAnalysis.RFQ_NUM}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- </ion-row>
|
||||||
|
<ion-row> -->
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','RFQ_qty')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{QutationAnalysis.RFQ_QTY}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','RFQ_UOM')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{QutationAnalysis.RFQ_UOM}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</ion-item>
|
||||||
|
|
||||||
|
</ion-grid>
|
||||||
|
</div>
|
||||||
|
</ion-list>
|
||||||
|
<!-- </ion-card-content>
|
||||||
|
</ion-card> -->
|
||||||
|
|
||||||
|
<ion-infinite-scroll (ionInfinite)="doInfinite($event)">
|
||||||
|
<ion-infinite-scroll-content></ion-infinite-scroll-content>
|
||||||
|
</ion-infinite-scroll>
|
||||||
|
</ion-content>
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
.itemeHistoryist {
|
||||||
|
background: #f0efef;
|
||||||
|
padding: 6px;
|
||||||
|
/* margin-top: 20px; */
|
||||||
|
/* width: 100%;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
ion-label.labelValue.sc-ion-label-ios-h.sc-ion-label-ios-s.ios.hydrated,
|
||||||
|
ion-label.labelValue.sc-ion-label-md-h.sc-ion-label-md-s.md.hydrated
|
||||||
|
{
|
||||||
|
white-space: pre-wrap !important;
|
||||||
|
--color: initial;
|
||||||
|
display: block;
|
||||||
|
color: var(--color);
|
||||||
|
font-family: var(--ion-font-family,inherit);
|
||||||
|
font-size: inherit;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box
|
||||||
|
}
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { QutationAnalysisComponent } from './qutation-analysis.component';
|
||||||
|
|
||||||
|
describe('QutationAnalysisComponent', () => {
|
||||||
|
let component: QutationAnalysisComponent;
|
||||||
|
let fixture: ComponentFixture<QutationAnalysisComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ QutationAnalysisComponent ],
|
||||||
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(QutationAnalysisComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,125 @@
|
|||||||
|
import { ViewNoteModalComponent } from './../view-note-modal/view-note-modal.component';
|
||||||
|
import { WorklistService } from './../service/worklist.service';
|
||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { WorkListActionHistoryRequest } from '../models/ActionHistoryReq';
|
||||||
|
import { CommonService } from 'src/app/hmg-common/services/common/common.service';
|
||||||
|
import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service';
|
||||||
|
import { ModalController } from '@ionic/angular';
|
||||||
|
import { POItemHistoryRequest} from '../models/POItemHistoryReq';
|
||||||
|
import { WorklistMainService } from '../service/work-list.main.service';
|
||||||
|
import { POItemHistoryRes } from '../models/POItemHistoryRes';
|
||||||
|
import { QuotationAnalysisRequest } from '../models/quotationAnalysisReq';
|
||||||
|
import { QuotationAnalysisResponse } from '../models/quotationAnalysisRes';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-qutation-analysis',
|
||||||
|
templateUrl: './qutation-analysis.component.html',
|
||||||
|
styleUrls: ['./qutation-analysis.component.scss'],
|
||||||
|
})
|
||||||
|
export class QutationAnalysisComponent implements OnInit {
|
||||||
|
IsReachEnd: boolean = false;
|
||||||
|
P_PAGE_NUM: number = 1;
|
||||||
|
P_PAGE_LIMIT: number = 50;
|
||||||
|
POQuotationHISReq: QuotationAnalysisRequest;
|
||||||
|
getPassPOItemID: any;
|
||||||
|
getPassPOHeaderID: any;
|
||||||
|
getPassItemHistoreyList: any;
|
||||||
|
getQutationAnalysis:any;
|
||||||
|
constructor(public worklistMainService: WorklistMainService,
|
||||||
|
private cs: CommonService,
|
||||||
|
private ts: TranslatorService,
|
||||||
|
private modalCtrl: ModalController,
|
||||||
|
public worklistService: WorklistService) {
|
||||||
|
this.getPassPOItemID = this.cs.sharedService.getSharedData('passPOInfo');
|
||||||
|
this.getPassPOHeaderID = this.cs.sharedService.getSharedData('passPOHeader');
|
||||||
|
this.getPassItemHistoreyList = this.cs.sharedService.getSharedData('passItemHisList');
|
||||||
|
//itemHistoryRes
|
||||||
|
console.log("getPassPOItemID: "+this.getPassPOItemID);
|
||||||
|
console.log("getPassPOItemID: "+this.getPassPOHeaderID);
|
||||||
|
|
||||||
|
this.POQuotationHISReq = new QuotationAnalysisRequest();
|
||||||
|
this.POQuotationHISReq.P_PAGE_NUM = this.P_PAGE_NUM;
|
||||||
|
this.POQuotationHISReq.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
|
||||||
|
this.POQuotationHISReq.P_ITEM_ID= this.getPassPOItemID;
|
||||||
|
this.POQuotationHISReq.P_PO_HEADER_ID = this.getPassPOHeaderID;
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit() {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
this.getQutationAnalysisFun( this.getPassPOHeaderID,this.getPassPOItemID);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
public getQutationAnalysisFun(headerID,itemID) {
|
||||||
|
console.log("itemID"+ itemID+" headerID "+ headerID);
|
||||||
|
this.IsReachEnd = false;
|
||||||
|
const request = new QuotationAnalysisRequest();
|
||||||
|
request.P_ITEM_ID=parseInt(itemID);
|
||||||
|
request.P_PO_HEADER_ID=headerID;
|
||||||
|
request.P_PAGE_LIMIT=50;
|
||||||
|
request.P_PAGE_NUM=1;
|
||||||
|
this.worklistMainService.getQutationAnalysis(request).
|
||||||
|
subscribe((result: QuotationAnalysisResponse) => {
|
||||||
|
this.handleQutationAnalysisResult(result);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
handleQutationAnalysisResult(result) {
|
||||||
|
if (this.cs.validResponse(result)) {
|
||||||
|
|
||||||
|
if (this.cs.hasData(result.GetQuotationAnalysisList)) {
|
||||||
|
|
||||||
|
//open page
|
||||||
|
//set sheard data
|
||||||
|
//
|
||||||
|
this.getQutationAnalysis = result.GetQuotationAnalysisList;
|
||||||
|
this.P_PAGE_NUM++;
|
||||||
|
let lastItemIndex = this.getQutationAnalysis.length - 1;
|
||||||
|
if (result.GetQuotationAnalysisList[lastItemIndex]) {
|
||||||
|
let lastitem = result.GetQuotationAnalysisList[lastItemIndex];
|
||||||
|
if (lastitem.NO_OF_ROWS == lastitem.ROW_NUM) {
|
||||||
|
this.IsReachEnd = true;
|
||||||
|
} else {
|
||||||
|
this.IsReachEnd = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
doInfinite(infiniteScroll) {
|
||||||
|
console.log("hello");
|
||||||
|
if (!this.IsReachEnd) {
|
||||||
|
this.getQutationAnalysis.P_PAGE_NUM = this.P_PAGE_NUM;
|
||||||
|
this.worklistService.getActionHistory(this.getQutationAnalysis).
|
||||||
|
subscribe((result: any) => {
|
||||||
|
if (this.cs.validResponse(result)) {
|
||||||
|
if (result.GetQuotationAnalysisList != undefined) {
|
||||||
|
this.P_PAGE_NUM++;
|
||||||
|
(result.GetQuotationAnalysisList).forEach(element => {
|
||||||
|
if (element.ROW_NUM == element.NO_OF_ROWS) {
|
||||||
|
this.IsReachEnd = true;
|
||||||
|
} else {
|
||||||
|
this.IsReachEnd = false;
|
||||||
|
}
|
||||||
|
this.getQutationAnalysis.push(element);
|
||||||
|
}, (Error) => console.log(Error), () => infiniteScroll.target.complete());
|
||||||
|
}// if list length >0
|
||||||
|
else {
|
||||||
|
this.IsReachEnd = true;
|
||||||
|
}
|
||||||
|
}// if response == 1
|
||||||
|
//this.pageNum++;
|
||||||
|
infiniteScroll.target.complete();
|
||||||
|
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
if (infiniteScroll)
|
||||||
|
infiniteScroll.target.complete();
|
||||||
|
}
|
||||||
|
}//end infiniteScroll
|
||||||
|
}
|
||||||
@ -0,0 +1,570 @@
|
|||||||
|
<ion-header>
|
||||||
|
<ion-toolbar class="header-toolbar">
|
||||||
|
<ion-title color="light"> {{ts.trPK('worklistMain','title')}}</ion-title>
|
||||||
|
<ion-buttons slot="start">
|
||||||
|
<nav-buttons backLink="/notification/homepage"></nav-buttons>
|
||||||
|
</ion-buttons>
|
||||||
|
</ion-toolbar>
|
||||||
|
|
||||||
|
<ion-toolbar>
|
||||||
|
<ion-segment class="segmentPR" scrollable>
|
||||||
|
<ion-segment-button value="0" checked>
|
||||||
|
<!-- <ion-icon name="call">arrowRight</ion-icon> -->
|
||||||
|
<ion-label> {{ts.trPK('worklistMain','info')}}</ion-label>
|
||||||
|
</ion-segment-button>
|
||||||
|
<ion-segment-button value="1">
|
||||||
|
<!-- <ion-icon name="cloud-upload"></ion-icon> -->
|
||||||
|
<ion-label> {{ts.trPK('worklistMain','itemReq')}}</ion-label>
|
||||||
|
</ion-segment-button>
|
||||||
|
<ion-segment-button value="2">
|
||||||
|
<!-- <ion-icon name="paper"></ion-icon> -->
|
||||||
|
<ion-label>
|
||||||
|
{{'worklistMain, actionHis' | translate}}
|
||||||
|
|
||||||
|
</ion-label>
|
||||||
|
</ion-segment-button>
|
||||||
|
<ion-segment-button value="3">
|
||||||
|
<!-- <ion-icon name="code-working"></ion-icon> -->
|
||||||
|
<ion-label>{{'general, attachment' | translate}}
|
||||||
|
</ion-label>
|
||||||
|
</ion-segment-button>
|
||||||
|
</ion-segment>
|
||||||
|
</ion-toolbar>
|
||||||
|
</ion-header>
|
||||||
|
|
||||||
|
<ion-content class="colorBG">
|
||||||
|
|
||||||
|
|
||||||
|
<ion-slides pager="true" class="slides-gray-bullets">
|
||||||
|
<ion-slide class="slide-1">
|
||||||
|
|
||||||
|
<div *ngIf="pInformation && pInformation != '' " class="tipsPadding">{{pInformation}}</div>
|
||||||
|
|
||||||
|
<ion-card class="cardContent">
|
||||||
|
<!-- <ion-card-header class="boxHdr">
|
||||||
|
<div class="hrTitle"> {{ts.trPK('worklistMain','info')}} </div>
|
||||||
|
</ion-card-header> -->
|
||||||
|
<ion-card-content>
|
||||||
|
<ion-grid style="text-align: left">
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for=""> {{ts.trPK('worklistMain','from')}}
|
||||||
|
|
||||||
|
</label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<label for="">{{getPassNotificationDetails.FROM_USER}}</label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','to')}}
|
||||||
|
</label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<label for=""> {{getPassNotificationDetails.TO_USER}}</label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','sent')}}
|
||||||
|
</label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<label for="">{{getPassNotificationDetails.BEGIN_DATE}}</label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','closed')}}
|
||||||
|
</label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<label for="">{{getPassNotificationDetails.END_DATE}}</label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','id')}}
|
||||||
|
</label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<label for="">{{getPassNotificationDetails.NOTIFICATION_ID}}</label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row *ngIf=" getPassNotificationDetails.RESPONDER != '' ">
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','responder')}}
|
||||||
|
</label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<label for="">{{getPassNotificationDetails.RESPONDER}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','subject')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<label for="">{{getPassNotificationDetails.SUBJECT}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
<!-- notificationBodyRes -->
|
||||||
|
|
||||||
|
<div *ngFor="let header of PRHeader">
|
||||||
|
|
||||||
|
<ion-row
|
||||||
|
*ngIf="header.HDR_ATTRIBUTE_NAME != 'Requisition Total' && header.HDR_ATTRIBUTE_NAME != 'Non-Recoverable Tax'">
|
||||||
|
<!-- *ngIf="header.HDR_ATTRIBUTE_NAME != 'Requisition Total' && header.HDR_ATTRIBUTE_NAME != 'Non-Recoverable Tax'"> -->
|
||||||
|
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{header.HDR_ATTRIBUTE_NAME}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{header.HDR_ATTRIBUTE_VALUE}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ion-grid>
|
||||||
|
<div>
|
||||||
|
<ion-row style="text-align: center !important">
|
||||||
|
<ion-col *ngIf="totalH">
|
||||||
|
<div class="colItemReq" style="text-align: center !important">{{totalH}}</div>
|
||||||
|
<div class="labelTotal">{{valueH}}</div>
|
||||||
|
|
||||||
|
</ion-col>
|
||||||
|
<ion-col *ngIf="taxH ">
|
||||||
|
<div class="colItemReq" style="text-align: center !important">{{taxH}}</div>
|
||||||
|
<div class="labelTotal">{{taxvalueH}}</div>
|
||||||
|
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</ion-grid>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ion-grid>
|
||||||
|
|
||||||
|
</ion-card-content>
|
||||||
|
|
||||||
|
|
||||||
|
<ion-card-content>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<div id="notificationDynamicFields1">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- <ion-item *ngIf="notificationButtonRes?.length >0" class="requiredItem">
|
||||||
|
<ion-label class="boldTxtNav">{{'actionHis, action' | translate}} </ion-label>
|
||||||
|
<ion-select okText="{{ts.trPK('general','ok')}}" cancelText="{{ts.trPK('general','cancel')}}"
|
||||||
|
[(ngModel)]="actionType" required>
|
||||||
|
<ion-select-option value="{{notificationButtons.BUTTON_ACTION}}"
|
||||||
|
*ngFor="let notificationButtons of notificationButtonRes; let i=index;">
|
||||||
|
{{notificationButtons.BUTTON_LABEL}}</ion-select-option>
|
||||||
|
</ion-select>
|
||||||
|
</ion-item> -->
|
||||||
|
</ion-card-content>
|
||||||
|
</ion-card>
|
||||||
|
|
||||||
|
|
||||||
|
</ion-slide>
|
||||||
|
<ion-slide>
|
||||||
|
<!-- <ion-card class="cardContent">
|
||||||
|
<ion-card-header class="boxHdr">
|
||||||
|
<div class="hrTitle"> {{ts.trPK('worklistMain','info')}} </div>
|
||||||
|
</ion-card-header>
|
||||||
|
<ion-card-content> -->
|
||||||
|
<div [hidden]="notificationBodyRes && notificationBodyRes.length > 0">
|
||||||
|
<p>{{ 'general, empty' | translate}}</p>
|
||||||
|
</div>
|
||||||
|
<ion-list class="itemReqList" *ngIf="notificationBodyRes && notificationBodyRes.length > 0 ">
|
||||||
|
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<ion-grid class="gridItemReq">
|
||||||
|
|
||||||
|
<ion-item class="itemReqContent" *ngFor="let notificationList of notificationBodyRes; let i=index; " >
|
||||||
|
<div class="itemReqDiv">
|
||||||
|
|
||||||
|
|
||||||
|
<ion-row>
|
||||||
|
<ion-col class="colItemReqHeader">
|
||||||
|
<!-- <label for="">{{ts.trPK('worklistMain','description')}}
|
||||||
|
</label> -->
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<label for="">{{i+1}}. {{notificationList.DESCRIPTION}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','code')}}
|
||||||
|
</label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{notificationList.ITEM_CODE}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
<!-- </ion-row>
|
||||||
|
|
||||||
|
<ion-row> -->
|
||||||
|
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','unit')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{notificationList.UOM}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
<!-- </ion-row>
|
||||||
|
<ion-row> -->
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','quantity')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{notificationList.QUANTITY}} </ion-label>
|
||||||
|
|
||||||
|
</ion-col>
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','Date_Req')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{notificationList.DATE_REQUIRED}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- </ion-row>
|
||||||
|
<ion-row> -->
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','line_status')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{notificationList.LINE_STATUS}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','date_status')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{notificationList.STATUS_DATE}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','trans_type')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{notificationList.TRANSACTION_TYPE_NAME}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','operating_unit')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{notificationList.OPERATING_UNIT}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','organization_code')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{notificationList.ORGANIZATION_CODE}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','organization')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{notificationList.ORGANIZATION_NAME}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','from_subinventory')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{notificationList.FROM_SUBINVENTORY}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','from_locator')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{notificationList.FROM_LOCATOR}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','to_subinventory')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{notificationList.TO_SUBINVENTORY}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','to_locator')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{notificationList.TO_LOCATOR}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','ShipToLocation')}} </label>
|
||||||
|
<br />
|
||||||
|
<!-- </ion-col>
|
||||||
|
<ion-col> -->
|
||||||
|
<ion-label class="labelValue" for="">{{notificationList.SHIP_TO_LOCATION}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</ion-item>
|
||||||
|
</ion-grid>
|
||||||
|
</div>
|
||||||
|
</ion-list>
|
||||||
|
<!-- </ion-card-content>
|
||||||
|
</ion-card> -->
|
||||||
|
</ion-slide>
|
||||||
|
<ion-slide>
|
||||||
|
<ion-card class="cardContent">
|
||||||
|
<ion-card-content>
|
||||||
|
|
||||||
|
<div [hidden]="actionHistoryRes && actionHistoryRes.length > 0">
|
||||||
|
<p>{{ 'general, empty' | translate}}</p>
|
||||||
|
</div>
|
||||||
|
<div *ngIf="actionHistoryRes && actionHistoryRes.length > 0 ">
|
||||||
|
<ion-list class="notification-list ">
|
||||||
|
<div class="timeline">
|
||||||
|
<ion-item *ngFor="let actionHistory of actionHistoryRes">
|
||||||
|
|
||||||
|
<div class="timeline-item" slot="start">
|
||||||
|
<!-- <div class="item-date"> {{notificationList.BEGIN_DATE }} </div> -->
|
||||||
|
<!-- [hidden]="actionHistory.NOTE == '' || actionHistory.NOTE == null"> -->
|
||||||
|
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<button ion-button (click)="openNoteDetail(actionHistory.NOTE ,actionHistory.NAME)"
|
||||||
|
[hidden]="actionHistory.NOTE == '' || actionHistory.NOTE == null"
|
||||||
|
style=" background: none;width: 60%;">
|
||||||
|
|
||||||
|
<img src="../assets/imgs/noteSmall.png">
|
||||||
|
|
||||||
|
<!-- <ion-icon name="bookmark"></ion-icon> -->
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<!-- [ngClass]="{'bg-blue-dot' : actionHistory.ACTION === 'Submitted' ,'statusGreanColor' :appointmentsArrive.Status != 1 && appointmentsArrive.Status != 2, 'statusRedColor' :appointmentsArrive.Status === 2}" -->
|
||||||
|
|
||||||
|
<div
|
||||||
|
|
||||||
|
[ngClass]="{'bg-blue-dot' : actionHistory.ACTION === 'Submitted' || actionHistory.ACTION === 'Submit' ,'bg-orange-dot' : actionHistory.ACTION === 'Pending' ,'bg-red-dot' : actionHistory.ACTION === 'Rejected','bg-green-dot' : actionHistory.ACTION != 'Pending' && actionHistory.ACTION != 'Rejected' && actionHistory.ACTION != 'Submitted' && actionHistory.ACTION != 'Submit'}"
|
||||||
|
class="timeline-thumb timeline-icon">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<ion-col>
|
||||||
|
<ion-label
|
||||||
|
[ngClass]="{'bg-blue-txt' : actionHistory.ACTION === 'Submitted' || actionHistory.ACTION === 'Submit' ,'bg-orange-txt' : actionHistory.ACTION === 'Pending' ,'bg-red-txt' : actionHistory.ACTION === 'Rejected','bg-green-txt' : actionHistory.ACTION != 'Pending' && actionHistory.ACTION != 'Rejected' && actionHistory.ACTION != 'Submitted' && actionHistory.ACTION != 'Submit'}"
|
||||||
|
class=""> {{actionHistory.ACTION}}</ion-label>
|
||||||
|
<ion-label> {{actionHistory.NAME}}
|
||||||
|
</ion-label>
|
||||||
|
|
||||||
|
<ion-label> {{actionHistory.NOTIFICATION_DATE| dateString }} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-item>
|
||||||
|
</div>
|
||||||
|
</ion-list>
|
||||||
|
</div>
|
||||||
|
</ion-card-content>
|
||||||
|
</ion-card>
|
||||||
|
|
||||||
|
</ion-slide>
|
||||||
|
<ion-slide>
|
||||||
|
<ion-card class="cardContent">
|
||||||
|
<ion-card-content>
|
||||||
|
<div [hidden]="attachmentRes && attachmentRes.length > 0">
|
||||||
|
<p>{{ 'general, notAttch' | translate}}</p>
|
||||||
|
</div>
|
||||||
|
<div *ngIf="attachmentRes && attachmentRes.length > 0 ">
|
||||||
|
<!-- <ion-card>
|
||||||
|
|
||||||
|
<ion-card-header class="boxHdr">
|
||||||
|
<div class="hrTitle">{{'worklistMain, suppDoc' | translate}}</div>
|
||||||
|
</ion-card-header>
|
||||||
|
<ion-card-content>
|
||||||
|
-->
|
||||||
|
<ion-grid>
|
||||||
|
<div *ngFor="let attachList of attachmentRes">
|
||||||
|
<ion-row (click)="OpenAttachFiles(attachList.FILE_DATA,attachList.FILE_CONTENT_TYPE)">
|
||||||
|
<ion-col col-12>
|
||||||
|
<div *ngIf="attachList.FILE_CONTENT_TYPE === 'pdf' || attachList.FILE_CONTENT_TYPE === 'PDF'">
|
||||||
|
<img float-start class="attachImg" src="../assets/imgs/pdf.png">
|
||||||
|
</div>
|
||||||
|
<div *ngIf="attachList.FILE_CONTENT_TYPE === 'txt'"> <img float-start class="attachImg"
|
||||||
|
src="../assets/imgs/doc.png">
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
*ngIf="attachList.FILE_CONTENT_TYPE != 'txt' && attachList.FILE_CONTENT_TYPE != 'PDF' && attachList.FILE_CONTENT_TYPE != 'pdf' && attachList.FILE_CONTENT_TYPE != 'png' && attachList.FILE_CONTENT_TYPE != 'jpeg' && attachList.FILE_CONTENT_TYPE != 'jpg' && attachList.FILE_CONTENT_TYPE != 'PNG' && attachList.FILE_CONTENT_TYPE != 'JPEG' && attachList.FILE_CONTENT_TYPE != 'JPG'">
|
||||||
|
<img float-start class="attachImg" src="../assets/imgs/nonfile.png">
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
*ngIf="attachList.FILE_CONTENT_TYPE === 'png' || attachList.FILE_CONTENT_TYPE === 'jpeg' || attachList.FILE_CONTENT_TYPE === 'jpg'|| attachList.FILE_CONTENT_TYPE === 'PNG' || attachList.FILE_CONTENT_TYPE === 'JPEG'|| attachList.FILE_CONTENT_TYPE === 'JPG'">
|
||||||
|
<img float-start class="attachImg" src="../assets/imgs/img.png">
|
||||||
|
</div>
|
||||||
|
<ion-label>
|
||||||
|
{{attachList.SEQ_NUM }}. {{attachList.FILE_NAME}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
<!-- <ion-col col-2>
|
||||||
|
<button float-end class="attachImgBtn"
|
||||||
|
(click)="OpenAttachFiles(attachList.FILE_DATA,attachList.FILE_CONTENT_TYPE)">
|
||||||
|
<img class="attachImg" src="../assets/imgs/view.png">
|
||||||
|
</button>
|
||||||
|
</ion-col> -->
|
||||||
|
</ion-row>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</ion-grid>
|
||||||
|
<!-- </ion-card-content>
|
||||||
|
</ion-card> -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</ion-card-content>
|
||||||
|
</ion-card>
|
||||||
|
</ion-slide>
|
||||||
|
|
||||||
|
</ion-slides>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- <div id="notificationDynamicFields">
|
||||||
|
</div> -->
|
||||||
|
</ion-content>
|
||||||
|
<ion-footer class="footerSearchBtn">
|
||||||
|
|
||||||
|
<ion-row>
|
||||||
|
<ion-col col-12>
|
||||||
|
<div id="notificationDynamicFields">
|
||||||
|
</div>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
<ion-row>
|
||||||
|
<!-- <div class="centerDiv"> -->
|
||||||
|
<ion-col col-2>
|
||||||
|
|
||||||
|
</ion-col>
|
||||||
|
<ion-col col-8>
|
||||||
|
<!-- <ion-button color="customnavy" class="gridBtn" (click)="actionButton()"> {{ts.trPK('general','submit')}}
|
||||||
|
</ion-button> -->
|
||||||
|
|
||||||
|
<ion-item *ngIf="notificationButtonRes?.length >0" class="requiredItem actionList">
|
||||||
|
<ion-label class="boldTxtNav">{{'actionHis, action' | translate}} </ion-label>
|
||||||
|
<ion-select (ionChange)="actionButton()" okText="{{ts.trPK('general','ok')}}"
|
||||||
|
cancelText="{{ts.trPK('general','cancel')}}" [(ngModel)]="actionType" required>
|
||||||
|
<ion-select-option value="{{notificationButtons.BUTTON_ACTION}}"
|
||||||
|
*ngFor="let notificationButtons of notificationButtonRes; let i=index;">
|
||||||
|
{{notificationButtons.BUTTON_LABEL}}</ion-select-option>
|
||||||
|
</ion-select>
|
||||||
|
</ion-item>
|
||||||
|
|
||||||
|
</ion-col>
|
||||||
|
<!-- </div> -->
|
||||||
|
|
||||||
|
<ion-col col-2 style="bottom: -8px">
|
||||||
|
<ion-button class="skipbutton" (click)="nextNotfification()">
|
||||||
|
{{'worklistMain, skip' | translate}}
|
||||||
|
<img class="arrowIcon" src="../assets/imgs/arrowRight.png">
|
||||||
|
|
||||||
|
</ion-button>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ion-footer>
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { WorklistMainMRComponent } from './worklist-main-mr.component';
|
||||||
|
|
||||||
|
describe('WorklistMainMRComponent', () => {
|
||||||
|
let component: WorklistMainMRComponent;
|
||||||
|
let fixture: ComponentFixture<WorklistMainMRComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ WorklistMainMRComponent ],
|
||||||
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(WorklistMainMRComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,779 @@
|
|||||||
|
import { Component, OnInit, ElementRef } from "@angular/core";
|
||||||
|
import { CommonService } from "src/app/hmg-common/services/common/common.service";
|
||||||
|
import { TranslatorService } from "src/app/hmg-common/services/translator/translator.service";
|
||||||
|
import { WorkListBodyRequest } from "../models/NotificationBodyReq";
|
||||||
|
import { EITNotificatonBodyResponse } from "../models/EITNotificationBodyRes";
|
||||||
|
import { AbsenceNotificatonBodyResponse } from "../models/AbsenceNotificationBodyRes";
|
||||||
|
import { NotificatonButtonResponse } from "../models/NotificationButtonRes";
|
||||||
|
import { WorkListActionRequest } from "../models/NotificationActionReq";
|
||||||
|
import { WorkListButtonRequest } from "../models/NotificationButtonReq";
|
||||||
|
// import { isDate } from 'angular6-json-schema-form';
|
||||||
|
import { MenuResponse } from "src/app/hmg-common/services/menu/models/menu-response";
|
||||||
|
import { LoginRequest } from "src/app/hmg-common/services/authentication/models/login.request";
|
||||||
|
import { WorklistMainService } from "../service/work-list.main.service";
|
||||||
|
import { HomeComponent } from "src/app/notification/home/home.component";
|
||||||
|
import { TextInput } from 'src/app/uI-elements/text.input';
|
||||||
|
import { TextAreaInput } from 'src/app/uI-elements/text-area.input';
|
||||||
|
import { MenuService } from 'src/app/hmg-common/services/menu/menuservice.service';
|
||||||
|
import { Events, ModalController } from '@ionic/angular';
|
||||||
|
import { PONotificatonBodyResponse } from '../models/PONotificationBodyRes';
|
||||||
|
import { MONotificatonBodyResponse } from '../models/MONotificationBodyRes';
|
||||||
|
import { PRNotificatonBodyResponse } from '../models/PRNotificationBodyRes';
|
||||||
|
import { WorklistAttachService } from 'src/app/absence/service/work-list-attach.service';
|
||||||
|
import { NotificationGetAttachResponse } from 'src/app/eit/models/NotificationGetAttachRes';
|
||||||
|
import { PRNotificatonBodyList } from '../models/PRNotificationBodyList';
|
||||||
|
import { WorkListActionHistoryRequest } from '../models/ActionHistoryReq';
|
||||||
|
import { WorklistService } from '../service/worklist.service';
|
||||||
|
import { ViewNoteModalComponent } from '../view-note-modal/view-note-modal.component';
|
||||||
|
import { WorkListActionHistoryResponse } from '../models/ActionHistoryRes';
|
||||||
|
import { WorkListAttachViewComponent } from '../work-list-attach-view/work-list-attach-view.component';
|
||||||
|
import { ApplyActionModalComponent } from '../apply-action-modal/apply-action-modal.component';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-worklist-main-mr',
|
||||||
|
templateUrl: './worklist-main-mr.component.html',
|
||||||
|
styleUrls: ['./worklist-main-mr.component.scss'],
|
||||||
|
})
|
||||||
|
export class WorklistMainMRComponent implements OnInit {
|
||||||
|
|
||||||
|
private WorkListBodyObj: WorkListBodyRequest;
|
||||||
|
private WorkListButtonsObj: WorkListButtonRequest;
|
||||||
|
private WorkListActionObj: WorkListActionRequest;
|
||||||
|
private WorkListActionHistoryObj: WorkListActionHistoryRequest;
|
||||||
|
private WorkListAttachObj: WorkListButtonRequest;
|
||||||
|
private PRList:PRNotificatonBodyList
|
||||||
|
public static PASS_NOTIFICATION_INFO = "passNotificationInfo";
|
||||||
|
public static PASS_ACTION_MODE = "passActionMode";
|
||||||
|
getPassNotificationDetails: any;
|
||||||
|
public static PASS_RES_ATTR = "passResAttr";
|
||||||
|
TransactionID: number = -999;
|
||||||
|
notificationBodyRes: any;
|
||||||
|
actionHistoryRes: any;
|
||||||
|
notificationButtonRes: any;
|
||||||
|
actionMode: any;
|
||||||
|
pInformation: string = "";
|
||||||
|
pQuestion: string = "";
|
||||||
|
RespondAttributesListRes: any;
|
||||||
|
schemaNotific: any;
|
||||||
|
NotRespondAttributeList: any;
|
||||||
|
Resp2_val: any;
|
||||||
|
notExampleJsonObject: any;
|
||||||
|
hideForwordEmployee: any;
|
||||||
|
exampleJsonObject: any;
|
||||||
|
dataOfAttr: any;
|
||||||
|
P_RESPOND_ATTRIBUTES_TBL: any;
|
||||||
|
selEmployeeID: any;
|
||||||
|
actionType: string = "";
|
||||||
|
notificationArray: any;
|
||||||
|
notificationDynamicAttributeArr:any;
|
||||||
|
private textInput: TextInput;
|
||||||
|
private textArea: TextAreaInput;
|
||||||
|
notificationCount: any;
|
||||||
|
attachmentRes:any;
|
||||||
|
PRHeader:any;//change the tpye later
|
||||||
|
PRLines:any;//change the tpye later
|
||||||
|
IsReachEnd: boolean = false;
|
||||||
|
P_PAGE_NUM: number = 1;
|
||||||
|
P_PAGE_LIMIT: number = 50;
|
||||||
|
headerTotal: any;
|
||||||
|
totalH: any;
|
||||||
|
valueH: any;
|
||||||
|
taxH: any;
|
||||||
|
taxvalueH: any;
|
||||||
|
NotificationGetRespondAttributesList: any;
|
||||||
|
confirmMsg: string;
|
||||||
|
delMsg: string;
|
||||||
|
closeMsg: string;
|
||||||
|
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
public common: CommonService,
|
||||||
|
public ts: TranslatorService,
|
||||||
|
public worklistMainService: WorklistMainService,
|
||||||
|
public elementRef: ElementRef,
|
||||||
|
public menuService: MenuService,
|
||||||
|
public events: Events,
|
||||||
|
public worklistAttachService: WorklistAttachService,
|
||||||
|
private modalCtrl: ModalController,
|
||||||
|
public worklistService: WorklistService
|
||||||
|
) {
|
||||||
|
|
||||||
|
//this.getPassNotificationDetails = this.common.sharedService.getSharedData('passNotificationInfo');
|
||||||
|
this.WorkListActionHistoryObj = new WorkListActionHistoryRequest();
|
||||||
|
this.WorkListActionHistoryObj.P_PAGE_NUM = this.P_PAGE_NUM;
|
||||||
|
this.WorkListActionHistoryObj.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
|
||||||
|
// this.WorkListActionHistoryObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit() {
|
||||||
|
this.WorkListAttachObj = new WorkListButtonRequest();
|
||||||
|
|
||||||
|
this.intializeNotificationDetail();
|
||||||
|
|
||||||
|
let segment = document.querySelector('ion-segment');
|
||||||
|
let slides = document.querySelector('ion-slides');
|
||||||
|
|
||||||
|
segment.addEventListener('ionChange', (ev) => onSegmentChange(ev));
|
||||||
|
slides.addEventListener('ionSlideDidChange', (ev) => onSlideDidChange(ev));
|
||||||
|
|
||||||
|
// On Segment change slide to the matching slide
|
||||||
|
function onSegmentChange(ev) {
|
||||||
|
console.log("ev.detail.value"+ev.detail.value);
|
||||||
|
slideTo(ev.detail.value);
|
||||||
|
}
|
||||||
|
|
||||||
|
function slideTo(index) {
|
||||||
|
console.log("index: "+index);
|
||||||
|
|
||||||
|
slides.slideTo(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
// On Slide change update segment to the matching value
|
||||||
|
async function onSlideDidChange(ev) {
|
||||||
|
var index = await slides.getActiveIndex();
|
||||||
|
console.log("index: "+index);
|
||||||
|
clickSegment(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
function clickSegment(index) {
|
||||||
|
|
||||||
|
segment.value = index;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
intializeNotificationDetail() {
|
||||||
|
document.getElementById("notificationDynamicFields").innerHTML="";
|
||||||
|
console.log("intializeNotificationDetail");
|
||||||
|
this.getPassNotificationDetails = this.common.sharedService.getSharedData(
|
||||||
|
HomeComponent.NOTIFICATION_DATA,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
console.log(this.getPassNotificationDetails.ROW_NUM);
|
||||||
|
this.notificationArray = this.common.sharedService.getSharedData(
|
||||||
|
HomeComponent.NOTIFICATION_ARR,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
this.WorkListBodyObj = new WorkListBodyRequest();
|
||||||
|
this.WorkListButtonsObj = new WorkListButtonRequest();
|
||||||
|
|
||||||
|
this.WorkListActionObj = new WorkListActionRequest();
|
||||||
|
|
||||||
|
this.WorkListBodyObj.P_TRANSACTION_ID = this.TransactionID;
|
||||||
|
this.WorkListBodyObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;
|
||||||
|
this.WorkListBodyObj.P_PAGE_NUM = this.P_PAGE_NUM;;
|
||||||
|
this.WorkListBodyObj.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
|
||||||
|
|
||||||
|
this.WorkListButtonsObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;
|
||||||
|
|
||||||
|
this.WorkListActionObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;
|
||||||
|
this.WorkListActionObj.P_FORWARD_TO_USER_NAME = "";
|
||||||
|
this.WorkListActionObj.P_ACTION_MODE = "";
|
||||||
|
this.WorkListActionObj.P_COMMENTS = "";
|
||||||
|
this.WorkListActionObj.P_APPROVER_INDEX = null;
|
||||||
|
|
||||||
|
this.WorkListActionHistoryObj.P_PAGE_NUM = this.P_PAGE_NUM;
|
||||||
|
this.WorkListActionHistoryObj.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
|
||||||
|
this.WorkListActionHistoryObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;
|
||||||
|
|
||||||
|
this.WorkListAttachObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;
|
||||||
|
|
||||||
|
this.getNotificationButtons(this.WorkListButtonsObj);
|
||||||
|
this.getNotificationResAttr(this.WorkListButtonsObj);
|
||||||
|
this.getActionHistory(this.WorkListActionHistoryObj);
|
||||||
|
this.getAttachmentNotification(this.WorkListAttachObj);
|
||||||
|
|
||||||
|
if (this.getPassNotificationDetails.REQUEST_TYPE == "EIT") {
|
||||||
|
this.getEITNotificationDetails(this.WorkListBodyObj);
|
||||||
|
} else if (this.getPassNotificationDetails.REQUEST_TYPE == "ABSENCE") {
|
||||||
|
this.getAbsenceNotificationDetails(this.WorkListBodyObj);
|
||||||
|
} else if (this.getPassNotificationDetails.REQUEST_TYPE == "PO"){
|
||||||
|
this.getPONotificationDetails(this.WorkListBodyObj);
|
||||||
|
} else if (this.getPassNotificationDetails.REQUEST_TYPE == "MO"){
|
||||||
|
this.getMONotificationDetails(this.WorkListBodyObj);
|
||||||
|
} else if (this.getPassNotificationDetails.REQUEST_TYPE == "PR"){
|
||||||
|
this.getPRNotificationDetails(this.WorkListBodyObj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getPRNotificationDetails(notificationBodyObj){
|
||||||
|
this.worklistMainService
|
||||||
|
.getPRNotificationBody(notificationBodyObj)
|
||||||
|
.subscribe((result: PRNotificatonBodyResponse) => {
|
||||||
|
this.handleWorkListBodyResult(result, "PR");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
getMONotificationDetails(notificationBodyObj){
|
||||||
|
this.worklistMainService
|
||||||
|
.getMONotificationBody(notificationBodyObj)
|
||||||
|
.subscribe((result: MONotificatonBodyResponse) => {
|
||||||
|
this.handleWorkListBodyResult(result, "MO");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
getPONotificationDetails(notificationBodyObj){
|
||||||
|
this.worklistMainService
|
||||||
|
.getPONotificationBody(notificationBodyObj)
|
||||||
|
.subscribe((result: PONotificatonBodyResponse) => {
|
||||||
|
console.log(result.GetPoNotificationBodyList.POHeader[0].BUYER);
|
||||||
|
this.handleWorkListBodyResult(result, "PO");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
getEITNotificationDetails(notificationBodyObj) {
|
||||||
|
this.worklistMainService
|
||||||
|
.getEITNotificationBody(notificationBodyObj)
|
||||||
|
.subscribe((result: EITNotificatonBodyResponse) => {
|
||||||
|
this.handleWorkListBodyResult(result, "EIT");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
getAbsenceNotificationDetails(notificationBodyObj) {
|
||||||
|
this.worklistMainService
|
||||||
|
.getAbsencesNotificationBody(notificationBodyObj)
|
||||||
|
.subscribe((result: AbsenceNotificatonBodyResponse) => {
|
||||||
|
this.handleWorkListBodyResult(result, "ABSENCE");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
handleWorkListBodyResult(result, Type) {
|
||||||
|
this.notificationBodyRes = {};
|
||||||
|
if (this.common.validResponse(result)) {
|
||||||
|
this.pInformation = result.P_INFORMATION;
|
||||||
|
this.pQuestion = result.P_QUESTION;
|
||||||
|
if (Type == "MO") {
|
||||||
|
if (result.GetMoNotificationBodyList) {
|
||||||
|
this.notificationBodyRes =
|
||||||
|
result.GetMoNotificationBodyList;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} //End handleWorkListBodyResult
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
getNotificationButtons(notificationButtonsObj) {
|
||||||
|
this.worklistMainService
|
||||||
|
.getNotificationButtons(notificationButtonsObj)
|
||||||
|
.subscribe((result: NotificatonButtonResponse) => {
|
||||||
|
this.handleWorkListButtonsResult(result);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
handleWorkListButtonsResult(result) {
|
||||||
|
if (this.common.validResponse(result)) {
|
||||||
|
// this.sharedData.setSharedData(result, WorKListResponse.SHARED_DATA);
|
||||||
|
if (result.GetNotificationButtonsList != null) {
|
||||||
|
this.notificationButtonRes = result.GetNotificationButtonsList;
|
||||||
|
} // if result == null
|
||||||
|
} // valid it
|
||||||
|
} // End handleWorkListButtonsResult
|
||||||
|
|
||||||
|
applyAction(WorkListActionObj) {
|
||||||
|
this.worklistMainService
|
||||||
|
.actionButton(WorkListActionObj)
|
||||||
|
.subscribe((result: any) => {
|
||||||
|
this.handleApplayActionResult(result);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
handleApplayActionResult(result) {
|
||||||
|
if (this.common.validResponse(result)) {
|
||||||
|
if (result.MessageStatus == 1) {
|
||||||
|
// this.navCtrl.push("HomePage");
|
||||||
|
//this.common.openHome();
|
||||||
|
//this.common.openNotificationPage();
|
||||||
|
// for( var i = 0; i < this.notificationArray.length; i++){
|
||||||
|
// if ( this.notificationArray[i].ROW_NUM === this.getPassNotificationDetails.ROW_NUM) {
|
||||||
|
// this.notificationArray.splice(i, 1);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
this.getNotificationCountAfterSubmit();
|
||||||
|
this.nextNotfification();
|
||||||
|
}
|
||||||
|
} // valid it
|
||||||
|
}
|
||||||
|
|
||||||
|
public nextNotfification() {
|
||||||
|
//let itemExist = false;
|
||||||
|
let itemNo = this.getPassNotificationDetails.ROW_NUM;
|
||||||
|
itemNo += 1;
|
||||||
|
if (itemNo > this.notificationArray.length) {
|
||||||
|
this.common.openNotificationPage();
|
||||||
|
} else {
|
||||||
|
for (let i = 0; i <= this.notificationArray.length; i++) {
|
||||||
|
if (this.notificationArray[i].ROW_NUM == itemNo) {
|
||||||
|
this.common.sharedService.setSharedData(this.notificationArray[i], HomeComponent.NOTIFICATION_DATA);
|
||||||
|
// itemExist = true;
|
||||||
|
this.intializeNotificationDetail();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// if(itemExist==false){
|
||||||
|
// this.nextNotfification();
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
actionButton() {
|
||||||
|
let ButtonAction: string = this.actionType;
|
||||||
|
var responseAttrDic = this.notExampleJsonObject;
|
||||||
|
this.P_RESPOND_ATTRIBUTES_TBL = [];
|
||||||
|
for (let i=0;i<this.notificationDynamicAttributeArr.length;i++) {
|
||||||
|
let obj: any = {};
|
||||||
|
obj.ATTRIBUTE_NAME = this.notificationDynamicAttributeArr[i].ATTRIBUTE_NAME;
|
||||||
|
if (this.notificationDynamicAttributeArr[i].ATTRIBUTE_TYPE === "number") {
|
||||||
|
obj.ATTRIBUTE_NUMBER_VALUE = (document.getElementById(this.notificationDynamicAttributeArr[i].ATTRIBUTE_NAME) as HTMLInputElement).value;
|
||||||
|
}
|
||||||
|
// else if (isDate(responseAttrDic[key])) {
|
||||||
|
// obj.ATTRIBUTE_DATE_VALUE = responseAttrDic[key];
|
||||||
|
// }
|
||||||
|
else if(this.notificationDynamicAttributeArr[i].ATTRIBUTE_TYPE=="VARCHAR2") {
|
||||||
|
obj.ATTRIBUTE_TEXT_VALUE =(document.getElementById(this.notificationDynamicAttributeArr[i].ATTRIBUTE_NAME) as HTMLInputElement).value;
|
||||||
|
}
|
||||||
|
this.P_RESPOND_ATTRIBUTES_TBL.push(obj);
|
||||||
|
}
|
||||||
|
let repUserName = this.selEmployeeID;
|
||||||
|
if (this.hideForwordEmployee && this.hideForwordEmployee.ATTRIBUTE_NAME) {
|
||||||
|
let obj: any = {};
|
||||||
|
repUserName = "";
|
||||||
|
obj.ATTRIBUTE_NAME = this.hideForwordEmployee.ATTRIBUTE_NAME;
|
||||||
|
obj.ATTRIBUTE_TEXT_VALUE = this.selEmployeeID;
|
||||||
|
this.P_RESPOND_ATTRIBUTES_TBL.push(obj);
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
ButtonAction == "APPROVE" ||
|
||||||
|
ButtonAction == "REJECT" ||
|
||||||
|
ButtonAction == "DEL" ||
|
||||||
|
ButtonAction == "CLOSE"
|
||||||
|
) {
|
||||||
|
this.WorkListActionObj.P_FORWARD_TO_USER_NAME = "";
|
||||||
|
this.WorkListActionObj.P_ACTION_MODE = ButtonAction;
|
||||||
|
this.WorkListActionObj.P_COMMENTS = "";
|
||||||
|
this.WorkListActionObj.RespondAttributeList = this.P_RESPOND_ATTRIBUTES_TBL;
|
||||||
|
//sheardData
|
||||||
|
|
||||||
|
// this.common.sharedService.setSharedData(
|
||||||
|
// this.WorkListActionObj,
|
||||||
|
// WorklistMainMRComponent.PASS_NOTIFICATION_INFO
|
||||||
|
// );
|
||||||
|
if (ButtonAction == "APPROVE"){
|
||||||
|
this.confirmMsg =this.ts.trPK('worklistMain', 'approveMsg')
|
||||||
|
}
|
||||||
|
else if (ButtonAction == "REJECT"){
|
||||||
|
this.confirmMsg =this.ts.trPK('worklistMain', 'rejectMsg')
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (ButtonAction == "DEL"){
|
||||||
|
this.confirmMsg =this.ts.trPK('worklistMain', 'delMsg')
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (ButtonAction == "CLOSE"){
|
||||||
|
this.confirmMsg =this.ts.trPK('worklistMain', 'closeMsg')
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
this.common.confirmAlertDialogAction(
|
||||||
|
() => {
|
||||||
|
this.applyAction(this.WorkListActionObj);
|
||||||
|
}, this.ts.trPK('general', 'ok'),
|
||||||
|
() => {}, this.ts.trPK('general', 'cancel'),
|
||||||
|
this.ts.trPK('vacation-rule', 'confirmation'),
|
||||||
|
this.confirmMsg);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// alert.onDidDismiss((data) => {
|
||||||
|
// if (data == true) {
|
||||||
|
// this.continueDelete(attach);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
|
||||||
|
//this.openApplyModal(this.WorkListActionObj);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
////////////this.applyAction(this.WorkListActionObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ButtonAction == "RFC") {
|
||||||
|
// alert("Return For Correction");
|
||||||
|
this.WorkListActionObj.P_ACTION_MODE = ButtonAction;
|
||||||
|
// this.navCtrl.push("WorkListRfcPage", {
|
||||||
|
// passNotificationInfo: this.getPassNotificationDetails,
|
||||||
|
// passActionMode: ButtonAction,
|
||||||
|
// passResAttr: this.P_RESPOND_ATTRIBUTES_TBL
|
||||||
|
// });
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.getPassNotificationDetails,
|
||||||
|
WorklistMainMRComponent.PASS_NOTIFICATION_INFO
|
||||||
|
);
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
ButtonAction,
|
||||||
|
WorklistMainMRComponent.PASS_ACTION_MODE
|
||||||
|
);
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.P_RESPOND_ATTRIBUTES_TBL,
|
||||||
|
WorklistMainMRComponent.PASS_RES_ATTR
|
||||||
|
);
|
||||||
|
this.common.openWorklistRFCPage();
|
||||||
|
} else if (ButtonAction == "ANSWER_INFO") {
|
||||||
|
// this.navCtrl.push("WorkListReplacmentRollPage", {
|
||||||
|
// pQuestion: this.pQuestion,
|
||||||
|
// passNotificationInfo: this.getPassNotificationDetails,
|
||||||
|
// passActionMode: ButtonAction,
|
||||||
|
// passResAttr: this.P_RESPOND_ATTRIBUTES_TBL
|
||||||
|
// });
|
||||||
|
this.common.sharedService.setSharedData(this.pQuestion, "pQuestion");
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.getPassNotificationDetails,
|
||||||
|
WorklistMainMRComponent.PASS_NOTIFICATION_INFO
|
||||||
|
);
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
ButtonAction,
|
||||||
|
WorklistMainMRComponent.PASS_ACTION_MODE
|
||||||
|
);
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.P_RESPOND_ATTRIBUTES_TBL,
|
||||||
|
WorklistMainMRComponent.PASS_RES_ATTR
|
||||||
|
);
|
||||||
|
this.common.openWorklistRollReplacement();
|
||||||
|
} else if (
|
||||||
|
ButtonAction == "DELEGATE" ||
|
||||||
|
ButtonAction == "REQUEST_INFO" ||
|
||||||
|
ButtonAction == "TRANSFER" ||
|
||||||
|
ButtonAction == "TRANSFER_INFO"
|
||||||
|
) {
|
||||||
|
// alert("multi option: "+ ButtonAction);
|
||||||
|
this.WorkListActionObj.P_ACTION_MODE = ButtonAction;
|
||||||
|
// this.navCtrl.push("WorkListReplacmentRollPage", {
|
||||||
|
// passNotificationInfo: this.getPassNotificationDetails,
|
||||||
|
// passActionMode: ButtonAction,
|
||||||
|
// passResAttr: this.P_RESPOND_ATTRIBUTES_TBL
|
||||||
|
// });
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.getPassNotificationDetails,
|
||||||
|
WorklistMainMRComponent.PASS_NOTIFICATION_INFO
|
||||||
|
);
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
ButtonAction,
|
||||||
|
WorklistMainMRComponent.PASS_ACTION_MODE
|
||||||
|
);
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.P_RESPOND_ATTRIBUTES_TBL,
|
||||||
|
WorklistMainMRComponent.PASS_RES_ATTR
|
||||||
|
);
|
||||||
|
this.common.openWorklistRollReplacement();
|
||||||
|
} else if (
|
||||||
|
ButtonAction == "UPDATE_ACTION" ||
|
||||||
|
ButtonAction == "CONTINUE_ACTION"
|
||||||
|
) {
|
||||||
|
if (this.getPassNotificationDetails.REQUEST_TYPE == "EIT") {
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.notificationBodyRes,
|
||||||
|
EITNotificatonBodyResponse.SHARED_DATA
|
||||||
|
);
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.getPassNotificationDetails,
|
||||||
|
EITNotificatonBodyResponse.NOT_WORKLIST
|
||||||
|
);
|
||||||
|
// this.navCtrl.push("EitUpdateListPage");
|
||||||
|
} else if (this.getPassNotificationDetails.REQUEST_TYPE == "ABSENCE") {
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.notificationBodyRes,
|
||||||
|
AbsenceNotificatonBodyResponse.SHARED_DATA
|
||||||
|
);
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.getPassNotificationDetails,
|
||||||
|
AbsenceNotificatonBodyResponse.NOT_WORKLIST
|
||||||
|
);
|
||||||
|
// this.navCtrl.push("SubmitAbsencePage", {
|
||||||
|
// dirfromNotificationPage: true,
|
||||||
|
// submitAbsObjList: this.notificationBodyRes[0].Collection_Notification
|
||||||
|
// });
|
||||||
|
this.common.openConfirmAbsece();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (this.notificationButtonRes.length > 0 && !ButtonAction) {
|
||||||
|
(this.elementRef.nativeElement.querySelectorAll(
|
||||||
|
"ion-item"
|
||||||
|
) as HTMLElement[]).forEach(x => {
|
||||||
|
if (x.classList.contains("requiredItem")) {
|
||||||
|
x.classList.add("ng-touched");
|
||||||
|
x.classList.remove("ng-untouched");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.common.presentAlert(
|
||||||
|
this.ts.trPK("worklistMain", "actionRequird")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
openActionHistory() {
|
||||||
|
// this.navCtrl.push("WorkListActionHistoryPage", {
|
||||||
|
// passNotificationInfo: this.getPassNotificationDetails
|
||||||
|
// });
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.getPassNotificationDetails,
|
||||||
|
WorklistMainMRComponent.PASS_NOTIFICATION_INFO
|
||||||
|
);
|
||||||
|
this.common.openWorklistHistoryPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
openSupportDocuments() {
|
||||||
|
// this.navCtrl.push("WorkListAttachPage", {
|
||||||
|
// passNotificationInfo: this.getPassNotificationDetails
|
||||||
|
// });
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.getPassNotificationDetails,
|
||||||
|
WorklistMainMRComponent.PASS_NOTIFICATION_INFO
|
||||||
|
);
|
||||||
|
this.common.openWorklistAttachPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
getNotificationResAttr(notificationButtonsObj) {
|
||||||
|
this.worklistMainService
|
||||||
|
.notificationResponseAttr(notificationButtonsObj)
|
||||||
|
.subscribe((result: NotificatonButtonResponse) => {
|
||||||
|
this.handleNotificationResAttrResult(result);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
handleNotificationResAttrResult(result) {
|
||||||
|
if (this.common.validResponse(result)) {
|
||||||
|
// this.sharedData.setSharedData(result, WorKListResponse.SHARED_DATA);
|
||||||
|
this.NotRespondAttributeList =
|
||||||
|
result.NotificationGetRespondAttributesList;
|
||||||
|
if (
|
||||||
|
result.NotificationRespondRolesList != "" &&
|
||||||
|
result.NotificationRespondRolesList[0].ATTRIBUTE_NAME != null &&
|
||||||
|
result.NotificationRespondRolesList[0].ATTRIBUTE_NAME != undefined
|
||||||
|
) {
|
||||||
|
this.Resp2_val = result.NotificationRespondRolesList[0].ATTRIBUTE_NAME;
|
||||||
|
this.hideForwordEmployee = result.NotificationRespondRolesList[0];
|
||||||
|
}
|
||||||
|
this.notificationDynamicFields(result.NotificationGetRespondAttributesList);
|
||||||
|
this.NotificationGetRespondAttributesList=result.NotificationGetRespondAttributesList;
|
||||||
|
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.NotificationGetRespondAttributesList,
|
||||||
|
WorklistMainMRComponent.PASS_RES_ATTR
|
||||||
|
);
|
||||||
|
|
||||||
|
this.notificationDynamicAttributeArr=result.NotificationGetRespondAttributesList;
|
||||||
|
if (result.P_Schema) this.schemaNotific = JSON.parse(result.P_Schema);
|
||||||
|
} // valid it
|
||||||
|
} // End handleWorkListButtonsResult
|
||||||
|
|
||||||
|
notificationDynamicFields(notificationAttr){
|
||||||
|
const containerId = 'notificationDynamicFields';
|
||||||
|
for(let i=0;i<notificationAttr.length;i++){
|
||||||
|
if(notificationAttr[i].ATTRIBUTE_TYPE=="VARCHAR2"){
|
||||||
|
this.textArea = new TextAreaInput(notificationAttr[i].ATTRIBUTE_DISPLAY_NAME, notificationAttr[i].ATTRIBUTE_NAME, "", containerId,"","","");
|
||||||
|
}else if(notificationAttr[i].ATTRIBUTE_TYPE=="ROLE"){
|
||||||
|
|
||||||
|
}else if(notificationAttr[i].ATTRIBUTE_TYPE=="DATE"){
|
||||||
|
|
||||||
|
}else if(notificationAttr[i].ATTRIBUTE_TYPE=="NUMBER"){
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
openNotificationBody() {
|
||||||
|
if (this.getPassNotificationDetails.REQUEST_TYPE == "EIT") {
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.notificationBodyRes,
|
||||||
|
EITNotificatonBodyResponse.SHARED_DATA
|
||||||
|
);
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.getPassNotificationDetails,
|
||||||
|
EITNotificatonBodyResponse.NOT_WORKLIST
|
||||||
|
);
|
||||||
|
// this.navCtrl.push("WorkListDetailsPage", { NotBodyType: "EIT" });
|
||||||
|
this.common.sharedService.setSharedData("EIT", "NotBodyType");
|
||||||
|
this.common.openNotificationDetailsPage();
|
||||||
|
} else if (this.getPassNotificationDetails.REQUEST_TYPE == "ABSENCE") {
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.notificationBodyRes,
|
||||||
|
AbsenceNotificatonBodyResponse.SHARED_DATA
|
||||||
|
);
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.getPassNotificationDetails,
|
||||||
|
AbsenceNotificatonBodyResponse.NOT_WORKLIST
|
||||||
|
);
|
||||||
|
this.common.sharedService.setSharedData("ABSENCE", "NotBodyType");
|
||||||
|
//this.navCtrl.push("WorkListDetailsPage", { NotBodyType: "ABSENCE" });
|
||||||
|
this.common.openNotificationDetailsPage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getNotificationCountAfterSubmit() {
|
||||||
|
const req: any = {};
|
||||||
|
this.menuService.getNotificationCount(req).subscribe((result: any) => {
|
||||||
|
if (this.common.validResponse(result)) {
|
||||||
|
this.notificationCount =
|
||||||
|
result.GetOpenNotificationsNumList.P_OPEN_NOTIFICATIONS_NUM;
|
||||||
|
if (this.notificationCount <= 0) {
|
||||||
|
this.notificationCount = null;
|
||||||
|
}
|
||||||
|
this.events.publish("getNotCount", this.notificationCount);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
getAttachmentNotification(WorkListAttachObj) {
|
||||||
|
|
||||||
|
this.worklistAttachService.getAttach(WorkListAttachObj).
|
||||||
|
subscribe((result: NotificationGetAttachResponse) => {
|
||||||
|
this.handleWorkListAttachResult(result);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
handleWorkListAttachResult(result) {
|
||||||
|
if (this.common.validResponse(result)) {
|
||||||
|
// this.sharedData.setSharedData(result, WorKListResponse.SHARED_DATA);
|
||||||
|
if (result.GetAttachementList != null) {
|
||||||
|
this.attachmentRes = result.GetAttachementList;
|
||||||
|
} // if result == null
|
||||||
|
} // valid it
|
||||||
|
}
|
||||||
|
|
||||||
|
getActionHistory(WorkListActionHistoryObj) {
|
||||||
|
this.IsReachEnd = false;
|
||||||
|
this.worklistService.getActionHistory(WorkListActionHistoryObj).
|
||||||
|
subscribe((result: WorkListActionHistoryResponse) => {
|
||||||
|
this.handleWorkListActionHistoryResult(result);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
handleWorkListActionHistoryResult(result) {
|
||||||
|
if (this.common.validResponse(result)) {
|
||||||
|
if (this.common.hasData(result.GetActionHistoryList)) {
|
||||||
|
this.actionHistoryRes = result.GetActionHistoryList;
|
||||||
|
this.P_PAGE_NUM++;
|
||||||
|
let lastItemIndex = this.actionHistoryRes.length - 1;
|
||||||
|
if (result.GetActionHistoryList[lastItemIndex]) {
|
||||||
|
let lastitem = result.GetActionHistoryList[lastItemIndex];
|
||||||
|
if (lastitem.NO_OF_ROWS == lastitem.ROW_NUM) {
|
||||||
|
this.IsReachEnd = true;
|
||||||
|
} else {
|
||||||
|
this.IsReachEnd = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async openNoteDetail(note,sender) {
|
||||||
|
// let modalPage = this.modalCtrl.create('ViewNoteModalPage', { textNote: note });
|
||||||
|
// modalPage.present();
|
||||||
|
console.log("note"+note);
|
||||||
|
|
||||||
|
this.common.sharedService.setSharedData(note, 'ViewNoteModalPage')
|
||||||
|
this.common.sharedService.setSharedData(sender,'ViewNoteModalPageSender')
|
||||||
|
|
||||||
|
const modal = await this.modalCtrl.create({
|
||||||
|
component: ViewNoteModalComponent,
|
||||||
|
backdropDismiss:false,
|
||||||
|
|
||||||
|
});
|
||||||
|
modal.cssClass = 'note-modal';
|
||||||
|
|
||||||
|
return await modal.present();
|
||||||
|
}
|
||||||
|
|
||||||
|
doInfinite(infiniteScroll) {
|
||||||
|
if (!this.IsReachEnd) {
|
||||||
|
this.WorkListActionHistoryObj.P_PAGE_NUM = this.P_PAGE_NUM;
|
||||||
|
this.worklistService.getActionHistory(this.WorkListActionHistoryObj).
|
||||||
|
subscribe((result: any) => {
|
||||||
|
if (this.common.validResponse(result)) {
|
||||||
|
if (result.GetActionHistoryList != undefined) {
|
||||||
|
this.P_PAGE_NUM++;
|
||||||
|
(result.GetActionHistoryList).forEach(element => {
|
||||||
|
if (element.ROW_NUM == element.NO_OF_ROWS) {
|
||||||
|
this.IsReachEnd = true;
|
||||||
|
} else {
|
||||||
|
this.IsReachEnd = false;
|
||||||
|
}
|
||||||
|
this.actionHistoryRes.push(element);
|
||||||
|
}, (Error) => console.log(Error), () => infiniteScroll.target.complete());
|
||||||
|
}// if list length >0
|
||||||
|
else {
|
||||||
|
this.IsReachEnd = true;
|
||||||
|
}
|
||||||
|
}// if response == 1
|
||||||
|
//this.pageNum++;
|
||||||
|
infiniteScroll.target.complete();
|
||||||
|
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
if (infiniteScroll)
|
||||||
|
infiniteScroll.target.complete();
|
||||||
|
}
|
||||||
|
}//end infiniteScroll
|
||||||
|
|
||||||
|
//**********Attachment *****************//
|
||||||
|
|
||||||
|
|
||||||
|
async OpenAttachFiles(value, Type) {
|
||||||
|
// let modal: Modal = this.modalCtrl.create('WorkListAttachViewPage', { displayData: value, TypeData: Type });
|
||||||
|
// modal.present();
|
||||||
|
|
||||||
|
this.common.sharedService.setSharedData({ displayData: value, TypeData: Type }, 'WorkListAttachViewPage')
|
||||||
|
const modal = await this.modalCtrl.create({
|
||||||
|
component: WorkListAttachViewComponent
|
||||||
|
});
|
||||||
|
|
||||||
|
return await modal.present();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
async openApplyModal(WorkListActionObj) {
|
||||||
|
// let modalPage = this.modalCtrl.create('ViewNoteModalPage', { textNote: note });
|
||||||
|
// modalPage.present();
|
||||||
|
// console.log("note"+note);
|
||||||
|
this.common.sharedService.setSharedData( this.getPassNotificationDetails,WorklistMainMRComponent.PASS_NOTIFICATION_INFO);
|
||||||
|
this.common.sharedService.setSharedData(WorkListActionObj, 'ApplyActionModalPage')
|
||||||
|
// this.common.sharedService.setSharedData(
|
||||||
|
// this.WorkListActionObj,
|
||||||
|
// WorklistMainMRComponent.PASS_NOTIFICATION_INFO
|
||||||
|
// );
|
||||||
|
|
||||||
|
const modal = await this.modalCtrl.create({
|
||||||
|
component: ApplyActionModalComponent,
|
||||||
|
backdropDismiss:false,
|
||||||
|
|
||||||
|
});
|
||||||
|
modal.cssClass = 'note-modal';
|
||||||
|
|
||||||
|
modal.onDidDismiss()
|
||||||
|
.then((data) => {
|
||||||
|
console.log(data); // Here's your selected user!
|
||||||
|
});
|
||||||
|
|
||||||
|
// data => {
|
||||||
|
// console.log('MODAL DATA', data);
|
||||||
|
// });
|
||||||
|
// const { data } = await this.modalCtrl.onWillDismiss();
|
||||||
|
// console.log(data);
|
||||||
|
return await modal.present();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,694 @@
|
|||||||
|
<ion-header>
|
||||||
|
<ion-toolbar class="header-toolbar">
|
||||||
|
<ion-title color="light"> {{ts.trPK('worklistMain','title')}}</ion-title>
|
||||||
|
<ion-buttons slot="start">
|
||||||
|
<nav-buttons backLink="/notification/homepage"></nav-buttons>
|
||||||
|
</ion-buttons>
|
||||||
|
</ion-toolbar>
|
||||||
|
|
||||||
|
<ion-toolbar>
|
||||||
|
<ion-segment class="segmentPR" scrollable>
|
||||||
|
<ion-segment-button value="0" checked>
|
||||||
|
<ion-label> {{ts.trPK('worklistMain','info')}}</ion-label>
|
||||||
|
</ion-segment-button>
|
||||||
|
<ion-segment-button value="1">
|
||||||
|
<ion-label> {{ts.trPK('worklistMain','itemReq')}}</ion-label>
|
||||||
|
</ion-segment-button>
|
||||||
|
<ion-segment-button value="2">
|
||||||
|
<ion-label>
|
||||||
|
{{'worklistMain, actionHis' | translate}}
|
||||||
|
|
||||||
|
</ion-label>
|
||||||
|
</ion-segment-button>
|
||||||
|
<ion-segment-button value="3">
|
||||||
|
<ion-label>{{'general, attachment' | translate}}
|
||||||
|
</ion-label>
|
||||||
|
</ion-segment-button>
|
||||||
|
</ion-segment>
|
||||||
|
</ion-toolbar>
|
||||||
|
</ion-header>
|
||||||
|
|
||||||
|
<ion-content class="colorBG">
|
||||||
|
|
||||||
|
|
||||||
|
<ion-slides pager="true" class="slides-gray-bullets">
|
||||||
|
<ion-slide class="slide-1">
|
||||||
|
|
||||||
|
<div *ngIf="pInformation && pInformation != '' " class="tipsPadding">{{pInformation}}</div>
|
||||||
|
|
||||||
|
<ion-card class="cardContent">
|
||||||
|
|
||||||
|
<ion-card-content>
|
||||||
|
<ion-grid style="text-align: left">
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for=""> {{ts.trPK('worklistMain','description')}}
|
||||||
|
|
||||||
|
</label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for=""> {{ts.trPK('worklistMain','des-PO')}} {{PO_NUMBER}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for=""> {{ts.trPK('worklistMain','from')}}
|
||||||
|
|
||||||
|
</label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{getPassNotificationDetails.FROM_USER}}</label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','to')}}
|
||||||
|
</label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for=""> {{getPassNotificationDetails.TO_USER}}</label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','sent')}}
|
||||||
|
</label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
|
||||||
|
<label for="">{{getPassNotificationDetails.BEGIN_DATE}}</label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','closed')}}
|
||||||
|
</label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{getPassNotificationDetails.END_DATE}}</label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','id')}}
|
||||||
|
</label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{getPassNotificationDetails.NOTIFICATION_ID}}</label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row *ngIf=" getPassNotificationDetails.RESPONDER != '' ">
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','responder')}}
|
||||||
|
</label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{getPassNotificationDetails.RESPONDER}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','subject')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
|
||||||
|
<label for="">{{getPassNotificationDetails.SUBJECT}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
|
||||||
|
<div *ngFor="let header of POHeader">
|
||||||
|
|
||||||
|
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','Supplier')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{header.VENDOR_NAME}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','Site')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{header.VENDOR_SITE_CODE}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','Buyer')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{header.BUYER}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','Preparer')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{header.PREPARER}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','CreationDate')}}</label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{header.CREATION_DATE}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','ShipToLocation')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{header.SHIP_TO_LOCATION_NAME}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','QuotationNumber')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{header.QUOTATION_NUMBER}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','QuotationDate')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{header.QUOTATION_DATE}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','PaymentTerms')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{header.PAYMENT_TERMS}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','Currency')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{header.CURRENCY_NAME}} - {{header.LOC_CUR}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','GrossAmount')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{header.GROSS_AMOUNT}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','DiscountAmount')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{header.DISCOUNT_AMOUNT}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','TotalPODiscount')}}</label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{header.TOTAL_PO_DISCOUNT}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','VATAmount')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{header.SALES_TAX}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','CustomDuty')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{header.CUSTOM_DUTY}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','ShipHandle')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{header.SHIP_HANDLE}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','OtherCharges')}}</label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{header.OTHER_CHARGES}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<!-- <ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','Currency')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{header.LOC_CUR}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row> -->
|
||||||
|
|
||||||
|
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','TotalPOAmountWithVAT')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{header.TOT_PO_AMT}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
<ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','TotalPOAmountInWords')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{header.TOT_PO_AMT_WORD}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<!-- <ion-row>
|
||||||
|
<ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','PONumber')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<label for="">{{header.PO_NUMBER}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row> -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<ion-grid>
|
||||||
|
<div>
|
||||||
|
<ion-row style="text-align: center !important">
|
||||||
|
<ion-col *ngIf="totalH">
|
||||||
|
<div class="colItemReq" style="text-align: center !important">{{totalH}}</div>
|
||||||
|
<div class="labelTotal">{{valueH}}</div>
|
||||||
|
|
||||||
|
</ion-col>
|
||||||
|
<ion-col *ngIf="taxH ">
|
||||||
|
<div class="colItemReq" style="text-align: center !important">{{taxH}}</div>
|
||||||
|
<div class="labelTotal">{{taxvalueH}}</div>
|
||||||
|
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</ion-grid>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ion-grid>
|
||||||
|
|
||||||
|
</ion-card-content>
|
||||||
|
|
||||||
|
|
||||||
|
<ion-card-content>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<div id="notificationDynamicFields1">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</ion-card-content>
|
||||||
|
</ion-card>
|
||||||
|
|
||||||
|
|
||||||
|
</ion-slide>
|
||||||
|
<ion-slide>
|
||||||
|
<!-- <ion-card class="cardContent">
|
||||||
|
|
||||||
|
<ion-card-content> -->
|
||||||
|
<div [hidden]="POLines && POLines.length > 0">
|
||||||
|
<p>{{ 'general, empty' | translate}}</p>
|
||||||
|
</div>
|
||||||
|
<ion-list class="itemReqList" *ngIf="POLines && POLines.length > 0 ">
|
||||||
|
|
||||||
|
<div >
|
||||||
|
<ion-grid class="gridItemReq">
|
||||||
|
|
||||||
|
|
||||||
|
<ion-item class="itemReqContent" *ngFor="let Lines of POLines; let i=index;" >
|
||||||
|
<div class="itemReqDiv">
|
||||||
|
|
||||||
|
|
||||||
|
<ion-row>
|
||||||
|
<ion-col class="colItemReqHeader">
|
||||||
|
|
||||||
|
<label for="">{{i+1}}. {{Lines.ITEM_DESCRIPTION}} </label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','code')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<ion-label class="labelValue" for="">{{Lines.ITEM_CODE}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','MFG')}}
|
||||||
|
</label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<ion-label class="labelValue" for="">{{Lines.MFG}} *</ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','LINE_TYPE')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<ion-label class="labelValue" for="">{{Lines.LINE_TYPE}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','unit')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<ion-label class="labelValue" for="">{{Lines.UOM}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','price')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<ion-label class="labelValue" for="">{{Lines.UNIT_PRICE}} </ion-label>
|
||||||
|
|
||||||
|
</ion-col>
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','LINE_AMOUNT')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<ion-label class="labelValue" for="">{{Lines.LINE_AMOUNT}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','quantity')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<ion-label class="labelValue" for="">{{Lines.QUANTITY}} </ion-label>
|
||||||
|
|
||||||
|
</ion-col>
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','LINE_DIS')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<ion-label class="labelValue" for="">{{Lines.LINE_DISC_PERCENTAGE}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','NEED_TO')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<ion-label class="labelValue" for="">{{Lines.NEED_BY_DATE}} </ion-label>
|
||||||
|
|
||||||
|
</ion-col>
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','PROMISED_DATE')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<ion-label class="labelValue" for="">{{Lines.PROMISED_DATE}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','DELIVER_TO')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<ion-label class="labelValue" for="">{{Lines.DELIVER_TO_LOCATION}} </ion-label>
|
||||||
|
|
||||||
|
</ion-col>
|
||||||
|
<ion-col class="colItems">
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','PR_NO')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<ion-label class="labelValue" for="">{{Lines.PR_NUM}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ion-row>
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
<ion-col class="colItems">
|
||||||
|
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('worklistMain','REQUEST')}} </label>
|
||||||
|
<br />
|
||||||
|
|
||||||
|
<ion-label class="labelValue" for="">{{Lines.REQUESTOR}} </ion-label>
|
||||||
|
|
||||||
|
</ion-col>
|
||||||
|
<!-- <ion-col>
|
||||||
|
<label class="colItemReq" for="">{{ts.trPK('payslip','amount')}} </label>
|
||||||
|
<br />
|
||||||
|
Quotation Analysis
|
||||||
|
<label for="">{{Item History}} </label>
|
||||||
|
</ion-col> -->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
<ion-row>
|
||||||
|
|
||||||
|
<ion-col>
|
||||||
|
|
||||||
|
<div style="text-align: center">
|
||||||
|
|
||||||
|
<button ion-button class="itemHISBtn" (click)="getItemHistory(Lines.ITEM_ID)">
|
||||||
|
{{ts.trPK('worklistMain','ITEM_HIS')}}
|
||||||
|
<!-- (click)="openNoteDetail(actionHistory.NOTE ,actionHistory.NAME)"
|
||||||
|
[hidden]="actionHistory.NOTE == '' || actionHistory.NOTE == null"
|
||||||
|
style=" background: none;width: 60%;">
|
||||||
|
|
||||||
|
<img src="../assets/imgs/noteSmall.png"> -->
|
||||||
|
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<!-- <label class="colItemReq" for="">{{ts.trPK('worklistMain','ITEM_HIS')}} </label> -->
|
||||||
|
<!-- <br /> -->
|
||||||
|
|
||||||
|
<!-- <label for="">{{Lines.REQUESTOR}} </label> -->
|
||||||
|
|
||||||
|
</ion-col>
|
||||||
|
<ion-col>
|
||||||
|
|
||||||
|
<div style="text-align: center">
|
||||||
|
|
||||||
|
<button ion-button class="itemHISBtn"
|
||||||
|
(click)="getQutationAnalysis(Lines.PO_HEADER_ID ,Lines.ITEM_ID)">
|
||||||
|
{{ts.trPK('worklistMain','QUOTATION_ANALYSIS')}}
|
||||||
|
<!-- (click)="getQutationAnalysis(Lines.PO_HEADER_ID ,Lines.ITEM_CODE)"
|
||||||
|
[hidden]="actionHistory.NOTE == '' || actionHistory.NOTE == null"
|
||||||
|
style=" background: none;width: 60%;">
|
||||||
|
<img src="../assets/imgs/noteSmall.png"> -->
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</ion-item>
|
||||||
|
|
||||||
|
</ion-grid>
|
||||||
|
</div>
|
||||||
|
</ion-list>
|
||||||
|
<!-- </ion-card-content>
|
||||||
|
</ion-card> -->
|
||||||
|
</ion-slide>
|
||||||
|
<ion-slide>
|
||||||
|
<ion-card class="cardContent">
|
||||||
|
<ion-card-content>
|
||||||
|
|
||||||
|
<div [hidden]="actionHistoryRes && actionHistoryRes.length > 0">
|
||||||
|
<p>{{ 'general, empty' | translate}}</p>
|
||||||
|
</div>
|
||||||
|
<div *ngIf="actionHistoryRes && actionHistoryRes.length > 0 ">
|
||||||
|
<ion-list class="notification-list ">
|
||||||
|
<div class="timeline">
|
||||||
|
<ion-item *ngFor="let actionHistory of actionHistoryRes">
|
||||||
|
|
||||||
|
<div class="timeline-item" slot="start">
|
||||||
|
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<button ion-button
|
||||||
|
(click)="openNoteDetail(actionHistory.NOTE ,actionHistory.NAME)"
|
||||||
|
[hidden]="actionHistory.NOTE == '' || actionHistory.NOTE == null"
|
||||||
|
style=" background: none;width: 60%;">
|
||||||
|
|
||||||
|
<img src="../assets/imgs/noteSmall.png">
|
||||||
|
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
[ngClass]="{'bg-blue-dot' : actionHistory.ACTION === 'Submitted' || actionHistory.ACTION === 'Submit' ,'bg-orange-dot' : actionHistory.ACTION === 'Pending' ,'bg-red-dot' : actionHistory.ACTION === 'Rejected','bg-green-dot' : actionHistory.ACTION != 'Pending' && actionHistory.ACTION != 'Rejected' && actionHistory.ACTION != 'Submitted' && actionHistory.ACTION != 'Submit'}"
|
||||||
|
class="timeline-thumb timeline-icon">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<ion-col>
|
||||||
|
<ion-label
|
||||||
|
[ngClass]="{'bg-blue-txt' : actionHistory.ACTION === 'Submitted' || actionHistory.ACTION === 'Submit' ,'bg-orange-txt' : actionHistory.ACTION === 'Pending' ,'bg-red-txt' : actionHistory.ACTION === 'Rejected','bg-green-txt' : actionHistory.ACTION != 'Pending' && actionHistory.ACTION != 'Rejected' && actionHistory.ACTION != 'Submitted' && actionHistory.ACTION != 'Submit'}"
|
||||||
|
class=""> {{actionHistory.ACTION}}</ion-label>
|
||||||
|
<ion-label> {{actionHistory.NAME}}
|
||||||
|
</ion-label>
|
||||||
|
|
||||||
|
<ion-label> {{actionHistory.NOTIFICATION_DATE| dateString }} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
</ion-item>
|
||||||
|
</div>
|
||||||
|
</ion-list>
|
||||||
|
</div>
|
||||||
|
</ion-card-content>
|
||||||
|
</ion-card>
|
||||||
|
|
||||||
|
</ion-slide>
|
||||||
|
<ion-slide>
|
||||||
|
<ion-card class="cardContent">
|
||||||
|
<ion-card-content>
|
||||||
|
<div [hidden]="attachmentRes && attachmentRes.length > 0">
|
||||||
|
<p>{{ 'general, notAttch' | translate}}</p>
|
||||||
|
</div>
|
||||||
|
<div *ngIf="attachmentRes && attachmentRes.length > 0 ">
|
||||||
|
|
||||||
|
<ion-grid>
|
||||||
|
<div *ngFor="let attachList of attachmentRes">
|
||||||
|
<ion-row (click)="OpenAttachFiles(attachList.FILE_DATA,attachList.FILE_CONTENT_TYPE)">
|
||||||
|
<ion-col col-12>
|
||||||
|
<div
|
||||||
|
*ngIf="attachList.FILE_CONTENT_TYPE === 'pdf' || attachList.FILE_CONTENT_TYPE === 'PDF'">
|
||||||
|
<img float-start class="attachImg" src="../assets/imgs/pdf.png">
|
||||||
|
</div>
|
||||||
|
<div *ngIf="attachList.FILE_CONTENT_TYPE === 'txt'"> <img float-start
|
||||||
|
class="attachImg" src="../assets/imgs/doc.png">
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
*ngIf="attachList.FILE_CONTENT_TYPE != 'txt' && attachList.FILE_CONTENT_TYPE != 'PDF' && attachList.FILE_CONTENT_TYPE != 'pdf' && attachList.FILE_CONTENT_TYPE != 'png' && attachList.FILE_CONTENT_TYPE != 'jpeg' && attachList.FILE_CONTENT_TYPE != 'jpg' && attachList.FILE_CONTENT_TYPE != 'PNG' && attachList.FILE_CONTENT_TYPE != 'JPEG' && attachList.FILE_CONTENT_TYPE != 'JPG'">
|
||||||
|
<img float-start class="attachImg" src="../assets/imgs/nonfile.png">
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
*ngIf="attachList.FILE_CONTENT_TYPE === 'png' || attachList.FILE_CONTENT_TYPE === 'jpeg' || attachList.FILE_CONTENT_TYPE === 'jpg'|| attachList.FILE_CONTENT_TYPE === 'PNG' || attachList.FILE_CONTENT_TYPE === 'JPEG'|| attachList.FILE_CONTENT_TYPE === 'JPG'">
|
||||||
|
<img float-start class="attachImg" src="../assets/imgs/img.png">
|
||||||
|
</div>
|
||||||
|
<ion-label>
|
||||||
|
{{attachList.SEQ_NUM }}. {{attachList.FILE_NAME}} </ion-label>
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
</ion-row>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</ion-grid>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</ion-card-content>
|
||||||
|
</ion-card>
|
||||||
|
</ion-slide>
|
||||||
|
|
||||||
|
</ion-slides>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ion-content>
|
||||||
|
<ion-footer class="footerSearchBtn">
|
||||||
|
|
||||||
|
<ion-row>
|
||||||
|
<ion-col col-12>
|
||||||
|
<div id="notificationDynamicFields">
|
||||||
|
</div>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
<ion-row>
|
||||||
|
<ion-col col-2>
|
||||||
|
|
||||||
|
</ion-col>
|
||||||
|
<ion-col col-8>
|
||||||
|
|
||||||
|
|
||||||
|
<ion-item *ngIf="notificationButtonRes?.length >0" class="requiredItem actionList">
|
||||||
|
<ion-label class="boldTxtNav">{{'actionHis, action' | translate}} </ion-label>
|
||||||
|
<ion-select (ionChange)="actionButton()" okText="{{ts.trPK('general','ok')}}"
|
||||||
|
cancelText="{{ts.trPK('general','cancel')}}" [(ngModel)]="actionType" required>
|
||||||
|
<ion-select-option value="{{notificationButtons.BUTTON_ACTION}}"
|
||||||
|
*ngFor="let notificationButtons of notificationButtonRes; let i=index;">
|
||||||
|
{{notificationButtons.BUTTON_LABEL}}</ion-select-option>
|
||||||
|
</ion-select>
|
||||||
|
</ion-item>
|
||||||
|
|
||||||
|
</ion-col>
|
||||||
|
|
||||||
|
<ion-col col-2 style="bottom: -8px">
|
||||||
|
<ion-button class="skipbutton" (click)="nextNotfification()">
|
||||||
|
{{'worklistMain, skip' | translate}}
|
||||||
|
<img class="arrowIcon" src="../assets/imgs/arrowRight.png">
|
||||||
|
|
||||||
|
</ion-button>
|
||||||
|
</ion-col>
|
||||||
|
</ion-row>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</ion-footer>
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
.itemHISBtn{
|
||||||
|
padding: 5px;
|
||||||
|
color: var(--light);
|
||||||
|
background: var(--darkgray);
|
||||||
|
border-radius: 3px;
|
||||||
|
width: 85%;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { WorklistMainPoComponent } from './worklist-main-po.component';
|
||||||
|
|
||||||
|
describe('WorklistMainPoComponent', () => {
|
||||||
|
let component: WorklistMainPoComponent;
|
||||||
|
let fixture: ComponentFixture<WorklistMainPoComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ WorklistMainPoComponent ],
|
||||||
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(WorklistMainPoComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,869 @@
|
|||||||
|
import { Component, OnInit, ElementRef } from "@angular/core";
|
||||||
|
import { CommonService } from "src/app/hmg-common/services/common/common.service";
|
||||||
|
import { TranslatorService } from "src/app/hmg-common/services/translator/translator.service";
|
||||||
|
import { WorkListBodyRequest } from "../models/NotificationBodyReq";
|
||||||
|
import { EITNotificatonBodyResponse } from "../models/EITNotificationBodyRes";
|
||||||
|
import { AbsenceNotificatonBodyResponse } from "../models/AbsenceNotificationBodyRes";
|
||||||
|
import { NotificatonButtonResponse } from "../models/NotificationButtonRes";
|
||||||
|
import { WorkListActionRequest } from "../models/NotificationActionReq";
|
||||||
|
import { WorkListButtonRequest } from "../models/NotificationButtonReq";
|
||||||
|
// import { isDate } from 'angular6-json-schema-form';
|
||||||
|
import { MenuResponse } from "src/app/hmg-common/services/menu/models/menu-response";
|
||||||
|
import { LoginRequest } from "src/app/hmg-common/services/authentication/models/login.request";
|
||||||
|
import { WorklistMainService } from "../service/work-list.main.service";
|
||||||
|
import { HomeComponent } from "src/app/notification/home/home.component";
|
||||||
|
import { TextInput } from 'src/app/uI-elements/text.input';
|
||||||
|
import { TextAreaInput } from 'src/app/uI-elements/text-area.input';
|
||||||
|
import { MenuService } from 'src/app/hmg-common/services/menu/menuservice.service';
|
||||||
|
import { Events, ModalController } from '@ionic/angular';
|
||||||
|
import { PONotificatonBodyResponse } from '../models/PONotificationBodyRes';
|
||||||
|
import { MONotificatonBodyResponse } from '../models/MONotificationBodyRes';
|
||||||
|
import { PRNotificatonBodyResponse } from '../models/PRNotificationBodyRes';
|
||||||
|
import { WorklistAttachService } from 'src/app/absence/service/work-list-attach.service';
|
||||||
|
import { NotificationGetAttachResponse } from 'src/app/eit/models/NotificationGetAttachRes';
|
||||||
|
import { PRNotificatonBodyList } from '../models/PRNotificationBodyList';
|
||||||
|
import { WorkListActionHistoryRequest } from '../models/ActionHistoryReq';
|
||||||
|
import { WorklistService } from '../service/worklist.service';
|
||||||
|
import { ViewNoteModalComponent } from '../view-note-modal/view-note-modal.component';
|
||||||
|
import { WorkListActionHistoryResponse } from '../models/ActionHistoryRes';
|
||||||
|
import { WorkListAttachViewComponent } from '../work-list-attach-view/work-list-attach-view.component';
|
||||||
|
import { ApplyActionModalComponent } from '../apply-action-modal/apply-action-modal.component';
|
||||||
|
import { POItemHistoryRes } from '../models/POItemHistoryRes';
|
||||||
|
import { POItemHistoryRequest } from '../models/POItemHistoryReq';
|
||||||
|
import { QuotationAnalysisResponse } from '../models/quotationAnalysisRes';
|
||||||
|
import { QuotationAnalysisRequest } from '../models/quotationAnalysisReq';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-worklist-main-po',
|
||||||
|
templateUrl: './worklist-main-po.component.html',
|
||||||
|
styleUrls: ['./worklist-main-po.component.scss'],
|
||||||
|
})
|
||||||
|
export class WorklistMainPoComponent implements OnInit {
|
||||||
|
private WorkListBodyObj: WorkListBodyRequest;
|
||||||
|
private WorkListButtonsObj: WorkListButtonRequest;
|
||||||
|
private WorkListActionObj: WorkListActionRequest;
|
||||||
|
private WorkListActionHistoryObj: WorkListActionHistoryRequest;
|
||||||
|
private WorkListAttachObj: WorkListButtonRequest;
|
||||||
|
private PRList:PRNotificatonBodyList
|
||||||
|
public static PASS_NOTIFICATION_INFO = "passNotificationInfo";
|
||||||
|
public static PASS_PO_INFO = "passPOInfo";
|
||||||
|
public static PASS_PO_HEADER_ID = "passPOHeader";
|
||||||
|
|
||||||
|
public static PASS_ACTION_MODE = "passActionMode";
|
||||||
|
getPassNotificationDetails: any;
|
||||||
|
public static PASS_RES_ATTR = "passResAttr";
|
||||||
|
TransactionID: number = -999;
|
||||||
|
notificationBodyRes: any;
|
||||||
|
actionHistoryRes: any;
|
||||||
|
notificationButtonRes: any;
|
||||||
|
actionMode: any;
|
||||||
|
pInformation: string = "";
|
||||||
|
pQuestion: string = "";
|
||||||
|
RespondAttributesListRes: any;
|
||||||
|
schemaNotific: any;
|
||||||
|
NotRespondAttributeList: any;
|
||||||
|
Resp2_val: any;
|
||||||
|
notExampleJsonObject: any;
|
||||||
|
hideForwordEmployee: any;
|
||||||
|
exampleJsonObject: any;
|
||||||
|
dataOfAttr: any;
|
||||||
|
P_RESPOND_ATTRIBUTES_TBL: any;
|
||||||
|
selEmployeeID: any;
|
||||||
|
actionType: string = "";
|
||||||
|
notificationArray: any;
|
||||||
|
notificationDynamicAttributeArr:any;
|
||||||
|
private textInput: TextInput;
|
||||||
|
private textArea: TextAreaInput;
|
||||||
|
notificationCount: any;
|
||||||
|
attachmentRes:any;
|
||||||
|
PRHeader:any;//change the tpye later
|
||||||
|
PRLines:any;//change the tpye later
|
||||||
|
IsReachEnd: boolean = false;
|
||||||
|
P_PAGE_NUM: number = 1;
|
||||||
|
P_PAGE_LIMIT: number = 50;
|
||||||
|
headerTotal: any;
|
||||||
|
totalH: any;
|
||||||
|
valueH: any;
|
||||||
|
taxH: any;
|
||||||
|
taxvalueH: any;
|
||||||
|
NotificationGetRespondAttributesList: any;
|
||||||
|
confirmMsg: string;
|
||||||
|
delMsg: string;
|
||||||
|
closeMsg: string;
|
||||||
|
POHeader: any;
|
||||||
|
POLines: any;
|
||||||
|
PO_NUMBER: any;
|
||||||
|
itemHistoryRes: any;
|
||||||
|
QutationAnalysisRes: any;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
public common: CommonService,
|
||||||
|
public ts: TranslatorService,
|
||||||
|
public worklistMainService: WorklistMainService,
|
||||||
|
public elementRef: ElementRef,
|
||||||
|
public menuService: MenuService,
|
||||||
|
public events: Events,
|
||||||
|
public worklistAttachService: WorklistAttachService,
|
||||||
|
private modalCtrl: ModalController,
|
||||||
|
public worklistService: WorklistService,
|
||||||
|
) {
|
||||||
|
this.WorkListActionHistoryObj = new WorkListActionHistoryRequest();
|
||||||
|
this.WorkListActionHistoryObj.P_PAGE_NUM = this.P_PAGE_NUM;
|
||||||
|
this.WorkListActionHistoryObj.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
|
||||||
|
}
|
||||||
|
|
||||||
|
ngOnInit() {
|
||||||
|
|
||||||
|
this.WorkListAttachObj = new WorkListButtonRequest();
|
||||||
|
|
||||||
|
this.intializeNotificationDetail();
|
||||||
|
|
||||||
|
let segment = document.querySelector('ion-segment');
|
||||||
|
let slides = document.querySelector('ion-slides');
|
||||||
|
|
||||||
|
segment.addEventListener('ionChange', (ev) => onSegmentChange(ev));
|
||||||
|
slides.addEventListener('ionSlideDidChange', (ev) => onSlideDidChange(ev));
|
||||||
|
|
||||||
|
// On Segment change slide to the matching slide
|
||||||
|
function onSegmentChange(ev) {
|
||||||
|
console.log("ev.detail.value"+ev.detail.value);
|
||||||
|
slideTo(ev.detail.value);
|
||||||
|
}
|
||||||
|
|
||||||
|
function slideTo(index) {
|
||||||
|
console.log("index: "+index);
|
||||||
|
|
||||||
|
slides.slideTo(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
// On Slide change update segment to the matching value
|
||||||
|
async function onSlideDidChange(ev) {
|
||||||
|
var index = await slides.getActiveIndex();
|
||||||
|
console.log("index: "+index);
|
||||||
|
clickSegment(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
function clickSegment(index) {
|
||||||
|
|
||||||
|
segment.value = index;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}//ngOn
|
||||||
|
intializeNotificationDetail() {
|
||||||
|
document.getElementById("notificationDynamicFields").innerHTML="";
|
||||||
|
console.log("intializeNotificationDetail");
|
||||||
|
this.getPassNotificationDetails = this.common.sharedService.getSharedData(
|
||||||
|
HomeComponent.NOTIFICATION_DATA,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
console.log(this.getPassNotificationDetails.ROW_NUM);
|
||||||
|
this.notificationArray = this.common.sharedService.getSharedData(
|
||||||
|
HomeComponent.NOTIFICATION_ARR,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
this.WorkListBodyObj = new WorkListBodyRequest();
|
||||||
|
this.WorkListButtonsObj = new WorkListButtonRequest();
|
||||||
|
|
||||||
|
this.WorkListActionObj = new WorkListActionRequest();
|
||||||
|
|
||||||
|
this.WorkListBodyObj.P_TRANSACTION_ID = this.TransactionID;
|
||||||
|
this.WorkListBodyObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;
|
||||||
|
this.WorkListBodyObj.P_PAGE_NUM = this.P_PAGE_NUM;;
|
||||||
|
this.WorkListBodyObj.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
|
||||||
|
|
||||||
|
this.WorkListButtonsObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;
|
||||||
|
|
||||||
|
this.WorkListActionObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;
|
||||||
|
this.WorkListActionObj.P_FORWARD_TO_USER_NAME = "";
|
||||||
|
this.WorkListActionObj.P_ACTION_MODE = "";
|
||||||
|
this.WorkListActionObj.P_COMMENTS = "";
|
||||||
|
this.WorkListActionObj.P_APPROVER_INDEX = null;
|
||||||
|
|
||||||
|
this.WorkListActionHistoryObj.P_PAGE_NUM = this.P_PAGE_NUM;
|
||||||
|
this.WorkListActionHistoryObj.P_PAGE_LIMIT = this.P_PAGE_LIMIT;
|
||||||
|
this.WorkListActionHistoryObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;
|
||||||
|
|
||||||
|
this.WorkListAttachObj.P_NOTIFICATION_ID = this.getPassNotificationDetails.NOTIFICATION_ID;
|
||||||
|
|
||||||
|
this.getNotificationButtons(this.WorkListButtonsObj);
|
||||||
|
this.getNotificationResAttr(this.WorkListButtonsObj);
|
||||||
|
this.getActionHistory(this.WorkListActionHistoryObj);
|
||||||
|
this.getAttachmentNotification(this.WorkListAttachObj);
|
||||||
|
|
||||||
|
|
||||||
|
if (this.getPassNotificationDetails.REQUEST_TYPE == "PO"){
|
||||||
|
this.getPONotificationDetails(this.WorkListBodyObj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
getPONotificationDetails(notificationBodyObj){
|
||||||
|
this.worklistMainService
|
||||||
|
.getPONotificationBody(notificationBodyObj)
|
||||||
|
.subscribe((result: PONotificatonBodyResponse) => {
|
||||||
|
console.log(result.GetPoNotificationBodyList.POHeader[0].BUYER);
|
||||||
|
this.handleWorkListBodyResult(result, "PO");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
handleWorkListBodyResult(result, Type) {
|
||||||
|
this.notificationBodyRes = {};
|
||||||
|
if (this.common.validResponse(result)) {
|
||||||
|
this.pInformation = result.P_INFORMATION;
|
||||||
|
this.pQuestion = result.P_QUESTION;
|
||||||
|
if (Type == "EIT") {
|
||||||
|
if (result.GetEITCollectionNotificationBodyList) {
|
||||||
|
this.notificationBodyRes =
|
||||||
|
result.GetEITCollectionNotificationBodyList;
|
||||||
|
}
|
||||||
|
} else if (Type == "ABSENCE") {
|
||||||
|
console.log("ABSENCE");
|
||||||
|
if (result.GetAbsenceCollectionNotificationBodyList) {
|
||||||
|
this.notificationBodyRes =
|
||||||
|
result.GetAbsenceCollectionNotificationBodyList;
|
||||||
|
}
|
||||||
|
}else if (Type == "PR") {
|
||||||
|
if (result.GetPrNotificationBodyList) {
|
||||||
|
console.log("PR");
|
||||||
|
|
||||||
|
this.PRHeader=result.GetPrNotificationBodyList.PRHeader;
|
||||||
|
this.PRLines=result.GetPrNotificationBodyList.PRLines;
|
||||||
|
for( var i = 0; i < this.PRHeader.length; i++){
|
||||||
|
if(this.PRHeader[i].HDR_ATTRIBUTE_NAME === 'Requisition Total'){
|
||||||
|
this.totalH=this.PRHeader[i].HDR_ATTRIBUTE_NAME;
|
||||||
|
this.valueH=this.PRHeader[i].HDR_ATTRIBUTE_VALUE;
|
||||||
|
|
||||||
|
//this. header.HDR_ATTRIBUTE_NAME != 'Non-Recoverable Tax'"
|
||||||
|
}
|
||||||
|
if(this.PRHeader[i].HDR_ATTRIBUTE_NAME === 'Non-Recoverable Tax'){
|
||||||
|
this.taxH=this.PRHeader[i].HDR_ATTRIBUTE_NAME;
|
||||||
|
this.taxvalueH=this.PRHeader[i].HDR_ATTRIBUTE_VALUE;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// HDR_ATTRIBUTE_VALUE
|
||||||
|
}
|
||||||
|
this.notificationBodyRes =
|
||||||
|
result.GetPrNotificationBodyList;
|
||||||
|
}
|
||||||
|
|
||||||
|
}else if (Type == "PO") {
|
||||||
|
if (result.GetPoNotificationBodyList) {
|
||||||
|
console.log("PO");
|
||||||
|
|
||||||
|
this.POHeader=result.GetPoNotificationBodyList.POHeader;
|
||||||
|
this.POLines=result.GetPoNotificationBodyList.POLines;
|
||||||
|
for( var i = 0; i < this.POHeader.length; i++){
|
||||||
|
this.PO_NUMBER=this.POHeader[i].PO_NUMBER;
|
||||||
|
|
||||||
|
if(this.POHeader[i].HDR_ATTRIBUTE_NAME === 'Requisition Total'){
|
||||||
|
this.totalH=this.POHeader[i].HDR_ATTRIBUTE_NAME;
|
||||||
|
this.valueH=this.POHeader[i].HDR_ATTRIBUTE_VALUE;
|
||||||
|
|
||||||
|
//this. header.HDR_ATTRIBUTE_NAME != 'Non-Recoverable Tax'"
|
||||||
|
}
|
||||||
|
if(this.POHeader[i].HDR_ATTRIBUTE_NAME === 'Non-Recoverable Tax'){
|
||||||
|
this.taxH=this.POHeader[i].HDR_ATTRIBUTE_NAME;
|
||||||
|
this.taxvalueH=this.POHeader[i].HDR_ATTRIBUTE_VALUE;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// HDR_ATTRIBUTE_VALUE
|
||||||
|
}
|
||||||
|
this.notificationBodyRes =
|
||||||
|
result.GetPoNotificationBodyList;
|
||||||
|
}
|
||||||
|
}//
|
||||||
|
}
|
||||||
|
} //End handleWorkListBodyResult
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
getNotificationButtons(notificationButtonsObj) {
|
||||||
|
this.worklistMainService
|
||||||
|
.getNotificationButtons(notificationButtonsObj)
|
||||||
|
.subscribe((result: NotificatonButtonResponse) => {
|
||||||
|
this.handleWorkListButtonsResult(result);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
handleWorkListButtonsResult(result) {
|
||||||
|
if (this.common.validResponse(result)) {
|
||||||
|
// this.sharedData.setSharedData(result, WorKListResponse.SHARED_DATA);
|
||||||
|
if (result.GetNotificationButtonsList != null) {
|
||||||
|
this.notificationButtonRes = result.GetNotificationButtonsList;
|
||||||
|
} // if result == null
|
||||||
|
} // valid it
|
||||||
|
} // End handleWorkListButtonsResult
|
||||||
|
|
||||||
|
applyAction(WorkListActionObj) {
|
||||||
|
this.worklistMainService
|
||||||
|
.actionButton(WorkListActionObj)
|
||||||
|
.subscribe((result: any) => {
|
||||||
|
this.handleApplayActionResult(result);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
handleApplayActionResult(result) {
|
||||||
|
if (this.common.validResponse(result)) {
|
||||||
|
if (result.MessageStatus == 1) {
|
||||||
|
// this.navCtrl.push("HomePage");
|
||||||
|
//this.common.openHome();
|
||||||
|
//this.common.openNotificationPage();
|
||||||
|
// for( var i = 0; i < this.notificationArray.length; i++){
|
||||||
|
// if ( this.notificationArray[i].ROW_NUM === this.getPassNotificationDetails.ROW_NUM) {
|
||||||
|
// this.notificationArray.splice(i, 1);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
this.getNotificationCountAfterSubmit();
|
||||||
|
this.nextNotfification();
|
||||||
|
}
|
||||||
|
} // valid it
|
||||||
|
}
|
||||||
|
|
||||||
|
public nextNotfification() {
|
||||||
|
//let itemExist = false;
|
||||||
|
let itemNo = this.getPassNotificationDetails.ROW_NUM;
|
||||||
|
itemNo += 1;
|
||||||
|
if (itemNo > this.notificationArray.length) {
|
||||||
|
this.common.openNotificationPage();
|
||||||
|
} else {
|
||||||
|
for (let i = 0; i <= this.notificationArray.length; i++) {
|
||||||
|
if (this.notificationArray[i].ROW_NUM == itemNo) {
|
||||||
|
this.common.sharedService.setSharedData(this.notificationArray[i], HomeComponent.NOTIFICATION_DATA);
|
||||||
|
// itemExist = true;
|
||||||
|
this.intializeNotificationDetail();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// if(itemExist==false){
|
||||||
|
// this.nextNotfification();
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
actionButton() {
|
||||||
|
let ButtonAction: string = this.actionType;
|
||||||
|
var responseAttrDic = this.notExampleJsonObject;
|
||||||
|
this.P_RESPOND_ATTRIBUTES_TBL = [];
|
||||||
|
for (let i=0;i<this.notificationDynamicAttributeArr.length;i++) {
|
||||||
|
let obj: any = {};
|
||||||
|
obj.ATTRIBUTE_NAME = this.notificationDynamicAttributeArr[i].ATTRIBUTE_NAME;
|
||||||
|
if (this.notificationDynamicAttributeArr[i].ATTRIBUTE_TYPE === "number") {
|
||||||
|
obj.ATTRIBUTE_NUMBER_VALUE = (document.getElementById(this.notificationDynamicAttributeArr[i].ATTRIBUTE_NAME) as HTMLInputElement).value;
|
||||||
|
}
|
||||||
|
// else if (isDate(responseAttrDic[key])) {
|
||||||
|
// obj.ATTRIBUTE_DATE_VALUE = responseAttrDic[key];
|
||||||
|
// }
|
||||||
|
else if(this.notificationDynamicAttributeArr[i].ATTRIBUTE_TYPE=="VARCHAR2") {
|
||||||
|
obj.ATTRIBUTE_TEXT_VALUE =(document.getElementById(this.notificationDynamicAttributeArr[i].ATTRIBUTE_NAME) as HTMLInputElement).value;
|
||||||
|
}
|
||||||
|
this.P_RESPOND_ATTRIBUTES_TBL.push(obj);
|
||||||
|
}
|
||||||
|
let repUserName = this.selEmployeeID;
|
||||||
|
if (this.hideForwordEmployee && this.hideForwordEmployee.ATTRIBUTE_NAME) {
|
||||||
|
let obj: any = {};
|
||||||
|
repUserName = "";
|
||||||
|
obj.ATTRIBUTE_NAME = this.hideForwordEmployee.ATTRIBUTE_NAME;
|
||||||
|
obj.ATTRIBUTE_TEXT_VALUE = this.selEmployeeID;
|
||||||
|
this.P_RESPOND_ATTRIBUTES_TBL.push(obj);
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
ButtonAction == "APPROVE" ||
|
||||||
|
ButtonAction == "REJECT" ||
|
||||||
|
ButtonAction == "DEL" ||
|
||||||
|
ButtonAction == "CLOSE"
|
||||||
|
) {
|
||||||
|
this.WorkListActionObj.P_FORWARD_TO_USER_NAME = "";
|
||||||
|
this.WorkListActionObj.P_ACTION_MODE = ButtonAction;
|
||||||
|
this.WorkListActionObj.P_COMMENTS = "";
|
||||||
|
this.WorkListActionObj.RespondAttributeList = this.P_RESPOND_ATTRIBUTES_TBL;
|
||||||
|
//sheardData
|
||||||
|
|
||||||
|
// this.common.sharedService.setSharedData(
|
||||||
|
// this.WorkListActionObj,
|
||||||
|
// WorklistMainPRComponent.PASS_NOTIFICATION_INFO
|
||||||
|
// );
|
||||||
|
if (ButtonAction == "APPROVE"){
|
||||||
|
this.confirmMsg =this.ts.trPK('worklistMain', 'approveMsg')
|
||||||
|
}
|
||||||
|
else if (ButtonAction == "REJECT"){
|
||||||
|
this.confirmMsg =this.ts.trPK('worklistMain', 'rejectMsg')
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (ButtonAction == "DEL"){
|
||||||
|
this.confirmMsg =this.ts.trPK('worklistMain', 'delMsg')
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (ButtonAction == "CLOSE"){
|
||||||
|
this.confirmMsg =this.ts.trPK('worklistMain', 'closeMsg')
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
this.common.confirmAlertDialogAction(
|
||||||
|
() => {
|
||||||
|
this.applyAction(this.WorkListActionObj);
|
||||||
|
}, this.ts.trPK('general', 'ok'),
|
||||||
|
() => {}, this.ts.trPK('general', 'cancel'),
|
||||||
|
this.ts.trPK('vacation-rule', 'confirmation'),
|
||||||
|
this.confirmMsg);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// alert.onDidDismiss((data) => {
|
||||||
|
// if (data == true) {
|
||||||
|
// this.continueDelete(attach);
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
|
||||||
|
//this.openApplyModal(this.WorkListActionObj);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
////////////this.applyAction(this.WorkListActionObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ButtonAction == "RFC") {
|
||||||
|
// alert("Return For Correction");
|
||||||
|
this.WorkListActionObj.P_ACTION_MODE = ButtonAction;
|
||||||
|
// this.navCtrl.push("WorkListRfcPage", {
|
||||||
|
// passNotificationInfo: this.getPassNotificationDetails,
|
||||||
|
// passActionMode: ButtonAction,
|
||||||
|
// passResAttr: this.P_RESPOND_ATTRIBUTES_TBL
|
||||||
|
// });
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.getPassNotificationDetails,
|
||||||
|
WorklistMainPoComponent.PASS_NOTIFICATION_INFO
|
||||||
|
);
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
ButtonAction,
|
||||||
|
WorklistMainPoComponent.PASS_ACTION_MODE
|
||||||
|
);
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.P_RESPOND_ATTRIBUTES_TBL,
|
||||||
|
WorklistMainPoComponent.PASS_RES_ATTR
|
||||||
|
);
|
||||||
|
this.common.openWorklistRFCPage();
|
||||||
|
} else if (ButtonAction == "ANSWER_INFO") {
|
||||||
|
// this.navCtrl.push("WorkListReplacmentRollPage", {
|
||||||
|
// pQuestion: this.pQuestion,
|
||||||
|
// passNotificationInfo: this.getPassNotificationDetails,
|
||||||
|
// passActionMode: ButtonAction,
|
||||||
|
// passResAttr: this.P_RESPOND_ATTRIBUTES_TBL
|
||||||
|
// });
|
||||||
|
this.common.sharedService.setSharedData(this.pQuestion, "pQuestion");
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.getPassNotificationDetails,
|
||||||
|
WorklistMainPoComponent.PASS_NOTIFICATION_INFO
|
||||||
|
);
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
ButtonAction,
|
||||||
|
WorklistMainPoComponent.PASS_ACTION_MODE
|
||||||
|
);
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.P_RESPOND_ATTRIBUTES_TBL,
|
||||||
|
WorklistMainPoComponent.PASS_RES_ATTR
|
||||||
|
);
|
||||||
|
this.common.openWorklistRollReplacement();
|
||||||
|
} else if (
|
||||||
|
ButtonAction == "DELEGATE" ||
|
||||||
|
ButtonAction == "REQUEST_INFO" ||
|
||||||
|
ButtonAction == "TRANSFER" ||
|
||||||
|
ButtonAction == "TRANSFER_INFO"
|
||||||
|
) {
|
||||||
|
// alert("multi option: "+ ButtonAction);
|
||||||
|
this.WorkListActionObj.P_ACTION_MODE = ButtonAction;
|
||||||
|
// this.navCtrl.push("WorkListReplacmentRollPage", {
|
||||||
|
// passNotificationInfo: this.getPassNotificationDetails,
|
||||||
|
// passActionMode: ButtonAction,
|
||||||
|
// passResAttr: this.P_RESPOND_ATTRIBUTES_TBL
|
||||||
|
// });
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.getPassNotificationDetails,
|
||||||
|
WorklistMainPoComponent.PASS_NOTIFICATION_INFO
|
||||||
|
);
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
ButtonAction,
|
||||||
|
WorklistMainPoComponent.PASS_ACTION_MODE
|
||||||
|
);
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.P_RESPOND_ATTRIBUTES_TBL,
|
||||||
|
WorklistMainPoComponent.PASS_RES_ATTR
|
||||||
|
);
|
||||||
|
this.common.openWorklistRollReplacement();
|
||||||
|
} else if (
|
||||||
|
ButtonAction == "UPDATE_ACTION" ||
|
||||||
|
ButtonAction == "CONTINUE_ACTION"
|
||||||
|
) {
|
||||||
|
if (this.getPassNotificationDetails.REQUEST_TYPE == "EIT") {
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.notificationBodyRes,
|
||||||
|
EITNotificatonBodyResponse.SHARED_DATA
|
||||||
|
);
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.getPassNotificationDetails,
|
||||||
|
EITNotificatonBodyResponse.NOT_WORKLIST
|
||||||
|
);
|
||||||
|
// this.navCtrl.push("EitUpdateListPage");
|
||||||
|
} else if (this.getPassNotificationDetails.REQUEST_TYPE == "ABSENCE") {
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.notificationBodyRes,
|
||||||
|
AbsenceNotificatonBodyResponse.SHARED_DATA
|
||||||
|
);
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.getPassNotificationDetails,
|
||||||
|
AbsenceNotificatonBodyResponse.NOT_WORKLIST
|
||||||
|
);
|
||||||
|
// this.navCtrl.push("SubmitAbsencePage", {
|
||||||
|
// dirfromNotificationPage: true,
|
||||||
|
// submitAbsObjList: this.notificationBodyRes[0].Collection_Notification
|
||||||
|
// });
|
||||||
|
this.common.openConfirmAbsece();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (this.notificationButtonRes.length > 0 && !ButtonAction) {
|
||||||
|
(this.elementRef.nativeElement.querySelectorAll(
|
||||||
|
"ion-item"
|
||||||
|
) as HTMLElement[]).forEach(x => {
|
||||||
|
if (x.classList.contains("requiredItem")) {
|
||||||
|
x.classList.add("ng-touched");
|
||||||
|
x.classList.remove("ng-untouched");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.common.presentAlert(
|
||||||
|
this.ts.trPK("worklistMain", "actionRequird")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
openActionHistory() {
|
||||||
|
// this.navCtrl.push("WorkListActionHistoryPage", {
|
||||||
|
// passNotificationInfo: this.getPassNotificationDetails
|
||||||
|
// });
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.getPassNotificationDetails,
|
||||||
|
WorklistMainPoComponent.PASS_NOTIFICATION_INFO
|
||||||
|
);
|
||||||
|
this.common.openWorklistHistoryPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
openSupportDocuments() {
|
||||||
|
// this.navCtrl.push("WorkListAttachPage", {
|
||||||
|
// passNotificationInfo: this.getPassNotificationDetails
|
||||||
|
// });
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.getPassNotificationDetails,
|
||||||
|
WorklistMainPoComponent.PASS_NOTIFICATION_INFO
|
||||||
|
);
|
||||||
|
this.common.openWorklistAttachPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
getNotificationResAttr(notificationButtonsObj) {
|
||||||
|
this.worklistMainService
|
||||||
|
.notificationResponseAttr(notificationButtonsObj)
|
||||||
|
.subscribe((result: NotificatonButtonResponse) => {
|
||||||
|
this.handleNotificationResAttrResult(result);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
handleNotificationResAttrResult(result) {
|
||||||
|
if (this.common.validResponse(result)) {
|
||||||
|
// this.sharedData.setSharedData(result, WorKListResponse.SHARED_DATA);
|
||||||
|
this.NotRespondAttributeList =
|
||||||
|
result.NotificationGetRespondAttributesList;
|
||||||
|
if (
|
||||||
|
result.NotificationRespondRolesList != "" &&
|
||||||
|
result.NotificationRespondRolesList[0].ATTRIBUTE_NAME != null &&
|
||||||
|
result.NotificationRespondRolesList[0].ATTRIBUTE_NAME != undefined
|
||||||
|
) {
|
||||||
|
this.Resp2_val = result.NotificationRespondRolesList[0].ATTRIBUTE_NAME;
|
||||||
|
this.hideForwordEmployee = result.NotificationRespondRolesList[0];
|
||||||
|
}
|
||||||
|
this.notificationDynamicFields(result.NotificationGetRespondAttributesList);
|
||||||
|
this.NotificationGetRespondAttributesList=result.NotificationGetRespondAttributesList;
|
||||||
|
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.NotificationGetRespondAttributesList,
|
||||||
|
WorklistMainPoComponent.PASS_RES_ATTR
|
||||||
|
);
|
||||||
|
|
||||||
|
this.notificationDynamicAttributeArr=result.NotificationGetRespondAttributesList;
|
||||||
|
if (result.P_Schema) this.schemaNotific = JSON.parse(result.P_Schema);
|
||||||
|
} // valid it
|
||||||
|
} // End handleWorkListButtonsResult
|
||||||
|
|
||||||
|
notificationDynamicFields(notificationAttr){
|
||||||
|
const containerId = 'notificationDynamicFields';
|
||||||
|
for(let i=0;i<notificationAttr.length;i++){
|
||||||
|
if(notificationAttr[i].ATTRIBUTE_TYPE=="VARCHAR2"){
|
||||||
|
this.textArea = new TextAreaInput(notificationAttr[i].ATTRIBUTE_DISPLAY_NAME, notificationAttr[i].ATTRIBUTE_NAME, "", containerId,"","","");
|
||||||
|
}else if(notificationAttr[i].ATTRIBUTE_TYPE=="ROLE"){
|
||||||
|
|
||||||
|
}else if(notificationAttr[i].ATTRIBUTE_TYPE=="DATE"){
|
||||||
|
|
||||||
|
}else if(notificationAttr[i].ATTRIBUTE_TYPE=="NUMBER"){
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
openNotificationBody() {
|
||||||
|
if (this.getPassNotificationDetails.REQUEST_TYPE == "EIT") {
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.notificationBodyRes,
|
||||||
|
EITNotificatonBodyResponse.SHARED_DATA
|
||||||
|
);
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.getPassNotificationDetails,
|
||||||
|
EITNotificatonBodyResponse.NOT_WORKLIST
|
||||||
|
);
|
||||||
|
// this.navCtrl.push("WorkListDetailsPage", { NotBodyType: "EIT" });
|
||||||
|
this.common.sharedService.setSharedData("EIT", "NotBodyType");
|
||||||
|
this.common.openNotificationDetailsPage();
|
||||||
|
} else if (this.getPassNotificationDetails.REQUEST_TYPE == "ABSENCE") {
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.notificationBodyRes,
|
||||||
|
AbsenceNotificatonBodyResponse.SHARED_DATA
|
||||||
|
);
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
this.getPassNotificationDetails,
|
||||||
|
AbsenceNotificatonBodyResponse.NOT_WORKLIST
|
||||||
|
);
|
||||||
|
this.common.sharedService.setSharedData("ABSENCE", "NotBodyType");
|
||||||
|
//this.navCtrl.push("WorkListDetailsPage", { NotBodyType: "ABSENCE" });
|
||||||
|
this.common.openNotificationDetailsPage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getNotificationCountAfterSubmit() {
|
||||||
|
const req: any = {};
|
||||||
|
this.menuService.getNotificationCount(req).subscribe((result: any) => {
|
||||||
|
if (this.common.validResponse(result)) {
|
||||||
|
this.notificationCount =
|
||||||
|
result.GetOpenNotificationsNumList.P_OPEN_NOTIFICATIONS_NUM;
|
||||||
|
if (this.notificationCount <= 0) {
|
||||||
|
this.notificationCount = null;
|
||||||
|
}
|
||||||
|
this.events.publish("getNotCount", this.notificationCount);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
getAttachmentNotification(WorkListAttachObj) {
|
||||||
|
|
||||||
|
this.worklistAttachService.getAttach(WorkListAttachObj).
|
||||||
|
subscribe((result: NotificationGetAttachResponse) => {
|
||||||
|
this.handleWorkListAttachResult(result);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
handleWorkListAttachResult(result) {
|
||||||
|
if (this.common.validResponse(result)) {
|
||||||
|
// this.sharedData.setSharedData(result, WorKListResponse.SHARED_DATA);
|
||||||
|
if (result.GetAttachementList != null) {
|
||||||
|
this.attachmentRes = result.GetAttachementList;
|
||||||
|
} // if result == null
|
||||||
|
} // valid it
|
||||||
|
}
|
||||||
|
|
||||||
|
getActionHistory(WorkListActionHistoryObj) {
|
||||||
|
this.IsReachEnd = false;
|
||||||
|
this.worklistService.getActionHistory(WorkListActionHistoryObj).
|
||||||
|
subscribe((result: WorkListActionHistoryResponse) => {
|
||||||
|
this.handleWorkListActionHistoryResult(result);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
handleWorkListActionHistoryResult(result) {
|
||||||
|
if (this.common.validResponse(result)) {
|
||||||
|
if (this.common.hasData(result.GetActionHistoryList)) {
|
||||||
|
this.actionHistoryRes = result.GetActionHistoryList;
|
||||||
|
this.P_PAGE_NUM++;
|
||||||
|
let lastItemIndex = this.actionHistoryRes.length - 1;
|
||||||
|
if (result.GetActionHistoryList[lastItemIndex]) {
|
||||||
|
let lastitem = result.GetActionHistoryList[lastItemIndex];
|
||||||
|
if (lastitem.NO_OF_ROWS == lastitem.ROW_NUM) {
|
||||||
|
this.IsReachEnd = true;
|
||||||
|
} else {
|
||||||
|
this.IsReachEnd = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async openNoteDetail(note,sender) {
|
||||||
|
// let modalPage = this.modalCtrl.create('ViewNoteModalPage', { textNote: note });
|
||||||
|
// modalPage.present();
|
||||||
|
console.log("note"+note);
|
||||||
|
|
||||||
|
this.common.sharedService.setSharedData(note, 'ViewNoteModalPage')
|
||||||
|
this.common.sharedService.setSharedData(sender,'ViewNoteModalPageSender')
|
||||||
|
|
||||||
|
const modal = await this.modalCtrl.create({
|
||||||
|
component: ViewNoteModalComponent,
|
||||||
|
backdropDismiss:false,
|
||||||
|
|
||||||
|
});
|
||||||
|
modal.cssClass = 'note-modal';
|
||||||
|
|
||||||
|
return await modal.present();
|
||||||
|
}
|
||||||
|
|
||||||
|
doInfinite(infiniteScroll) {
|
||||||
|
if (!this.IsReachEnd) {
|
||||||
|
this.WorkListActionHistoryObj.P_PAGE_NUM = this.P_PAGE_NUM;
|
||||||
|
this.worklistService.getActionHistory(this.WorkListActionHistoryObj).
|
||||||
|
subscribe((result: any) => {
|
||||||
|
if (this.common.validResponse(result)) {
|
||||||
|
if (result.GetActionHistoryList != undefined) {
|
||||||
|
this.P_PAGE_NUM++;
|
||||||
|
(result.GetActionHistoryList).forEach(element => {
|
||||||
|
if (element.ROW_NUM == element.NO_OF_ROWS) {
|
||||||
|
this.IsReachEnd = true;
|
||||||
|
} else {
|
||||||
|
this.IsReachEnd = false;
|
||||||
|
}
|
||||||
|
this.actionHistoryRes.push(element);
|
||||||
|
}, (Error) => console.log(Error), () => infiniteScroll.target.complete());
|
||||||
|
}// if list length >0
|
||||||
|
else {
|
||||||
|
this.IsReachEnd = true;
|
||||||
|
}
|
||||||
|
}// if response == 1
|
||||||
|
//this.pageNum++;
|
||||||
|
infiniteScroll.target.complete();
|
||||||
|
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
if (infiniteScroll)
|
||||||
|
infiniteScroll.target.complete();
|
||||||
|
}
|
||||||
|
}//end infiniteScroll
|
||||||
|
|
||||||
|
//**********Attachment *****************//
|
||||||
|
|
||||||
|
|
||||||
|
async OpenAttachFiles(value, Type) {
|
||||||
|
// let modal: Modal = this.modalCtrl.create('WorkListAttachViewPage', { displayData: value, TypeData: Type });
|
||||||
|
// modal.present();
|
||||||
|
|
||||||
|
this.common.sharedService.setSharedData({ displayData: value, TypeData: Type }, 'WorkListAttachViewPage')
|
||||||
|
const modal = await this.modalCtrl.create({
|
||||||
|
component: WorkListAttachViewComponent
|
||||||
|
});
|
||||||
|
|
||||||
|
return await modal.present();
|
||||||
|
}
|
||||||
|
|
||||||
|
getItemHistory(itemID) {
|
||||||
|
console.log(itemID);
|
||||||
|
this.IsReachEnd = false;
|
||||||
|
const request = new POItemHistoryRequest();
|
||||||
|
request.P_ITEM_ID=parseInt(itemID);
|
||||||
|
request.P_PAGE_LIMIT=50;
|
||||||
|
request.P_PAGE_NUM=1;
|
||||||
|
this.worklistMainService.getPOItemHistory(request).
|
||||||
|
subscribe((result: POItemHistoryRes) => {
|
||||||
|
// this.common.sharedService.setSharedData(
|
||||||
|
// result.GetItemHistoryList,
|
||||||
|
// WorklistMainPoComponent.ItemHistoryList
|
||||||
|
// );
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
itemID,
|
||||||
|
WorklistMainPoComponent.PASS_PO_INFO
|
||||||
|
);
|
||||||
|
//open page
|
||||||
|
this.common.openItemHistoryPage();
|
||||||
|
//this.handleItemHistoryResult(result);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
handleItemHistoryResult(result) {
|
||||||
|
if (this.common.validResponse(result)) {
|
||||||
|
if (this.common.hasData(result.GetItemHistoryList)) {
|
||||||
|
this.itemHistoryRes = result.GetItemHistoryList;
|
||||||
|
this.P_PAGE_NUM++;
|
||||||
|
let lastItemIndex = this.itemHistoryRes.length - 1;
|
||||||
|
if (result.GetItemHistoryList[lastItemIndex]) {
|
||||||
|
let lastitem = result.GetItemHistoryList[lastItemIndex];
|
||||||
|
if (lastitem.NO_OF_ROWS == lastitem.ROW_NUM) {
|
||||||
|
this.IsReachEnd = true;
|
||||||
|
} else {
|
||||||
|
this.IsReachEnd = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getQutationAnalysis(headerID,itemID) {
|
||||||
|
console.log(itemID+headerID);
|
||||||
|
this.IsReachEnd = false;
|
||||||
|
const request = new QuotationAnalysisRequest();
|
||||||
|
request.P_ITEM_ID=parseInt(itemID);
|
||||||
|
request.P_PO_HEADER_ID=headerID;
|
||||||
|
request.P_PAGE_LIMIT=50;
|
||||||
|
request.P_PAGE_NUM=1;
|
||||||
|
this.worklistMainService.getQutationAnalysis(request).
|
||||||
|
subscribe((result: QuotationAnalysisResponse) => {
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
itemID,
|
||||||
|
WorklistMainPoComponent.PASS_PO_INFO
|
||||||
|
);
|
||||||
|
this.common.sharedService.setSharedData(
|
||||||
|
headerID,
|
||||||
|
WorklistMainPoComponent.PASS_PO_HEADER_ID
|
||||||
|
);
|
||||||
|
//open page
|
||||||
|
|
||||||
|
this.handleQutationAnalysisResult(result);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
handleQutationAnalysisResult(result) {
|
||||||
|
if (this.common.validResponse(result)) {
|
||||||
|
if (this.common.hasData(result.GetQuotationAnalysisList)) {
|
||||||
|
|
||||||
|
//open page
|
||||||
|
//set sheard data
|
||||||
|
//
|
||||||
|
|
||||||
|
this.common.openQutationAnalysisPage();
|
||||||
|
|
||||||
|
|
||||||
|
// this.QutationAnalysisRes = result.GetQutationAnalysisList;
|
||||||
|
// this.P_PAGE_NUM++;
|
||||||
|
// let lastItemIndex = this.QutationAnalysisRes.length - 1;
|
||||||
|
// if (result.GetQutationAnalysisList[lastItemIndex]) {
|
||||||
|
// let lastitem = result.GetQutationAnalysisList[lastItemIndex];
|
||||||
|
// if (lastitem.NO_OF_ROWS == lastitem.ROW_NUM) {
|
||||||
|
// this.IsReachEnd = true;
|
||||||
|
// } else {
|
||||||
|
// this.IsReachEnd = false;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}//hasData
|
||||||
|
else{
|
||||||
|
alert("No DATA")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//infinite scrolling
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,306 +1,306 @@
|
|||||||
.colorBG{
|
// .colorBG{
|
||||||
--background: #f0efef;
|
// --background: #f0efef;
|
||||||
}
|
// }
|
||||||
.footerSearchBtn{
|
// .footerSearchBtn{
|
||||||
padding: 0px !important;
|
// padding: 0px !important;
|
||||||
background: #f0efef !important;
|
// background: #f0efef !important;
|
||||||
}
|
|
||||||
|
|
||||||
.actionList{
|
|
||||||
// position: fixed;
|
|
||||||
// bottom: 0px;
|
|
||||||
width: 215px;
|
|
||||||
border-top-left-radius: 7px;
|
|
||||||
border-top-right-radius: 7px
|
|
||||||
}
|
|
||||||
.cardContent{
|
|
||||||
width:100%;
|
|
||||||
margin-top: 33px
|
|
||||||
}
|
|
||||||
.colItemReq{
|
|
||||||
color: var(--dark);
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 15px;
|
|
||||||
text-align: left;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.colItemReqHeader{
|
|
||||||
text-align: left;
|
|
||||||
color: var(--primary);
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.labelTotal{
|
|
||||||
color: var(--danger);
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 17px;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
.labelAction{
|
|
||||||
color:var(--customnavy) !important;
|
|
||||||
font-weight:bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.segmentPR{
|
|
||||||
|
|
||||||
// --background-hover: rgba(var(--ion-color-contrast-rgb),0.04);
|
|
||||||
// --background-activated: var(--danger);
|
|
||||||
// --color: rgba(--primary);
|
|
||||||
--color-checked: var(--dark);
|
|
||||||
--indicator-color-checked: var(--secondary);
|
|
||||||
--background: #f0efef;
|
|
||||||
--background-activated: #f0efef;
|
|
||||||
--background-hover:#f0efef;
|
|
||||||
--background-activated:#f0efef;
|
|
||||||
--background-checked:#f0efef;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.ion-modal#ion-overlay-1 {
|
|
||||||
width: 90%;
|
|
||||||
height: 50%;
|
|
||||||
top: 20%;
|
|
||||||
left: 5%;
|
|
||||||
right: 5%;
|
|
||||||
bottom: 5%;
|
|
||||||
border: solid 1px red;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// .swiper-pagination.swiper-pagination-bullets{
|
|
||||||
// top: 6px;
|
|
||||||
// bottom: inherit;
|
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
// .actionList{
|
||||||
|
// // position: fixed;
|
||||||
|
// // bottom: 0px;
|
||||||
|
// width: 215px;
|
||||||
|
// border-top-left-radius: 7px;
|
||||||
|
// border-top-right-radius: 7px
|
||||||
|
// }
|
||||||
|
// .cardContent{
|
||||||
|
// width:100%;
|
||||||
|
// margin-top: 33px
|
||||||
|
// }
|
||||||
|
// .colItemReq{
|
||||||
|
// color: var(--dark);
|
||||||
|
// font-weight: bold;
|
||||||
|
// font-size: 15px;
|
||||||
|
// text-align: left;
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
// .colItemReqHeader{
|
||||||
|
// text-align: left;
|
||||||
|
// color: var(--primary);
|
||||||
|
// font-weight: bold;
|
||||||
|
// }
|
||||||
|
// .labelTotal{
|
||||||
|
// color: var(--danger);
|
||||||
|
// font-weight: bold;
|
||||||
|
// font-size: 17px;
|
||||||
|
|
||||||
// .swiper-pagination.swiper-pagination-bullets {
|
|
||||||
// top: 6px !important;
|
// }
|
||||||
// bottom: 0px !important;
|
// .labelAction{
|
||||||
// }
|
// color:var(--customnavy) !important;
|
||||||
|
// font-weight:bold;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// .segmentPR{
|
||||||
|
|
||||||
|
// // --background-hover: rgba(var(--ion-color-contrast-rgb),0.04);
|
||||||
|
// // --background-activated: var(--danger);
|
||||||
|
// // --color: rgba(--primary);
|
||||||
|
// --color-checked: var(--dark);
|
||||||
|
// --indicator-color-checked: var(--secondary);
|
||||||
|
// --background: #f0efef;
|
||||||
|
// --background-activated: #f0efef;
|
||||||
|
// --background-hover:#f0efef;
|
||||||
|
// --background-activated:#f0efef;
|
||||||
|
// --background-checked:#f0efef;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
// .ion-modal#ion-overlay-1 {
|
||||||
|
// width: 90%;
|
||||||
|
// height: 50%;
|
||||||
|
// top: 20%;
|
||||||
|
// left: 5%;
|
||||||
|
// right: 5%;
|
||||||
|
// bottom: 5%;
|
||||||
|
// border: solid 1px red;
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // .swiper-pagination.swiper-pagination-bullets{
|
||||||
|
// // top: 6px;
|
||||||
|
// // bottom: inherit;
|
||||||
|
// // }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// // .swiper-pagination.swiper-pagination-bullets {
|
||||||
|
// // top: 6px !important;
|
||||||
|
// // bottom: 0px !important;
|
||||||
|
// // }
|
||||||
|
|
||||||
// .swiper-pagination {
|
// // .swiper-pagination {
|
||||||
// top: 6px;
|
// // top: 6px;
|
||||||
// }
|
// // }
|
||||||
|
|
||||||
|
|
||||||
.bar-stable {
|
// .bar-stable {
|
||||||
background-color: var(--cusgray) !important;
|
// background-color: var(--cusgray) !important;
|
||||||
}
|
// }
|
||||||
.tabs{
|
// .tabs{
|
||||||
background-color: var(--cusgray) !important;
|
// background-color: var(--cusgray) !important;
|
||||||
}
|
// }
|
||||||
.icon-size-lg {
|
// .icon-size-lg {
|
||||||
font-size: 40px;
|
// font-size: 40px;
|
||||||
}
|
// }
|
||||||
|
|
||||||
/*Timeline*/
|
// /*Timeline*/
|
||||||
|
|
||||||
.pos-absolute-right {
|
// .pos-absolute-right {
|
||||||
position: absolute;
|
// position: absolute;
|
||||||
right: 8px;
|
// right: 8px;
|
||||||
}
|
// }
|
||||||
|
|
||||||
.timeline {
|
// .timeline {
|
||||||
position: relative;
|
// position: relative;
|
||||||
margin: 15px 0 0 0;
|
// margin: 15px 0 0 0;
|
||||||
}
|
// }
|
||||||
|
|
||||||
.timeline:before {
|
// .timeline:before {
|
||||||
|
|
||||||
content: '';
|
// content: '';
|
||||||
position: absolute;
|
// position: absolute;
|
||||||
top: 0;
|
// top: 0;
|
||||||
bottom: 0;
|
// bottom: 0;
|
||||||
width: 4px;
|
// width: 4px;
|
||||||
background: #e4e4e4;
|
// background: #e4e4e4;
|
||||||
z-index: 1;
|
// z-index: 1;
|
||||||
left: 66px;
|
// left: 66px;
|
||||||
/* margin-left: -10px; */
|
// /* margin-left: -10px; */
|
||||||
/* z-index: 1; */
|
// /* z-index: 1; */
|
||||||
}
|
// }
|
||||||
|
|
||||||
.timeline .timeline-thumb {
|
// .timeline .timeline-thumb {
|
||||||
|
|
||||||
border-radius: 500px;
|
// border-radius: 500px;
|
||||||
width: 40px !important;
|
// width: 40px !important;
|
||||||
z-index: 2;
|
// z-index: 2;
|
||||||
position: absolute;
|
// position: absolute;
|
||||||
left: 48px;
|
// left: 48px;
|
||||||
// :root[dir="ltr"]{
|
// // :root[dir="ltr"]{
|
||||||
// left: 37px;
|
// // left: 37px;
|
||||||
// }
|
// // }
|
||||||
// :root[dir="rtl"]{
|
// // :root[dir="rtl"]{
|
||||||
// right: 37px;
|
// // right: 37px;
|
||||||
// }
|
// // }
|
||||||
float: right;
|
// float: right;
|
||||||
top: 9px;
|
// top: 9px;
|
||||||
}
|
// }
|
||||||
|
|
||||||
.timeline .timeline-thumb.timeline-icon {
|
// .timeline .timeline-thumb.timeline-icon {
|
||||||
height: 40px;
|
// height: 40px;
|
||||||
// text-align: center;
|
// // text-align: center;
|
||||||
// color: white;
|
// // color: white;
|
||||||
// border: 5px solid #CBD0D3;
|
// // border: 5px solid #CBD0D3;
|
||||||
// transform: scale(0.2);
|
// // transform: scale(0.2);
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.timeline .timeline-item {
|
// .timeline .timeline-item {
|
||||||
width: 50px;
|
// width: 50px;
|
||||||
|
|
||||||
}
|
// }
|
||||||
|
|
||||||
.timeline .timeline-stats {
|
// .timeline .timeline-stats {
|
||||||
position: relative;
|
// position: relative;
|
||||||
font-size: 12px;
|
// font-size: 12px;
|
||||||
color: var(--darkgray);
|
// color: var(--darkgray);
|
||||||
|
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
.divider-title {
|
// .divider-title {
|
||||||
background: #e4e4e4;
|
// background: #e4e4e4;
|
||||||
padding: 5px 15px;
|
// padding: 5px 15px;
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
.color-red {
|
// .color-red {
|
||||||
color: var(--danger) !important;
|
// color: var(--danger) !important;
|
||||||
}
|
// }
|
||||||
|
|
||||||
.bg-color-dot {
|
// .bg-color-dot {
|
||||||
|
|
||||||
background: var(--gray);
|
// background: var(--gray);
|
||||||
|
|
||||||
/* background: linear-gradient(45deg, var(--primary) 0%, #19a163 36%, var(--secondary) 59%, var(--customnavy) 100%); */
|
// /* background: linear-gradient(45deg, var(--primary) 0%, #19a163 36%, var(--secondary) 59%, var(--customnavy) 100%); */
|
||||||
// border: var(--secondary) solid 1px;
|
// // border: var(--secondary) solid 1px;
|
||||||
// background-color: #ff3b30 !important;
|
// // background-color: #ff3b30 !important;
|
||||||
// background: var(--primary);
|
// // background: var(--primary);
|
||||||
//background: -moz-linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
|
// //background: -moz-linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
|
||||||
//background: -webkit-linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
|
// //background: -webkit-linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
|
||||||
//background: linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
|
// //background: linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
|
||||||
|
|
||||||
|
|
||||||
}
|
// }
|
||||||
|
|
||||||
.bg-blue-dot {
|
// .bg-blue-dot {
|
||||||
|
|
||||||
border: var(--blue) solid 1px;
|
// border: var(--blue) solid 1px;
|
||||||
background: var(--gray);
|
// background: var(--gray);
|
||||||
|
|
||||||
}
|
// }
|
||||||
.bg-orange-dot {
|
// .bg-orange-dot {
|
||||||
|
|
||||||
border: var(--orange) solid 1px;
|
// border: var(--orange) solid 1px;
|
||||||
background: var(--gray);
|
// background: var(--gray);
|
||||||
}
|
// }
|
||||||
.bg-red-dot {
|
// .bg-red-dot {
|
||||||
|
|
||||||
border: var(--red) solid 1px;
|
// border: var(--red) solid 1px;
|
||||||
background: var(--gray);
|
// background: var(--gray);
|
||||||
|
|
||||||
}
|
// }
|
||||||
.bg-green-dot {
|
// .bg-green-dot {
|
||||||
|
|
||||||
border: var(--green) solid 1px;
|
// border: var(--green) solid 1px;
|
||||||
background: var(--gray);
|
// background: var(--gray);
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
.bg-blue-txt {
|
// .bg-blue-txt {
|
||||||
|
|
||||||
color: var(--blue) !important;
|
// color: var(--blue) !important;
|
||||||
font-weight:bold;
|
// font-weight:bold;
|
||||||
|
|
||||||
}
|
// }
|
||||||
.bg-orange-txt {
|
// .bg-orange-txt {
|
||||||
font-weight:bold;
|
// font-weight:bold;
|
||||||
|
|
||||||
color: var(--orange) !important;
|
// color: var(--orange) !important;
|
||||||
}
|
// }
|
||||||
.bg-red-txt {
|
// .bg-red-txt {
|
||||||
font-weight:bold;
|
// font-weight:bold;
|
||||||
|
|
||||||
color: var(--red) !important;
|
// color: var(--red) !important;
|
||||||
|
|
||||||
|
|
||||||
}
|
// }
|
||||||
.bg-green-txt {
|
// .bg-green-txt {
|
||||||
font-weight:bold;
|
// font-weight:bold;
|
||||||
|
|
||||||
color: var(--green) !important;
|
// color: var(--green) !important;
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.notification-list{
|
// .notification-list{
|
||||||
ion-item{
|
// ion-item{
|
||||||
// margin-top: 5px;
|
// // margin-top: 5px;
|
||||||
// margin-bottom: 5px;
|
// // margin-bottom: 5px;
|
||||||
|
|
||||||
background-color: transparent;
|
// background-color: transparent;
|
||||||
.item-date{
|
// .item-date{
|
||||||
width: 55px;
|
// width: 55px;
|
||||||
font-size: 14px;
|
// font-size: 14px;
|
||||||
font-weight: bold;
|
// font-weight: bold;
|
||||||
|
|
||||||
text-align: center;
|
// text-align: center;
|
||||||
padding: 0;
|
// padding: 0;
|
||||||
margin: 0;
|
// margin: 0;
|
||||||
|
|
||||||
position: absolute;
|
// position: absolute;
|
||||||
left: 0;
|
// left: 0;
|
||||||
top: 0;
|
// top: 0;
|
||||||
}
|
// }
|
||||||
ion-label , [item-end]{
|
// ion-label , [item-end]{
|
||||||
|
|
||||||
white-space: normal;
|
// white-space: normal;
|
||||||
font-size: 14px;
|
// font-size: 14px;
|
||||||
// :root[dir="ltr"]{
|
// // :root[dir="ltr"]{
|
||||||
// margin-left: 10px;
|
// // margin-left: 10px;
|
||||||
// }
|
// // }
|
||||||
// :root[dir="rtl"]{
|
// // :root[dir="rtl"]{
|
||||||
// margin-right: 10px;
|
// // margin-right: 10px;
|
||||||
// }
|
// // }
|
||||||
|
|
||||||
}
|
// }
|
||||||
|
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
.input-wrapper {
|
// .input-wrapper {
|
||||||
--flex:none;
|
// --flex:none;
|
||||||
}
|
// }
|
||||||
ion-input ,ion-datetime{
|
// ion-input ,ion-datetime{
|
||||||
border-bottom: #dedede 1px solid;
|
// border-bottom: #dedede 1px solid;
|
||||||
}
|
// }
|
||||||
.left {
|
// .left {
|
||||||
.timeline:before{
|
// .timeline:before{
|
||||||
left: 66px;
|
// left: 66px;
|
||||||
}
|
// }
|
||||||
.notification-list ion-item{
|
// .notification-list ion-item{
|
||||||
padding-left: 3px;
|
// padding-left: 3px;
|
||||||
}
|
// }
|
||||||
.timeline-thumb{
|
// .timeline-thumb{
|
||||||
left: 37px;
|
// left: 37px;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
.right {
|
// .right {
|
||||||
.timeline:before{
|
// .timeline:before{
|
||||||
right: 62px;
|
// right: 62px;
|
||||||
}
|
// }
|
||||||
.notification-list ion-item{
|
// .notification-list ion-item{
|
||||||
padding-right: 3px;
|
// padding-right: 3px;
|
||||||
}
|
// }
|
||||||
.timeline-thumb{
|
// .timeline-thumb{
|
||||||
right: 37px;
|
// right: 37px;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,41 @@
|
|||||||
|
.rowAccordin{
|
||||||
|
border: none;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.gridAccordin{
|
||||||
|
margin: 10px;
|
||||||
|
background: #ffffff;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.colPayslip{
|
||||||
|
text-align: center;
|
||||||
|
color: var(--labelColor);
|
||||||
|
|
||||||
|
}
|
||||||
|
.earingTotH{
|
||||||
|
text-align: right;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size:20px !important;
|
||||||
|
padding-right: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.earingTotG{
|
||||||
|
text-align: left;
|
||||||
|
padding-left: 15px;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 20px !important;
|
||||||
|
color: var(--green);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.earingTotR{
|
||||||
|
text-align: left;
|
||||||
|
padding-left: 15px;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 20px !important;
|
||||||
|
color: var(--red);
|
||||||
|
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 522 B |
Binary file not shown.
|
After Width: | Height: | Size: 517 B |
@ -0,0 +1,368 @@
|
|||||||
|
.colorBG{
|
||||||
|
--background: #f0efef;
|
||||||
|
}
|
||||||
|
.footerSearchBtn{
|
||||||
|
padding: 0px !important;
|
||||||
|
background: #f0efef !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.headerRow{
|
||||||
|
padding-top: 10px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
.itemReqList{
|
||||||
|
background: #f0efef;
|
||||||
|
margin-top: 20px;
|
||||||
|
width: 95%;
|
||||||
|
|
||||||
|
}
|
||||||
|
.gridItemReq{
|
||||||
|
//width:95%;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.itemReqContent{
|
||||||
|
margin-top: 17px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
border-radius: 7px;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.itemReqDiv{
|
||||||
|
padding-bottom: 10px;
|
||||||
|
padding-top: 10px;
|
||||||
|
}
|
||||||
|
.arrowIcon{
|
||||||
|
width: 18px !important;
|
||||||
|
|
||||||
|
margin-right: -21px !important;
|
||||||
|
margin-left: 10px !important;
|
||||||
|
}
|
||||||
|
.actionList{
|
||||||
|
// position: fixed;
|
||||||
|
// bottom: 0px;
|
||||||
|
bottom: -7px;
|
||||||
|
width: 215px;
|
||||||
|
border-top-left-radius: 7px;
|
||||||
|
border-top-right-radius: 7px
|
||||||
|
}
|
||||||
|
.cardContent{
|
||||||
|
width:100%;
|
||||||
|
margin-top: 33px
|
||||||
|
}
|
||||||
|
.colItemReq{
|
||||||
|
color: var(--dark);
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 16px;
|
||||||
|
text-align: left;
|
||||||
|
display: contents;
|
||||||
|
font-family: var(--ion-font-family,inherit);
|
||||||
|
font-size: inherit;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: normal;
|
||||||
|
overflow: hidden;
|
||||||
|
box-sizing: border-box;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.colItemReqHeader{
|
||||||
|
text-align: justify;
|
||||||
|
color: var(--cyanblue);
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.labelTotal{
|
||||||
|
color: var(--danger);
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 17px;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
.labelAction{
|
||||||
|
color:var(--customnavy) !important;
|
||||||
|
font-weight:bold;
|
||||||
|
}
|
||||||
|
.colItems{
|
||||||
|
padding-bottom: 10px
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ion-label.labelValue.sc-ion-label-ios-h.sc-ion-label-ios-s.ios.hydrated,
|
||||||
|
ion-label.labelValue.sc-ion-label-md-h.sc-ion-label-md-s.md.hydrated
|
||||||
|
{
|
||||||
|
white-space: pre-wrap !important;
|
||||||
|
--color: initial;
|
||||||
|
display: contents;
|
||||||
|
color: var(--color);
|
||||||
|
font-family: var(--ion-font-family,inherit);
|
||||||
|
font-size: inherit;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: hidden;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box
|
||||||
|
}
|
||||||
|
|
||||||
|
.segmentPR{
|
||||||
|
|
||||||
|
// --background-hover: rgba(var(--ion-color-contrast-rgb),0.04);
|
||||||
|
// --background-activated: var(--danger);
|
||||||
|
// --color: rgba(--primary);
|
||||||
|
--color-checked: var(--dark);
|
||||||
|
--indicator-color-checked: var(--secondary);
|
||||||
|
--background: #f0efef;
|
||||||
|
--background-activated: #f0efef;
|
||||||
|
--background-hover:#f0efef;
|
||||||
|
--background-activated:#f0efef;
|
||||||
|
--background-checked:#f0efef;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.ion-modal#ion-overlay-1 {
|
||||||
|
width: 90%;
|
||||||
|
height: 50%;
|
||||||
|
top: 20%;
|
||||||
|
left: 5%;
|
||||||
|
right: 5%;
|
||||||
|
bottom: 5%;
|
||||||
|
border: solid 1px red;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// .swiper-pagination.swiper-pagination-bullets{
|
||||||
|
// top: 6px;
|
||||||
|
// bottom: inherit;
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// .swiper-pagination.swiper-pagination-bullets {
|
||||||
|
// top: 6px !important;
|
||||||
|
// bottom: 0px !important;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// .swiper-pagination {
|
||||||
|
// top: 6px;
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
.bar-stable {
|
||||||
|
background-color: var(--cusgray) !important;
|
||||||
|
}
|
||||||
|
.tabs{
|
||||||
|
background-color: var(--cusgray) !important;
|
||||||
|
}
|
||||||
|
.icon-size-lg {
|
||||||
|
font-size: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*Timeline*/
|
||||||
|
|
||||||
|
.pos-absolute-right {
|
||||||
|
position: absolute;
|
||||||
|
right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.timeline {
|
||||||
|
position: relative;
|
||||||
|
margin: 15px 0 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.timeline:before {
|
||||||
|
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
width: 4px;
|
||||||
|
background: #e4e4e4;
|
||||||
|
z-index: 1;
|
||||||
|
left: 66px;
|
||||||
|
/* margin-left: -10px; */
|
||||||
|
/* z-index: 1; */
|
||||||
|
}
|
||||||
|
|
||||||
|
.timeline .timeline-thumb {
|
||||||
|
|
||||||
|
border-radius: 500px;
|
||||||
|
width: 40px !important;
|
||||||
|
z-index: 2;
|
||||||
|
position: absolute;
|
||||||
|
left: 48px;
|
||||||
|
// :root[dir="ltr"]{
|
||||||
|
// left: 37px;
|
||||||
|
// }
|
||||||
|
// :root[dir="rtl"]{
|
||||||
|
// right: 37px;
|
||||||
|
// }
|
||||||
|
float: right;
|
||||||
|
top: 9px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.timeline .timeline-thumb.timeline-icon {
|
||||||
|
height: 40px;
|
||||||
|
// text-align: center;
|
||||||
|
// color: white;
|
||||||
|
// border: 5px solid #CBD0D3;
|
||||||
|
// transform: scale(0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.timeline .timeline-item {
|
||||||
|
width: 50px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.timeline .timeline-stats {
|
||||||
|
position: relative;
|
||||||
|
font-size: 12px;
|
||||||
|
color: var(--darkgray);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.divider-title {
|
||||||
|
background: #e4e4e4;
|
||||||
|
padding: 5px 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.color-red {
|
||||||
|
color: var(--danger) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-color-dot {
|
||||||
|
|
||||||
|
background: var(--gray);
|
||||||
|
|
||||||
|
/* background: linear-gradient(45deg, var(--primary) 0%, #19a163 36%, var(--secondary) 59%, var(--customnavy) 100%); */
|
||||||
|
// border: var(--secondary) solid 1px;
|
||||||
|
// background-color: #ff3b30 !important;
|
||||||
|
// background: var(--primary);
|
||||||
|
//background: -moz-linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
|
||||||
|
//background: -webkit-linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
|
||||||
|
//background: linear-gradient(45deg, var(--primary) 0%, var(--secondary) 36%,var(--secondary) 59%, var(--customnavy) 100%);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-blue-dot {
|
||||||
|
|
||||||
|
border: var(--blue) solid 1px;
|
||||||
|
background: var(--gray);
|
||||||
|
|
||||||
|
}
|
||||||
|
.bg-orange-dot {
|
||||||
|
|
||||||
|
border: var(--orange) solid 1px;
|
||||||
|
background: var(--gray);
|
||||||
|
}
|
||||||
|
.bg-red-dot {
|
||||||
|
|
||||||
|
border: var(--red) solid 1px;
|
||||||
|
background: var(--gray);
|
||||||
|
|
||||||
|
}
|
||||||
|
.bg-green-dot {
|
||||||
|
|
||||||
|
border: var(--green) solid 1px;
|
||||||
|
background: var(--gray);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.bg-blue-txt {
|
||||||
|
|
||||||
|
color: var(--blue) !important;
|
||||||
|
font-weight:bold;
|
||||||
|
|
||||||
|
}
|
||||||
|
.bg-orange-txt {
|
||||||
|
font-weight:bold;
|
||||||
|
|
||||||
|
color: var(--orange) !important;
|
||||||
|
}
|
||||||
|
.bg-red-txt {
|
||||||
|
font-weight:bold;
|
||||||
|
|
||||||
|
color: var(--red) !important;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
.bg-green-txt {
|
||||||
|
font-weight:bold;
|
||||||
|
|
||||||
|
color: var(--green) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.notification-list{
|
||||||
|
ion-item{
|
||||||
|
// margin-top: 5px;
|
||||||
|
// margin-bottom: 5px;
|
||||||
|
|
||||||
|
background-color: transparent;
|
||||||
|
.item-date{
|
||||||
|
width: 55px;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: bold;
|
||||||
|
|
||||||
|
text-align: center;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
ion-label , [item-end]{
|
||||||
|
|
||||||
|
white-space: normal;
|
||||||
|
font-size: 14px;
|
||||||
|
// :root[dir="ltr"]{
|
||||||
|
// margin-left: 10px;
|
||||||
|
// }
|
||||||
|
// :root[dir="rtl"]{
|
||||||
|
// margin-right: 10px;
|
||||||
|
// }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.input-wrapper {
|
||||||
|
--flex:none;
|
||||||
|
}
|
||||||
|
ion-input ,ion-datetime{
|
||||||
|
border-bottom: #dedede 1px solid;
|
||||||
|
}
|
||||||
|
.left {
|
||||||
|
.timeline:before{
|
||||||
|
left: 66px;
|
||||||
|
}
|
||||||
|
.notification-list ion-item{
|
||||||
|
padding-left: 3px;
|
||||||
|
}
|
||||||
|
.timeline-thumb{
|
||||||
|
left: 37px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.right {
|
||||||
|
.timeline:before{
|
||||||
|
right: 62px;
|
||||||
|
}
|
||||||
|
.notification-list ion-item{
|
||||||
|
padding-right: 3px;
|
||||||
|
}
|
||||||
|
.timeline-thumb{
|
||||||
|
right: 37px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Loading…
Reference in New Issue