Merge branch 'develop' of https://gitlab.eascs.com/tms-ui/tms-obc-web into develop
This commit is contained in:
		@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					<!-- 页头 -->
 | 
				
			||||||
 | 
					<page-header-wrapper [title]="'数据报表'"></page-header-wrapper>
 | 
				
			||||||
 | 
					<nz-card>
 | 
				
			||||||
 | 
					  <sf mode="search" [schema]="searchSchema" (formSubmit)="st.reset($event)" (formReset)="st.reset($event)"></sf>
 | 
				
			||||||
 | 
					  <st #st [data]="url" [columns]="columns"></st>
 | 
				
			||||||
 | 
					</nz-card>
 | 
				
			||||||
@ -0,0 +1,45 @@
 | 
				
			|||||||
 | 
					import { Component, OnInit, ViewChild } from '@angular/core';
 | 
				
			||||||
 | 
					import { STColumn, STComponent } from '@delon/abc/st';
 | 
				
			||||||
 | 
					import { SFSchema } from '@delon/form';
 | 
				
			||||||
 | 
					import { ModalHelper, _HttpClient } from '@delon/theme';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Component({
 | 
				
			||||||
 | 
					  selector: 'app-datatable-compliance-customer',
 | 
				
			||||||
 | 
					  templateUrl: './customer.component.html',
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					export class DatatableComplianceCustomerComponent implements OnInit {
 | 
				
			||||||
 | 
					  url = `/user`;
 | 
				
			||||||
 | 
					  searchSchema: SFSchema = {
 | 
				
			||||||
 | 
					    properties: {
 | 
				
			||||||
 | 
					      no: {
 | 
				
			||||||
 | 
					        type: 'string',
 | 
				
			||||||
 | 
					        title: '编号'
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					  @ViewChild('st') private readonly st!: STComponent;
 | 
				
			||||||
 | 
					  columns: STColumn[] = [
 | 
				
			||||||
 | 
					    { title: '编号', index: 'no' },
 | 
				
			||||||
 | 
					    { title: '调用次数', type: 'number', index: 'callNo' },
 | 
				
			||||||
 | 
					    { title: '头像', type: 'img', width: '50px', index: 'avatar' },
 | 
				
			||||||
 | 
					    { title: '时间', type: 'date', index: 'updatedAt' },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      title: '',
 | 
				
			||||||
 | 
					      buttons: [
 | 
				
			||||||
 | 
					        // { text: '查看', click: (item: any) => `/form/${item.id}` },
 | 
				
			||||||
 | 
					        // { text: '编辑', type: 'static', component: FormEditComponent, click: 'reload' },
 | 
				
			||||||
 | 
					      ]
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  constructor(private http: _HttpClient, private modal: ModalHelper) { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ngOnInit(): void { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  add(): void {
 | 
				
			||||||
 | 
					    // this.modal
 | 
				
			||||||
 | 
					    //   .createStatic(FormEditComponent, { i: { id: 0 } })
 | 
				
			||||||
 | 
					    //   .subscribe(() => this.st.reload());
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,66 @@
 | 
				
			|||||||
 | 
					<!-- 页头 -->
 | 
				
			||||||
 | 
					<page-header-wrapper [title]="'合规监控报表'"></page-header-wrapper>
 | 
				
			||||||
 | 
					<nz-card>
 | 
				
			||||||
 | 
					  <!-- 搜索区 -->
 | 
				
			||||||
 | 
					  <div nz-row>
 | 
				
			||||||
 | 
					    <div nz-col nzSpan="18">
 | 
				
			||||||
 | 
					      <sf #sf [ui]="ui" [schema]="schema" [button]="'none'"></sf>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    <div nz-col nzSpan="6">
 | 
				
			||||||
 | 
					      <div class="chooseBox">
 | 
				
			||||||
 | 
					        <div class="timeBox">
 | 
				
			||||||
 | 
					          <nz-radio-group [(ngModel)]="mode" nzButtonStyle="solid" (ngModelChange)="changeData()">
 | 
				
			||||||
 | 
					            <label nz-radio-button nzValue="year">年</label>
 | 
				
			||||||
 | 
					            <label nz-radio-button nzValue="month">月</label>
 | 
				
			||||||
 | 
					          </nz-radio-group>
 | 
				
			||||||
 | 
					          <div class="dateBox">
 | 
				
			||||||
 | 
					            <nz-date-picker [(ngModel)]="date" [nzMode]="mode" [nzFormat]="dateFormat" (ngModelChange)="onChange($event)"></nz-date-picker>
 | 
				
			||||||
 | 
					          </div>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</nz-card>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div nz-row [nzGutter]="16">
 | 
				
			||||||
 | 
					  <div nz-col class="gutter-row" [nzSpan]="6">
 | 
				
			||||||
 | 
					    <g2-card [title]="'订单合格率'" [bordered]="true" [total]="'95.00%'" [footer]="footer1" contentHeight="46">
 | 
				
			||||||
 | 
					      <ng-template #footer1>
 | 
				
			||||||
 | 
					        <div class="card-f">
 | 
				
			||||||
 | 
					          <span class="card-f-l">合格:12423</span> <span>不合格:12423</span>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </ng-template>
 | 
				
			||||||
 | 
					    </g2-card>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					  <div nz-col class="gutter-row" [nzSpan]="6">
 | 
				
			||||||
 | 
					    <g2-card [title]="'货源单占比'" [bordered]="true" [total]="'94.00%'" [footer]="footer2" contentHeight="46">
 | 
				
			||||||
 | 
					      <ng-template #footer2>
 | 
				
			||||||
 | 
					        <div class="card-f">
 | 
				
			||||||
 | 
					          <span class="card-f-l">货源单:12423</span> <span>合同单:12423</span>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </ng-template>
 | 
				
			||||||
 | 
					    </g2-card>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					  <div nz-col class="gutter-row" [nzSpan]="6">
 | 
				
			||||||
 | 
					    <g2-card [title]="'运费直付占比'" [bordered]="true" [total]="'95.10%'" [footer]="footer3" contentHeight="46">
 | 
				
			||||||
 | 
					      <ng-template #footer3>
 | 
				
			||||||
 | 
					        <div class="card-f">
 | 
				
			||||||
 | 
					          <span class="card-f-l">司机:12423</span> <span>车队长:12423</span>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </ng-template>
 | 
				
			||||||
 | 
					    </g2-card>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  <div nz-col class="gutter-row" [nzSpan]="6">
 | 
				
			||||||
 | 
					    <g2-card [title]="'付款及时率'" [bordered]="true" [total]="'90.00%'" [footer]="footer4" contentHeight="46">
 | 
				
			||||||
 | 
					      <ng-template #footer4>
 | 
				
			||||||
 | 
					        <div class="card-f">
 | 
				
			||||||
 | 
					          <span class="card-f-l">准时:12423</span> <span>逾期:12423</span>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </ng-template>
 | 
				
			||||||
 | 
					    </g2-card>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<nz-card nzTitle="平台合规情况监控报表">
 | 
				
			||||||
 | 
					  <g2-custom delay="100" (render)="render($event)"></g2-custom>
 | 
				
			||||||
 | 
					</nz-card>
 | 
				
			||||||
@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					.card-f{
 | 
				
			||||||
 | 
					    color: #5a5a5a;
 | 
				
			||||||
 | 
					    .card-f-l{
 | 
				
			||||||
 | 
					      margin-right: 24px;  
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.chooseBox{
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.timeBox{
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  margin: 0 0 0 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.dateBox{
 | 
				
			||||||
 | 
					  display: inline-block;
 | 
				
			||||||
 | 
					  margin: 0 0 0 10px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,125 @@
 | 
				
			|||||||
 | 
					import { Component, ElementRef, NgZone, OnInit, ViewChild } from '@angular/core';
 | 
				
			||||||
 | 
					import { DatePipe, ModalHelper, _HttpClient } from '@delon/theme';
 | 
				
			||||||
 | 
					import { G2MiniAreaClickItem, G2MiniAreaData } from '@delon/chart/mini-area';
 | 
				
			||||||
 | 
					import { format } from 'date-fns';
 | 
				
			||||||
 | 
					import { SFComponent, SFDateWidgetSchema, SFRadioWidgetSchema, SFSchema, SFUISchema } from '@delon/form';
 | 
				
			||||||
 | 
					import { G2TimelineData, G2TimelineMap } from '@delon/chart/timeline';
 | 
				
			||||||
 | 
					import { Chart } from '@antv/g2';
 | 
				
			||||||
 | 
					const DataSet = require('@antv/data-set');
 | 
				
			||||||
 | 
					@Component({
 | 
				
			||||||
 | 
					  selector: 'app-datatable-compliance-index',
 | 
				
			||||||
 | 
					  templateUrl: './index.component.html',
 | 
				
			||||||
 | 
					  styleUrls: ['./index.component.less'],
 | 
				
			||||||
 | 
					  providers: [DatePipe]
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					export class DatatableComplianceIndexComponent implements OnInit {
 | 
				
			||||||
 | 
					  @ViewChild('sf', { static: false })
 | 
				
			||||||
 | 
					  sf!: SFComponent;
 | 
				
			||||||
 | 
					  ui!: SFUISchema;
 | 
				
			||||||
 | 
					  schema: SFSchema = {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  mode = 'year';
 | 
				
			||||||
 | 
					  date: any = null;
 | 
				
			||||||
 | 
					  dateFormat = 'yyyy-MM-dd';
 | 
				
			||||||
 | 
					  time: any = ['2022-01-01 00:00:00']
 | 
				
			||||||
 | 
					  constructor(private http: _HttpClient, private modal: ModalHelper, private ngZone: NgZone, private datePipe: DatePipe) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ngOnInit(): void {
 | 
				
			||||||
 | 
					    this.initSF();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  changeData(){
 | 
				
			||||||
 | 
					    if(this.mode === 'year') {
 | 
				
			||||||
 | 
					      this.dateFormat = 'yyyy'
 | 
				
			||||||
 | 
					    } else if(this.mode === 'month') {
 | 
				
			||||||
 | 
					      this.dateFormat = 'yyyy-MM'
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      this.dateFormat = 'yyyy-MM-dd'
 | 
				
			||||||
 | 
					    } 
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  onChange(result: any) {
 | 
				
			||||||
 | 
					    if(this.mode === 'year') {
 | 
				
			||||||
 | 
					      this.time = [this.datePipe.transform(this.date, 'yyyy') + '-01-01 00:00:00']
 | 
				
			||||||
 | 
					    } else if(this.mode === 'month') {
 | 
				
			||||||
 | 
					      this.time = [this.datePipe.transform(this.date, 'yyyy-MM') + '-01 00:00:00']
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  initSF() {
 | 
				
			||||||
 | 
					    this.schema = {
 | 
				
			||||||
 | 
					      properties: {
 | 
				
			||||||
 | 
					        name: {
 | 
				
			||||||
 | 
					          type: 'string',
 | 
				
			||||||
 | 
					          title: '',
 | 
				
			||||||
 | 
					          ui: {
 | 
				
			||||||
 | 
					            widget: 'select',
 | 
				
			||||||
 | 
					            placeholder: '网络货运人'
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        name2: {
 | 
				
			||||||
 | 
					          type: 'string',
 | 
				
			||||||
 | 
					          title: '',
 | 
				
			||||||
 | 
					          ui: {
 | 
				
			||||||
 | 
					            widget: 'select',
 | 
				
			||||||
 | 
					            placeholder: '部门'
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        name3: {
 | 
				
			||||||
 | 
					          type: 'string',
 | 
				
			||||||
 | 
					          title: '',
 | 
				
			||||||
 | 
					          ui: {
 | 
				
			||||||
 | 
					            placeholder: '业务员'
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    this.ui = {
 | 
				
			||||||
 | 
					      '*': {
 | 
				
			||||||
 | 
					        grid: { span: 4 }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  data = [
 | 
				
			||||||
 | 
					    { Date: '22 February', 订单合格率: 50000, 付款及时率: 125000 },
 | 
				
			||||||
 | 
					    { Date: '28 February', 订单合格率: 60000, 付款及时率: 150000 },
 | 
				
			||||||
 | 
					    { Date: '3 March', 订单合格率: 100000, 付款及时率: 250000 },
 | 
				
			||||||
 | 
					    { Date: '20 March', 订单合格率: 200000, 付款及时率: 500000 },
 | 
				
			||||||
 | 
					    { Date: '7 April', 订单合格率: 250000, 付款及时率: 625000 },
 | 
				
			||||||
 | 
					    { Date: '13 June', 订单合格率: 210000, 付款及时率: 525000 }
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					  render(el: ElementRef<HTMLDivElement>) {
 | 
				
			||||||
 | 
					    this.ngZone.runOutsideAngular(() => this.init(el.nativeElement));
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private init(el: HTMLElement): void {
 | 
				
			||||||
 | 
					    const chart = new Chart({
 | 
				
			||||||
 | 
					      container: el,
 | 
				
			||||||
 | 
					      autoFit: true,
 | 
				
			||||||
 | 
					      height: 400
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					    // 以三组数据为例, 需要展示 91/92/93年中a/b/c数据走势
 | 
				
			||||||
 | 
							const data = [
 | 
				
			||||||
 | 
								{x: '1991', z: 'a', y: 1},
 | 
				
			||||||
 | 
								{x: '1991', z: 'b', y: 2},
 | 
				
			||||||
 | 
								{x: '1991', z: 'c', y: 3},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								{x: '1992', z: 'a', y: 11},
 | 
				
			||||||
 | 
								{x: '1992', z: 'b', y: 22},
 | 
				
			||||||
 | 
								{x: '1992', z: 'c', y: 33},
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								{x: '1993', z: 'a', y: 1},
 | 
				
			||||||
 | 
								{x: '1993', z: 'b', y: 2},
 | 
				
			||||||
 | 
								{x: '1993', z: 'c', y: 3}
 | 
				
			||||||
 | 
							];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    chart.data(data);
 | 
				
			||||||
 | 
							// 在x*y的坐标点上按z值绘制线条, 如果z值相同将使用直线连接
 | 
				
			||||||
 | 
							chart.line().position('x*y').color('z');
 | 
				
			||||||
 | 
							// 在x*y的坐标上按z值绘制圆点
 | 
				
			||||||
 | 
							chart.point().position('x*y').size(4).color('z').shape('circle');
 | 
				
			||||||
 | 
							chart.render();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					<!-- 页头 -->
 | 
				
			||||||
 | 
					<page-header-wrapper [title]="'数据报表'"></page-header-wrapper>
 | 
				
			||||||
 | 
					<nz-card>
 | 
				
			||||||
 | 
					  <sf mode="search" [schema]="searchSchema" (formSubmit)="st.reset($event)" (formReset)="st.reset($event)"></sf>
 | 
				
			||||||
 | 
					  <st #st [data]="url" [columns]="columns"></st>
 | 
				
			||||||
 | 
					</nz-card>
 | 
				
			||||||
@ -0,0 +1,45 @@
 | 
				
			|||||||
 | 
					import { Component, OnInit, ViewChild } from '@angular/core';
 | 
				
			||||||
 | 
					import { STColumn, STComponent } from '@delon/abc/st';
 | 
				
			||||||
 | 
					import { SFSchema } from '@delon/form';
 | 
				
			||||||
 | 
					import { ModalHelper, _HttpClient } from '@delon/theme';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Component({
 | 
				
			||||||
 | 
					  selector: 'app-datatable-compliance-salesman',
 | 
				
			||||||
 | 
					  templateUrl: './salesman.component.html',
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					export class DatatableComplianceSalesmanComponent implements OnInit {
 | 
				
			||||||
 | 
					  url = `/user`;
 | 
				
			||||||
 | 
					  searchSchema: SFSchema = {
 | 
				
			||||||
 | 
					    properties: {
 | 
				
			||||||
 | 
					      no: {
 | 
				
			||||||
 | 
					        type: 'string',
 | 
				
			||||||
 | 
					        title: '编号'
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					  @ViewChild('st') private readonly st!: STComponent;
 | 
				
			||||||
 | 
					  columns: STColumn[] = [
 | 
				
			||||||
 | 
					    { title: '编号', index: 'no' },
 | 
				
			||||||
 | 
					    { title: '调用次数', type: 'number', index: 'callNo' },
 | 
				
			||||||
 | 
					    { title: '头像', type: 'img', width: '50px', index: 'avatar' },
 | 
				
			||||||
 | 
					    { title: '时间', type: 'date', index: 'updatedAt' },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      title: '',
 | 
				
			||||||
 | 
					      buttons: [
 | 
				
			||||||
 | 
					        // { text: '查看', click: (item: any) => `/form/${item.id}` },
 | 
				
			||||||
 | 
					        // { text: '编辑', type: 'static', component: FormEditComponent, click: 'reload' },
 | 
				
			||||||
 | 
					      ]
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  constructor(private http: _HttpClient, private modal: ModalHelper) { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ngOnInit(): void { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  add(): void {
 | 
				
			||||||
 | 
					    // this.modal
 | 
				
			||||||
 | 
					    //   .createStatic(FormEditComponent, { i: { id: 0 } })
 | 
				
			||||||
 | 
					    //   .subscribe(() => this.st.reload());
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					<!-- 页头 -->
 | 
				
			||||||
 | 
					<page-header-wrapper [title]="'数据报表'"></page-header-wrapper>
 | 
				
			||||||
 | 
					<nz-card>
 | 
				
			||||||
 | 
					  <sf mode="search" [schema]="searchSchema" (formSubmit)="st.reset($event)" (formReset)="st.reset($event)"></sf>
 | 
				
			||||||
 | 
					  <st #st [data]="url" [columns]="columns"></st>
 | 
				
			||||||
 | 
					</nz-card>
 | 
				
			||||||
@ -0,0 +1,45 @@
 | 
				
			|||||||
 | 
					import { Component, OnInit, ViewChild } from '@angular/core';
 | 
				
			||||||
 | 
					import { STColumn, STComponent } from '@delon/abc/st';
 | 
				
			||||||
 | 
					import { SFSchema } from '@delon/form';
 | 
				
			||||||
 | 
					import { ModalHelper, _HttpClient } from '@delon/theme';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Component({
 | 
				
			||||||
 | 
					  selector: 'app-datatable-financetable',
 | 
				
			||||||
 | 
					  templateUrl: './financetable.component.html',
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					export class DatatableFinancetableComponent implements OnInit {
 | 
				
			||||||
 | 
					  url = `/user`;
 | 
				
			||||||
 | 
					  searchSchema: SFSchema = {
 | 
				
			||||||
 | 
					    properties: {
 | 
				
			||||||
 | 
					      no: {
 | 
				
			||||||
 | 
					        type: 'string',
 | 
				
			||||||
 | 
					        title: '编号'
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					  @ViewChild('st') private readonly st!: STComponent;
 | 
				
			||||||
 | 
					  columns: STColumn[] = [
 | 
				
			||||||
 | 
					    { title: '编号', index: 'no' },
 | 
				
			||||||
 | 
					    { title: '调用次数', type: 'number', index: 'callNo' },
 | 
				
			||||||
 | 
					    { title: '头像', type: 'img', width: '50px', index: 'avatar' },
 | 
				
			||||||
 | 
					    { title: '时间', type: 'date', index: 'updatedAt' },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      title: '',
 | 
				
			||||||
 | 
					      buttons: [
 | 
				
			||||||
 | 
					        // { text: '查看', click: (item: any) => `/form/${item.id}` },
 | 
				
			||||||
 | 
					        // { text: '编辑', type: 'static', component: FormEditComponent, click: 'reload' },
 | 
				
			||||||
 | 
					      ]
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  constructor(private http: _HttpClient, private modal: ModalHelper) { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ngOnInit(): void { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  add(): void {
 | 
				
			||||||
 | 
					    // this.modal
 | 
				
			||||||
 | 
					    //   .createStatic(FormEditComponent, { i: { id: 0 } })
 | 
				
			||||||
 | 
					    //   .subscribe(() => this.st.reload());
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					<!-- 页头 -->
 | 
				
			||||||
 | 
					<page-header-wrapper [title]="'开票数据报表'"></page-header-wrapper>
 | 
				
			||||||
 | 
					<nz-card nzTitle="开票数据报表">
 | 
				
			||||||
 | 
					  <st
 | 
				
			||||||
 | 
					    #st
 | 
				
			||||||
 | 
					    [data]="data"
 | 
				
			||||||
 | 
					    [columns]="columns"
 | 
				
			||||||
 | 
					    [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
 | 
				
			||||||
 | 
					    [res]="{ reName: { list: 'data.records', total: 'data.total' } }"
 | 
				
			||||||
 | 
					    [page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
 | 
				
			||||||
 | 
					    [loadingDelay]="500"
 | 
				
			||||||
 | 
					  >
 | 
				
			||||||
 | 
					  </st>
 | 
				
			||||||
 | 
					</nz-card>
 | 
				
			||||||
@ -0,0 +1,70 @@
 | 
				
			|||||||
 | 
					import { Component, OnInit, ViewChild } from '@angular/core';
 | 
				
			||||||
 | 
					import { STColumn, STComponent } from '@delon/abc/st';
 | 
				
			||||||
 | 
					import { SFSchema } from '@delon/form';
 | 
				
			||||||
 | 
					import { ModalHelper, _HttpClient } from '@delon/theme';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Component({
 | 
				
			||||||
 | 
					  selector: 'app-datatable-invoicetable',
 | 
				
			||||||
 | 
					  templateUrl: './invoicetable.component.html',
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					export class DatatableInvoicetableComponent implements OnInit {
 | 
				
			||||||
 | 
					  @ViewChild('st', { static: false })
 | 
				
			||||||
 | 
					  st!: STComponent;
 | 
				
			||||||
 | 
					  columns!: STColumn[];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  data=[{name1:1111}]
 | 
				
			||||||
 | 
					  constructor(private http: _HttpClient, private modal: ModalHelper) { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * 查询参数
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					   get reqParams() {
 | 
				
			||||||
 | 
					    return {  };
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  ngOnInit(): void { 
 | 
				
			||||||
 | 
					    this.initST();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  initST() {
 | 
				
			||||||
 | 
					    this.columns = [
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        title: '运营主体',
 | 
				
			||||||
 | 
					        index: 'name1'
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        title: '已开票总金额',
 | 
				
			||||||
 | 
					        index: 'name1'
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        title: '当月已开票金额',
 | 
				
			||||||
 | 
					        index: 'name1'
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        title: '已申请待开金额',
 | 
				
			||||||
 | 
					        index: 'name1'
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        title: '未申请开票金额(历史)',
 | 
				
			||||||
 | 
					        index: 'name1'
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        title: '未申请开票金额(当月)',
 | 
				
			||||||
 | 
					        index: 'name1'
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        title: '当月发票张数',
 | 
				
			||||||
 | 
					        index: 'name1'
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        title: '剩余发票张数',
 | 
				
			||||||
 | 
					        index: 'name1'
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					    ];
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  add(): void {
 | 
				
			||||||
 | 
					    // this.modal
 | 
				
			||||||
 | 
					    //   .createStatic(FormEditComponent, { i: { id: 0 } })
 | 
				
			||||||
 | 
					    //   .subscribe(() => this.st.reload());
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -7,6 +7,12 @@ import { DatatableDriverComponent } from './components/customtable/driver/driver
 | 
				
			|||||||
import { DatatableOperationtableComponent } from './components/operationtable/operationtable.component';
 | 
					import { DatatableOperationtableComponent } from './components/operationtable/operationtable.component';
 | 
				
			||||||
import { DatatableOrderReportingComponent } from './reporting/components/order-reporting/order-reporting.component';
 | 
					import { DatatableOrderReportingComponent } from './reporting/components/order-reporting/order-reporting.component';
 | 
				
			||||||
import { DatatableDataindexComponent } from './components/dataindex/dataindex.component';
 | 
					import { DatatableDataindexComponent } from './components/dataindex/dataindex.component';
 | 
				
			||||||
 | 
					import { DatatableComplianceIndexComponent } from './components/compliance/index/index.component';
 | 
				
			||||||
 | 
					import { DatatableFinancetableComponent } from './components/financetable/financetable.component';
 | 
				
			||||||
 | 
					import { DatatableInvoicetableComponent } from './components/invoicetable/invoicetable.component';
 | 
				
			||||||
 | 
					import { DatatableComplianceSalesmanComponent } from './components/compliance/salesman/salesman.component';
 | 
				
			||||||
 | 
					import { DatatableComplianceCustomerComponent } from './components/compliance/customer/customer.component';
 | 
				
			||||||
 | 
					import { DatatableFundReportingComponent } from './reporting/components/fund-reporting/fund-reporting.component';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const routes: Routes = [
 | 
					const routes: Routes = [
 | 
				
			||||||
  { path: 'dataindex', component: DatatableDataindexComponent },
 | 
					  { path: 'dataindex', component: DatatableDataindexComponent },
 | 
				
			||||||
@ -15,7 +21,14 @@ const routes: Routes = [
 | 
				
			|||||||
  { path: 'owner', component: DatatableOwnerComponent },
 | 
					  { path: 'owner', component: DatatableOwnerComponent },
 | 
				
			||||||
  { path: 'driver', component: DatatableDriverComponent },
 | 
					  { path: 'driver', component: DatatableDriverComponent },
 | 
				
			||||||
  { path: 'operationtable', component: DatatableOperationtableComponent },
 | 
					  { path: 'operationtable', component: DatatableOperationtableComponent },
 | 
				
			||||||
  { path: 'reporting/order', component: DatatableOrderReportingComponent }];
 | 
					  { path: 'reporting/order', component: DatatableOrderReportingComponent },
 | 
				
			||||||
 | 
					  { path: 'compliancetabel/index', component: DatatableComplianceIndexComponent },
 | 
				
			||||||
 | 
					  { path: 'compliancetabel/salesman', component: DatatableComplianceSalesmanComponent },
 | 
				
			||||||
 | 
					  { path: 'compliancetabel/customer', component: DatatableComplianceCustomerComponent },
 | 
				
			||||||
 | 
					  { path: 'financetable', component: DatatableFinancetableComponent },
 | 
				
			||||||
 | 
					  { path: 'invoicetable', component: DatatableInvoicetableComponent },
 | 
				
			||||||
 | 
					  { path: 'reporting/fund', component: DatatableFundReportingComponent }
 | 
				
			||||||
 | 
					];
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@NgModule({
 | 
					@NgModule({
 | 
				
			||||||
 | 
				
			|||||||
@ -9,6 +9,14 @@ import { DatatableOperationtableComponent } from './components/operationtable/op
 | 
				
			|||||||
import { OperationtablePieComponent } from './components/operationtable/pie/pie.component';
 | 
					import { OperationtablePieComponent } from './components/operationtable/pie/pie.component';
 | 
				
			||||||
import { DatatableOrderReportingComponent } from './reporting/components/order-reporting/order-reporting.component';
 | 
					import { DatatableOrderReportingComponent } from './reporting/components/order-reporting/order-reporting.component';
 | 
				
			||||||
import { DatatableDataindexComponent } from './components/dataindex/dataindex.component';
 | 
					import { DatatableDataindexComponent } from './components/dataindex/dataindex.component';
 | 
				
			||||||
 | 
					import { DatatableComplianceIndexComponent } from './components/compliance/index/index.component';
 | 
				
			||||||
 | 
					import { DatatableFinancetableComponent } from './components/financetable/financetable.component';
 | 
				
			||||||
 | 
					import { DatatableInvoicetableComponent } from './components/invoicetable/invoicetable.component';
 | 
				
			||||||
 | 
					import { DatatableComplianceSalesmanComponent } from './components/compliance/salesman/salesman.component';
 | 
				
			||||||
 | 
					import { DatatableComplianceCustomerComponent } from './components/compliance/customer/customer.component';
 | 
				
			||||||
 | 
					import { DatatableReportingUploadSettingComponent } from './reporting/components/upload-setting/upload-setting.component';
 | 
				
			||||||
 | 
					import { DatatableReportingVerifyResultComponent } from './reporting/components/verify-result/verify-result.component';
 | 
				
			||||||
 | 
					import { DatatableFundReportingComponent } from './reporting/components/fund-reporting/fund-reporting.component';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const COMPONENTS: Type<void>[] = [
 | 
					const COMPONENTS: Type<void>[] = [
 | 
				
			||||||
  DatatableDataindexComponent,
 | 
					  DatatableDataindexComponent,
 | 
				
			||||||
@ -18,8 +26,17 @@ const COMPONENTS: Type<void>[] = [
 | 
				
			|||||||
  DatatableDriverComponent,
 | 
					  DatatableDriverComponent,
 | 
				
			||||||
  DatatableOperationtableComponent,
 | 
					  DatatableOperationtableComponent,
 | 
				
			||||||
  OperationtablePieComponent,
 | 
					  OperationtablePieComponent,
 | 
				
			||||||
  DatatableOrderReportingComponent
 | 
					  DatatableOrderReportingComponent,
 | 
				
			||||||
];
 | 
					  DatatableComplianceIndexComponent,
 | 
				
			||||||
 | 
					  DatatableFinancetableComponent,
 | 
				
			||||||
 | 
					  DatatableInvoicetableComponent,
 | 
				
			||||||
 | 
					  DatatableComplianceSalesmanComponent,
 | 
				
			||||||
 | 
					  DatatableComplianceCustomerComponent,
 | 
				
			||||||
 | 
					  DatatableReportingUploadSettingComponent,
 | 
				
			||||||
 | 
					  DatatableReportingVerifyResultComponent,
 | 
				
			||||||
 | 
					  DatatableFundReportingComponent
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@NgModule({
 | 
					@NgModule({
 | 
				
			||||||
  imports: [
 | 
					  imports: [
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,57 @@
 | 
				
			|||||||
 | 
					<page-header-wrapper [title]="''"></page-header-wrapper>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<nz-card>
 | 
				
			||||||
 | 
					  <!-- 搜索表单 -->
 | 
				
			||||||
 | 
					  <div nz-row nzGutter="8">
 | 
				
			||||||
 | 
					    <div nz-col [nzSpan]="_$expand ? 24 : 18">
 | 
				
			||||||
 | 
					      <sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"></sf>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    <div nz-col [nzSpan]="_$expand ? 24 : 6" [class.text-right]="_$expand">
 | 
				
			||||||
 | 
					      <button nz-button nzType="primary" [disabled]="!sf.valid" [nzLoading]="false" (click)="search()" acl
 | 
				
			||||||
 | 
					        [acl-ability]="['RiskOrder-Search']">查询</button>
 | 
				
			||||||
 | 
					      <button nz-button (click)="resetSF()">重置</button>
 | 
				
			||||||
 | 
					      <button nz-button (click)="resetSF()">导出</button>
 | 
				
			||||||
 | 
					      <button nz-button nzType="link" (click)="expandToggle()">
 | 
				
			||||||
 | 
					        {{ !_$expand ? '展开' : '收起' }}
 | 
				
			||||||
 | 
					        <i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i>
 | 
				
			||||||
 | 
					      </button>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</nz-card>
 | 
				
			||||||
 | 
					<nz-card>
 | 
				
			||||||
 | 
					  <nz-tabset [nzTabBarExtraContent]="extraTemplate" *ngIf="tabs.length>0">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <nz-tab *ngFor="let tab of tabs" [nzTitle]="tab.name" (nzSelect)="selectChange(tab)">
 | 
				
			||||||
 | 
					    </nz-tab>
 | 
				
			||||||
 | 
					  </nz-tabset>
 | 
				
			||||||
 | 
					  <!-- 数据列表 -->
 | 
				
			||||||
 | 
					  <st #st [scroll]="{x:'1200px'}" [data]="service.$api_order_reporting_page" [columns]="columns"
 | 
				
			||||||
 | 
					    [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
 | 
				
			||||||
 | 
					    [res]="{ reName: { list: 'data.records', total: 'data.total' } }"
 | 
				
			||||||
 | 
					    [page]="{ show: true, showSize: true, pageSizes: [10,20, 50, 100] }" [loading]="false">
 | 
				
			||||||
 | 
					    <ng-template st-row="orderStatus" let-item let-index="index">
 | 
				
			||||||
 | 
					      <a (click)="viewAuditResult(item)" *ngIf="item?.billStatus === '2'">{{item?.billStatusLabel}}</a>
 | 
				
			||||||
 | 
					      <span *ngIf="item?.billStatus !== '2'">{{item?.billStatusLabel}}</span>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    </ng-template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <ng-template st-row="localValid" let-item let-index="index">
 | 
				
			||||||
 | 
					      <a (click)="viewResult(item)" *ngIf="item?.billStatus === '2'">{{item?.billStatusLabel}}</a>
 | 
				
			||||||
 | 
					      <span *ngIf="item?.billStatus !== '2'">{{item?.billStatusLabel}}</span>
 | 
				
			||||||
 | 
					    </ng-template>
 | 
				
			||||||
 | 
					    <ng-template st-row="amount" let-item let-index="index">
 | 
				
			||||||
 | 
					      <div class="text-right">{{item?.amount | currency :' '}}</div>
 | 
				
			||||||
 | 
					    </ng-template>
 | 
				
			||||||
 | 
					  </st>
 | 
				
			||||||
 | 
					</nz-card>
 | 
				
			||||||
 | 
					<ng-template #extraTemplate>
 | 
				
			||||||
 | 
					  <div class="d-flex align-items-center">
 | 
				
			||||||
 | 
					    <div class="mr-md">
 | 
				
			||||||
 | 
					      已选择
 | 
				
			||||||
 | 
					      <strong class="text-red">{{ selectedRows.length }}</strong> 条数据
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    <button nz-button nzType="primary" (click)="upload()">上传</button>
 | 
				
			||||||
 | 
					    <button nz-button nzType="primary" (click)="recall()">撤回</button>
 | 
				
			||||||
 | 
					    <button nz-button nzType="primary" (click)="uploadSetting()">上传设置</button>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</ng-template>
 | 
				
			||||||
@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					:host {
 | 
				
			||||||
 | 
					  .text-black {
 | 
				
			||||||
 | 
					    color: #000;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
 | 
				
			||||||
 | 
					import { DatatableFundReportingComponent } from './fund-reporting.component';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					describe('DatatableFundReportingComponent', () => {
 | 
				
			||||||
 | 
					  let component: DatatableFundReportingComponent;
 | 
				
			||||||
 | 
					  let fixture: ComponentFixture<DatatableFundReportingComponent>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  beforeEach(waitForAsync(() => {
 | 
				
			||||||
 | 
					    TestBed.configureTestingModule({
 | 
				
			||||||
 | 
					      declarations: [DatatableFundReportingComponent]
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					      .compileComponents();
 | 
				
			||||||
 | 
					  }));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  beforeEach(() => {
 | 
				
			||||||
 | 
					    fixture = TestBed.createComponent(DatatableFundReportingComponent);
 | 
				
			||||||
 | 
					    component = fixture.componentInstance;
 | 
				
			||||||
 | 
					    fixture.detectChanges();
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('should create', () => {
 | 
				
			||||||
 | 
					    expect(component).toBeTruthy();
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
@ -0,0 +1,445 @@
 | 
				
			|||||||
 | 
					import { Component, OnInit, ViewChild } from '@angular/core';
 | 
				
			||||||
 | 
					import { ActivatedRoute, Router } from '@angular/router';
 | 
				
			||||||
 | 
					import { STColumn, STComponent, STData } from '@delon/abc/st';
 | 
				
			||||||
 | 
					import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/form';
 | 
				
			||||||
 | 
					import { ShipperBaseService } from '@shared';
 | 
				
			||||||
 | 
					import { NzModalService } from 'ng-zorro-antd/modal';
 | 
				
			||||||
 | 
					import { ReportingService } from '../../services/reporting.service';
 | 
				
			||||||
 | 
					import { DatatableReportingUploadSettingComponent } from '../upload-setting/upload-setting.component';
 | 
				
			||||||
 | 
					import { DatatableReportingVerifyResultComponent } from '../verify-result/verify-result.component';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Component({
 | 
				
			||||||
 | 
					  selector: 'app-datatable-fund-reporting',
 | 
				
			||||||
 | 
					  templateUrl: './fund-reporting.component.html',
 | 
				
			||||||
 | 
					  styleUrls: ['./fund-reporting.component.less']
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					export class DatatableFundReportingComponent implements OnInit {
 | 
				
			||||||
 | 
					  _$expand = false;
 | 
				
			||||||
 | 
					  ui!: SFUISchema;
 | 
				
			||||||
 | 
					  schema!: SFSchema;
 | 
				
			||||||
 | 
					  columns!: STColumn[];
 | 
				
			||||||
 | 
					  @ViewChild('st', { static: false }) st!: STComponent;
 | 
				
			||||||
 | 
					  @ViewChild('sf', { static: false }) sf!: SFComponent;
 | 
				
			||||||
 | 
					  tabType!: string;
 | 
				
			||||||
 | 
					  tabs: any[] = [
 | 
				
			||||||
 | 
					    { name: '待上传', value: '1' },
 | 
				
			||||||
 | 
					    { name: '上传中', value: '2' },
 | 
				
			||||||
 | 
					    { name: '已上传', value: '3' },
 | 
				
			||||||
 | 
					    { name: '异常', value: '4' },
 | 
				
			||||||
 | 
					    { name: '全部', value: '' }
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					  selectedIndex = ''; //选择的项目
 | 
				
			||||||
 | 
					  serviceTel = '';
 | 
				
			||||||
 | 
					  constructor(
 | 
				
			||||||
 | 
					    public service: ReportingService,
 | 
				
			||||||
 | 
					    private router: Router,
 | 
				
			||||||
 | 
					    private ar: ActivatedRoute,
 | 
				
			||||||
 | 
					    private modal: NzModalService,
 | 
				
			||||||
 | 
					    public shipperSrv: ShipperBaseService
 | 
				
			||||||
 | 
					  ) {
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * 查询字段个数
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  get queryFieldCount(): number {
 | 
				
			||||||
 | 
					    return Object.keys(this.schema?.properties || {}).length;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * 查询参数
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  get reqParams() {
 | 
				
			||||||
 | 
					    const params = Object.assign({}, this.sf?.value || {}, {
 | 
				
			||||||
 | 
					      representationsStatus: this.selectedIndex,
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					    delete params._$expand;
 | 
				
			||||||
 | 
					    return { ...params };
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * 选中行
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  get selectedRows() {
 | 
				
			||||||
 | 
					    return this.st?.list.filter((item: any) => item.checked) || [];
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * 伸缩查询条件
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  expandToggle() {
 | 
				
			||||||
 | 
					    this._$expand = !this._$expand;
 | 
				
			||||||
 | 
					    this.sf?.setValue('/_$expand', this._$expand);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * 重置表单
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  resetSF() {
 | 
				
			||||||
 | 
					    this.sf.reset();
 | 
				
			||||||
 | 
					    this._$expand = false;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * 程序初始化入口
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  ngOnInit() {
 | 
				
			||||||
 | 
					    this.initSF();
 | 
				
			||||||
 | 
					    this.initST();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * 初始化查询表单
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  initSF() {
 | 
				
			||||||
 | 
					    this.schema = {
 | 
				
			||||||
 | 
					      properties: {
 | 
				
			||||||
 | 
					        _$expand: { type: 'boolean', ui: { hidden: true } },
 | 
				
			||||||
 | 
					        billCode: { title: '订单号', type: 'string', ui: { placeholder: '请输入' } },
 | 
				
			||||||
 | 
					        resourceCode: {
 | 
				
			||||||
 | 
					          type: 'string',
 | 
				
			||||||
 | 
					          title: '运单号',
 | 
				
			||||||
 | 
					          ui: {
 | 
				
			||||||
 | 
					            placeholder: '请输入',
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        enterpriseInfoId: {
 | 
				
			||||||
 | 
					          title: '网络货运人',
 | 
				
			||||||
 | 
					          type: 'string',
 | 
				
			||||||
 | 
					          ui: {
 | 
				
			||||||
 | 
					            placeholder: '请选择',
 | 
				
			||||||
 | 
					            widget: 'select',
 | 
				
			||||||
 | 
					            asyncData: () => this.shipperSrv.getNetworkFreightForwarder({}, false),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            allowClear: true
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        externalResourceCode: {
 | 
				
			||||||
 | 
					          title: '货主',
 | 
				
			||||||
 | 
					          type: 'string',
 | 
				
			||||||
 | 
					          ui: {
 | 
				
			||||||
 | 
					            placeholder: '请输入',
 | 
				
			||||||
 | 
					            visibleIf: {
 | 
				
			||||||
 | 
					              _$expand: (value: boolean) => value,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        driverName: {
 | 
				
			||||||
 | 
					          title: '承运司机',
 | 
				
			||||||
 | 
					          type: 'string',
 | 
				
			||||||
 | 
					          ui: {
 | 
				
			||||||
 | 
					            placeholder: '请输入司机姓名/手机号', visibleIf: {
 | 
				
			||||||
 | 
					              _$expand: (value: boolean) => value,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        carNo: {
 | 
				
			||||||
 | 
					          title: '车牌号',
 | 
				
			||||||
 | 
					          type: 'string',
 | 
				
			||||||
 | 
					          maxLength: 9,
 | 
				
			||||||
 | 
					          ui: {
 | 
				
			||||||
 | 
					            placeholder: '请输入',
 | 
				
			||||||
 | 
					            visibleIf: {
 | 
				
			||||||
 | 
					              _$expand: (value: boolean) => value,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        serviceType: {
 | 
				
			||||||
 | 
					          title: '上传状态',
 | 
				
			||||||
 | 
					          type: 'string',
 | 
				
			||||||
 | 
					          ui: {
 | 
				
			||||||
 | 
					            placeholder: '请选择',
 | 
				
			||||||
 | 
					            widget: 'dict-select',
 | 
				
			||||||
 | 
					            params: { dictKey: 'service:type' },
 | 
				
			||||||
 | 
					            containsAllLabel: true,
 | 
				
			||||||
 | 
					            visibleIf: {
 | 
				
			||||||
 | 
					              _$expand: (value: boolean) => value,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        serviceType1: {
 | 
				
			||||||
 | 
					          title: '本地校验',
 | 
				
			||||||
 | 
					          type: 'string',
 | 
				
			||||||
 | 
					          ui: {
 | 
				
			||||||
 | 
					            placeholder: '请选择',
 | 
				
			||||||
 | 
					            widget: 'dict-select',
 | 
				
			||||||
 | 
					            params: { dictKey: 'service:type' },
 | 
				
			||||||
 | 
					            containsAllLabel: true,
 | 
				
			||||||
 | 
					            visibleIf: {
 | 
				
			||||||
 | 
					              _$expand: (value: boolean) => value,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        createTime: {
 | 
				
			||||||
 | 
					          title: '上传时间',
 | 
				
			||||||
 | 
					          type: 'string',
 | 
				
			||||||
 | 
					          ui: {
 | 
				
			||||||
 | 
					            widget: 'sl-from-to',
 | 
				
			||||||
 | 
					            type: 'date',
 | 
				
			||||||
 | 
					            format: 'yyyy-MM-dd',
 | 
				
			||||||
 | 
					            visibleIf: {
 | 
				
			||||||
 | 
					              _$expand: (value: boolean) => value,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					          } as SFDateWidgetSchema,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        createTime1: {
 | 
				
			||||||
 | 
					          title: '运单生成时间',
 | 
				
			||||||
 | 
					          type: 'string',
 | 
				
			||||||
 | 
					          ui: {
 | 
				
			||||||
 | 
					            widget: 'sl-from-to',
 | 
				
			||||||
 | 
					            type: 'date',
 | 
				
			||||||
 | 
					            format: 'yyyy-MM-dd',
 | 
				
			||||||
 | 
					            visibleIf: {
 | 
				
			||||||
 | 
					              _$expand: (value: boolean) => value,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					          } as SFDateWidgetSchema,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        createTime2: {
 | 
				
			||||||
 | 
					          title: '发货时间',
 | 
				
			||||||
 | 
					          type: 'string',
 | 
				
			||||||
 | 
					          ui: {
 | 
				
			||||||
 | 
					            widget: 'sl-from-to',
 | 
				
			||||||
 | 
					            type: 'date',
 | 
				
			||||||
 | 
					            format: 'yyyy-MM-dd',
 | 
				
			||||||
 | 
					            visibleIf: {
 | 
				
			||||||
 | 
					              _$expand: (value: boolean) => value,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					          } as SFDateWidgetSchema,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        createTime3: {
 | 
				
			||||||
 | 
					          title: '收货时间',
 | 
				
			||||||
 | 
					          type: 'string',
 | 
				
			||||||
 | 
					          ui: {
 | 
				
			||||||
 | 
					            widget: 'sl-from-to',
 | 
				
			||||||
 | 
					            type: 'date',
 | 
				
			||||||
 | 
					            format: 'yyyy-MM-dd',
 | 
				
			||||||
 | 
					            visibleIf: {
 | 
				
			||||||
 | 
					              _$expand: (value: boolean) => value,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					          } as SFDateWidgetSchema,
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        loadingPlace: {
 | 
				
			||||||
 | 
					          title: '车辆轨迹',
 | 
				
			||||||
 | 
					          type: 'string',
 | 
				
			||||||
 | 
					          enum: [
 | 
				
			||||||
 | 
					            { label: '全部', value: '' },
 | 
				
			||||||
 | 
					            { label: '有', value: '1' },
 | 
				
			||||||
 | 
					            { label: '无', value: '0' }
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          ui: {
 | 
				
			||||||
 | 
					            placeholder: '请选择',
 | 
				
			||||||
 | 
					            widget: 'select',
 | 
				
			||||||
 | 
					            visibleIf: {
 | 
				
			||||||
 | 
					              _$expand: (value: boolean) => value,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        loadingPlace1: {
 | 
				
			||||||
 | 
					          title: '司机轨迹',
 | 
				
			||||||
 | 
					          type: 'string',
 | 
				
			||||||
 | 
					          enum: [
 | 
				
			||||||
 | 
					            { label: '全部', value: '' },
 | 
				
			||||||
 | 
					            { label: '有', value: '1' },
 | 
				
			||||||
 | 
					            { label: '无', value: '0' }
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          ui: {
 | 
				
			||||||
 | 
					            placeholder: '请选择',
 | 
				
			||||||
 | 
					            widget: 'select',
 | 
				
			||||||
 | 
					            visibleIf: {
 | 
				
			||||||
 | 
					              _$expand: (value: boolean) => value,
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    this.ui = {
 | 
				
			||||||
 | 
					      '*': { spanLabelFixed: 120, grid: { span: 8, gutter: 4 }, enter: () => this.search() },
 | 
				
			||||||
 | 
					      $time: { grid: { span: 24 } },
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * 初始化数据列表
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  initST() {
 | 
				
			||||||
 | 
					    this.columns = [
 | 
				
			||||||
 | 
					      { title: '', type: 'checkbox', className: 'text-center', width: '60px', },
 | 
				
			||||||
 | 
					      { title: '订单状态', render: 'orderStatus', className: 'text-center', width: '120px', },
 | 
				
			||||||
 | 
					      { title: '司机状态', render: 'driverStatus', className: 'text-center', width: '120px', },
 | 
				
			||||||
 | 
					      { title: '车辆状态', render: 'carStatus', className: 'text-center', width: '120px', },
 | 
				
			||||||
 | 
					      { title: '本地校验', render: 'localValid', className: 'text-center', width: '120px', },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        title: '订单号',
 | 
				
			||||||
 | 
					        render: 'billComplianceVOS',
 | 
				
			||||||
 | 
					        className: 'text-center',
 | 
				
			||||||
 | 
					        width: '150px',
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      { title: '运单号', render: 'freightDetails', className: 'text-center', width: '150px', },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        title: '网络货运人',
 | 
				
			||||||
 | 
					        render: 'serviceType',
 | 
				
			||||||
 | 
					        className: 'text-center',
 | 
				
			||||||
 | 
					        width: '180px',
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      { title: '统一社会信用代码', index: 'loadingPlace', render: 'loadingPlace', className: 'text-center', width: '200px' },
 | 
				
			||||||
 | 
					      { title: '业务类型', index: 'dischargePlace', render: 'dischargePlace', className: 'text-center', width: '120px' },
 | 
				
			||||||
 | 
					      { title: '运单生成时间', render: 'goodsInfoVOList', className: 'text-center', width: '180px' },
 | 
				
			||||||
 | 
					      { title: '发货时间', render: 'driver', className: 'text-center', width: '180px' },
 | 
				
			||||||
 | 
					      { title: '收货时间', render: 'payeeName', className: 'text-center', width: '180px' },
 | 
				
			||||||
 | 
					      { title: '托运人名称', render: 'transportInfo', className: 'text-center', width: '250px' },
 | 
				
			||||||
 | 
					      { title: '托运人统一社会信用代码', index: 'loadingPlace', render: 'loadingPlace', className: 'text-center', width: '200px' },
 | 
				
			||||||
 | 
					      { title: '装货地址', index: 'dischargePlace', render: 'dischargePlace', className: 'text-center', width: '200px' },
 | 
				
			||||||
 | 
					      { title: '收货方名称', render: 'driver', className: 'text-center', width: '150px' },
 | 
				
			||||||
 | 
					      { title: '收货地址', render: 'payeeName', className: 'text-center', width: '150px' },
 | 
				
			||||||
 | 
					      { title: '运费金额', render: 'amount', className: 'text-center', width: '250px' },
 | 
				
			||||||
 | 
					      { title: '车牌号', render: 'payeeName', className: 'text-center', width: '150px' },
 | 
				
			||||||
 | 
					      { title: '车牌颜色', render: 'transportInfo', className: 'text-center', width: '250px' },
 | 
				
			||||||
 | 
					      { title: '司机姓名', render: 'payeeName', className: 'text-center', width: '150px' },
 | 
				
			||||||
 | 
					      { title: '司机手机号码', render: 'transportInfo', className: 'text-center', width: '200px' },
 | 
				
			||||||
 | 
					      { title: '司机身份证号', render: 'payeeName', className: 'text-center', width: '150px' },
 | 
				
			||||||
 | 
					      { title: '货物信息', render: 'transportInfo', className: 'text-center', width: '180px' },
 | 
				
			||||||
 | 
					      { title: '实际承运人名称', render: 'payeeName', className: 'text-center', width: '150px' },
 | 
				
			||||||
 | 
					      { title: '实际承运人证件号码', render: 'transportInfo', className: 'text-center', width: '200px' },
 | 
				
			||||||
 | 
					      { title: '实际承运人道路运输许可证号', render: 'payeeName', className: 'text-center', width: '150px' },
 | 
				
			||||||
 | 
					      { title: '车辆轨迹', render: 'transportInfo', className: 'text-center', width: '250px' },
 | 
				
			||||||
 | 
					      { title: '司机轨迹', render: 'payeeName', className: 'text-center', width: '150px' },
 | 
				
			||||||
 | 
					      { title: '上传次数', render: 'transportInfo', className: 'text-center', width: '150px' },
 | 
				
			||||||
 | 
					      { title: '上传时间', render: 'transportInfo', className: 'text-center', width: '180px' },
 | 
				
			||||||
 | 
					    ];
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   *撤销
 | 
				
			||||||
 | 
					   * @param record 记录实例
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  recall() {
 | 
				
			||||||
 | 
					    if (this.selectedRows.length === 0) {
 | 
				
			||||||
 | 
					      this.openWainingModal('请选择需要撤回的数据');
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    this.service.request(this.service.$api_recall_reporting, { rows: this.selectedRows }).subscribe((res: any) => {
 | 
				
			||||||
 | 
					      if (res) {
 | 
				
			||||||
 | 
					        this.search();
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  selectChange(item: any) {
 | 
				
			||||||
 | 
					    this.selectedIndex = item?.representationsStatus || '';
 | 
				
			||||||
 | 
					    setTimeout(() => {
 | 
				
			||||||
 | 
					      this.st.load(1);
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * 查看当行数据
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  view(record: STData) {
 | 
				
			||||||
 | 
					    // this.router.navigate(['../view', record.uuid], { relativeTo: this.ar });
 | 
				
			||||||
 | 
					    this.router.navigate(['../detail'], {
 | 
				
			||||||
 | 
					      queryParams: {
 | 
				
			||||||
 | 
					        id: record.id,
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      relativeTo: this.ar
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // appeal(item: any) {
 | 
				
			||||||
 | 
					  //   const modalRef = this.modal.create({
 | 
				
			||||||
 | 
					  //     nzTitle: '申诉',
 | 
				
			||||||
 | 
					  //     nzWidth: '40%',
 | 
				
			||||||
 | 
					  //     nzContent: CtcAppealComponent,
 | 
				
			||||||
 | 
					  //     nzComponentParams: {
 | 
				
			||||||
 | 
					  //       i: item,
 | 
				
			||||||
 | 
					  //       status: 'add'
 | 
				
			||||||
 | 
					  //     },
 | 
				
			||||||
 | 
					  //     nzFooter: null
 | 
				
			||||||
 | 
					  //   });
 | 
				
			||||||
 | 
					  //   modalRef.afterClose.subscribe(res => {
 | 
				
			||||||
 | 
					  //     if (res) {
 | 
				
			||||||
 | 
					  //       this.search({ representationsStatus: '' });
 | 
				
			||||||
 | 
					  //     }
 | 
				
			||||||
 | 
					  //   })
 | 
				
			||||||
 | 
					  // }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * 上传
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  upload() {
 | 
				
			||||||
 | 
					    if (this.selectedRows.length === 0) {
 | 
				
			||||||
 | 
					      this.openWainingModal('请选择需要上传的数据');
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @param params 上传设置
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  uploadSetting() {
 | 
				
			||||||
 | 
					    const modalRef = this.modal.create({
 | 
				
			||||||
 | 
					      nzTitle: '上传设置',
 | 
				
			||||||
 | 
					      nzWidth: 600,
 | 
				
			||||||
 | 
					      nzContent: DatatableReportingUploadSettingComponent,
 | 
				
			||||||
 | 
					      nzComponentParams: {},
 | 
				
			||||||
 | 
					      nzFooter: null
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					    modalRef.afterClose.subscribe(res => {
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * 查看校验结果
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  viewResult(item: any) {
 | 
				
			||||||
 | 
					    const modalRef = this.modal.create({
 | 
				
			||||||
 | 
					      nzTitle: '校验结果',
 | 
				
			||||||
 | 
					      nzWidth: 1200,
 | 
				
			||||||
 | 
					      nzContent: DatatableReportingVerifyResultComponent,
 | 
				
			||||||
 | 
					      nzComponentParams: {
 | 
				
			||||||
 | 
					        record: item
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      nzFooter: null
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					    modalRef.afterClose.subscribe(res => {
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * 查看监管审核结果
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  viewAuditResult(record: any) {
 | 
				
			||||||
 | 
					    if (record?.billStatus !== '2') {
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    this.openWainingModal('监管审核结果', record?.result)
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  search() {
 | 
				
			||||||
 | 
					    this.st.load(1);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					  * 异步导出
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					  export() {
 | 
				
			||||||
 | 
					    this.service.exportStart(this.sf?.value, this.service.$api_async_export_order_reporting_list);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  openWainingModal(content: string, title = '提示') {
 | 
				
			||||||
 | 
					    this.modal.warning({
 | 
				
			||||||
 | 
					      nzMask: false,
 | 
				
			||||||
 | 
					      nzTitle: title,
 | 
				
			||||||
 | 
					      nzContent: content,
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -29,57 +29,29 @@
 | 
				
			|||||||
    [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
 | 
					    [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
 | 
				
			||||||
    [res]="{ reName: { list: 'data.records', total: 'data.total' } }"
 | 
					    [res]="{ reName: { list: 'data.records', total: 'data.total' } }"
 | 
				
			||||||
    [page]="{ show: true, showSize: true, pageSizes: [10,20, 50, 100] }" [loading]="false">
 | 
					    [page]="{ show: true, showSize: true, pageSizes: [10,20, 50, 100] }" [loading]="false">
 | 
				
			||||||
    <ng-template st-row="orderSn" let-item let-index="index">
 | 
					    <ng-template st-row="orderStatus" let-item let-index="index">
 | 
				
			||||||
      <a (click)="view(item)">{{item.billCode}}</a>
 | 
					      <a (click)="viewAuditResult(item)" *ngIf="item?.billStatus === '2'">{{item?.billStatusLabel}}</a>
 | 
				
			||||||
 | 
					      <span *ngIf="item?.billStatus !== '2'">{{item?.billStatusLabel}}</span>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    </ng-template>
 | 
					    </ng-template>
 | 
				
			||||||
    <ng-template st-row="freightDetails" let-item>
 | 
					
 | 
				
			||||||
      <div *ngFor="let item of item.freightDetails">
 | 
					    <ng-template st-row="localValid" let-item let-index="index">
 | 
				
			||||||
        <div>{{item.expenseName}}:{{item.price | currency}} </div>
 | 
					      <a (click)="viewResult(item)" *ngIf="item?.billStatus === '2'">{{item?.billStatusLabel}}</a>
 | 
				
			||||||
      </div>
 | 
					      <span *ngIf="item?.billStatus !== '2'">{{item?.billStatusLabel}}</span>
 | 
				
			||||||
    </ng-template>
 | 
					    </ng-template>
 | 
				
			||||||
    <ng-template st-row="loadingPlace" let-item let-index="index">
 | 
					    <ng-template st-row="amount" let-item let-index="index">
 | 
				
			||||||
      <div *ngFor="let address of item.loadingAddressArr">{{ address }} </div>
 | 
					      <div class="text-right">{{item?.amount | currency :' '}}</div>
 | 
				
			||||||
    </ng-template>
 | 
					 | 
				
			||||||
    <ng-template st-row="dischargePlace" let-item let-index="index">
 | 
					 | 
				
			||||||
      <div *ngFor="let address of item.unloadingAddressArr">{{ address }}</div>
 | 
					 | 
				
			||||||
    </ng-template>
 | 
					 | 
				
			||||||
    <ng-template st-row="goodsInfoVOList" let-item>
 | 
					 | 
				
			||||||
      <div *ngFor="let item of item.goodsInfoVOList">
 | 
					 | 
				
			||||||
        <div>货物名称 : {{item.goodsName}}</div>
 | 
					 | 
				
			||||||
        <div>重量/体积 : {{item.weight}}/{{item.volume}}</div>
 | 
					 | 
				
			||||||
        <div>车型/车长 :{{item.carModelLabel}}/{{item.carLengthLabel}}</div>
 | 
					 | 
				
			||||||
      </div>
 | 
					 | 
				
			||||||
    </ng-template>
 | 
					 | 
				
			||||||
    <ng-template st-row="driver" let-item>
 | 
					 | 
				
			||||||
      <div> {{item.driverName}}</div>
 | 
					 | 
				
			||||||
      <div>{{item.driverPhone}}</div>
 | 
					 | 
				
			||||||
      <div>{{item.carNo}}</div>
 | 
					 | 
				
			||||||
    </ng-template>
 | 
					 | 
				
			||||||
    <ng-template st-row="payeeName" let-item>
 | 
					 | 
				
			||||||
      <div>{{item.payeeName}}</div>
 | 
					 | 
				
			||||||
      <div>{{item.payeePhone}}</div>
 | 
					 | 
				
			||||||
    </ng-template>
 | 
					 | 
				
			||||||
    <ng-template st-row="transportInfo" let-item>
 | 
					 | 
				
			||||||
      <div>创建时间:{{item.createTime}}</div>
 | 
					 | 
				
			||||||
      <div>装货时间:{{item.loadTime}}</div>
 | 
					 | 
				
			||||||
      <div>卸货时间:{{item.unloadTime}}</div>
 | 
					 | 
				
			||||||
    </ng-template>
 | 
					 | 
				
			||||||
    <ng-template st-row="billComplianceVOS" let-item>
 | 
					 | 
				
			||||||
      <div *ngFor="let item of item?.billComplianceVOS">{{item?.complianceName}}</div>
 | 
					 | 
				
			||||||
    </ng-template>
 | 
					 | 
				
			||||||
    <ng-template st-row="serviceType" let-item>
 | 
					 | 
				
			||||||
      <div>{{item?.billTypeLabel}} ({{item?.serviceTypeLabel}}) </div>
 | 
					 | 
				
			||||||
    </ng-template>
 | 
					    </ng-template>
 | 
				
			||||||
  </st>
 | 
					  </st>
 | 
				
			||||||
</nz-card>
 | 
					</nz-card>
 | 
				
			||||||
<ng-template #extraTemplate>
 | 
					<ng-template #extraTemplate>
 | 
				
			||||||
  <div class="d-flex align-items-center ">
 | 
					  <div class="d-flex align-items-center">
 | 
				
			||||||
    <div class="mr-md">
 | 
					    <div class="mr-md">
 | 
				
			||||||
      已选择
 | 
					      已选择
 | 
				
			||||||
      <strong class="text-red">{{ selectedRows.length }}</strong> 条数据
 | 
					      <strong class="text-red">{{ selectedRows.length }}</strong> 条数据
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
    <button nz-button nzType="primary" (click)="upload()">上传</button>
 | 
					    <button nz-button nzType="primary" (click)="upload()">上传</button>
 | 
				
			||||||
    <button nz-button nzType="primary" (click)="recall({})">撤回</button>
 | 
					    <button nz-button nzType="primary" (click)="recall()">撤回</button>
 | 
				
			||||||
    <button nz-button nzType="primary" (click)="uploadSetting()">上传设置</button>
 | 
					    <button nz-button nzType="primary" (click)="uploadSetting()">上传设置</button>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</ng-template>
 | 
					</ng-template>
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					:host {
 | 
				
			||||||
 | 
					  .text-black {
 | 
				
			||||||
 | 
					    color: #000;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1,15 +1,17 @@
 | 
				
			|||||||
import { Component, OnInit, ViewChild } from '@angular/core';
 | 
					import { Component, OnInit, ViewChild } from '@angular/core';
 | 
				
			||||||
import { Router, ActivatedRoute } from '@angular/router';
 | 
					import { ActivatedRoute, Router } from '@angular/router';
 | 
				
			||||||
import { STColumn, STComponent, STData } from '@delon/abc/st';
 | 
					import { STColumn, STComponent, STData } from '@delon/abc/st';
 | 
				
			||||||
import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/form';
 | 
					import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/form';
 | 
				
			||||||
import { ModalHelper, _HttpClient } from '@delon/theme';
 | 
					 | 
				
			||||||
import { ShipperBaseService } from '@shared';
 | 
					import { ShipperBaseService } from '@shared';
 | 
				
			||||||
import { NzModalService } from 'ng-zorro-antd/modal';
 | 
					import { NzModalService } from 'ng-zorro-antd/modal';
 | 
				
			||||||
import { ReportingService } from '../../services/reporting.service';
 | 
					import { ReportingService } from '../../services/reporting.service';
 | 
				
			||||||
 | 
					import { DatatableReportingUploadSettingComponent } from '../upload-setting/upload-setting.component';
 | 
				
			||||||
 | 
					import { DatatableReportingVerifyResultComponent } from '../verify-result/verify-result.component';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Component({
 | 
					@Component({
 | 
				
			||||||
  selector: 'app-datatable-order-reporting',
 | 
					  selector: 'app-datatable-order-reporting',
 | 
				
			||||||
  templateUrl: './order-reporting.component.html',
 | 
					  templateUrl: './order-reporting.component.html',
 | 
				
			||||||
 | 
					  styleUrls: ['./order-reporting.component.less']
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
export class DatatableOrderReportingComponent implements OnInit {
 | 
					export class DatatableOrderReportingComponent implements OnInit {
 | 
				
			||||||
  _$expand = false;
 | 
					  _$expand = false;
 | 
				
			||||||
@ -226,7 +228,7 @@ export class DatatableOrderReportingComponent implements OnInit {
 | 
				
			|||||||
          ],
 | 
					          ],
 | 
				
			||||||
          ui: {
 | 
					          ui: {
 | 
				
			||||||
            placeholder: '请选择',
 | 
					            placeholder: '请选择',
 | 
				
			||||||
 | 
					            widget: 'select',
 | 
				
			||||||
            visibleIf: {
 | 
					            visibleIf: {
 | 
				
			||||||
              _$expand: (value: boolean) => value,
 | 
					              _$expand: (value: boolean) => value,
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
@ -242,7 +244,7 @@ export class DatatableOrderReportingComponent implements OnInit {
 | 
				
			|||||||
          ],
 | 
					          ],
 | 
				
			||||||
          ui: {
 | 
					          ui: {
 | 
				
			||||||
            placeholder: '请选择',
 | 
					            placeholder: '请选择',
 | 
				
			||||||
 | 
					            widget: 'select',
 | 
				
			||||||
            visibleIf: {
 | 
					            visibleIf: {
 | 
				
			||||||
              _$expand: (value: boolean) => value,
 | 
					              _$expand: (value: boolean) => value,
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
@ -261,11 +263,11 @@ export class DatatableOrderReportingComponent implements OnInit {
 | 
				
			|||||||
   */
 | 
					   */
 | 
				
			||||||
  initST() {
 | 
					  initST() {
 | 
				
			||||||
    this.columns = [
 | 
					    this.columns = [
 | 
				
			||||||
      { title: '', type: 'checkbox', className: 'text-center', width: '80px', },
 | 
					      { title: '', type: 'checkbox', className: 'text-center', width: '60px', },
 | 
				
			||||||
      { title: '订单状态', index: 'name', className: 'text-center', width: '120px', },
 | 
					      { title: '订单状态', render: 'orderStatus', className: 'text-center', width: '120px', },
 | 
				
			||||||
      { title: '司机状态', index: 'name', className: 'text-center', width: '120px', },
 | 
					      { title: '司机状态', render: 'driverStatus', className: 'text-center', width: '120px', },
 | 
				
			||||||
      { title: '车辆状态', index: 'name', className: 'text-center', width: '120px', },
 | 
					      { title: '车辆状态', render: 'carStatus', className: 'text-center', width: '120px', },
 | 
				
			||||||
      { title: '本地校验', render: 'orderSn', className: 'text-center', width: '180px', },
 | 
					      { title: '本地校验', render: 'localValid', className: 'text-center', width: '120px', },
 | 
				
			||||||
      {
 | 
					      {
 | 
				
			||||||
        title: '订单号',
 | 
					        title: '订单号',
 | 
				
			||||||
        render: 'billComplianceVOS',
 | 
					        render: 'billComplianceVOS',
 | 
				
			||||||
@ -278,71 +280,50 @@ export class DatatableOrderReportingComponent implements OnInit {
 | 
				
			|||||||
        title: '网络货运人',
 | 
					        title: '网络货运人',
 | 
				
			||||||
        render: 'serviceType',
 | 
					        render: 'serviceType',
 | 
				
			||||||
        className: 'text-center',
 | 
					        className: 'text-center',
 | 
				
			||||||
        width: '120px',
 | 
					        width: '180px',
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      { title: '统一社会信用代码', index: 'loadingPlace', render: 'loadingPlace', className: 'text-center', width: '300px' },
 | 
					      { title: '统一社会信用代码', index: 'loadingPlace', render: 'loadingPlace', className: 'text-center', width: '200px' },
 | 
				
			||||||
      { title: '业务类型', index: 'dischargePlace', render: 'dischargePlace', className: 'text-center', width: '300px' },
 | 
					      { title: '业务类型', index: 'dischargePlace', render: 'dischargePlace', className: 'text-center', width: '120px' },
 | 
				
			||||||
      { title: '运单生成时间', render: 'goodsInfoVOList', className: 'text-center', width: '200px' },
 | 
					      { title: '运单生成时间', render: 'goodsInfoVOList', className: 'text-center', width: '180px' },
 | 
				
			||||||
      { title: '发货时间', render: 'driver', className: 'text-center', width: '150px' },
 | 
					      { title: '发货时间', render: 'driver', className: 'text-center', width: '180px' },
 | 
				
			||||||
      { title: '收货时间', render: 'payeeName', className: 'text-center', width: '150px' },
 | 
					      { title: '收货时间', render: 'payeeName', className: 'text-center', width: '180px' },
 | 
				
			||||||
      { title: '托运人名称', render: 'transportInfo', className: 'text-center', width: '250px' },
 | 
					      { title: '托运人名称', render: 'transportInfo', className: 'text-center', width: '250px' },
 | 
				
			||||||
      { title: '托运人统一社会信用代码', index: 'loadingPlace', render: 'loadingPlace', className: 'text-center', width: '300px' },
 | 
					      { title: '托运人统一社会信用代码', index: 'loadingPlace', render: 'loadingPlace', className: 'text-center', width: '200px' },
 | 
				
			||||||
      { title: '装货地址', index: 'dischargePlace', render: 'dischargePlace', className: 'text-center', width: '300px' },
 | 
					      { title: '装货地址', index: 'dischargePlace', render: 'dischargePlace', className: 'text-center', width: '200px' },
 | 
				
			||||||
      { title: '运单生成时间', render: 'goodsInfoVOList', className: 'text-center', width: '200px' },
 | 
					 | 
				
			||||||
      { title: '收货方名称', render: 'driver', className: 'text-center', width: '150px' },
 | 
					      { title: '收货方名称', render: 'driver', className: 'text-center', width: '150px' },
 | 
				
			||||||
      { title: '收货地址', render: 'payeeName', className: 'text-center', width: '150px' },
 | 
					      { title: '收货地址', render: 'payeeName', className: 'text-center', width: '150px' },
 | 
				
			||||||
      { title: '运费金额', render: 'transportInfo', className: 'text-center', width: '250px' },
 | 
					      { title: '运费金额', render: 'amount', className: 'text-center', width: '250px' },
 | 
				
			||||||
      { title: '车牌号', render: 'payeeName', className: 'text-center', width: '150px' },
 | 
					      { title: '车牌号', render: 'payeeName', className: 'text-center', width: '150px' },
 | 
				
			||||||
      { title: '车牌颜色', render: 'transportInfo', className: 'text-center', width: '250px' },
 | 
					      { title: '车牌颜色', render: 'transportInfo', className: 'text-center', width: '250px' },
 | 
				
			||||||
      { title: '司机姓名', render: 'payeeName', className: 'text-center', width: '150px' },
 | 
					      { title: '司机姓名', render: 'payeeName', className: 'text-center', width: '150px' },
 | 
				
			||||||
      { title: '司机手机号码', render: 'transportInfo', className: 'text-center', width: '250px' },
 | 
					      { title: '司机手机号码', render: 'transportInfo', className: 'text-center', width: '200px' },
 | 
				
			||||||
      { title: '司机身份证号', render: 'payeeName', className: 'text-center', width: '150px' },
 | 
					      { title: '司机身份证号', render: 'payeeName', className: 'text-center', width: '150px' },
 | 
				
			||||||
      { title: '货物信息', render: 'transportInfo', className: 'text-center', width: '250px' },
 | 
					      { title: '货物信息', render: 'transportInfo', className: 'text-center', width: '180px' },
 | 
				
			||||||
      { title: '实际承运人名称', render: 'payeeName', className: 'text-center', width: '150px' },
 | 
					      { title: '实际承运人名称', render: 'payeeName', className: 'text-center', width: '150px' },
 | 
				
			||||||
      { title: '实际承运人证件号码', render: 'transportInfo', className: 'text-center', width: '250px' },
 | 
					      { title: '实际承运人证件号码', render: 'transportInfo', className: 'text-center', width: '200px' },
 | 
				
			||||||
      { title: '实际承运人道路运输许可证号', render: 'payeeName', className: 'text-center', width: '150px' },
 | 
					      { title: '实际承运人道路运输许可证号', render: 'payeeName', className: 'text-center', width: '150px' },
 | 
				
			||||||
      { title: '车辆轨迹', render: 'transportInfo', className: 'text-center', width: '250px' },
 | 
					      { title: '车辆轨迹', render: 'transportInfo', className: 'text-center', width: '250px' },
 | 
				
			||||||
      { title: '司机轨迹', render: 'payeeName', className: 'text-center', width: '150px' },
 | 
					      { title: '司机轨迹', render: 'payeeName', className: 'text-center', width: '150px' },
 | 
				
			||||||
      { title: '上传次数', render: 'transportInfo', className: 'text-center', width: '250px' },
 | 
					      { title: '上传次数', render: 'transportInfo', className: 'text-center', width: '150px' },
 | 
				
			||||||
      { title: '上传时间', render: 'transportInfo', className: 'text-center', width: '250px' },
 | 
					      { title: '上传时间', render: 'transportInfo', className: 'text-center', width: '180px' },
 | 
				
			||||||
      {
 | 
					 | 
				
			||||||
        title: '操作',
 | 
					 | 
				
			||||||
        width: '200px',
 | 
					 | 
				
			||||||
        className: 'text-center',
 | 
					 | 
				
			||||||
        buttons: [
 | 
					 | 
				
			||||||
          // { text: '编辑', click: (_record: any) => this.appeal(_record) },
 | 
					 | 
				
			||||||
          {
 | 
					 | 
				
			||||||
            text: '申诉',
 | 
					 | 
				
			||||||
            // click: (record) => this.appeal(record),
 | 
					 | 
				
			||||||
            iif: (_record) => _record.representationsStatus === '1',
 | 
					 | 
				
			||||||
            acl: { 'ability': ['RiskOrder-Appeal'] }
 | 
					 | 
				
			||||||
          },
 | 
					 | 
				
			||||||
          {
 | 
					 | 
				
			||||||
            text: '撤销申诉',
 | 
					 | 
				
			||||||
            pop: {
 | 
					 | 
				
			||||||
              title: '是否确定立即撤销申诉?',
 | 
					 | 
				
			||||||
              okType: 'danger',
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            click: (record) => this.recall(record),
 | 
					 | 
				
			||||||
            iif: (_record) => _record.representationsStatus === '2',
 | 
					 | 
				
			||||||
            acl: { 'ability': ['RiskOrder-CancleAppeal'] }
 | 
					 | 
				
			||||||
          },
 | 
					 | 
				
			||||||
          { text: '详情', click: (_record: any) => this.view(_record), acl: { 'ability': ['RiskOrder-Detail'] } },
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * 删除单个实例
 | 
					   *撤销
 | 
				
			||||||
   * @param record 记录实例
 | 
					   * @param record 记录实例
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  recall(record: STData) {
 | 
					  recall() {
 | 
				
			||||||
    this.service.request(this.service.$api_recall_reporting, { id: record?.id }).subscribe((res: any) => {
 | 
					    if (this.selectedRows.length === 0) {
 | 
				
			||||||
 | 
					      this.openWainingModal('请选择需要撤回的数据');
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    this.service.request(this.service.$api_recall_reporting, { rows: this.selectedRows }).subscribe((res: any) => {
 | 
				
			||||||
      if (res) {
 | 
					      if (res) {
 | 
				
			||||||
        this.search({ representationsStatus: '' });
 | 
					        this.search();
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -390,7 +371,10 @@ export class DatatableOrderReportingComponent implements OnInit {
 | 
				
			|||||||
   * 上传
 | 
					   * 上传
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  upload() {
 | 
					  upload() {
 | 
				
			||||||
 | 
					    if (this.selectedRows.length === 0) {
 | 
				
			||||||
 | 
					      this.openWainingModal('请选择需要上传的数据');
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -399,10 +383,46 @@ export class DatatableOrderReportingComponent implements OnInit {
 | 
				
			|||||||
   * @param params 上传设置
 | 
					   * @param params 上传设置
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  uploadSetting() {
 | 
					  uploadSetting() {
 | 
				
			||||||
 | 
					    const modalRef = this.modal.create({
 | 
				
			||||||
 | 
					      nzTitle: '上传设置',
 | 
				
			||||||
 | 
					      nzWidth: 600,
 | 
				
			||||||
 | 
					      nzContent: DatatableReportingUploadSettingComponent,
 | 
				
			||||||
 | 
					      nzComponentParams: {},
 | 
				
			||||||
 | 
					      nzFooter: null
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					    modalRef.afterClose.subscribe(res => {
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  search(params = {}) {
 | 
					  /**
 | 
				
			||||||
 | 
					   * 查看校验结果
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  viewResult(item: any) {
 | 
				
			||||||
 | 
					    const modalRef = this.modal.create({
 | 
				
			||||||
 | 
					      nzTitle: '校验结果',
 | 
				
			||||||
 | 
					      nzWidth: 1200,
 | 
				
			||||||
 | 
					      nzContent: DatatableReportingVerifyResultComponent,
 | 
				
			||||||
 | 
					      nzComponentParams: {
 | 
				
			||||||
 | 
					        record: item
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      nzFooter: null
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					    modalRef.afterClose.subscribe(res => {
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * 查看监管审核结果
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  viewAuditResult(record: any) {
 | 
				
			||||||
 | 
					    if (record?.billStatus !== '2') {
 | 
				
			||||||
 | 
					      return;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    this.openWainingModal('监管审核结果', record?.result)
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  search() {
 | 
				
			||||||
    this.st.load(1);
 | 
					    this.st.load(1);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -413,4 +433,13 @@ export class DatatableOrderReportingComponent implements OnInit {
 | 
				
			|||||||
    this.service.exportStart(this.sf?.value, this.service.$api_async_export_order_reporting_list);
 | 
					    this.service.exportStart(this.sf?.value, this.service.$api_async_export_order_reporting_list);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  openWainingModal(content: string, title = '提示') {
 | 
				
			||||||
 | 
					    this.modal.warning({
 | 
				
			||||||
 | 
					      nzMask: false,
 | 
				
			||||||
 | 
					      nzTitle: title,
 | 
				
			||||||
 | 
					      nzContent: content,
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					<nz-spin [nzSpinning]="!i"></nz-spin>
 | 
				
			||||||
 | 
					<sf *ngIf="i" #sf mode="edit" [schema]="schema" [ui]="ui" [formData]="i" button="none">
 | 
				
			||||||
 | 
					  <div class="modal-footer">
 | 
				
			||||||
 | 
					    <button nz-button type="button" (click)="close()">取消</button>
 | 
				
			||||||
 | 
					    <button nz-button type="submit" nzType="primary" (click)="save(sf.value)" [disabled]="!sf.valid"
 | 
				
			||||||
 | 
					      [nzLoading]="service.http.loading">修改</button>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</sf>
 | 
				
			||||||
@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
 | 
				
			||||||
 | 
					import { DatatableReportingUploadSettingComponent } from './upload-setting.component';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					describe('DatatableReportingUploadSettingComponent', () => {
 | 
				
			||||||
 | 
					  let component: DatatableReportingUploadSettingComponent;
 | 
				
			||||||
 | 
					  let fixture: ComponentFixture<DatatableReportingUploadSettingComponent>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  beforeEach(waitForAsync(() => {
 | 
				
			||||||
 | 
					    TestBed.configureTestingModule({
 | 
				
			||||||
 | 
					      declarations: [DatatableReportingUploadSettingComponent]
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					      .compileComponents();
 | 
				
			||||||
 | 
					  }));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  beforeEach(() => {
 | 
				
			||||||
 | 
					    fixture = TestBed.createComponent(DatatableReportingUploadSettingComponent);
 | 
				
			||||||
 | 
					    component = fixture.componentInstance;
 | 
				
			||||||
 | 
					    fixture.detectChanges();
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('should create', () => {
 | 
				
			||||||
 | 
					    expect(component).toBeTruthy();
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
@ -0,0 +1,109 @@
 | 
				
			|||||||
 | 
					import { Component, OnInit } from '@angular/core';
 | 
				
			||||||
 | 
					import { SFSchema, SFUISchema } from '@delon/form';
 | 
				
			||||||
 | 
					import { NzModalRef } from 'ng-zorro-antd/modal';
 | 
				
			||||||
 | 
					import { ReportingService } from '../../services/reporting.service';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Component({
 | 
				
			||||||
 | 
					  selector: 'app-datatable-upload-setting',
 | 
				
			||||||
 | 
					  templateUrl: './upload-setting.component.html',
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					export class DatatableReportingUploadSettingComponent implements OnInit {
 | 
				
			||||||
 | 
					  record: any = {};
 | 
				
			||||||
 | 
					  i: any = {};
 | 
				
			||||||
 | 
					  schema!: SFSchema;
 | 
				
			||||||
 | 
					  ui!: SFUISchema;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  constructor(
 | 
				
			||||||
 | 
					    private modal: NzModalRef,
 | 
				
			||||||
 | 
					    public service: ReportingService
 | 
				
			||||||
 | 
					  ) { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ngOnInit(): void {
 | 
				
			||||||
 | 
					    this.initSF();
 | 
				
			||||||
 | 
					    // this.loadData();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					 * 初始化查询表单
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					  initSF() {
 | 
				
			||||||
 | 
					    this.schema = {
 | 
				
			||||||
 | 
					      properties: {
 | 
				
			||||||
 | 
					        no: {
 | 
				
			||||||
 | 
					          type: 'string',
 | 
				
			||||||
 | 
					          title: '订单数据',
 | 
				
			||||||
 | 
					          enum: [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              label: '手动上传',
 | 
				
			||||||
 | 
					              value: '1'
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              label: '自动上传',
 | 
				
			||||||
 | 
					              value: '2'
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          description: '开启自动上传后,订单将在支付完成且风险单校验通过后自动上传',
 | 
				
			||||||
 | 
					          ui: {
 | 
				
			||||||
 | 
					            widget: 'radio',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        owner: {
 | 
				
			||||||
 | 
					          type: 'string',
 | 
				
			||||||
 | 
					          title: '资金数据',
 | 
				
			||||||
 | 
					          enum: [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              label: '手动上传',
 | 
				
			||||||
 | 
					              value: '1'
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              label: '自动上传',
 | 
				
			||||||
 | 
					              value: '2'
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					          description: '开启自动上传后,订单将在支付完成且风险单校验通过后自动上传',
 | 
				
			||||||
 | 
					          ui: {
 | 
				
			||||||
 | 
					            widget: 'radio',
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      required: ['owner', 'no'],
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    this.ui = {
 | 
				
			||||||
 | 
					      '*': {
 | 
				
			||||||
 | 
					        spanLabelFixed: 100,
 | 
				
			||||||
 | 
					        grid: { span: 24 },
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * 获取设置数据
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  loadData() {
 | 
				
			||||||
 | 
					    this.service.request(this.service.$api_get_upload_setting, {}).subscribe(res => {
 | 
				
			||||||
 | 
					      if (res) {
 | 
				
			||||||
 | 
					        this.i = res;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * 修改
 | 
				
			||||||
 | 
					   * @param value
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  save(value: any): void {
 | 
				
			||||||
 | 
					    this.service.request(this.service.$api_upload_setting_save, { ...value }).subscribe(res => {
 | 
				
			||||||
 | 
					      if (res) {
 | 
				
			||||||
 | 
					        this.service.msgSrv.success('保存成功');
 | 
				
			||||||
 | 
					        this.modal.close(true);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  close(): void {
 | 
				
			||||||
 | 
					    this.modal.destroy();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,22 @@
 | 
				
			|||||||
 | 
					<div nz-row>
 | 
				
			||||||
 | 
					  <div style="width: 10%;">
 | 
				
			||||||
 | 
					    <nz-tabset [nzTabPosition]="'left'" style="height: 100%;">
 | 
				
			||||||
 | 
					      <nz-tab [nzTitle]="item?.name" *ngFor="let item of tabs" (nzSelect)="selectTab(item)"></nz-tab>
 | 
				
			||||||
 | 
					    </nz-tabset>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					  <div style="width: 90%;">
 | 
				
			||||||
 | 
					    <st #st [scroll]="{x:'1000px'}" [data]="service.$api_order_reporting_page" [columns]="columns"
 | 
				
			||||||
 | 
					      [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
 | 
				
			||||||
 | 
					      [res]="{ reName: { list: 'data.records', total: 'data.total' } }" [page]="{ show: false}" [loading]="false">
 | 
				
			||||||
 | 
					      <ng-template st-row="freightDetails" let-item>
 | 
				
			||||||
 | 
					        <div *ngFor="let item of item.freightDetails">
 | 
				
			||||||
 | 
					          <div>{{item.expenseName}}:{{item.price | currency}} </div>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </ng-template>
 | 
				
			||||||
 | 
					    </st>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					<div class="modal-footer">
 | 
				
			||||||
 | 
					  <button nz-button type="button" (click)="close()">取消</button>
 | 
				
			||||||
 | 
					  <button nz-button type="submit" nzType="primary" (click)="update()" [nzLoading]="service.http.loading">修改</button>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
 | 
				
			||||||
 | 
					import { DatatableReportingVerifyResultComponent } from './verify-result.component';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					describe('DatatableReportingVerifyResultComponent', () => {
 | 
				
			||||||
 | 
					  let component: DatatableReportingVerifyResultComponent;
 | 
				
			||||||
 | 
					  let fixture: ComponentFixture<DatatableReportingVerifyResultComponent>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  beforeEach(waitForAsync(() => {
 | 
				
			||||||
 | 
					    TestBed.configureTestingModule({
 | 
				
			||||||
 | 
					      declarations: [DatatableReportingVerifyResultComponent]
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					      .compileComponents();
 | 
				
			||||||
 | 
					  }));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  beforeEach(() => {
 | 
				
			||||||
 | 
					    fixture = TestBed.createComponent(DatatableReportingVerifyResultComponent);
 | 
				
			||||||
 | 
					    component = fixture.componentInstance;
 | 
				
			||||||
 | 
					    fixture.detectChanges();
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('should create', () => {
 | 
				
			||||||
 | 
					    expect(component).toBeTruthy();
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
@ -0,0 +1,85 @@
 | 
				
			|||||||
 | 
					import { Component, OnInit, ViewChild } from '@angular/core';
 | 
				
			||||||
 | 
					import { Router } from '@angular/router';
 | 
				
			||||||
 | 
					import { STColumn, STComponent } from '@delon/abc/st';
 | 
				
			||||||
 | 
					import { SFSchema } from '@delon/form';
 | 
				
			||||||
 | 
					import { ModalHelper, _HttpClient } from '@delon/theme';
 | 
				
			||||||
 | 
					import { NzModalRef } from 'ng-zorro-antd/modal';
 | 
				
			||||||
 | 
					import { ReportingService } from '../../services/reporting.service';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Component({
 | 
				
			||||||
 | 
					  selector: 'app-datatable-verify-result',
 | 
				
			||||||
 | 
					  templateUrl: './verify-result.component.html',
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					export class DatatableReportingVerifyResultComponent implements OnInit {
 | 
				
			||||||
 | 
					  url = `/user`;
 | 
				
			||||||
 | 
					  searchSchema: SFSchema = {
 | 
				
			||||||
 | 
					    properties: {
 | 
				
			||||||
 | 
					      no: {
 | 
				
			||||||
 | 
					        type: 'string',
 | 
				
			||||||
 | 
					        title: '编号'
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					  @ViewChild('st') private readonly st!: STComponent;
 | 
				
			||||||
 | 
					  columns: STColumn[] = [];
 | 
				
			||||||
 | 
					  record: any = {}
 | 
				
			||||||
 | 
					  tabs: any[] = [
 | 
				
			||||||
 | 
					    { name: '订单信息', value: '1' },
 | 
				
			||||||
 | 
					    { name: '司机信息', value: '2' },
 | 
				
			||||||
 | 
					    { name: '车辆信息', value: '3' },
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  get reqParams() {
 | 
				
			||||||
 | 
					    return {};
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  constructor(public service: ReportingService, private modalRef: NzModalRef, public router: Router) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ngOnInit(): void {
 | 
				
			||||||
 | 
					    this.initST();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					 * 初始化数据列表
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					  initST() {
 | 
				
			||||||
 | 
					    this.columns = [
 | 
				
			||||||
 | 
					      { title: '序号', type: 'no', className: 'text-center', width: '60px', },
 | 
				
			||||||
 | 
					      { title: '监管平台字段', index: 'orderStatus', className: 'text-center', width: '120px', },
 | 
				
			||||||
 | 
					      { title: '系统字段', index: 'orderStatus', className: 'text-center', width: '100px', },
 | 
				
			||||||
 | 
					      { title: '归属模块', index: 'orderStatus', className: 'text-center', width: '120px', },
 | 
				
			||||||
 | 
					      { title: '是否必填', index: 'orderStatus', className: 'text-center', width: '100px', },
 | 
				
			||||||
 | 
					      { title: '上传值', index: 'orderStatus', className: 'text-center', width: '150px', },
 | 
				
			||||||
 | 
					      { title: '本地校验', index: 'orderStatus', className: 'text-center', width: '100px', },
 | 
				
			||||||
 | 
					      { title: '错误内容', index: 'orderStatus', className: 'text-center', width: '150px', },
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  add(): void {
 | 
				
			||||||
 | 
					    // this.modal
 | 
				
			||||||
 | 
					    //   .createStatic(FormEditComponent, { i: { id: 0 } })
 | 
				
			||||||
 | 
					    //   .subscribe(() => this.st.reload());
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  selectTab(e: any) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  update() {
 | 
				
			||||||
 | 
					    if (this.record?.billType === '1') {
 | 
				
			||||||
 | 
					      window.open(location.origin + `/#/order-management/vehicle-detailChange/${this.record?.id}`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    } else if (this.record.billType === '2') {
 | 
				
			||||||
 | 
					      window.open(location.origin + `/#/order-management/bulk-detailChange/${this.record?.id}`);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  close(): void {
 | 
				
			||||||
 | 
					    this.modalRef.destroy();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -6,9 +6,11 @@ import { BaseService } from '@shared';
 | 
				
			|||||||
})
 | 
					})
 | 
				
			||||||
export class ReportingService extends BaseService {
 | 
					export class ReportingService extends BaseService {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  $api_order_reporting_page = ``; // 订单上报列表
 | 
					  $api_order_reporting_page = `/api/sdc/billOperate/listWholePage`; // 订单上报列表
 | 
				
			||||||
  $api_recall_reporting = ``; // 撤回
 | 
					  $api_recall_reporting = ``; // 撤回
 | 
				
			||||||
  $api_async_export_order_reporting_list = ``; // 导出订单上报
 | 
					  $api_async_export_order_reporting_list = ``; // 导出订单上报
 | 
				
			||||||
 | 
					  $api_get_upload_setting = ``; // 修改上传设置
 | 
				
			||||||
 | 
					  $api_upload_setting_save = ``; // 修改上传设置
 | 
				
			||||||
  constructor(public injector: Injector) {
 | 
					  constructor(public injector: Injector) {
 | 
				
			||||||
    super(injector);
 | 
					    super(injector);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
@ -65,7 +65,7 @@
 | 
				
			|||||||
                <p style="margin: 0;">开户行: {{openInfo?.artobank}}</p>
 | 
					                <p style="margin: 0;">开户行: {{openInfo?.artobank}}</p>
 | 
				
			||||||
            </se>
 | 
					            </se>
 | 
				
			||||||
            <se [col]="1" label="服务名称" class="mb-sm">
 | 
					            <se [col]="1" label="服务名称" class="mb-sm">
 | 
				
			||||||
                {{openInfo?.vatnameLable}}
 | 
					                {{openInfo?.vatnameLabel}}
 | 
				
			||||||
            </se>
 | 
					            </se>
 | 
				
			||||||
            <se [col]="1" label="发票备注栏" class="mb-sm">
 | 
					            <se [col]="1" label="发票备注栏" class="mb-sm">
 | 
				
			||||||
                {{openInfo?.vatremarks}}
 | 
					                {{openInfo?.vatremarks}}
 | 
				
			||||||
 | 
				
			|||||||
@ -50,6 +50,8 @@ export class InvoiceRequestedDetailComponent implements OnInit {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  beforeReq = (requestOptions: STRequestOptions) => {
 | 
					  beforeReq = (requestOptions: STRequestOptions) => {
 | 
				
			||||||
 | 
					    this.totalCallNo = '0';
 | 
				
			||||||
 | 
					    this.selectedRows = [];
 | 
				
			||||||
    Object.assign(requestOptions.body, { vatappHId: this.id });
 | 
					    Object.assign(requestOptions.body, { vatappHId: this.id });
 | 
				
			||||||
    if (this.sf) {
 | 
					    if (this.sf) {
 | 
				
			||||||
      Object.assign(requestOptions.body, { ...this.sf.value });
 | 
					      Object.assign(requestOptions.body, { ...this.sf.value });
 | 
				
			||||||
@ -58,7 +60,7 @@ export class InvoiceRequestedDetailComponent implements OnInit {
 | 
				
			|||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  afterRes = (data: any[], rawData?: any) => {
 | 
					  afterRes = (data: any[], rawData?: any) => {
 | 
				
			||||||
    this.totalCallNo = data.reduce((total, cv) => total + cv.billkpmoney, 0).toFixed(2);
 | 
					    // this.totalCallNo = data.reduce((total, cv) => total + cv.billkpmoney, 0).toFixed(2);
 | 
				
			||||||
    return data.map(item => ({
 | 
					    return data.map(item => ({
 | 
				
			||||||
      ...item
 | 
					      ...item
 | 
				
			||||||
    }));
 | 
					    }));
 | 
				
			||||||
 | 
				
			|||||||
@ -646,6 +646,30 @@
 | 
				
			|||||||
            {
 | 
					            {
 | 
				
			||||||
              "text": "订单上报",
 | 
					              "text": "订单上报",
 | 
				
			||||||
              "link": "/datatable/reporting/order"
 | 
					              "link": "/datatable/reporting/order"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              "text": "合规监控报表",
 | 
				
			||||||
 | 
					              "children": [{
 | 
				
			||||||
 | 
					                  "text": "合规监控报表",
 | 
				
			||||||
 | 
					                  "link": "/datatable/compliancetabel/index"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                  "text": "业务员-合规报表",
 | 
				
			||||||
 | 
					                  "link": "/datatable/compliancetabel/salesman"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                  "text": "客户-合规报表",
 | 
				
			||||||
 | 
					                  "link": "/datatable/compliancetabel/customer"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					              ]
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              "text": "财务报表",
 | 
				
			||||||
 | 
					              "link": "/datatable/financetable"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              "text": "开票数据报表",
 | 
				
			||||||
 | 
					              "link": "/datatable/invoicetable"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user