306 lines
8.3 KiB
TypeScript
306 lines
8.3 KiB
TypeScript
import { ChangeDetectionStrategy, Component, OnInit, ViewChild } from '@angular/core';
|
||
import { STComponent, STColumn, STChange, STRequestOptions } from '@delon/abc/st';
|
||
import { SFComponent, SFSchema } from '@delon/form';
|
||
import { NzModalService } from 'ng-zorro-antd/modal';
|
||
import { SystemService } from 'src/app/routes/sys-setting/services/system.service';
|
||
import { TicketService } from '../../services/ticket.service';
|
||
import { AddCartComponent } from './add-cart/add-cart.component';
|
||
import { AddOwnerComponent } from './add-owner/add-owner.component';
|
||
|
||
@Component({
|
||
selector: 'app-etc-blacklist',
|
||
templateUrl: './etc-blacklist.component.html',
|
||
styleUrls: ['../../../commom/less/box.less', './etc-blacklist.component.less'],
|
||
changeDetection: ChangeDetectionStrategy.OnPush
|
||
})
|
||
export class ETCBlacklistComponent implements OnInit {
|
||
@ViewChild('st', { static: true })
|
||
st!: STComponent;
|
||
@ViewChild('sf', { static: false })
|
||
sf!: SFComponent;
|
||
tabs = [
|
||
{
|
||
name: '货主',
|
||
type: 1,
|
||
isActived: false
|
||
},
|
||
{
|
||
name: '车辆',
|
||
type: 2,
|
||
isActived: false
|
||
}
|
||
];
|
||
tabType = 1;
|
||
|
||
searchSchema: SFSchema = this.initSF();
|
||
|
||
columns: STColumn[] = this.initST();
|
||
|
||
selectedRows: any[] = [];
|
||
|
||
constructor(public service: TicketService, private nzModalService: NzModalService) {}
|
||
|
||
ngOnInit(): void {}
|
||
|
||
beforeReq = (requestOptions: STRequestOptions) => {
|
||
if (this.sf) {
|
||
Object.assign(requestOptions.body, {
|
||
...this.sf.value
|
||
});
|
||
}
|
||
return requestOptions;
|
||
};
|
||
|
||
// 切换Tab
|
||
changeTab(item: any) {
|
||
this.tabType = item.type;
|
||
this.sf?.setValue('/tabType', item.type);
|
||
this.sf?.reset();
|
||
this.selectedRows = [];
|
||
setTimeout(() => {
|
||
this.tabs.forEach(i => (i.isActived = false));
|
||
item.isActived = !item.isActived;
|
||
// this.st.load(1);
|
||
this.st.resetColumns();
|
||
}, 500);
|
||
}
|
||
|
||
stChange(e: STChange): void {
|
||
switch (e.type) {
|
||
case 'checkbox':
|
||
this.selectedRows = e.checkbox!;
|
||
break;
|
||
}
|
||
}
|
||
|
||
configAction(item?: any) {
|
||
if (this.tabType === 1) {
|
||
this.addOwnerAction(item);
|
||
} else {
|
||
this.addCartAction(item);
|
||
}
|
||
}
|
||
|
||
addOwnerAction(item: any) {
|
||
const modal = this.nzModalService.create({
|
||
nzTitle: '选择货主',
|
||
nzContent: AddOwnerComponent,
|
||
nzWidth: 850,
|
||
nzComponentParams: { data: [] },
|
||
nzOnOk: com => {
|
||
if (com.selectedData?.length <= 0) {
|
||
this.service.msgSrv.warning('请选择货主');
|
||
return false;
|
||
}
|
||
const ids = com.selectedData.map(node => node.id);
|
||
this.service.request(this.service.$api_save_etc_shipper, { shipperAppUserIdList: ids }).subscribe(res => {
|
||
if (res) {
|
||
this.service.msgSrv.success('添加成功');
|
||
modal.destroy();
|
||
this.st.load(1);
|
||
}
|
||
});
|
||
return false;
|
||
}
|
||
});
|
||
modal.afterClose.subscribe(res => {
|
||
if (res) {
|
||
this.st.load();
|
||
}
|
||
});
|
||
}
|
||
|
||
addCartAction(item: any) {
|
||
const modal = this.nzModalService.create({
|
||
nzTitle: '选择车辆',
|
||
nzContent: AddCartComponent,
|
||
nzWidth: 700,
|
||
nzComponentParams: { data: [] },
|
||
nzOnOk: com => {
|
||
if (com.selectedData?.length <= 0) {
|
||
this.service.msgSrv.warning('请选择车辆');
|
||
return false;
|
||
}
|
||
const ids = com.selectedData.map(node => node.carId);
|
||
this.service.request(this.service.$api_save_etc_cart, { carIds: ids }).subscribe(res => {
|
||
if (res) {
|
||
this.service.msgSrv.success('添加成功');
|
||
modal.destroy();
|
||
this.st.load(1);
|
||
}
|
||
});
|
||
return false;
|
||
}
|
||
});
|
||
modal.afterClose.subscribe(res => {
|
||
if (res) {
|
||
this.st.load();
|
||
}
|
||
});
|
||
}
|
||
|
||
deleteAction(item?: any) {
|
||
let ids: Array<string> = [];
|
||
if (item) {
|
||
ids = [item.id];
|
||
} else {
|
||
ids = this.selectedRows.map(node => node.id);
|
||
}
|
||
if (ids?.length <= 0) {
|
||
this.service.msgSrv.warning('请选择ETC白名单');
|
||
return;
|
||
}
|
||
|
||
const modal = this.nzModalService.warning({
|
||
nzTitle: this.tabType === 1 ? '确定将所选货主从ETC白名单中剔除?' : '确定将所选车辆从ETC白名单中剔除?',
|
||
nzClosable: false,
|
||
nzCancelText: '取消',
|
||
nzOnOk: () => {
|
||
if (this.tabType === 1) {
|
||
this.service.request(this.service.$api_delete_etc_shipper, ids).subscribe(res => {
|
||
if (res) {
|
||
this.service.msgSrv.success('删除成功');
|
||
this.st.load(1);
|
||
this.selectedRows = [];
|
||
modal.destroy();
|
||
}
|
||
});
|
||
} else {
|
||
this.service.request(this.service.$api_delete_etc_cart, ids).subscribe(res => {
|
||
if (res) {
|
||
this.service.msgSrv.success('删除成功');
|
||
this.st.load(1);
|
||
this.selectedRows = [];
|
||
modal.destroy();
|
||
}
|
||
});
|
||
}
|
||
return false;
|
||
},
|
||
nzOkText: '确定'
|
||
});
|
||
}
|
||
/**
|
||
* 重置表单
|
||
*/
|
||
resetSF() {
|
||
this.sf.reset();
|
||
}
|
||
|
||
private initSF(): SFSchema {
|
||
return {
|
||
properties: {
|
||
tabType: {
|
||
type: 'number',
|
||
ui: {
|
||
hidden: true
|
||
}
|
||
},
|
||
shipperAppUserName: {
|
||
title: '企业名称',
|
||
type: 'string',
|
||
ui: {
|
||
placeholder: '请输入',
|
||
visibleIf: {
|
||
tabType: (value: number) => this.tabType === 1
|
||
}
|
||
}
|
||
},
|
||
contactName: {
|
||
title: '联系人姓名',
|
||
type: 'string',
|
||
ui: {
|
||
placeholder: '姓名/手机/车牌号',
|
||
visibleIf: {
|
||
tabType: (value: number) => this.tabType === 1
|
||
}
|
||
}
|
||
},
|
||
contactPhoneNumber: {
|
||
title: '联系人手机号',
|
||
type: 'string',
|
||
ui: {
|
||
placeholder: '请输入',
|
||
visibleIf: {
|
||
tabType: (value: number) => this.tabType === 1
|
||
}
|
||
}
|
||
},
|
||
params4: {
|
||
title: '车牌号',
|
||
type: 'string',
|
||
ui: {
|
||
placeholder: '请输入',
|
||
visibleIf: {
|
||
tabType: (value: number) => this.tabType === 2
|
||
}
|
||
}
|
||
},
|
||
params5: {
|
||
title: '司机姓名',
|
||
type: 'string',
|
||
ui: {
|
||
placeholder: '请输入',
|
||
visibleIf: {
|
||
tabType: (value: number) => this.tabType === 2
|
||
}
|
||
}
|
||
}
|
||
// params6: {
|
||
// title: '手机号',
|
||
// type: 'string',
|
||
// ui: {
|
||
// placeholder: '请输入',
|
||
// visibleIf: {
|
||
// tabType: (value: number) => this.tabType === 2
|
||
// }
|
||
// }
|
||
// }
|
||
}
|
||
};
|
||
}
|
||
|
||
private initST(): STColumn[] {
|
||
return [
|
||
{ title: '', index: 'key', type: 'checkbox' },
|
||
{ title: '企业名称', index: 'shipperAppUserName', iif: () => this.tabType === 1 },
|
||
{ title: '联系人姓名', index: 'contactName', iif: () => this.tabType === 1 },
|
||
{ title: '联系人手机号', index: 'contactPhoneNumber', iif: () => this.tabType === 1 },
|
||
{
|
||
title: '认证状态',
|
||
className: 'text-center',
|
||
index: 'certificationStatus',
|
||
type: 'enum',
|
||
enum: { 1: '未上传', 0: '草稿', 10: '待审核', 20: '已审核', 30: '已驳回', 40: '证件过期' },
|
||
iif: () => this.tabType === 1
|
||
},
|
||
{ title: '车牌号', index: 'carNo', iif: () => this.tabType === 2 },
|
||
{ title: '车辆所有人', index: 'carOwner', iif: () => this.tabType === 2 },
|
||
{ title: '创建者', index: 'createUserIdLabel' },
|
||
{
|
||
title: '创建时间',
|
||
index: 'createTime',
|
||
type: 'date'
|
||
},
|
||
{
|
||
title: '操作',
|
||
className: 'text-center',
|
||
buttons: [
|
||
{
|
||
text: '删除',
|
||
click: item => this.deleteAction(item)
|
||
}
|
||
]
|
||
}
|
||
];
|
||
}
|
||
// 导出
|
||
exprot() {
|
||
if (this.tabType == 1) {
|
||
this.service.exportStart({ ...this.sf.value, pageSize: -1 }, this.service.$api_get_aficoShipperWhiteList_asyncExport);
|
||
} else {
|
||
this.service.exportStart({ ...this.sf.value, pageSize: -1 }, this.service.$api_get_ficoCarWhiteList_asyncExport);
|
||
}
|
||
}
|
||
}
|