车辆对接

This commit is contained in:
wangshiming
2021-12-28 10:27:34 +08:00
parent 2d67ea537d
commit c904aeba46
17 changed files with 564 additions and 355 deletions

View File

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-12-03 15:31:52
* @LastEditTime: 2021-12-27 20:39:45
* @LastEditTime: 2021-12-28 09:54:53
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\order-management\components\vehicle-detail\vehicle-detail.component.html
@ -14,6 +14,7 @@
</ng-template>
<ng-template #headerContent>
<div class="mb-xs" nz-row>
<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;">
@ -24,8 +25,8 @@
<button nz-button nzType="primary" nzGhost >再下一单</button>
</div>
</div>
<nz-divider></nz-divider>
<div>
<div style="display: flex; justify-content: space-between;">
<div sv-container>
<sv label="网络货运人">{{ i?.goodsResource?.[0]?.enterpriseInfoName }} </sv>
<sv label="货主">{{ i?.goodsResource?.[0]?.shipperAppUserName }} </sv>
@ -34,11 +35,6 @@
<sv label="录单员">{{i?.goodsResource?.[0]?.dispatchName}} 18100000000 </sv>
<sv label="调度员">{{i?.goodsResource?.[0]?.dispatchName}} </sv>
</div>
<div>
<div>状态</div>
<div style="font-size: 22px;font-weight: 700;">{{i?.billStatusLabel}}</div>
</div>
</div>
<nz-tabset nzType="card" style="margin-top: 15px;">
<nz-tab [nzTitle]="tempt" >
<ng-template #tempt>
@ -95,43 +91,7 @@
</div>
</nz-card>
<nz-card nzTitle="装卸货信息(一装一卸)" id="distannce1" >
<div class="mt-md">
<div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="8">
<div class="handling-info p-md">
<div class="flex" *ngFor="let item of i?.unLoadingPlaceList;let idx = index">
<div *ngIf="item?.type === '1'" class="loading-row">
<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 nz-col [nzSpan]="8" style="display: flex; justify-content: center; align-items: center;">
<div >
<span style="padding: 24 px; font-size: 30px;"><img style="width: 48px;" src="../../../../../assets/images/usercenter/彩色-箭头-向右-1.png" alt=""></span>
</div>
</div>
<div nz-col [nzSpan]="8">
<div class="handling-info p-md">
<div class="flex" *ngFor="let item of i?.unLoadingPlaceList;let idx = index">
<div *ngIf="item?.type === '2'" class="loading-row">
<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-card>
<nz-card nzTitle="基本信息" id="distannce2">
<nz-card nzTitle="基本信息">
<sv-container col="1">
<sv label="货物名称">
{{i?.goodsInfoList?.[0]?.goodsName}}
@ -166,8 +126,44 @@
{{i?.settlementWeight}}吨,{{i?.settlementVolume}}方,{{i?.acceptNumber}}件
</sv>
</sv-container>
<div class="mt-md">
<h4 class="text-md">装货卸货信息
<span class="ml-sm text-sm">(
<label>{{i?.loadingCount}}装</label>
<label>{{i?.unloadingCount}}卸</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?.unLoadingPlaceList">
<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 nz-col [nzSpan]="12">
<div class="handling-info p-md">
<div class="flex" *ngFor="let item of i?.unLoadingPlaceList">
<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>
</nz-card>
<nz-card nzTitle="运费信息" id="distannce3">
<h2>{{i?.goodsInfoList?.[0]?.freightPrice}}{{i?.goodsInfoList?.[0]?.freightTypeLabel}}(以发货为准,保留小数)</h2>
<st #st [data]="i?.billExpenseDetails" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }">

View File

@ -57,5 +57,38 @@
.leftPadding {
padding-right: 100px;
}
.handling-info {
min-height: 100px;
border: 1px solid #ccc;
.loading-row {
display: flex;
}
.handling-info-icon {
width: 32px;
height: 32px;
margin-right: 24px;
color: #fff;
line-height: 32px;
text-align: center;
border-radius: 50%;
&.loading-bg {
background-color: #50D4AB;
}
&.unloaing-bg {
background: #F66F6A;
}
}
.info {
flex: 1;
}
.time-info {
margin-left: 56px;
}
}
}

View File

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-12-03 15:31:52
* @LastEditTime: 2021-12-27 21:06:47
* @LastEditTime: 2021-12-28 09:56:51
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\order-management\components\vehicle-detail\vehicle-detail.component.html
@ -14,6 +14,7 @@
</ng-template>
<ng-template #headerContent>
<div class="mb-xs" nz-row>
<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;">
@ -24,8 +25,8 @@
<button nz-button nzType="primary" nzGhost >再下一单</button>
</div>
</div>
<nz-divider></nz-divider>
<div>
<div style="display: flex; justify-content: space-between;">
<div sv-container>
<sv label="网络货运人">{{ i?.goodsResource?.enterpriseInfoName }} </sv>
<sv label="货主">{{ i?.goodsResource?.shipperAppUserName }} </sv>
@ -34,11 +35,6 @@
<sv label="录单员">{{i?.goodsResource?.dispatchName}} 18100000000 </sv>
<sv label="调度员">{{i?.goodsResource?.dispatchName}} </sv>
</div>
<div>
<div>状态</div>
<div style="font-size: 22px;font-weight: 700;">{{i?.billStatusLabel}}</div>
</div>
</div>
<nz-tabset nzType="card" style="margin-top: 15px;">
<nz-tab [nzTitle]="tempt" >
<ng-template #tempt>
@ -95,45 +91,9 @@
</div>
</nz-card>
<nz-card nzTitle="装卸货信息(一装一卸)" id="distannce1" >
<div class="mt-md">
<div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="8">
<div class="handling-info p-md">
<div class="flex" *ngFor="let item of i?.unLoadingPlaceList;let idx = index">
<div *ngIf="item?.type === '1'" class="loading-row">
<div class="info">
<h4>装货地:{{item?.province}}{{item?.city}}{{item?.area}}{{item?.detailedAddress}}</h4>
<p>联系人:{{item?.appUserName}}/{{item?.contractTelephone}}</p>
</div>
</div>
</div>
<p class="time-info">计划装货时间:{{i?.goodsResource?.loadingTime}}</p>
</div>
</div>
<div nz-col [nzSpan]="8" style="display: flex; justify-content: center; align-items: center;">
<div >
<span style="padding: 24 px; font-size: 30px;"><img style="width: 48px;" src="../../../../../assets/images/usercenter/彩色-箭头-向右-1.png" alt=""></span>
</div>
</div>
<div nz-col [nzSpan]="8">
<div class="handling-info p-md">
<div class="flex" *ngFor="let item of i?.unLoadingPlaceList;let idx = index">
<div *ngIf="item?.type === '2'" class="loading-row">
<div class="info">
<h4>卸货地:{{item?.province}}{{item?.city}}{{item?.area}}{{item?.detailedAddress}}</h4>
<p>联系人:{{item?.appUserName}}/{{item?.contractTelephone}}</p>
</div>
</div>
</div>
<p class="time-info">计划卸货时间:{{i?.goodsResource?.unloadingTime}}</p>
</div>
</div>
</div>
</div>
</nz-card>
<nz-card nzTitle="基本信息" id="distannce2">
<nz-card nzTitle="基本信息">
<sv-container col="1">
<sv-title>货物信息</sv-title>
<sv label="网络货运人">
{{i?.goodsResource?.enterpriseInfoName}}
</sv>
@ -155,8 +115,45 @@
{{i?.goodsInfoList?.[0]?.weight}}顿,{{i?.goodsInfoList?.[0]?.volume}}方,{{i?.goodsInfoList?.[0]?.number}}件
</sv>
</sv-container>
<div class="mt-md">
<h4 class="text-md">装货卸货信息
<span class="ml-sm text-sm">(
<label>{{i?.loadingCount}}装</label>
<label>{{i?.unloadingCount}}卸</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?.unLoadingPlaceList">
<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>
<p class="time-info">计划装货时间:{{i?.goodsResource?.loadingTime}}</p>
</div>
</div>
<div nz-col [nzSpan]="12">
<div class="handling-info p-md">
<div class="flex" *ngFor="let item of i?.unLoadingPlaceList">
<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>
<p class="time-info">计划卸货时间:{{i?.goodsResource?.unloadingTime}}</p>
</div>
</div>
</div>
</div>
</nz-card>
<nz-card nzTitle="保险待定">
</nz-card>

View File

@ -60,4 +60,38 @@
.hide{
display: none;
}
.handling-info {
min-height: 100px;
border: 1px solid #ccc;
.loading-row {
display: flex;
}
.handling-info-icon {
width: 32px;
height: 32px;
margin-right: 24px;
color: #fff;
line-height: 32px;
text-align: center;
border-radius: 50%;
&.loading-bg {
background-color: #50D4AB;
}
&.unloaing-bg {
background: #F66F6A;
}
}
.info {
flex: 1;
}
.time-info {
margin-left: 56px;
}
}
}

View File

@ -1,3 +1,11 @@
<!--
* @Author: your name
* @Date: 2021-12-21 10:58:48
* @LastEditTime: 2021-12-28 10:16:29
* @LastEditors: your name
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\supply-management\components\add-driver\add-driver.component.html
-->
<div class="modal-header">
<div class="modal-title">添加司机</div>
</div>
@ -10,7 +18,7 @@
<dt>正面照</dt>
<dd>示例</dd>
</dl>
<div class="pa"><img width="190" src="/assets/images/eg01.png" /></div>
<div class="pa"><img height="104" src="/assets/images/eg01.png" /></div>
</div>
</ng-template>
<ng-template sf-template="tipsB" let-me let-ui="ui" let-schema="schema">
@ -19,12 +27,16 @@
<dt>背面照</dt>
<dd>示例</dd>
</dl>
<div class="pa"><img width="190" src="/assets/images/eg02.png" /></div>
<div class="pa"><img height="104" src="/assets/images/eg02.png" /></div>
</div>
</ng-template>
</sf>
<sf #sf1 [compact]="true" [ui]="ui" [schema]="schema1" [button]="'none'" *ngIf="schema1"></sf>
<sf #sf2 [compact]="true" [ui]="ui" [schema]="schema2" [button]="'none'" *ngIf="schema2"></sf>
<sf #sf1 [compact]="true" [ui]="ui" [schema]="schema1" [button]="'none'" *ngIf="schema1">
</sf>
<sf #sf2 [compact]="true" [ui]="ui" [schema]="schema2" [button]="'none'" *ngIf="schema2">
</sf>
<img class="drivercard" height="104" src="/assets/images/drivercard.png" />
<img class="jopcard" height="104" src="/assets/images/jopcard.png" />
<!-- <div class="example" (click)="showExample()">
查看示例
<div class="popBox" *ngIf="showCardFlag">

View File

@ -453,18 +453,18 @@ export class CarAddDriverComponent implements OnInit {
};
}
getProvinceData() {
// return this.service.request(this.service.$api_getRegionByCode, { regionCode: '' }).pipe(
// map(res => {
// const result: any = []
// if (res) {
// res.map((m: any) => {
// const item = { label: m.name, value: m.regionCode }
// result.push(item)
// });
// }
// return result
// })
// );
return this.service.request(this.service.$api_getRegionByCode, { regionCode: '' }).pipe(
map((res: any) => {
const result: any = []
if (res) {
res.map((m: any) => {
const item = { label: m.name, value: m.regionCode }
result.push(item)
});
}
return result
})
);
}
checkIdCard(imgurl: any, side: any, type: any) {
// 识别身份证 参数side0-正面、1-背面type0-申请人身份证1-法定代表人身份证
@ -472,18 +472,18 @@ export class CarAddDriverComponent implements OnInit {
idCardUrl: imgurl,
side,
};
// this.service.request(this.service.$api_checkIdCard, params).subscribe((res) => {
// if (res) {
// if (type === 0) {
// // 法定代表人身份证
// if (side === 'front') {
// // 正面
// this.sf.setValue('/name', res.name);
// this.sf.setValue('/certificateNumber', res.number);
// }
// }
// }
// });
this.service.request(this.service.$api_checkIdCard, params).subscribe((res: any) => {
if (res) {
if (type === 0) {
// 法定代表人身份证
if (side === 'front') {
// 正面
this.sf.setValue('/name', res.name);
this.sf.setValue('/certificateNumber', res.number);
}
}
}
});
}
checkDriverCard(imgurl: any, side: any, type: any) {
// 识别身份证 参数side0-正面、1-背面type0-申请人身份证1-法定代表人身份证
@ -491,21 +491,21 @@ export class CarAddDriverComponent implements OnInit {
driverLicenseUrl: imgurl,
side,
};
// this.service.request(this.service.$api_recognizeDriverLicense, params).subscribe((res) => {
// if (res) {
// if (type === 0) {
// // 法定代表人身份证
// if (side === 'front') {
// // 正面
// this.sf1.setValue('/licenseNo', res.number);
// this.sf1.setValue('/driverModel', res.number);
// this.sf1.setValue('/validStartTime', res.validFrom);
// this.sf1.setValue('/validEndTime', res.validTo);
// this.sf1.setValue('/signingOrganization', res.issuingAuthority);
// }
// }
// }
// });
this.service.request(this.service.$api_recognizeDriverLicense, params).subscribe((res: any) => {
if (res) {
if (type === 0) {
// 法定代表人身份证
if (side === 'front') {
// 正面
this.sf1.setValue('/licenseNo', res.number);
this.sf1.setValue('/driverModel', res.number);
this.sf1.setValue('/validStartTime', res.validFrom);
this.sf1.setValue('/validEndTime', res.validTo);
this.sf1.setValue('/signingOrganization', res.issuingAuthority);
}
}
}
});
}
close(): void {
this.modal.destroy();
@ -546,11 +546,11 @@ export class CarAddDriverComponent implements OnInit {
delete params.userDriverLicenseDTO.tipsA;
delete params.userPracticeSeniorityDTO.tipsC;
delete params.showName
// this.service.request(this.service.$api_enterpriseVehicleSave, params).subscribe(res => {
// if(res){
// this.service.msgSrv.success('添加成功')
// this.close()
// }
// })
this.service.request(this.service.$api_enterpriseVehicleSave, params).subscribe((res: any) => {
if(res){
this.service.msgSrv.success('添加成功')
this.modal.close(true)
}
})
}
}

View File

@ -130,14 +130,14 @@ export class CarAddmodalComponent implements OnInit {
initData(flag?: any) {
if (this.sf?.value.mobile) {
this.flag = flag
// this.service.request(this.service.$api_getCarCaptainByMobile, { mobile: this.sf?.value.mobile }).subscribe(res => {
// if (res.userId) {
// this.tableData = [res];
// } else {
// this.tableData = []
// }
// this.st.reload()
// })
this.service.request(this.service.$api_getCarCaptainByMobile, { mobile: this.sf?.value.mobile }).subscribe(res => {
if (res.userId) {
this.tableData = [res];
} else {
this.tableData = []
}
this.st.reload()
})
}
}
/**
@ -158,11 +158,11 @@ export class CarAddmodalComponent implements OnInit {
appUserId: item.appUserId ? item.appUserId : '',
mobile: item.mobile
}
// this.service.request(this.service.$api_enterpriseVehicleSave, params).subscribe(res => {
// if (res.data) {
// this.service.msgSrv.success('添加成功')
// }
// })
this.service.request(this.service.$api_enterpriseVehicleSave, params).subscribe(res => {
if (res.data) {
this.service.msgSrv.success('添加成功')
}
})
}
addModal() {
this.modalHelper.create(CarAddDriverComponent, {mobile: this.sf?.value.mobile}, { size: 900 }).subscribe((res) => {

View File

@ -1,11 +1,3 @@
<!--
* @Author: your name
* @Date: 2021-12-03 11:10:14
* @LastEditTime: 2021-12-21 10:56:30
* @LastEditors: your name
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\supply-management\components\assigned-car\assigned-car.component.html
-->
<div>
<div nz-row>
<div nz-col nzSpan="18">
@ -19,7 +11,7 @@
</div>
<div>
<st #st [data]="service.$api_get_catalogue_member"
<st #st [data]="service.$api_get_practice_car_list"
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
[columns]="columns" [res]="{ reName: { list: 'data.records', total: 'data.total' },process:dataProcess }"
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
@ -39,7 +31,7 @@
</nz-select>
</ng-template>
<ng-template st-row="carCaptain" let-item let-index>
<span>{{item.name}} {{item.phone}}</span>
<span>{{item.captainName}} {{item.captainPhone}}</span>
<a (click)="setCarCaptain(item)">设置</a>
</ng-template>
<ng-template st-row="driverStatus" let-item let-index>

View File

@ -6,9 +6,9 @@ import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalRef } from 'ng-zorro-antd/modal';
import { SupplyManagementService } from '../../services/supply-management.service';
import { SupplyManagementAddDriversComponent } from '../add-drivers/add-drivers.component';
import { CarAddmodalComponent } from '../addmodal/addmodal.component';
const BADGE: STColumnBadge = {
1: { text: '空闲', color: 'success' },
2: { text: '未实名', color: 'error' },
@ -19,7 +19,7 @@ const BADGE: STColumnBadge = {
selector: 'app-supply-management-assigned-car',
templateUrl: './assigned-car.component.html',
})
export class SupplyManagementAssignedCarComponent implements OnInit {
export class SupplyManagementVehicleAssignedCarComponent implements OnInit {
record: any = {};
i: any;
schema: SFSchema = {};
@ -105,19 +105,18 @@ export class SupplyManagementAssignedCarComponent implements OnInit {
return data.map((i, index) => {
i.carId = '';
i.disabled = i.carStatus === '1';
const defaultCar = i?.userCarLicenseDesensitizationVOList?.filter((item: any) => item.isDefault);
if (defaultCar.length > 0) {
i.carId = defaultCar[0].carId;
const defaultCar = i?.userCarLicenseDesensitizationVOList?.find((item: any) => item.isDefault);
if (defaultCar) {
i.carId = defaultCar?.carId;
}
return i;
});
}
save(): void {
console.log(this.selectedRows);
if (this.selectedRows) {
const { carId, userId: driverId } = this.selectedRows;
const params: any = { carId, driverId };
const { carId, appUserId: driverId, captainAppUserId: carCaptainId } = this.selectedRows;
const params: any = { carId, driverId, carCaptainId };
this.service.request(this.url, { ...params, ...this.params }).subscribe((res: any) => {
if (res) {
this.modal.close(res);
@ -130,7 +129,6 @@ export class SupplyManagementAssignedCarComponent implements OnInit {
changeSt(e: STChange): void {
if (e?.type === 'loaded') this.selectedRows = null;
if (e?.type === 'radio') this.selectedRows = e?.radio;
console.log(this.selectedRows);
}
/**

View File

@ -5,7 +5,7 @@ import { _HttpClient } from '@delon/theme';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalService } from 'ng-zorro-antd/modal';
import { SupplyManagementService } from '../../services/supply-management.service';
import { SupplyManagementAssignedCarComponent } from '../assigned-car/assigned-car.component';
import { SupplyManagementVehicleAssignedCarComponent } from '../assigned-car/assigned-car.component';
import { SupplyManagementUpdateExternalSnComponent } from '../update-external-sn/update-external-sn.component';
@Component({
@ -139,7 +139,7 @@ export class SupplyManagementVehicleDetailComponent implements OnInit {
const modalRef = this.modal.create({
nzTitle: '指派熟车',
nzWidth: '1200px',
nzContent: SupplyManagementAssignedCarComponent,
nzContent: SupplyManagementVehicleAssignedCarComponent,
nzComponentParams: {
i: item,
},

View File

@ -6,7 +6,8 @@ import { ModalHelper, _HttpClient } from '@delon/theme';
import { NzModalService } from 'ng-zorro-antd/modal';
import { map } from 'rxjs/operators';
import { SupplyManagementService } from '../../services/supply-management.service';
import { SupplyManagementAssignedCarComponent } from '../assigned-car/assigned-car.component';
import { SupplyManagementVehicleAssignedCarComponent,
} from '../assigned-car/assigned-car.component';
import { SupplyManagementUpdateExternalSnComponent } from '../update-external-sn/update-external-sn.component';
import { SupplyManagementUpdateFreightComponent } from '../update-freight/update-freight.component';
@ -150,11 +151,11 @@ export class SupplyManagementVehicleComponent implements OnInit {
const modalRef = this.modal.create({
nzTitle: '指派熟车',
nzWidth: '1200px',
nzContent: SupplyManagementAssignedCarComponent,
nzContent: SupplyManagementVehicleAssignedCarComponent,
nzComponentParams: {
i: item,
status: 'anew',
// url: this.service.$api_save_assign_vehicle,
url: this.service.$api_save_assign_vehicle,
params: { resourceId }
},
nzFooter: null

View File

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-12-03 11:10:14
* @LastEditTime: 2021-12-22 10:45:44
* @LastEditTime: 2021-12-28 10:15:55
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\supply-management\services\supply-management.service.ts
@ -46,6 +46,32 @@ export class SupplyManagementService extends BaseService {
public $api_enterpriceList = '/api/mdc/cuc/enterpriseInfo/operate/enterpriceList';
// 取消货源
public $api_cancelSource = '/api/sdc/goodsResourceOperate/cancelSource';
$api_get_practice_car_list = `/api/mdc/cuc/enterpriseVehicle/getPracticeCarList`; // 获取熟车列表
$api_add_car_caption = `/api/mdc/userDriverExpand/addCarCaptainForShiper`; // 设置为车队长
$api_get_goods_resource_shipper = `/api/sdc/goodsResourceShipper/modifyPricePre`; // 修改单价页面根据货源ID获取货物表
$api_get_car_captain_by_mobile = `/api/mdc/userDriverExpand/getCarCaptainByMobile`; // 查询车队长或者司机列表
$api_save_assign_vehicle = `/api/sdc/goodsResourceShipper/reAssignWhole`;// 货主端大宗货源重新指派
$api_save_assign_bulk = `/api/sdc/goodsResourceShipper/reAssignBulk`; // 货主端大宗货源指派熟车
$api_get_has_assigned_car_list = `/api/sdc/goodsResourceShipper/getCarDriverIdsByResourceId`;// 大宗货源根据货源id获取司机和车辆的id集合
// 根据手机号查询车队长/司机
$api_getCarCaptainByMobile = `/api/mdc/userDriverExpand/getCarCaptainByMobile`;
// 新增熟车
$api_enterpriseVehicleSave = `/api/mdc/cuc/enterpriseVehicle/save`;
// 删除熟车
$api_deletebatch = `/api/mdc/cuc/enterpriseVehicle/deletebatch`;
// 熟车详情
$api_getMyDriverUserDetail = `/api/mdc/cuc/enterpriseVehicle/getMyDriverUserDetail`;
// 根据地区code查询列表
$api_getRegionByCode = '/api/mdc/pbc/region/getRegionByCode';
// 识别身份证
$api_checkIdCard = '/api/mdc/pbc/hwc/ocr/recognizeIdCard';
// 驾驶证识别
$api_recognizeDriverLicense = `/api/mdc/pbc/hwc/ocr/recognizeDriverLicense`;
constructor(public injector: Injector) {
super(injector)
}

View File

@ -14,7 +14,7 @@ import { SupplyManagementBulkComponent } from './components/bulk/bulk.component'
import { SupplyManagementVehicleComponent } from './components/vehicle/vehicle.component';
import { SupplyManagementUpdatePriceComponent } from './components/update-price/update-price.component';
import { SupplyManagementUpdateFreightComponent } from './components/update-freight/update-freight.component';
import { SupplyManagementAssignedCarComponent } from './components/assigned-car/assigned-car.component';
import { SupplyManagementVehicleAssignedCarComponent } from './components/assigned-car/assigned-car.component';
import { SupplyManagementQrcodePageComponent } from './components/qrcode-page/qrcode-page.component';
import { SupplyManagementUpdateExternalSnComponent } from './components/update-external-sn/update-external-sn.component';
import { SupplyManagementVehicleDetailComponent } from './components/vehicle-detail/vehicle-detail.component';
@ -37,7 +37,7 @@ const COMPONENTS: Type<void>[] = [
SupplyManagementVehicleComponent,
SupplyManagementUpdatePriceComponent,
SupplyManagementUpdateFreightComponent,
SupplyManagementAssignedCarComponent,
SupplyManagementVehicleAssignedCarComponent,
SupplyManagementQrcodePageComponent,
SupplyManagementUpdateExternalSnComponent,
SupplyManagementVehicleDetailComponent,

View File

@ -1,149 +1,230 @@
<!--
* @Author: your name
* @Date: 2021-12-03 15:31:52
* @LastEditTime: 2021-12-20 15:06:25
* @LastEditTime: 2021-12-28 10:07:21
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\order-management\components\vehicle-detail\vehicle-detail.component.html
-->
<page-header-wrapper [title]="''" [logo]="logo">
<page-header-wrapper [title]="''" [logo]="logo" [content]="headerContent">
<ng-template #logo>
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
<i nz-icon nzType="left" nzTheme="outline"></i>
</button>
</ng-template>
<ng-template #headerContent>
<div class="mb-xs" nz-row>
<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;">
<div nz-col nzSpan="10">
<button nz-button >确认发车</button>
<button nz-button nzType="primary" nzGhost >确认到车</button>
</div>
</div>
<nz-divider></nz-divider>
<div>
<div sv-container>
<sv label="网络货运人">{{ i?.goodsResource?.[0]?.enterpriseInfoName }} </sv>
<sv label="货主">{{ i?.goodsResource?.[0]?.shipperAppUserName }} </sv>
<sv label="所属项目">{{i?.goodsResource?.[0]?.enterpriseProjectName}}</sv>
<sv label="服务类型">{{i?.goodsResource?.[0]?.serviceTypeLabel}}</sv>
<sv label="调度员">{{i?.goodsResource?.[0]?.dispatchName}} </sv>
</div>
<nz-tabset nzType="card" style="margin-top: 15px;">
<nz-tab [nzTitle]="tempt" >
<ng-template #tempt>
<nz-anchor>
<nz-link nzHref="#distannce1" nzTitle="装卸货信息"></nz-link>
</nz-anchor>
</ng-template>
</nz-tab>
<nz-tab [nzTitle]="tempt2" >
<ng-template #tempt2>
<nz-anchor>
<nz-link nzHref="#distannce2" nzTitle="基本信息"></nz-link>
</nz-anchor>
</ng-template>
</nz-tab>
<nz-tab [nzTitle]="tempt3" >
<ng-template #tempt3>
<nz-anchor>
<nz-link nzHref="#distannce3" nzTitle="运费信息"></nz-link>
</nz-anchor>
</ng-template>
</nz-tab>
<nz-tab [nzTitle]="tempt4" >
<ng-template #tempt4>
<nz-anchor>
<nz-link nzHref="#distannce4" nzTitle="附件信息"></nz-link>
</nz-anchor>
</ng-template>
</nz-tab>
<nz-tab [nzTitle]="tempt5" >
<ng-template #tempt5>
<nz-anchor>
<nz-link nzHref="#distannce5" nzTitle="轨迹信息"></nz-link>
</nz-anchor>
</ng-template>
</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-steps>
</div>
</div>
</nz-card>
<nz-card nzTitle="基本信息">
<sv-container col="1">
<sv label="货物名称">
{{i?.goodsInfoList?.[0]?.goodsName}}
</sv>
</sv-container>
<sv-container col="2">
<sv label="货物数量">
{{i?.goodsInfoList?.[0]?.weight}}吨,{{i?.goodsInfoList?.[0]?.volume}}方,{{i?.goodsInfoList?.[0]?.number}}件
</sv>
<sv label="用车需求">
{{i?.goodsInfoList?.[0]?.maxWeightLabel}}/{{i?.goodsInfoList?.[0]?.maxCube}}
</sv>
<sv label="承运司机">
{{i?.driverId}}
</sv>
<sv label="车型车长载重">
{{i?.goodsInfoList?.[0]?.weight}}吨,{{i?.goodsInfoList?.[0]?.volume}}方,{{i?.goodsInfoList?.[0]?.number}}件
</sv>
<sv label="计划装货时间">
{{i?.loadPlanTime}}
</sv>
<sv label="计划卸货时间">
{{i?.unloadPlanTime}}
</sv>
<sv label="接单数量">
{{i?.acceptWeight}}吨,{{i?.acceptVolume}}方,{{i?.acceptNumber}}件
</sv>
<sv label="装货数量">
{{i?.acceptWeight}}吨,{{i?.acceptVolume}}方,{{i?.acceptNumber}}件
</sv>
<sv label="卸货数量">
{{i?.settlementWeight}}吨,{{i?.settlementVolume}}方,{{i?.acceptNumber}}件
</sv>
</sv-container>
<div class="mt-md">
<h4 class="text-md">装货卸货信息
<span class="ml-sm text-sm">(
<label>{{i?.loadingCount}}装</label>
<label>{{i?.unloadingCount}}卸</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?.unLoadingPlaceVOList">
<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 nz-col [nzSpan]="12">
<div class="handling-info p-md">
<div class="flex" *ngFor="let item of i?.unLoadingPlaceVOList">
<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>
</nz-card>
<nz-card nzTitle="运费信息" id="distannce3">
<h2>{{i?.goodsInfoList?.[0]?.freightPrice}}{{i?.goodsInfoList?.[0]?.freightTypeLabel}}(以发货为准,保留小数)</h2>
<st #st [data]="i?.billExpenseDetails" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }">
</st>
<div>总计:{{i?.total | currency: '¥'}}运费¥3500.00附加运费¥191.98附加费率3.5%</div>
<div>收款人:</div>
</nz-card>
<nz-card nzTitle="附件信息" id="distannce4">
<sv-container>
<sv label="协议附件">
<!-- {{i?.supplementaryInformationVO?.stateReceipt?'是':'否'}} -->
<a href="javascript:;" (click)="agreement('1')">查看附件</a> &nbsp;&nbsp;&nbsp;&nbsp;
<a href="javascript:;" (click)="agreement('2')">补充协议</a>
</sv>
</sv-container>
<sv-container col="2" class="mt-md">
<sv label="装货凭证">
<app-imagelist [imgList]="[i?.loadingLadingBillFilePath,i?.loadingPeopleVehiclesGoodsFilePath]">
</app-imagelist>
</sv>
<sv label="卸货凭证">
<app-imagelist [imgList]="[i?.unloadingLadingBillFilePath,i?.unloadingPeopleVehiclesGoodsFilePath]">
</app-imagelist>
</sv>
</sv-container>
</nz-card>
<nz-card nzTitle="补充信息">
<sv-container>
<sv label="是否回单">
{{i?.goodsResource?.stateReceipt ?'是':'否'}}
</sv>
<sv label="回单类型">
{{i?.goodsResource?.receiptTypeLabel}}
</sv>
<sv label="联系人">
{{i?.goodsResource?.receiptUserId}} / {{i?.supplementaryInformationVO?.phon}}
</sv>
<sv label="所在地区">
{{i?.goodsResource?.receiptAddress}}
</sv>
<sv label="详细地址">
{{i?.goodsResource?.receiptAddress}}
</sv>
</sv-container>
<sv-container col="1" class="mt-md">
<sv label="回单凭证">
<app-imagelist [imgList]="[i?.receiptFilePath]"></app-imagelist>
</sv>
<sv label="备注">
{{i?.goodsResource?.remarks}}
</sv>
</sv-container>
</nz-card>
<nz-card>
<div nz-row>
<div nz-col nzSpan="4">
<sv-container class="bdr">
<sv label="订单号" col="1">{{ i?.no }}</sv>
<sv-title class="text-center text-lg" style="font-weight: 700;">{{i?.wayBillStatusLabel}}</sv-title>
<sv-title>
<div style="display: flex; justify-content: center;">
<a class="btn-size" (click)="hand()">指派车队长</a>
</div>
</sv-title>
</sv-container>
</div>
<div nz-col nzSpan="16" class="approval-status">
<nz-steps style="width: 80%; margin: 0 auto" [nzLabelPlacement]="'vertical'">
<nz-step nzStatus="finish" nzIcon="user" [nzDescription]="i?.createAt" nzTitle="下单"></nz-step>
<nz-step nzStatus="finish" nzIcon="solution" nzTitle="完结"></nz-step>
</nz-steps>
</div>
</div>
<nz-divider></nz-divider>
<div sv-container *ngIf="i">
<sv label="项目名称">{{ i?.enterpriseProject }}</sv>
<sv label="调度员">{{ i?.dispatch?.name }}/{{i?.dispatch?.phone}}</sv>
<sv label="承诺付款时间">到货后{{ i?.paymentDays }}天内支付运费</sv>
<sv label="服务类型">{{ i?.serviceTypeLabel }}</sv>
</div>
<nz-divider></nz-divider>
<div nz-row>
<div nz-col nzSpan="6">
<div *ngFor="let item of unLoadingPlaceVOList; let ii = index">
<h3 *ngIf="ii === 0" style="font-weight: 700;">装卸货信息</h3>
<div *ngIf="item?.type === 1 || item?.type === '1'">
<p>装货地:{{item?.detailedAddress}}</p>
<p>联系人:{{item?.appUserName}}/{{item?.contractTelephone}}</p>
<p>发货日期:{{item?.createTime}}</p>
</div>
<div *ngIf="item.type === 2 || item.type === '2'">
<p>卸货地:{{item?.detailedAddress}}</p>
<p>联系人:{{item?.appUserName}}/{{item?.contractTelephone}}</p>
<p>卸货日期:{{item?.modifyTime}}</p>
</div>
</div>
</div>
<div nz-col nzSpan="5">
<div class="source-info bdr bdl pl-md">
<h3>货物信息</h3>
<div *ngFor="let item of i?.goodsInfos; let i = index">
<p>货物名称:{{item?.goodsName}}</p>
<p>重量/体积:{{item?.weight}}吨/{{item?.volume}}立方</p>
<p>用车需求:{{item?.vehicleDemand}}</p>
</div>
</div>
</div>
<div nz-col nzSpan="5">
<div class="source-info bdr bdl pl-md">
<h3>托运信息</h3>
<p>公司名称:{{i?.enterpriseInfoName}}</p>
<p>联系人:{{ i?.dispatch?.name }}/{{i?.dispatch?.phone}}</p>
</div>
</div>
<div nz-col nzSpan="5">
<div class="source-info bdr pl-md">
<h3>承运信息</h3>
<p>司机:{{i?.driverVo?.name}}/{{i?.driverVo?.phone}}</p>
<p>车牌号:{{i?.carVO?.carNo}}</p>
<p>车型/车长/承重:{{i?.carVO?.carModel}} | {{i?.carVO?.carLength}} | {{i?.carVO?.carLoad}}</p>
</div>
</div>
<div class="source-info pl-md">
<h3>补充信息</h3>
<p style="color: #1890ff;" (click)="agreement('1')">协议附件</p>
<p style="color: #1890ff;" (click)="agreement('2')"> 装车附件</p>
<p style="color: #1890ff;" (click)="agreement('3')">卸货附件</p>
<p style="color: #1890ff;" (click)="agreement('4')">回单附件</p>
</div>
</div>
<nz-divider></nz-divider>
<div nz-row>
<div class="freight-info-box">
<h3>运费信息</h3>
<div class="text-right">
<p><label class="freigth-label">收款人:</label><span>{{i?.payee?.name}} /{{i?.payee?.phone}} / {{i?.payee?.phone}}</span></p>
<div *ngFor="let item of i?.billExpenseDetailVOList">
<p><label class="freigth-label">{{item?.costName}}:</label><span>{{ item?.price| currency: '¥' }}</span></p>
</div>
</div>
</div>
<nz-divider></nz-divider>
<div class="freight-info-box" nz-row>
<div nz-col nzSpan="24">
<h3 class="text-right"><label>总计 :</label> <span class="text-error-dark text-xl">{{i?.freight | currency: '¥' }}</span></h3>
<h3 class="text-right">{{i?.wayBillStatusLabel}}</h3>
</div>
</div>
</div>
<nz-divider></nz-divider>
<nz-card nzTitle="轨迹信息" style="width: 100%;" id="distannce5">
<div nz-row >
<div nz-col [nzSpan]='12'>
<div style="position: relative;">
<div style="height: 24px; width: 90px; background-color: #68758e;position: absolute; top: -109%; left: 0%;color: #fff;text-align: center;">平台支付</div>
<span class="leftPadding">司机运输费666</span>
<span class="leftPadding">1000.00</span>
<span class="leftPadding">未支付</span>
</div>
</div>
<div nz-col [nzSpan]='12'>
<div style="position: relative;">
<div style="height: 24px; width: 90px; background-color: #68758e;position: absolute; top: -109%; left: 0%;color: #fff;text-align: center;">货主支付</div>
<span class="leftPadding">司机运输费22</span>
<span class="leftPadding">1000.00</span>
<span class="leftPadding">未支付</span>
</div>
<div>
<span class="leftPadding">附加费</span>
<span class="leftPadding">1000.00</span>
<span class="leftPadding">未支付</span>
</div>
</div>
</div>
<nz-divider></nz-divider>
<div nz-row>
<nz-card nzTitle="轨迹信息" style="width: 100%;" >
<div nz-row >
<div nz-col [nzSpan]='12'>
<st #st [data]="i?.auditRecordList" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }">
</st>
<!-- <st #st [data]="i?.auditRecordList" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }">
</st> -->
</div>
<div nz-col [nzSpan]='12'>
<amap-path-simplifier></amap-path-simplifier>
@ -152,6 +233,7 @@
</nz-card>
</div>
</nz-card>
<nz-modal [(nzVisible)]="isVisible" [nzFooter]="nzModalFooter" nzTitle="附件信息" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()">
<ng-container *nzModalContent>
<app-imagelist [imgList]="imges"></app-imagelist>

View File

@ -33,4 +33,38 @@
.leftPadding {
padding-right: 100px;
}
.handling-info {
min-height: 100px;
border: 1px solid #ccc;
.loading-row {
display: flex;
}
.handling-info-icon {
width: 32px;
height: 32px;
margin-right: 24px;
color: #fff;
line-height: 32px;
text-align: center;
border-radius: 50%;
&.loading-bg {
background-color: #50D4AB;
}
&.unloaing-bg {
background: #F66F6A;
}
}
.info {
flex: 1;
}
.time-info {
margin-left: 56px;
}
}
}

View File

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-12-03 11:10:14
* @LastEditTime: 2021-12-18 16:20:23
* @LastEditTime: 2021-12-28 10:01:51
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\supply-management\components\vehicle\vehicle.component.html
@ -59,7 +59,7 @@
[loading]="service.http.loading"
>
<ng-template st-row="wayBillCode" let-item let-index="index">
<a [routerLink]="'/waybill-management/vehicle-detail/'+item.id">{{item.wayBillCode}}</a>
<a [routerLink]="'/waybill-management/bulk-detail/'+item.id">{{item.wayBillCode}}</a>
<div>
<span *ngIf="item?.wayBillStatus == 1">待接单</span>
<span *ngIf="item?.wayBillStatus == 2">待发车</span>
@ -75,7 +75,7 @@
</div>
</ng-template>
<ng-template st-row="wayBill" let-item let-index="index">
<a [routerLink]="'/waybill-management/vehicle-detail/'+item.id">{{item.wayBillCode}}</a>
<a [routerLink]="'/waybill-management/bulk-detail/'+item.id">{{item.wayBillCode}}</a>
</ng-template>
<ng-template st-row="goodsInfos" let-item let-index="index">
<div>{{item?.goodsInfos?.goodsName}}</div>

View File

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-11-29 20:03:55
* @LastEditTime: 2021-12-27 16:36:11
* @LastEditTime: 2021-12-28 09:33:19
* @LastEditors: Please set LastEditors
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\style-icons.ts
@ -21,7 +21,9 @@ import {
SolutionOutline,
QuestionCircleOutline,
CheckCircleOutline,
QuestionCircleFill
QuestionCircleFill,
LeftOutline,
FileDoneOutline
} from '@ant-design/icons-angular/icons';
export const ICONS = [
@ -37,5 +39,7 @@ export const ICONS = [
SolutionOutline,
QuestionCircleOutline,
CheckCircleOutline,
QuestionCircleFill
QuestionCircleFill,
LeftOutline,
FileDoneOutline
];