import { Component, OnInit, ViewChild } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { STColumn, STComponent, STData } from '@delon/abc/st'; import { SFSchemaEnum, SFSelectWidgetSchema } from '@delon/form'; import { SearchDrawerService } from '@shared'; import { of } from 'rxjs'; import { map } from 'rxjs/operators'; import { BasicTableComponent } from 'src/app/routes/commom'; import { VehicleService } from '../../../vehicle/services/vehicle.service'; @Component({ selector: 'app-Vehicle-components-list', templateUrl: './list.component.html', styleUrls: ['../../../commom/less/commom-table.less'] }) export class VehicleComponentsListComponent extends BasicTableComponent implements OnInit { columns!: STColumn[]; @ViewChild('st', { static: false }) st!: STComponent; constructor( public service: VehicleService, private router: Router, private ar: ActivatedRoute, public searchDrawerService: SearchDrawerService ) { super(searchDrawerService); } /** * 查询参数 */ get reqParams() { const params: any = { ...(this.sf && this.sf?.value) }; if (this.sf?.value.effectiveDate) { params.effectiveDateStart = this.sf?.value.effectiveDate[0]; params.effectiveDateEnd = this.sf?.value.effectiveDate[1]; } delete params.effectiveDate; delete params.expand; return params; } search() { this.st?.load(1); } ngOnInit() { this.initSF(); this.initST(); } dataProcess(data: STData[]): STData[] { return data.map((i, index) => { i.showSortFlag = false; return i; }); } initSF() { this.schema = { properties: { expand: { type: 'boolean', ui: { hidden: true } }, carNo: { title: '车牌号', type: 'string', ui: { widget: 'select', serverSearch: true, searchDebounceTime: 300, searchLoadingText: '搜索中...', allowClear: true, onSearch: (q: any) => { if (!!q) { return this.service .request(this.service.$api_get_getCarLicenseListByCarNo, { carNo: q }) .pipe(map((res: any) => (res?.records as any[]).map(i => ({ label: i.carNo, value: i.carNo } as SFSchemaEnum)))) .toPromise(); } else { return of([]); } } } as SFSelectWidgetSchema }, carNoColor: { type: 'string', title: '车牌颜色', ui: { widget: 'dict-select', containsAllLabel: true, params: { dictKey: 'car:color' } } }, carStatus: { title: '运营状态', type: 'string', enum: [ { label: '空闲', value: 0 }, { label: '运输中', value: 1 } ], ui: { allowClear: true, widget: 'select' } }, carModel: { title: '车型', type: 'string', ui: { widget: 'dict-select', params: { dictKey: 'car:model' }, containsAllLabel: true } }, carLength: { title: '车长', type: 'string', ui: { widget: 'dict-select', params: { dictKey: 'car:length' }, containsAllLabel: true } }, carLoad: { title: '载重', type: 'string' }, isSelf: { type: 'string', title: '是否挂靠', enum: [ { label: '是', value: 1 }, { label: '否', value: 0 } ], ui: { widget: 'select', allowClear: true } }, driverLicenseStatus: { type: 'string', title: '行驶证到期状态', enum: [ { label: '正常', value: 1 }, { label: '即将到期', value: 2 }, { label: '已到期', value: 3 } ], default: '', ui: { widget: 'select', allowClear: true } }, roadTransportStatus: { type: 'string', title: '道运证到期状态', enum: [ { label: '正常', value: 1 }, { label: '即将到期', value: 2 }, { label: '已到期', value: 3 } ], ui: { widget: 'select', allowClear: true } } // isSelfs: { // type: 'string', // title: '是否入网', // enum: [ // { label: '全部', value: '' }, // { label: '是', value: 1 }, // { label: '否', value: 0 } // ], // ui: { // widget: 'select', // allowClear: true, // visibleIf: { // expand: (value: boolean) => value // } // } // } // putOnRecord: { // type: 'string', // title: '是否已备案', // enum: [ // { label: '是', value: 1 }, // { label: '否', value: 0 }, // ], // ui: { // widget: 'select', // visibleIf: { // expand: (value: boolean) => value, // }, // }, // }, } }; } initST() { this.columns = [ // { title: '', type: 'checkbox', className: 'text-center' }, { title: '车牌号', width: '150px', className: 'text-center', index: 'carNo' }, { title: '车牌颜色', width: '150px', className: 'text-center', index: 'carNoColorLabel' }, { title: '车型-车长-载重', width: '180px', className: 'text-center', render: 'carLength' }, { title: '运营状态', width: '150px', className: 'text-center', index: 'carStatus', type: 'badge', badge: { true: { text: '运输中', color: 'success' }, false: { text: '空闲', color: 'default' } } }, // { title: '道运证', width: '150px', className: 'text-center', index: 'roadTransportNo' }, // { title: '审核人', width: '150px', className: 'text-center', index: 'approvalUserName' }, { title: '行驶证到期状态', width: '180px', className: 'text-center', index: 'driverLicenseStatus', type: 'badge', badge: { 1: { text: '正常', color: 'success' }, 2: { text: '即将到期', color: 'warning' }, 3: { text: '已到期', color: 'error' } } }, { title: '道运证到期状态', width: '180px', className: 'text-center', index: 'roadTransportStatus', type: 'badge', badge: { 1: { text: '正常', color: 'success' }, 2: { text: '即将到期', color: 'warning' }, 3: { text: '已到期', color: 'error' } } }, // { title: '是否入网', width: '200px', className: 'text-center', index: 'carOwner' }, { title: '所有人', width: '200px', className: 'text-center', index: 'carOwner' }, { title: '是否挂靠', width: '150px', className: 'text-center', render: 'isSelf' }, { title: '挂靠协议', width: '150px', className: 'text-center', render: 'approvalAuditStatus' }, // { title: '是否已备案', className: 'text-center', render: 'putOnRecord', }, { title: '操作', fixed: 'right', width: '100px', className: 'text-center', buttons: [ { text: '查看', acl: { ability: ['VEHICLE-LIST-view'] }, click: item => { this.router.navigate(['/vehicle/list/detail/' + item.id]); // this.router.navigate(['./view', item.id], { relativeTo: this.ar, queryParams: { tenantId: item.tenantId } }); } } // { // text: '申请备案', // click: (item) => { // }, // }, ] } ]; } creat() { this.router.navigate(['./new'], { relativeTo: this.ar }); } // 导出 exportFire() { let params = Object.assign({}, this.reqParams || {}); params.pageSize = -1; this.service.exportStart(params, this.service.$api_carLicense_export); } }