Files
bbq/src/app/routes/waybill-management/components/bulk/bulk.component.ts
Taric Xin ca11cf85f4 edit
2022-04-25 10:29:41 +08:00

392 lines
11 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { Component, OnInit, ViewChild } from '@angular/core';
import { STColumn, STComponent } from '@delon/abc/st';
import { SFComponent, SFDateWidgetSchema, SFSchema, SFSchemaEnum, SFSelectWidgetSchema, SFUISchema } from '@delon/form';
import { ModalHelper, _HttpClient } from '@delon/theme';
import { SearchDrawerService, ShipperBaseService } from '@shared';
import { NzModalService } from 'ng-zorro-antd/modal';
import { of } from 'rxjs';
import { map } from 'rxjs/operators';
import { BasicTableComponent } from 'src/app/routes/commom';
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';
@Component({
selector: 'app-supply-management-bulk',
templateUrl: './bulk.component.html',
styleUrls: ['../../../commom/less/commom-table.less','./bulk.component.less']
})
export class WaybillManagementBulkComponent extends BasicTableComponent implements OnInit {
uiView: SFUISchema = {};
schemaView: SFSchema = {};
@ViewChild('st') private readonly st!: STComponent;
columns: STColumn[] = [];
resourceStatus: any;
tabs = {
signQuantity: 0,
cancelQuantity: 0,
receivedQuantity: 0,
totalQuantity: 0,
compolatelQuantity: 0,
deltQuantity: 0
};
constructor(
public service: WaybillManagementServe,
private modal: NzModalService,
public shipperservice: ShipperBaseService,
public searchDrawerService: SearchDrawerService
) {
super(searchDrawerService);
}
/**
* 查询参数
*/
get reqParams() {
const a: any = {};
if (this.resourceStatus) {
a.wayBillStatus = this.resourceStatus;
}
const params: any = Object.assign({}, this.sf?.value || {});
delete params._$expand;
return {
...a,
...params,
createTime: {
start: this.sf?.value?.createTime?.[0] || '',
end: this.sf?.value?.createTime?.[1] || ''
}
};
}
get selectedRows() {
return this.st?.list.filter(item => item.checked) || [];
}
ngOnInit(): void {
this.initSF();
this.initST();
this.getGoodsSourceStatistical();
}
/**
* 初始化查询表单
*/
initSF() {
this.schema = {
properties: {
_$expand: { type: 'boolean', ui: { hidden: true } },
wayBillCode: {
type: 'string',
title: '运单号',
ui: {
placeholder: '最多100个运单空号隔开'
}
},
billCode: {
type: 'string',
title: '订单号',
ui: {
placeholder: '最多100个单号空号隔开'
}
},
resourceCode: {
type: 'string',
title: '货源编号'
},
shipperAppUserId: {
type: 'string',
title: '货主',
ui: {
widget: 'select',
serverSearch: true,
searchDebounceTime: 300,
searchLoadingText: '搜索中...',
allowClear: true,
onSearch: (q: any) => {
console.log(q);
let str = q.replace(/^\s+|\s+$/g, '');
if (str) {
return this.service
.request(this.service.$api_enterpriceList, { enterpriseName: str })
.pipe(map((res: any) => (res as any[]).map(i => ({ label: i.enterpriseName, value: i.id } as SFSchemaEnum))))
.toPromise();
} else {
return of([]);
}
}
} as SFSelectWidgetSchema
},
loadingPlace: {
type: 'string',
title: '装货地'
},
dischargePlace: {
type: 'string',
title: '卸货地'
},
driverName: {
title: '承运司机',
type: 'string'
},
licenseCarNo: {
title: '车牌号',
type: 'string'
},
carCaptainName: {
title: '车队长',
type: 'string'
},
paymentstatus: {
title: '支付状态',
type: 'string',
ui: {
widget: 'dict-select',
params: { dictKey: 'overall:payment:status' },
containsAllLabel: true
} as SFSelectWidgetSchema
},
serviceType: {
title: '服务类型',
type: 'string',
ui: {
widget: 'dict-select',
containsAllLabel: true,
params: { dictKey: 'service:type' }
} as SFSelectWidgetSchema
},
riskStatus: {
type: 'string',
title: '是否风险单',
enum: [
{ label: '全部', value: '' },
{ label: '是', value: '3' },
{ label: '否', value: '1' }
],
ui: {
widget: 'select',
allowClear: true,
placeholder: '请选择'
}
},
enterpriseInfoId: {
type: 'string',
title: '网络货运人',
ui: {
widget: 'select',
placeholder: '请选择',
allowClear: true,
asyncData: () => this.shipperservice.getNetworkFreightForwarder()
}
},
createTime: {
title: '创建时间',
type: 'string',
ui: {
widget: 'date',
mode: 'range',
format: 'yyyy-MM-dd',
allowClear: true
} as SFDateWidgetSchema
}
},
type: 'object'
};
}
/**
* 初始化数据列表
*/
initST() {
this.columns = [
{ title: '', type: 'checkbox', fixed: 'left', width: '50px', className: 'text-center' },
{
title: '运单号',
width: '180px',
fixed: 'left',
className: 'text-left',
render: 'wayBillCode'
},
{
title: '运费明细',
width: '250px',
className: 'text-right',
render: 'billExpenseDetails'
},
{ title: '录单员', render: 'createUserName', width: '200px', className: 'text-left' },
{ title: '网络货运人', index: 'enterpriseInfoName', width: '220px', className: 'text-left' },
{ title: '货主', index: 'shipperAppUserName', width: '180px', className: 'text-left' },
{ title: '关联订单号', index: 'billCode', width: '180px', className: 'text-left' },
{ title: '货源编号', index: 'resourceCode', width: '180px', className: 'text-left' },
{ title: '装货地', index: 'loadingPlace', width: '220px', className: 'text-left' },
{
title: '卸货地',
className: 'text-left',
width: '220px',
index: 'dischargePlace'
},
{
title: '货物信息',
className: 'text-left',
width: '250px',
render: 'goodsInfos'
},
{
title: '运费单价',
className: 'text-right',
width: '150px',
render: 'freightPrice'
},
{
title: '接单数量',
index: 'orderReceivingQuantity',
width: '200px',
className: 'text-left'
},
{
title: '结算数量',
index: '结算数量',
width: '200px',
className: 'text-left',
format: (item: any) => `${item.settlementWeight || ''}`
},
{
title: '承运司机',
className: 'text-left',
width: '250px',
render: 'driverName'
},
{
title: '车队长',
className: 'text-left',
width: '200px',
render: 'payeeName'
},
{
title: '装卸货时间',
className: 'text-left',
width: '200px',
render: 'loadingTime'
},
{
title: '创建时间',
width: '180px',
className: 'text-left',
index: 'createTime'
},
{
title: '操作',
fixed: 'right',
width: '110px',
className: 'text-center',
buttons: [
{
text: '确认发车',
click: _record => this.sureDepart(_record),
iif: item => item.wayBillStatus == '2',
acl: { ability: ['WAYBILL-BULK-insertBulkStartCarInfo'] }
},
{
text: '确认到车',
click: _record => this.sureArrive(_record),
iif: item => item.wayBillStatus == '3',
acl: { ability: ['WAYBILL-BULK-insertBulkUnloadCarInfo'] }
}
]
}
];
}
search() {
this.st?.load(1);
this.getGoodsSourceStatistical();
}
selectChange(e: number) {
if (e >= 1) {
this.resourceStatus = e + 1;
} else {
this.resourceStatus = 0;
}
this.initST();
setTimeout(() => {
this.st.load(1);
}, 500);
}
getGoodsSourceStatistical() {
this.tabs = {
signQuantity: 0,
cancelQuantity: 0,
receivedQuantity: 0,
totalQuantity: 0,
compolatelQuantity: 0,
deltQuantity: 0
};
const params: any = Object.assign({}, this.reqParams || {});
delete params.wayBillStatus;
this.service.request(this.service.$api_get_getBulkStatistics, params).subscribe(res => {
if (res) {
let totalCount = 0;
res.forEach((ele: any) => {
switch (ele.wayBillStatus) {
case '2':
this.tabs.receivedQuantity = ele?.count;
break;
case '3':
this.tabs.cancelQuantity = ele?.count;
break;
case '4':
this.tabs.signQuantity = ele?.count;
break;
case '5':
this.tabs.compolatelQuantity = ele?.count;
break;
case '6':
this.tabs.deltQuantity = ele?.count;
break;
}
totalCount += ele.count;
});
this.tabs.totalQuantity = totalCount;
}
});
}
// *确认发车
sureDepart(item: any) {
const modalRef = this.modal.create({
nzTitle: '确认发车',
nzWidth: '50%',
nzContent: VehicleSureDepartComponent,
nzComponentParams: {
i: item,
Status: 2
},
nzFooter: null
});
modalRef.afterClose.subscribe((result: any) => {
this.st.load(1);
this.getGoodsSourceStatistical();
});
}
// 确认到车
sureArrive(item: any) {
const modalRef = this.modal.create({
nzTitle: '确认到车',
nzWidth: '50%',
nzContent: VehicleSureArriveComponent,
nzComponentParams: {
i: item,
Status: 2
},
nzFooter: null
});
modalRef.afterClose.subscribe((result: any) => {
this.st.load(1);
this.getGoodsSourceStatistical();
});
}
// 导出
exprot() {
this.service.exportStart(this.reqParams, this.service.$api_asyncExportBulkList);
}
}