车辆对接
This commit is contained in:
@ -0,0 +1,405 @@
|
||||
import { ViewChild } from '@angular/core';
|
||||
/*
|
||||
* @Author: your name
|
||||
* @Date: 2021-12-03 15:31:52
|
||||
* @LastEditTime: 2021-12-23 14:33:36
|
||||
* @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.ts
|
||||
*/
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
|
||||
import { ActivatedRoute } from '@angular/router';
|
||||
import { STColumn } from '@delon/abc/st';
|
||||
import { SFComponent, SFSchema, SFSelectWidgetSchema, SFUISchema } from '@delon/form';
|
||||
import { _HttpClient } from '@delon/theme';
|
||||
import { AmapPoiPickerComponent, AmapService, ShipperBaseService } from '@shared';
|
||||
import { NzMessageService } from 'ng-zorro-antd/message';
|
||||
import { NzModalService } from 'ng-zorro-antd/modal';
|
||||
import { OrderManagementService } from '../../services/order-management.service';
|
||||
@Component({
|
||||
selector: 'app-supply-management-vehicle-detail-change',
|
||||
templateUrl: './vehicle-detail-change.component.html',
|
||||
styleUrls: ['./vehicle-detail-change.component.less']
|
||||
})
|
||||
export class OrderManagementVehicleDetailChangeComponent implements OnInit {
|
||||
validateForm1: FormGroup;
|
||||
id = this.route.snapshot.params.id;
|
||||
@ViewChild('distannce3', { static: false })
|
||||
i: any= {unLoadingPlaceList:[]};
|
||||
logColumns: STColumn[] = [
|
||||
{ title: '款项', index: 'costName' },
|
||||
{ title: '总费用(元)', index: 'price' },
|
||||
{ title: '协议金额(元)', index: 'price' },
|
||||
{ title: '附加费(元)', index: 'surcharge' },
|
||||
{ title: '附加费率(%)', index: 'paymentMethodRate' },
|
||||
{ title: '支付时间', index: ' paymentTime' },
|
||||
{
|
||||
title: '支付状态',
|
||||
className: 'text-center',
|
||||
index: 'paymentStatus',
|
||||
type: 'badge',
|
||||
width: '120px',
|
||||
badge: {
|
||||
'1': { text: '待申请', color: 'warning' },
|
||||
'2': { text: '已支付', color: 'success' },
|
||||
'3': { text: '已拒绝', color: 'warning' },
|
||||
'4': { text: '申请中', color: 'warning' },
|
||||
},
|
||||
},
|
||||
];
|
||||
totalDistance = 0.0; //总里程
|
||||
totalTime = 0.0; //路程总时间
|
||||
startInfo: any = []; // 装货信息
|
||||
endInfo: any = []; // 卸货信息
|
||||
unloadingTime: any; // 货源单设置回显
|
||||
loadingTime: any; // 货源单设置回显
|
||||
sf3data: any; // 货源单设置回显
|
||||
sf4data: any; // 货源单设置回显
|
||||
@ViewChild('sf3', { static: false }) sf3!: SFComponent;
|
||||
schema3: SFSchema = {};
|
||||
ui3!: SFUISchema;
|
||||
|
||||
@ViewChild('sf4', { static: false }) sf4!: SFComponent;
|
||||
schema4: SFSchema = {};
|
||||
ui4!: SFUISchema;
|
||||
constructor(
|
||||
private route: ActivatedRoute,
|
||||
private msgSrv: NzMessageService,
|
||||
private service: OrderManagementService,
|
||||
private modalService: NzModalService,
|
||||
private amapService: AmapService,
|
||||
public service2: ShipperBaseService,
|
||||
fb: FormBuilder,
|
||||
) {
|
||||
this.validateForm1 = fb.group({
|
||||
loadingTime: [null, []],
|
||||
unloadingTime: [null, []],
|
||||
});
|
||||
}
|
||||
|
||||
ngOnInit(): void {
|
||||
console.log(this.id)
|
||||
this.initSF3();
|
||||
this.initSF4();
|
||||
this.initData()
|
||||
}
|
||||
|
||||
initData() {
|
||||
this.service.request(this.service.$api_get_getWholeBillDetail, {id: this.id}).subscribe(res => {
|
||||
console.log(res)
|
||||
if (res) {
|
||||
this.i = res;
|
||||
res?.unLoadingPlaceList.forEach((element: any) => {
|
||||
if(element.type === 1 || element.type === '1') {
|
||||
const controlId = this.startInfo.length;
|
||||
this.startInfo.push({
|
||||
detailedAddress: element.detailedAddress,
|
||||
appUserName: element.appUserName,
|
||||
contractTelephone: element.contractTelephone,
|
||||
latitude: element.latitude,
|
||||
longitude: element.longitude,
|
||||
province: element.province,
|
||||
city: element.city,
|
||||
area: element.area,
|
||||
type: element.type,
|
||||
id: element.id
|
||||
})
|
||||
this.validateForm1.addControl(`loadAddress${controlId}`, new FormControl(null, Validators.required));
|
||||
this.validateForm1.addControl(`loadName${controlId}`, new FormControl(null, Validators.required));
|
||||
this.validateForm1.addControl(`loadPhone${controlId}`, new FormControl(null, Validators.required));
|
||||
} else if(element.type === 2 || element.type === '2') {
|
||||
const controlId = this.endInfo.length;
|
||||
this.endInfo.push({
|
||||
detailedAddress: element?.detailedAddress,
|
||||
appUserName: element?.appUserName,
|
||||
contractTelephone: element?.contractTelephone,
|
||||
latitude: element.latitude,
|
||||
longitude: element.longitude,
|
||||
province: element.province,
|
||||
city: element.city,
|
||||
area: element.area,
|
||||
type: element.type,
|
||||
id: element.id
|
||||
})
|
||||
this.validateForm1.addControl(`unloadAddress${controlId}`, new FormControl(null, Validators.required));
|
||||
this.validateForm1.addControl(`unloadName${controlId}`, new FormControl(null, Validators.required));
|
||||
this.validateForm1.addControl(`unloadPhone${controlId}`, new FormControl(null, Validators.required));
|
||||
}
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
hand() {
|
||||
this.modalService.create({
|
||||
nzTitle: '',
|
||||
// nzContent: OrderManagementGaodeMapComponent,
|
||||
nzWidth: 1200
|
||||
});
|
||||
}
|
||||
|
||||
goBack() {
|
||||
window.history.go(-1);
|
||||
}
|
||||
// 取消修改
|
||||
cancelChange() {
|
||||
window.history.go(-1);
|
||||
}
|
||||
// 保存修改
|
||||
save() {
|
||||
if(typeof(this.validateForm1.value.unloadingTime) !== 'string' ) {
|
||||
var c = new Date(this.validateForm1.value.unloadingTime);
|
||||
this.validateForm1.value.unloadingTime = c.getFullYear() + '-' + this.addPreZero(c.getMonth() + 1) + '-' + this.addPreZero(c.getDate()) + ' ' + this.addPreZero(c.getHours()) + ':' + this.addPreZero(c.getMinutes()) + ':' + this.addPreZero(c.getSeconds())
|
||||
}
|
||||
if(typeof(this.validateForm1.value.loadingTime) !== 'string' ) {
|
||||
var c = new Date(this.validateForm1.value.loadingTime);
|
||||
this.validateForm1.value.loadingTime = c.getFullYear() + '-' + this.addPreZero(c.getMonth() + 1) + '-' + this.addPreZero(c.getDate()) + ' ' + this.addPreZero(c.getHours()) + ':' + this.addPreZero(c.getMinutes()) + ':' + this.addPreZero(c.getSeconds())
|
||||
}
|
||||
}
|
||||
addPreZero(num: any){
|
||||
if(num<10){
|
||||
return '0'+num;
|
||||
} else {
|
||||
return num;
|
||||
}
|
||||
}
|
||||
// -------------------装卸货信息处理
|
||||
addStartInfo(event: any) {
|
||||
if (this.startInfo.length < 5) {
|
||||
const controlId = this.startInfo.length;
|
||||
this.startInfo.push({
|
||||
detailedAddress: '',
|
||||
appUserName: '',
|
||||
contractTelephone: '',
|
||||
latitude: '',
|
||||
longitude: '',
|
||||
province: '',
|
||||
city: '',
|
||||
area: '',
|
||||
type: 1
|
||||
});
|
||||
this.validateForm1.addControl(`loadAddress${controlId}`, new FormControl(null, Validators.required));
|
||||
this.validateForm1.addControl(`loadName${controlId}`, new FormControl(null, Validators.required));
|
||||
this.validateForm1.addControl(`loadPhone${controlId}`, new FormControl(null, Validators.required));
|
||||
}
|
||||
}
|
||||
subStartInfo(event: any, index: number, id?:any) {
|
||||
console.log(event, index, id)
|
||||
if(id) {
|
||||
this.service.request(this.service.$api_delete_Wholedeletebatch, [id]).subscribe((res) => {
|
||||
console.log(res)
|
||||
})
|
||||
}
|
||||
this.startInfo.splice(index, 1);
|
||||
this.validateForm1.removeControl(`loadAddress${index}`);
|
||||
this.validateForm1.removeControl(`loadName${index}`);
|
||||
this.validateForm1.removeControl(`loadPhone${index}`);
|
||||
}
|
||||
subEndInfo(event: any, index: number, id?:any) {
|
||||
if(id) {
|
||||
this.service.request(this.service.$api_delete_Wholedeletebatch, [id]).subscribe((res) => {
|
||||
console.log(res)
|
||||
})
|
||||
}
|
||||
console.log(event, index, id)
|
||||
this.endInfo.splice(index, 1);
|
||||
this.validateForm1.removeControl(`unloadAddress${index}`);
|
||||
this.validateForm1.removeControl(`unloadName${index}`);
|
||||
this.validateForm1.removeControl(`unloadPhone${index}`);
|
||||
}
|
||||
addEndInfo(event: any) {
|
||||
if (this.addEndInfo.length < 5) {
|
||||
const controlId = this.endInfo.length;
|
||||
this.endInfo.push({
|
||||
detailedAddress: '',
|
||||
appUserName: '',
|
||||
contractTelephone: '',
|
||||
latitude: '',
|
||||
longitude: '',
|
||||
province: '',
|
||||
city: '',
|
||||
area: '',
|
||||
type: 2
|
||||
});
|
||||
this.validateForm1.addControl(`unloadAddress${controlId}`, new FormControl(null, Validators.required));
|
||||
this.validateForm1.addControl(`unloadName${controlId}`, new FormControl(null, Validators.required));
|
||||
this.validateForm1.addControl(`unloadPhone${controlId}`, new FormControl(null, Validators.required));
|
||||
}
|
||||
}
|
||||
// 打开地图
|
||||
openMap(type: string, index: number) {
|
||||
const modalRef = this.modalService.create({
|
||||
nzTitle: '',
|
||||
nzContent: AmapPoiPickerComponent,
|
||||
nzWidth: 900,
|
||||
nzOnOk: item => {
|
||||
const poi = item.poi;
|
||||
const locList = poi.pois;
|
||||
switch (type) {
|
||||
case 'start':
|
||||
this.startInfo[index].detailedAddress = poi.formattedAddress;
|
||||
this.startInfo[index].longitude = locList[0];
|
||||
this.startInfo[index].latitude = locList[1];
|
||||
this.startInfo[index].province = poi.addressComponent.province;
|
||||
this.startInfo[index].city = poi.addressComponent.city;
|
||||
this.startInfo[index].area = poi.addressComponent.district;
|
||||
this.startInfo[index].address = poi.formattedAddress;
|
||||
break;
|
||||
case 'end':
|
||||
this.endInfo[index].detailedAddress = poi.formattedAddress;
|
||||
this.endInfo[index].longitude = locList[0];
|
||||
this.endInfo[index].latitude = locList[1];
|
||||
this.endInfo[index].province = poi.addressComponent.province;
|
||||
this.endInfo[index].city = poi.addressComponent.city;
|
||||
this.endInfo[index].area = poi.addressComponent.district;
|
||||
this.endInfo[index].address = poi.formattedAddress;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (this.startInfo[0]?.area && this.endInfo[0]?.area) {
|
||||
this.amapService.drivingCompute([...this.startInfo], [...this.endInfo]).subscribe((res: any) => {
|
||||
this.totalDistance = res.distance;
|
||||
this.totalTime = res.time;
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
initSF3() {
|
||||
this.schema3 = {
|
||||
properties: {
|
||||
enterpriseInfoId: {
|
||||
title: '网络货运人',
|
||||
type: 'string',
|
||||
ui: {
|
||||
placeholder: '请选择',
|
||||
widget: 'select',
|
||||
asyncData: () => this.service2.getNetworkFreightForwarder(),
|
||||
visibleIf: {
|
||||
_$expand: (value: boolean) => value,
|
||||
},
|
||||
}
|
||||
},
|
||||
goodsName: {
|
||||
type: 'string',
|
||||
title: '货物名称',
|
||||
ui: {
|
||||
widget: 'dict-select',
|
||||
params: { dictKey: 'GoodsName' },
|
||||
placeholder: '请选择'
|
||||
}
|
||||
},
|
||||
qita: {
|
||||
type: 'string',
|
||||
title: '',
|
||||
ui: {
|
||||
visibleIf: {
|
||||
goodsName: value => value === '3'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
required: ['goodsName', ]
|
||||
};
|
||||
this.ui3 = {
|
||||
'*': {
|
||||
spanLabelFixed: 90,
|
||||
grid: { span: 12 }
|
||||
},
|
||||
$enterpriseInfoId: {
|
||||
grid: { span: 16, }
|
||||
},
|
||||
$goodsName: {
|
||||
grid: { span: 12 }
|
||||
},
|
||||
$qita: {
|
||||
grid: { span: 12 }
|
||||
}
|
||||
};
|
||||
}
|
||||
initSF4() {
|
||||
this.schema4 = {
|
||||
properties: {
|
||||
weight: {
|
||||
type: 'string',
|
||||
title: '货物数量',
|
||||
ui: {
|
||||
widget: 'custom',
|
||||
placeholder: '请输入',
|
||||
errors: { required: '必填项' }
|
||||
}
|
||||
},
|
||||
volume: {
|
||||
type: 'string',
|
||||
title: '',
|
||||
ui: {
|
||||
widget: 'custom',
|
||||
placeholder: '请输入'
|
||||
}
|
||||
},
|
||||
number: {
|
||||
type: 'string',
|
||||
title: '',
|
||||
ui: {
|
||||
widget: 'custom',
|
||||
placeholder: '请输入'
|
||||
}
|
||||
},
|
||||
carmand: {
|
||||
type: 'string',
|
||||
title: '用车需求',
|
||||
ui: {
|
||||
widget: 'custom',
|
||||
placeholder: '请输入'
|
||||
}
|
||||
},
|
||||
drivers: {
|
||||
type: 'string',
|
||||
title: '承运司机',
|
||||
ui: {
|
||||
widget: 'custom',
|
||||
placeholder: '请输入'
|
||||
}
|
||||
},
|
||||
weightModel: {
|
||||
type: 'string',
|
||||
title: '车型车长承重',
|
||||
ui: {
|
||||
widget: 'custom',
|
||||
placeholder: '请输入'
|
||||
}
|
||||
},
|
||||
|
||||
},
|
||||
required: ['weight',]
|
||||
};
|
||||
this.ui4 = {
|
||||
'*': {
|
||||
spanLabelFixed: 90,
|
||||
grid: { span: 24 }
|
||||
},
|
||||
$weight: {
|
||||
grid: { span: 8 }
|
||||
},
|
||||
$volume: {
|
||||
grid: { span: 8 }
|
||||
},
|
||||
$number: {
|
||||
grid: { span: 8 }
|
||||
},
|
||||
$carmand: {
|
||||
grid: { span: 24 }
|
||||
},
|
||||
$weightModel: {
|
||||
grid: { span: 12 }
|
||||
},
|
||||
$drivers: {
|
||||
grid: { span: 12 }
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user