Files
bbq/src/app/routes/waybill-management/components/bulk/bulk.component.ts
wangshiming 9fefb78dd8 fix bug
2022-04-06 15:41:23 +08:00

486 lines
13 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 { 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';
@Component({
selector: 'app-supply-management-bulk',
templateUrl: './bulk.component.html',
styleUrls: ['./bulk.component.less']
})
export class WaybillManagementBulkComponent implements OnInit {
ui: SFUISchema = {};
uiView: SFUISchema = {};
schema: SFSchema = {};
schemaView: SFSchema = {};
isVisibleEvaluate = false;
_$expand = false;
@ViewChild('st') private readonly st!: STComponent;
@ViewChild('sf', { static: false }) sf!: SFComponent;
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) { }
/**
* 查询参数
*/
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,
visibleIf: {
_$expand: (value: boolean) => value
},
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: '装货地',
ui: {
visibleIf: {
_$expand: (value: boolean) => value,
},
}
},
dischargePlace: {
type: 'string',
title: '卸货地',
ui: {
visibleIf: {
_$expand: (value: boolean) => value,
},
}
},
driverName: {
title: '承运司机',
type: 'string',
ui: {
visibleIf: {
_$expand: (value: boolean) => value
}
}
},
licenseCarNo: {
title: '车牌号',
type: 'string',
ui: {
visibleIf: {
_$expand: (value: boolean) => value
}
}
},
carCaptainName: {
title: '车队长',
type: 'string',
ui: {
visibleIf: {
_$expand: (value: boolean) => value,
},
}
},
paymentstatus: {
title: '支付状态',
type: 'string',
ui: {
widget: 'dict-select',
params: { dictKey: 'overall:payment:status' },
containsAllLabel: true,
visibleIf: {
_$expand: (value: boolean) => value,
},
} as SFSelectWidgetSchema,
},
serviceType: {
title: '服务类型',
type: 'string',
ui: {
widget: 'dict-select',
containsAllLabel: true,
params: { dictKey: 'service:type' },
visibleIf: {
_$expand: (value: boolean) => value
}
} as SFSelectWidgetSchema
},
riskStatus: {
type: 'string',
title: '是否风险单',
enum: [
{ label: '全部', value: '' },
{ label: '是', value: '3' },
{ label: '否', value: '1' }
],
ui: {
widget: 'select',
allowClear: true,
placeholder: '请选择',
visibleIf: {
_$expand: (value: boolean) => value,
},
},
},
enterpriseInfoId: {
type: 'string',
title: '网络货运人',
ui: {
widget: 'select',
placeholder: '请选择',
visibleIf: {
_$expand: (value: boolean) => value,
},
allowClear: true,
asyncData: () => this.shipperservice.getNetworkFreightForwarder(),
},
},
createTime: {
title: '创建时间',
type: 'string',
ui: {
widget: 'date',
mode: 'range',
format: 'yyyy-MM-dd',
allowClear: true,
visibleIf: {
_$expand: (value: boolean) => value,
},
} as SFDateWidgetSchema,
},
},
type: 'object',
};
this.ui = { '*': { spanLabelFixed: 110, grid: { span: 8, gutter: 4 } } };
}
/**
* 初始化数据列表
*/
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()
}
/**
* 查询字段个数
*/
get queryFieldCount(): number {
return Object.keys(this.schema?.properties || {}).length;
}
/**
* 伸缩查询条件
*/
expandToggle(): void {
this._$expand = !this._$expand;
this.sf?.setValue('/_$expand', this._$expand);
}
tabChange(item: any) {
console.log(item)
}
/**
* 重置表单
*/
resetSF(): void {
this.sf.reset();
this._$expand = false;
}
selectChange(e: number) {
console.log(e);
if (e >= 1) {
this.resourceStatus = e + 1;
} else {
this.resourceStatus = 0
}
this.initST();
setTimeout(() => {
this.st.load(1);
}, 500);
}
/**
* 导入货源
*/
importGoodsSource() {
}
audit(item: any) {
console.log(item)
}
/**
* 审核通过按钮
*/
handleOK() {
}
/**
*查看评价
*/
viewEvaluate(item: any) {
console.log(item)
this.isVisibleEvaluate = true
}
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.asyncExport(this.reqParams,this.service.$api_asyncExportBulkList)
}
}