javascript - 按 2 个日期进行 Angular 过滤

标签 javascript angular

我需要添加日期范围的过滤器。意思是我只需要显示用户从日期到现在输入的数据。我有一组数据,其中只显示一个日期。但我想过滤它,就像这个用户输入任意 2 个日期(从和到)并且在数组中我只显示输入日期之间的数据。

   <div class="row">
   <div class="col-12">
     <div class="content-header">Claims Status</div>
       <p class="content-sub-header">Claims Settled 23</p>
   </div>
  </div>

 <section id="extended">

   <div class="row">
     <div class="col-sm-12">
       <div class="card">

    <div class="row" >
     <div class="col-sm bg-primary text-white" style="text-align: center;" ><div>Claims<br>(settled)</div><div *ngIf="statusunsettledcc">  {{statusunsettledcc}}</div></div>
    <div class="col-sm bg-success text-white" style="text-align: center;"><div>Claim Amount<br>(settled)</div><div *ngIf="statusunsettledamount">{{statusunsettledamount | number : fractionSize}}</div></div>
    <div class="col-sm bg-danger text-white" style="text-align: center;" ><div>Claims<br>(unsettled)</div><div *ngIf="status2settledcc">{{status2settledcc}}</div></div>
    <div class="col-sm bg-warning text-white" style="text-align: center;"><div>Claim Amount<br>(unsettled)</div><div *ngIf="status2settledamount">{{status2settledamount | number : fractionSize}}</div></div>
    </div>


  <div class="card-header">
    <div class="card-title-wrap bar-success">
      <h4 class="card-title">Claims</h4>
    </div>
  </div>
  <div class="card-body">
    <div class="card-block">

      <div class="row">
        <div class="col-md-3">
          <div class="form-group" >
            <label for="">Search Name</label>

            <input type="text" class="form-control" [(ngModel)]="userFilter.member_name" placeholder="Search name" name="search">
          </div>
        </div>

        <div class="col-md-3">
          <div class="form-group" >
            <label for="">Search Claim No</label>
            <input type="search"
            class="form-control" placeholder="Claim No" [(ngModel)]="userFilter.claim_no">
          </div>
        </div>

   <div class="col-md-3 form-group">
        <input type="date" class="form-control" [(ngModel)]="from"> //From date
    </div>
    <div class="col-md-3 form-group">
        <input type="date" class="form-control" [(ngModel)]="to"> //To Date
    </div>


        <div class="col-md-3" *ngIf="company">
          <div class="form-group">
            <label for="">Company</label>
            <select class="form-control" [(ngModel)]="userFilter.company_id" (change)="getClaims()">
              <option value='' >All</option>
              <option value="999">Airlink Communication</option>
              <option value="637">Ascertia (Pvt) Ltd</option>
              <option value="1053">Frontier Works Organization</option>
              <option value="1174">Ebryx (pvt) Ltd</option>
              <option value="274">HY Enterprises (Pvt) Limited</option>
              <option value="459">Naimat Saleem trust NST (US GROUP)</option>
              <option value="659">Samad Rubber Works (Pvt) Ltd</option>
              <option value="56">Sundry Clients</option>
              <option value="620">TIMEXPERTS (PRIVATE) Limited</option>
              <option value="39">US Apparel & Textile (Pvt) Limited</option>
              <option value="40">US Denim Mills (Pvt) Limited</option>
            </select>
          </div>
        </div>

        <div class="col-md-3">
          <div class="form-group">
            <label for="">Claim Status</label>
            <select class="form-control" [(ngModel)]="userFilter.status">
              <option value='' >All</option>

              <option value="submitted">Submitted</option>
              <option value="approved">Approved</option>
              <option value="cancel">Objection Claim</option>
              <option value="settled">Settled</option>
              <option value="rejected">Rejected</option>
              <option value="CLOSED">Closed</option>
              <option value="OUTSTANDING">Outstanding</option>



            </select>
          </div>
        </div>

        <div class="col-md-3" *ngIf="policyclaim">
          <div class="form-group">
           <label for="">Policy</label>
           <select class="form-control" [(ngModel)]="userFilter.policy_id" (change)="getClaims()" style="width: 400px" >
             <option value='' >Select Policy No</option>

             <option *ngFor="let policy of policynumbers" value="{{policy.policy_id}}">{{policy.policy_id}}</option>

           </select>
         </div>
       </div>

        <div class="col-md-3" *ngIf="policysamad">
          <div class="form-group">
           <label for="">Policy</label>
           <select class="form-control" [(ngModel)]="userFilter.policy_id" (change)="getSamad()" style="width: 400px" >
             <option value='' >Select Policy No</option>

             <option *ngFor="let policy of policynumbers" value="{{policy.policy_id}}">{{policy.policy_id}}</option>

           </select>
         </div>
       </div>


     </div>



     <table class="table table-responsive-md text-center">
      <thead>
        <tr>
          <th>STATUS</th>
          <th>Name</th>
          <th>Patient Name</th>
          <th>Approved Amount</th>
          <th>Claimed Amount</th>
          <th>Company</th>
          <th>Submitted By</th>
          <th>Claim No</th>
          <!-- <th>Website URL</th> -->

        </tr>
      </thead>
      <tbody *ngIf="data1">



        <tr *ngFor="let x of data1 | filterBy: userFilter" (click)="openDeal(deletecontent, x)" >





          <td>
            <span class="text-success" *ngIf="x.status == 'submitted'">Submitted</span>
            <span class="text-primary" *ngIf="x.status == 'settled'">Settled</span>
            <span class="text-warning" *ngIf="x.status == 'rejected'">Rejected</span>
            <span class="text-danger" *ngIf="x.status == 'Approved'">Approved</span>
            <span class="text-danger" *ngIf="x.status == 'ojection claim'">Objection claim</span>


          </td>
          <td >
            <div style="text-align: left;">
              <img [src]="x.userPhoto || 'https://mbtskoudsalg.com/images/user-image-png.png'" class="img-sm" alt="" style="text-align: left;">
              {{x.member_name}}
            </div>
          </td>
          <td style="text-align: left;">{{x.patient_name}}</td>
          <td>{{x.approved_value}}</td>
          <td>{{x.claimed_value}}</td>
          <td>                                      



            <span  class="text-success" *ngIf="x.company_id == '999'" >Airlink Communication</span>
            <span class="text-success" *ngIf="x.company_id == '637'">Ascertia (Pvt) Ltd</span>
            <span *ngIf="x.company_id == '1053'" class="text-success">Frontier Works Organization</span>
            <span *ngIf="x.company_id == '1174'" class="text-success">Ebryx (pvt) Ltd</span>
            <span  *ngIf="x.company_id == '274'" class="text-success">HY Enterprises (Pvt) Limited</span>
            <span *ngIf="x.company_id == '459'" class="text-success">Naimat Saleem trust NST (US GROUP)</span>
            <span *ngIf="x.company_id == '659'" class="text-success">Samad Rubber Works (Pvt) Ltd</span>
            <span *ngIf="x.company_id == '56'" class="text-success">Sundry Clients</span>
            <span *ngIf="x.company_id == '620'" class="text-success">TIMEXPERTS (PRIVATE) Limited</span>
            <span *ngIf="x.company_id == '39'" class="text-success">US Apparel & Textile (Pvt) Limited</span>
            <span *ngIf="x.company_id == '40'" class="text-success">US Denim Mills (Pvt) Limited</span>


          </td>

          <td>{{x.submitted_at || 'not-defined'}}

          </td>
          <td>{{x.claim_no}}</td>

        </tr>
       </tbody>
      </table>
    </div>
   </div>
  </div>
</div>
</div>
</section>

.ts

getClaims(){

this.policyclaim = true;


if(this.userFilter.company_id){
this.url = 'url='+this.userFilter.company_id;

this.httpClient.get<any>('url'+this.userFilter.company_id).subscribe(statuses => {
  console.log(statuses);
  console.log(statuses.records[0].Amount);
  this.statusunsettledamount = statuses.records[0].Amount;
  console.log(this.statusunsettledamount);
    console.log(statuses.records[0].cc);
    this.statusunsettledcc = statuses.records[0].cc;

});

this.httpClient.get<any>('url'+this.userFilter.company_id).subscribe(statuses2 => {
  console.log(statuses2);
    console.log(statuses2.records[0].Amount);
    this.status2settledamount = statuses2.records[0].Amount;
    console.log(this.status2settledamount);
    console.log(statuses2.records[0].cc);
    this.status2settledcc = statuses2.records[0].cc;
    console.log(this.status2settledcc);
});

this.httpClient.get<any>('url'+this.userFilter.company_id).subscribe(policyinfo => {
  console.log(policyinfo);
  this.policynumbers = policyinfo.records;
  console.log(this.policynumbers);
});


}

  if (this.from && this.to) {
    const fromDate = new Date(this.from.split(/\D/));
    const toDate = new Date(this.to.split(/\D/));
    this.data1.filter(obj => new Date(obj.date) > fromDate && new Date(obj.date) < toDate);
    console.log(this.data1);
  }


else 
{
this.url = 'url/get_claims.php?offset=0&limit=50';

this.httpClient.get<any>('http://api.igiinsurance.com.pk:8888/insurance_IGItakaful/insurance-api/get_claims_amt.php?cstatus=OUTSTANDING').subscribe(statuses => {
  console.log(statuses);
  console.log(statuses.records[0].Amount);
  this.statusunsettledamount = statuses.records[0].Amount;
  console.log(this.statusunsettledamount);
    console.log(statuses.records[0].cc);
    this.statusunsettledcc = statuses.records[0].cc;

});

this.httpClient.get<any>('url/get_claims_amt.php?cstatus=CLOSED').subscribe(statuses2 => {
  console.log(statuses2);
    console.log(statuses2.records[0].Amount);
    this.status2settledamount = statuses2.records[0].Amount;
    console.log(this.status2settledamount);
    console.log(statuses2.records[0].cc);
    this.status2settledcc = statuses2.records[0].cc;
    console.log(this.status2settledcc);
});


this.httpClient.get<any>('url/insurance-api/get_company_policy.php?').subscribe(policyinfo => {
  console.log(policyinfo);
  this.policynumbers = policyinfo.records;
  console.log(this.policynumbers);
});


}

this.clientData = this.httpClient.get<any>(this.url).
subscribe(data => {
console.log(data);
this.spinner.hide();

this.data1 = data.records;
this.data1.forEach(d => this.policy_id.add(d.policy_id));
console.log(this.userFilter.policy_id);




if(this.userFilter.policy_id){

let vv = this.data1.filter(v => v.policy_id === this.userFilter.policy_id);
console.log(vv);

this.httpClient.get<any>('http://url='+this.userFilter.policy_id).subscribe(statuses => {
  console.log(statuses);
  console.log(statuses.records[0].Amount);
  this.statusunsettledamount = statuses.records[0].Amount;
  console.log(this.statusunsettledamount);
    console.log(statuses.records[0].cc);
    this.statusunsettledcc = statuses.records[0].cc;

});

this.httpClient.get<any>('url='+this.userFilter.policy_id).subscribe(statuses2 => {
  console.log(statuses2);
    console.log(statuses2.records[0].Amount);
    this.status2settledamount = statuses2.records[0].Amount;
    console.log(this.status2settledamount);
    console.log(statuses2.records[0].cc);
    this.status2settledcc = statuses2.records[0].cc;
    console.log(this.status2settledcc);
});



this.httpClient.get<any>('http://api.igiinsurance.com.pk:8888/insurance_IGItakaful/insurance-api/get_company_policy.php?company_id='+this.company_id).subscribe(policyinfo => {
  console.log(policyinfo);
  this.policynumbers = policyinfo.records;
  console.log(this.policynumbers);
});

this.url = 'url/get_claims.php?';

this.clientData = this.httpClient.get<any>(this.url,
{
params: {
policy_id: this.userFilter.policy_id     
 },

}).
subscribe(data => {
console.log(data);
this.spinner.hide();

this.data1 = data.records;
this.data1.forEach(d => this.policy_id.add(d.policy_id));
console.log(this.userFilter.policy_id);

});





//const sum1 = vv.filter(item => item.status === 'settled')
//.reduce((acc, item) => acc + Number(item.approved_value), 0);
//console.log(sum1);
//this.sum1 = sum1;

//const sum2 = vv.filter(item => item.status === 'submitted')
//.reduce((acc, item) => acc + Number(item.approved_value), 0);
//console.log(sum2);
//this.sum2 = sum2;

//var status = 'settled';
//var status2 = 'submitted';

//var countsettled = vv.filter((obj) => obj.status === status).length;
//var countunsettled = vv.filter((obj) => obj.status === status2).length;

//console.log(countsettled);
//this.countsettled = countsettled;
//console.log(countunsettled);
//this.countunsettled = countunsettled;



}
//else{


//const sum1 = this.data1.filter(item => item.status === 'settled')
//.reduce((acc, item) => acc + Number(item.approved_value), 0);
//console.log(sum1);
//this.sum1 = sum1;

//const sum2 = this.data1.filter(item => item.status === 'submitted')
//.reduce((acc, item) => acc + Number(item.approved_value), 0);
//console.log(sum2);
//this.sum2 = sum2;

//var status = 'settled';
//var status2 = 'submitted';

//var countsettled = this.data1.filter((obj) => obj.status === status).length;
//var countunsettled = this.data1.filter((obj) => obj.status === status2).length;

//console.log(countsettled);
//this.countsettled = countsettled;
//console.log(countunsettled);
//this.countunsettled = countunsettled;



//}


});



}

最佳答案

根据用户日期过滤数组。更喜欢输入中的任何日期选择器来选择日期对象并避免额外的开销。我更喜欢 moment 进行日期比较和过滤。如需更快的数据过滤,请参阅交叉过滤器。无论数组长度如何,它都比正常过滤快得多。

关于javascript - 按 2 个日期进行 Angular 过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56372090/

相关文章:

javascript - 为什么在 groupBy 运算符之后不调用 subscribe?

javascript - 检查 JavaScript if 语句中的部分匹配

javascript - 如何使用 jQuery 检查 HTML 元素是否为空?

Angular 2+等待方法/可观察完成

javascript - 为什么这个 RegEx 在 JavaScript 中不起作用?

javascript - div 元素上的 touchevent 在 window 元素上工作时不起作用

Angular 2 : Update the iframe src when router url gets change

html - 更改垫进度条 "aria-valuemax"

java - 使用 Java 和 Angular2 进行 Spring Security 登录

angular - ng-测试 : show result only for passed tests