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 = []; 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); } } }