车辆接口更新
This commit is contained in:
		| @ -140,7 +140,6 @@ export class OrderManagementBulkComponent implements OnInit { | ||||
|     this.initST(); | ||||
|     setTimeout(() => { | ||||
|       this.st.load(); | ||||
|       this.getGoodsSourceStatistical(); | ||||
|     }, 500); | ||||
|   } | ||||
|   ngOnInit(): void { | ||||
|  | ||||
| @ -0,0 +1,238 @@ | ||||
| <!-- | ||||
|  * @Description  :  | ||||
|  * @Version      : 1.0 | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2022-01-12 10:52:50 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-01-19 14:39:52 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\bulk\\bulk.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
| <!-- 搜索表单 --> | ||||
| <page-header-wrapper [title]="''"> | ||||
| </page-header-wrapper> | ||||
| <nz-card> | ||||
|   <div nz-row nzGutter="8"> | ||||
|     <!-- 查询字段小于或等于3个时,不显示伸缩按钮 --> | ||||
|     <div nz-col nzSpan="24" *ngIf="queryFieldCount <= 4"> | ||||
|       <sf #sf [schema]="schema" [ui]="ui" [mode]="'search'" [disabled]="!sf?.valid" [loading]="service.http.loading" | ||||
|         (formSubmit)="st?.load(1)" (formReset)="resetSF()"></sf> | ||||
|     </div> | ||||
|  | ||||
|     <!-- 查询字段大于3个时,根据展开状态调整布局 --> | ||||
|     <ng-container *ngIf="queryFieldCount > 4"> | ||||
|       <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" [nzLoading]="service.http.loading" | ||||
|           (click)="search()">查询</button> | ||||
|         <button nz-button nzType="primary"  [disabled]="service.http.loading" | ||||
|          >导出</button> | ||||
|         <button nz-button [disabled]="service.http.loading" (click)="resetSF()">重置</button> | ||||
|         <button nz-button nzType="link" (click)="expandToggle()"> | ||||
|           {{ !_$expand ? '展开' : '收起' }} | ||||
|           <i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i> | ||||
|         </button> | ||||
|       </div> | ||||
|     </ng-container> | ||||
|   </div> | ||||
| </nz-card> | ||||
|  | ||||
| <nz-card> | ||||
|   <nz-tabset (nzSelectedIndexChange)="selectChange($event)"  | ||||
|   [nzTabBarExtraContent]="extraTemplate"> | ||||
|   <nz-tab [nzTitle]="'全部('+tabs?.totalCount+')'"></nz-tab> | ||||
|   <nz-tab [nzTitle]="'待接单('+tabs?.receivedQuantity+')'"></nz-tab> | ||||
|   <nz-tab [nzTitle]="'待发车('+tabs?.stayQuantity+')'"></nz-tab> | ||||
|   <nz-tab [nzTitle]="'运输中('+tabs?.GoingQuantity+')'"></nz-tab> | ||||
|   <nz-tab [nzTitle]="'待签收('+tabs?.signQuantity+')'"></nz-tab> | ||||
|   <nz-tab [nzTitle]="'已完成('+tabs?.compolatelQuantity+')'"></nz-tab> | ||||
|   <nz-tab [nzTitle]="'已取消('+tabs?.cancelQuantity+')'"></nz-tab> | ||||
| </nz-tabset> | ||||
|   <div style="margin-top: 15px;"> | ||||
|     <st | ||||
|     #st | ||||
|     [bordered]="true" | ||||
|     [scroll]="{ x: '2000px' }" | ||||
|     [data]="service.$api_get_listBulkPage" | ||||
|     [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] }" | ||||
|     [loading]="service.http.loading" | ||||
|     > | ||||
|     <ng-template st-row="freightPrice" let-item let-index="index"> | ||||
|       {{ item.freightPrice | currency}} | ||||
|     </ng-template> | ||||
|     <ng-template st-row="loadingTime" let-item let-index="index"> | ||||
|       <div *ngIf="item?.loadingTime">装 | {{item?.loadingTime}}</div> | ||||
|       <div *ngIf="item?.unloadingTime">卸 | {{item?.unloadingTime}}</div> | ||||
|     </ng-template> | ||||
|     <ng-template st-row="driverName" let-item let-index="index"> | ||||
|       <div> | ||||
|         {{item?.driverName}}/{{item?.driverPhone}}/{{item?.carNo}} | ||||
|       </div> | ||||
|       </ng-template> | ||||
|       <ng-template st-row="payeeName" let-item let-index="index"> | ||||
|       <div> | ||||
|         {{item?.payeeName}}/{{item?.payeePhone}} | ||||
|       </div> | ||||
|       </ng-template> | ||||
|     <ng-template st-row="billCode" let-item let-index="index"> | ||||
|       <a [routerLink]="'/order-management/bulk-detail/'+item.id">{{item.billCode}}</a> | ||||
|       <div> | ||||
|         <span>{{item?.billStatusLabel}}</span> | ||||
|       </div> | ||||
|     </ng-template> | ||||
|     <ng-template st-row="goodsName" let-item let-index="index"> | ||||
|       <div>{{item?.goodsName}}</div> | ||||
|       <div> | ||||
|         <span>{{item?.weight ? item?.weight + '吨/' : '' }}</span> | ||||
|         <span>{{item?.volume ? item?.volume + '方/' : '' }}</span> | ||||
|         <span>{{item?.goodsNumber ? item?.goodsNumber + '吨' : '' }}</span> | ||||
|       </div> | ||||
|     </ng-template> | ||||
|     <ng-template st-row="mybidDetailInfo" let-item let-index="index"> | ||||
|       <div *ngIf="item.mybidDetailInfo.length > 0"> | ||||
|         <p *ngFor="let data of item.mybidDetailInfo"> | ||||
|           {{ data.expenseName }}:{{ data.price | currency }} | ||||
|           <span *ngIf="data.paymentStatusLabel" style="color: #f59a63">{{ data.paymentStatusLabel }}</span> | ||||
|         </p> | ||||
|       </div> | ||||
|     </ng-template> | ||||
|       <!-- <ng-template st-row="externalSn" let-item let-index="index"> | ||||
|         <span class="mr-xs">{{111111}}</span> | ||||
|         <a (click)="editEnternalSn(item)">编辑</a> | ||||
|       </ng-template> --> | ||||
|       <ng-template st-row="enStatusStr27878" let-item let-index="index"> | ||||
|         <div class="mr-xs" nzPopoverTitle="Title" nz-popover [nzPopoverContent]="contentTemplate">{{item.no}}</div> | ||||
|       </ng-template> | ||||
|       <ng-template #contentTemplate> | ||||
|         <div> | ||||
|           <p>预付:¥200.00</p> | ||||
|           <p>到付:¥200.00</p> | ||||
|           <p>油卡:¥200.00</p> | ||||
|           <p>回单付:¥200.00</p> | ||||
|           <p>小计:¥200.00</p> | ||||
|           <p>附加费:¥200.00</p> | ||||
|         </div> | ||||
|       </ng-template> | ||||
|     </st> | ||||
|   </div> | ||||
| </nz-card> | ||||
|  | ||||
|  | ||||
| <nz-modal [(nzVisible)]="isVisible"  [nzWidth]="600" [nzFooter]="nzModalFooter" nzTitle="运费变更记录" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel('0')"> | ||||
|   <ng-container *nzModalContent> | ||||
|     <st | ||||
|     #stFloat | ||||
|     size="small" | ||||
|     [bordered]="true" | ||||
|     [data]="service.$api_get_listChangeApply" | ||||
|     [columns]="columnsFloat" | ||||
|     [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: changeParams }" | ||||
|     [res]="{ reName: { list: 'data', total: 'data.total' } }" | ||||
|     [page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }" | ||||
|   > | ||||
|    | ||||
|   <ng-template st-row="order" let-item let-index="index"> | ||||
|     {{ index + 1 }} | ||||
|   </ng-template> | ||||
|   <ng-template st-row="externalSn" let-item let-index="index"> | ||||
|     <div> | ||||
|       <span *ngIf="item?.externalSn == '1'">待确认</span> | ||||
|       <span *ngIf="item?.externalSn == '2'">已确认</span> | ||||
|       <span *ngIf="item?.externalSn == '3'">已撤销</span> | ||||
|       <span *ngIf="item?.externalSn == '4'">拒绝</span> | ||||
|     </div> | ||||
|   </ng-template> | ||||
|   </st> | ||||
|   </ng-container> | ||||
|   <ng-template #nzModalFooter> | ||||
|     <button nz-button nzType="primary" (click)="handleCancel('0')">取消</button> | ||||
|     <button nz-button nzType="default" (click)="handleCancel('0')">确定</button> | ||||
|   </ng-template> | ||||
| </nz-modal> | ||||
|  | ||||
|  | ||||
| <nz-modal [(nzVisible)]="isVisibleView"  [nzWidth]="600" [nzFooter]="nzModalFooterview" nzTitle="查看" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel('1')"> | ||||
|   <ng-container *nzModalContent> | ||||
|     <sf #sfView [schema]="schemaView" [ui]="uiView" [formData]="ViewCause" [compact]="true" [button]="'none'"> | ||||
|       <ng-template sf-template="no" let-me let-ui="uiView" let-schema="schemaView"> | ||||
|        <div style="display: flex;"> | ||||
|         <nz-input-number [(ngModel)]="demoValue" [nzMin]="1" [nzMax]="10" [nzStep]="1"></nz-input-number> | ||||
|         <div class="left_btn">元/吨</div> | ||||
|        </div> | ||||
|       </ng-template> | ||||
|     </sf> | ||||
|     <st | ||||
|     #stFloatView | ||||
|     multiSort | ||||
|     size="small" | ||||
|     [bordered]="true" | ||||
|     [data]="service.$api_getChangeRecordBulkDetail" | ||||
|     [columns]="columnsFloatView" | ||||
|     [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: changeViewParams }" | ||||
|     [res]="{ reName: { list: 'data.list', total: 'data.total' } }" | ||||
|   > | ||||
|   | ||||
|   <ng-template st-row="amountBeforeChange" let-item let-index="index"> | ||||
|     {{ item.amountBeforeChange | currency}} | ||||
|   </ng-template> | ||||
|   <ng-template st-row="amountchangeValue" let-item let-index="index"> | ||||
|     ¥{{ item.amountchangeValue | number: '0.2-2'}} | ||||
|   </ng-template> | ||||
|   <ng-template st-row="amountAfterChange" let-item let-index="index"> | ||||
|     {{ item.amountAfterChange | currency}} | ||||
|   </ng-template> | ||||
|   </st> | ||||
|   <div><span>变更原因:{{ViewCause?.changeCause}}</span></div> | ||||
|   <div><span>拒绝原因:{{ViewCause?.refuseCause}}</span></div> | ||||
|   <div><span>注:附加费依据调整后的运输费用重新计算</span></div> | ||||
|   </ng-container> | ||||
|   <ng-template #nzModalFooterview> | ||||
|     <button nz-button nzType="default" (click)="handleCancel('1')">取消</button> | ||||
|     <button nz-button nzType="primary" (click)="handleCancel('1')">确定</button> | ||||
|   </ng-template> | ||||
| </nz-modal> | ||||
|  | ||||
| <nz-modal [(nzVisible)]="isVisibleEvaluate"  [nzWidth]="600" [nzFooter]="nzModalFooterEvaluate"  (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel('2')"> | ||||
|   <ng-container *nzModalContent> | ||||
|     <nz-tabset> | ||||
|       <nz-tab nzTitle="我的评价"> | ||||
|       <div> | ||||
|         评分: <nz-rate [ngModel]="2.5" nzAllowHalf></nz-rate> | ||||
|         <div><span>评价内容:</span></div> | ||||
|       </div> | ||||
|       </nz-tab> | ||||
|       <nz-tab nzTitle="司机评价"> | ||||
|       <div> | ||||
|         暂无评价内容 | ||||
|       </div> | ||||
|       </nz-tab> | ||||
|     </nz-tabset> | ||||
|   </ng-container> | ||||
|   <ng-template #nzModalFooterEvaluate> | ||||
|     <button nz-button nzType="default" (click)="handleCancel('2')">取消</button> | ||||
|     <button nz-button nzType="primary" (click)="handleOK()">确定</button> | ||||
|   </ng-template> | ||||
| </nz-modal> | ||||
| <ng-template #enable> | ||||
|   <div class="ant-popover-message"> | ||||
|     <i nz-icon nzType="info-circle" nzTheme="fill"></i> | ||||
|     <div class="ant-popover-message-title ng-star-inserted self-ant-popover-title" style="font-size: 16px">已选择{{selectedRows?.length || 0}}条订单,确认批量签收吗? | ||||
|     </div> | ||||
|     <div class="ant-popover-message-title ng-star-inserted"> | ||||
|       签收后不可再修改运费,请确保运费等信息准确无误后,再进行签收。 | ||||
|     </div> | ||||
|   </div> | ||||
| </ng-template> | ||||
| <ng-template #extraTemplate> | ||||
|   <div> | ||||
|     <button  nz-button nzType="primary" nzGhost nz-popconfirm | ||||
| [nzPopconfirmTitle]="enable" (nzOnConfirm)="userAction()" nzPopconfirmPlacement="bottomRight"> | ||||
| 批量签收 | ||||
| </button>  | ||||
|   </div> | ||||
| </ng-template> | ||||
| @ -0,0 +1,13 @@ | ||||
|  | ||||
|     :host { | ||||
|      p{ | ||||
|          margin-bottom: 0 | ||||
|      } | ||||
|      .left_btn { | ||||
|           width: 50px; | ||||
|          height: 32px;  | ||||
|           padding-left: 8px; | ||||
|           line-height:32px;  | ||||
|           background-color: #d7d7d7; | ||||
|      } | ||||
|  } | ||||
| @ -0,0 +1,35 @@ | ||||
| /* | ||||
|  * @Description  :  | ||||
|  * @Version      : 1.0 | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2021-12-06 20:03:28 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-01-19 16:47:34 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\receipts-audit\\receipts-audit.component.spec.ts | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
|  */ | ||||
|  | ||||
| import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; | ||||
| import { OrderManagementReceiptsAuditComponent } from './receipts-audit.component'; | ||||
|  | ||||
| describe('OrderManagementReceiptsAuditComponent', () => { | ||||
|   let component: OrderManagementReceiptsAuditComponent; | ||||
|   let fixture: ComponentFixture<OrderManagementReceiptsAuditComponent>; | ||||
|  | ||||
|   beforeEach(waitForAsync(() => { | ||||
|     TestBed.configureTestingModule({ | ||||
|       declarations: [ OrderManagementReceiptsAuditComponent ] | ||||
|     }) | ||||
|     .compileComponents(); | ||||
|   })); | ||||
|  | ||||
|   beforeEach(() => { | ||||
|     fixture = TestBed.createComponent(OrderManagementReceiptsAuditComponent); | ||||
|     component = fixture.componentInstance; | ||||
|     fixture.detectChanges(); | ||||
|   }); | ||||
|  | ||||
|   it('should create', () => { | ||||
|     expect(component).toBeTruthy(); | ||||
|   }); | ||||
| }); | ||||
| @ -0,0 +1,715 @@ | ||||
| import { Component, OnInit, ViewChild } from '@angular/core'; | ||||
| import { STColumn, STComponent } from '@delon/abc/st'; | ||||
| import { SFComponent, SFDateWidgetSchema, SFSchema, SFSchemaEnum, SFSelectWidgetSchema, SFUISchema } from '@delon/form'; | ||||
| import { ModalHelper, _HttpClient } from '@delon/theme'; | ||||
| import { NzModalService } from 'ng-zorro-antd/modal'; | ||||
| import { map } from 'rxjs/operators'; | ||||
| import { OrderManagementService } from '../../services/order-management.service'; | ||||
| import { UpdateFreightComponent } from '../../modal/bulk/update-freight/update-freight.component'; | ||||
| import { ConfirReceiptComponent } from '../../modal/bulk/confir-receipt/confir-receipt.component'; | ||||
| import { of } from 'rxjs'; | ||||
| import { ShipperBaseService } from '@shared'; | ||||
| import { Router } from '@angular/router'; | ||||
|  | ||||
| @Component({ | ||||
|   selector: 'app-order-management-receipts-audit', | ||||
|   templateUrl: './receipts-audit.component.html', | ||||
|   styleUrls: ['./receipts-audit.component.less'] | ||||
| }) | ||||
| export class OrderManagementReceiptsAuditComponent implements OnInit { | ||||
|   ui: SFUISchema = {}; | ||||
|   uiView: SFUISchema = {}; | ||||
|   schema: SFSchema = {}; | ||||
|   schemaView: SFSchema = {}; | ||||
|   auditMany = false; | ||||
|   isVisibleView = false; | ||||
|   isVisibleEvaluate = false; | ||||
|   isVisible = false; | ||||
|   _$expand = false; | ||||
|   changeId: any; // 主页面查看运费变更记录id - 用于运费变更记录 | ||||
|   changeViewId: any; // 查看运费变更记录id - 用于查看 | ||||
|   ViewCause: any; // 变更运费查看数据 | ||||
|   sfViewFormData: any; // 变更运费查看的sf 数据 | ||||
|   @ViewChild('st') private readonly st!: STComponent; | ||||
|   @ViewChild('stFloat') private readonly stFloat!: STComponent; | ||||
|   @ViewChild('stFloatView') private readonly stFloatView!: STComponent; | ||||
|   @ViewChild('sf', { static: false }) sf!: SFComponent; | ||||
|   @ViewChild('sfFre', { static: false }) sfFre!: SFComponent; | ||||
|   @ViewChild('sfView', { static: false }) sfView!: SFComponent; | ||||
|   columns: STColumn[] = []; | ||||
|   columnsFloat: STColumn[] = []; | ||||
|   columnsFloatView: STColumn[] = []; | ||||
|   demoValue: any; | ||||
|   resourceStatus: any; | ||||
|   datass: any = [ | ||||
|     { | ||||
|       one: '1', | ||||
|       two: '1', | ||||
|       three: '1', | ||||
|       id: 1 | ||||
|     }, | ||||
|     { | ||||
|       one: '2', | ||||
|       two: '2', | ||||
|       three: '2', | ||||
|       id: 2 | ||||
|     } | ||||
|   ]; | ||||
|   tabs = { | ||||
|     cancelQuantity: 0, | ||||
|     receivedQuantity: 0, | ||||
|     stayQuantity: 0, | ||||
|     signQuantity: 0, | ||||
|     compolatelQuantity: 0, | ||||
|     GoingQuantity: 0, | ||||
|     totalCount: 0 | ||||
|   }; | ||||
|   constructor( | ||||
|     public service: OrderManagementService, | ||||
|     private modal: NzModalService, | ||||
|     public shipperservice: ShipperBaseService, | ||||
|     private router: Router | ||||
|   ) {} | ||||
|  | ||||
|   /** | ||||
|    * 查询参数 | ||||
|    */ | ||||
|   get reqParams() { | ||||
|     const a: any = {}; | ||||
|     if (this.resourceStatus) { | ||||
|       a.billStatus = this.resourceStatus; | ||||
|     } | ||||
|     const params: any = Object.assign({}, this.sf?.value || {}); | ||||
|     delete params._$expand; | ||||
|     return { | ||||
|       ...a, | ||||
|       ...params, | ||||
|       createTime: { | ||||
|         start: this.sf?.value?.createTime?.[0] || '', | ||||
|         end: this.sf?.value?.createTime?.[1] || '' | ||||
|       } | ||||
|     }; | ||||
|   } | ||||
|   get selectedRows() { | ||||
|     return this.st?.list.filter(item => item.checked) || []; | ||||
|   } | ||||
|   get changeParams() { | ||||
|     return { | ||||
|       id: this.changeId | ||||
|     }; | ||||
|   } | ||||
|   search() { | ||||
|     this.st?.load(1); | ||||
|     this.getGoodsSourceStatistical(); | ||||
|   } | ||||
|   getGoodsSourceStatistical() { | ||||
|     this.tabs = { | ||||
|       cancelQuantity: 0, | ||||
|       receivedQuantity: 0, | ||||
|       stayQuantity: 0, | ||||
|       signQuantity: 0, | ||||
|       compolatelQuantity: 0, | ||||
|       GoingQuantity: 0, | ||||
|       totalCount: 0 | ||||
|     }; | ||||
|     this.service.request(this.service.$api_getBulkStatistical, { ...this.reqParams }).subscribe(res => { | ||||
|       if (res) { | ||||
|         let totalCount = 0; | ||||
|         res.forEach((element: any) => { | ||||
|           if (element.billStatusLabel === '待发车') { | ||||
|             this.tabs.stayQuantity = element.quantity; | ||||
|           } else if (element.billStatusLabel === '待接单') { | ||||
|             this.tabs.receivedQuantity = element.quantity; | ||||
|           } else if (element.billStatusLabel === '待签收') { | ||||
|             this.tabs.signQuantity = element.quantity; | ||||
|           } else if (element.billStatusLabel === '已完成') { | ||||
|             this.tabs.compolatelQuantity = element.quantity; | ||||
|           } else if (element.billStatusLabel === '已取消') { | ||||
|             this.tabs.cancelQuantity = element.quantity; | ||||
|           } else if (element.billStatusLabel === '运输中') { | ||||
|             this.tabs.GoingQuantity = element.quantity; | ||||
|           } | ||||
|           totalCount += element.quantity; | ||||
|         }); | ||||
|         this.tabs.totalCount = totalCount; | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
|   selectChange(e: number) { | ||||
|     this.resourceStatus = e; | ||||
|     this.initST(); | ||||
|     setTimeout(() => { | ||||
|       this.st.load(); | ||||
|       this.getGoodsSourceStatistical(); | ||||
|     }, 500); | ||||
|   } | ||||
|   ngOnInit(): void { | ||||
|     this.getGoodsSourceStatistical(); | ||||
|     this.initSF(); | ||||
|     this.initST(); | ||||
|     this.initSTFloat(); | ||||
|     this.initSTFloatView(); | ||||
|     this.initSFView(); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 初始化查询表单 | ||||
|    */ | ||||
|   initSF() { | ||||
|     this.schema = { | ||||
|       properties: { | ||||
|         _$expand: { type: 'boolean', ui: { hidden: true } }, | ||||
|         billCode: { | ||||
|           type: 'string', | ||||
|           title: '订单号' | ||||
|         }, | ||||
|         resourceCode: { | ||||
|           type: 'string', | ||||
|           title: '货源编号' | ||||
|         }, | ||||
|         shipperAppUserId: { | ||||
|           type: 'string', | ||||
|           title: '货主', | ||||
|           ui: { | ||||
|             widget: 'select', | ||||
|             serverSearch: true, | ||||
|             searchDebounceTime: 300, | ||||
|             searchLoadingText: '搜索中...', | ||||
|             allowClear: true, | ||||
|             onSearch: (q: any) => { | ||||
|               if (!!q) { | ||||
|                 return this.service | ||||
|                   .request(this.service.$api_enterpriceList, { enterpriseName: q }) | ||||
|                   .pipe(map((res: any) => (res as any[]).map(i => ({ label: i.enterpriseName, value: i.id } as SFSchemaEnum)))) | ||||
|                   .toPromise(); | ||||
|               } else { | ||||
|                 return of([]); | ||||
|               } | ||||
|             } | ||||
|           } as SFSelectWidgetSchema | ||||
|         }, | ||||
|         enterpriseProjectId: { | ||||
|           type: 'string', | ||||
|           title: '所属项目', | ||||
|           ui: { | ||||
|             widget: 'select', | ||||
|             placeholder: '请选择', | ||||
|             allowClear: true, | ||||
|             asyncData: () => this.service.getEnterpriseProject(), | ||||
|             visibleIf: { | ||||
|               _$expand: (value: boolean) => value | ||||
|             } | ||||
|           }, | ||||
|           default: '' | ||||
|         }, | ||||
|         loadingPlace: { | ||||
|           type: 'string', | ||||
|           title: '装货地', | ||||
|           ui: { | ||||
|             visibleIf: { | ||||
|               _$expand: (value: boolean) => value | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         dischargePlace: { | ||||
|           type: 'string', | ||||
|           title: '卸货地', | ||||
|           ui: { | ||||
|             visibleIf: { | ||||
|               _$expand: (value: boolean) => value | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         driverName: { | ||||
|           title: '承运司机', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             visibleIf: { | ||||
|               _$expand: (value: boolean) => value | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         carNo: { | ||||
|           title: '车牌号', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             visibleIf: { | ||||
|               _$expand: (value: boolean) => value | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         carCaptainName: { | ||||
|           title: '车队长', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             visibleIf: { | ||||
|               _$expand: (value: boolean) => value | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         paymentStatus: { | ||||
|           title: '支付状态', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'dict-select', | ||||
|             params: { dictKey: 'overall:payment:status' }, | ||||
|             containsAllLable: true, | ||||
|             visibleIf: { | ||||
|               _$expand: (value: boolean) => value | ||||
|             } | ||||
|           } as SFSelectWidgetSchema | ||||
|         }, | ||||
|         createTime: { | ||||
|           title: '创建时间', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'date', | ||||
|             mode: 'range', | ||||
|             format: 'yyyy-MM-dd', | ||||
|             allowClear: true, | ||||
|             visibleIf: { | ||||
|               _$expand: (value: boolean) => value | ||||
|             } | ||||
|           } as SFDateWidgetSchema | ||||
|         }, | ||||
|         riskStatus: { | ||||
|           type: 'string', | ||||
|           title: '是否风险单', | ||||
|           enum: [ | ||||
|             { label: '全部', value: '' }, | ||||
|             { label: '是', value: '3' }, | ||||
|             { label: '否', value: '1' } | ||||
|           ], | ||||
|           ui: { | ||||
|             widget: 'select', | ||||
|             placeholder: '请选择', | ||||
|             visibleIf: { | ||||
|               _$expand: (value: boolean) => value | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         enterpriseInfoId: { | ||||
|           type: 'string', | ||||
|           title: '网络货运人', | ||||
|           ui: { | ||||
|             widget: 'select', | ||||
|             placeholder: '请选择', | ||||
|             allowClear: true, | ||||
|             visibleIf: { | ||||
|               _$expand: (value: boolean) => value | ||||
|             }, | ||||
|             asyncData: () => this.shipperservice.getNetworkFreightForwarder() | ||||
|           } | ||||
|         }, | ||||
|         serviceType: { | ||||
|           title: '服务类型', | ||||
|           type: 'string', | ||||
|           default: '', | ||||
|           ui: { | ||||
|             widget: 'dict-select', | ||||
|             params: { dictKey: 'service:type' }, | ||||
|             containsAllLable: true, | ||||
|             visibleIf: { | ||||
|               _$expand: (value: boolean) => value | ||||
|             } | ||||
|           } as SFSelectWidgetSchema | ||||
|         }, | ||||
|         settlementBasis: { | ||||
|           title: '结算依据', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'dict-select', | ||||
|             containsAllLable: true, | ||||
|             params: { dictKey: 'goodresource:settlement:type' }, | ||||
|             containAllLable: true, | ||||
|             visibleIf: { | ||||
|               _$expand: (value: boolean) => value | ||||
|             } | ||||
|           } as SFSelectWidgetSchema | ||||
|         } | ||||
|       }, | ||||
|       type: 'object' | ||||
|     }; | ||||
|     this.ui = { '*': { spanLabelFixed: 110, grid: { span: 8, gutter: 4 } } }; | ||||
|   } | ||||
|   /** | ||||
|    * 初始化查询表单 | ||||
|    */ | ||||
|   initSFView() { | ||||
|     this.schemaView = { | ||||
|       properties: { | ||||
|         freightPrice: { | ||||
|           type: 'string', | ||||
|           title: '运费单价' | ||||
|         }, | ||||
|         rule: { | ||||
|           title: '', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|             widget: 'dict-select', | ||||
|             params: { dictKey: 'goodresource:rounding:rules' }, | ||||
|             visibleIf: { | ||||
|               _$expand: (value: boolean) => value | ||||
|             } | ||||
|           } as SFSelectWidgetSchema | ||||
|         }, | ||||
|         settlementBasis: { | ||||
|           type: 'string', | ||||
|           title: '结算重量', | ||||
|           ui: { | ||||
|             widget: 'dict-select', | ||||
|             params: { dictKey: 'goodresource:settlement:type' }, | ||||
|             visibleIf: { | ||||
|               _$expand: (value: boolean) => value | ||||
|             } | ||||
|           } as SFSelectWidgetSchema | ||||
|         } | ||||
|       } | ||||
|     }; | ||||
|     this.uiView = { '*': { spanLabelFixed: 80, grid: { span: 12, gutter: 4 } } }; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 初始化数据列表 | ||||
|    */ | ||||
|   initST() { | ||||
|     this.columns = [ | ||||
|       { title: '', type: 'checkbox', fixed: 'left', width: '50px', className: 'text-center' }, | ||||
|       { | ||||
|         title: '订单号', | ||||
|         width: '180px', | ||||
|         fixed: 'left', | ||||
|         className: 'text-left', | ||||
|         render: 'billCode' | ||||
|       }, | ||||
|       { | ||||
|         title: '运费明细', | ||||
|         width: '250px', | ||||
|         className: 'text-right', | ||||
|         render: 'mybidDetailInfo' | ||||
|       }, | ||||
|       { title: '网络货运人', index: 'enterpriseInfoName', width: '220px', className: 'text-left' }, | ||||
|       { title: '货主', index: 'shipperAppUserName', width: '220px', className: 'text-left' }, | ||||
|       { title: '所属项目', index: 'enterpriseProjectName', width: '220px', className: 'text-left' }, | ||||
|       { title: '关联运单号', index: 'wayBillCode', width: '180px', className: 'text-left' }, | ||||
|       { title: '货源编号', index: 'resourceCode', width: '180px', className: 'text-left' }, | ||||
|       { title: '装货地', index: 'loadingAddressArr', width: '180px', className: 'text-left' }, | ||||
|       { | ||||
|         title: '卸货地', | ||||
|         className: 'text-left', | ||||
|         width: '180px', | ||||
|         index: 'unloadingAddressArr' | ||||
|       }, | ||||
|       { | ||||
|         title: '货物信息', | ||||
|         className: 'text-left', | ||||
|         width: '250px', | ||||
|         render: 'goodsName' | ||||
|       }, | ||||
|       { | ||||
|         title: '运费单价', | ||||
|         className: 'text-right', | ||||
|         width: '180px', | ||||
|         render: 'freightPrice' | ||||
|       }, | ||||
|       { | ||||
|         title: '接单数量', | ||||
|         className: 'text-right', | ||||
|         index: 'goodsNumber', | ||||
|         width: '180px' | ||||
|       }, | ||||
|       { | ||||
|         title: '结算重量', | ||||
|         className: 'text-right', | ||||
|         index: 'settlementWeight', | ||||
|         width: '150px' | ||||
|       }, | ||||
|       { | ||||
|         title: '承运司机', | ||||
|         className: 'text-left', | ||||
|         width: '250px', | ||||
|         index: 'driverName', | ||||
|         render: 'driverName' | ||||
|       }, | ||||
|       { | ||||
|         title: '收款人', | ||||
|         className: 'text-left', | ||||
|         width: '180px', | ||||
|         index: 'payeeName', | ||||
|         render: 'payeeName' | ||||
|       }, | ||||
|       { | ||||
|         title: '装卸货时间', | ||||
|         width: '200px', | ||||
|         className: 'text-left', | ||||
|         render: 'loadingTime' | ||||
|       }, | ||||
|       { | ||||
|         title: '创建时间', | ||||
|         width: '180px', | ||||
|         className: 'text-left', | ||||
|         index: 'createTime' | ||||
|       }, | ||||
|       { | ||||
|         title: '操作', | ||||
|         fixed: 'right', | ||||
|         width: '120px', | ||||
|         className: 'text-left', | ||||
|         buttons: [ | ||||
|           { | ||||
|             text: '查看评价 ', | ||||
|             click: _record => this.viewEvaluate(_record), | ||||
|             iif: item => item.billStatus == '5' | ||||
|           }, | ||||
|           { | ||||
|             text: '运费变更记录', | ||||
|             click: _record => this.OpenPrice(_record), | ||||
|             iif: item => | ||||
|               item.billStatus == '4' || item.billStatus == '5' || item.billStatus == '2' || item.billStatus == '3' || item.billStatus == '6' | ||||
|           }, | ||||
|           { | ||||
|             text: '变更运费 ', | ||||
|             click: _record => this.updateFreight(_record), | ||||
|             iif: item => item.billStatus == '4' || item.billStatus == '5' || item.billStatus == '2' || item.billStatus == '3' | ||||
|           }, | ||||
|           { | ||||
|             text: '确认签收 ', | ||||
|             click: _record => this.confirmReceipt(_record), | ||||
|             iif: item => item.billStatus == '4' | ||||
|           }, | ||||
|           { | ||||
|             text: '取消订单 ', | ||||
|             click: _record => this.cancellation(_record), | ||||
|             iif: item => | ||||
|               item.billStatus == '4' || item.billStatus == '5' || item.billStatus == '2' || item.billStatus == '3' || item.billStatus == '1' | ||||
|           }, | ||||
|           { | ||||
|             text: '修改订单 ', | ||||
|             click: _record => this.changeOrder(_record), | ||||
|             iif: item => item.billStatus == '4' || item.billStatus == '5' || item.billStatus == '2' || item.billStatus == '3' | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     ]; | ||||
|   } | ||||
|   initSTFloat() { | ||||
|     this.columnsFloat = [ | ||||
|       { | ||||
|         title: '序号', | ||||
|         className: 'text-center', | ||||
|         render: 'order' | ||||
|       }, | ||||
|       { | ||||
|         title: '操作时间', | ||||
|         className: 'text-center', | ||||
|         index: 'applyTime' | ||||
|       }, | ||||
|       { | ||||
|         title: '操作人', | ||||
|         className: 'text-center', | ||||
|         index: 'applyUserName' | ||||
|       }, | ||||
|       { title: '状态', index: 'handleStatusLabel', className: 'text-center' }, | ||||
|       { | ||||
|         title: '操作', | ||||
|         fixed: 'right', | ||||
|         className: 'text-left', | ||||
|         buttons: [ | ||||
|           { | ||||
|             text: '查看', | ||||
|             click: _record => this.FloatView(_record) | ||||
|           }, | ||||
|           // { | ||||
|           //   text: '查看协议', | ||||
|           //   click: (_record, _modal, _instance) => this.view(_record) | ||||
|           // }, | ||||
|           { | ||||
|             text: '撤销', | ||||
|             click: _record => this.revoke(_record), | ||||
|             iif: item => item.handleStatus === '1' || item.handleStatus === 1 | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|     ]; | ||||
|   } | ||||
|   initSTFloatView() { | ||||
|     this.columnsFloatView = [ | ||||
|       { | ||||
|         title: '费用名称', | ||||
|         width: '100px', | ||||
|         className: 'text-center', | ||||
|         index: 'costName' | ||||
|       }, | ||||
|       { | ||||
|         title: '变更前', | ||||
|         width: '100px', | ||||
|         className: 'text-center', | ||||
|         index: 'amountAfterChange', | ||||
|         render: 'amountAfterChange' | ||||
|       }, | ||||
|       { title: '变更值', index: 'amountchangeValue', width: '120px', className: 'text-center', render: 'amountchangeValue' }, | ||||
|       { title: '变更后', index: 'amountBeforeChange', render: 'amountBeforeChange', width: '120px', className: 'text-center' } | ||||
|     ]; | ||||
|   } | ||||
|   /** | ||||
|    * 查询字段个数 | ||||
|    */ | ||||
|   get queryFieldCount(): number { | ||||
|     return Object.keys(this.schema?.properties || {}).length; | ||||
|   } | ||||
|   get changeViewParams() { | ||||
|     return { | ||||
|       id: this.changeViewId | ||||
|     }; | ||||
|   } | ||||
|   /** | ||||
|    * 伸缩查询条件 | ||||
|    */ | ||||
|   expandToggle(): void { | ||||
|     this._$expand = !this._$expand; | ||||
|     this.sf?.setValue('/_$expand', this._$expand); | ||||
|   } | ||||
|   tabChange(item: any) {} | ||||
|   /** | ||||
|    * 重置表单 | ||||
|    */ | ||||
|   resetSF(): void { | ||||
|     this.sf.reset(); | ||||
|     this._$expand = false; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 导入货源 | ||||
|    */ | ||||
|   importGoodsSource() {} | ||||
|   audit(item: any) {} | ||||
|  | ||||
|   /* | ||||
|   * 审核关闭弹窗 | ||||
|   view: 1 | ||||
|   浮动费用: 0 | ||||
|   查看评价: 3 | ||||
|   */ | ||||
|   handleCancel(type: string) { | ||||
|     if (type === '0') { | ||||
|       this.isVisible = false; | ||||
|     } else if (type === '1') { | ||||
|       console.log(type); | ||||
|       this.isVisibleView = false; | ||||
|     } else if (type === '2') { | ||||
|       this.isVisibleEvaluate = false; | ||||
|     } | ||||
|   } | ||||
|   /** | ||||
|    * 审核通过按钮 | ||||
|    */ | ||||
|   handleOK() {} | ||||
|   OpenPrice(item: any) { | ||||
|     this.changeId = item.id; | ||||
|     this.isVisible = true; | ||||
|   } | ||||
|   /** | ||||
|    * 浮动费用查看 | ||||
|    */ | ||||
|   FloatView(item: any) { | ||||
|     this.changeViewId = item.id; | ||||
|     this.service.request(this.service.$api_getChangeRecordBulkDetail, { id: this.changeViewId }).subscribe(res => { | ||||
|       this.ViewCause = res; | ||||
|     }); | ||||
|     this.isVisibleView = true; | ||||
|   } | ||||
|   /** | ||||
|    *查看评价 | ||||
|    */ | ||||
|   viewEvaluate(item: any) { | ||||
|     this.isVisibleEvaluate = true; | ||||
|   } | ||||
|   /** | ||||
|    *变更运费 | ||||
|    */ | ||||
|   updateFreight(item: any) { | ||||
|     this.service.request(this.service.$api_getFreightChangeBulkDetail, { id: item.id }).subscribe(data => { | ||||
|       if (data) { | ||||
|         const modal = this.modal.create({ | ||||
|           nzTitle: '变更运费', | ||||
|           nzWidth: 580, | ||||
|           nzContent: UpdateFreightComponent, | ||||
|           nzComponentParams: { data: { ...data, billId: item.id } }, | ||||
|           nzFooter: null | ||||
|         }); | ||||
|         modal.afterClose.subscribe(_ => { | ||||
|           this.st.reload(1); | ||||
|           this.getGoodsSourceStatistical(); | ||||
|         }); | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   //  *确认签收 | ||||
|  | ||||
|   confirmReceipt(item: any) { | ||||
|     const modalRef = this.modal.create({ | ||||
|       nzTitle: '确认签收', | ||||
|       nzWidth: '50%', | ||||
|       nzContent: ConfirReceiptComponent, | ||||
|       nzComponentParams: { | ||||
|         i: item, | ||||
|         Status: 1 | ||||
|       }, | ||||
|       nzFooter: null | ||||
|     }); | ||||
|     modalRef.afterClose.subscribe((result: any) => { | ||||
|       this.st.load(1); | ||||
|       this.getGoodsSourceStatistical(); | ||||
|     }); | ||||
|   } | ||||
|   userAction() { | ||||
|     let params: any[] = []; | ||||
|     this.selectedRows.forEach(item => { | ||||
|       params.push(item.id); | ||||
|     }); | ||||
|     this.service.request(this.service.$api_get_batchSignBulkOrder, params).subscribe(res => { | ||||
|       if (res) { | ||||
|         this.st.load(1); | ||||
|         this.getGoodsSourceStatistical(); | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
|   // 取消订单 | ||||
|   cancellation(item: any) { | ||||
|     // api_get_cancelAnOrder | ||||
|     this.modal.confirm({ | ||||
|       nzTitle: '<b>确定取消该订单吗?</b>', | ||||
|       nzContent: `<b>取消后无法恢复,请确认</b>`, | ||||
|       nzOnOk: () => | ||||
|         this.service.request(this.service.$api_get_cancelAnOrder, { id: item.id }).subscribe(res => { | ||||
|           if (res === true) { | ||||
|             this.service.msgSrv.success('操作成功!'); | ||||
|             this.st?.reload(1); | ||||
|             this.getGoodsSourceStatistical(); | ||||
|             this.initST(); | ||||
|           } | ||||
|           this.st?.reload(1); | ||||
|           this.getGoodsSourceStatistical(); | ||||
|         }) | ||||
|     }); | ||||
|   } | ||||
|   revoke(item: any) { | ||||
|     this.modal.confirm({ | ||||
|       nzTitle: '是否确定立即撤销费用变更!</i>', | ||||
|       nzOnOk: () => | ||||
|         this.service.request(this.service.$api_get_revokeChangeRecord, { id: item.id }).subscribe(res => { | ||||
|           if (res) { | ||||
|             this.service.msgSrv.success('撤销成功!'); | ||||
|             this.stFloat.reload(); | ||||
|             this.st?.reload(1); | ||||
|             this.getGoodsSourceStatistical(); | ||||
|           } | ||||
|         }) | ||||
|     }); | ||||
|   } | ||||
|   // 修改订单 | ||||
|   changeOrder(value: any) { | ||||
|     this.router.navigate(['order-management/bulk-detailChange', value.id]); | ||||
|   } | ||||
| } | ||||
| @ -542,7 +542,6 @@ resourceStatus: any; | ||||
|     this.initST(); | ||||
|     setTimeout(() => { | ||||
|       this.st.load(1); | ||||
|       this.getGoodsSourceStatistical() | ||||
|     }, 500); | ||||
|   } | ||||
|   /** | ||||
|  | ||||
| @ -399,8 +399,7 @@ export class SupplyManagementBulkComponent implements OnInit { | ||||
|     this.resourceStatus = e; | ||||
|     this.initST(); | ||||
|     setTimeout(() => { | ||||
|       this.st.load(); | ||||
|       this.getGoodsSourceStatistical(); | ||||
|       this.st.load(1); | ||||
|     }, 500); | ||||
|   } | ||||
|  | ||||
|  | ||||
| @ -118,8 +118,7 @@ export class SupplyManagementVehicleComponent implements OnInit { | ||||
|   selectChange(e: number) { | ||||
|     this.resourceStatus = e; | ||||
|     setTimeout(() => { | ||||
|       this.st.load(); | ||||
|       this.getGoodsSourceStatistical(); | ||||
|       this.st.load(1); | ||||
|     }, 500); | ||||
|   } | ||||
|  | ||||
|  | ||||
| @ -364,8 +364,7 @@ tabs = { | ||||
|     } | ||||
|     this.initST(); | ||||
|     setTimeout(() => { | ||||
|       this.st.load(); | ||||
|       this.getGoodsSourceStatistical(); | ||||
|       this.st.load(1); | ||||
|     }, 500); | ||||
|   } | ||||
|   /** | ||||
|  | ||||
| @ -363,8 +363,7 @@ export class WaybillManagementVehicleComponent implements OnInit { | ||||
|     this.resourceStatus = e; | ||||
|     this.initST(); | ||||
|     setTimeout(() => { | ||||
|       this.st.load(); | ||||
|       this.getGoodsSourceStatistical(); | ||||
|       this.st.load(1); | ||||
|     }, 500); | ||||
|   } | ||||
|   /** | ||||
|  | ||||
		Reference in New Issue
	
	Block a user