Merge branch 'develop' of https://gitlab.eascs.com/tms-ui/tms-obc-web into develop

This commit is contained in:
wangshiming
2022-04-15 17:42:09 +08:00
20 changed files with 689 additions and 708 deletions

View File

@ -18,6 +18,16 @@ module.exports = {
// secure: false, // Ignore invalid SSL certificates // secure: false, // Ignore invalid SSL certificates
// changeOrigin: true // changeOrigin: true
// } // }
// '//api': {
// target: {
// host: 'tms-api.yunduoxing.com',
// protocol: 'https:',
// port: 443
// },
// secure: false,
// changeOrigin: true,
// logLevel: 'debug'
// },
'//api': { '//api': {
target: { target: {
host: 'tms-api-test.eascs.com', host: 'tms-api-test.eascs.com',

View 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;
}
}

View File

@ -181,7 +181,7 @@ export class DatatableOrderReportingComponent implements OnInit {
}, },
} }
}, },
putTime: { recentlyPutTime: {
title: '上传时间', title: '上传时间',
type: 'string', type: 'string',
ui: { ui: {

View File

@ -4,20 +4,17 @@ import format from 'date-fns/format';
import { NzModalRef } from 'ng-zorro-antd/modal'; import { NzModalRef } from 'ng-zorro-antd/modal';
import { OrderManagementService } from 'src/app/routes/order-management/services/order-management.service'; import { OrderManagementService } from 'src/app/routes/order-management/services/order-management.service';
@Component({ @Component({
selector: 'app-datatable-view-track', selector: 'app-datatable-view-track',
templateUrl: './view-track.component.html', templateUrl: './view-track.component.html'
}) })
export class DatatableReportingvViewTrackComponent implements OnInit { export class DatatableReportingvViewTrackComponent implements OnInit {
mapList: any[] = []; //地图点位数据组 mapList: any[] = []; //地图点位数据组
addressItems: any[] = []; //打点地址数据组 addressItems: any[] = []; //打点地址数据组
trajectory = "car"; trajectory = 'car';
pois: any[] = []; pois: any[] = [];
id = ''; id = '';
constructor(public service: OrderManagementService, private modalRef: NzModalRef, public router: Router) { constructor(public service: OrderManagementService, private modalRef: NzModalRef, public router: Router) {}
}
ngOnInit(): void { ngOnInit(): void {
if (this.trajectory === 'car') { if (this.trajectory === 'car') {
@ -27,11 +24,7 @@ export class DatatableReportingvViewTrackComponent implements OnInit {
} }
} }
selectTab(e: any) {}
selectTab(e: any) {
}
close(): void { close(): void {
this.modalRef.destroy(); 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.mapList = list;
this.addressItems = [...res.enclosureDataAppTrack]; const addressItems = [...res.tracks];
if (this.addressItems && this.addressItems.length > 0) { if (addressItems) {
this.addressItems.forEach(item => { addressItems.forEach(item => {
item.parkBte = item.parkBte ? this.getLocalTime(item.parkBte) : ''; // item.parkBte = item.gtm;
item.cityName = item.appAdress; 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) { getLocalTime(time: any) {
return format(new Date(parseInt(time)), 'yyyy-MM-dd HH:mm:ss'); return format(new Date(parseInt(time)), 'yyyy-MM-dd HH:mm:ss');
} }
} }

View File

@ -30,7 +30,7 @@ export class AuthDrawerComponent implements OnInit {
constructor(public service: MenuManagerService, private modal: NzModalService) {} constructor(public service: MenuManagerService, private modal: NzModalService) {}
ngOnInit(): void { ngOnInit(): void {
this.loadFunctions(); // this.loadFunctions();
} }
beforeReq = (requestOptions: STRequestOptions) => { beforeReq = (requestOptions: STRequestOptions) => {

View File

@ -34,7 +34,8 @@
<sv label="所属项目">{{i?.goodsResource?.enterpriseProjectName}}</sv> <sv label="所属项目">{{i?.goodsResource?.enterpriseProjectName}}</sv>
<sv label="服务类型">{{i?.goodsResource?.serviceTypeLabel}}</sv> <sv label="服务类型">{{i?.goodsResource?.serviceTypeLabel}}</sv>
<sv label="录单员">{{i?.createUserName}} {{ i?.createUserPhone ? "/" + i?.createUserPhone : ''}} </sv> <sv label="录单员">{{i?.createUserName}} {{ i?.createUserPhone ? "/" + i?.createUserPhone : ''}} </sv>
<sv label="调度员">{{i?.goodsResource?.dispatchName}}{{ i?.goodsResource?.dispatchPhone ? "/" + i?.goodsResource?.dispatchPhone : ''}} </sv> <sv label="调度员">{{i?.goodsResource?.dispatchName}}{{ i?.goodsResource?.dispatchPhone ? "/" +
i?.goodsResource?.dispatchPhone : ''}} </sv>
</div> </div>
<nz-tabset style="margin-top: 15px;"> <nz-tabset style="margin-top: 15px;">
<nz-tab nzTitle="装卸货信息" (nzClick)="goDistance(distannce1)"> <nz-tab nzTitle="装卸货信息" (nzClick)="goDistance(distannce1)">
@ -55,12 +56,8 @@
<div class="approval-status"> <div class="approval-status">
<div style="width: 60%; margin: 0 auto"> <div style="width: 60%; margin: 0 auto">
  <nz-steps [nzCurrent]="i?.scheduleVOList?.length + 1" nzLabelPlacement="vertical">   <nz-steps [nzCurrent]="i?.scheduleVOList?.length + 1" nzLabelPlacement="vertical">
  <nz-step   <nz-step           *ngFor="let item of i?.scheduleVOList"     [nzTitle]="item.state"    
          *ngFor="let item of i?.scheduleVOList" [nzSubtitle]="item.stateTime"     [nzStatus]="item.displayStatus === 'SHOW' ? 'finish' : 'wait'"  >
    [nzTitle]="item.state"
    [nzSubtitle]="item.stateTime"
    [nzStatus]="item.displayStatus === 'SHOW' ? 'finish' : 'wait'"
  >
  </nz-step>   </nz-step>
 </nz-steps>  </nz-steps>
</div> </div>
@ -69,9 +66,7 @@
<nz-card> <nz-card>
<div class="card-title" <div class="card-title">装卸货信息<span class="tip-font">预计公里数:{{ totalDistance }}km预计行程耗时{{ totalTime }}小时</span></div>
>装卸货信息<span class="tip-font">预计公里数:{{ totalDistance }}km预计行程耗时{{ totalTime }}小时</span></div
>
<form nz-form [formGroup]="validateForm1" role="form"> <form nz-form [formGroup]="validateForm1" role="form">
<div nz-row [nzGutter]="24"> <div nz-row [nzGutter]="24">
@ -82,14 +77,9 @@
<nz-form-control [nzErrorTip]="'请输入装货地'"> <nz-form-control [nzErrorTip]="'请输入装货地'">
<div class="align-center"> <div class="align-center">
<nz-input-group [nzSuffix]="endInconTemp1"> <nz-input-group [nzSuffix]="endInconTemp1">
<input <input nz-input [(ngModel)]="data1.detailedAddress"
nz-input (click)="openMap('start', idx,data1.detailedAddress)" formControlName="loadAddress{{ idx }}"
[(ngModel)]="data1.detailedAddress" placeholder="请输入装货地" readonly="true" />
(click)="openMap('start', idx,data1.detailedAddress)"
formControlName="loadAddress{{ idx }}"
placeholder="请输入装货地"
readonly="true"
/>
</nz-input-group> </nz-input-group>
</div> </div>
</nz-form-control> </nz-form-control>
@ -98,25 +88,12 @@
<nz-form-label [nzSpan]="4" nzRequired>联系人</nz-form-label> <nz-form-label [nzSpan]="4" nzRequired>联系人</nz-form-label>
<div style="display: flex;"> <div style="display: flex;">
<nz-form-control [nzErrorTip]="'请输入联系人姓名'"> <nz-form-control [nzErrorTip]="'请输入联系人姓名'">
<input <input nz-input [(ngModel)]="data1.appUserName" formControlName="loadName{{ idx }}"
nz-input name="loadName{{ idx }}" maxlength="30" placeholder="请输入联系人姓名" />
[(ngModel)]="data1.appUserName"
formControlName="loadName{{ idx }}"
name="loadName{{ idx }}"
maxlength="30"
placeholder="请输入联系人姓名"
/>
</nz-form-control> </nz-form-control>
<nz-form-control [nzErrorTip]="'请输入联系人电话'"> <nz-form-control [nzErrorTip]="'请输入联系人电话'">
<input <input style="margin-left: 12px" nz-input [(ngModel)]="data1.contractTelephone" maxlength="11"
style="margin-left: 12px" formControlName="loadPhone{{ idx }}" name="loadPhone{{ idx }}" placeholder="请输入联系人电话" />
nz-input
[(ngModel)]="data1.contractTelephone"
maxlength="11"
formControlName="loadPhone{{ idx }}"
name="loadPhone{{ idx }}"
placeholder="请输入联系人电话"
/>
</nz-form-control> </nz-form-control>
</div> </div>
</nz-form-item> </nz-form-item>
@ -124,8 +101,7 @@
</div> </div>
<div nz-col [nzSpan]="4"> <div nz-col [nzSpan]="4">
<div style="display: flex; justify-content: center"> <div style="display: flex; justify-content: center">
<span class="swap-icon" (click)="swapAddress()"><i nz-icon nzType="swap" <span class="swap-icon" (click)="swapAddress()"><i nz-icon nzType="swap" nzTheme="outline"></i></span>
nzTheme="outline"></i></span>
</div> </div>
</div> </div>
<div nz-col [nzSpan]="10"> <div nz-col [nzSpan]="10">
@ -135,15 +111,9 @@
<nz-form-control [nzErrorTip]="'请输入卸货地'"> <nz-form-control [nzErrorTip]="'请输入卸货地'">
<div class="align-center"> <div class="align-center">
<nz-input-group [nzSuffix]="endInconTemp1"> <nz-input-group [nzSuffix]="endInconTemp1">
<input <input nz-input [(ngModel)]="data2.detailedAddress"
nz-input (click)="openMap('end', idx,data2.detailedAddress)" formControlName="unloadAddress{{ idx }}"
[(ngModel)]="data2.detailedAddress" placeholder="请输入卸货地" name="unloadAddress{{ idx }}" readonly="true" />
(click)="openMap('end', idx,data2.detailedAddress)"
formControlName="unloadAddress{{ idx }}"
placeholder="请输入卸货地"
name="unloadAddress{{ idx }}"
readonly="true"
/>
</nz-input-group> </nz-input-group>
</div> </div>
</nz-form-control> </nz-form-control>
@ -152,25 +122,13 @@
<nz-form-label [nzSpan]="4" nzRequired>联系人</nz-form-label> <nz-form-label [nzSpan]="4" nzRequired>联系人</nz-form-label>
<div style="display: flex;"> <div style="display: flex;">
<nz-form-control [nzErrorTip]="'请输入联系人姓名'"> <nz-form-control [nzErrorTip]="'请输入联系人姓名'">
<input <input nz-input [(ngModel)]="data2.appUserName" maxlength="30" formControlName="unloadName{{ idx }}"
nz-input name="unloadAddress{{ idx }}" placeholder="请输入联系人姓名" />
[(ngModel)]="data2.appUserName"
maxlength="30"
formControlName="unloadName{{ idx }}"
name="unloadAddress{{ idx }}"
placeholder="请输入联系人姓名"
/>
</nz-form-control> </nz-form-control>
<nz-form-control [nzErrorTip]="'请输入联系人电话'"> <nz-form-control [nzErrorTip]="'请输入联系人电话'">
<input <input style="margin-left: 12px" nz-input [(ngModel)]="data2.contractTelephone"
style="margin-left: 12px" formControlName="unloadPhone{{ idx }}" name="unloadAddress{{ idx }}" maxlength="11"
nz-input placeholder="请输入联系人电话" />
[(ngModel)]="data2.contractTelephone"
formControlName="unloadPhone{{ idx }}"
name="unloadAddress{{ idx }}"
maxlength="11"
placeholder="请输入联系人电话"
/>
</nz-form-control> </nz-form-control>
</div> </div>
</nz-form-item> </nz-form-item>
@ -207,31 +165,15 @@
</ng-template> </ng-template>
<ng-template sf-template="volume" let-item let-ui="ui"> <ng-template sf-template="volume" let-item let-ui="ui">
<nz-input-group [nzAddOnAfter]="''"> <nz-input-group [nzAddOnAfter]="''">
<input <input nz-input type="number" [ngModel]="item.value" min="0" [max]="999999" step="0.01"
nz-input (ngModelChange)="item.setValue($event)" placeholder="总体积" />
type="number"
[ngModel]="item.value"
min="0"
[max]="999999"
step="0.01"
(ngModelChange)="item.setValue($event)"
placeholder="总体积"
/>
</nz-input-group> </nz-input-group>
</ng-template> </ng-template>
<ng-template sf-template="number" let-item let-ui="ui"> <ng-template sf-template="number" let-item let-ui="ui">
<nz-input-group [nzAddOnAfter]="''"> <nz-input-group [nzAddOnAfter]="''">
<input <input nz-input type="number" [ngModel]="item.value" min="0" [max]="999999" step="0.01"
nz-input (ngModelChange)="item.setValue($event)" placeholder="总车次" />
type="number"
[ngModel]="item.value"
min="0"
[max]="999999"
step="0.01"
(ngModelChange)="item.setValue($event)"
placeholder="总车次"
/>
</nz-input-group> </nz-input-group>
</ng-template> </ng-template>
@ -262,7 +204,7 @@
[hidden]="!(i?.settlementBasis ==='1' && i?.unloadTime) && !(i?.settlementBasis ==='2' && i?.loadTime)"> [hidden]="!(i?.settlementBasis ==='1' && i?.unloadTime) && !(i?.settlementBasis ==='2' && i?.loadTime)">
<ng-template #priceTitel> <ng-template #priceTitel>
<span>运费信息</span><span <span>运费信息</span><span
style="padding-left: 24px; color: #f59a23;font-size: small;">到货后{{i?.goodsResource.paymentDays}}天内支付运费</span> style="padding-left: 24px; color: #f59a23;font-size: small;">到货后{{i?.goodsResource?.paymentDays}}天内支付运费</span>
</ng-template> </ng-template>
<div style="margin-bottom: 18px"> <div style="margin-bottom: 18px">
<span style="color: #da001b; font-size: 18px"> {{ i?.freightPrice }}{{ i?.freightTypeLabel }} </span>{{ <span style="color: #da001b; font-size: 18px"> {{ i?.freightPrice }}{{ i?.freightTypeLabel }} </span>{{
@ -283,7 +225,8 @@
currency }} currency }}
附加费{{ i?.totalSurcharge | currency }},附加费率{{ i?.totalRate * 100 | number: '0.2-2' }}% 附加费{{ i?.totalSurcharge | currency }},附加费率{{ i?.totalRate * 100 | number: '0.2-2' }}%
</div> </div>
<div *ngIf=" i?.payeeId !== i?.driverId" class="mt-xs">车队长:{{ i?.payeeName }}/{{ i?.payeePhone }}/{{ i?.payeeIdNo }}</div> <div *ngIf=" i?.payeeId !== i?.driverId" class="mt-xs">车队长:{{ i?.payeeName }}/{{ i?.payeePhone }}/{{ i?.payeeIdNo }}
</div>
</nz-card> </nz-card>
<nz-card nzTitle="附件信息" #distannce4> <nz-card nzTitle="附件信息" #distannce4>
@ -305,7 +248,8 @@
<sv label="回单类型" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> <sv label="回单类型" *ngIf="i?.supplementaryInformationVO?.stateReceipt">
{{ i?.supplementaryInformationVO?.receiptType === '1' ? '电子回单' : '纸质回单' }} {{ i?.supplementaryInformationVO?.receiptType === '1' ? '电子回单' : '纸质回单' }}
</sv> </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"> <sv label="所在地区" *ngIf="i?.supplementaryInformationVO?.stateReceipt">
{{ i?.supplementaryInformationVO?.area }} {{ i?.supplementaryInformationVO?.area }}
</sv> </sv>
@ -316,17 +260,9 @@
</sv-container> </sv-container>
<sv-container col="1" class="mt-md"> <sv-container col="1" class="mt-md">
<sv label="回单凭证" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> <sv label="回单凭证" *ngIf="i?.supplementaryInformationVO?.stateReceipt">
<nz-upload <nz-upload class="avatar-uploader" [nzAction]="service.$api_upload_url" [nzName]="'multipartFile'"
class="avatar-uploader" nzListType="picture-card" [(nzFileList)]="listImagUrls" [nzShowButton]="listImagUrls.length < 5"
[nzAction]="service.$api_upload_url" [nzPreview]="handlePreview1" [nzBeforeUpload]="beforeUpload" (nzChange)="handleChange1($event)">
[nzName]="'multipartFile'"
nzListType="picture-card"
[(nzFileList)]="listImagUrls"
[nzShowButton]="listImagUrls.length < 5"
[nzPreview]="handlePreview1"
[nzBeforeUpload]="beforeUpload"
(nzChange)="handleChange1($event)"
>
<div> <div>
<i nz-icon nzType="plus"></i> <i nz-icon nzType="plus"></i>
<div style="margin-top: 8px">请上传图片</div> <div style="margin-top: 8px">请上传图片</div>
@ -345,29 +281,26 @@
</nz-card> </nz-card>
<nz-card> <nz-card>
<p class="detail_title" #distannce5><span>|</span> 轨迹信息</p>
<div nz-row> <div nz-row>
<nz-card nzTitle="轨迹信息" style="width: 100%" [nzExtra]="extraTemplate" #distannce5> <div nz-col [nzSpan]="24">
<div nz-row> <amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList">
<div nz-col [nzSpan]="12"> </amap-path-simplifier>
<st [scroll]="{y: '500px'}" style="min-height: 600px;" #st [data]="addressItems" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }"> <st [scroll]="{ y: '350px' }" #st [data]="addressItems" [columns]="logColumns2" [ps]="0"
[page]="{ show: false, showSize: false }" size="small" class="map_st">
</st> </st>
</div> <nz-radio-group [(ngModel)]="trajectory" (ngModelChange)="trajectoryChange($event)" class="map_radio">
<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)">
<label nz-radio-button nzValue="car">车辆轨迹</label> <label nz-radio-button nzValue="car">车辆轨迹</label>
<label nz-radio-button nzValue="driver">司机轨迹</label> <label nz-radio-button nzValue="driver">司机轨迹</label>
</nz-radio-group> </nz-radio-group>
</ng-template> </div>
</div> </div>
</nz-card> </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> <ng-container *nzModalContent>
<div *ngIf="!modalcontent">暂无附件信息</div> <div *ngIf="!modalcontent">暂无附件信息</div>
<div [innerHTML]="modalcontent"></div> <div [innerHTML]="modalcontent"></div>

View File

@ -36,7 +36,7 @@ function getBase64(file: File): Promise<string | ArrayBuffer | null> {
@Component({ @Component({
selector: 'app-supply-management-bulk-detail-change', selector: 'app-supply-management-bulk-detail-change',
templateUrl: './bulk-detail-change.component.html', 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 { export class OrderManagementBulkDetailChangeComponent implements OnInit {
validateForm1: FormGroup; validateForm1: FormGroup;
@ -932,7 +932,7 @@ export class OrderManagementBulkDetailChangeComponent implements OnInit {
handleOK() { handleOK() {
this.isVisible = false; this.isVisible = false;
} }
goDistance(elf: NzCardComponent) { goDistance(elf: any) {
if (elf) { if (elf) {
elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' }); elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' });
} }
@ -997,12 +997,16 @@ export class OrderManagementBulkDetailChangeComponent implements OnInit {
}); });
}); });
this.mapList = list; this.mapList = list;
this.addressItems = [...res?.enclosureDataAppTrack]; const addressItems = [...res.tracks];
if (this.addressItems && this.addressItems.length > 0) { if (addressItems) {
this.addressItems.forEach(item => { addressItems.forEach(item => {
item.vinOutTime = this.getLocalTime(item.gtm); // item.parkBte = item.gtm;
item.cityName = item.appAdress; item.parkBte = this.getLocalTime(item.gtm);
item.parkAdr = item.appAdress;
}); });
this.addressItems = [...addressItems];
} else {
this.addressItems = [];
} }
} }
}); });

View File

@ -205,28 +205,22 @@
</nz-card> </nz-card>
<nz-card> <nz-card>
<p class="detail_title" #distannce5><span>|</span> 轨迹信息</p>
<div nz-row> <div nz-row>
<nz-card nzTitle="轨迹信息" style="width: 100%" [nzExtra]="extraTemplate" #distannce5> <div nz-col [nzSpan]="24">
<div nz-row> <amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList" [pois]="pois">
<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> </amap-path-simplifier>
</div> <st [scroll]="{ y: '350px' }" #st [data]="addressItems" [columns]="logColumns2" [ps]="0"
</div> [page]="{ show: false, showSize: false }" size="small" class="map_st">
</nz-card> </st>
<ng-template #extraTemplate> <nz-radio-group [(ngModel)]="trajectory" (ngModelChange)="trajectoryChange($event)" class="map_radio">
<nz-radio-group [(ngModel)]="trajectory" (ngModelChange)="trajectoryChange($event)">
<label nz-radio-button nzValue="car">车辆轨迹</label> <label nz-radio-button nzValue="car">车辆轨迹</label>
<label nz-radio-button nzValue="driver">司机轨迹</label> <label nz-radio-button nzValue="driver">司机轨迹</label>
</nz-radio-group> </nz-radio-group>
</ng-template> </div>
</div> </div>
</nz-card> </nz-card>
<nz-card> <nz-card>
<nz-tabset> <nz-tabset>
<nz-tab nzTitle="风险异常检测"> <nz-tab nzTitle="风险异常检测">

View File

@ -22,7 +22,7 @@ import format from 'date-fns/format';
@Component({ @Component({
selector: 'app-supply-management-bulk-detail', selector: 'app-supply-management-bulk-detail',
templateUrl: './bulk-detail.component.html', templateUrl: './bulk-detail.component.html',
styleUrls: ['./bulk-detail.component.less'] styleUrls: ['./bulk-detail.component.less', '../../../commom/less/trajectory.less']
}) })
export class OrderManagementBulkeDetailComponent implements OnInit { export class OrderManagementBulkeDetailComponent implements OnInit {
MapList: any[] = []; MapList: any[] = [];
@ -50,7 +50,7 @@ export class OrderManagementBulkeDetailComponent implements OnInit {
operateLogColums: STColumn[] = [ operateLogColums: STColumn[] = [
{ title: '内容', index: 'operationContent' }, { title: '内容', index: 'operationContent' },
{ title: '操作人', render: 'operator' }, { title: '操作人', render: 'operator' },
{ title: '操作时间', index: 'operatorTimestamp' }, { title: '操作时间', index: 'operatorTimestamp' }
]; ];
logColumns: STColumn[] = [ logColumns: STColumn[] = [
{ title: '款项', index: 'expenseCodeLabel' }, { title: '款项', index: 'expenseCodeLabel' },
@ -73,7 +73,7 @@ export class OrderManagementBulkeDetailComponent implements OnInit {
} }
]; ];
get logParams() { get logParams() {
return { operateObject: this.i?.billCode, operateTypeList: ['3','8'] } return { operateObject: this.i?.billCode, operateTypeList: ['3', '8'] };
} }
trajectory = 'car'; trajectory = 'car';
mapList: any[] = []; //地图点位数据组 mapList: any[] = []; //地图点位数据组
@ -117,18 +117,20 @@ export class OrderManagementBulkeDetailComponent implements OnInit {
time: '计划卸货时间:' + res.unloadPlanTime time: '计划卸货时间:' + res.unloadPlanTime
} }
]; ];
this.service.request(this.service.$api_get_log_list,{operateObject: this.i?.billCode, operateTypeList: ['3','8']}).subscribe(res => { this.service
.request(this.service.$api_get_log_list, { operateObject: this.i?.billCode, operateTypeList: ['3', '8'] })
.subscribe(res => {
if (res) { if (res) {
console.log('操作日志'); console.log('操作日志');
console.log(res); console.log(res);
let a :any= [] let a: any = [];
res.records.forEach((item: any) => { res.records.forEach((item: any) => {
a.push({ a.push({
value: `操作人: ${item.operator} <br /> 操作内容: ${item.operationContent}`, value: `操作人: ${item.operator} <br /> 操作内容: ${item.operationContent}`,
time: item.operatorTimestamp, time: item.operatorTimestamp,
color: 'green' color: 'green'
}) });
}) });
console.log(a); console.log(a);
this.operationList = a; this.operationList = a;
} }
@ -147,10 +149,9 @@ export class OrderManagementBulkeDetailComponent implements OnInit {
if (res) { if (res) {
console.log('异常预警'); console.log('异常预警');
console.log(res); console.log(res);
this.warringList = res this.warringList = res;
} }
}); });
} }
goBack() { goBack() {
@ -178,7 +179,7 @@ export class OrderManagementBulkeDetailComponent implements OnInit {
handleOK() { handleOK() {
this.isVisible = false; this.isVisible = false;
} }
goDistance(elf: NzCardComponent) { goDistance(elf: any) {
if (elf) { if (elf) {
elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' }); elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' });
} }
@ -237,12 +238,16 @@ export class OrderManagementBulkeDetailComponent implements OnInit {
}); });
}); });
this.mapList = list; this.mapList = list;
this.addressItems = [...res.enclosureDataAppTrack]; const addressItems = [...res.tracks];
if (this.addressItems && this.addressItems.length > 0) { if (addressItems) {
this.addressItems.forEach(item => { addressItems.forEach(item => {
item.vinOutTime = this.getLocalTime(item.gtm); // item.parkBte = item.gtm;
item.cityName = item.appAdress; item.parkBte = this.getLocalTime(item.gtm);
item.parkAdr = item.appAdress;
}); });
this.addressItems = [...addressItems];
} else {
this.addressItems = [];
} }
} }
}); });

View File

@ -317,26 +317,22 @@
</nz-card> </nz-card>
<nz-card> <nz-card>
<p class="detail_title" #distannce5><span>|</span> 轨迹信息</p>
<div nz-row> <div nz-row>
<nz-card nzTitle="轨迹信息" style="width: 100%" [nzExtra]="extraTemplate" #distannce5> <div nz-col [nzSpan]="24">
<div nz-row> <amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList">
<div nz-col [nzSpan]="12"> </amap-path-simplifier>
<st [scroll]="{y: '500px'}" style="min-height: 600px;" #st [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }"> <st [scroll]="{ y: '350px' }" #st [data]="addressItems" [columns]="logColumns2" [ps]="0"
[page]="{ show: false, showSize: false }" size="small" class="map_st">
</st> </st>
</div> <nz-radio-group [(ngModel)]="trajectory" (ngModelChange)="trajectoryChange($event)" class="map_radio">
<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)">
<label nz-radio-button nzValue="car">车辆轨迹</label> <label nz-radio-button nzValue="car">车辆轨迹</label>
<label nz-radio-button nzValue="driver">司机轨迹</label> <label nz-radio-button nzValue="driver">司机轨迹</label>
</nz-radio-group> </nz-radio-group>
</ng-template> </div>
</div> </div>
</nz-card> </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> <ng-container *nzModalContent>
<div *ngIf="!modalcontent">暂无附件信息</div> <div *ngIf="!modalcontent">暂无附件信息</div>

View File

@ -34,7 +34,7 @@ function getBase64(file: File): Promise<string | ArrayBuffer | null> {
@Component({ @Component({
selector: 'app-supply-management-vehicle-detail-change', selector: 'app-supply-management-vehicle-detail-change',
templateUrl: './vehicle-detail-change.component.html', 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 { export class OrderManagementVehicleDetailChangeComponent implements OnInit {
validateForm1: FormGroup; validateForm1: FormGroup;
@ -317,8 +317,8 @@ export class OrderManagementVehicleDetailChangeComponent implements OnInit {
} }
initData() { initData() {
this.service.request(this.service.$api_get_getWholeBillDetail, { id: this.id }).subscribe(res => { this.service.request(this.service.$api_get_getWholeBillDetail, { id: this.id }).subscribe(res => {
console.log(res); // console.log(res);
console.log(JSON.stringify(res)); // console.log(JSON.stringify(res));
if (res) { if (res) {
this.i = res; this.i = res;
// this.initSF(); // this.initSF();
@ -871,7 +871,7 @@ export class OrderManagementVehicleDetailChangeComponent implements OnInit {
handleOK() { handleOK() {
this.isVisible = false; this.isVisible = false;
} }
goDistance(elf: NzCardComponent) { goDistance(elf: any) {
if (elf) { if (elf) {
elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' }); elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' });
// elf['elementRef'].nativeElement.className = 'target-fix' // elf['elementRef'].nativeElement.className = 'target-fix'
@ -952,12 +952,16 @@ export class OrderManagementVehicleDetailChangeComponent implements OnInit {
}); });
}); });
this.mapList = list; this.mapList = list;
this.addressItems = [...res?.enclosureDataAppTrack]; const addressItems = [...res.tracks];
if (this.addressItems && this.addressItems.length > 0) { if (addressItems) {
this.addressItems.forEach(item => { addressItems.forEach(item => {
item.vinOutTime = this.getLocalTime(item.gtm); // item.parkBte = item.gtm;
item.cityName = item.appAdress; item.parkBte = this.getLocalTime(item.gtm);
item.parkAdr = item.appAdress;
}); });
this.addressItems = [...addressItems];
} else {
this.addressItems = [];
} }
} }
}); });

View File

@ -58,7 +58,6 @@
<nz-card nzTitle="运单进度" #distannce1> <nz-card nzTitle="运单进度" #distannce1>
<div class="approval-status"> <div class="approval-status">
<div style="width: 60%; margin: 0 auto"> <div style="width: 60%; margin: 0 auto">
 
<nz-steps [nzCurrent]="i?.scheduleVOList?.length + 1" nzLabelPlacement="vertical"> <nz-steps [nzCurrent]="i?.scheduleVOList?.length + 1" nzLabelPlacement="vertical">
<nz-step *ngFor="let item of i?.scheduleVOList" [nzTitle]="item.state" [nzSubtitle]="item.stateTime" <nz-step *ngFor="let item of i?.scheduleVOList" [nzTitle]="item.state" [nzSubtitle]="item.stateTime"
[nzDescription]="item.cancelReason ? '取消原因' + item.cancelReason : ''" [nzDescription]="item.cancelReason ? '取消原因' + item.cancelReason : ''"
@ -207,28 +206,22 @@
</nz-card> </nz-card>
<nz-card> <nz-card>
<p class="detail_title" #distannce5><span>|</span> 轨迹信息</p>
<div nz-row> <div nz-row>
<nz-card nzTitle="轨迹信息" style="width: 100%" [nzExtra]="extraTemplate" #distannce5> <div nz-col [nzSpan]="24">
<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 [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList" [pois]="pois">
</amap-path-simplifier> </amap-path-simplifier>
</div> <st [scroll]="{ y: '350px' }" #st [data]="addressItems" [columns]="logColumns2" [ps]="0"
</div> [page]="{ show: false, showSize: false }" size="small" class="map_st">
</nz-card> </st>
<ng-template #extraTemplate> <nz-radio-group [(ngModel)]="trajectory" (ngModelChange)="trajectoryChange($event)" class="map_radio">
<nz-radio-group [(ngModel)]="trajectory" (ngModelChange)="trajectoryChange($event)">
<label nz-radio-button nzValue="car">车辆轨迹</label> <label nz-radio-button nzValue="car">车辆轨迹</label>
<label nz-radio-button nzValue="driver">司机轨迹</label> <label nz-radio-button nzValue="driver">司机轨迹</label>
</nz-radio-group> </nz-radio-group>
</ng-template> </div>
</div> </div>
</nz-card> </nz-card>
<nz-card> <nz-card>
<nz-tabset> <nz-tabset>
<nz-tab nzTitle="风险异常检测"> <nz-tab nzTitle="风险异常检测">

View File

@ -19,7 +19,7 @@ import { OrderManagementService } from '../../services/order-management.service'
@Component({ @Component({
selector: 'app-supply-management-vehicle-detail', selector: 'app-supply-management-vehicle-detail',
templateUrl: './vehicle-detail.component.html', templateUrl: './vehicle-detail.component.html',
styleUrls: ['./vehicle-detail.component.less'] styleUrls: ['./vehicle-detail.component.less', '../../../commom/less/trajectory.less']
}) })
export class OrderManagementVehicleDetailComponent implements OnInit { export class OrderManagementVehicleDetailComponent implements OnInit {
id = this.route.snapshot.params.id; id = this.route.snapshot.params.id;
@ -46,7 +46,7 @@ export class OrderManagementVehicleDetailComponent implements OnInit {
approvalLsit: any; approvalLsit: any;
isVisible = false; isVisible = false;
logColumns2: STColumn[] = [ logColumns2: STColumn[] = [
{ title: '时间', index: 'parkBte' }, { title: '时间', index: 'parkBte', width: 120, className: 'text-center' },
{ title: '地点', index: 'parkAdr' } { title: '地点', index: 'parkAdr' }
]; ];
logColumns3: STColumn[] = [ logColumns3: STColumn[] = [
@ -56,7 +56,7 @@ export class OrderManagementVehicleDetailComponent implements OnInit {
operateLogColums: STColumn[] = [ operateLogColums: STColumn[] = [
{ title: '内容', index: 'operationContent' }, { title: '内容', index: 'operationContent' },
{ title: '操作人', render: 'operator' }, { title: '操作人', render: 'operator' },
{ title: '操作时间', index: 'operatorTimestamp' }, { title: '操作时间', index: 'operatorTimestamp' }
]; ];
logColumns: STColumn[] = [ logColumns: STColumn[] = [
{ title: '款项', index: 'expenseCodeLabel' }, { title: '款项', index: 'expenseCodeLabel' },
@ -84,7 +84,7 @@ export class OrderManagementVehicleDetailComponent implements OnInit {
this.getTrajectory(); this.getTrajectory();
} }
get logParams() { get logParams() {
return { operateObject: this.i?.billCode, operateTypeList: ['3','8'] } return { operateObject: this.i?.billCode, operateTypeList: ['3', '8'] };
} }
initData() { initData() {
this.service.request(this.service.$api_get_getWholeBillDetail, { id: this.id }).subscribe(res => { this.service.request(this.service.$api_get_getWholeBillDetail, { id: this.id }).subscribe(res => {
@ -108,18 +108,20 @@ export class OrderManagementVehicleDetailComponent implements OnInit {
time: '计划卸货时间:' + res.unloadPlanTime time: '计划卸货时间:' + res.unloadPlanTime
} }
]; ];
this.service.request(this.service.$api_get_log_list,{operateObject: this.i?.billCode, operateTypeList: ['3','8']}).subscribe(res => { this.service
.request(this.service.$api_get_log_list, { operateObject: this.i?.billCode, operateTypeList: ['3', '8'] })
.subscribe(res => {
if (res) { if (res) {
console.log('操作日志'); console.log('操作日志');
console.log(res); console.log(res);
let a :any= [] let a: any = [];
res.records.forEach((item: any) => { res.records.forEach((item: any) => {
a.push({ a.push({
value: `操作人: ${item.operator} <br /> 操作内容: ${item.operationContent}`, value: `操作人: ${item.operator} <br /> 操作内容: ${item.operationContent}`,
time: item.operatorTimestamp, time: item.operatorTimestamp,
color: 'green' color: 'green'
}) });
}) });
console.log(a); console.log(a);
this.operationList = a; this.operationList = a;
} }
@ -140,10 +142,9 @@ export class OrderManagementVehicleDetailComponent implements OnInit {
if (res) { if (res) {
console.log('异常预警'); console.log('异常预警');
console.log(res); console.log(res);
this.warringList = res this.warringList = res;
} }
}); });
} }
// 取消订单 // 取消订单
cancellation() { cancellation() {
@ -185,7 +186,7 @@ export class OrderManagementVehicleDetailComponent implements OnInit {
this.isVisible = false; this.isVisible = false;
} }
goDistance(elf: NzCardComponent) { goDistance(elf: any) {
if (elf) { if (elf) {
elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' }); elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' });
// elf['elementRef'].nativeElement.className = 'target-fix' // elf['elementRef'].nativeElement.className = 'target-fix'
@ -205,11 +206,14 @@ export class OrderManagementVehicleDetailComponent implements OnInit {
}); });
}); });
this.mapList = list; this.mapList = list;
this.addressItems = res.parkArray; const addressItems: any[] = res.parkArray;
if (this.addressItems && this.addressItems.length > 0) { if (addressItems?.length > 0) {
this.addressItems.forEach(item => { addressItems.forEach(item => {
item.parkBte = this.getLocalTime(item.parkBte); item.parkBte = this.getLocalTime(item.parkBte);
}); });
this.addressItems = [...addressItems];
} else {
this.addressItems = [];
} }
} }
}); });
@ -228,13 +232,17 @@ export class OrderManagementVehicleDetailComponent implements OnInit {
time: item.gtm time: item.gtm
}); });
}); });
this.mapList = list; this.mapList = list || [];
this.addressItems = [...res.enclosureDataAppTrack]; const addressItems = [...res.tracks];
if (this.addressItems && this.addressItems.length > 0) { if (addressItems) {
this.addressItems.forEach(item => { addressItems.forEach(item => {
item.vinOutTime = this.getLocalTime(item.gtm); // item.parkBte = item.gtm;
item.cityName = item.appAdress; item.parkBte = this.getLocalTime(item.gtm);
item.parkAdr = item.appAdress;
}); });
this.addressItems = [...addressItems];
} else {
this.addressItems = [];
} }
} }
}); });

View File

@ -859,7 +859,7 @@ export class OrderManagementVehicleComponent extends BasicTableComponent impleme
const modalRef = this.modal.create({ const modalRef = this.modal.create({
nzTitle: '查看轨迹', nzTitle: '查看轨迹',
nzContent: OneCarOrderViewtrackComponent, nzContent: OneCarOrderViewtrackComponent,
nzWidth: '800px', nzWidth: '900px',
nzComponentParams: { nzComponentParams: {
i: item i: item
}, },

View File

@ -8,24 +8,18 @@
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\modal\\vehicle\\view-track\\view-track.component.html * @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\modal\\vehicle\\view-track\\view-track.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved. * Copyright (C) 2022 huzhenhong. All rights reserved.
--> -->
<div> <div nz-row>
<nz-card nzTitle="轨迹信息" [nzExtra]="extraTemplate" > <div nz-col [nzSpan]="24">
<div style="display: flex; flex: 1;"> <amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="MapList">
<div style=" flex: 1;"> </amap-path-simplifier>
<st #st [scroll]="{y: '500px'}" style="min-height: 600px;" [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }"> <st [scroll]="{ y: '350px' }" #st [data]="addressItems" [columns]="logColumns2" [ps]="0"
[page]="{ show: false, showSize: false }" size="small" class="map_st">
</st> </st>
</div> <nz-radio-group [(ngModel)]="trajectory" (ngModelChange)="trajectoryChange($event)" class="map_radio">
<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="car">车辆轨迹</label>
<label nz-radio-button nzValue="driver">司机轨迹</label> <label nz-radio-button nzValue="driver">司机轨迹</label>
</nz-radio-group> </nz-radio-group>
</ng-template> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">

View File

@ -25,10 +25,9 @@ import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal'; import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';
import { OrderManagementService } from '../../../services/order-management.service'; import { OrderManagementService } from '../../../services/order-management.service';
@Component({ @Component({
selector: 'app-order-management-view-track', 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' templateUrl: './view-track.component.html'
}) })
export class OneCarOrderViewtrackComponent implements OnInit { export class OneCarOrderViewtrackComponent implements OnInit {
@ -39,7 +38,7 @@ export class OneCarOrderViewtrackComponent implements OnInit {
addressItems: any[] = []; //打点地址数据组 addressItems: any[] = []; //打点地址数据组
logColumns2: STColumn[] = [ logColumns2: STColumn[] = [
{ title: '时间', index: 'parkBte' }, { title: '时间', index: 'parkBte' },
{ title: '地点', index: 'parkAdr' }, { title: '地点', index: 'parkAdr' }
]; ];
constructor( constructor(
private modalRef: NzModalRef, private modalRef: NzModalRef,
@ -51,7 +50,6 @@ export class OneCarOrderViewtrackComponent implements OnInit {
ngOnInit(): void { ngOnInit(): void {
console.log(this.i); console.log(this.i);
this.getTrajectory(); this.getTrajectory();
} }
close(value: boolean): void { close(value: boolean): void {
this.modalRef.close(false); this.modalRef.close(false);
@ -94,19 +92,23 @@ export class OneCarOrderViewtrackComponent implements OnInit {
}); });
}); });
this.mapList = list; this.mapList = list;
this.addressItems = [...res.enclosureDataAppTrack]; const addressItems = [...res.tracks];
if(this.addressItems && this.addressItems.length > 0){ if (addressItems) {
this.addressItems.forEach(item => { addressItems.forEach(item => {
item.vinOutTime = this.getLocalTime(item.gtm); // item.parkBte = item.gtm;
item.cityName = item.appAdress; item.parkBte = this.getLocalTime(item.gtm);
item.parkAdr = item.appAdress;
}); });
this.addressItems = [...addressItems];
} else {
this.addressItems = [];
} }
} }
}); });
} }
trajectoryChange(event: any) { trajectoryChange(event: any) {
if (event === 'car') { if (event === 'car') {
this.getTrajectory() this.getTrajectory();
} else if (event === 'driver') { } else if (event === 'driver') {
this.getDriverTrajectory(); this.getDriverTrajectory();
} }

View File

@ -19,8 +19,10 @@
</div> </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> <div nz-col>
<button nz-button *ngIf="i?.wayBillStatus == '2'" (click)="sureDepart(i)" acl [acl-ability]="['WAYBILL-BULK-DETAIL-insertBulkStartCarInfo']">确认发车</button> <button nz-button *ngIf="i?.wayBillStatus == '2'" (click)="sureDepart(i)" acl
<button nz-button nzType="primary" *ngIf="i?.wayBillStatus == '3'" (click)="sureArrive(i)" nzGhost acl [acl-ability]="['WAYBILL-BULK-DETAIL-insertBulkUnloadCarInfo']" >确认</button> [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> <div>
@ -54,12 +56,8 @@
<div style="width: 60%; margin: 0 auto"> <div style="width: 60%; margin: 0 auto">
   
<nz-steps [nzCurrent]="i?.scheduleVOList?.length + 1" nzLabelPlacement="vertical"> <nz-steps [nzCurrent]="i?.scheduleVOList?.length + 1" nzLabelPlacement="vertical">
<nz-step <nz-step *ngFor="let item of i?.scheduleVOList" [nzTitle]="item.state" [nzSubtitle]="item.stateTime"
*ngFor="let item of i?.scheduleVOList" [nzStatus]="item.displayStatus === 'SHOW' ? 'finish' : 'wait'"></nz-step>
[nzTitle]="item.state"
[nzSubtitle]="item.stateTime"
[nzStatus]="item.displayStatus === 'SHOW' ? 'finish' : 'wait'"
></nz-step>
</nz-steps> </nz-steps>
</div> </div>
</div> </div>
@ -76,7 +74,8 @@
{{i?.goodsInfos?.[0]?.weight}}吨,{{i?.goodsInfos?.[0]?.volume}}方,{{i?.goodsInfos?.[0]?.number}}件 {{i?.goodsInfos?.[0]?.weight}}吨,{{i?.goodsInfos?.[0]?.volume}}方,{{i?.goodsInfos?.[0]?.number}}件
</sv> </sv>
<sv label="用车需求"> <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>
<sv label="承运司机"> <sv label="承运司机">
{{i?.driver?.name}}/{{i?.driver?.phone}} {{i?.driver?.name}}/{{i?.driver?.phone}}
@ -238,29 +237,26 @@
</sv> </sv>
</sv-container> </sv-container>
</nz-card> </nz-card>
<nz-card> <nz-card>
<p class="detail_title" #distannce5><span>|</span> 轨迹信息</p>
<div nz-row> <div nz-row>
<nz-card nzTitle="轨迹信息" style="width: 100%" [nzExtra]="extraTemplate" #distannce5> <div nz-col [nzSpan]="24">
<div nz-row> <amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList">
<div nz-col [nzSpan]="12"> </amap-path-simplifier>
<st [scroll]="{y: '500px'}" style="min-height: 600px;" #st [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }"> <st [scroll]="{ y: '350px' }" #st [data]="addressItems" [columns]="logColumns2" [ps]="0"
[page]="{ show: false, showSize: false }" size="small" class="map_st">
</st> </st>
</div> <nz-radio-group [(ngModel)]="trajectory" (ngModelChange)="trajectoryChange($event)" class="map_radio">
<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)">
<label nz-radio-button nzValue="car">车辆轨迹</label> <label nz-radio-button nzValue="car">车辆轨迹</label>
<label nz-radio-button nzValue="driver">司机轨迹</label> <label nz-radio-button nzValue="driver">司机轨迹</label>
</nz-radio-group> </nz-radio-group>
</ng-template> </div>
</div> </div>
</nz-card> </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> <ng-container *nzModalContent>
<div *ngIf="!modalcontent">暂无附件信息</div> <div *ngIf="!modalcontent">暂无附件信息</div>
<div [innerHTML]="modalcontent"></div> <div [innerHTML]="modalcontent"></div>

View File

@ -20,10 +20,9 @@ import { WaybillManagementServe } from '../../services/waybill-management.servic
@Component({ @Component({
selector: 'app-supply-management-bulk-detail', selector: 'app-supply-management-bulk-detail',
templateUrl: './bulk-detail.component.html', templateUrl: './bulk-detail.component.html',
styleUrls: ['./bulk-detail.component.less'] styleUrls: ['./bulk-detail.component.less', '../../../commom/less/trajectory.less']
}) })
export class WaybillManagementBulkeDetailComponent implements OnInit { export class WaybillManagementBulkeDetailComponent implements OnInit {
id = this.route.snapshot.params.id; id = this.route.snapshot.params.id;
i: any; i: any;
totalObj: any; totalObj: any;
@ -40,7 +39,7 @@ export class WaybillManagementBulkeDetailComponent implements OnInit {
unLoadingPlaceVOList: any = []; unLoadingPlaceVOList: any = [];
logColumns2: STColumn[] = [ logColumns2: STColumn[] = [
{ title: '时间', index: 'parkBte' }, { title: '时间', index: 'parkBte' },
{ title: '地点', index: 'parkAdr' }, { title: '地点', index: 'parkAdr' }
]; ];
logColumns: STColumn[] = [ logColumns: STColumn[] = [
{ title: '款项', index: 'costCodeLabel' }, { title: '款项', index: 'costCodeLabel' },
@ -68,30 +67,27 @@ export class WaybillManagementBulkeDetailComponent implements OnInit {
private modal: NzModalService, private modal: NzModalService,
private service: WaybillManagementServe, private service: WaybillManagementServe,
private modalService: NzModalService private modalService: NzModalService
) { ) {}
}
ngOnInit(): void { ngOnInit(): void {
this.initData() this.initData();
this.getTrajectory() this.getTrajectory();
} }
initData() { initData() {
const params = { const params = {
id: this.id id: this.id
} };
this.service.request(this.service.$api_get_getBulkDetail, params).subscribe((res) => { this.service.request(this.service.$api_get_getBulkDetail, params).subscribe(res => {
console.log(res) console.log(res);
this.unLoadingPlaceVOList.push(...res.loadingPlace) this.unLoadingPlaceVOList.push(...res.loadingPlace);
this.unLoadingPlaceVOList.push(...res.dischargePlace) this.unLoadingPlaceVOList.push(...res.dischargePlace);
console.log(this.unLoadingPlaceVOList) console.log(this.unLoadingPlaceVOList);
this.i = res; this.i = res;
this.billExpenses = this.i?.billExpenseDetails?.filter((data: any) => data.costCode === 'TRA'); 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() { hand() {
this.modalService.create({ this.modalService.create({
nzTitle: '', nzTitle: '',
@ -107,7 +103,6 @@ export class WaybillManagementBulkeDetailComponent implements OnInit {
if (value === '1') { if (value === '1') {
this.modalTitle = '附件信息'; this.modalTitle = '附件信息';
this.modalcontent = this.i?.contractContent?.contractContent; this.modalcontent = this.i?.contractContent?.contractContent;
} else if (value === '2') { } else if (value === '2') {
this.modalTitle = '补充协议'; this.modalTitle = '补充协议';
this.modalcontent = this.i?.supplementContent?.contractContent; this.modalcontent = this.i?.supplementContent?.contractContent;
@ -115,12 +110,12 @@ export class WaybillManagementBulkeDetailComponent implements OnInit {
this.isVisible = true; this.isVisible = true;
} }
handleCancel() { handleCancel() {
this.isVisible = false this.isVisible = false;
} }
handleOK() { handleOK() {
this.isVisible = false this.isVisible = false;
} }
goDistance(elf: NzCardComponent) { goDistance(elf: any) {
if (elf) { if (elf) {
elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' }); elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' });
} }
@ -138,8 +133,7 @@ goDistance(elf: NzCardComponent) {
nzFooter: null nzFooter: null
}); });
modalRef.afterClose.subscribe((result: any) => { modalRef.afterClose.subscribe((result: any) => {
this.initData() this.initData();
}); });
} }
// 确认到车 // 确认到车
@ -155,7 +149,7 @@ sureArrive(item: any) {
nzFooter: null nzFooter: null
}); });
modalRef.afterClose.subscribe((result: any) => { modalRef.afterClose.subscribe((result: any) => {
this.initData() this.initData();
}); });
} }
// 获取车辆轨迹 // 获取车辆轨迹
@ -196,19 +190,23 @@ sureArrive(item: any) {
}); });
}); });
this.mapList = list; this.mapList = list;
this.addressItems = [...res.enclosureDataAppTrack]; const addressItems = [...res.tracks];
if(this.addressItems && this.addressItems.length > 0){ if (addressItems) {
this.addressItems.forEach(item => { addressItems.forEach(item => {
item.vinOutTime = this.getLocalTime(item.gtm); // item.parkBte = item.gtm;
item.cityName = item.appAdress; item.parkBte = this.getLocalTime(item.gtm);
item.parkAdr = item.appAdress;
}); });
this.addressItems = [...addressItems];
} else {
this.addressItems = [];
} }
} }
}); });
} }
trajectoryChange(event: any) { trajectoryChange(event: any) {
if (event === 'car') { if (event === 'car') {
this.getTrajectory() this.getTrajectory();
} else if (event === 'driver') { } else if (event === 'driver') {
this.getDriverTrajectory(); this.getDriverTrajectory();
} }

View File

@ -19,8 +19,10 @@
</div> </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> <div nz-col>
<button nz-button (click)="sureDepart(i)" *ngIf="i?.wayBillStatus == '2'" acl [acl-ability]="['WAYBILL-VEHICLE-DETAIL-wholeStartCarInfo']">确认发车</button> <button nz-button (click)="sureDepart(i)" *ngIf="i?.wayBillStatus == '2'" acl
<button nz-button nzType="primary" (click)="sureArrive(i)" *ngIf="i?.wayBillStatus == '3'" nzGhost acl [acl-ability]="['WAYBILL-VEHICLE-DETAIL-wholeUnloadCarInfo']">确认</button> [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> <div>
@ -52,12 +54,8 @@
<div class="approval-status"> <div class="approval-status">
<div style="width: 60%; margin: 0 auto"> <div style="width: 60%; margin: 0 auto">
  <nz-steps [nzCurrent]="i?.scheduleVOList?.length + 1" nzLabelPlacement="vertical">   <nz-steps [nzCurrent]="i?.scheduleVOList?.length + 1" nzLabelPlacement="vertical">
  <nz-step   <nz-step           *ngFor="let item of i?.scheduleVOList"     [nzTitle]="item.state"    
          *ngFor="let item of i?.scheduleVOList" [nzSubtitle]="item.stateTime"     [nzStatus]="item.displayStatus === 'SHOW' ? 'finish' : 'wait'"  >
    [nzTitle]="item.state"
    [nzSubtitle]="item.stateTime"
    [nzStatus]="item.displayStatus === 'SHOW' ? 'finish' : 'wait'"
  >
  </nz-step>   </nz-step>
 </nz-steps>  </nz-steps>
</div> </div>
@ -75,13 +73,15 @@
{{i?.goodsInfos?.[0]?.weight}}吨,{{i?.goodsInfos?.[0]?.volume}}方,{{i?.goodsInfos?.[0]?.number}}件 {{i?.goodsInfos?.[0]?.weight}}吨,{{i?.goodsInfos?.[0]?.volume}}方,{{i?.goodsInfos?.[0]?.number}}件
</sv> </sv>
<sv label="用车需求"> <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>
<sv label="承运司机"> <sv label="承运司机">
{{i?.driverVo?.name}}{{ i?.driverVo?.phone ? '/' + i?.driverVo?.phone : ''}} {{i?.driverVo?.name}}{{ i?.driverVo?.phone ? '/' + i?.driverVo?.phone : ''}}
</sv> </sv>
<sv label="车型车长载重"> <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>
<sv label="计划装货时间"> <sv label="计划装货时间">
{{i?.loadingTime}} {{i?.loadingTime}}
@ -154,10 +154,12 @@
</ng-template> </ng-template>
</st> </st>
<div> <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)}}% 附加费{{ i?.totalSurcharge | currency }},附加费率{{ (i?.totalRate * 100).toFixed(2)}}%
</div> </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>
<nz-card nzTitle="附件信息" #distannce4> <nz-card nzTitle="附件信息" #distannce4>
@ -186,7 +188,8 @@
<sv label="回单类型" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> <sv label="回单类型" *ngIf="i?.supplementaryInformationVO?.stateReceipt">
{{ i?.supplementaryInformationVO?.receiptType === '1' ? '电子回单' : '纸质回单' }} {{ i?.supplementaryInformationVO?.receiptType === '1' ? '电子回单' : '纸质回单' }}
</sv> </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"> <sv label="所在地区" *ngIf="i?.supplementaryInformationVO?.stateReceipt">
{{ i?.supplementaryInformationVO?.area }} {{ i?.supplementaryInformationVO?.area }}
</sv> </sv>
@ -205,28 +208,24 @@
</nz-card> </nz-card>
<nz-card> <nz-card>
<p class="detail_title" #distannce5><span>|</span> 轨迹信息</p>
<div nz-row> <div nz-row>
<nz-card nzTitle="轨迹信息" style="width: 100%" [nzExtra]="extraTemplate" #distannce5> <div nz-col [nzSpan]="24">
<div nz-row> <amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList">
<div nz-col [nzSpan]="12"> </amap-path-simplifier>
<st [scroll]="{y: '500px'}" style="min-height: 600px;" #st [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }"> <st [scroll]="{ y: '350px' }" #st [data]="addressItems" [columns]="logColumns2" [ps]="0"
[page]="{ show: false, showSize: false }" size="small" class="map_st">
</st> </st>
</div> <nz-radio-group [(ngModel)]="trajectory" (ngModelChange)="trajectoryChange($event)" class="map_radio">
<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)">
<label nz-radio-button nzValue="car">车辆轨迹</label> <label nz-radio-button nzValue="car">车辆轨迹</label>
<label nz-radio-button nzValue="driver">司机轨迹</label> <label nz-radio-button nzValue="driver">司机轨迹</label>
</nz-radio-group> </nz-radio-group>
</ng-template> </div>
</div> </div>
</nz-card> </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> <ng-container *nzModalContent>
<div *ngIf="!modalcontent">暂无附件信息</div> <div *ngIf="!modalcontent">暂无附件信息</div>
<div [innerHTML]="modalcontent"></div> <div [innerHTML]="modalcontent"></div>

View File

@ -21,7 +21,7 @@ import { WaybillManagementServe } from '../../services/waybill-management.servic
@Component({ @Component({
selector: 'app-supply-management-vehicle-detail', selector: 'app-supply-management-vehicle-detail',
templateUrl: './vehicle-detail.component.html', 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 { export class WaybillManagementVehicleDetailComponent implements OnInit, OnDestroy {
id = this.route.snapshot.params.id; id = this.route.snapshot.params.id;
@ -36,8 +36,8 @@ export class WaybillManagementVehicleDetailComponent implements OnInit, OnDestro
imges: any; imges: any;
unLoadingPlaceVOList: any = []; unLoadingPlaceVOList: any = [];
logColumns2: STColumn[] = [ logColumns2: STColumn[] = [
{ title: '时间', index: 'vinOutTime' }, { title: '时间', index: 'parkBte' },
{ title: '地点', index: 'cityName' } { title: '地点', index: 'parkAdr' }
]; ];
modalcontent: any; modalcontent: any;
modalTitle: string = ''; modalTitle: string = '';
@ -99,7 +99,6 @@ export class WaybillManagementVehicleDetailComponent implements OnInit, OnDestro
if (value === '1') { if (value === '1') {
this.modalTitle = '附件信息'; this.modalTitle = '附件信息';
this.modalcontent = this.i?.contractContent?.contractContent; this.modalcontent = this.i?.contractContent?.contractContent;
} else if (value === '2') { } else if (value === '2') {
this.modalTitle = '补充协议'; this.modalTitle = '补充协议';
this.modalcontent = this.i?.supplementContent?.contractContent; this.modalcontent = this.i?.supplementContent?.contractContent;
@ -112,7 +111,7 @@ export class WaybillManagementVehicleDetailComponent implements OnInit, OnDestro
handleOK() { handleOK() {
this.isVisible = false; this.isVisible = false;
} }
goDistance(elf: NzCardComponent) { goDistance(elf: any) {
if (elf) { if (elf) {
elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' }); elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' });
} }
@ -189,12 +188,16 @@ export class WaybillManagementVehicleDetailComponent implements OnInit, OnDestro
}); });
}); });
this.mapList = list; this.mapList = list;
this.addressItems = [...res.enclosureDataAppTrack]; const addressItems = [...res.tracks];
if (this.addressItems && this.addressItems.length > 0) { if (addressItems) {
this.addressItems.forEach(item => { addressItems.forEach(item => {
item.vinOutTime = this.getLocalTime(item.gtm); // item.parkBte = item.gtm;
item.cityName = item.appAdress; item.parkBte = this.getLocalTime(item.gtm);
item.parkAdr = item.appAdress;
}); });
this.addressItems = [...addressItems];
} else {
this.addressItems = [];
} }
} }
}); });