Merge branch 'develop' of https://gitlab.eascs.com/tms-ui/tms-obc-web into develop
This commit is contained in:
		
							
								
								
									
										48
									
								
								src/app/routes/commom/less/trajectory.less
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								src/app/routes/commom/less/trajectory.less
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,48 @@ | ||||
| :host::ng-deep { | ||||
|     .text-truncate { | ||||
|         white-space: normal; | ||||
|     } | ||||
|  | ||||
|     .map_st { | ||||
|         max-height: 350px; | ||||
|         max-width : 360px; | ||||
|         position  : absolute; | ||||
|         top       : 20px; | ||||
|         right     : 49px; | ||||
|     } | ||||
|  | ||||
|     .map_radio { | ||||
|         position     : absolute; | ||||
|         top          : 20px; | ||||
|         left         : 20px; | ||||
|         background   : #F4F4F5; | ||||
|         box-shadow   : 0px 2px 8px 1px rgb(0 0 0 / 10%); | ||||
|         border-radius: 4px 4px 4px 4px; | ||||
|  | ||||
|         .ant-radio-button-wrapper { | ||||
|             background: #F4F4F5; | ||||
|             border    : unset; | ||||
|         } | ||||
|  | ||||
|         .ant-radio-button-wrapper-checked { | ||||
|             color     : #CF3834; | ||||
|             background: #ffffff; | ||||
|         } | ||||
|  | ||||
|         .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before { | ||||
|             background-color: #d9d9d9; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| .detail_title { | ||||
|     font-size  : 16px; | ||||
|     font-weight: 500; | ||||
|     color      : #252A3D; | ||||
|     line-height: 24px; | ||||
|  | ||||
|     span { | ||||
|         color      : #E60012; | ||||
|         font-weight: 700; | ||||
|     } | ||||
| } | ||||
| @ -4,14 +4,15 @@ | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2022-03-30 13:55:41 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-04-15 17:13:53 | ||||
|  * @LastEditTime : 2022-04-15 17:28:46 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\datatable\\components\\compliance\\customer\\customer.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
| <!-- 页头 --> | ||||
| <page-header-wrapper [title]="'数据报表'"></page-header-wrapper> | ||||
| <nz-card> | ||||
|   <sf   #sf mode="search" [schema]="searchSchema" button="none"></sf> | ||||
|   <div style="display: flex;"> | ||||
|     <sf   #sf mode="search" [schema]="searchSchema" button="none"></sf> | ||||
|   <div class="chooseBox"> | ||||
|     <div class="timeBox"> | ||||
|       <nz-radio-group [(ngModel)]="mode" nzButtonStyle="solid" (ngModelChange)="changeData()"> | ||||
| @ -27,9 +28,10 @@ | ||||
|  | ||||
|     </div> | ||||
|   </div> | ||||
|   </div> | ||||
|   <st | ||||
|   #st | ||||
|   [bordered]="true" | ||||
|   multiSort | ||||
|   [scroll]="{ x: '2000px' }" | ||||
|   [data]="service.$api_listCusComplianceReportPage" | ||||
|   [columns]="columns" | ||||
|  | ||||
| @ -5,7 +5,7 @@ import { SFComponent } from '@delon/form'; | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2022-03-30 13:55:41 | ||||
|  * @LastEditors  : Shiming | ||||
|  * @LastEditTime : 2022-04-15 17:13:03 | ||||
|  * @LastEditTime : 2022-04-15 17:40:53 | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\datatable\\components\\compliance\\customer\\customer.component.ts | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
|  */ | ||||
| @ -15,6 +15,7 @@ import { SFSchema } from '@delon/form'; | ||||
| import { ModalHelper, _HttpClient ,DatePipe} from '@delon/theme'; | ||||
| import { DataService } from '../../../services/data.service'; | ||||
| import { differenceInCalendarDays } from 'date-fns'; | ||||
| import { Placeholder } from '@angular/compiler/src/i18n/i18n_ast'; | ||||
|  | ||||
| @Component({ | ||||
|   selector: 'app-datatable-compliance-customer', | ||||
| @ -37,38 +38,59 @@ export class DatatableComplianceCustomerComponent implements OnInit { | ||||
|   today = new Date(); | ||||
|   searchSchema: SFSchema = { | ||||
|     properties: { | ||||
|       no: { | ||||
|       customerName: { | ||||
|         type: 'string', | ||||
|         title: '客户名称' | ||||
|         title: '', | ||||
|         ui: { | ||||
|           placeholder: '请输入客户名称', | ||||
|           change: (value: any) => { | ||||
|             console.log(value); | ||||
|             this.st.reload({ ...this.reqParams }); | ||||
|           } | ||||
|         }, | ||||
|       | ||||
|       }, | ||||
|       no2: { | ||||
|       salesmanName: { | ||||
|         type: 'string', | ||||
|         title: '业务员' | ||||
|         title: '', | ||||
|         ui: { | ||||
|           placeholder: '请输入业务员', | ||||
|           change: (value: any) => { | ||||
|             this.st.reload({ ...this.reqParams }); | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       no3: { | ||||
|       partnerName: { | ||||
|         type: 'string', | ||||
|         title: '合伙人名称' | ||||
|         title: '', | ||||
|         ui: { | ||||
|           placeholder: '请输入客户名称', | ||||
|           change: (value: any) => { | ||||
|             console.log(value); | ||||
|             this.st.reload({ ...this.reqParams }); | ||||
|           } | ||||
|           } | ||||
|       }, | ||||
|     } | ||||
|   }; | ||||
|   @ViewChild('st') private readonly st!: STComponent; | ||||
|   columns: STColumn[] = [ | ||||
|     { title: '公司名称', index: 'enterpriseName' ,}, | ||||
|     { title: '注册时间',  index: 'registerTime' }, | ||||
|     { title: '客户类型',  width: '100px', index: 'customerType' }, | ||||
|     { title: '业务员', index: 'salesmanName' }, | ||||
|     { title: '合伙人', index: 'partnerName' }, | ||||
|     { title: '订单数', index: 'billCounts' }, | ||||
|     { title: '订单不合格数', index: 'billQuaCounts' }, | ||||
|     { title: '订单不合格率', index: 'billQuaCountsPer' }, | ||||
|     { title: '货源单订单数', index: 'gsourceCounts' }, | ||||
|     { title: '合同单数', index: 'billConCounts' }, | ||||
|     { title: '货源单个', index: 'gsourceCounts' }, | ||||
|     { title: '运费直付单数', index: 'freightDirPayCounts' }, | ||||
|     { title: '运费代收单数', index: 'freightRepPayCounts' }, | ||||
|     { title: '手机直付', index: 'updatedAt' }, | ||||
|     { title: '汇款单数', index: 'updatedAt' }, | ||||
|     { title: '及时付款', index: 'timelyPayPer' }, | ||||
|     { title: '公司名称',width: '200px', index: 'enterpriseName' ,}, | ||||
|     { title: '注册时间', width: '200px', index: 'registerTime',}, | ||||
|     { title: '客户类型',  width: '200px', index: 'customerType' }, | ||||
|     { title: '业务员',width: '200px', index: 'salesmanName' }, | ||||
|     { title: '合伙人',width: '200px', index: 'partnerName' }, | ||||
|     { title: '订单数',width: '200px', index: 'billCounts' }, | ||||
|     { title: '订单不合格数',width: '200px', index: 'billQuaCounts' }, | ||||
|     { title: '订单不合格率',width: '200px', index: 'billQuaCountsPer' }, | ||||
|     { title: '货源单订单数',width: '200px', index: 'gsourceCounts' }, | ||||
|     { title: '合同单数', width: '200px',index: 'billConCounts' }, | ||||
|     { title: '货源单个',width: '200px', index: 'gsourceCounts' }, | ||||
|     { title: '运费直付单数',width: '200px', index: 'freightDirPayCounts' }, | ||||
|     { title: '运费代收单数',width: '200px', index: 'freightRepPayCounts' }, | ||||
|     { title: '手机直付', width: '200px',index: 'updatedAt' }, | ||||
|     { title: '汇款单数',width: '200px', index: 'updatedAt' }, | ||||
|     { title: '及时付款',width: '200px', index: 'timelyPayPer' }, | ||||
|    | ||||
|   ]; | ||||
|  | ||||
|  | ||||
| @ -181,7 +181,7 @@ export class DatatableOrderReportingComponent implements OnInit { | ||||
|             }, | ||||
|           } | ||||
|         }, | ||||
|         putTime: { | ||||
|         recentlyPutTime: { | ||||
|           title: '上传时间', | ||||
|           type: 'string', | ||||
|           ui: { | ||||
|  | ||||
| @ -4,20 +4,17 @@ import format from 'date-fns/format'; | ||||
| import { NzModalRef } from 'ng-zorro-antd/modal'; | ||||
| import { OrderManagementService } from 'src/app/routes/order-management/services/order-management.service'; | ||||
|  | ||||
|  | ||||
| @Component({ | ||||
|   selector: 'app-datatable-view-track', | ||||
|   templateUrl: './view-track.component.html', | ||||
|   templateUrl: './view-track.component.html' | ||||
| }) | ||||
| export class DatatableReportingvViewTrackComponent implements OnInit { | ||||
|   mapList: any[] = [];  //地图点位数据组 | ||||
|   addressItems: any[] = [];  //打点地址数据组 | ||||
|   trajectory = "car"; | ||||
|   mapList: any[] = []; //地图点位数据组 | ||||
|   addressItems: any[] = []; //打点地址数据组 | ||||
|   trajectory = 'car'; | ||||
|   pois: any[] = []; | ||||
|   id = ''; | ||||
|   constructor(public service: OrderManagementService, private modalRef: NzModalRef, public router: Router) { | ||||
|  | ||||
|   } | ||||
|   constructor(public service: OrderManagementService, private modalRef: NzModalRef, public router: Router) {} | ||||
|  | ||||
|   ngOnInit(): void { | ||||
|     if (this.trajectory === 'car') { | ||||
| @ -27,11 +24,7 @@ export class DatatableReportingvViewTrackComponent implements OnInit { | ||||
|     } | ||||
|   } | ||||
|  | ||||
|  | ||||
|  | ||||
|   selectTab(e: any) { | ||||
|  | ||||
|   } | ||||
|   selectTab(e: any) {} | ||||
|  | ||||
|   close(): void { | ||||
|     this.modalRef.destroy(); | ||||
| @ -58,8 +51,6 @@ export class DatatableReportingvViewTrackComponent implements OnInit { | ||||
|         } | ||||
|       } | ||||
|     }); | ||||
|  | ||||
|  | ||||
|   } | ||||
|  | ||||
|   // 获取司机轨迹 | ||||
| @ -75,12 +66,16 @@ export class DatatableReportingvViewTrackComponent implements OnInit { | ||||
|           }); | ||||
|         }); | ||||
|         this.mapList = list; | ||||
|         this.addressItems = [...res.enclosureDataAppTrack]; | ||||
|         if (this.addressItems && this.addressItems.length > 0) { | ||||
|           this.addressItems.forEach(item => { | ||||
|             item.parkBte = item.parkBte ? this.getLocalTime(item.parkBte) : ''; | ||||
|             item.cityName = item.appAdress; | ||||
|         const addressItems = [...res.tracks]; | ||||
|         if (addressItems) { | ||||
|           addressItems.forEach(item => { | ||||
|             // item.parkBte = item.gtm; | ||||
|             item.parkBte = this.getLocalTime(item.gtm); | ||||
|             item.parkAdr = item.appAdress; | ||||
|           }); | ||||
|           this.addressItems = [...addressItems]; | ||||
|         } else { | ||||
|           this.addressItems = []; | ||||
|         } | ||||
|       } | ||||
|     }); | ||||
| @ -88,5 +83,4 @@ export class DatatableReportingvViewTrackComponent implements OnInit { | ||||
|   getLocalTime(time: any) { | ||||
|     return format(new Date(parseInt(time)), 'yyyy-MM-dd HH:mm:ss'); | ||||
|   } | ||||
|  | ||||
| } | ||||
|  | ||||
| @ -30,7 +30,7 @@ export class AuthDrawerComponent implements OnInit { | ||||
|   constructor(public service: MenuManagerService, private modal: NzModalService) {} | ||||
|  | ||||
|   ngOnInit(): void { | ||||
|     this.loadFunctions(); | ||||
|     // this.loadFunctions(); | ||||
|   } | ||||
|  | ||||
|   beforeReq = (requestOptions: STRequestOptions) => { | ||||
|  | ||||
| @ -21,47 +21,44 @@ | ||||
|       <button nz-button nzType="primary" nzSize="small" nzDanger>{{i?.billStatusLabel}}</button> | ||||
|       <h4 class="ml-md" style="font-size: 18px;">订单号: {{ i?.billCode }}</h4> | ||||
|     </div> | ||||
|     <div nz-row style="display: flex; justify-content: end;"  class="mb-xs"> | ||||
|     <div nz-row style="display: flex; justify-content: end;" class="mb-xs"> | ||||
|       <div nz-col> | ||||
|         <button nz-button (click)="cancelChange()">取消修改</button> | ||||
|         <button nz-button nzType="primary" (click)="save()" nzGhost>保存修改</button> | ||||
|       </div> | ||||
|     </div> | ||||
|    <div> | ||||
|     <div> | ||||
|       <div sv-container> | ||||
|         <sv label="网络货运人">{{ i?.goodsResource?.enterpriseInfoName }} </sv> | ||||
|         <sv label="货主">{{ i?.goodsResource?.shipperAppUserName }} </sv> | ||||
|         <sv label="所属项目">{{i?.goodsResource?.enterpriseProjectName}}</sv> | ||||
|         <sv label="服务类型">{{i?.goodsResource?.serviceTypeLabel}}</sv> | ||||
|         <sv label="录单员">{{i?.createUserName}} {{  i?.createUserPhone ? "/" + i?.createUserPhone : ''}} </sv> | ||||
|         <sv label="调度员">{{i?.goodsResource?.dispatchName}}{{  i?.goodsResource?.dispatchPhone ? "/" + i?.goodsResource?.dispatchPhone : ''}} </sv> | ||||
|      </div> | ||||
|      <nz-tabset style="margin-top: 15px;"> | ||||
|       <nz-tab nzTitle="装卸货信息" (nzClick)="goDistance(distannce1)"> | ||||
|       </nz-tab> | ||||
|       <nz-tab nzTitle="基本信息" (nzClick)="goDistance(distannce2)"> | ||||
|       </nz-tab> | ||||
|       <nz-tab nzTitle="运费信息"  (nzClick)="goDistance(distannce3)"> | ||||
|       </nz-tab> | ||||
|       <nz-tab nzTitle="附件信息" (nzClick)="goDistance(distannce4)"> | ||||
|       </nz-tab> | ||||
|       <nz-tab nzTitle="轨迹信息" (nzClick)="goDistance(distannce5)"> | ||||
|       </nz-tab> | ||||
|     </nz-tabset> | ||||
|    </div> | ||||
|         <sv label="录单员">{{i?.createUserName}} {{ i?.createUserPhone ? "/" + i?.createUserPhone : ''}} </sv> | ||||
|         <sv label="调度员">{{i?.goodsResource?.dispatchName}}{{ i?.goodsResource?.dispatchPhone ? "/" + | ||||
|           i?.goodsResource?.dispatchPhone : ''}} </sv> | ||||
|       </div> | ||||
|       <nz-tabset style="margin-top: 15px;"> | ||||
|         <nz-tab nzTitle="装卸货信息" (nzClick)="goDistance(distannce1)"> | ||||
|         </nz-tab> | ||||
|         <nz-tab nzTitle="基本信息" (nzClick)="goDistance(distannce2)"> | ||||
|         </nz-tab> | ||||
|         <nz-tab nzTitle="运费信息" (nzClick)="goDistance(distannce3)"> | ||||
|         </nz-tab> | ||||
|         <nz-tab nzTitle="附件信息" (nzClick)="goDistance(distannce4)"> | ||||
|         </nz-tab> | ||||
|         <nz-tab nzTitle="轨迹信息" (nzClick)="goDistance(distannce5)"> | ||||
|         </nz-tab> | ||||
|       </nz-tabset> | ||||
|     </div> | ||||
|   </ng-template> | ||||
| </page-header-wrapper> | ||||
| <nz-card nzTitle="运单进度"  #distannce1> | ||||
| <nz-card nzTitle="运单进度" #distannce1> | ||||
|   <div class="approval-status"> | ||||
|     <div style="width: 60%; margin: 0 auto"> | ||||
|         <nz-steps [nzCurrent]="i?.scheduleVOList?.length + 1" nzLabelPlacement="vertical"> | ||||
|            <nz-step | ||||
|                   *ngFor="let item of i?.scheduleVOList" | ||||
|              [nzTitle]="item.state" | ||||
|              [nzSubtitle]="item.stateTime" | ||||
|              [nzStatus]="item.displayStatus === 'SHOW' ? 'finish' : 'wait'" | ||||
|            > | ||||
|           </nz-step> | ||||
|           <nz-step           *ngFor="let item of i?.scheduleVOList"     [nzTitle]="item.state"     | ||||
|           [nzSubtitle]="item.stateTime"     [nzStatus]="item.displayStatus === 'SHOW' ? 'finish' : 'wait'"  > | ||||
|             </nz-step> | ||||
|          </nz-steps> | ||||
|     </div> | ||||
|   </div> | ||||
| @ -69,9 +66,7 @@ | ||||
|  | ||||
|  | ||||
| <nz-card> | ||||
|   <div class="card-title" | ||||
|     >装卸货信息<span class="tip-font">预计公里数:{{ totalDistance }}km,预计行程耗时:{{ totalTime }}小时</span></div | ||||
|   > | ||||
|   <div class="card-title">装卸货信息<span class="tip-font">预计公里数:{{ totalDistance }}km,预计行程耗时:{{ totalTime }}小时</span></div> | ||||
|  | ||||
|   <form nz-form [formGroup]="validateForm1" role="form"> | ||||
|     <div nz-row [nzGutter]="24"> | ||||
| @ -82,14 +77,9 @@ | ||||
|             <nz-form-control [nzErrorTip]="'请输入装货地'"> | ||||
|               <div class="align-center"> | ||||
|                 <nz-input-group [nzSuffix]="endInconTemp1"> | ||||
|                   <input | ||||
|                     nz-input | ||||
|                     [(ngModel)]="data1.detailedAddress" | ||||
|                     (click)="openMap('start', idx,data1.detailedAddress)" | ||||
|                     formControlName="loadAddress{{ idx }}" | ||||
|                     placeholder="请输入装货地" | ||||
|                     readonly="true" | ||||
|                   /> | ||||
|                   <input nz-input [(ngModel)]="data1.detailedAddress" | ||||
|                     (click)="openMap('start', idx,data1.detailedAddress)" formControlName="loadAddress{{ idx }}" | ||||
|                     placeholder="请输入装货地" readonly="true" /> | ||||
|                 </nz-input-group> | ||||
|               </div> | ||||
|             </nz-form-control> | ||||
| @ -98,25 +88,12 @@ | ||||
|             <nz-form-label [nzSpan]="4" nzRequired>联系人</nz-form-label> | ||||
|             <div style="display: flex;"> | ||||
|               <nz-form-control [nzErrorTip]="'请输入联系人姓名'"> | ||||
|                 <input | ||||
|                   nz-input | ||||
|                   [(ngModel)]="data1.appUserName" | ||||
|                   formControlName="loadName{{ idx }}" | ||||
|                   name="loadName{{ idx }}" | ||||
|                   maxlength="30" | ||||
|                   placeholder="请输入联系人姓名" | ||||
|                 /> | ||||
|                 <input nz-input [(ngModel)]="data1.appUserName" formControlName="loadName{{ idx }}" | ||||
|                   name="loadName{{ idx }}" maxlength="30" placeholder="请输入联系人姓名" /> | ||||
|               </nz-form-control> | ||||
|               <nz-form-control [nzErrorTip]="'请输入联系人电话'"> | ||||
|                 <input | ||||
|                   style="margin-left: 12px" | ||||
|                   nz-input | ||||
|                   [(ngModel)]="data1.contractTelephone" | ||||
|                   maxlength="11" | ||||
|                   formControlName="loadPhone{{ idx }}" | ||||
|                   name="loadPhone{{ idx }}" | ||||
|                   placeholder="请输入联系人电话" | ||||
|                 /> | ||||
|                 <input style="margin-left: 12px" nz-input [(ngModel)]="data1.contractTelephone" maxlength="11" | ||||
|                   formControlName="loadPhone{{ idx }}" name="loadPhone{{ idx }}" placeholder="请输入联系人电话" /> | ||||
|               </nz-form-control> | ||||
|             </div> | ||||
|           </nz-form-item> | ||||
| @ -124,8 +101,7 @@ | ||||
|       </div> | ||||
|       <div nz-col [nzSpan]="4"> | ||||
|         <div style="display: flex; justify-content: center"> | ||||
|           <span class="swap-icon" (click)="swapAddress()"><i nz-icon nzType="swap" | ||||
|               nzTheme="outline"></i></span> | ||||
|           <span class="swap-icon" (click)="swapAddress()"><i nz-icon nzType="swap" nzTheme="outline"></i></span> | ||||
|         </div> | ||||
|       </div> | ||||
|       <div nz-col [nzSpan]="10"> | ||||
| @ -135,15 +111,9 @@ | ||||
|             <nz-form-control [nzErrorTip]="'请输入卸货地'"> | ||||
|               <div class="align-center"> | ||||
|                 <nz-input-group [nzSuffix]="endInconTemp1"> | ||||
|                   <input | ||||
|                     nz-input | ||||
|                     [(ngModel)]="data2.detailedAddress" | ||||
|                     (click)="openMap('end', idx,data2.detailedAddress)" | ||||
|                     formControlName="unloadAddress{{ idx }}" | ||||
|                     placeholder="请输入卸货地" | ||||
|                     name="unloadAddress{{ idx }}" | ||||
|                     readonly="true" | ||||
|                   /> | ||||
|                   <input nz-input [(ngModel)]="data2.detailedAddress" | ||||
|                     (click)="openMap('end', idx,data2.detailedAddress)" formControlName="unloadAddress{{ idx }}" | ||||
|                     placeholder="请输入卸货地" name="unloadAddress{{ idx }}" readonly="true" /> | ||||
|                 </nz-input-group> | ||||
|               </div> | ||||
|             </nz-form-control> | ||||
| @ -152,25 +122,13 @@ | ||||
|             <nz-form-label [nzSpan]="4" nzRequired>联系人</nz-form-label> | ||||
|             <div style="display: flex;"> | ||||
|               <nz-form-control [nzErrorTip]="'请输入联系人姓名'"> | ||||
|                 <input | ||||
|                   nz-input | ||||
|                   [(ngModel)]="data2.appUserName" | ||||
|                   maxlength="30" | ||||
|                   formControlName="unloadName{{ idx }}" | ||||
|                   name="unloadAddress{{ idx }}" | ||||
|                   placeholder="请输入联系人姓名" | ||||
|                 /> | ||||
|                 <input nz-input [(ngModel)]="data2.appUserName" maxlength="30" formControlName="unloadName{{ idx }}" | ||||
|                   name="unloadAddress{{ idx }}" placeholder="请输入联系人姓名" /> | ||||
|               </nz-form-control> | ||||
|               <nz-form-control [nzErrorTip]="'请输入联系人电话'"> | ||||
|                 <input | ||||
|                   style="margin-left: 12px" | ||||
|                   nz-input | ||||
|                   [(ngModel)]="data2.contractTelephone" | ||||
|                   formControlName="unloadPhone{{ idx }}" | ||||
|                   name="unloadAddress{{ idx }}" | ||||
|                   maxlength="11" | ||||
|                   placeholder="请输入联系人电话" | ||||
|                 /> | ||||
|                 <input style="margin-left: 12px" nz-input [(ngModel)]="data2.contractTelephone" | ||||
|                   formControlName="unloadPhone{{ idx }}" name="unloadAddress{{ idx }}" maxlength="11" | ||||
|                   placeholder="请输入联系人电话" /> | ||||
|               </nz-form-control> | ||||
|             </div> | ||||
|           </nz-form-item> | ||||
| @ -200,97 +158,82 @@ | ||||
|   </form> | ||||
| </nz-card> | ||||
| <nz-card nzTitle="基本信息" #distannce2> | ||||
|       <sf #sf3 [schema]="schema3" [formData]="sf3data" [button]="'none'" [ui]="ui3"></sf> | ||||
|       <sf #sf4 [schema]="schema4" [formData]="sf4data" [button]="'none'" [ui]="ui4"> | ||||
|         <ng-template sf-template="weight" let-item let-ui="ui"> | ||||
|          {{i?.goodsInfoList?.[0]?.weight}}吨,{{i?.goodsInfoList?.[0]?.volume}}方,{{i?.goodsInfoList?.[0]?.number}}件  | ||||
|         </ng-template> | ||||
|         <ng-template sf-template="volume" let-item let-ui="ui"> | ||||
|           <nz-input-group [nzAddOnAfter]="'方'"> | ||||
|             <input | ||||
|               nz-input | ||||
|               type="number" | ||||
|               [ngModel]="item.value" | ||||
|               min="0" | ||||
|               [max]="999999" | ||||
|               step="0.01" | ||||
|               (ngModelChange)="item.setValue($event)" | ||||
|               placeholder="总体积" | ||||
|             /> | ||||
|           </nz-input-group> | ||||
|         </ng-template> | ||||
|   | ||||
|         <ng-template sf-template="number" let-item let-ui="ui"> | ||||
|           <nz-input-group [nzAddOnAfter]="'车'"> | ||||
|             <input | ||||
|               nz-input | ||||
|               type="number" | ||||
|               [ngModel]="item.value" | ||||
|               min="0" | ||||
|               [max]="999999" | ||||
|               step="0.01" | ||||
|               (ngModelChange)="item.setValue($event)" | ||||
|               placeholder="总车次" | ||||
|             /> | ||||
|           </nz-input-group> | ||||
|         </ng-template> | ||||
|   <sf #sf3 [schema]="schema3" [formData]="sf3data" [button]="'none'" [ui]="ui3"></sf> | ||||
|   <sf #sf4 [schema]="schema4" [formData]="sf4data" [button]="'none'" [ui]="ui4"> | ||||
|     <ng-template sf-template="weight" let-item let-ui="ui"> | ||||
|       {{i?.goodsInfoList?.[0]?.weight}}吨,{{i?.goodsInfoList?.[0]?.volume}}方,{{i?.goodsInfoList?.[0]?.number}}件 | ||||
|     </ng-template> | ||||
|     <ng-template sf-template="volume" let-item let-ui="ui"> | ||||
|       <nz-input-group [nzAddOnAfter]="'方'"> | ||||
|         <input nz-input type="number" [ngModel]="item.value" min="0" [max]="999999" step="0.01" | ||||
|           (ngModelChange)="item.setValue($event)" placeholder="总体积" /> | ||||
|       </nz-input-group> | ||||
|     </ng-template> | ||||
|  | ||||
|         <ng-template sf-template="carmand" let-item let-ui="ui"> | ||||
|           {{ i?.carModel }}{{  i?.carLength ? "/" +  i?.carLength : ''}} | ||||
|         </ng-template> | ||||
|         <ng-template sf-template="drivers" let-item let-ui="ui"> | ||||
|           {{i?.driverName}}{{ i?.driverPhone ? "/" +  i?.driverPhone : ''}}{{  i?.carNo ? "/" +  i?.carNo : ''}} | ||||
|         </ng-template> | ||||
|         <ng-template sf-template="weightModel" let-item let-ui="ui"> | ||||
|           {{ i?.driverCarModelLabel }},{{ i?.driverCarLengthLabel }}米,{{ i?.driverCarWeight }}吨  | ||||
|         </ng-template> | ||||
|     <ng-template sf-template="number" let-item let-ui="ui"> | ||||
|       <nz-input-group [nzAddOnAfter]="'车'"> | ||||
|         <input nz-input type="number" [ngModel]="item.value" min="0" [max]="999999" step="0.01" | ||||
|           (ngModelChange)="item.setValue($event)" placeholder="总车次" /> | ||||
|       </nz-input-group> | ||||
|     </ng-template> | ||||
|  | ||||
|       <ng-template sf-template="loadTime" let-item let-ui="ui"> | ||||
|                <nz-date-picker nzShowTime nzFormat="yyyy-MM-dd HH:mm:ss"  [(ngModel)]="loadTime"></nz-date-picker> | ||||
|         </ng-template> | ||||
|       <ng-template sf-template="unloadTime" let-item let-ui="ui"> | ||||
|         <nz-date-picker nzShowTime nzFormat="yyyy-MM-dd HH:mm:ss"  [(ngModel)]="unloadTime"></nz-date-picker> | ||||
|         </ng-template> | ||||
|     <ng-template sf-template="carmand" let-item let-ui="ui"> | ||||
|       {{ i?.carModel }}{{ i?.carLength ? "/" + i?.carLength : ''}} | ||||
|     </ng-template> | ||||
|     <ng-template sf-template="drivers" let-item let-ui="ui"> | ||||
|       {{i?.driverName}}{{ i?.driverPhone ? "/" + i?.driverPhone : ''}}{{ i?.carNo ? "/" + i?.carNo : ''}} | ||||
|     </ng-template> | ||||
|     <ng-template sf-template="weightModel" let-item let-ui="ui"> | ||||
|       {{ i?.driverCarModelLabel }},{{ i?.driverCarLengthLabel }}米,{{ i?.driverCarWeight }}吨 | ||||
|     </ng-template> | ||||
|  | ||||
|       </sf> | ||||
|     <ng-template sf-template="loadTime" let-item let-ui="ui"> | ||||
|       <nz-date-picker nzShowTime nzFormat="yyyy-MM-dd HH:mm:ss" [(ngModel)]="loadTime"></nz-date-picker> | ||||
|     </ng-template> | ||||
|     <ng-template sf-template="unloadTime" let-item let-ui="ui"> | ||||
|       <nz-date-picker nzShowTime nzFormat="yyyy-MM-dd HH:mm:ss" [(ngModel)]="unloadTime"></nz-date-picker> | ||||
|     </ng-template> | ||||
|  | ||||
|   </sf> | ||||
| </nz-card> | ||||
| <!-- | ||||
| 结算依据为1时,卸货时间不为空,显示运费信息,否则隐藏 | ||||
| 结算依据为2时,装货时间不为空,显示运费信息,否则隐藏 | ||||
|  --> | ||||
|  <nz-card [nzTitle]="priceTitel" #distannce3 | ||||
|  [hidden]="!(i?.settlementBasis ==='1' && i?.unloadTime) && !(i?.settlementBasis ==='2' && i?.loadTime)"> | ||||
|  <ng-template #priceTitel> | ||||
|    <span>运费信息</span><span | ||||
|      style="padding-left: 24px; color: #f59a23;font-size: small;">到货后{{i?.goodsResource.paymentDays}}天内支付运费</span> | ||||
|  </ng-template> | ||||
|  <div style="margin-bottom: 18px"> | ||||
|    <span style="color: #da001b; font-size: 18px"> {{ i?.freightPrice }}{{ i?.freightTypeLabel }} </span>({{ | ||||
|    i?.settlementBasisLabel }},{{ | ||||
|    i?.ruleLabel | ||||
|    }}) | ||||
|  </div> | ||||
|  <st #st [data]="billExpenses" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }"> | ||||
|   <ng-template st-row="prices" let-item let-index="index"> | ||||
|     {{ item.price + item.surcharge | currency }} | ||||
| <nz-card [nzTitle]="priceTitel" #distannce3 | ||||
|   [hidden]="!(i?.settlementBasis ==='1' && i?.unloadTime) && !(i?.settlementBasis ==='2' && i?.loadTime)"> | ||||
|   <ng-template #priceTitel> | ||||
|     <span>运费信息</span><span | ||||
|       style="padding-left: 24px; color: #f59a23;font-size: small;">到货后{{i?.goodsResource?.paymentDays}}天内支付运费</span> | ||||
|   </ng-template> | ||||
|    <ng-template st-row="PriceType" let-item let-index="index"> 到付 </ng-template> | ||||
|    <ng-template st-row="price" let-item let-index="index"> {{item.price | currency}} </ng-template> | ||||
|    <ng-template st-row="surcharge" let-item let-index="index"> {{item.surcharge | currency}} </ng-template> | ||||
|  </st> | ||||
|  <div> | ||||
|    总计:<span style="color: #da001b; font-size: 18px">{{ i?.totalAmount | currency }}</span> (运费{{ i?.totalFreight | | ||||
|    currency }}, | ||||
|    附加费{{ i?.totalSurcharge | currency }},附加费率{{ i?.totalRate * 100 | number: '0.2-2' }}%) | ||||
|  </div> | ||||
|  <div *ngIf=" i?.payeeId !== i?.driverId" class="mt-xs">车队长:{{ i?.payeeName }}/{{ i?.payeePhone }}/{{ i?.payeeIdNo }}</div> | ||||
|   <div style="margin-bottom: 18px"> | ||||
|     <span style="color: #da001b; font-size: 18px"> {{ i?.freightPrice }}{{ i?.freightTypeLabel }} </span>({{ | ||||
|     i?.settlementBasisLabel }},{{ | ||||
|     i?.ruleLabel | ||||
|     }}) | ||||
|   </div> | ||||
|   <st #st [data]="billExpenses" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }"> | ||||
|     <ng-template st-row="prices" let-item let-index="index"> | ||||
|       {{ item.price + item.surcharge | currency }} | ||||
|     </ng-template> | ||||
|     <ng-template st-row="PriceType" let-item let-index="index"> 到付 </ng-template> | ||||
|     <ng-template st-row="price" let-item let-index="index"> {{item.price | currency}} </ng-template> | ||||
|     <ng-template st-row="surcharge" let-item let-index="index"> {{item.surcharge | currency}} </ng-template> | ||||
|   </st> | ||||
|   <div> | ||||
|     总计:<span style="color: #da001b; font-size: 18px">{{ i?.totalAmount | currency }}</span> (运费{{ i?.totalFreight | | ||||
|     currency }}, | ||||
|     附加费{{ i?.totalSurcharge | currency }},附加费率{{ i?.totalRate * 100 | number: '0.2-2' }}%) | ||||
|   </div> | ||||
|   <div *ngIf=" i?.payeeId !== i?.driverId" class="mt-xs">车队长:{{ i?.payeeName }}/{{ i?.payeePhone }}/{{ i?.payeeIdNo }} | ||||
|   </div> | ||||
| </nz-card> | ||||
|  | ||||
| <nz-card nzTitle="附件信息" #distannce4> | ||||
|   <sv-container> | ||||
|     <sv label="协议附件"> | ||||
|       <a *ngIf = "i?.contractContent?.contractContent" (click)="agreement('1')">查看附件</a>      | ||||
|       <a *ngIf = "i?.supplementContent?.contractContent" (click)="agreement('2')">补充协议</a> | ||||
|       <a *ngIf="i?.contractContent?.contractContent" (click)="agreement('1')">查看附件</a>      | ||||
|       <a *ngIf="i?.supplementContent?.contractContent" (click)="agreement('2')">补充协议</a> | ||||
|     </sv> | ||||
|   </sv-container> | ||||
|   <sv-container col="2" class="mt-md"> | ||||
| @ -305,34 +248,27 @@ | ||||
|     <sv label="回单类型" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> | ||||
|       {{ i?.supplementaryInformationVO?.receiptType === '1' ? '电子回单' : '纸质回单' }} | ||||
|     </sv> | ||||
|     <sv label="联系人" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> {{ i?.supplementaryInformationVO?.receiptUserName }} / {{ i?.supplementaryInformationVO?.phon }} </sv> | ||||
|     <sv label="联系人" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> {{ | ||||
|       i?.supplementaryInformationVO?.receiptUserName }} / {{ i?.supplementaryInformationVO?.phon }} </sv> | ||||
|     <sv label="所在地区" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> | ||||
|       {{ i?.supplementaryInformationVO?.area }} | ||||
|     </sv> | ||||
|     <sv label="详细地址" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> | ||||
|       {{ i?.supplementaryInformationVO?.address }} | ||||
|     </sv> | ||||
|    | ||||
|  | ||||
|   </sv-container> | ||||
|   <sv-container col="1" class="mt-md"> | ||||
|     <sv label="回单凭证" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> | ||||
|       <nz-upload | ||||
|       class="avatar-uploader" | ||||
|       [nzAction]="service.$api_upload_url" | ||||
|       [nzName]="'multipartFile'" | ||||
|       nzListType="picture-card" | ||||
|       [(nzFileList)]="listImagUrls" | ||||
|       [nzShowButton]="listImagUrls.length < 5" | ||||
|       [nzPreview]="handlePreview1" | ||||
|       [nzBeforeUpload]="beforeUpload" | ||||
|       (nzChange)="handleChange1($event)" | ||||
|     > | ||||
|       <div> | ||||
|         <i nz-icon nzType="plus"></i> | ||||
|         <div style="margin-top: 8px">请上传图片</div> | ||||
|       </div> | ||||
|     </nz-upload> | ||||
|     <!-- <nz-modal [nzVisible]="previewVisible1" [nzContent]="modalContent" [nzFooter]="null" (nzOnCancel)="previewVisible1 = false"> | ||||
|       <nz-upload class="avatar-uploader" [nzAction]="service.$api_upload_url" [nzName]="'multipartFile'" | ||||
|         nzListType="picture-card" [(nzFileList)]="listImagUrls" [nzShowButton]="listImagUrls.length < 5" | ||||
|         [nzPreview]="handlePreview1" [nzBeforeUpload]="beforeUpload" (nzChange)="handleChange1($event)"> | ||||
|         <div> | ||||
|           <i nz-icon nzType="plus"></i> | ||||
|           <div style="margin-top: 8px">请上传图片</div> | ||||
|         </div> | ||||
|       </nz-upload> | ||||
|       <!-- <nz-modal [nzVisible]="previewVisible1" [nzContent]="modalContent" [nzFooter]="null" (nzOnCancel)="previewVisible1 = false"> | ||||
|       <ng-template #modalContent> | ||||
|         <img [src]="previewImage1" [ngStyle]="{ width: '100%' }" /> | ||||
|       </ng-template> | ||||
| @ -345,35 +281,32 @@ | ||||
| </nz-card> | ||||
|  | ||||
|  | ||||
|  | ||||
| <nz-card> | ||||
|   <p class="detail_title" #distannce5><span>|</span> 轨迹信息</p> | ||||
|   <div nz-row> | ||||
|     <nz-card nzTitle="轨迹信息" style="width: 100%" [nzExtra]="extraTemplate" #distannce5> | ||||
|       <div nz-row> | ||||
|         <div nz-col [nzSpan]="12"> | ||||
|           <st [scroll]="{y: '500px'}" style="min-height: 600px;" #st [data]="addressItems" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }"> | ||||
|           </st> | ||||
|         </div> | ||||
|         <div nz-col [nzSpan]="12"> | ||||
|           <amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList"></amap-path-simplifier> | ||||
|         </div> | ||||
|       </div> | ||||
|     </nz-card> | ||||
|     <ng-template #extraTemplate> | ||||
|       <nz-radio-group [(ngModel)]="trajectory" (ngModelChange)="trajectoryChange($event)"> | ||||
|     <div nz-col [nzSpan]="24"> | ||||
|       <amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList"> | ||||
|       </amap-path-simplifier> | ||||
|       <st [scroll]="{ y: '350px' }" #st [data]="addressItems" [columns]="logColumns2" [ps]="0" | ||||
|         [page]="{ show: false, showSize: false }" size="small" class="map_st"> | ||||
|       </st> | ||||
|       <nz-radio-group [(ngModel)]="trajectory" (ngModelChange)="trajectoryChange($event)" class="map_radio"> | ||||
|         <label nz-radio-button nzValue="car">车辆轨迹</label> | ||||
|         <label nz-radio-button nzValue="driver">司机轨迹</label> | ||||
|       </nz-radio-group> | ||||
|     </ng-template> | ||||
|     </div> | ||||
|   </div> | ||||
| </nz-card> | ||||
|  | ||||
| <nz-modal [(nzVisible)]="isVisible"   [nzFooter]="nzModalFooter" [nzTitle]="modalTitle"  (nzOnOk)="handleOK()"  nzWidth="1000px" (nzOnCancel)="handleCancel()"> | ||||
| <nz-modal [(nzVisible)]="isVisible" [nzFooter]="nzModalFooter" [nzTitle]="modalTitle" (nzOnOk)="handleOK()" | ||||
|   nzWidth="1000px" (nzOnCancel)="handleCancel()"> | ||||
|   <ng-container *nzModalContent> | ||||
|     <div *ngIf="!modalcontent">暂无附件信息</div> | ||||
|     <div [innerHTML]="modalcontent"></div> | ||||
|   </ng-container> | ||||
|   <ng-template #nzModalFooter> | ||||
|     <button nz-button nzType="primary" (click)="handleOK()" [disabled]="">取消</button> | ||||
|     <button nz-button nzType="default" (click)="handleCancel()">确定  </button> | ||||
|     <button nz-button nzType="default" (click)="handleCancel()">确定 </button> | ||||
|   </ng-template> | ||||
| </nz-modal> | ||||
| @ -36,7 +36,7 @@ function getBase64(file: File): Promise<string | ArrayBuffer | null> { | ||||
| @Component({ | ||||
|   selector: 'app-supply-management-bulk-detail-change', | ||||
|   templateUrl: './bulk-detail-change.component.html', | ||||
|   styleUrls: ['./bulk-detail-change.component.less'] | ||||
|   styleUrls: ['./bulk-detail-change.component.less', '../../../commom/less/trajectory.less'] | ||||
| }) | ||||
| export class OrderManagementBulkDetailChangeComponent implements OnInit { | ||||
|   validateForm1: FormGroup; | ||||
| @ -932,7 +932,7 @@ export class OrderManagementBulkDetailChangeComponent implements OnInit { | ||||
|   handleOK() { | ||||
|     this.isVisible = false; | ||||
|   } | ||||
|   goDistance(elf: NzCardComponent) { | ||||
|   goDistance(elf: any) { | ||||
|     if (elf) { | ||||
|       elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' }); | ||||
|     } | ||||
| @ -997,12 +997,16 @@ export class OrderManagementBulkDetailChangeComponent implements OnInit { | ||||
|           }); | ||||
|         }); | ||||
|         this.mapList = list; | ||||
|         this.addressItems = [...res?.enclosureDataAppTrack]; | ||||
|         if (this.addressItems && this.addressItems.length > 0) { | ||||
|           this.addressItems.forEach(item => { | ||||
|             item.vinOutTime = this.getLocalTime(item.gtm); | ||||
|             item.cityName = item.appAdress; | ||||
|         const addressItems = [...res.tracks]; | ||||
|         if (addressItems) { | ||||
|           addressItems.forEach(item => { | ||||
|             // item.parkBte = item.gtm; | ||||
|             item.parkBte = this.getLocalTime(item.gtm); | ||||
|             item.parkAdr = item.appAdress; | ||||
|           }); | ||||
|           this.addressItems = [...addressItems]; | ||||
|         } else { | ||||
|           this.addressItems = []; | ||||
|         } | ||||
|       } | ||||
|     }); | ||||
|  | ||||
| @ -205,28 +205,22 @@ | ||||
| </nz-card> | ||||
|  | ||||
| <nz-card> | ||||
|   <p class="detail_title" #distannce5><span>|</span> 轨迹信息</p> | ||||
|   <div nz-row> | ||||
|     <nz-card nzTitle="轨迹信息" style="width: 100%" [nzExtra]="extraTemplate" #distannce5> | ||||
|       <div nz-row> | ||||
|         <div nz-col [nzSpan]="12"> | ||||
|           <st [scroll]="{y: '500px'}" style="min-height: 600px;" #st [data]="addressItems" [columns]="logColumns2" | ||||
|             [ps]="0" [page]="{ show: false, showSize: false }"> | ||||
|           </st> | ||||
|         </div> | ||||
|         <div nz-col [nzSpan]="12"> | ||||
|           <amap-path-simplifier [mapWidth]="'100%'" [pois]="pois" [mapHeight]="'600px'" [mapList]="mapList"> | ||||
|           </amap-path-simplifier> | ||||
|         </div> | ||||
|       </div> | ||||
|     </nz-card> | ||||
|     <ng-template #extraTemplate> | ||||
|       <nz-radio-group [(ngModel)]="trajectory" (ngModelChange)="trajectoryChange($event)"> | ||||
|     <div nz-col [nzSpan]="24"> | ||||
|       <amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList" [pois]="pois"> | ||||
|       </amap-path-simplifier> | ||||
|       <st [scroll]="{ y: '350px' }" #st [data]="addressItems" [columns]="logColumns2" [ps]="0" | ||||
|         [page]="{ show: false, showSize: false }" size="small" class="map_st"> | ||||
|       </st> | ||||
|       <nz-radio-group [(ngModel)]="trajectory" (ngModelChange)="trajectoryChange($event)" class="map_radio"> | ||||
|         <label nz-radio-button nzValue="car">车辆轨迹</label> | ||||
|         <label nz-radio-button nzValue="driver">司机轨迹</label> | ||||
|       </nz-radio-group> | ||||
|     </ng-template> | ||||
|     </div> | ||||
|   </div> | ||||
| </nz-card> | ||||
|  | ||||
| <nz-card> | ||||
|   <nz-tabset> | ||||
|     <nz-tab nzTitle="风险异常检测"> | ||||
|  | ||||
| @ -22,7 +22,7 @@ import format from 'date-fns/format'; | ||||
| @Component({ | ||||
|   selector: 'app-supply-management-bulk-detail', | ||||
|   templateUrl: './bulk-detail.component.html', | ||||
|   styleUrls: ['./bulk-detail.component.less'] | ||||
|   styleUrls: ['./bulk-detail.component.less', '../../../commom/less/trajectory.less'] | ||||
| }) | ||||
| export class OrderManagementBulkeDetailComponent implements OnInit { | ||||
|   MapList: any[] = []; | ||||
| @ -50,7 +50,7 @@ export class OrderManagementBulkeDetailComponent implements OnInit { | ||||
|   operateLogColums: STColumn[] = [ | ||||
|     { title: '内容', index: 'operationContent' }, | ||||
|     { title: '操作人', render: 'operator' }, | ||||
|     { title: '操作时间', index: 'operatorTimestamp' }, | ||||
|     { title: '操作时间', index: 'operatorTimestamp' } | ||||
|   ]; | ||||
|   logColumns: STColumn[] = [ | ||||
|     { title: '款项', index: 'expenseCodeLabel' }, | ||||
| @ -73,7 +73,7 @@ export class OrderManagementBulkeDetailComponent implements OnInit { | ||||
|     } | ||||
|   ]; | ||||
|   get logParams() { | ||||
|     return { operateObject: this.i?.billCode, operateTypeList: ['3','8'] } | ||||
|     return { operateObject: this.i?.billCode, operateTypeList: ['3', '8'] }; | ||||
|   } | ||||
|   trajectory = 'car'; | ||||
|   mapList: any[] = []; //地图点位数据组 | ||||
| @ -117,22 +117,24 @@ export class OrderManagementBulkeDetailComponent implements OnInit { | ||||
|             time: '计划卸货时间:' + res.unloadPlanTime | ||||
|           } | ||||
|         ]; | ||||
|         this.service.request(this.service.$api_get_log_list,{operateObject: this.i?.billCode, operateTypeList: ['3','8']}).subscribe(res => { | ||||
|           if (res) { | ||||
|             console.log('操作日志'); | ||||
|             console.log(res); | ||||
|             let a :any= [] | ||||
|             res.records.forEach((item: any) => { | ||||
|               a.push({ | ||||
|                 value: `操作人: ${item.operator} <br /> 操作内容: ${  item.operationContent}`, | ||||
|                 time: item.operatorTimestamp, | ||||
|                 color: 'green' | ||||
|               }) | ||||
|             }) | ||||
|             console.log(a); | ||||
|             this.operationList = a; | ||||
|           } | ||||
|         }); | ||||
|         this.service | ||||
|           .request(this.service.$api_get_log_list, { operateObject: this.i?.billCode, operateTypeList: ['3', '8'] }) | ||||
|           .subscribe(res => { | ||||
|             if (res) { | ||||
|               console.log('操作日志'); | ||||
|               console.log(res); | ||||
|               let a: any = []; | ||||
|               res.records.forEach((item: any) => { | ||||
|                 a.push({ | ||||
|                   value: `操作人: ${item.operator} <br /> 操作内容: ${item.operationContent}`, | ||||
|                   time: item.operatorTimestamp, | ||||
|                   color: 'green' | ||||
|                 }); | ||||
|               }); | ||||
|               console.log(a); | ||||
|               this.operationList = a; | ||||
|             } | ||||
|           }); | ||||
|       } | ||||
|     }); | ||||
|     this.service.request(this.service.$api_listBillComplianceAbnormalByBillId, { id: this.id }).subscribe(res => { | ||||
| @ -142,15 +144,14 @@ export class OrderManagementBulkeDetailComponent implements OnInit { | ||||
|         this.abnormalList = res; | ||||
|       } | ||||
|     }); | ||||
|   | ||||
|  | ||||
|     this.service.request(this.service.$api_getAbnormalWarningByBillId, { id: this.id }).subscribe(res => { | ||||
|       if (res) { | ||||
|         console.log('异常预警'); | ||||
|         console.log(res); | ||||
|         this.warringList = res | ||||
|         this.warringList = res; | ||||
|       } | ||||
|     }); | ||||
|    | ||||
|   } | ||||
|  | ||||
|   goBack() { | ||||
| @ -178,7 +179,7 @@ export class OrderManagementBulkeDetailComponent implements OnInit { | ||||
|   handleOK() { | ||||
|     this.isVisible = false; | ||||
|   } | ||||
|   goDistance(elf: NzCardComponent) { | ||||
|   goDistance(elf: any) { | ||||
|     if (elf) { | ||||
|       elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' }); | ||||
|     } | ||||
| @ -237,12 +238,16 @@ export class OrderManagementBulkeDetailComponent implements OnInit { | ||||
|           }); | ||||
|         }); | ||||
|         this.mapList = list; | ||||
|         this.addressItems = [...res.enclosureDataAppTrack]; | ||||
|         if (this.addressItems && this.addressItems.length > 0) { | ||||
|           this.addressItems.forEach(item => { | ||||
|             item.vinOutTime = this.getLocalTime(item.gtm); | ||||
|             item.cityName = item.appAdress; | ||||
|         const addressItems = [...res.tracks]; | ||||
|         if (addressItems) { | ||||
|           addressItems.forEach(item => { | ||||
|             // item.parkBte = item.gtm; | ||||
|             item.parkBte = this.getLocalTime(item.gtm); | ||||
|             item.parkAdr = item.appAdress; | ||||
|           }); | ||||
|           this.addressItems = [...addressItems]; | ||||
|         } else { | ||||
|           this.addressItems = []; | ||||
|         } | ||||
|       } | ||||
|     }); | ||||
|  | ||||
| @ -317,26 +317,22 @@ | ||||
| </nz-card> | ||||
|  | ||||
| <nz-card> | ||||
|   <p class="detail_title" #distannce5><span>|</span> 轨迹信息</p> | ||||
|   <div nz-row> | ||||
|     <nz-card nzTitle="轨迹信息" style="width: 100%" [nzExtra]="extraTemplate" #distannce5> | ||||
|       <div nz-row> | ||||
|         <div nz-col [nzSpan]="12"> | ||||
|           <st [scroll]="{y: '500px'}" style="min-height: 600px;" #st [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }"> | ||||
|           </st> | ||||
|         </div> | ||||
|         <div nz-col [nzSpan]="12"> | ||||
|           <amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList"></amap-path-simplifier> | ||||
|         </div> | ||||
|       </div> | ||||
|     </nz-card> | ||||
|     <ng-template #extraTemplate> | ||||
|       <nz-radio-group [(ngModel)]="trajectory" (ngModelChange)="trajectoryChange($event)"> | ||||
|     <div nz-col [nzSpan]="24"> | ||||
|       <amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList"> | ||||
|       </amap-path-simplifier> | ||||
|       <st [scroll]="{ y: '350px' }" #st [data]="addressItems" [columns]="logColumns2" [ps]="0" | ||||
|         [page]="{ show: false, showSize: false }" size="small" class="map_st"> | ||||
|       </st> | ||||
|       <nz-radio-group [(ngModel)]="trajectory" (ngModelChange)="trajectoryChange($event)" class="map_radio"> | ||||
|         <label nz-radio-button nzValue="car">车辆轨迹</label> | ||||
|         <label nz-radio-button nzValue="driver">司机轨迹</label> | ||||
|       </nz-radio-group> | ||||
|     </ng-template> | ||||
|     </div> | ||||
|   </div> | ||||
| </nz-card> | ||||
|  | ||||
| <nz-modal [(nzVisible)]="isVisible"  nzWidth="1000px"  [nzFooter]="nzModalFooter" [nzTitle]="modalTitle"  (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()"> | ||||
|   <ng-container *nzModalContent> | ||||
|     <div *ngIf="!modalcontent">暂无附件信息</div> | ||||
|  | ||||
| @ -34,7 +34,7 @@ function getBase64(file: File): Promise<string | ArrayBuffer | null> { | ||||
| @Component({ | ||||
|   selector: 'app-supply-management-vehicle-detail-change', | ||||
|   templateUrl: './vehicle-detail-change.component.html', | ||||
|   styleUrls: ['./vehicle-detail-change.component.less'] | ||||
|   styleUrls: ['./vehicle-detail-change.component.less', '../../../commom/less/trajectory.less'] | ||||
| }) | ||||
| export class OrderManagementVehicleDetailChangeComponent implements OnInit { | ||||
|   validateForm1: FormGroup; | ||||
| @ -317,8 +317,8 @@ export class OrderManagementVehicleDetailChangeComponent implements OnInit { | ||||
|   } | ||||
|   initData() { | ||||
|     this.service.request(this.service.$api_get_getWholeBillDetail, { id: this.id }).subscribe(res => { | ||||
|       console.log(res); | ||||
|       console.log(JSON.stringify(res)); | ||||
|       // console.log(res); | ||||
|       // console.log(JSON.stringify(res)); | ||||
|       if (res) { | ||||
|         this.i = res; | ||||
|         // this.initSF(); | ||||
| @ -871,7 +871,7 @@ export class OrderManagementVehicleDetailChangeComponent implements OnInit { | ||||
|   handleOK() { | ||||
|     this.isVisible = false; | ||||
|   } | ||||
|   goDistance(elf: NzCardComponent) { | ||||
|   goDistance(elf: any) { | ||||
|     if (elf) { | ||||
|       elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' }); | ||||
|       // elf['elementRef'].nativeElement.className = 'target-fix' | ||||
| @ -952,12 +952,16 @@ export class OrderManagementVehicleDetailChangeComponent implements OnInit { | ||||
|           }); | ||||
|         }); | ||||
|         this.mapList = list; | ||||
|         this.addressItems = [...res?.enclosureDataAppTrack]; | ||||
|         if (this.addressItems && this.addressItems.length > 0) { | ||||
|           this.addressItems.forEach(item => { | ||||
|             item.vinOutTime = this.getLocalTime(item.gtm); | ||||
|             item.cityName = item.appAdress; | ||||
|         const addressItems = [...res.tracks]; | ||||
|         if (addressItems) { | ||||
|           addressItems.forEach(item => { | ||||
|             // item.parkBte = item.gtm; | ||||
|             item.parkBte = this.getLocalTime(item.gtm); | ||||
|             item.parkAdr = item.appAdress; | ||||
|           }); | ||||
|           this.addressItems = [...addressItems]; | ||||
|         } else { | ||||
|           this.addressItems = []; | ||||
|         } | ||||
|       } | ||||
|     }); | ||||
|  | ||||
| @ -58,7 +58,6 @@ | ||||
| <nz-card nzTitle="运单进度" #distannce1> | ||||
|   <div class="approval-status"> | ||||
|     <div style="width: 60%; margin: 0 auto"> | ||||
|         | ||||
|       <nz-steps [nzCurrent]="i?.scheduleVOList?.length + 1" nzLabelPlacement="vertical"> | ||||
|         <nz-step *ngFor="let item of i?.scheduleVOList" [nzTitle]="item.state" [nzSubtitle]="item.stateTime" | ||||
|           [nzDescription]="item.cancelReason ? '取消原因:' + item.cancelReason : ''" | ||||
| @ -207,38 +206,32 @@ | ||||
| </nz-card> | ||||
|  | ||||
| <nz-card> | ||||
|   <p class="detail_title" #distannce5><span>|</span> 轨迹信息</p> | ||||
|   <div nz-row> | ||||
|     <nz-card nzTitle="轨迹信息" style="width: 100%" [nzExtra]="extraTemplate" #distannce5> | ||||
|       <div nz-row> | ||||
|         <div nz-col [nzSpan]="12"> | ||||
|           <st [scroll]="{ y: '500px' }" style="min-height: 600px" #st [data]="addressItems" [columns]="logColumns2" | ||||
|             [ps]="0" [page]="{ show: false, showSize: false }"> | ||||
|           </st> | ||||
|         </div> | ||||
|         <div nz-col [nzSpan]="12"> | ||||
|           <amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList" [pois]="pois"> | ||||
|           </amap-path-simplifier> | ||||
|         </div> | ||||
|       </div> | ||||
|     </nz-card> | ||||
|     <ng-template #extraTemplate> | ||||
|       <nz-radio-group [(ngModel)]="trajectory" (ngModelChange)="trajectoryChange($event)"> | ||||
|     <div nz-col [nzSpan]="24"> | ||||
|       <amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList" [pois]="pois"> | ||||
|       </amap-path-simplifier> | ||||
|       <st [scroll]="{ y: '350px' }" #st [data]="addressItems" [columns]="logColumns2" [ps]="0" | ||||
|         [page]="{ show: false, showSize: false }" size="small" class="map_st"> | ||||
|       </st> | ||||
|       <nz-radio-group [(ngModel)]="trajectory" (ngModelChange)="trajectoryChange($event)" class="map_radio"> | ||||
|         <label nz-radio-button nzValue="car">车辆轨迹</label> | ||||
|         <label nz-radio-button nzValue="driver">司机轨迹</label> | ||||
|       </nz-radio-group> | ||||
|     </ng-template> | ||||
|     </div> | ||||
|   </div> | ||||
| </nz-card> | ||||
| <nz-card > | ||||
|  | ||||
| <nz-card> | ||||
|   <nz-tabset> | ||||
|     <nz-tab nzTitle="风险异常检测"> | ||||
|       <div  *ngIf="abnormalList.length > 0"> | ||||
|       <div> 您的订单可能存在交易风险,请及时提交申诉材料,提交成功后,平台将及时完成审核并通知您! </div> | ||||
|       <div>如果您的运单没有问题,可以提出申诉,并提供相关资料,我们将24小时内审核反馈</div> | ||||
|       <ul *ngFor="let item of abnormalList"> | ||||
|         <li style="color: red;">系统识别:{{ item?.complianceTypeName }}</li> | ||||
|         <li style="color: red;">{{ item?.determineDetails }}</li> | ||||
|       </ul> | ||||
|       <div *ngIf="abnormalList.length > 0"> | ||||
|         <div> 您的订单可能存在交易风险,请及时提交申诉材料,提交成功后,平台将及时完成审核并通知您! </div> | ||||
|         <div>如果您的运单没有问题,可以提出申诉,并提供相关资料,我们将24小时内审核反馈</div> | ||||
|         <ul *ngFor="let item of abnormalList"> | ||||
|           <li style="color: red;">系统识别:{{ item?.complianceTypeName }}</li> | ||||
|           <li style="color: red;">{{ item?.determineDetails }}</li> | ||||
|         </ul> | ||||
|       </div> | ||||
|     </nz-tab> | ||||
|     <nz-tab nzTitle="异常预警"> | ||||
| @ -254,7 +247,7 @@ | ||||
|         {{item?.operator}}/{{item.telephone}} | ||||
|       </ng-template> | ||||
|     </st> --> | ||||
|     <app-logistics-time-line [data]="operationList"></app-logistics-time-line> | ||||
|       <app-logistics-time-line [data]="operationList"></app-logistics-time-line> | ||||
|  | ||||
|     </nz-tab> | ||||
|   </nz-tabset> | ||||
|  | ||||
| @ -19,7 +19,7 @@ import { OrderManagementService } from '../../services/order-management.service' | ||||
| @Component({ | ||||
|   selector: 'app-supply-management-vehicle-detail', | ||||
|   templateUrl: './vehicle-detail.component.html', | ||||
|   styleUrls: ['./vehicle-detail.component.less'] | ||||
|   styleUrls: ['./vehicle-detail.component.less', '../../../commom/less/trajectory.less'] | ||||
| }) | ||||
| export class OrderManagementVehicleDetailComponent implements OnInit { | ||||
|   id = this.route.snapshot.params.id; | ||||
| @ -46,7 +46,7 @@ export class OrderManagementVehicleDetailComponent implements OnInit { | ||||
|   approvalLsit: any; | ||||
|   isVisible = false; | ||||
|   logColumns2: STColumn[] = [ | ||||
|     { title: '时间', index: 'parkBte' }, | ||||
|     { title: '时间', index: 'parkBte', width: 120, className: 'text-center' }, | ||||
|     { title: '地点', index: 'parkAdr' } | ||||
|   ]; | ||||
|   logColumns3: STColumn[] = [ | ||||
| @ -56,7 +56,7 @@ export class OrderManagementVehicleDetailComponent implements OnInit { | ||||
|   operateLogColums: STColumn[] = [ | ||||
|     { title: '内容', index: 'operationContent' }, | ||||
|     { title: '操作人', render: 'operator' }, | ||||
|     { title: '操作时间', index: 'operatorTimestamp' }, | ||||
|     { title: '操作时间', index: 'operatorTimestamp' } | ||||
|   ]; | ||||
|   logColumns: STColumn[] = [ | ||||
|     { title: '款项', index: 'expenseCodeLabel' }, | ||||
| @ -84,7 +84,7 @@ export class OrderManagementVehicleDetailComponent implements OnInit { | ||||
|     this.getTrajectory(); | ||||
|   } | ||||
|   get logParams() { | ||||
|     return { operateObject: this.i?.billCode, operateTypeList: ['3','8'] } | ||||
|     return { operateObject: this.i?.billCode, operateTypeList: ['3', '8'] }; | ||||
|   } | ||||
|   initData() { | ||||
|     this.service.request(this.service.$api_get_getWholeBillDetail, { id: this.id }).subscribe(res => { | ||||
| @ -108,22 +108,24 @@ export class OrderManagementVehicleDetailComponent implements OnInit { | ||||
|             time: '计划卸货时间:' + res.unloadPlanTime | ||||
|           } | ||||
|         ]; | ||||
|         this.service.request(this.service.$api_get_log_list,{operateObject: this.i?.billCode, operateTypeList: ['3','8']}).subscribe(res => { | ||||
|           if (res) { | ||||
|             console.log('操作日志'); | ||||
|             console.log(res); | ||||
|             let a :any= [] | ||||
|             res.records.forEach((item: any) => { | ||||
|               a.push({ | ||||
|                 value: `操作人: ${item.operator} <br /> 操作内容: ${  item.operationContent}`, | ||||
|                 time: item.operatorTimestamp, | ||||
|                 color: 'green' | ||||
|               }) | ||||
|             }) | ||||
|             console.log(a); | ||||
|             this.operationList = a; | ||||
|           } | ||||
|         }); | ||||
|         this.service | ||||
|           .request(this.service.$api_get_log_list, { operateObject: this.i?.billCode, operateTypeList: ['3', '8'] }) | ||||
|           .subscribe(res => { | ||||
|             if (res) { | ||||
|               console.log('操作日志'); | ||||
|               console.log(res); | ||||
|               let a: any = []; | ||||
|               res.records.forEach((item: any) => { | ||||
|                 a.push({ | ||||
|                   value: `操作人: ${item.operator} <br /> 操作内容: ${item.operationContent}`, | ||||
|                   time: item.operatorTimestamp, | ||||
|                   color: 'green' | ||||
|                 }); | ||||
|               }); | ||||
|               console.log(a); | ||||
|               this.operationList = a; | ||||
|             } | ||||
|           }); | ||||
|         this.billExpenses = this.i?.billExpenseDetails?.filter( | ||||
|           (data: any) => data.expenseCode === 'PRE' || data.expenseCode === 'RECE' || data.expenseCode === 'BACK' | ||||
|         ); | ||||
| @ -140,10 +142,9 @@ export class OrderManagementVehicleDetailComponent implements OnInit { | ||||
|       if (res) { | ||||
|         console.log('异常预警'); | ||||
|         console.log(res); | ||||
|         this.warringList = res | ||||
|         this.warringList = res; | ||||
|       } | ||||
|     }); | ||||
|     | ||||
|   } | ||||
|   // 取消订单 | ||||
|   cancellation() { | ||||
| @ -185,7 +186,7 @@ export class OrderManagementVehicleDetailComponent implements OnInit { | ||||
|     this.isVisible = false; | ||||
|   } | ||||
|  | ||||
|   goDistance(elf: NzCardComponent) { | ||||
|   goDistance(elf: any) { | ||||
|     if (elf) { | ||||
|       elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' }); | ||||
|       // elf['elementRef'].nativeElement.className = 'target-fix' | ||||
| @ -205,11 +206,14 @@ export class OrderManagementVehicleDetailComponent implements OnInit { | ||||
|           }); | ||||
|         }); | ||||
|         this.mapList = list; | ||||
|         this.addressItems = res.parkArray; | ||||
|         if (this.addressItems && this.addressItems.length > 0) { | ||||
|           this.addressItems.forEach(item => { | ||||
|         const addressItems: any[] = res.parkArray; | ||||
|         if (addressItems?.length > 0) { | ||||
|           addressItems.forEach(item => { | ||||
|             item.parkBte = this.getLocalTime(item.parkBte); | ||||
|           }); | ||||
|           this.addressItems = [...addressItems]; | ||||
|         } else { | ||||
|           this.addressItems = []; | ||||
|         } | ||||
|       } | ||||
|     }); | ||||
| @ -228,13 +232,17 @@ export class OrderManagementVehicleDetailComponent implements OnInit { | ||||
|             time: item.gtm | ||||
|           }); | ||||
|         }); | ||||
|         this.mapList = list; | ||||
|         this.addressItems = [...res.enclosureDataAppTrack]; | ||||
|         if (this.addressItems && this.addressItems.length > 0) { | ||||
|           this.addressItems.forEach(item => { | ||||
|             item.vinOutTime = this.getLocalTime(item.gtm); | ||||
|             item.cityName = item.appAdress; | ||||
|         this.mapList = list || []; | ||||
|         const addressItems = [...res.tracks]; | ||||
|         if (addressItems) { | ||||
|           addressItems.forEach(item => { | ||||
|             // item.parkBte = item.gtm; | ||||
|             item.parkBte = this.getLocalTime(item.gtm); | ||||
|             item.parkAdr = item.appAdress; | ||||
|           }); | ||||
|           this.addressItems = [...addressItems]; | ||||
|         } else { | ||||
|           this.addressItems = []; | ||||
|         } | ||||
|       } | ||||
|     }); | ||||
|  | ||||
| @ -859,7 +859,7 @@ export class OrderManagementVehicleComponent extends BasicTableComponent impleme | ||||
|     const modalRef = this.modal.create({ | ||||
|       nzTitle: '查看轨迹', | ||||
|       nzContent: OneCarOrderViewtrackComponent, | ||||
|       nzWidth: '800px', | ||||
|       nzWidth: '900px', | ||||
|       nzComponentParams: { | ||||
|         i: item | ||||
|       }, | ||||
|  | ||||
| @ -8,27 +8,21 @@ | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\order-management\\modal\\vehicle\\view-track\\view-track.component.html | ||||
|  * Copyright (C) 2022 huzhenhong. All rights reserved. | ||||
| --> | ||||
|   <div> | ||||
|     <nz-card nzTitle="轨迹信息"   [nzExtra]="extraTemplate" > | ||||
|       <div style="display: flex; flex: 1;"> | ||||
|         <div style=" flex: 1;"> | ||||
|           <st #st [scroll]="{y: '500px'}" style="min-height: 600px;"  [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }"> | ||||
|            </st> | ||||
|         </div> | ||||
|         <div style="flex: 1;" > | ||||
|           <amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="MapList"></amap-path-simplifier> | ||||
|         </div> | ||||
|       </div> | ||||
|     </nz-card> | ||||
|     <ng-template #extraTemplate> | ||||
|       <nz-radio-group [(ngModel)]="trajectory"  (ngModelChange)="trajectoryChange($event)"> | ||||
|         <label nz-radio-button nzValue="car">车辆轨迹</label> | ||||
|         <label nz-radio-button nzValue="driver">司机轨迹</label> | ||||
|       </nz-radio-group> | ||||
|     </ng-template> | ||||
| <div nz-row> | ||||
|   <div nz-col [nzSpan]="24"> | ||||
|     <amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="MapList"> | ||||
|     </amap-path-simplifier> | ||||
|     <st [scroll]="{ y: '350px' }" #st [data]="addressItems" [columns]="logColumns2" [ps]="0" | ||||
|       [page]="{ show: false, showSize: false }" size="small" class="map_st"> | ||||
|     </st> | ||||
|     <nz-radio-group [(ngModel)]="trajectory" (ngModelChange)="trajectoryChange($event)" class="map_radio"> | ||||
|       <label nz-radio-button nzValue="car">车辆轨迹</label> | ||||
|       <label nz-radio-button nzValue="driver">司机轨迹</label> | ||||
|     </nz-radio-group> | ||||
|   </div> | ||||
| </div> | ||||
|  | ||||
| <div class="modal-footer"> | ||||
|   <button nz-button type="button" (click)="close(false)">取消</button> | ||||
|   <button nz-button type="submit" nzType="primary" (click)="close(true)">确认</button> | ||||
| </div> | ||||
| </div> | ||||
| @ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * @Description  :  | ||||
|  * @Description  : | ||||
|  * @Version      : 1.0 | ||||
|  * @Author       : Shiming | ||||
|  * @Date         : 2022-02-22 13:53:29 | ||||
| @ -25,21 +25,20 @@ import { NzMessageService } from 'ng-zorro-antd/message'; | ||||
| import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal'; | ||||
| import { OrderManagementService } from '../../../services/order-management.service'; | ||||
|  | ||||
|  | ||||
| @Component({ | ||||
|   selector: 'app-order-management-view-track', | ||||
|   styleUrls: ['./view-track.component.less'], | ||||
|   styleUrls: ['./view-track.component.less', '../../../../commom/less/trajectory.less'], | ||||
|   templateUrl: './view-track.component.html' | ||||
| }) | ||||
| export class OneCarOrderViewtrackComponent implements OnInit { | ||||
|   i: any;     // 单行数据 | ||||
|   MapList:any[] = [];  //地图点位数据组 | ||||
|   i: any; // 单行数据 | ||||
|   MapList: any[] = []; //地图点位数据组 | ||||
|   trajectory = 'car'; | ||||
|   mapList:any[] = [];  //地图点位数据组 | ||||
|   mapList: any[] = []; //地图点位数据组 | ||||
|   addressItems: any[] = []; //打点地址数据组 | ||||
|   logColumns2: STColumn[] = [ | ||||
|     { title: '时间', index: 'parkBte' }, | ||||
|     { title: '地点', index: 'parkAdr' }, | ||||
|     { title: '地点', index: 'parkAdr' } | ||||
|   ]; | ||||
|   constructor( | ||||
|     private modalRef: NzModalRef, | ||||
| @ -51,67 +50,70 @@ export class OneCarOrderViewtrackComponent implements OnInit { | ||||
|   ngOnInit(): void { | ||||
|     console.log(this.i); | ||||
|     this.getTrajectory(); | ||||
|    | ||||
|   } | ||||
|   close(value: boolean): void { | ||||
|         this.modalRef.close(false); | ||||
|     this.modalRef.close(false); | ||||
|   } | ||||
|     // 获取车辆轨迹 | ||||
|     getTrajectory(){ | ||||
|       this.service.request(this.service.$api_get_getTrajectory, { id: this.i?.id }).subscribe(res => { | ||||
|         if (res) { | ||||
|           const points = res.trackArray; | ||||
|           let list :any[] = []; | ||||
|           points?.forEach((item: any) => { | ||||
|             list.push({ | ||||
|               name: item.hgt, | ||||
|               lnglat: [Number((Number(item.lon) / 600000).toFixed(6)), Number((Number(item.lat) / 600000).toFixed(6))], | ||||
|               time: item.gtm | ||||
|             }); | ||||
|   // 获取车辆轨迹 | ||||
|   getTrajectory() { | ||||
|     this.service.request(this.service.$api_get_getTrajectory, { id: this.i?.id }).subscribe(res => { | ||||
|       if (res) { | ||||
|         const points = res.trackArray; | ||||
|         let list: any[] = []; | ||||
|         points?.forEach((item: any) => { | ||||
|           list.push({ | ||||
|             name: item.hgt, | ||||
|             lnglat: [Number((Number(item.lon) / 600000).toFixed(6)), Number((Number(item.lat) / 600000).toFixed(6))], | ||||
|             time: item.gtm | ||||
|           }); | ||||
|           this.mapList = list; | ||||
|           this.addressItems = res.parkAdr; | ||||
|           if(this.addressItems && this.addressItems.length > 0){ | ||||
|             this.addressItems.forEach(item => { | ||||
|               item.parkBte = this.getLocalTime(item.parkBte); | ||||
|             }); | ||||
|           } | ||||
|         } | ||||
|       }); | ||||
|     } | ||||
|    | ||||
|      // 获取司机轨迹 | ||||
|      getDriverTrajectory(){ | ||||
|       this.service.request(this.service.$api_get_getAppDriverPosition, { id: this.i?.id }).subscribe(res => { | ||||
|         if (res) { | ||||
|           const points = res.tracks; | ||||
|           let list :any[] = []; | ||||
|           points?.forEach((item: any) => { | ||||
|             list.push({ | ||||
|               name: item.hgt, | ||||
|               lnglat: [Number((Number(item.lon) / 600000).toFixed(6)), Number((Number(item.lat) / 600000).toFixed(6))], | ||||
|               time: item.gtm | ||||
|             }); | ||||
|         }); | ||||
|         this.mapList = list; | ||||
|         this.addressItems = res.parkAdr; | ||||
|         if (this.addressItems && this.addressItems.length > 0) { | ||||
|           this.addressItems.forEach(item => { | ||||
|             item.parkBte = this.getLocalTime(item.parkBte); | ||||
|           }); | ||||
|           this.mapList = list; | ||||
|           this.addressItems = [...res.enclosureDataAppTrack]; | ||||
|           if(this.addressItems && this.addressItems.length > 0){ | ||||
|             this.addressItems.forEach(item => { | ||||
|               item.vinOutTime = this.getLocalTime(item.gtm); | ||||
|               item.cityName = item.appAdress; | ||||
|             }); | ||||
|           } | ||||
|         } | ||||
|       }); | ||||
|      } | ||||
|      trajectoryChange(event:any){ | ||||
|       if(event ==='car'){ | ||||
|         this.getTrajectory() | ||||
|       }else if(event ==='driver'){ | ||||
|         this.getDriverTrajectory(); | ||||
|       } | ||||
|    } | ||||
|     getLocalTime(time: any) { | ||||
|       return format(new Date(parseInt(time)), 'yyyy-MM-dd HH:mm:ss'); | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   // 获取司机轨迹 | ||||
|   getDriverTrajectory() { | ||||
|     this.service.request(this.service.$api_get_getAppDriverPosition, { id: this.i?.id }).subscribe(res => { | ||||
|       if (res) { | ||||
|         const points = res.tracks; | ||||
|         let list: any[] = []; | ||||
|         points?.forEach((item: any) => { | ||||
|           list.push({ | ||||
|             name: item.hgt, | ||||
|             lnglat: [Number((Number(item.lon) / 600000).toFixed(6)), Number((Number(item.lat) / 600000).toFixed(6))], | ||||
|             time: item.gtm | ||||
|           }); | ||||
|         }); | ||||
|         this.mapList = list; | ||||
|         const addressItems = [...res.tracks]; | ||||
|         if (addressItems) { | ||||
|           addressItems.forEach(item => { | ||||
|             // item.parkBte = item.gtm; | ||||
|             item.parkBte = this.getLocalTime(item.gtm); | ||||
|             item.parkAdr = item.appAdress; | ||||
|           }); | ||||
|           this.addressItems = [...addressItems]; | ||||
|         } else { | ||||
|           this.addressItems = []; | ||||
|         } | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
|   trajectoryChange(event: any) { | ||||
|     if (event === 'car') { | ||||
|       this.getTrajectory(); | ||||
|     } else if (event === 'driver') { | ||||
|       this.getDriverTrajectory(); | ||||
|     } | ||||
|   } | ||||
|   getLocalTime(time: any) { | ||||
|     return format(new Date(parseInt(time)), 'yyyy-MM-dd HH:mm:ss'); | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -13,17 +13,19 @@ | ||||
|     </button> | ||||
|   </ng-template> | ||||
|   <ng-template #headerContent> | ||||
|     <div  nz-row> | ||||
|     <div nz-row> | ||||
|       <button nz-button nzType="primary" nzSize="small" nzDanger>{{i?.wayBillStatusLabel}}</button> | ||||
|       <h4 class="ml-md" style="font-size: 18px;">运单号: {{ i?.wayBillCode }}</h4> | ||||
|     </div> | ||||
|     <div nz-row style="display: flex; justify-content: end;" class="mb-xs"> | ||||
|       <div nz-col> | ||||
|         <button nz-button *ngIf="i?.wayBillStatus == '2'"  (click)="sureDepart(i)" acl  [acl-ability]="['WAYBILL-BULK-DETAIL-insertBulkStartCarInfo']">确认发车</button> | ||||
|         <button nz-button nzType="primary" *ngIf="i?.wayBillStatus == '3'" (click)="sureArrive(i)" nzGhost acl  [acl-ability]="['WAYBILL-BULK-DETAIL-insertBulkUnloadCarInfo']" >确认到车</button> | ||||
|         <button nz-button *ngIf="i?.wayBillStatus == '2'" (click)="sureDepart(i)" acl | ||||
|           [acl-ability]="['WAYBILL-BULK-DETAIL-insertBulkStartCarInfo']">确认发车</button> | ||||
|         <button nz-button nzType="primary" *ngIf="i?.wayBillStatus == '3'" (click)="sureArrive(i)" nzGhost acl | ||||
|           [acl-ability]="['WAYBILL-BULK-DETAIL-insertBulkUnloadCarInfo']">确认到车</button> | ||||
|       </div> | ||||
|     </div> | ||||
|    <div> | ||||
|     <div> | ||||
|       <div sv-container> | ||||
|         <sv label="网络货运人">{{ i?.enterpriseInfoName }} </sv> | ||||
|         <sv label="货主">{{ i?.shippername }} </sv> | ||||
| @ -33,20 +35,20 @@ | ||||
|         <sv label="外部订单号">{{ i?.externalBillCode }}</sv> | ||||
|         <sv label="货源编号">{{ i?.resourceCode }} </sv> | ||||
|         <sv label="承诺付款天数">{{ i?.paymentDays }}</sv> | ||||
|      </div> | ||||
|      <nz-tabset style="margin-top: 15px;"> | ||||
|       <nz-tab nzTitle="装卸货信息" (nzClick)="goDistance(distannce1)"> | ||||
|       </nz-tab> | ||||
|       <nz-tab nzTitle="基本信息" (nzClick)="goDistance(distannce1)"> | ||||
|       </nz-tab> | ||||
|       <nz-tab nzTitle="运费信息" (nzClick)="goDistance(distannce3)"> | ||||
|       </nz-tab> | ||||
|       <nz-tab nzTitle="附件信息" (nzClick)="goDistance(distannce4)"> | ||||
|       </nz-tab> | ||||
|       <nz-tab nzTitle="轨迹信息" (nzClick)="goDistance(distannce5)"> | ||||
|       </nz-tab> | ||||
|     </nz-tabset> | ||||
|    </div> | ||||
|       </div> | ||||
|       <nz-tabset style="margin-top: 15px;"> | ||||
|         <nz-tab nzTitle="装卸货信息" (nzClick)="goDistance(distannce1)"> | ||||
|         </nz-tab> | ||||
|         <nz-tab nzTitle="基本信息" (nzClick)="goDistance(distannce1)"> | ||||
|         </nz-tab> | ||||
|         <nz-tab nzTitle="运费信息" (nzClick)="goDistance(distannce3)"> | ||||
|         </nz-tab> | ||||
|         <nz-tab nzTitle="附件信息" (nzClick)="goDistance(distannce4)"> | ||||
|         </nz-tab> | ||||
|         <nz-tab nzTitle="轨迹信息" (nzClick)="goDistance(distannce5)"> | ||||
|         </nz-tab> | ||||
|       </nz-tabset> | ||||
|     </div> | ||||
|   </ng-template> | ||||
| </page-header-wrapper> | ||||
| <nz-card nzTitle="运单进度" #distannce1> | ||||
| @ -54,12 +56,8 @@ | ||||
|     <div style="width: 60%; margin: 0 auto"> | ||||
|         | ||||
|       <nz-steps [nzCurrent]="i?.scheduleVOList?.length + 1" nzLabelPlacement="vertical"> | ||||
|         <nz-step | ||||
|           *ngFor="let item of i?.scheduleVOList" | ||||
|           [nzTitle]="item.state" | ||||
|           [nzSubtitle]="item.stateTime" | ||||
|           [nzStatus]="item.displayStatus === 'SHOW' ? 'finish' : 'wait'" | ||||
|         ></nz-step> | ||||
|         <nz-step *ngFor="let item of i?.scheduleVOList" [nzTitle]="item.state" [nzSubtitle]="item.stateTime" | ||||
|           [nzStatus]="item.displayStatus === 'SHOW' ? 'finish' : 'wait'"></nz-step> | ||||
|       </nz-steps> | ||||
|     </div> | ||||
|   </div> | ||||
| @ -70,13 +68,14 @@ | ||||
|     <sv label="货物名称"> | ||||
|       {{i?.goodsInfos?.[0]?.goodsName}} | ||||
|     </sv> | ||||
| </sv-container> | ||||
| <sv-container col="2"> | ||||
|   </sv-container> | ||||
|   <sv-container col="2"> | ||||
|     <sv label="货物数量"> | ||||
|       {{i?.goodsInfos?.[0]?.weight}}吨,{{i?.goodsInfos?.[0]?.volume}}方,{{i?.goodsInfos?.[0]?.number}}件 | ||||
|     </sv> | ||||
|     <sv label="用车需求"> | ||||
|       {{i?.goodsInfos?.[0]?.carModelLabel}}{{ i?.goodsInfos?.[0]?.carLength ? '/' + i?.goodsInfos?.[0]?.carLength + '米': ''}} | ||||
|       {{i?.goodsInfos?.[0]?.carModelLabel}}{{ i?.goodsInfos?.[0]?.carLength ? '/' + i?.goodsInfos?.[0]?.carLength + '米': | ||||
|       ''}} | ||||
|     </sv> | ||||
|     <sv label="承运司机"> | ||||
|       {{i?.driver?.name}}/{{i?.driver?.phone}} | ||||
| @ -99,44 +98,44 @@ | ||||
|     <sv *ngIf="i?.wayBillStatus =='4' || i?.wayBillStatus =='5'" label="卸货数量"> | ||||
|       {{ i?.settlementWeight }}吨,{{ i?.settlementVolume }}方 | ||||
|     </sv> | ||||
| </sv-container> | ||||
| <div class="mt-md"> | ||||
|   <h4 class="text-md">装货卸货信息 | ||||
|     <span class="ml-sm text-sm">( | ||||
|       <label>{{i?.loadingNumber || '一'}}装</label> | ||||
|       <label>{{i?.dischargeNumber || '一'}}卸</label> | ||||
|       ) | ||||
|     </span> | ||||
|   </h4> | ||||
|   <div nz-row [nzGutter]="24"> | ||||
|     <div nz-col [nzSpan]="12"> | ||||
|       <div class="handling-info p-md"> | ||||
|         <div class="flex" *ngFor="let item of i?.loadingPlace"> | ||||
|           <div *ngIf="item.type === '1'" class="loading-row"> | ||||
|             <div class="handling-info-icon loading-bg">装</div> | ||||
|             <div class="info"> | ||||
|               <h4>装货地:{{item?.province}}{{item.city}}{{item.area}}{{item.detailedAddress}}</h4> | ||||
|               <p>联系人:{{item.appUserName}}/{{item.contractTelephone}}</p> | ||||
|   </sv-container> | ||||
|   <div class="mt-md"> | ||||
|     <h4 class="text-md">装货卸货信息 | ||||
|       <span class="ml-sm text-sm">( | ||||
|         <label>{{i?.loadingNumber || '一'}}装</label> | ||||
|         <label>{{i?.dischargeNumber || '一'}}卸</label> | ||||
|         ) | ||||
|       </span> | ||||
|     </h4> | ||||
|     <div nz-row [nzGutter]="24"> | ||||
|       <div nz-col [nzSpan]="12"> | ||||
|         <div class="handling-info p-md"> | ||||
|           <div class="flex" *ngFor="let item of i?.loadingPlace"> | ||||
|             <div *ngIf="item.type === '1'" class="loading-row"> | ||||
|               <div class="handling-info-icon loading-bg">装</div> | ||||
|               <div class="info"> | ||||
|                 <h4>装货地:{{item?.province}}{{item.city}}{{item.area}}{{item.detailedAddress}}</h4> | ||||
|                 <p>联系人:{{item.appUserName}}/{{item.contractTelephone}}</p> | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|     <div nz-col [nzSpan]="12"> | ||||
|       <div class="handling-info p-md"> | ||||
|         <div class="flex" *ngFor="let item of i?.dischargePlace"> | ||||
|           <div *ngIf="item.type === '2'" class="loading-row"> | ||||
|             <div class="handling-info-icon unloaing-bg">卸</div> | ||||
|             <div class="info"> | ||||
|               <h4>卸货地:{{item?.province}}{{item.city}}{{item.area}}{{item.detailedAddress}}</h4> | ||||
|               <p>联系人:{{item.appUserName}}/{{item.contractTelephone}}</p> | ||||
|       <div nz-col [nzSpan]="12"> | ||||
|         <div class="handling-info p-md"> | ||||
|           <div class="flex" *ngFor="let item of i?.dischargePlace"> | ||||
|             <div *ngIf="item.type === '2'" class="loading-row"> | ||||
|               <div class="handling-info-icon unloaing-bg">卸</div> | ||||
|               <div class="info"> | ||||
|                 <h4>卸货地:{{item?.province}}{{item.city}}{{item.area}}{{item.detailedAddress}}</h4> | ||||
|                 <p>联系人:{{item.appUserName}}/{{item.contractTelephone}}</p> | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
| </div> | ||||
| </nz-card> | ||||
| <!-- <nz-card  [nzTitle]="'运费信息' +'(到货后'+i?.paymentDays+'天内支付运费)'"  #distannce3> | ||||
|   <h2>{{i?.freightPrice}}{{i?.goodsInfos?.[0]?.freightTypeLabel}}({{ i?.goodsInfos?.[0]?.settlementBasisLabel ? i?.goodsInfos?.[0]?.settlementBasisLabel + ',' :' ' }}{{i?.goodsInfos?.[0]?.ruleLabel}})</h2> | ||||
| @ -165,38 +164,38 @@ | ||||
| 结算依据为1时,卸货时间不为空,显示运费信息,否则隐藏 | ||||
| 结算依据为2时,装货时间不为空,显示运费信息,否则隐藏 | ||||
|  --> | ||||
|  <nz-card [nzTitle]="priceTitel" #distannce3 | ||||
|  [hidden]="!(i?.settlementBasis ==='1' && i?.unloadTime) && !(i?.settlementBasis ==='2' && i?.loadTime)"> | ||||
|  <ng-template #priceTitel> | ||||
|    <span>运费信息</span><span | ||||
|      style="padding-left: 24px; color: #f59a23;font-size: small;">到货后{{i?.goodsResource.paymentDays}}天内支付运费</span> | ||||
|  </ng-template> | ||||
|  <div style="margin-bottom: 18px"> | ||||
|    <span style="color: #da001b; font-size: 18px"> {{ i?.freightPrice }}{{ i?.freightTypeLabel }} </span>({{ | ||||
|    i?.settlementBasisLabel }},{{ | ||||
|    i?.ruleLabel | ||||
|    }}) | ||||
|  </div> | ||||
|  <st #st [data]="billExpenses" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }"> | ||||
|   <ng-template st-row="prices" let-item let-index="index"> | ||||
|     {{ item.price + item.surcharge | currency }} | ||||
| <nz-card [nzTitle]="priceTitel" #distannce3 | ||||
|   [hidden]="!(i?.settlementBasis ==='1' && i?.unloadTime) && !(i?.settlementBasis ==='2' && i?.loadTime)"> | ||||
|   <ng-template #priceTitel> | ||||
|     <span>运费信息</span><span | ||||
|       style="padding-left: 24px; color: #f59a23;font-size: small;">到货后{{i?.goodsResource.paymentDays}}天内支付运费</span> | ||||
|   </ng-template> | ||||
|    <ng-template st-row="PriceType" let-item let-index="index"> 到付 </ng-template> | ||||
|    <ng-template st-row="price" let-item let-index="index"> {{item.price | currency}} </ng-template> | ||||
|    <ng-template st-row="surcharge" let-item let-index="index"> {{item.surcharge | currency}} </ng-template> | ||||
|  </st> | ||||
|  <div> | ||||
|    总计:<span style="color: #da001b; font-size: 18px">{{ i?.totalAmount | currency }}</span> (运费{{ i?.totalFreight | | ||||
|    currency }}, | ||||
|    附加费{{ i?.totalSurcharge | currency }},附加费率{{ i?.totalRate * 100 | number: '0.2-2' }}%) | ||||
|  </div> | ||||
|  <div *ngIf=" i?.payeeId !== i?.driverId" class="mt-xs">车队长:{{ i?.payeeName }}/{{ i?.payeePhone }}</div> | ||||
|   <div style="margin-bottom: 18px"> | ||||
|     <span style="color: #da001b; font-size: 18px"> {{ i?.freightPrice }}{{ i?.freightTypeLabel }} </span>({{ | ||||
|     i?.settlementBasisLabel }},{{ | ||||
|     i?.ruleLabel | ||||
|     }}) | ||||
|   </div> | ||||
|   <st #st [data]="billExpenses" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }"> | ||||
|     <ng-template st-row="prices" let-item let-index="index"> | ||||
|       {{ item.price + item.surcharge | currency }} | ||||
|     </ng-template> | ||||
|     <ng-template st-row="PriceType" let-item let-index="index"> 到付 </ng-template> | ||||
|     <ng-template st-row="price" let-item let-index="index"> {{item.price | currency}} </ng-template> | ||||
|     <ng-template st-row="surcharge" let-item let-index="index"> {{item.surcharge | currency}} </ng-template> | ||||
|   </st> | ||||
|   <div> | ||||
|     总计:<span style="color: #da001b; font-size: 18px">{{ i?.totalAmount | currency }}</span> (运费{{ i?.totalFreight | | ||||
|     currency }}, | ||||
|     附加费{{ i?.totalSurcharge | currency }},附加费率{{ i?.totalRate * 100 | number: '0.2-2' }}%) | ||||
|   </div> | ||||
|   <div *ngIf=" i?.payeeId !== i?.driverId" class="mt-xs">车队长:{{ i?.payeeName }}/{{ i?.payeePhone }}</div> | ||||
| </nz-card> | ||||
| <nz-card nzTitle="附件信息" #distannce4> | ||||
|   <sv-container> | ||||
|     <sv label="协议附件"> | ||||
|       <a *ngIf = "i?.contractContent?.contractContent" (click)="agreement('1')">查看附件</a>      | ||||
|       <a *ngIf = "i?.supplementContent?.contractContent" (click)="agreement('2')">补充协议</a> | ||||
|       <a *ngIf="i?.contractContent?.contractContent" (click)="agreement('1')">查看附件</a>      | ||||
|       <a *ngIf="i?.supplementContent?.contractContent" (click)="agreement('2')">补充协议</a> | ||||
|     </sv> | ||||
|   </sv-container> | ||||
|   <sv-container col="2" class="mt-md"> | ||||
| @ -227,7 +226,7 @@ | ||||
|     <sv label="详细地址" *ngIf="i?.receiptType == 1"> | ||||
|       {{i?.receiptAddress}} | ||||
|     </sv> | ||||
|    | ||||
|  | ||||
|   </sv-container> | ||||
|   <sv-container col="1" class="mt-md"> | ||||
|     <sv label="回单凭证" *ngIf="i?.receiptType == 1"> | ||||
| @ -238,35 +237,32 @@ | ||||
|     </sv> | ||||
|   </sv-container> | ||||
| </nz-card> | ||||
|  | ||||
| <nz-card> | ||||
|   <p class="detail_title" #distannce5><span>|</span> 轨迹信息</p> | ||||
|   <div nz-row> | ||||
|     <nz-card nzTitle="轨迹信息" style="width: 100%" [nzExtra]="extraTemplate" #distannce5> | ||||
|       <div nz-row> | ||||
|         <div nz-col [nzSpan]="12"> | ||||
|           <st [scroll]="{y: '500px'}" style="min-height: 600px;" #st [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }"> | ||||
|           </st> | ||||
|         </div> | ||||
|         <div nz-col [nzSpan]="12"> | ||||
|           <amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList"></amap-path-simplifier> | ||||
|         </div> | ||||
|       </div> | ||||
|     </nz-card> | ||||
|     <ng-template #extraTemplate> | ||||
|       <nz-radio-group [(ngModel)]="trajectory" (ngModelChange)="trajectoryChange($event)"> | ||||
|     <div nz-col [nzSpan]="24"> | ||||
|       <amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList"> | ||||
|       </amap-path-simplifier> | ||||
|       <st [scroll]="{ y: '350px' }" #st [data]="addressItems" [columns]="logColumns2" [ps]="0" | ||||
|         [page]="{ show: false, showSize: false }" size="small" class="map_st"> | ||||
|       </st> | ||||
|       <nz-radio-group [(ngModel)]="trajectory" (ngModelChange)="trajectoryChange($event)" class="map_radio"> | ||||
|         <label nz-radio-button nzValue="car">车辆轨迹</label> | ||||
|         <label nz-radio-button nzValue="driver">司机轨迹</label> | ||||
|       </nz-radio-group> | ||||
|     </ng-template> | ||||
|     </div> | ||||
|   </div> | ||||
| </nz-card> | ||||
|  | ||||
| <nz-modal [(nzVisible)]="isVisible"  nzWidth="1000px"   [nzFooter]="nzModalFooter" [nzTitle]="modalTitle"  (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()"> | ||||
| <nz-modal [(nzVisible)]="isVisible" nzWidth="1000px" [nzFooter]="nzModalFooter" [nzTitle]="modalTitle" | ||||
|   (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()"> | ||||
|   <ng-container *nzModalContent> | ||||
|     <div *ngIf="!modalcontent">暂无附件信息</div> | ||||
|     <div [innerHTML]="modalcontent"></div> | ||||
|   </ng-container> | ||||
|   <ng-template #nzModalFooter> | ||||
|     <button nz-button nzType="primary" (click)="handleOK()" [disabled]="">取消</button> | ||||
|     <button nz-button nzType="default" (click)="handleCancel()">确定  </button> | ||||
|     <button nz-button nzType="default" (click)="handleCancel()">确定 </button> | ||||
|   </ng-template> | ||||
| </nz-modal> | ||||
| @ -20,27 +20,26 @@ import { WaybillManagementServe } from '../../services/waybill-management.servic | ||||
| @Component({ | ||||
|   selector: 'app-supply-management-bulk-detail', | ||||
|   templateUrl: './bulk-detail.component.html', | ||||
|   styleUrls: ['./bulk-detail.component.less'] | ||||
|   styleUrls: ['./bulk-detail.component.less', '../../../commom/less/trajectory.less'] | ||||
| }) | ||||
| export class WaybillManagementBulkeDetailComponent implements OnInit { | ||||
|  | ||||
|   id = this.route.snapshot.params.id; | ||||
|   i: any; | ||||
|   totalObj: any; | ||||
|   attObj: any; | ||||
|   isVisible = false; | ||||
|   MapList: any[]=[]; | ||||
|   MapList: any[] = []; | ||||
|   trajectory = 'car'; | ||||
|   mapList:any[] = [];  //地图点位数据组 | ||||
|   addressItems:any[] = [];  //打点地址数据组 | ||||
|   mapList: any[] = []; //地图点位数据组 | ||||
|   addressItems: any[] = []; //打点地址数据组 | ||||
|   billExpenses: any[] = []; //运费信息表格信息 | ||||
|   imges: any; | ||||
|   modalcontent: any; | ||||
|   modalTitle:string = ''; | ||||
|   modalTitle: string = ''; | ||||
|   unLoadingPlaceVOList: any = []; | ||||
|   logColumns2: STColumn[] = [ | ||||
|     { title: '时间', index: 'parkBte' }, | ||||
|     { title: '地点', index: 'parkAdr' }, | ||||
|     { title: '地点', index: 'parkAdr' } | ||||
|   ]; | ||||
|   logColumns: STColumn[] = [ | ||||
|     { title: '款项', index: 'costCodeLabel' }, | ||||
| @ -65,33 +64,30 @@ export class WaybillManagementBulkeDetailComponent implements OnInit { | ||||
|   constructor( | ||||
|     private route: ActivatedRoute, | ||||
|     private msgSrv: NzMessageService, | ||||
|     private modal: NzModalService,  | ||||
|     private modal: NzModalService, | ||||
|     private service: WaybillManagementServe, | ||||
|     private modalService: NzModalService | ||||
|   ) { | ||||
|  | ||||
|   } | ||||
|   ) {} | ||||
|  | ||||
|   ngOnInit(): void { | ||||
|     this.initData() | ||||
|     this.getTrajectory() | ||||
|     this.initData(); | ||||
|     this.getTrajectory(); | ||||
|   } | ||||
|   initData() { | ||||
|     const params = { | ||||
|       id: this.id | ||||
|     } | ||||
|     this.service.request(this.service.$api_get_getBulkDetail, params).subscribe((res) => { | ||||
|       console.log(res) | ||||
|       this.unLoadingPlaceVOList.push(...res.loadingPlace) | ||||
|       this.unLoadingPlaceVOList.push(...res.dischargePlace) | ||||
|       console.log(this.unLoadingPlaceVOList) | ||||
|     }; | ||||
|     this.service.request(this.service.$api_get_getBulkDetail, params).subscribe(res => { | ||||
|       console.log(res); | ||||
|       this.unLoadingPlaceVOList.push(...res.loadingPlace); | ||||
|       this.unLoadingPlaceVOList.push(...res.dischargePlace); | ||||
|       console.log(this.unLoadingPlaceVOList); | ||||
|       this.i = res; | ||||
|       this.billExpenses = this.i?.billExpenseDetails?.filter((data: any) => data.costCode === 'TRA'); | ||||
|         this.i.scheduleVOList = this.i?.scheduleVOList?.filter((data:any)=>data.displayStatus !=="HIDE"); | ||||
|     }) | ||||
|       this.i.scheduleVOList = this.i?.scheduleVOList?.filter((data: any) => data.displayStatus !== 'HIDE'); | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|  | ||||
|   hand() { | ||||
|     this.modalService.create({ | ||||
|       nzTitle: '', | ||||
| @ -104,66 +100,64 @@ export class WaybillManagementBulkeDetailComponent implements OnInit { | ||||
|     window.history.go(-1); | ||||
|   } | ||||
|   agreement(value: any) { | ||||
|     if(value  ==='1'){ | ||||
|     if (value === '1') { | ||||
|       this.modalTitle = '附件信息'; | ||||
|       this.modalcontent = this.i?.contractContent?.contractContent; | ||||
|        | ||||
|     }else if(value === '2'){ | ||||
|     } else if (value === '2') { | ||||
|       this.modalTitle = '补充协议'; | ||||
|       this.modalcontent = this.i?.supplementContent?.contractContent; | ||||
|     } | ||||
|     this.isVisible = true; | ||||
|   } | ||||
|   handleCancel() { | ||||
|     this.isVisible = false | ||||
| } | ||||
| handleOK() { | ||||
|   this.isVisible = false | ||||
| } | ||||
| goDistance(elf: NzCardComponent) { | ||||
|   if (elf) { | ||||
|     elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' }); | ||||
|     this.isVisible = false; | ||||
|   } | ||||
|   handleOK() { | ||||
|     this.isVisible = false; | ||||
|   } | ||||
|   goDistance(elf: any) { | ||||
|     if (elf) { | ||||
|       elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' }); | ||||
|     } | ||||
|   } | ||||
|   //  *确认发车 | ||||
|   sureDepart(item: any) { | ||||
|     const modalRef = this.modal.create({ | ||||
|       nzTitle: '确认发车', | ||||
|       nzWidth: '50%', | ||||
|       nzContent: VehicleSureDepartComponent, | ||||
|       nzComponentParams: { | ||||
|         i: item, | ||||
|         Status: 2 | ||||
|       }, | ||||
|       nzFooter: null | ||||
|     }); | ||||
|     modalRef.afterClose.subscribe((result: any) => { | ||||
|       this.initData(); | ||||
|     }); | ||||
|   } | ||||
|   // 确认到车 | ||||
|   sureArrive(item: any) { | ||||
|     const modalRef = this.modal.create({ | ||||
|       nzTitle: '确认到车', | ||||
|       nzWidth: '50%', | ||||
|       nzContent: VehicleSureArriveComponent, | ||||
|       nzComponentParams: { | ||||
|         i: item, | ||||
|         Status: 2 | ||||
|       }, | ||||
|       nzFooter: null | ||||
|     }); | ||||
|     modalRef.afterClose.subscribe((result: any) => { | ||||
|       this.initData(); | ||||
|     }); | ||||
|   } | ||||
| } | ||||
|  //  *确认发车 | ||||
|  sureDepart(item: any) { | ||||
|   const modalRef = this.modal.create({ | ||||
|     nzTitle: '确认发车', | ||||
|     nzWidth: '50%', | ||||
|     nzContent: VehicleSureDepartComponent, | ||||
|     nzComponentParams: { | ||||
|       i: item, | ||||
|      Status: 2 | ||||
|     }, | ||||
|     nzFooter: null | ||||
|   }); | ||||
|   modalRef.afterClose.subscribe((result: any) => { | ||||
|     this.initData() | ||||
|  | ||||
| }); | ||||
| } | ||||
| // 确认到车 | ||||
| sureArrive(item: any) { | ||||
|   const modalRef = this.modal.create({ | ||||
|     nzTitle: '确认到车', | ||||
|     nzWidth: '50%', | ||||
|     nzContent: VehicleSureArriveComponent, | ||||
|     nzComponentParams: { | ||||
|       i: item, | ||||
|      Status: 2 | ||||
|     }, | ||||
|     nzFooter: null | ||||
|   }); | ||||
|   modalRef.afterClose.subscribe((result: any) => { | ||||
|     this.initData() | ||||
| }); | ||||
| } | ||||
|   // 获取车辆轨迹 | ||||
|   getTrajectory(){ | ||||
|   getTrajectory() { | ||||
|     this.service.request(this.service.$api_get_getTrajectory, { id: this.id }).subscribe(res => { | ||||
|       if (res) { | ||||
|         const points = res.trackArray; | ||||
|         let list :any[] = []; | ||||
|         let list: any[] = []; | ||||
|         points?.forEach((item: any) => { | ||||
|           list.push({ | ||||
|             name: item.hgt, | ||||
| @ -173,7 +167,7 @@ sureArrive(item: any) { | ||||
|         }); | ||||
|         this.mapList = list; | ||||
|         this.addressItems = res.parkArray; | ||||
|         if(this.addressItems && this.addressItems.length > 0){ | ||||
|         if (this.addressItems && this.addressItems.length > 0) { | ||||
|           this.addressItems.forEach(item => { | ||||
|             item.parkBte = this.getLocalTime(item.parkBte); | ||||
|           }); | ||||
| @ -182,12 +176,12 @@ sureArrive(item: any) { | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|    // 获取司机轨迹 | ||||
|    getDriverTrajectory(){ | ||||
|   // 获取司机轨迹 | ||||
|   getDriverTrajectory() { | ||||
|     this.service.request(this.service.$api_get_getAppDriverPosition, { id: this.id }).subscribe(res => { | ||||
|       if (res) { | ||||
|         const points = res.tracks; | ||||
|         let list :any[] = []; | ||||
|         let list: any[] = []; | ||||
|         points?.forEach((item: any) => { | ||||
|           list.push({ | ||||
|             name: item.hgt, | ||||
| @ -196,23 +190,27 @@ sureArrive(item: any) { | ||||
|           }); | ||||
|         }); | ||||
|         this.mapList = list; | ||||
|         this.addressItems = [...res.enclosureDataAppTrack]; | ||||
|         if(this.addressItems && this.addressItems.length > 0){ | ||||
|           this.addressItems.forEach(item => { | ||||
|             item.vinOutTime = this.getLocalTime(item.gtm); | ||||
|             item.cityName = item.appAdress; | ||||
|         const addressItems = [...res.tracks]; | ||||
|         if (addressItems) { | ||||
|           addressItems.forEach(item => { | ||||
|             // item.parkBte = item.gtm; | ||||
|             item.parkBte = this.getLocalTime(item.gtm); | ||||
|             item.parkAdr = item.appAdress; | ||||
|           }); | ||||
|           this.addressItems = [...addressItems]; | ||||
|         } else { | ||||
|           this.addressItems = []; | ||||
|         } | ||||
|       } | ||||
|     }); | ||||
|    } | ||||
|    trajectoryChange(event:any){ | ||||
|     if(event ==='car'){ | ||||
|       this.getTrajectory() | ||||
|     }else if(event ==='driver'){ | ||||
|   } | ||||
|   trajectoryChange(event: any) { | ||||
|     if (event === 'car') { | ||||
|       this.getTrajectory(); | ||||
|     } else if (event === 'driver') { | ||||
|       this.getDriverTrajectory(); | ||||
|     } | ||||
|  } | ||||
|   } | ||||
|   getLocalTime(time: any) { | ||||
|     return format(new Date(parseInt(time)), 'yyyy-MM-dd HH:mm:ss'); | ||||
|   } | ||||
|  | ||||
| @ -6,7 +6,7 @@ | ||||
|  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE | ||||
|  * @FilePath     : \\tms-obc-web\\src\\app\\routes\\waybill-management\\components\\vehicle-detail\\vehicle-detail.component.html | ||||
| --> | ||||
| <page-header-wrapper [title]="'整车运单详情'" [logo]="logo" [content]="headerContent"  [ngClass]="{'affix': scrollTop>210}"> | ||||
| <page-header-wrapper [title]="'整车运单详情'" [logo]="logo" [content]="headerContent" [ngClass]="{'affix': scrollTop>210}"> | ||||
|   <ng-template #logo> | ||||
|     <button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()"> | ||||
|       <i nz-icon nzType="left" nzTheme="outline"></i> | ||||
| @ -17,13 +17,15 @@ | ||||
|       <button nz-button nzType="primary" nzSize="small" nzDanger>{{i?.wayBillStatusLabel}}</button> | ||||
|       <h4 class="ml-md" style="font-size: 18px;">运单号: {{ i?.wayBillCode }}</h4> | ||||
|     </div> | ||||
|     <div nz-row style="display: flex; justify-content: end; " class="mb-xs" > | ||||
|       <div nz-col > | ||||
|         <button nz-button (click)="sureDepart(i)" *ngIf="i?.wayBillStatus == '2'" acl  [acl-ability]="['WAYBILL-VEHICLE-DETAIL-wholeStartCarInfo']">确认发车</button> | ||||
|         <button nz-button nzType="primary" (click)="sureArrive(i)" *ngIf="i?.wayBillStatus == '3'" nzGhost acl  [acl-ability]="['WAYBILL-VEHICLE-DETAIL-wholeUnloadCarInfo']">确认到车</button> | ||||
|     <div nz-row style="display: flex; justify-content: end; " class="mb-xs"> | ||||
|       <div nz-col> | ||||
|         <button nz-button (click)="sureDepart(i)" *ngIf="i?.wayBillStatus == '2'" acl | ||||
|           [acl-ability]="['WAYBILL-VEHICLE-DETAIL-wholeStartCarInfo']">确认发车</button> | ||||
|         <button nz-button nzType="primary" (click)="sureArrive(i)" *ngIf="i?.wayBillStatus == '3'" nzGhost acl | ||||
|           [acl-ability]="['WAYBILL-VEHICLE-DETAIL-wholeUnloadCarInfo']">确认到车</button> | ||||
|       </div> | ||||
|     </div> | ||||
|    <div> | ||||
|     <div> | ||||
|       <div sv-container> | ||||
|         <sv label="网络货运人">{{ i?.enterpriseInfoName }} </sv> | ||||
|         <sv label="货主">{{ i?.shippername }} </sv> | ||||
| @ -32,33 +34,29 @@ | ||||
|         <sv label="调度员">{{i?.dispatchName}}{{ i?.dispatchPhone ? '/' + i?.dispatchPhone : '' }}</sv> | ||||
|         <sv label="货源编号">{{ i?.resourceCode }} </sv> | ||||
|         <sv label="承诺付款天数">{{ i?.paymentDays }}</sv> | ||||
|      </div> | ||||
|      <nz-tabset style="margin-top: 15px;"> | ||||
|       <nz-tab nzTitle="装卸货信息" (nzClick)="goDistance(distannce1)"> | ||||
|       </nz-tab> | ||||
|       <nz-tab nzTitle="基本信息" (nzClick)="goDistance(distannce1)"> | ||||
|       </nz-tab> | ||||
|       <nz-tab nzTitle="运费信息" (nzClick)="goDistance(distannce3)"> | ||||
|       </nz-tab> | ||||
|       <nz-tab nzTitle="附件信息" (nzClick)="goDistance(distannce4)"> | ||||
|       </nz-tab> | ||||
|       <nz-tab nzTitle="轨迹信息" (nzClick)="goDistance(distannce5)"> | ||||
|       </nz-tab> | ||||
|     </nz-tabset> | ||||
|    </div> | ||||
|       </div> | ||||
|       <nz-tabset style="margin-top: 15px;"> | ||||
|         <nz-tab nzTitle="装卸货信息" (nzClick)="goDistance(distannce1)"> | ||||
|         </nz-tab> | ||||
|         <nz-tab nzTitle="基本信息" (nzClick)="goDistance(distannce1)"> | ||||
|         </nz-tab> | ||||
|         <nz-tab nzTitle="运费信息" (nzClick)="goDistance(distannce3)"> | ||||
|         </nz-tab> | ||||
|         <nz-tab nzTitle="附件信息" (nzClick)="goDistance(distannce4)"> | ||||
|         </nz-tab> | ||||
|         <nz-tab nzTitle="轨迹信息" (nzClick)="goDistance(distannce5)"> | ||||
|         </nz-tab> | ||||
|       </nz-tabset> | ||||
|     </div> | ||||
|   </ng-template> | ||||
| </page-header-wrapper> | ||||
| <nz-card nzTitle="运单进度"> | ||||
|   <div class="approval-status"> | ||||
|     <div style="width: 60%; margin: 0 auto"> | ||||
|         <nz-steps [nzCurrent]="i?.scheduleVOList?.length + 1" nzLabelPlacement="vertical"> | ||||
|            <nz-step | ||||
|                   *ngFor="let item of i?.scheduleVOList" | ||||
|              [nzTitle]="item.state" | ||||
|              [nzSubtitle]="item.stateTime" | ||||
|              [nzStatus]="item.displayStatus === 'SHOW' ? 'finish' : 'wait'" | ||||
|            > | ||||
|           </nz-step> | ||||
|           <nz-step           *ngFor="let item of i?.scheduleVOList"     [nzTitle]="item.state"     | ||||
|           [nzSubtitle]="item.stateTime"     [nzStatus]="item.displayStatus === 'SHOW' ? 'finish' : 'wait'"  > | ||||
|             </nz-step> | ||||
|          </nz-steps> | ||||
|     </div> | ||||
|   </div> | ||||
| @ -69,19 +67,21 @@ | ||||
|     <sv label="货物名称"> | ||||
|       {{i?.goodsInfos?.[0]?.goodsName}} | ||||
|     </sv> | ||||
| </sv-container> | ||||
| <sv-container col="2"> | ||||
|   </sv-container> | ||||
|   <sv-container col="2"> | ||||
|     <sv label="货物数量"> | ||||
|       {{i?.goodsInfos?.[0]?.weight}}吨,{{i?.goodsInfos?.[0]?.volume}}方,{{i?.goodsInfos?.[0]?.number}}件 | ||||
|     </sv> | ||||
|     <sv label="用车需求"> | ||||
|       {{i?.goodsInfos?.[0]?.carModelLabel}}{{ i?.goodsInfos?.[0]?.carLength ? '/' + i?.goodsInfos?.[0]?.carLength + '米': ''}} | ||||
|       {{i?.goodsInfos?.[0]?.carModelLabel}}{{ i?.goodsInfos?.[0]?.carLength ? '/' + i?.goodsInfos?.[0]?.carLength + '米': | ||||
|       ''}} | ||||
|     </sv> | ||||
|     <sv label="承运司机"> | ||||
|       {{i?.driverVo?.name}}{{ i?.driverVo?.phone ? '/' + i?.driverVo?.phone : ''}} | ||||
|     </sv> | ||||
|     <sv label="车型车长载重"> | ||||
|       {{ i?.carVO?.carModelLabel ? i?.carVO?.carModelLabel +',': ''}}{{ i?.carVO?.carLengthLabel ? i?.carVO?.carLengthLabel +'米,': ''}}{{i?.carVO?.carLoad ? i?.carVO?.carLoad +'吨': ''}} | ||||
|       {{ i?.carVO?.carModelLabel ? i?.carVO?.carModelLabel +',': ''}}{{ i?.carVO?.carLengthLabel ? | ||||
|       i?.carVO?.carLengthLabel +'米,': ''}}{{i?.carVO?.carLoad ? i?.carVO?.carLoad +'吨': ''}} | ||||
|     </sv> | ||||
|     <sv label="计划装货时间"> | ||||
|       {{i?.loadingTime}} | ||||
| @ -89,44 +89,44 @@ | ||||
|     <sv label="计划卸货时间"> | ||||
|       {{i?.unloadingTime}} | ||||
|     </sv> | ||||
| </sv-container> | ||||
| <div class="mt-md"> | ||||
|   <h4 class="text-md">装货卸货信息 | ||||
|     <span class="ml-sm text-sm">( | ||||
|       <label>{{i?.loadingNumber|| '一'}}装</label> | ||||
|       <label>{{i?.dischargeNumber || '一'}}卸</label> | ||||
|       ) | ||||
|     </span> | ||||
|   </h4> | ||||
|   <div nz-row [nzGutter]="24"> | ||||
|     <div nz-col [nzSpan]="12"> | ||||
|       <div class="handling-info p-md"> | ||||
|         <div class="flex" *ngFor="let item of i?.loadingPlace"> | ||||
|           <div *ngIf="item.type === '1'" class="loading-row"> | ||||
|             <div class="handling-info-icon loading-bg">装</div> | ||||
|             <div class="info"> | ||||
|               <h4>装货地:{{item?.province}}{{item.city}}{{item.area}}{{item.detailedAddress}}</h4> | ||||
|               <p>联系人:{{item.appUserName}}/{{item.contractTelephone}}</p> | ||||
|   </sv-container> | ||||
|   <div class="mt-md"> | ||||
|     <h4 class="text-md">装货卸货信息 | ||||
|       <span class="ml-sm text-sm">( | ||||
|         <label>{{i?.loadingNumber|| '一'}}装</label> | ||||
|         <label>{{i?.dischargeNumber || '一'}}卸</label> | ||||
|         ) | ||||
|       </span> | ||||
|     </h4> | ||||
|     <div nz-row [nzGutter]="24"> | ||||
|       <div nz-col [nzSpan]="12"> | ||||
|         <div class="handling-info p-md"> | ||||
|           <div class="flex" *ngFor="let item of i?.loadingPlace"> | ||||
|             <div *ngIf="item.type === '1'" class="loading-row"> | ||||
|               <div class="handling-info-icon loading-bg">装</div> | ||||
|               <div class="info"> | ||||
|                 <h4>装货地:{{item?.province}}{{item.city}}{{item.area}}{{item.detailedAddress}}</h4> | ||||
|                 <p>联系人:{{item.appUserName}}/{{item.contractTelephone}}</p> | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|     <div nz-col [nzSpan]="12"> | ||||
|       <div class="handling-info p-md"> | ||||
|         <div class="flex" *ngFor="let item of i?.dischargePlace"> | ||||
|           <div *ngIf="item.type === '2'" class="loading-row"> | ||||
|             <div class="handling-info-icon unloaing-bg">卸</div> | ||||
|             <div class="info"> | ||||
|               <h4>卸货地:{{item?.province}}{{item.city}}{{item.area}}{{item.detailedAddress}}</h4> | ||||
|               <p>联系人:{{item.appUserName}}/{{item.contractTelephone}}</p> | ||||
|       <div nz-col [nzSpan]="12"> | ||||
|         <div class="handling-info p-md"> | ||||
|           <div class="flex" *ngFor="let item of i?.dischargePlace"> | ||||
|             <div *ngIf="item.type === '2'" class="loading-row"> | ||||
|               <div class="handling-info-icon unloaing-bg">卸</div> | ||||
|               <div class="info"> | ||||
|                 <h4>卸货地:{{item?.province}}{{item.city}}{{item.area}}{{item.detailedAddress}}</h4> | ||||
|                 <p>联系人:{{item.appUserName}}/{{item.contractTelephone}}</p> | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
| </div> | ||||
| </nz-card> | ||||
| <nz-card nzTitle="服务信息"> | ||||
|   <sv-container> | ||||
| @ -154,17 +154,19 @@ | ||||
|     </ng-template> | ||||
|   </st> | ||||
|   <div> | ||||
|     总计:<span style="color: #da001b; font-size: 18px">{{ i?.totalAmount | currency }}</span> (运费{{ i?.totalFreight | currency }}, | ||||
|     总计:<span style="color: #da001b; font-size: 18px">{{ i?.totalAmount | currency }}</span> (运费{{ i?.totalFreight | | ||||
|     currency }}, | ||||
|     附加费{{ i?.totalSurcharge | currency }},附加费率{{ (i?.totalRate * 100).toFixed(2)}}% ) | ||||
|   </div> | ||||
|   <div  *ngIf ="i?.payee?.phone && i?.payee?.phone !== i?.driverVo.phone">车队长:{{ i?.payee?.name }}/{{ i?.payee?.phone }}/{{ i?.payee?.idNo }}</div> | ||||
|   <div *ngIf="i?.payee?.phone && i?.payee?.phone !== i?.driverVo.phone">车队长:{{ i?.payee?.name }}/{{ i?.payee?.phone | ||||
|     }}/{{ i?.payee?.idNo }}</div> | ||||
| </nz-card> | ||||
|  | ||||
| <nz-card nzTitle="附件信息" #distannce4> | ||||
|   <sv-container> | ||||
|     <sv label="协议附件"> | ||||
|       <a *ngIf = "i?.contractContent?.contractContent" (click)="agreement('1')">查看附件</a>      | ||||
|       <a *ngIf = "i?.supplementContent?.contractContent" (click)="agreement('2')">补充协议</a> | ||||
|       <a *ngIf="i?.contractContent?.contractContent" (click)="agreement('1')">查看附件</a>      | ||||
|       <a *ngIf="i?.supplementContent?.contractContent" (click)="agreement('2')">补充协议</a> | ||||
|     </sv> | ||||
|   </sv-container> | ||||
|   <sv-container col="2" class="mt-md"> | ||||
| @ -186,7 +188,8 @@ | ||||
|     <sv label="回单类型" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> | ||||
|       {{ i?.supplementaryInformationVO?.receiptType === '1' ? '电子回单' : '纸质回单' }} | ||||
|     </sv> | ||||
|     <sv label="联系人" *ngIf="i?.supplementaryInformationVO?.stateReceipt">  {{ i?.supplementaryInformationVO?.receiptUserName }} / {{ i?.supplementaryInformationVO?.phon }} </sv> | ||||
|     <sv label="联系人" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> {{ | ||||
|       i?.supplementaryInformationVO?.receiptUserName }} / {{ i?.supplementaryInformationVO?.phon }} </sv> | ||||
|     <sv label="所在地区" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> | ||||
|       {{ i?.supplementaryInformationVO?.area }} | ||||
|     </sv> | ||||
| @ -205,34 +208,30 @@ | ||||
| </nz-card> | ||||
|  | ||||
| <nz-card> | ||||
|   <p class="detail_title" #distannce5><span>|</span> 轨迹信息</p> | ||||
|   <div nz-row> | ||||
|     <nz-card nzTitle="轨迹信息" style="width: 100%" [nzExtra]="extraTemplate" #distannce5> | ||||
|       <div nz-row> | ||||
|         <div nz-col [nzSpan]="12"> | ||||
|           <st [scroll]="{y: '500px'}" style="min-height: 600px;" #st [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }"> | ||||
|           </st> | ||||
|         </div> | ||||
|         <div nz-col [nzSpan]="12"> | ||||
|           <amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList"></amap-path-simplifier> | ||||
|         </div> | ||||
|       </div> | ||||
|     </nz-card> | ||||
|     <ng-template #extraTemplate> | ||||
|       <nz-radio-group [(ngModel)]="trajectory" (ngModelChange)="trajectoryChange($event)"> | ||||
|     <div nz-col [nzSpan]="24"> | ||||
|       <amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList"> | ||||
|       </amap-path-simplifier> | ||||
|       <st [scroll]="{ y: '350px' }" #st [data]="addressItems" [columns]="logColumns2" [ps]="0" | ||||
|         [page]="{ show: false, showSize: false }" size="small" class="map_st"> | ||||
|       </st> | ||||
|       <nz-radio-group [(ngModel)]="trajectory" (ngModelChange)="trajectoryChange($event)" class="map_radio"> | ||||
|         <label nz-radio-button nzValue="car">车辆轨迹</label> | ||||
|         <label nz-radio-button nzValue="driver">司机轨迹</label> | ||||
|       </nz-radio-group> | ||||
|     </ng-template> | ||||
|     </div> | ||||
|   </div> | ||||
| </nz-card> | ||||
|  | ||||
| <nz-modal [(nzVisible)]="isVisible"  nzWidth="1000px"  [nzFooter]="nzModalFooter" [nzTitle]="modalTitle"  (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()"> | ||||
| <nz-modal [(nzVisible)]="isVisible" nzWidth="1000px" [nzFooter]="nzModalFooter" [nzTitle]="modalTitle" | ||||
|   (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()"> | ||||
|   <ng-container *nzModalContent> | ||||
|     <div *ngIf="!modalcontent">暂无附件信息</div> | ||||
|     <div [innerHTML]="modalcontent"></div> | ||||
|   </ng-container> | ||||
|   <ng-template #nzModalFooter> | ||||
|     <button nz-button nzType="primary" (click)="handleOK()" [disabled]="">取消</button> | ||||
|     <button nz-button nzType="default" (click)="handleCancel()">确定  </button> | ||||
|     <button nz-button nzType="default" (click)="handleCancel()">确定 </button> | ||||
|   </ng-template> | ||||
| </nz-modal> | ||||
| @ -21,12 +21,12 @@ import { WaybillManagementServe } from '../../services/waybill-management.servic | ||||
| @Component({ | ||||
|   selector: 'app-supply-management-vehicle-detail', | ||||
|   templateUrl: './vehicle-detail.component.html', | ||||
|   styleUrls: ['./vehicle-detail.component.less'] | ||||
|   styleUrls: ['./vehicle-detail.component.less', '../../../commom/less/trajectory.less'] | ||||
| }) | ||||
| export class WaybillManagementVehicleDetailComponent implements OnInit, OnDestroy { | ||||
|   id = this.route.snapshot.params.id; | ||||
|   MapList: any[] = []; | ||||
|   trajectory = 'car';  | ||||
|   trajectory = 'car'; | ||||
|   mapList: any[] = []; //地图点位数据组 | ||||
|   addressItems: any[] = []; //打点地址数据组 | ||||
|   i: any; | ||||
| @ -36,11 +36,11 @@ export class WaybillManagementVehicleDetailComponent implements OnInit, OnDestro | ||||
|   imges: any; | ||||
|   unLoadingPlaceVOList: any = []; | ||||
|   logColumns2: STColumn[] = [ | ||||
|     { title: '时间', index: 'vinOutTime' }, | ||||
|     { title: '地点', index: 'cityName' } | ||||
|     { title: '时间', index: 'parkBte' }, | ||||
|     { title: '地点', index: 'parkAdr' } | ||||
|   ]; | ||||
|   modalcontent: any; | ||||
|   modalTitle:string = ''; | ||||
|   modalTitle: string = ''; | ||||
|   billExpenses: any[] = []; //运费信息表格信息 | ||||
|   logColumns: STColumn[] = [ | ||||
|     { title: '款项', index: 'costCodeLabel' }, | ||||
| @ -96,11 +96,10 @@ export class WaybillManagementVehicleDetailComponent implements OnInit, OnDestro | ||||
|     window.history.go(-1); | ||||
|   } | ||||
|   agreement(value: any) { | ||||
|     if(value  ==='1'){ | ||||
|     if (value === '1') { | ||||
|       this.modalTitle = '附件信息'; | ||||
|       this.modalcontent = this.i?.contractContent?.contractContent; | ||||
|        | ||||
|     }else if(value === '2'){ | ||||
|     } else if (value === '2') { | ||||
|       this.modalTitle = '补充协议'; | ||||
|       this.modalcontent = this.i?.supplementContent?.contractContent; | ||||
|     } | ||||
| @ -112,7 +111,7 @@ export class WaybillManagementVehicleDetailComponent implements OnInit, OnDestro | ||||
|   handleOK() { | ||||
|     this.isVisible = false; | ||||
|   } | ||||
|   goDistance(elf: NzCardComponent) { | ||||
|   goDistance(elf: any) { | ||||
|     if (elf) { | ||||
|       elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' }); | ||||
|     } | ||||
| @ -189,12 +188,16 @@ export class WaybillManagementVehicleDetailComponent implements OnInit, OnDestro | ||||
|           }); | ||||
|         }); | ||||
|         this.mapList = list; | ||||
|         this.addressItems = [...res.enclosureDataAppTrack]; | ||||
|         if (this.addressItems && this.addressItems.length > 0) { | ||||
|           this.addressItems.forEach(item => { | ||||
|             item.vinOutTime = this.getLocalTime(item.gtm); | ||||
|             item.cityName = item.appAdress; | ||||
|         const addressItems = [...res.tracks]; | ||||
|         if (addressItems) { | ||||
|           addressItems.forEach(item => { | ||||
|             // item.parkBte = item.gtm; | ||||
|             item.parkBte = this.getLocalTime(item.gtm); | ||||
|             item.parkAdr = item.appAdress; | ||||
|           }); | ||||
|           this.addressItems = [...addressItems]; | ||||
|         } else { | ||||
|           this.addressItems = []; | ||||
|         } | ||||
|       } | ||||
|     }); | ||||
|  | ||||
		Reference in New Issue
	
	Block a user