订单上报
This commit is contained in:
		@ -2,11 +2,13 @@ import { NgModule } from '@angular/core';
 | 
			
		||||
import { RouterModule, Routes } from '@angular/router';
 | 
			
		||||
import { DatatableDataindexComponent } from './dataindex/dataindex.component';
 | 
			
		||||
import { DatatableOrderReportingComponent } from './reporting/components/order-reporting/order-reporting.component';
 | 
			
		||||
import { DatatableReportingVerifyResultComponent } from './reporting/components/verify-result/verify-result.component';
 | 
			
		||||
 | 
			
		||||
const routes: Routes = [
 | 
			
		||||
 | 
			
		||||
  { path: 'dataindex', component: DatatableDataindexComponent },
 | 
			
		||||
  { path: 'reporting/order', component: DatatableOrderReportingComponent }];
 | 
			
		||||
  { path: 'reporting/order', component: DatatableOrderReportingComponent },
 | 
			
		||||
  { path: 'verify-result', component: DatatableReportingVerifyResultComponent }];
 | 
			
		||||
 | 
			
		||||
@NgModule({
 | 
			
		||||
  imports: [RouterModule.forChild(routes)],
 | 
			
		||||
 | 
			
		||||
@ -3,10 +3,14 @@ import { SharedModule, SHARED_G2_MODULES } from '@shared';
 | 
			
		||||
import { DatatableRoutingModule } from './datatable-routing.module';
 | 
			
		||||
import { DatatableDataindexComponent } from './dataindex/dataindex.component';
 | 
			
		||||
import { DatatableOrderReportingComponent } from './reporting/components/order-reporting/order-reporting.component';
 | 
			
		||||
import { DatatableReportingUploadSettingComponent } from './reporting/components/upload-setting/upload-setting.component';
 | 
			
		||||
import { DatatableReportingVerifyResultComponent } from './reporting/components/verify-result/verify-result.component';
 | 
			
		||||
 | 
			
		||||
const COMPONENTS: Type<void>[] = [
 | 
			
		||||
  DatatableDataindexComponent,
 | 
			
		||||
  DatatableOrderReportingComponent];
 | 
			
		||||
  DatatableOrderReportingComponent,
 | 
			
		||||
  DatatableReportingUploadSettingComponent,
 | 
			
		||||
  DatatableReportingVerifyResultComponent];
 | 
			
		||||
 | 
			
		||||
@NgModule({
 | 
			
		||||
  imports: [
 | 
			
		||||
 | 
			
		||||
@ -29,57 +29,29 @@
 | 
			
		||||
    [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="orderSn" let-item let-index="index">
 | 
			
		||||
      <a (click)="view(item)">{{item.billCode}}</a>
 | 
			
		||||
    <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="freightDetails" let-item>
 | 
			
		||||
      <div *ngFor="let item of item.freightDetails">
 | 
			
		||||
        <div>{{item.expenseName}}:{{item.price | currency}} </div>
 | 
			
		||||
      </div>
 | 
			
		||||
 | 
			
		||||
    <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="loadingPlace" let-item let-index="index">
 | 
			
		||||
      <div *ngFor="let address of item.loadingAddressArr">{{ address }} </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 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="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)="recall()">撤回</button>
 | 
			
		||||
    <button nz-button nzType="primary" (click)="uploadSetting()">上传设置</button>
 | 
			
		||||
  </div>
 | 
			
		||||
</ng-template>
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,5 @@
 | 
			
		||||
:host {
 | 
			
		||||
  .text-black {
 | 
			
		||||
    color: #000;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@ -1,15 +1,17 @@
 | 
			
		||||
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 { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/form';
 | 
			
		||||
import { ModalHelper, _HttpClient } from '@delon/theme';
 | 
			
		||||
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-order-reporting',
 | 
			
		||||
  templateUrl: './order-reporting.component.html',
 | 
			
		||||
  styleUrls: ['./order-reporting.component.less']
 | 
			
		||||
})
 | 
			
		||||
export class DatatableOrderReportingComponent implements OnInit {
 | 
			
		||||
  _$expand = false;
 | 
			
		||||
@ -226,7 +228,7 @@ export class DatatableOrderReportingComponent implements OnInit {
 | 
			
		||||
          ],
 | 
			
		||||
          ui: {
 | 
			
		||||
            placeholder: '请选择',
 | 
			
		||||
 | 
			
		||||
            widget: 'select',
 | 
			
		||||
            visibleIf: {
 | 
			
		||||
              _$expand: (value: boolean) => value,
 | 
			
		||||
            },
 | 
			
		||||
@ -242,7 +244,7 @@ export class DatatableOrderReportingComponent implements OnInit {
 | 
			
		||||
          ],
 | 
			
		||||
          ui: {
 | 
			
		||||
            placeholder: '请选择',
 | 
			
		||||
 | 
			
		||||
            widget: 'select',
 | 
			
		||||
            visibleIf: {
 | 
			
		||||
              _$expand: (value: boolean) => value,
 | 
			
		||||
            },
 | 
			
		||||
@ -261,11 +263,11 @@ export class DatatableOrderReportingComponent implements OnInit {
 | 
			
		||||
   */
 | 
			
		||||
  initST() {
 | 
			
		||||
    this.columns = [
 | 
			
		||||
      { title: '', type: 'checkbox', className: 'text-center', width: '80px', },
 | 
			
		||||
      { title: '订单状态', index: 'name', className: 'text-center', width: '120px', },
 | 
			
		||||
      { title: '司机状态', index: 'name', className: 'text-center', width: '120px', },
 | 
			
		||||
      { title: '车辆状态', index: 'name', className: 'text-center', width: '120px', },
 | 
			
		||||
      { title: '本地校验', render: 'orderSn', className: 'text-center', width: '180px', },
 | 
			
		||||
      { 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',
 | 
			
		||||
@ -278,71 +280,50 @@ export class DatatableOrderReportingComponent implements OnInit {
 | 
			
		||||
        title: '网络货运人',
 | 
			
		||||
        render: 'serviceType',
 | 
			
		||||
        className: 'text-center',
 | 
			
		||||
        width: '120px',
 | 
			
		||||
        width: '180px',
 | 
			
		||||
      },
 | 
			
		||||
      { title: '统一社会信用代码', index: 'loadingPlace', render: 'loadingPlace', className: 'text-center', width: '300px' },
 | 
			
		||||
      { title: '业务类型', index: 'dischargePlace', render: 'dischargePlace', className: 'text-center', width: '300px' },
 | 
			
		||||
      { title: '运单生成时间', render: 'goodsInfoVOList', className: 'text-center', width: '200px' },
 | 
			
		||||
      { title: '发货时间', render: 'driver', className: 'text-center', width: '150px' },
 | 
			
		||||
      { title: '收货时间', render: 'payeeName', className: 'text-center', width: '150px' },
 | 
			
		||||
      { 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: '300px' },
 | 
			
		||||
      { title: '装货地址', index: 'dischargePlace', render: 'dischargePlace', className: 'text-center', width: '300px' },
 | 
			
		||||
      { title: '运单生成时间', render: 'goodsInfoVOList', className: 'text-center', width: '200px' },
 | 
			
		||||
      { 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: 'transportInfo', className: 'text-center', width: '250px' },
 | 
			
		||||
      { 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: '250px' },
 | 
			
		||||
      { 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: 'transportInfo', className: 'text-center', width: '180px' },
 | 
			
		||||
      { 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: 'transportInfo', className: 'text-center', width: '250px' },
 | 
			
		||||
      { 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: '操作',
 | 
			
		||||
        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'] } },
 | 
			
		||||
        ],
 | 
			
		||||
      },
 | 
			
		||||
      { title: '上传次数', render: 'transportInfo', className: 'text-center', width: '150px' },
 | 
			
		||||
      { title: '上传时间', render: 'transportInfo', className: 'text-center', width: '180px' },
 | 
			
		||||
    ];
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * 删除单个实例
 | 
			
		||||
   *撤销
 | 
			
		||||
   * @param record 记录实例
 | 
			
		||||
   */
 | 
			
		||||
  recall(record: STData) {
 | 
			
		||||
    this.service.request(this.service.$api_recall_reporting, { id: record?.id }).subscribe((res: any) => {
 | 
			
		||||
  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({ representationsStatus: '' });
 | 
			
		||||
        this.search();
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
@ -390,7 +371,10 @@ export class DatatableOrderReportingComponent implements OnInit {
 | 
			
		||||
   * 上传
 | 
			
		||||
   */
 | 
			
		||||
  upload() {
 | 
			
		||||
 | 
			
		||||
    if (this.selectedRows.length === 0) {
 | 
			
		||||
      this.openWainingModal('请选择需要上传的数据');
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -399,10 +383,46 @@ export class DatatableOrderReportingComponent implements OnInit {
 | 
			
		||||
   * @param params 上传设置
 | 
			
		||||
   */
 | 
			
		||||
  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);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -413,4 +433,13 @@ export class DatatableOrderReportingComponent implements OnInit {
 | 
			
		||||
    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 {
 | 
			
		||||
 | 
			
		||||
  $api_order_reporting_page = ``; // 订单上报列表
 | 
			
		||||
  $api_order_reporting_page = `/api/sdc/billOperate/listWholePage`; // 订单上报列表
 | 
			
		||||
  $api_recall_reporting = ``; // 撤回
 | 
			
		||||
  $api_async_export_order_reporting_list = ``; // 导出订单上报
 | 
			
		||||
  $api_get_upload_setting = ``; // 修改上传设置
 | 
			
		||||
  $api_upload_setting_save = ``; // 修改上传设置
 | 
			
		||||
  constructor(public injector: Injector) {
 | 
			
		||||
    super(injector);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user