车辆对接

This commit is contained in:
wangshiming
2021-12-20 17:18:40 +08:00
parent f18f512aac
commit 0a31c9eb4e
33 changed files with 1275 additions and 768 deletions

View File

@ -1,24 +0,0 @@
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
import { SupplyManagementBulkDetailComponent } from './bulk-detail.component';
describe('SupplyManagementBulkDetailComponent', () => {
let component: SupplyManagementBulkDetailComponent;
let fixture: ComponentFixture<SupplyManagementBulkDetailComponent>;
beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({
declarations: [ SupplyManagementBulkDetailComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(SupplyManagementBulkDetailComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -1,146 +0,0 @@
/*
* @Author: your name
* @Date: 2021-12-03 11:10:14
* @LastEditTime: 2021-12-13 15:24:41
* @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\bulk-detail\bulk-detail.component.ts
*/
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { STColumn } from '@delon/abc/st';
import { _HttpClient } from '@delon/theme';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalService } from 'ng-zorro-antd/modal';
import { SupplyManagementAddDriversComponent } from '../add-drivers/add-drivers.component';
import { SupplyManagementService } from '../../services/supply-management.service';
@Component({
selector: 'app-supply-management-bulk-detail',
templateUrl: './bulk-detail.component.html',
styleUrls: ['./bulk-detail.component.less']
})
export class SupplyManagementBulkDetailComponent implements OnInit {
isVisibleView = false
id = this.route.snapshot.params.id;
i: any;
logColumns: STColumn[] = [
{ title: '内容', index: 'theme' },
{ title: '操作人', index: 'operationUserPhone' },
{ title: '操作时间', index: ' createTime' },
];
columnsFloatView: STColumn[] = [
{ title: '司机姓名', index: 'theme' },
{ title: '手机号', index: 'operationUserPhone' },
{ title: '车队长', index: ' createTime' },
{ title: '车牌号', index: ' createTime' },
];
driverColums: STColumn[] = [
{ title: '司机姓名', index: 'theme' },
{ title: '手机号', index: 'operationUserPhone' },
{ title: '车牌号', index: ' createTime' },
{ title: '承运次数', index: 'operationUserPhone' },
{ title: '承运数量', index: ' createTime' },
{
title: '操作',
fixed: 'right',
width: '200px',
className: 'text-center',
buttons: [
{
text: '移除',
click: (_record) => this.delDiver(_record),
},
],
},
];
dataList: any;
constructor(
private route: ActivatedRoute,
private msgSrv: NzMessageService,
private service: SupplyManagementService,
private modal: NzModalService,
private router: Router,private ar: ActivatedRoute
) {
}
ngOnInit(): void {
this.getDetailList();
}
// 获取录单员
getDetailList() {
const params = {
id: this.id
};
this.service.request(`${this.service.$api_get_getBulkDetail}`, params).subscribe((res) => {
console.log(res)
this.dataList = res
})
}
/**
* 移除司机
*/
delDiver(item: any) {
const { id } = item;
this.modal.confirm({
nzTitle: '<i>删除确认</i>',
nzContent: `请仔细核对,避免误操作!<br>是否删除?</br>`,
nzOnOk: () => {
// this.service.http.post(this.service.$api_del_driver, { id }).subscribe((res) => {
// if (res) {
// this.service.msgSrv.success('数据删除成功!');
// // this.st1.reload();
// } else {
// this.service.msgSrv.error('删除失败!');
// }
// });
},
});
}
/**
* 指派熟车
*/
assignedCar() {
const modalRef = this.modal.create({
nzTitle: '指派熟车',
nzWidth: '90%',
nzContent: SupplyManagementAddDriversComponent,
nzComponentParams: {
i: this.i,
},
nzFooter: null,
});
}
goBack() {
window.history.go(-1);
}
// 修改货源
modification() {
this.router.navigate(['/supply-management/bulk-amend', this.id], {
queryParams: {
sta: 3
},
})
}
// 再下一单
nextOrder() {
this.router.navigate(['/supply-management/bulk-amend', this.id], {
queryParams: {
sta: 4
},
})
}
handleCancel() {
this.isVisibleView = false
}
handleOK() {
}
NowAssign() {
this.isVisibleView = true
}
}

View File

@ -17,7 +17,7 @@
</sv-title>
<sv-title>
<div class="">
<a class="btn-size" (click)="modification()">修改单价</a>
<a class="btn-size" (click)="modification()">修改货源</a>
<a class="btn-size m-lg mr-lg">取消货源</a>
<a class="btn-size" (click)="nextOrder()">再下一单</a>
</div>
@ -48,6 +48,7 @@
<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>
@ -59,11 +60,10 @@
</div>
<div nz-col nzSpan="5">
<div class="source-info bdr bdl pl-md">
<h3 style="font-weight: 700;">货物信息</h3>
<div *ngFor="let item of dataList?.goodsInfoVOList; let i = index">
<h3 *ngIf="i === 0" style="font-weight: 700;">货物信息</h3>
<p>货物名称:{{item?.goodsName}}</p>
<p>货物数量:{{item?.weight}}吨/{{item?.volume}}立方</p>
<p>剩余:{{item?.weight}}吨/{{item?.volume}}立方</p>
<p>用车需求:{{item?.vehicleDemand}}</p>
</div>
</div>
@ -73,21 +73,25 @@
<h3 style="font-weight: 700;">承运信息</h3>
<p>网络货运人:{{dataList?.carrierInformationVO?.enterpriseInfoName}}</p>
<p>服务类型:{{dataList?.carrierInformationVO?.serviceType === 1 ? '抢单' : '指派'}}</p>
<p><a href="javascript:;" (click)="NowAssign()">当前指派</a></p>
<p>司机姓名:{{dataList?.carrierInformationVO?.driverName}}</p>
<p>手机号:{{dataList?.carrierInformationVO?.driverTelephone}}</p>
<p>车牌号:{{dataList?.carrierInformationVO?.driverLicensePlate}}</p>
</div>
</div>
<div nz-col nzSpan="5">
<div class="source-info bdr pl-md">
<h3 style="font-weight: 700;">关联运单</h3>
<p>待发车 ({{dataList?.goodsInfoList?.goodsName}})</p>
<p>运输中 ({{dataList?.goodsInfoList?.goodsName}})</p>
<p>待签收 ({{dataList?.goodsInfoList?.goodsName}})</p>
<p>已完成 ({{dataList?.goodsInfoList?.goodsName}})</p>
<p>已取消 ({{dataList?.goodsInfoList?.goodsName}})</p>
<h3 style="font-weight: 700;">服务信息</h3>
<p>货物价值:{{dataList?.goodsInfoList?.goodsName}}</p>
<p>保价费金额:{{dataList?.goodsInfoList?.goodsName}}</p>
</div>
</div>
<div class="source-info pl-md">
<h3 style="font-weight: 700;">补充信息</h3>
<p>{{dataList?.supplementaryInformationVO?.stateReceipt === 2 ? '不需要回单' : '需要回单'}}</p>
<p>联系人:{{dataList?.supplementaryInformationVO?.receiptUserId}}</p>
<p>联系电话:{{dataList?.supplementaryInformationVO?.remarks}}</p>
<p>所在地区:{{dataList?.supplementaryInformationVO?.remarks}}</p>
<p>详细地址:{{dataList?.supplementaryInformationVO?.receiptAddress}}</p>
<p>备注:{{dataList?.supplementaryInformationVO?.remarks}}</p>
</div>
</div>
@ -96,15 +100,18 @@
<div class="freight-info-box">
<h3 style="font-weight: 700;">运费信息</h3>
<div class="text-right">
<p style="color: #f9b523;">到货后15天内支付运费</p>
<p>以发货为准,保留小数</p>
<p>预付:{{dataList?.shippingInformationVO?.prePay | currency: '¥' }}</p>
<p>油卡:{{dataList?.shippingInformationVO?.oilCardPay | currency: '¥'}}</p>
<p>到付:{{dataList?.shippingInformationVO?.toPay | currency: '¥'}}</p>
<p>回单付:{{dataList?.shippingInformationVO?.receiptPay | currency: '¥'}}</p>
<p>保险费:{{dataList?.shippingInformationVO?.insuranceFee | currency: '¥'}}</p>
<p>附加费保险费:{{dataList?.shippingInformationVO?.appendFee | currency: '¥'}}</p>
</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" style="color: red;">{{dataList?.freightPrice }}</span>元/吨</h3>
<h3 class="text-right"><label>总计 :</label> <span class="text-error-dark text-xl">{{dataList?.shippingInformationVO?.totalFee | currency: '¥' }}</span></h3>
</div>
</div>
@ -116,19 +123,4 @@
</st>
</nz-card>
</div>
</nz-card>
<nz-modal [(nzVisible)]="isVisibleView" [nzWidth]="600" [nzFooter]="nzModalFooterview" nzTitle="当前指派" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()">
<ng-container *nzModalContent>
<st
#stFloatView
[data]="i?.auditRecordList"
[columns]="columnsFloatView"
[page]="{ show: false, showSize: false }"
>
</st>
</ng-container>
<ng-template #nzModalFooterview>
<button nz-button nzType="default" (click)="handleCancel()">取消</button>
</ng-template>
</nz-modal>
</nz-card>

View File

@ -0,0 +1,24 @@
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
import { SupplyManagementVehicleDetailComponent } from './vehicle-detail.component';
describe('SupplyManagementVehicleDetailComponent', () => {
let component: SupplyManagementVehicleDetailComponent;
let fixture: ComponentFixture<SupplyManagementVehicleDetailComponent>;
beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({
declarations: [ SupplyManagementVehicleDetailComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(SupplyManagementVehicleDetailComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -0,0 +1,80 @@
/*
* @Author: your name
* @Date: 2021-12-03 11:10:14
* @LastEditTime: 2021-12-09 20:54:28
* @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-detail\vehicle-detail.component.ts
*/
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { STColumn } from '@delon/abc/st';
import { _HttpClient } from '@delon/theme';
import { NzMessageService } from 'ng-zorro-antd/message';
import { SupplyManagementService } from '../../services/supply-management.service';
@Component({
selector: 'app-supply-management-vehicle-detail',
templateUrl: './vehicle-detail.component.html',
styleUrls: ['./vehicle-detail.component.less']
})
export class SupplyManagementVehicleDetailComponentOld implements OnInit {
id = this.route.snapshot.params.id;
i: any;
dataList: any;
logColumns: STColumn[] = [
{ title: '内容', index: 'theme' },
{ title: '操作人', index: 'operationUserPhone' },
{ title: '操作时间', index: ' createTime' },
];
constructor(
private route: ActivatedRoute,
private msgSrv: NzMessageService,
private service: SupplyManagementService,
private router: Router,private ar: ActivatedRoute
) {
}
ngOnInit(): void {
console.log(this.id)
if(this.id) {
this.getDetailList(this.id)
}
}
// 获取录单员
getDetailList(id: any) {
const params = {
id: id
};
this.service.request(`${this.service.$api_get_getCompleteVehicleDetail}`, params).subscribe((res) => {
console.log(res)
this.dataList = res
})
}
// 修改货源
modification() {
this.router.navigate(['/supply-management/vehicle-amend', this.id], {
queryParams: {
sta: 1
},
})
}
// 再下一单
nextOrder() {
this.router.navigate(['/supply-management/vehicle-amend', this.id], {
queryParams: {
sta: 2
},
})
}
goBack() {
window.history.go(-1);
}
}

View File

@ -1,126 +1,168 @@
<page-header-wrapper [title]="''" [logo]="logo">
<ng-template #logo>
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
<i nz-icon nzType="left" nzTheme="outline"></i>
</button>
</ng-template>
</page-header-wrapper>
<nz-card>
<div nz-row>
<div nz-col nzSpan="6">
<sv-container class="bdr">
<sv label="货源编号" col="1">{{ dataList?.resourceCode }}</sv>
<sv-title class="text-center text-lg">
<span *ngIf="dataList?.resourceType === 1">待接单</span>
<span *ngIf="dataList?.resourceType === 2">已接单</span>
<span *ngIf="dataList?.resourceType === 3">取消</span>
</sv-title>
<sv-title>
<div class="">
<a class="btn-size" (click)="modification()">修改货源</a>
<a class="btn-size m-lg mr-lg">取消货源</a>
<a class="btn-size" (click)="nextOrder()">再下一单</a>
<div *ngIf="i">
<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?.resourceStatusLabel}}</button>
<h4 class="ml-md">货源编码 : {{ i?.resourceCode }}</h4>
</div>
<div nz-row>
<div nz-col nzSpan="14" class="text-grey-darker">网络货运人:{{i?.carrierInformationVO?.enterpriseInfoName}}</div>
<div nz-col nzSpan="10">
<button nz-button (click)="cancleGoodsSource()" *ngIf="i?.resourceStatus === '1'">取消货源</button>
<button nz-button (click)="assignedCar(i)"
*ngIf="i?.resourceStatus === '1' && i?.serviceType === '2'">重新指派</button>
<button nz-button (click)="updateGoodsSource(i)" *ngIf="i?.resourceStatus === '1'">修改货源</button>
<button nz-button nzType="primary" nzGhost (click)="placeOrder(i)">再下一单</button>
</div>
</div>
<div class="mt-sm mb-sm" nz-row>
<div>
<b>总费用:<span class="text-red-light text-md">{{totalExpensePrice | currency}}</span></b>
</div>
</div>
<nz-divider></nz-divider>
<div sv-container *ngIf="i">
<sv label="外部货源号"><a>{{ i?.externalResourceCode }} <i class="mr-xs" nz-icon nzType="edit" nzTheme="outline"
(click)="editEnternalSn(i)"></i></a></sv>
<sv label="项目">{{i?.enterpriseProjectId}}</sv>
<sv label="录单员">{{i?.createUserId}}</sv>
<sv label="调度员">{{i?.dispatchName}} 18100000000 </sv>
<sv label="服务类型">{{i?.serviceTypeLabel}} </sv>
</div>
</ng-template>
</page-header-wrapper>
<nz-card title="货源进度">
<div class="approval-status">
<div style="width: 60%; margin: 0 auto">
<nz-steps [nzLabelPlacement]="'vertical'">
<nz-step [nzStatus]="i?.resourceStatus !== '1'?'finish':'process'" nzIcon="solution"
[nzDescription]="i?.createAt" nzTitle="下单"></nz-step>
<nz-step *ngIf="i?.resourceStatus === '1' || i?.resourceStatus === '2' "
[nzStatus]="i?.resourceStatus=== '1'? 'wait':'finish'" nzIcon="file-done" [nzTitle]="'接单'"></nz-step>
<nz-step nzStatus="finish" nzIcon="close-circle" nzTitle="取消货源" *ngIf="i?.resourceStatus === '3'"></nz-step>
</nz-steps>
</div>
</div>
</nz-card>
<nz-card nzTitle="装货卸货信息 一装一卸2">
<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>
</sv-title>
</sv-container>
<p class="time-info">装货时间:{{i?.loadingTime}}</p>
</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>
<p class="time-info">卸货时间:{{i?.unloadingTime}}</p>
</div>
</div>
</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="user" nzTitle="完结"></nz-step>
</nz-steps>
</div>
</div>
<nz-divider></nz-divider>
<div sv-container >
<sv label="项目名称">{{ dataList?.enterpriseProjectId }}</sv>
<sv label="外部货源号">{{ dataList?.externalResourceCode }}</sv>
<sv label="录单员">{{ dataList?.enterpriseProjectId }}</sv>
<sv label="调度员">{{ dataList?.dispatchName }}</sv>
</div>
<nz-divider></nz-divider>
<div nz-row>
<div nz-col nzSpan="6">
<div class="source-info">
<div *ngFor="let item of dataList?.unLoadingPlaceVOList; let i = index">
<h3 *ngIf="i === 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>
</nz-card>
</div>
<div *ngIf="item.type === 2 || item.type === '2'">
<p>卸货地:{{item?.detailedAddress}}</p>
<p>联系人:{{item?.appUserName}}/{{item?.contractTelephone}}</p>
<p>卸货日期:{{item?.modifyTime}}</p>
<nz-card nzTitle="基本信息">
<sv-container col="2">
<sv-title>货物信息</sv-title>
<ng-container *ngFor="let item of i?.goodsInfoVOList">
<sv label="货物名称">
{{item.goodsName}}
</sv>
<sv label="货物数量">
{{item.weight}}顿,{{item.volume}}方,{{item.number}}件
</sv>
</ng-container>
</sv-container>
<sv-container class="mt-md">
<sv-title>承运信息</sv-title>
<sv label="司机姓名">
{{i?.carrierInformationVO?.driverName}}
</sv>
<sv label="手机号">
{{i?.carrierInformationVO?.driverTelephone}}
</sv>
<sv label="车牌号">
{{i?.carrierInformationVO?.driverLicensePlate}}
</sv>
</sv-container>
</nz-card>
<nz-card nzTitle="服务信息">
<sv-container>
<sv label="服务类型">
{{i?.carrierInformationVO?.serviceTypeLabel}}
</sv>
<sv label="货物价值">
{{i?.goodsValue}}
</sv>
<sv label="保价费金额">
{{i?.insuranceAmount |currency}} 元
</sv>
</sv-container>
</nz-card>
<nz-card nzTitle="运费信息到货后15天内支付运费">
<st [data]="i?.expenseList" [columns]="expenseColumns" [page]="{show:false}">
<ng-template st-row="total" let-item>
<div>
{{(item.price * item.rate) | currency}}
<span>(含附加费)</span>
</div>
</div>
</div>
</div>
<div nz-col nzSpan="5">
<div class="source-info bdr bdl pl-md">
<div *ngFor="let item of dataList?.goodsInfoVOList; let i = index">
<h3 *ngIf="i === 0" style="font-weight: 700;">货物信息</h3>
<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 pl-md">
<h3 style="font-weight: 700;">承运信息</h3>
<p>网络货运人:{{dataList?.carrierInformationVO?.enterpriseInfoName}}</p>
<p>服务类型:{{dataList?.carrierInformationVO?.serviceType === 1 ? '抢单' : '指派'}}</p>
<p>司机姓名:{{dataList?.carrierInformationVO?.driverName}}</p>
<p>手机号:{{dataList?.carrierInformationVO?.driverTelephone}}</p>
<p>车牌号:{{dataList?.carrierInformationVO?.driverLicensePlate}}</p>
</div>
</div>
<div nz-col nzSpan="5">
<div class="source-info bdr pl-md">
<h3 style="font-weight: 700;">服务信息</h3>
<p>货物价值:{{dataList?.goodsInfoList?.goodsName}}</p>
<p>保价费金额:{{dataList?.goodsInfoList?.goodsName}}</p>
</div>
</div>
<div class="source-info pl-md">
<h3 style="font-weight: 700;">补充信息</h3>
<p>{{dataList?.supplementaryInformationVO?.stateReceipt === 2 ? '不需要回单' : '需要回单'}}</p>
<p>联系人:{{dataList?.supplementaryInformationVO?.receiptUserId}}</p>
<p>联系电话:{{dataList?.supplementaryInformationVO?.remarks}}</p>
<p>所在地区:{{dataList?.supplementaryInformationVO?.remarks}}</p>
<p>详细地址:{{dataList?.supplementaryInformationVO?.receiptAddress}}</p>
<p>备注:{{dataList?.supplementaryInformationVO?.remarks}}</p>
</div>
</div>
<nz-divider></nz-divider>
<div nz-row>
<div class="freight-info-box">
<h3 style="font-weight: 700;">运费信息</h3>
<div class="text-right">
<p>预付:{{dataList?.shippingInformationVO?.prePay | currency: '¥' }}</p>
<p>油卡:{{dataList?.shippingInformationVO?.oilCardPay | currency: '¥'}}</p>
<p>到付:{{dataList?.shippingInformationVO?.toPay | currency: '¥'}}</p>
<p>回单付:{{dataList?.shippingInformationVO?.receiptPay | currency: '¥'}}</p>
<p>保险费:{{dataList?.shippingInformationVO?.insuranceFee | currency: '¥'}}</p>
<p>附加费保险费:{{dataList?.shippingInformationVO?.appendFee | currency: '¥'}}</p>
</div>
</div>
<nz-divider></nz-divider>
<div class="freight-info-box" nz-row>
</ng-template>
</st>
<div class="freight-info-box mt-md" nz-row>
<div nz-col nzSpan="24">
<h3 class="text-right"><label>总计 :</label> <span class="text-error-dark text-xl">{{dataList?.shippingInformationVO?.totalFee | currency: '¥' }}</span></h3>
<h3>
<label>总计 :</label>
<span class="text-error-dark text-xl">
{{totalExpensePrice | currency}}
</span>
<span>运费¥3500.00含附加运费¥191.98</span>
</h3>
</div>
</div>
</div>
<nz-divider></nz-divider>
<div nz-row>
<nz-card nzTitle="操作日志" style="width: 100%;">
<st #st [data]="i?.auditRecordList" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }">
</st>
</nz-card>
</div>
</nz-card>
</nz-card>
<nz-card nzTitle="补充信息">
<sv-container>
<sv label="是否回单">
{{i?.supplementaryInformationVO?.stateReceipt?'是':'否'}}
</sv>
<sv label="回单类型">
{{i?.supplementaryInformationVO?.receiptTypeLabel}}
</sv>
<sv label="所在地区">
{{i?.supplementaryInformationVO?.area}}
</sv>
<sv label="详细地址">
{{i?.supplementaryInformationVO?.address}}
</sv>
<sv label="备注">
{{i?.supplementaryInformationVO?.remarks}}
</sv>
</sv-container>
</nz-card>
<nz-card nzTitle="操作日志">
<st #st [data]="i?.auditRecordList" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }">
</st>
</nz-card>
</div>

View File

@ -1,37 +1,84 @@
:host{
.btn-size{
font-size: 14px;
:host {
.source-info {
min-height: 210px;
p {
margin-bottom: .5em;
}
.bdr{
border-right: 1px solid #ccc;
}
.btn-size {
font-size: 14px;
}
.bdr {
border-right: 1px solid #ccc;
}
.bdl {
border-left: 1px solid #ccc;
}
.title {
font-weight: bold;
font-size: 26;
}
.freight-info-box {
width: 95%;
p {
margin-bottom: 5px;
}
.bdl{
border-left: 1px solid #ccc;
}
.freigth-label {
display: inline-block;
width: 50px;
text-align: right;
}
::ng-deep {
.approval-status {
.ant-steps {
width: 70%;
margin: 0 auto;
}
}
.title{
font-size: 26;
font-weight: bold;
}
.source-info{
p{
margin-bottom: .5em;
}
}
.freight-info-box{
width: 95%;
}
.freigth-label{
display: inline-block;
width: 50px;
text-align: right;
}
.handling-info {
min-height: 176px;
border: 1px solid #ccc;
.loading-row {
display: flex;
}
::ng-deep{
.approval-status{
.ant-steps{
width: 70%;
margin: 0 auto;
}
}
.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

@ -7,9 +7,9 @@ describe('SupplyManagementVehicleDetailComponent', () => {
beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({
declarations: [ SupplyManagementVehicleDetailComponent ]
declarations: [SupplyManagementVehicleDetailComponent]
})
.compileComponents();
.compileComponents();
}));
beforeEach(() => {

View File

@ -1,17 +1,12 @@
/*
* @Author: your name
* @Date: 2021-12-03 11:10:14
* @LastEditTime: 2021-12-09 20:54:28
* @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-detail\vehicle-detail.component.ts
*/
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { STColumn } from '@delon/abc/st';
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 { SupplyManagementUpdateExternalSnComponent } from '../update-external-sn/update-external-sn.component';
@Component({
selector: 'app-supply-management-vehicle-detail',
@ -22,59 +17,144 @@ export class SupplyManagementVehicleDetailComponent implements OnInit {
id = this.route.snapshot.params.id;
i: any;
dataList: any;
logColumns: STColumn[] = [
{ title: '内容', index: 'theme' },
{ title: '操作人', index: 'operationUserPhone' },
{ title: '操作时间', index: ' createTime' },
];
serviceType: any = {
1: '抢单',
2: '指派'
}
status: any = { 1: '待接单', 2: '已接单', 3: '已取消' };
totalExpensePrice = 0;
expenseColumns: STColumn[] = [
{
title: '款项',
width: '150px',
className: 'text-center',
index: 'expenseName'
},
{
title: '总费用(元)',
width: '150px',
className: 'text-center',
render: 'total'
},
{
title: '协议金额(元)',
width: '150px',
className: 'text-center',
index: 'price'
},
];
constructor(
private route: ActivatedRoute,
private msgSrv: NzMessageService,
private service: SupplyManagementService,
private router: Router,private ar: ActivatedRoute
public modal: NzModalService,
public router: Router
) {
}
ngOnInit(): void {
console.log(this.id)
if(this.id) {
this.getDetailList(this.id)
}
this.getGoodsSourceDetail()
}
// 获取录单员
getDetailList(id: any) {
const params = {
id: id
};
this.service.request(`${this.service.$api_get_getCompleteVehicleDetail}`, params).subscribe((res) => {
console.log(res)
this.dataList = res
getGoodsSourceDetail() {
this.service.request(this.service.$api_get_getCompleteVehicleDetail, { id: this.id }).subscribe(res => {
const expenseList = res?.expenseList || [];
this.totalExpensePrice = 0;
expenseList.forEach((e: any) => {
this.totalExpensePrice += e?.price * e?.rate;
});
this.i = { ...res, totalExpensePrice: this.totalExpensePrice };
})
}
// 修改货源
modification() {
this.router.navigate(['/supply-management/vehicle-amend', this.id], {
/**
* 修改货源
*/
updateGoodsSource(record: any) {
this.router.navigate(['./pbg/onecar-publish'], {
queryParams: {
sta: 1
},
id: record?.id,
type: 'edit'
}
})
}
// 再下一单
nextOrder() {
this.router.navigate(['/supply-management/vehicle-amend', this.id], {
/**
* 取消货源
*/
cancleGoodsSource() {
this.modal.confirm({
nzTitle: '<b>确定取消货源吗?</b>',
nzContent: `<b>取消后不可恢复,谨慎操作</b>`,
nzOnOk: () =>
this.service.msgSrv.success('操作成功!')
// this.service.request(this.service.$api_cancle_goods_source, { id: this.i.id }).subscribe((res) => {
// if (res === true) {
// this.service.msgSrv.success('操作成功!');
// this.getGoodsSourceDetail();
// }
// }),
})
}
/**
*再下一单
* @param record
*/
placeOrder(record: any) {
this.router.navigate(['./pbg/onecar-publish'], {
queryParams: {
sta: 2
},
id: record?.id,
type: 'add'
}
})
}
/**
* 编辑外部货源号
* @param item st当前行对象
*/
editEnternalSn(item: any) {
const modalRef = this.modal.create({
nzWidth: '400px',
nzContent: SupplyManagementUpdateExternalSnComponent,
nzComponentParams: {
orderObject: item,
},
nzFooter: null,
nzClosable: false
});
}
/**
* 重新指派
*/
assignedCar(item: any) {
const modalRef = this.modal.create({
nzTitle: '指派熟车',
nzWidth: '1200px',
nzContent: SupplyManagementAssignedCarComponent,
nzComponentParams: {
i: item,
},
nzFooter: null,
});
modalRef.afterClose.subscribe((result) => {
if (result) {
this.getGoodsSourceDetail();
}
});
}
goBack() {
window.history.go(-1);
}
}

View File

@ -83,13 +83,13 @@ export class SupplyManagementVehicleComponent implements OnInit {
} as SFSelectWidgetSchema,
},
goodsName: {
type: 'string',
title: '货物名称',
type: 'string',
default: '',
ui: {
widget: 'dict-select',
// params: { dictKey: 'GoodsName' },
placeholder: '请选择',
widget: 'select',
// asyncData: () =>[]
} as SFSelectWidgetSchema,
},
loadingPlace: {
@ -280,7 +280,7 @@ export class SupplyManagementVehicleComponent implements OnInit {
{
text: '取消货源',
// iif: item => item.auditStatus === 1 || item.auditStatus === 2,
// click: (_record) => this.delOne(_record),
click: (_record) => this.cancleGoodsSource(_record),
},
{
text: '再下一单',
@ -288,7 +288,7 @@ export class SupplyManagementVehicleComponent implements OnInit {
},
{
text: '重新指派',
click: (_record) => this.assignedCar(_record),
// click: (_record) => this.assignedCar(_record),
// iif: item => item.auditStatus === 2,
},
],
@ -431,6 +431,23 @@ export class SupplyManagementVehicleComponent implements OnInit {
},
})
}
/**
* 取消货源
*/
cancleGoodsSource(record: any) {
this.modal.confirm({
nzTitle: '<b>确定取消货源吗?</b>',
nzContent: `<b>取消后不可恢复,谨慎操作</b>`,
nzOnOk: () =>
this.service.request(this.service.$api_cancle_goods_source, [record.id]).subscribe((res) => {
if (res === true) {
this.service.msgSrv.success('操作成功!');
this.st?.reload();
this.getGoodsSourceStatistical();
}
}),
})
}
// 获取货源状态统计
getGoodsSourceStatistical() {
this.service.request(this.service.$api_get_goods_resource_statistical, { resourceType: 1 }).subscribe(res => {

View File

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-12-03 11:10:14
* @LastEditTime: 2021-12-14 20:09:41
* @LastEditTime: 2021-12-20 14:26:54
* @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
@ -13,6 +13,8 @@ import { BaseService } from 'src/app/shared/services';
providedIn: 'root'
})
export class SupplyManagementService extends BaseService {
// 取消货源
$api_cancle_goods_source = `/api/sdc/goodsResourceOperate/cancelSource`;
// 整车获取货源表详情
$api_get_getCompleteVehicleDetail = `/api/sdc/goodsResourceOperate/getWholeDetail`;
// 大宗获取货源表详情

View File

@ -1,8 +1,8 @@
/*
* @Author: your name
* @Date: 2021-12-03 11:10:14
* @LastEditTime: 2021-12-06 13:51:59
* @LastEditors: your name
* @LastEditTime: 2021-12-20 13:38:33
* @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\supply-management-routing.module.ts
*/
@ -11,7 +11,6 @@ import { RouterModule, Routes } from '@angular/router';
import { SupplyManagementIndexComponent } from './components/index/index.component';
import { SupplyManagementBulkComponent } from './components/bulk/bulk.component';
import { SupplyManagementVehicleComponent } from './components/vehicle/vehicle.component';
import { SupplyManagementBulkDetailComponent } from './components/bulk-detail/bulk-detail.component';
import { SupplyManagementVehicleDetailComponent } from './components/vehicle-detail/vehicle-detail.component';
import { SupplyManagementAddDriversComponent } from './components/add-drivers/add-drivers.component';
import { SupplyManagementOnecarPublishComponent } from './components/onecar-publish/onecar-publish.component';
@ -19,7 +18,7 @@ import { SupplyManagementBulkPublishComponent } from './components/bulk-publish/
const routes: Routes = [
{ path: 'index', component: SupplyManagementIndexComponent },
{ path: 'bulk-detail/:id', component: SupplyManagementBulkDetailComponent },
// { path: 'bulk-detail/:id', component: SupplyManagementBulkDetailComponent },
{ path: 'vehicle-detail/:id', component: SupplyManagementVehicleDetailComponent },
{ path: 'add-drivers', component: SupplyManagementAddDriversComponent },
{ path: 'vehicle-amend/:id', component: SupplyManagementOnecarPublishComponent },

View File

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-12-03 11:10:14
* @LastEditTime: 2021-12-14 20:40:01
* @LastEditTime: 2021-12-20 13:38:26
* @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\supply-management.module.ts
@ -17,7 +17,6 @@ import { SupplyManagementUpdateFreightComponent } from './components/update-frei
import { SupplyManagementAssignedCarComponent } 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 { SupplyManagementBulkDetailComponent } from './components/bulk-detail/bulk-detail.component';
import { SupplyManagementVehicleDetailComponent } from './components/vehicle-detail/vehicle-detail.component';
import { SupplyManagementAddDriversComponent } from './components/add-drivers/add-drivers.component';
import { SupplyManagementOnecarPublishComponent } from './components/onecar-publish/onecar-publish.component';
@ -28,6 +27,7 @@ import { SupplyManagementBulkPublishComponent } from './components/bulk-publish/
import { PublishAddressListComponent } from './components/onecar-publish/address-list/address-list.component';
import { PublishSuccessComponent } from './components/onecar-publish/publish-success/publish-success.component';
const COMPONENTS: Type<void>[] = [
SupplyManagementIndexComponent,
SupplyManagementBulkComponent,
@ -37,7 +37,6 @@ const COMPONENTS: Type<void>[] = [
SupplyManagementAssignedCarComponent,
SupplyManagementQrcodePageComponent,
SupplyManagementUpdateExternalSnComponent,
SupplyManagementBulkDetailComponent,
SupplyManagementVehicleDetailComponent,
SupplyManagementAddDriversComponent,
SupplyManagementOnecarPublishComponent,