车辆对接

This commit is contained in:
wangshiming
2021-12-21 10:52:28 +08:00
parent 4aad1e6a47
commit f27a6bddbc
20 changed files with 1021 additions and 477 deletions

View File

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-12-03 11:10:14
* @LastEditTime: 2021-12-20 17:11:27
* @LastEditTime: 2021-12-21 10:37:32
* @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
@ -38,10 +38,15 @@
</nz-card>
<nz-card>
<nz-tabset (nzSelectedIndexChange)="selectChange($event)" [nzTabBarExtraContent]="extraTemplate">
<nz-tab *ngFor="let tab of tabs; let i = index" [nzTitle]="tab.name + ' (' + tab.count + ') '" (nzClick)="tabChange(i)">
</nz-tab>
</nz-tabset>
<nz-tabset (nzSelectedIndexChange)="selectChange($event)"
[nzTabBarExtraContent]="extraTemplate">
<nz-tab [nzTitle]="'全部'"></nz-tab>
<nz-tab [nzTitle]="'待发车('+tabs?.stayQuantity+')'"></nz-tab>
<nz-tab [nzTitle]="'运输中('+tabs?.receivedQuantity+')'"></nz-tab>
<nz-tab [nzTitle]="'待签收('+tabs?.cancelQuantity+')'"></nz-tab>
<nz-tab [nzTitle]="'已完成'"></nz-tab>
<nz-tab [nzTitle]="'已取消'"></nz-tab>
</nz-tabset>
<div style="margin-top: 15px;">
<st
#st

View File

@ -38,6 +38,7 @@ export class OrderManagementBulkComponent implements OnInit {
columnsFloat: STColumn[] = [];
columnsFloatView: STColumn[] = [];
demoValue: any;
resourceStatus: any;
datass: any = [
{
one: '1',
@ -52,50 +53,46 @@ export class OrderManagementBulkComponent implements OnInit {
id: 2
},
];
tabs = [ {
name: '全部',
type: 5,
count: 0,
},
{
name: '待发车',
type: 5,
count: 0,
},
{
name: '运输中',
type: 5,
count: 0,
},
{
name: '代签收',
type: 5,
count: 0,
},
{
name: '已完成',
type: 5,
count: 0,
},
{
name: '已取消',
type: 5,
count: 0,
},
];
tabs = {
totalQuantity: 0,
cancelQuantity: 0,
receivedQuantity: 0,
stayQuantity: 0
};
constructor(public service: OrderManagementService, private modal: NzModalService,public service2: ShipperBaseService) { }
/**
* 查询参数
*/
get reqParams() {
const a:any = {};
if(this.resourceStatus) {
a.billStatus = this.resourceStatus
}
return {
...a,
...this.sf?.value,
};
}
get selectedRows() {
return this.st?.list.filter((item) => item.checked) || [];
}
getGoodsSourceStatistical() {
this.service.request(this.service.$api_statisticalStatus, { resourceType: 2 }).subscribe(res => {
if (res) {
console.log(res)
this.tabs = res;
}
})
}
selectChange(e: number) {
console.log(e);
this.resourceStatus = e;
this.initST();
setTimeout(() => {
this.st.load();
}, 500);
}
ngOnInit(): void {
this.initSF();
this.initST();
@ -443,15 +440,7 @@ export class OrderManagementBulkComponent implements OnInit {
},
{
text: '取消订单',
click: (_record) => this.confirmReceipt(_record),
},
{
text: '确认发车',
click: (_record) => this.sureDepart(_record),
},
{
text: '确认到车',
click: (_record) => this.sureArrive(_record),
click: (_record) => this.cancellation(_record),
},
],
},
@ -548,9 +537,6 @@ export class OrderManagementBulkComponent implements OnInit {
);
}
selectChange(e: number) {
console.log(e);
}
/**
* 导入货源
*/
@ -624,19 +610,6 @@ export class OrderManagementBulkComponent implements OnInit {
nzTitle: '确认签收',
nzWidth: '50%',
nzContent: ConfirReceiptComponent,
nzComponentParams: {
i: item
},
nzFooter: null
});
}
// *确认发车
sureDepart(item: any) {
const modalRef = this.modal.create({
nzTitle: '确认发车',
nzWidth: '50%',
nzContent: SureDepartComponent,
nzComponentParams: {
i: item,
Status: 1
@ -644,20 +617,35 @@ export class OrderManagementBulkComponent implements OnInit {
nzFooter: null
});
}
// *确认到车
sureArrive(item: any) {
const modalRef = this.modal.create({
nzTitle: '确认到车',
nzWidth: '50%',
nzContent: SureArriveComponent,
nzComponentParams: {
i: item
},
nzFooter: null
userAction() {
let params: any[] = [];
this.selectedRows.forEach(item => {
params.push(item.id);
});
console.log(this.selectedRows)
console.log(params)
this.service.request(this.service.$api_get_batchSignBulkOrder, params).subscribe(res => {
if (res) {
console.log(res);
} else {
this.service.msgSrv.error(res.msg);
}
});
}
userAction() {
// 取消订单
cancellation(item: any) {
// api_get_cancelAnOrder
this.modal.confirm({
nzTitle: '<b>确定取消该订单吗?</b>',
nzContent: `<b>取消后无法恢复,请确认</b>`,
nzOnOk: () =>
this.service.request(this.service.$api_get_cancelAnOrder, {id: item.id}).subscribe((res) => {
if (res === true) {
this.service.msgSrv.success('操作成功!');
this.st?.reload();
this.initST();
}
}),
})
}
}

View File

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-12-03 11:10:14
* @LastEditTime: 2021-12-20 17:07:17
* @LastEditTime: 2021-12-21 10:36:16
* @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
@ -38,10 +38,15 @@
</nz-card>
<nz-card>
<nz-tabset (nzSelectedIndexChange)="selectChange($event)" >
<nz-tab *ngFor="let tab of tabs; let i = index" [nzTitle]="tab.name + ' (' + tab.count + ') '" (nzClick)="tabChange(i)">
</nz-tab>
</nz-tabset>
<nz-tabset (nzSelectedIndexChange)="selectChange($event)"
[nzTabBarExtraContent]="extraTemplate">
<nz-tab [nzTitle]="'全部'"></nz-tab>
<nz-tab [nzTitle]="'待发车('+tabs?.stayQuantity+')'"></nz-tab>
<nz-tab [nzTitle]="'运输中('+tabs?.receivedQuantity+')'"></nz-tab>
<nz-tab [nzTitle]="'待签收('+tabs?.cancelQuantity+')'"></nz-tab>
<nz-tab [nzTitle]="'已完成'"></nz-tab>
<nz-tab [nzTitle]="'已取消'"></nz-tab>
</nz-tabset>
<div style="margin-top: 15px;">
<st
#st
@ -205,3 +210,21 @@
<button nz-button nzType="primary" (click)="handleOK()">确定</button>
</ng-template>
</nz-modal>
<ng-template #extraTemplate>
<div>
<button nz-button nzType="primary" nzGhost nz-popconfirm
[nzPopconfirmTitle]="enable" (nzOnConfirm)="userAction()" nzPopconfirmPlacement="bottomRight">
批量签收
</button>
</div>
</ng-template>
<ng-template #enable>
<div class="ant-popover-message">
<i nz-icon nzType="info-circle" nzTheme="fill"></i>
<div class="ant-popover-message-title ng-star-inserted self-ant-popover-title" style="font-size: 16px">已选择{{selectedRows?.length || 0}}条订单,确认批量签收吗?
</div>
<div class="ant-popover-message-title ng-star-inserted">
签收后不可再修改运费,请确保运费等信息准确无误后,再进行签收。
</div>
</div>
</ng-template>

View File

@ -6,6 +6,7 @@ import { ShipperBaseService } from '@shared';
import { NzModalService } from 'ng-zorro-antd/modal';
import { of } from 'rxjs';
import { map } from 'rxjs/operators';
import { OneCarOrderCancelComponent } from '../../modal/vehicle/cancel/cancel.component';
import { VehicleConfirReceiptComponent } from '../../modal/vehicle/confir-receipt/confir-receipt.component';
import { VehicleSureArriveComponent } from '../../modal/vehicle/sure-arrive/sure-arrive.component';
import { VehicleSureDepartComponent } from '../../modal/vehicle/sure-depart/sure-depart.component';
@ -51,47 +52,18 @@ export class OrderManagementVehicleComponent implements OnInit {
id: 2
},
];
tabs = [ {
name: '全部',
type: 5,
count: 0,
},
{
name: '待发车',
type: 5,
count: 0,
},
{
name: '运输中',
type: 5,
count: 0,
},
{
name: '代签收',
type: 5,
count: 0,
},
{
name: '已完成',
type: 5,
count: 0,
},
{
name: '已取消',
type: 5,
count: 0,
},
];
tabs = {
totalQuantity: 0,
cancelQuantity: 0,
receivedQuantity: 0,
stayQuantity: 0
};
resourceStatus: any;
constructor(public service: OrderManagementService, private modal: NzModalService,public service2: ShipperBaseService,) { }
/**
* 查询参数
*/
get reqParams() {
return {
...this.sf?.value,
};
}
get changeParams() {
return {
id: this.changeId
@ -102,6 +74,16 @@ export class OrderManagementVehicleComponent implements OnInit {
id: this.changeViewId
};
}
get reqParams() {
const a:any = {};
if(this.resourceStatus) {
a.billStatus = this.resourceStatus
}
return {
...a,
...this.sf?.value,
};
}
get selectedRows() {
return this.st?.list.filter((item) => item.checked) || [];
}
@ -391,15 +373,8 @@ export class OrderManagementVehicleComponent implements OnInit {
},
{
text: '取消订单',
click: (_record) => this.confirmReceipt(_record),
},
{
text: '确认发车',
click: (_record) => this.sureDepart(_record),
},
{
text: '确认到车',
click: (_record) => this.sureArrive(_record),
click: (_record) => this.cancellation(_record),
iif: item => item.externalSn === '1' || item.externalSn === 1,
},
],
},
@ -439,6 +414,7 @@ export class OrderManagementVehicleComponent implements OnInit {
{
text: '撤销',
click: (_record) => this.revoke(_record),
iif: item => item.handleStatus === '1' || item.handleStatus === 1,
},
],
},
@ -502,6 +478,11 @@ export class OrderManagementVehicleComponent implements OnInit {
selectChange(e: number) {
console.log(e);
this.resourceStatus = e;
this.initST();
setTimeout(() => {
this.st.load();
}, 500);
}
/**
* 导入货源
@ -567,7 +548,7 @@ export class OrderManagementVehicleComponent implements OnInit {
nzWidth: '50%',
nzContent: VehicleUpdateFreightComponent,
nzComponentParams: {
i: item
record: item
},
nzFooter: null
});
@ -580,19 +561,6 @@ export class OrderManagementVehicleComponent implements OnInit {
nzTitle: '确认签收',
nzWidth: '50%',
nzContent: VehicleConfirReceiptComponent,
nzComponentParams: {
i: item
},
nzFooter: null
});
}
// *确认发车
sureDepart(item: any) {
const modalRef = this.modal.create({
nzTitle: '确认发车',
nzWidth: '50%',
nzContent: VehicleSureDepartComponent,
nzComponentParams: {
i: item,
Status: 2
@ -600,18 +568,6 @@ export class OrderManagementVehicleComponent implements OnInit {
nzFooter: null
});
}
// 确认到车
sureArrive(item: any) {
const modalRef = this.modal.create({
nzTitle: '确认到车',
nzWidth: '50%',
nzContent: VehicleSureArriveComponent,
nzComponentParams: {
i: item
},
nzFooter: null
});
}
revoke(item: any) {
this.modal.confirm({
nzTitle: '是否确定立即撤销费用变更!</i>',
@ -627,4 +583,35 @@ export class OrderManagementVehicleComponent implements OnInit {
})
});
}
// 取消订单
cancellation(item: any) {
// api_get_cancelAnOrder
this.modal.confirm({
nzTitle: '<b>确定取消该订单吗?</b>',
nzContent: `<b>取消后无法恢复,请确认</b>`,
nzOnOk: () =>
this.service.request(this.service.$api_get_cancelAnOrder, {id: item.id}).subscribe((res) => {
if (res === true) {
this.service.msgSrv.success('操作成功!');
this.st?.reload();
this.initST();
}
}),
})
}
userAction() {
let params: any[] = [];
this.selectedRows.forEach(item => {
params.push(item.id);
});
console.log(this.selectedRows)
console.log(params)
this.service.request(this.service.$api_get_batchSignWholeOrder, params).subscribe(res => {
if (res) {
console.log(res);
} else {
this.service.msgSrv.error(res.msg);
}
});
}
}

View File

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-12-14 14:03:07
* @LastEditTime: 2021-12-14 15:43:01
* @LastEditTime: 2021-12-20 20:26:52
* @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\modal\bulk\update-freight\update-freight.component.html
@ -15,29 +15,31 @@ nzMessage="签收后不可再修改运费,请确保运费等信息准确无误
<sv-container col="1">
<sv label="货物单价">
<span>
100元/吨
100元/方
100元/车</span>
{{detailList?.goodsInfoVO?.freightPrice}} {{detailList?.goodsInfoVO?.freightType}}
</span>
</sv>
<sv label="结算依据">
<div style="display: flex; justify-content: space-between;">
<div>以发货为准 / 以收货为准</div>
<div>保留小数/抹除小数/抹除个数</div>
<div>
<div *ngIf="detailList?.goodsInfoVO?.settlementBasis === '1'">以收货为准</div>
<div *ngIf="detailList?.goodsInfoVO?.settlementBasis === '2'">以发货为准 </div>
<div *ngIf="detailList?.goodsInfoVO?.rule === '1'">保留小数 </div>
<div *ngIf="detailList?.goodsInfoVO?.rule === '2'">抹除小数 </div>
<div *ngIf="detailList?.goodsInfoVO?.rule === '3'">抹除个数 </div>
</div>
</sv>
</sv-container>
<sv-container col="2">
<sv label="装货重量">
<div>xx</div>
<div>{{detailList?.goodsInfoVO?.weight}}</div>
</sv>
<sv label="装货体积">
<div>xx</div>
<div>{{detailList?.goodsInfoVO?.volume}}</div>
</sv>
</sv-container>
<sv-container col="2">
<sv label="卸货重量">
<div>xx</div>
<div>{{detailList?.goodsInfoVO?.volume}}</div>
</sv>
<sv label="卸货体积">
<div>xx吨</div>
@ -45,7 +47,7 @@ nzMessage="签收后不可再修改运费,请确保运费等信息准确无误
</sv-container>
<sv-container col="1">
<sv label="总运费">
<div>1000元 </div>
<div>{{detailList?.goodsInfoVO?.freightPrice ? detailList?.goodsInfoVO?.freightPrice + '元' : ''}} </div>
</sv>
<sv label="司机车辆">
<div>张三 / 18888888888 / 粤GJ401</div>

View File

@ -2,7 +2,7 @@ import { preloaderFinished } from '@delon/theme';
/*
* @Author: your name
* @Date: 2021-12-14 14:03:07
* @LastEditTime: 2021-12-14 15:43:12
* @LastEditTime: 2021-12-21 09:42: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\order-management\modal\bulk\update-freight\update-freight.component.ts
@ -21,6 +21,7 @@ import {
import { _HttpClient } from '@delon/theme';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalRef } from 'ng-zorro-antd/modal';
import { OrderManagementService } from '../../../services/order-management.service';
@Component({
selector: 'app-order-management-confir-receipt',
@ -28,21 +29,43 @@ import { NzModalRef } from 'ng-zorro-antd/modal';
styleUrls: ['./confir-receipt.component.less']
})
export class ConfirReceiptComponent implements OnInit {
record: any = {};
i:any;
Status:any;
detailList:any;
data: any = {};
constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public http: _HttpClient) {}
constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public http: _HttpClient, public service: OrderManagementService) {}
ngOnInit(): void {
this.initData()
}
save(): void {
// this.http.post(`/user/${this.record.id}`, value).subscribe(res => {
// this.msgSrv.success('保存成功');
// this.modal.close(true);
// });
// 大宗
this.service.request(this.service.$api_get_signBulkOrder, {id: this.i?.id}).subscribe((res: any) => {
console.log(res)
if(res) {
this.service.msgSrv.success('确认签收成功!')
} else {
this.service.msgSrv.error(res.msg)
}
})
}
initData() {
// 大宗
this.service.request(this.service.$api_get_getBulkSignForDetail, {id: this.i?.id}).subscribe((res: any) => {
console.log(res)
this.detailList = res;
this.service.request(this.service.$api_getUserDetailByAppUserId, {id: this.detailList?.id}).subscribe((res: any) => {
console.log(res)
})
this.service.request(this.service.$api_getCarLicenseByIds, {id: this.detailList?.carId}).subscribe((res: any) => {
console.log(res)
})
})
}
close(): void {
this.modal.destroy();
}

View File

@ -0,0 +1,7 @@
<nz-spin *ngIf="!i" class="modal-spin"></nz-spin>
<sf #sf mode="edit" [schema]="schema" [ui]="ui" button="none"></sf>
<div class="modal-footer">
<button nz-button type="button" (click)="close()">关闭</button>
<button nz-button type="submit" nzType="primary" (click)="save(sf.value)" [disabled]="!sf.valid">确定</button>
</div>

View File

@ -0,0 +1,93 @@
/*
* @Author: your name
* @Date: 2021-12-21 10:14:52
* @LastEditTime: 2021-12-21 10:17:02
* @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\modal\vehicle\cancel\cancel.component.ts
*/
import { Component, OnInit, ViewChild } from '@angular/core';
import {
SFComponent,
SFCustomWidgetSchema,
SFNumberWidgetSchema,
SFRadioWidgetSchema,
SFSchema,
SFTextareaWidgetSchema,
SFUISchema
} from '@delon/form';
import { _HttpClient } from '@delon/theme';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';
import { OrderManagementService } from '../../../services/order-management.service';
@Component({
selector: 'app-order-management-cancel',
templateUrl: './cancel.component.html'
})
export class OneCarOrderCancelComponent implements OnInit {
record: any = {};
i: any;
@ViewChild('sf', { static: false }) sf!: SFComponent;
schema: SFSchema = {};
ui: SFUISchema = {};
constructor(private modalRef: NzModalRef, private modal: NzModalService, public service: OrderManagementService) {}
ngOnInit(): void {
this.initSF();
console.log(this.i.billStatusLabel)
}
initSF() {
this.schema = {
properties: {
cancelReason: {
type: 'string',
title: '取消原因',
ui: {
widget: 'textarea',
autosize: { minRows: 3, maxRows: 6 }
} as SFTextareaWidgetSchema
}
},
required: ['reason']
};
this.ui = {
'*': {
spanLabelFixed: 100,
grid: { span: 20 }
}
};
}
save(value: any): void {
if (this.i?.billStatus === '1') {
// 待接单状态
this.modal.confirm({
nzTitle: '<i>是否确定立即取消运单!</i>',
nzOnOk: () =>
this.service.request(this.service.$api_get_cancelAnOrder, { id: this.i?.id, ...this.sf.value }).subscribe(res => {
if (res) {
this.modalRef.close(true);
} else {
this.service.msgSrv.error(res.msg);
}
}),
nzOnCancel: () => this.modalRef.destroy()
});
} else {
this.service.request(this.service.$api_get_cancelAnOrder, { id: this.i?.id, ...this.sf.value }).subscribe(res => {
if (res) {
this.modalRef.close(true);
} else {
this.service.msgSrv.error(res.msg);
}
});
}
this.modalRef.close(true);
}
close(): void {
this.modalRef.destroy();
}
}

View File

@ -1,67 +1,53 @@
<!--
* @Author: your name
* @Date: 2021-12-14 14:03:07
* @LastEditTime: 2021-12-14 15:43:01
* @LastEditors: Please set LastEditors
* @Date: 2021-12-15 13:17:42
* @LastEditTime: 2021-12-20 20:56:54
* @LastEditors: your name
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\order-management\modal\bulk\update-freight\update-freight.component.html
* @FilePath: \tms-obc-web\src\app\routes\order-management\modal\vehicle\confir-receipt\confir-receipt.component.html
-->
<nz-alert
style="padding-bottom: 15px;"
nzType="warning"
nzCloseable
nzMessage="签收后不可再修改运费,请确保运费等信息准确无误后,再进行签收。"
style="padding-bottom: 15px"
nzType="warning"
nzCloseable
nzMessage="签收后不可再修改运费,请确保运费等信息准确无误后,再进行签收。"
></nz-alert>
<sv-container col="1">
<sv label="货物单价">
<span>
100元/吨
100元/方
100元/车</span>
</sv>
<sv label="结算依据">
<div style="display: flex; justify-content: space-between;">
<div>以发货为准 / 以收货为准</div>
<div>保留小数/抹除小数/抹除个数</div>
</div>
</sv>
</sv-container>
<sv-container col="2">
<sv label="装货重量">
<div>xx吨</div>
</sv>
<sv label="装货体积">
<div>xx吨</div>
</sv>
</sv-container>
<sv-container col="2">
<sv label="卸货重量">
<div>xx吨</div>
</sv>
<sv label="卸货体积">
<div>xx吨</div>
</sv>
</sv-container>
<sv-container col="1">
<sv label="总运费">
<div>1000元 </div>
<sv-container col="1">
<sv label="费用明细">
<st #st [widthMode]="{ type: 'strict' }" [data]="dataInfo" [columns]="columns" bordered="true" [page]="{ show: false }"></st>
</sv>
<sv label="司机车辆">
<div>张三 / 18888888888 / 粤GJ401</div>
</sv>
<sv label="收款人">
<div>李四 / 1888888888</div>
</sv>
<div>{{ i.driverName }} / {{ i.driverTelephone }} / {{ i.carNo }}</div>
</sv>
<sv label="收款人">
<div>{{ i.payeeName }} / {{ i.payeePhone }}</div>
</sv>
<sv label="回单凭证">
<!-- <app-imagelist
[imgList]="[userIdentityDetail?.certificatePhotoFrontWatermark,userIdentityDetail?.certificatePhotoBackWatermark]">
</app-imagelist> -->
<nz-upload
class="avatar-uploader"
[nzAction]="service.$api_upload_url"
[nzName]="'multipartFile'"
nzListType="picture-card"
[(nzFileList)]="listImagUrls"
[nzShowButton]="listImagUrls.length < 5"
[nzPreview]="handlePreview1"
[nzBeforeUpload]="beforeUpload"
(nzChange)="handleChange1($event)"
>
<div>
<i nz-icon nzType="plus"></i>
<div style="margin-top: 8px">请上传图片</div>
</div>
</nz-upload>
<nz-modal [nzVisible]="previewVisible1" [nzContent]="modalContent" [nzFooter]="null" (nzOnCancel)="previewVisible1 = false">
<ng-template #modalContent>
<img [src]="previewImage1" [ngStyle]="{ width: '100%' }" />
</ng-template>
</nz-modal>
</sv>
</sv-container>
<div class="modal-footer">
<button nz-button type="button" (click)="close()">关闭</button>
<button nz-button type="submit" nzType="primary" (click)="save()" [nzLoading]="http.loading"
>确认签收</button
>
<button nz-button type="submit" nzType="primary" (click)="save()" [nzLoading]="http.loading">确认签收</button>
</div>

View File

@ -1,12 +1,12 @@
import { preloaderFinished } from '@delon/theme';
/*
* @Author: your name
* @Date: 2021-12-14 14:03:07
* @LastEditTime: 2021-12-15 14:08:34
* @Date: 2021-12-15 13:17:42
* @LastEditTime: 2021-12-21 09:34:52
* @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\modal\bulk\update-freight\update-freight.component.ts
* @FilePath: \tms-obc-web\src\app\routes\order-management\modal\vehicle\confir-receipt\confir-receipt.component.ts
*/
import { Component, OnInit, ViewChild } from '@angular/core';
import {
SFComponent,
@ -18,10 +18,21 @@ import {
SFTextareaWidgetSchema,
SFUISchema
} from '@delon/form';
import { NzUploadChangeParam, NzUploadFile } from 'ng-zorro-antd/upload';
import { _HttpClient } from '@delon/theme';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalRef } from 'ng-zorro-antd/modal';
import { OrderManagementService } from '../../../services/order-management.service';
import { Observable, Observer } from 'rxjs';
import { STColumn } from '@delon/abc/st';
function getBase64(file: File): Promise<string | ArrayBuffer | null> {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => resolve(reader.result);
reader.onerror = error => reject(error);
});
}
@Component({
selector: 'app-order-management-vehicle-confir-receipt',
templateUrl: './confir-receipt.component.html',
@ -30,24 +41,130 @@ import { NzModalRef } from 'ng-zorro-antd/modal';
export class VehicleConfirReceiptComponent implements OnInit {
record: any = {};
i:any;
Status: any
columns!: STColumn[];
previewVisible1 = false;
dataInfo: any;
detailList: any
data: any = {};
constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public http: _HttpClient) {}
previewImage1 = '';
listImagUrls: any[] = [];
constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public http: _HttpClient,public service: OrderManagementService) {}
ngOnInit(): void {
this.initData()
}
save(): void {
// this.http.post(`/user/${this.record.id}`, value).subscribe(res => {
// this.msgSrv.success('保存成功');
// this.modal.close(true);
// });
this.service.request(this.service.$api_get_signWholeOrder, {id: this.i?.id}).subscribe((res: any) => {
console.log(res)
if(res) {
this.service.msgSrv.success('确认签收成功!')
} else {
this.service.msgSrv.error(res.msg)
}
})
}
handlePreview1 = async (file: NzUploadFile) => {
if (!file.url && !file.preview) {
file.preview = await getBase64(file.originFileObj!);
}
this.previewImage1 = file.url || file.preview;
this.previewVisible1 = true;
};
close(): void {
this.modal.destroy();
}
userAction() {
beforeUpload = (file: NzUploadFile, _fileList: NzUploadFile[]) => {
return new Observable((observer: Observer<boolean>) => {
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png' || file.type === 'image/gif' || file.type === 'image/bmp';
if (!isJpgOrPng) {
this.service.msgSrv.warning('只能上传图片!');
observer.complete();
return;
}
// tslint:disable-next-line: no-non-null-assertion
const isLt2M = file.size! / 1024 / 1024 < 3;
if (!isLt2M) {
this.service.msgSrv.warning('图片大小超过3兆!');
observer.complete();
return;
}
observer.next(isJpgOrPng && isLt2M);
observer.complete();
});
};
initData() {
// this.dataInfo = [
// {
// prePay: this.i?.mybidDetailInfo?.filter((data: any) => data.expenseCode === 'PRE')[0]?.price || 0,
// toPay: this.i?.mybidDetailInfo?.filter((data: any) => data.expenseCode === 'RECE')[0]?.price || 0,
// receiptPay: this.i?.mybidDetailInfo?.filter((data: any) => data.expenseCode === 'OIL')[0]?.price || 0,
// traiPrice: this.i?.mybidDetailInfo?.filter((data: any) => data.expenseName === '运输费')[0]?.price || 0
// }
// ];
// if (this.i?.receiptCertificate?.length > 0) {
// this.i?.receiptCertificate.forEach((element: any) => {
// const image = {
// url: element,
// status: 'done',
// uid: '-1'
// };
// this.listImagUrls.push(image);
// });
// }
// 大宗
this.service.request(this.service.$api_get_getWholeSignForDetail, {id: this.i?.id}).subscribe((res: any) => {
console.log(res)
this.dataInfo = res;
})
}
initST() {
this.columns = [
{
title: '预付',
index: 'prePay'
},
{
title: '到付',
index: 'toPay'
},
// {
// title: '油卡',
// index: 'name3'
// },
{
title: '回单付',
index: 'receiptPay'
},
{
title: '总运费',
index: 'traiPrice'
}
];
}
handleChange1(info: NzUploadChangeParam): void {
switch (info.file.status) {
case 'uploading':
break;
case 'done':
const resData = info.file.response.data;
const arr = [
{
url: resData.fullFilePath,
status: 'done',
uid: '-1'
}
];
this.listImagUrls = arr;
break;
case 'error':
this.service.msgSrv.error('网络错误');
break;
}
}
}

View File

@ -1,21 +1,21 @@
<!--
* @Author: your name
* @Date: 2021-12-14 15:53:03
* @LastEditTime: 2021-12-14 17:39:33
* @LastEditTime: 2021-12-20 19:53:23
* @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\modal\bulk\sure-depart\sure-depart.component.html
-->
<sf #sf mode="edit" [schema]="schema" [ui]="ui" [formData]="i" button="none">
<ng-template sf-template="no2" let-me let-ui="ui" let-schema="schema">
<sf #sf mode="edit" [schema]="schema" [ui]="ui" [formData]="formData" button="none">
<ng-template sf-template="weight" let-me let-ui="ui" let-schema="schema">
<div style="display: flex;">
<nz-input-number [(ngModel)]="data.place1" [nzMin]="1" [nzMax]="10" [nzStep]="1"></nz-input-number>
<nz-input-number [(ngModel)]="data.weight" [nzMin]="1" [nzMax]="10" [nzStep]="1"></nz-input-number>
<div class="left_btn"></div>
</div>
</ng-template>
<ng-template sf-template="no3" let-me let-ui="ui" let-schema="schema">
<ng-template sf-template="volume" let-me let-ui="ui" let-schema="schema">
<div style="display: flex;">
<nz-input-number [(ngModel)]="data.place2" [nzMin]="1" [nzMax]="10" [nzStep]="1"></nz-input-number>
<nz-input-number [(ngModel)]="data.volume" [nzMin]="1" [nzMax]="10" [nzStep]="1"></nz-input-number>
<div class="left_btn"></div>
</div>
</ng-template>

View File

@ -1,13 +1,6 @@
import { preloaderFinished } from '@delon/theme';
/*
* @Author: your name
* @Date: 2021-12-14 14:03:07
* @LastEditTime: 2021-12-20 16:21:19
* @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\modal\bulk\update-freight\update-freight.component.ts
*/
import { Component, OnInit, ViewChild } from '@angular/core';
import { DatePipe } from '@angular/common';
import {
SFComponent,
SFCustomWidgetSchema,
@ -20,151 +13,127 @@ import {
SFUISchema,
SFUploadWidgetSchema
} from '@delon/form';
import { apiConf } from '@conf/api.conf';
import { _HttpClient } from '@delon/theme';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalRef } from 'ng-zorro-antd/modal';
import { SupplyManagementService } from 'src/app/routes/supply-management/services/supply-management.service';
import { WaybillManagementServe } from 'src/app/routes/waybill-management/services/waybill-management.service';
import { Observable, Observer } from 'rxjs';
import { EAEnvironmentService } from '@shared';
@Component({
selector: 'app-order-management-vehicle-sure-arrive',
templateUrl: './sure-arrive.component.html',
styleUrls: ['./sure-arrive.component.less']
styleUrls: ['./sure-arrive.component.less'],
providers: [DatePipe]
})
export class VehicleSureArriveComponent implements OnInit {
record: any = {};
i: any;
formData: any;
Status: any;
data: any ={
place1: '',
place2: ''
weight: 0,
volume: 0
};
@ViewChild('sf', { static: false }) sf!: SFComponent;
schema: SFSchema = {};
ui: SFUISchema = {};
constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public http: _HttpClient, public service: SupplyManagementService ) {}
constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public http: _HttpClient, public service: WaybillManagementServe,private datePipe: DatePipe,private envSrv: EAEnvironmentService, ) {}
ngOnInit(): void {
console.log(this.i)
this.initData()
this.i.time = this.i.loadingTime;
this.initSF();
}
initSF() {
if(this.Status === 1) {
this.schema = {
properties: {
datetime: {
time: {
type: 'string',
title: '卸货时间',
format: 'date-time',
},
no2: {
type: 'string',
title: '卸货重量',
ui: {
widget: 'custom',
}
},
no3: {
type: 'string',
title: '卸货体积',
ui: {
widget: 'custom',
}
},
avatar: {
imgUrl3: {
type: 'string',
title: '装货凭证',
readOnly: true,
ui: {
action: `/scm/cms/cms/upload/multipartFile/fileModel`,
fileType: 'image/png,image/jpeg,image/jpg',
widget: 'upload',
action: apiConf.fileUpload,
fileType: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'url',
urlReName: 'url',
widget: 'upload',
descriptionI18n: ' 提单号',
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '提货单',
data: {
// appId: environment.appId,
appId: this.envSrv.env.appId,
},
name: 'multipartFile',
multiple: true,
listType: 'picture-card',
change: (args: any) => {
if (args.type === 'success') {
const avatar = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: args.fileList[0].response.url,
response: {
url: args.fileList[0].response.url
}
}
];
this.sf?.setValue('/avatar', avatar);
}
},
beforeUpload: (file: any, _fileList: any) => {
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt2M = file.size / 1024 / 1024 < 5;
if (!isLt2M) {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt2M);
observer.next(isLt1M);
observer.complete();
});
}
} as SFUploadWidgetSchema
},
avatar2: {
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
},
imgUrl4: {
type: 'string',
title: '',
readOnly: true,
ui: {
action: `/scm/cms/cms/upload/multipartFile/fileModel`,
fileType: 'image/png,image/jpeg,image/jpg',
widget: 'upload',
action: apiConf.fileUpload,
fileType: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'url',
urlReName: 'url',
widget: 'upload',
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '人车货照片',
data: {
// appId: environment.appId,
appId: this.envSrv.env.appId,
},
name: 'multipartFile',
multiple: true,
listType: 'picture-card',
change: (args: any) => {
if (args.type === 'success') {
const avatar = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: args.fileList[0].response.url,
response: {
url: args.fileList[0].response.url
}
}
];
this.sf?.setValue('/avatar', avatar);
}
},
beforeUpload: (file: any, _fileList: any) => {
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt2M = file.size / 1024 / 1024 < 5;
if (!isLt2M) {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt2M);
observer.next(isLt1M);
observer.complete();
});
}
} as SFUploadWidgetSchema
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
},
no4: {
type: 'string',
@ -174,124 +143,365 @@ export class VehicleSureArriveComponent implements OnInit {
},
default: '单张大小不超过5M支持.jpg、.jpeg和 .png格式',
},
avatar3: {
imgUrl1: {
type: 'string',
title: '卸货凭证',
ui: {
action: `/scm/cms/cms/upload/multipartFile/fileModel`,
fileType: 'image/png,image/jpeg,image/jpg',
widget: 'upload',
action: apiConf.fileUpload,
fileType: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'url',
urlReName: 'url',
widget: 'upload',
descriptionI18n: ' 提单号',
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '提货单',
data: {
// appId: environment.appId,
appId: this.envSrv.env.appId,
},
name: 'multipartFile',
multiple: true,
listType: 'picture-card',
change: (args: any) => {
if (args.type === 'success') {
const avatar = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: args.fileList[0].response.url,
response: {
url: args.fileList[0].response.url
}
}
];
this.sf?.setValue('/avatar', avatar);
}
},
beforeUpload: (file: any, _fileList: any) => {
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt2M = file.size / 1024 / 1024 < 5;
if (!isLt2M) {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt2M);
observer.next(isLt1M);
observer.complete();
});
}
} as SFUploadWidgetSchema
},
avatar4: {
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
},
imgUrl2: {
type: 'string',
title: '',
ui: {
action: `/scm/cms/cms/upload/multipartFile/fileModel`,
fileType: 'image/png,image/jpeg,image/jpg',
widget: 'upload',
action: apiConf.fileUpload,
fileType: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'url',
urlReName: 'url',
widget: 'upload',
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '人车货照片',
data: {
// appId: environment.appId,
appId: this.envSrv.env.appId,
},
name: 'multipartFile',
multiple: true,
listType: 'picture-card',
change: (args: any) => {
if (args.type === 'success') {
const avatar = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: args.fileList[0].response.url,
response: {
url: args.fileList[0].response.url
}
}
];
this.sf?.setValue('/avatar', avatar);
}
},
beforeUpload: (file: any, _fileList: any) => {
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt2M = file.size / 1024 / 1024 < 5;
if (!isLt2M) {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt2M);
observer.next(isLt1M);
observer.complete();
});
}
} as SFUploadWidgetSchema
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
}
},
required: ['reason']
required: ['time']
};
}else {
this.schema = {
properties: {
time: {
type: 'string',
title: '卸货时间',
format: 'date-time',
},
weight: {
type: 'string',
title: '卸货重量',
ui: {
widget: 'custom',
}
},
volume: {
type: 'string',
title: '卸货体积',
ui: {
widget: 'custom',
}
},
imgUrl3: {
type: 'string',
title: '装货凭证',
readOnly: true,
ui: {
widget: 'upload',
action: apiConf.fileUpload,
fileType: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '提货单',
data: {
appId: this.envSrv.env.appId,
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
},
imgUrl4: {
type: 'string',
title: '',
readOnly: true,
ui: {
widget: 'upload',
action: apiConf.fileUpload,
fileType: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '人车货照片',
data: {
appId: this.envSrv.env.appId,
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
},
no4: {
type: 'string',
title: '',
ui: {
widget: 'text',
},
default: '单张大小不超过5M支持.jpg、.jpeg和 .png格式',
},
imgUrl1: {
type: 'string',
title: '卸货凭证',
ui: {
widget: 'upload',
action: apiConf.fileUpload,
fileType: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '提货单',
data: {
appId: this.envSrv.env.appId,
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
},
imgUrl2: {
type: 'string',
title: '',
ui: {
widget: 'upload',
action: apiConf.fileUpload,
fileType: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '人车货照片',
data: {
appId: this.envSrv.env.appId,
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
}
},
required: ['time', 'weight' ]
};
}
this.ui = {
'*': {
spanLabelFixed: 100,
grid: { span: 20 }
},
$avatar: { grid: { span: 12} },
$avatar2: { grid: { span: 12} },
$avatar3: { grid: { span: 12} },
$avatar4: { grid: { span: 12} },
$imgUrl1: { grid: { span: 12} },
$imgUrl2: { grid: { span: 12} },
$imgUrl3: { grid: { span: 12} },
$imgUrl4: { grid: { span: 12} },
};
}
save(value: any): void {
if(this.Status === 1) {
if(!value.time) {
this.service.msgSrv.warning('必填项为空!')
return;
}
const params = {
id: this.i.id,
imgUrl1: value.imgUrl1.data.fullFilePath,
imgUrl2: value.imgUrl2.data.fullFilePath,
time: value.time,
}
params.time = this.datePipe.transform(value.time, 'yyyy-MM-dd HH:mm:ss ')
this.service.request(this.service.$api_get_insertWholeUnloadCarInfo, params).subscribe((res) => {
if(res) {
this.service.msgSrv.success('确认到车成功!')
this.modal.destroy();
} else{
this.service.msgSrv.error(res.msg)
}
})
} else {
if(!value.time || !this.data.weight) {
this.service.msgSrv.warning('必填项为空!')
return;
}
console.log(value)
// this.http.post(`/user/${this.record.id}`, value).subscribe(res => {
// this.msgSrv.success('保存成功');
// this.modal.close(true);
// });
console.log(this.i)
const params = {
id: this.i?.id,
imgUrl1: value.imgUrl1.data.fullFilePath,
imgUrl2: value.imgUrl2.data.fullFilePath,
time: value.time,
volume: this.data.volume,
weight: this.data.weight
}
params.time = this.datePipe.transform(value.time, 'yyyy-MM-dd HH:mm:ss ')
console.log(params)
this.service.request(this.service.$api_get_insertBulkUnloadCarInfo, params).subscribe((res) => {
if(res) {
this.service.msgSrv.success('确认到车成功!')
this.modal.destroy();
} else{
this.service.msgSrv.error(res.msg)
}
})
}
}
// 确认到车界面信息(两个只能看的图片)
initData() {
this.service.request(this.service.$api_get_getUnloadCarInfo, { id : this.i?.id}).subscribe((res) => {
console.log(res)
if (res.imgUrl1) {
this.formData = {
imgUrl3: [
{
uid: 'logo',
name: 'LOGO',
status: 'done',
url: res.imgUrl1,
response: {
url: res.imgUrl1,
},
},
],
imgUrl4: [
{
uid: 'logo',
name: 'LOGO',
status: 'done',
url: res.imgUrl2,
response: {
url: res.imgUrl2,
},
},
],
};
}
})
}
close(): void {
this.modal.destroy();
}

View File

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-12-14 15:53:03
* @LastEditTime: 2021-12-20 16:28:39
* @LastEditTime: 2021-12-20 19:03: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\modal\bulk\sure-depart\sure-depart.component.html

View File

@ -1,12 +1,4 @@
import { preloaderFinished } from '@delon/theme';
/*
* @Author: your name
* @Date: 2021-12-14 14:03:07
* @LastEditTime: 2021-12-20 16:54: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\modal\bulk\update-freight\update-freight.component.ts
*/
import { Component, OnInit, ViewChild } from '@angular/core';
import {
SFComponent,
@ -27,11 +19,13 @@ import { NzModalRef } from 'ng-zorro-antd/modal';
import { Observable, Observer } from 'rxjs';
import { WaybillManagementServe } from 'src/app/routes/waybill-management/services/waybill-management.service';
import { EAEnvironmentService, EADateUtil } from '@shared';
import { DatePipe } from '@angular/common';
@Component({
selector: 'app-order-management-vehicle-sure-depart',
templateUrl: './sure-depart.component.html',
styleUrls: ['./sure-depart.component.less']
styleUrls: ['./sure-depart.component.less'],
providers: [DatePipe]
})
export class VehicleSureDepartComponent implements OnInit {
record: any = {};
@ -44,24 +38,31 @@ export class VehicleSureDepartComponent implements OnInit {
@ViewChild('sf', { static: false }) sf!: SFComponent;
schema: SFSchema = {};
ui: SFUISchema = {};
constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public http: _HttpClient, public service: WaybillManagementServe, private envSrv: EAEnvironmentService,) {}
constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public http: _HttpClient, public service: WaybillManagementServe, private envSrv: EAEnvironmentService,private datePipe: DatePipe) {}
ngOnInit(): void {
this.initSF();
console.log(this.i)
this.data.weight = this.i?.weight
this.i.time = this.i.loadingTime;
console.log(this.Status)
}
initSF() {
if(this.Status === 1) {
this.schema = {
properties: {
datetime: {
time: {
type: 'string',
title: '装货时间',
format: 'date-time',
},
no4: {
type: 'string',
title: '',
ui: {
widget: 'text',
},
default: '单张大小不超过5M支持.jpg、.jpeg和 .png格式',
},
imgUrl1: {
type: 'string',
title: '装货凭证',
@ -252,7 +253,7 @@ export class VehicleSureDepartComponent implements OnInit {
} as SFUploadWidgetSchema,
}
},
required: ['reason']
required: ['time', 'weight']
};
}
@ -266,7 +267,31 @@ export class VehicleSureDepartComponent implements OnInit {
};
}
save(value: any): void {
if(this.Status === 1) {
if(!value.time) {
this.service.msgSrv.warning('必填项为空!')
return;
}
const params = {
id: this.i.id,
imgUrl1: value.imgUrl1.data.fullFilePath,
imgUrl2: value.imgUrl2.data.fullFilePath,
time: value.time,
}
params.time = this.datePipe.transform(value.time, 'yyyy-MM-dd HH:mm:ss ')
this.service.request(this.service.$api_get_insertWholeStartCarInfo, params).subscribe((res) => {
if(res) {
this.service.msgSrv.success('确认发车成功!')
this.modal.destroy();
} else{
this.service.msgSrv.error(res.msg)
}
})
} else {
if(!value.time || !this.data.weight) {
this.service.msgSrv.warning('必填项为空!')
return;
}
console.log(value)
const params = {
id: this.i.id,
@ -276,17 +301,17 @@ export class VehicleSureDepartComponent implements OnInit {
volume: this.data.volume,
weight: this.data.weight
}
console.log(EADateUtil.yearToDateTime(value.time))
params.time = EADateUtil.yearToDateTime(value.time)
console.log(params)
params.time = this.datePipe.transform(value.time, 'yyyy-MM-dd HH:mm:ss ')
this.service.request(this.service.$api_get_insertBulkStartCarInfo, params).subscribe((res) => {
if(res) {
this.service.msgSrv.success('确认发车成功!')
this.modal.destroy();
} else{
this.service.msgSrv.error(res.msg)
}
})
}
// this.service.request(this.service.$api_get_insertBulkStartCarInfo, params).subscribe((res) => {
// if(res) {
// this.service.msgSrv.success('确认发车成功!')
// } else{
// this.service.msgSrv.error(res.msg)
// }
// })
}
close(): void {

View File

@ -2,7 +2,7 @@ import { preloaderFinished } from '@delon/theme';
/*
* @Author: your name
* @Date: 2021-12-14 14:03:07
* @LastEditTime: 2021-12-20 15:57:37
* @LastEditTime: 2021-12-20 17:57:19
* @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\modal\bulk\update-freight\update-freight.component.ts
@ -43,6 +43,7 @@ export class VehicleUpdateFreightComponent implements OnInit {
constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public service: OrderManagementService) {}
ngOnInit(): void {
console.log(this.record)
this.i = {
prePay: this.record?.mybidDetailInfo?.filter((data: any) => data.expenseCode === 'PRE')[0]?.price || 0,
toPay: this.record?.mybidDetailInfo?.filter((data: any) => data.expenseCode === 'RECE')[0]?.price || 0,
@ -53,6 +54,11 @@ export class VehicleUpdateFreightComponent implements OnInit {
oilCardPayStatus: this.record?.mybidDetailInfo?.filter((data: any) => data.expenseCode === 'OIL')[0]?.paymentStatus,
receiptPayStatus: this.record?.mybidDetailInfo?.filter((data: any) => data.expenseCode === 'BACK')[0]?.paymentStatus
};
this.record.list.forEach((element: any) => {
if(element.costCode === 'PRE') {
}
});
this.tranPrice = this.i.prePay + this.i.toPay + this.i.oilCardPay + this.i.receiptPay;
this.totalPrice = this.i.prePay + this.i.toPay + this.i.oilCardPay + this.i.receiptPay + this.otherPrice;
this.initSF();
@ -69,7 +75,7 @@ export class VehicleUpdateFreightComponent implements OnInit {
type: 'number',
title: '预付',
default: 0.0,
readOnly: this.i.prePayStatus !== '3',
readOnly: this.i.prePayStatus === '2',
ui: {
prefix: '¥',
widgetWidth: 200,
@ -81,7 +87,19 @@ export class VehicleUpdateFreightComponent implements OnInit {
type: 'number',
title: '到付',
default: 0.0,
readOnly: this.i.toPayStatus !== '3',
readOnly: this.i.toPayStatus === '2',
ui: {
prefix: '¥',
widgetWidth: 200,
precision: 2,
change: (val: any) => this.changeNumVal()
} as SFNumberWidgetSchema
},
oilCardPay: {
type: 'number',
title: '油卡',
default: 0.0,
readOnly: this.i.oilCardPayStatus === '1' || this.i.oilCardPayStatus === '3',
ui: {
prefix: '¥',
widgetWidth: 200,
@ -89,23 +107,11 @@ export class VehicleUpdateFreightComponent implements OnInit {
change: (val: any) => this.changeNumVal()
} as SFNumberWidgetSchema
},
// oilCardPay: {
// type: 'number',
// title: '油卡',
// default: 0.0,
// readOnly: this.i.oilCardPayStatus === '1' || this.i.oilCardPayStatus === '3',
// ui: {
// prefix: '¥',
// widgetWidth: 200,
// precision: 2,
// change: (val: any) => this.changeNumVal()
// } as SFNumberWidgetSchema
// },
receiptPay: {
type: 'number',
title: '回单付',
default: 0.0,
readOnly: this.i.receiptPayStatus !== '3',
readOnly: this.i.receiptPayStatus === '2',
ui: {
prefix: '¥',
widgetWidth: 200,
@ -133,7 +139,9 @@ export class VehicleUpdateFreightComponent implements OnInit {
};
}
save(value: any): void {
const editItems = this.record?.mybidDetailInfo.filter((data: any) => data.receiptPayStatus === '3');
console.log(this.record?.mybidDetailInfo)
console.log(this.sf.value)
const editItems = this.record?.mybidDetailInfo.filter((data: any) => data.receiptPayStatus !== '2');
editItems.forEach((item: any) => {
switch (item.expenseName) {
case '预付':
@ -155,14 +163,14 @@ export class VehicleUpdateFreightComponent implements OnInit {
dtos: editItems,
changeCause: this.sf.value.changeCause
};
// this.service.request(this.service.$api_insertFreightChangeWhole, params).subscribe((res: any) => {
// if (res) {
// this.modal.destroy();
// } else {
// this.service.msgSrv.error(res.msg);
// }
// });
console.log(params)
this.service.request(this.service.$api_get_insertFreightChangeWhole, params).subscribe((res: any) => {
if (res) {
this.modal.destroy();
} else {
this.service.msgSrv.error(res.msg);
}
});
}
close(): void {

View File

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-12-03 15:31:52
* @LastEditTime: 2021-12-15 14:09:53
* @LastEditTime: 2021-12-21 10:16:11
* @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\order-management.module.ts
@ -24,6 +24,7 @@ import { ConfirReceiptComponent } from './modal/bulk/confir-receipt/confir-recei
import { SureArriveComponent } from './modal/bulk/sure-arrive/sure-arrive.component';
import { SureDepartComponent } from './modal/bulk/sure-depart/sure-depart.component';
import { UpdateFreightComponent } from './modal/bulk/update-freight/update-freight.component';
import { OneCarOrderCancelComponent } from './modal/vehicle/cancel/cancel.component';
import { VehicleConfirReceiptComponent } from './modal/vehicle/confir-receipt/confir-receipt.component';
import { VehicleSureArriveComponent } from './modal/vehicle/sure-arrive/sure-arrive.component';
import { VehicleSureDepartComponent } from './modal/vehicle/sure-depart/sure-depart.component';
@ -49,7 +50,8 @@ const COMPONENTS: Type<void>[] = [
VehicleConfirReceiptComponent,
VehicleSureDepartComponent,
VehicleSureArriveComponent,
OrderManagementRiskDetailComponent
OrderManagementRiskDetailComponent,
OneCarOrderCancelComponent
];
@NgModule({

View File

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-12-03 15:31:52
* @LastEditTime: 2021-12-20 15:30:26
* @LastEditTime: 2021-12-21 09:37:07
* @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\services\order-management.service.ts
@ -45,6 +45,30 @@ export class OrderManagementService extends BaseService {
$api_get_getFreightChangeWholeDetail = `/api/sdc/billFreightChangeApplication/getFreightChangeWholeDetail`;
// 订单申请撤销
$api_get_revokeChangeRecord = `/api/sdc/billFreightChangeApplication/revokeChangeRecord`;
// 运费变更申请-整车
$api_get_insertFreightChangeWhole = `/api/sdc/billFreightChangeApplication/insertFreightChangeWhole`;
// 取消订单
$api_get_cancelAnOrder = `/api/sdc/billOperate/cancelAnOrder`;
// 批量签收整车订单
$api_get_batchSignWholeOrder = `/api/sdc/billOperate/batchSignWholeOrder`;
// 批量签收大宗订单
$api_get_batchSignBulkOrder = `/api/sdc/billOperate/batchSignBulkOrder`;
// 大宗签收详情
$api_get_getBulkSignForDetail = `/api/sdc/billOperate/getBulkSignForDetail`;
// 整车签收详情
$api_get_getWholeSignForDetail = `/api/sdc/billOperate/getWholeSignForDetail`;
// 确认签收大宗订单
$api_get_signBulkOrder = `/api/sdc/billOperate/signBulkOrder`;
// 确认签收整车订单
$api_get_signWholeOrder = `/api/sdc/billOperate/signWholeOrder`;
// 上传图片
public $api_upload_url = `/api/mdc/pbc/upload/multipartFile/file`;
// 根据用户id查用户信息注意nickName才是用户名称
public $api_getUserDetailByAppUserId = `/cuc/user/getUserDetailByAppUserId`;
// 根据车辆id查车辆信息
public $api_getCarLicenseByIds = `/cuc/carLicense/getCarLicenseByIds`;
// 统计货源状态数量
public $api_statisticalStatus = `/api/sdc/billOperate/statisticalStatus`;
constructor(public injector: Injector) {
super(injector)
}

View File

@ -821,7 +821,7 @@ export class SupplyManagementOnecarPublishComponent implements OnInit {
maxCube: res?.goodsInfoVOList[0]?.maxCube?.split(',') ,
maxWeight: res?.goodsInfoVOList[0]?.maxWeight?.split(',') ,
number: res?.goodsInfoVOList[0]?.number ,
goodsType: res?.goodsInfoVOList[0]?.goodsType ,
goodsTypeName: res?.goodsInfoVOList[0]?.goodsTypeName ,
modifyUserId: res?.goodsInfoVOList[0]?.modifyUserId ,
resourceId: res?.goodsInfoVOList[0]?.resourceId ,
rule: res?.goodsInfoVOList[0]?.rule ,

View File

@ -6,6 +6,8 @@ import { ShipperBaseService } from '@shared';
import { NzModalService } from 'ng-zorro-antd/modal';
import { of } from 'rxjs';
import { map } from 'rxjs/operators';
import { VehicleSureArriveComponent } from 'src/app/routes/order-management/modal/vehicle/sure-arrive/sure-arrive.component';
import { VehicleSureDepartComponent } from 'src/app/routes/order-management/modal/vehicle/sure-depart/sure-depart.component';
import { WaybillManagementServe } from '../../services/waybill-management.service';
@ -333,6 +335,14 @@ tabs = {
text: '查看评价',
click: (_record) => this.viewEvaluate(_record),
},
{
text: '确认发车',
click: (_record) => this.sureDepart(_record),
},
{
text: '确认到车',
click: (_record) => this.sureArrive(_record),
},
],
},
];
@ -511,4 +521,31 @@ tabs = {
}
})
}
// *确认发车
sureDepart(item: any) {
const modalRef = this.modal.create({
nzTitle: '确认发车',
nzWidth: '50%',
nzContent: VehicleSureDepartComponent,
nzComponentParams: {
i: item,
Status: 1
},
nzFooter: null
});
}
// 确认到车
sureArrive(item: any) {
const modalRef = this.modal.create({
nzTitle: '确认到车',
nzWidth: '50%',
nzContent: VehicleSureArriveComponent,
nzComponentParams: {
i: item,
Status: 1
},
nzFooter: null
});
}
}

View File

@ -2,7 +2,7 @@ import { WaybillManagementBulkComponent } from './../components/bulk/bulk.compon
/*
* @Author: your name
* @Date: 2021-12-07 14:52:29
* @LastEditTime: 2021-12-18 16:06:43
* @LastEditTime: 2021-12-20 19:17:22
* @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\waybill-management\services\waybill-management.service.ts
@ -39,7 +39,14 @@ export class WaybillManagementServe extends BaseService {
// 大宗确认发车
$api_get_insertBulkStartCarInfo= `/api/sdc/wayBillOperate/insertBulkStartCarInfo`;
// 整车确认发车
$api_get_insertWholeStartCarInfo= `/api/sdc/wayBillOperate/insertWholeStartCarInfo`;
// 整车确认到车
$api_get_insertWholeUnloadCarInfo = `/api/sdc/wayBillOperate/insertWholeUnloadCarInfo`;
// 大宗确认到车
$api_get_insertBulkUnloadCarInfo = `/api/sdc/wayBillOperate/insertBulkUnloadCarInfo`;
// 确认到车界面信息(两个只能看的图片)
$api_get_getUnloadCarInfo = `/api/sdc/wayBillOperate/getUnloadCarInfo`;
constructor(public injector: Injector) {
super(injector)
}