diff --git a/src/app/routes/order-management/components/receipts-audit/receipts-audit.component.ts b/src/app/routes/order-management/components/receipts-audit/receipts-audit.component.ts index 9a325e4a..cf8a24d4 100644 --- a/src/app/routes/order-management/components/receipts-audit/receipts-audit.component.ts +++ b/src/app/routes/order-management/components/receipts-audit/receipts-audit.component.ts @@ -335,22 +335,26 @@ export class OrderManagementReceiptsAuditComponent implements OnInit { { text: '通过', click: _record => this.sign(_record), - iif: item => item.auditStatus == '1' + iif: item => item.auditStatus == '1', + acl: { ability: ['ORDER-RECEIPTS-billAuditPassBatch'] }, }, { text: '生成电子单据', click: _record => this.generate(_record, 2), - iif: item => item.auditStatus == '1' + iif: item => item.auditStatus == '1', + acl: { ability: ['ORDER-RECEIPTS-generate'] }, }, { text: '查看凭证', click: _record => this.generate(_record, 3), - iif: item => item.auditStatus == '2' + iif: item => item.auditStatus == '2', + acl: { ability: ['ORDER-RECEIPTS-view'] }, }, { text: '修改', click: _record => this.modification(_record), - iif: item => item.auditStatus == '1' + iif: item => item.auditStatus == '1' , + acl: { ability: ['ORDER-RECEIPTS-updateBillExamine'] }, }, ] } diff --git a/src/app/routes/usercenter/components/driver/add-driver/add-driver.component.html b/src/app/routes/usercenter/components/driver/add-driver/add-driver.component.html new file mode 100644 index 00000000..c17d2c12 --- /dev/null +++ b/src/app/routes/usercenter/components/driver/add-driver/add-driver.component.html @@ -0,0 +1,48 @@ + + +
+ + +
+
+
正面照
+
示例
+
+
+
+
+ +
+
+
背面照
+
示例
+
+
+
+
+
+ + + + + + + +
+ \ No newline at end of file diff --git a/src/app/routes/usercenter/components/driver/add-driver/add-driver.component.less b/src/app/routes/usercenter/components/driver/add-driver/add-driver.component.less new file mode 100644 index 00000000..6dd216c6 --- /dev/null +++ b/src/app/routes/usercenter/components/driver/add-driver/add-driver.component.less @@ -0,0 +1,51 @@ +.sfBox{ + position: relative; +} +.pr { + position: relative; +} + +.pa { + position: absolute; + top: 35px; + left: 150px; + img{border: solid 1px #ebf0fb;} +} + +.tips { + display: flex; + margin-bottom: 0; + color: #333; + + dt { + width: 150px; + } + + dd { + width: 190px; + margin-bottom: 0; + text-align: center; + } +} +.drivercard{ + position: absolute; + top: 710px; + left: 330px; + border: solid 1px #ebf0fb; +} +.jopcard{ + position: absolute; + top: 1115px; + left: 330px; + border: solid 1px #ebf0fb; +} +:host{ + ::ng-deep { + .ant-input-borderless{ + padding: 0; + padding-top: 4px; + color: black; + resize:none; + } + } +} \ No newline at end of file diff --git a/src/app/routes/usercenter/components/driver/add-driver/add-driver.component.spec.ts b/src/app/routes/usercenter/components/driver/add-driver/add-driver.component.spec.ts new file mode 100644 index 00000000..7c61267f --- /dev/null +++ b/src/app/routes/usercenter/components/driver/add-driver/add-driver.component.spec.ts @@ -0,0 +1,24 @@ +import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; +import { CarSettleAddDriverComponent } from './add-driver.component'; + +describe('CarSettleAddDriverComponent', () => { + let component: CarSettleAddDriverComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ CarSettleAddDriverComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(CarSettleAddDriverComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/routes/usercenter/components/driver/add-driver/add-driver.component.ts b/src/app/routes/usercenter/components/driver/add-driver/add-driver.component.ts new file mode 100644 index 00000000..6f596ca5 --- /dev/null +++ b/src/app/routes/usercenter/components/driver/add-driver/add-driver.component.ts @@ -0,0 +1,608 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { apiConf } from '@conf/api.conf'; +import { cacheConf } from '@conf/cache.conf'; +import { SFComponent, SFUISchema, SFSchema, SFUploadWidgetSchema, SFDateWidgetSchema } from '@delon/form'; +import { _HttpClient } from '@delon/theme'; +import { EACacheService, EAEnvironmentService } from '@shared'; +import { NzModalRef } from 'ng-zorro-antd/modal'; +import { NzUploadFile } from 'ng-zorro-antd/upload'; +import { Observable, Observer, of } from 'rxjs'; +import { map } from 'rxjs/operators'; +import { UsermanageService } from '../../../services/usercenter.service'; + + +@Component({ + selector: 'app-car-add-driver', + templateUrl: './add-driver.component.html', + styleUrls: ['./add-driver.component.less'] +}) +export class CarSettleAddDriverComponent implements OnInit { + @ViewChild('sf', { static: false }) sf!: SFComponent; + @ViewChild('sf1', { static: false }) sf1!: SFComponent; + @ViewChild('sf2', { static: false }) sf2!: SFComponent; + record: any = {}; + i: any; + ui: SFUISchema = {}; + schema: SFSchema = {}; + schema1: SFSchema = {}; + schema2: SFSchema = {}; + showCardFlag = false; + showJopFlag = false; + detailData: any = { + identityInfoDTO: {}, + userDriverLicenseDTO: {}, + userPracticeSeniorityDTO: {} + }; + companyData: any = {}; + constructor( + private modal: NzModalRef, + public service: UsermanageService, + private envSrv: EAEnvironmentService, + private eaCacheSrv: EACacheService, + ) { } + + ngOnInit(): void { + this.companyData = this.eaCacheSrv.get(cacheConf.env) + this.initSF() + } + initSF() { + this.schema = { + properties: { + titleA: { + title: '司机信息(必填)', + type: 'string', + ui: { + widget: 'text', + }, + default: '照片上传后会自动识别文字并填充下列内容栏' + }, + mobile: { + title: '手机号', + type: 'string', + format: 'mobile', + maxLength: 11, + ui: { + widget: '', + }, + }, + showName: { + title: '身份证照片', + type: 'string', + readOnly: true, + ui: { + widget: 'textarea', + borderless:true, + showRequired: true, + }, + default: '请上传身份证原件的高清照片,若上传复印件,则需加盖公司印章及法人签字;上传后系统会自动识别并填写', + }, + tipsA: { + title: '', + type: 'string', + ui: { + widget: 'custom', + offsetControl: 6, + }, + }, + certificatePhotoFrontWatermark: { + type: 'string', + title: '', + ui: { + offsetControl: 6, + action: apiConf.fileUpload, + fileType: 'image/png,image/jpeg,image/jpg,image/gif', + limit: 1, + limitFileCount: 1, + resReName: 'data.fullFileWatermarkPath', + urlReName: 'data.fullFileWatermarkPath', + widget: 'upload', + descriptionI18n: '图片支持jpg、jpeg、png、gif格式,大小不超过2M', + data: { + appId: this.envSrv.env.appId, + }, + name: 'multipartFile', + multiple: false, + listType: 'picture-card', + change: (args: any) => { + if (args.type === 'success') { + this.detailData.certificatePhotoFront = args.file.response.data.fullFilePath + this.checkIdCard(args.file.response.data.fullFilePath, 'front', 0); + } + }, + beforeUpload: (file: any, _fileList: any) => { + return new Observable((observer: Observer) => { + const isLt2M = file.size / 1024 / 1024 < 2; + if (!isLt2M) { + this.service.msgSrv.warning('图片大小超过2M!'); + observer.complete(); + return; + } + observer.next(isLt2M); + observer.complete(); + }); + }, + previewFile: (file: NzUploadFile) => of(file.url),} + }, + tipsB: { + title: '', + type: 'string', + ui: { + widget: 'custom', + offsetControl: 6, + }, + }, + certificatePhotoBackWatermark: { + type: 'string', + title: '', + ui: { + offsetControl: 6, + action: apiConf.fileUpload, + fileType: 'image/png,image/jpeg,image/jpg,image/gif', + limit: 1, + limitFileCount: 1, + resReName: 'data.fullFileWatermarkPath', + urlReName: 'data.fullFileWatermarkPath', + widget: 'upload', + descriptionI18n: '图片支持jpg、jpeg、png、gif格式,大小不超过2M', + data: { + appId: this.envSrv.env.appId, + }, + name: 'multipartFile', + multiple: false, + listType: 'picture-card', + change: (args: any) => { + if (args.type === 'success') { + this.detailData.certificatePhotoBack = args.file.response.data.fullFilePath + this.checkIdCard(args.file.response.data.fullFilePath, 'back', 0); + } + }, + beforeUpload: (file: any, _fileList: any) => { + return new Observable((observer: Observer) => { + const isLt2M = file.size / 1024 / 1024 < 2; + if (!isLt2M) { + this.service.msgSrv.warning('图片大小超过2M!'); + observer.complete(); + return; + } + observer.next(isLt2M); + observer.complete(); + }); + }, + previewFile: (file: NzUploadFile) => of(file.url),} + }, + name: { + title: '姓名', + type: 'string', + maxLength: 32, + ui: { + widget: '', + placeholder: '请输入姓名', + }, + }, + certificateNumber: { + title: '身份证号', + type: 'string', + format: 'id-card', + minLength: 1, + maxLength: 18, + ui: { + widget: '', + placeholder: '请输入法定代表人证件号', + errors: { + required: '请输入18位身份证号码', + }, + }, + }, + bankCardNo: { + title: '银行卡号', + type: 'string', + maxLength: 18, + ui: { + widget: '', + placeholder: '请输入银行卡号', + // change: (val: any) =>{ + // const value = val.replace(/\D/g,'') + // this.sf.setValue('/bankCardNo', value) + // }, + }, + default: '' + }, + bankName: { + title: '开户行', + type: 'string', + ui: { + widget: '', + }, + default: '' + }, + }, + required: [ + 'certificatePhotoFrontWatermark', + 'certificatePhotoBackWatermark', + 'name', + 'certificateNumber', + 'bankCardNo' + ], + }; + this.schema1 = { + properties: { + titleB: { + title: '驾驶证信息(必填)', + type: 'string', + ui: { + widget: 'text', + }, + default: '照片上传后会自动识别文字并填充下列内容栏' + }, + certificatePhotoWatermark: { + type: 'string', + title: '驾驶证照片', + ui: { + action: apiConf.fileUpload, + fileType: 'image/png,image/jpeg,image/jpg,image/gif', + limit: 1, + limitFileCount: 1, + resReName: 'data.fullFileWatermarkPath', + urlReName: 'data.fullFileWatermarkPath', + widget: 'upload', + descriptionI18n: '请上传驾驶证照片,支持JPG、PNG格式,文件小于5M。照片信息缺失、拼凑、过度PS、模糊不清,都不会通过审核。', + data: { + appId: this.envSrv.env.appId, + }, + name: 'multipartFile', + multiple: false, + listType: 'picture-card', + change: (args: any) => { + if (args.type === 'success') { + this.detailData.userDriverLicenseDTO.certificatePhoto = args.file.response.data.fullFilePath + this.checkDriverCard(args.file.response.data.fullFilePath, 'front', 0); + } else { + this.detailData.userDriverLicenseDTO.certificatePhoto = '' + } + }, + beforeUpload: (file: any, _fileList: any) => { + return new Observable((observer: Observer) => { + const isLt4M = file.size / 1024 / 1024 < 4; + if (!isLt4M) { + this.service.msgSrv.warning('图片大小超过4M!'); + observer.complete(); + return; + } + observer.next(isLt4M); + observer.complete(); + }); + }, + previewFile: (file: NzUploadFile) => of(file.url),} + }, + licenseNo: { + title: '驾驶证号', + type: 'string', + ui: { + // widget: 'text', + placeholder: '请输入', + }, + // default: this.ar.snapshot.queryParams.licenseNo + }, + driverModel: { + title: '准驾车型', + type: 'string', + ui: { + widget: 'select', + mode: 'multiple', + containsAllLabel: false, + placeholder: '请选择准驾车型', + asyncData: () => + this.service.request(this.service.$api_getDictValue, { dictKey: 'driverModel' }).pipe( + map((data) => { + return data.map((m: any) => { + return { label: m.label, value: m.label }; + }); + }), + ), + }, + }, + validStartTime: { + title: '有效期起', + type: 'string', + ui: { + widget: 'date', + format: 'yyyy-MM-dd', + placeholder: '请选择', + errors: { + required: '请选择起始日期', + }, + change: (i) => { }, + } as SFDateWidgetSchema, + }, + validEndTime: { + title: '有效期止', + type: 'string', + ui: { + widget: 'date', + format: 'yyyy-MM-dd', + placeholder: '请选择', + errors: { + required: '请选择终止日期', + }, + change: (i) => { }, + } as SFDateWidgetSchema, + }, + signingOrganization: { + title: '签发机关', + type: 'string', + maxLength: 30, + ui: { + // widget: this.detailData.commitFlag !== 0 ? 'text' : '', + placeholder: '请输入', + }, + }, + }, + required: [ + 'certificatePhotoWatermark', + 'licenseNo', + 'driverModel', + 'validStartTime', + 'validEndTime', + ], + }; + this.schema2 = { + properties: { + titleC: { + title: '从业资格证(选填)', + type: 'string', + ui: { + widget: 'text', + }, + default: '照片上传后会自动识别文字并填充下列内容栏', + }, + certificatePhotoWatermark: { + type: 'string', + title: '', + ui: { + offsetControl: 6, + action: apiConf.fileUpload, + fileType: 'image/png,image/jpeg,image/jpg,image/gif', + limit: 1, + limitFileCount: 1, + resReName: 'data.fullFileWatermarkPath', + urlReName: 'data.fullFileWatermarkPath', + widget: 'upload', + descriptionI18n: '图片支持jpg、jpeg、png、gif格式,大小不超过5M', + data: { + appId: this.envSrv.env.appId, + }, + name: 'multipartFile', + multiple: false, + listType: 'picture-card', + change: (args: any) => { + if (args.type === 'success') { + this.detailData.userPracticeSeniorityDTO.certificatePhoto = args.file.response.data.fullFilePath + this.checkQualificationCertificate(args.file.response.data.fullFilePath); + } else { + this.detailData.userPracticeSeniorityDTO.certificatePhoto = '' + } + }, + beforeUpload: (file: any, _fileList: any) => { + return new Observable((observer: Observer) => { + const isLt2M = file.size / 1024 / 1024 < 2; + if (!isLt2M) { + this.service.msgSrv.warning('图片大小超过2M!'); + observer.complete(); + return; + } + observer.next(isLt2M); + observer.complete(); + }); + }, + previewFile: (file: NzUploadFile) => of(file.url),} + }, + licenseNo: { + title: '从业资格证号', + type: 'string', + maxLength: 30, + ui: { + // widget: this.detailData.commitFlag !== 0 ? 'text' : '', + placeholder: '请输入', + }, + }, + regionCode: { + title: '签发省份', + type: 'string', + ui: { + widget: 'select', + placeholder: '请选择', + asyncData: () => this.getProvinceData(), + } as SFDateWidgetSchema, + }, + validStartTime: { + title: '发证日期', + type: 'string', + ui: { + widget: 'date', + format: 'yyyy-MM-dd', + placeholder: '请选择', + errors: { + required: '请选择起始日期', + }, + change: (i) => { }, + } as SFDateWidgetSchema, + }, + validEndTime: { + title: '有效期止', + type: 'string', + ui: { + widget: 'date', + format: 'yyyy-MM-dd', + placeholder: '请选择', + errors: { + required: '请选择终止日期', + }, + change: (i) => { }, + } as SFDateWidgetSchema, + }, + }, + required: [ + + ], + }; + this.ui = { + '*': { + spanLabelFixed: 180, + grid: { span: 24 }, + width: 700, + }, + $title1: { + spanLabelFixed: 0, + }, + $title2: { + spanLabelFixed: 0, + }, + $title3: { + spanLabelFixed: 0, + }, + $title4: { + spanLabelFixed: 0, + }, + $enterpriseRegistrationTime: { + width: 680, + }, + $operatingEndTime: { + grid: { span: 9 }, + }, + $dateType: { + grid: { span: 4 }, + }, + $validEndTime: { + grid: { span: 9 }, + }, + $dateType01: { + grid: { span: 4 }, + }, + $registrationCapital: { + grid: { span: 12 }, + }, + $unit: { + spanLabelFixed: 20, + grid: { span: 3 }, + }, + }; + } + getProvinceData() { + return this.service.request(this.service.$api_getRegionByCode, { regionCode: '' }).pipe( + map(res => { + const result: any = [] + if (res) { + res.map((m: any) => { + const item = { label: m.name, value: m.regionCode } + result.push(item) + }); + } + return result + }) + ); + } + checkIdCard(imgurl: any, side: any, type: any) { + // 识别身份证 参数side:0-正面、1-背面;type:0-申请人身份证,1-法定代表人身份证 + const params = { + idCardUrl: imgurl, + side, + }; + this.service.request(this.service.$api_checkIdCard, params).subscribe((res) => { + if (res) { + if (type === 0) { + // 法定代表人身份证 + if (side === 'front') { + // 正面 + this.sf.setValue('/name', res.name); + this.sf.setValue('/certificateNumber', res.number); + } + } + } + }); + } + checkQualificationCertificate(imgurl: any) { + // 识别从业资格证 参数side:0-正面、1-背面;type:0-申请人身份证,1-法定代表人身份证 + const params = { + qualificationCertificateUrl: imgurl, + }; + this.service.request(this.service.$api_recognizeQualificationCertificate, params).subscribe((res) => { + if (res) { + this.sf.setValue('/licenseNo', res.continuingEducationInfo); + //this.sf.setValue('/validStartTime', res.continuingEducationInfo); + } + }); + } + + checkDriverCard(imgurl: any, side: any, type: any) { + // 识别身份证 参数side:0-正面、1-背面;type:0-申请人身份证,1-法定代表人身份证 + const params = { + driverLicenseUrl: imgurl, + side, + }; + this.service.request(this.service.$api_recognizeDriverLicense, params).subscribe((res) => { + if (res) { + if (type === 0) { + // 法定代表人身份证 + if (side === 'front') { + // 正面 + this.sf1.setValue('/licenseNo', res.number); + this.sf1.setValue('/driverModel', [(res.classType).toUpperCase()]); + this.sf1.setValue('/validStartTime', res.validFrom); + this.sf1.setValue('/validEndTime', res.validTo); + this.sf1.setValue('/signingOrganization', res.issuingAuthority); + } + } + } + }); + } + close(): void { + this.modal.destroy(); + } + showExample(){ + this.showCardFlag = !this.showCardFlag + } + showJopExample(){ + this.showJopFlag = !this.showJopFlag + } + submitForm(){ + const params:any = { + source: 2, + mobile: this.sf.value.mobile, + bankCardNo: this.sf.value.bankCardNo, + bankName: this.sf.value.bankName, + identityInfoDTO:{ + ...this.sf.value, + certificatePhotoFront: this.detailData.certificatePhotoFront, + certificatePhotoBack: this.detailData.certificatePhotoBack, + }, + userDriverLicenseDTO: { + ...this.sf1.value, + certificatePhoto: this.detailData.userDriverLicenseDTO.certificatePhoto, + }, + userPracticeSeniorityDTO: { + ...this.sf2.value, + certificatePhoto: this.detailData.userPracticeSeniorityDTO.certificatePhoto, + }, + }; + if(params.userPracticeSeniorityDTO.certificatePhoto === '' || params.userPracticeSeniorityDTO.certificatePhotoWatermark === '') { + delete params.userPracticeSeniorityDTO.certificatePhotoWatermark + delete params.userPracticeSeniorityDTO.certificatePhoto + } + params.userDriverLicenseDTO.driverModel = params.userDriverLicenseDTO.driverModel.join(',') + delete params.identityInfoDTO.showName; + delete params.identityInfoDTO.titleA; + delete params.userDriverLicenseDTO.titleB; + delete params.userPracticeSeniorityDTO.titleC; + delete params.userDriverLicenseDTO.tipsA; + delete params.userPracticeSeniorityDTO.tipsC; + if(JSON.stringify(params.userPracticeSeniorityDTO) === '{}') { + params.userPracticeSeniorityDTO = null + } + this.service.request(this.service.$api_enterpriseVehicleSave, params).subscribe(res => { + if(res){ + this.service.msgSrv.success('添加成功') + this.modal.close(true) + } + }) + } +} diff --git a/src/app/routes/usercenter/components/driver/driver.component.html b/src/app/routes/usercenter/components/driver/driver.component.html index b78deb09..4be50dc6 100644 --- a/src/app/routes/usercenter/components/driver/driver.component.html +++ b/src/app/routes/usercenter/components/driver/driver.component.html @@ -29,7 +29,7 @@ - + @@ -55,4 +55,9 @@ + + +
+ +
\ No newline at end of file diff --git a/src/app/routes/usercenter/components/driver/driver.component.ts b/src/app/routes/usercenter/components/driver/driver.component.ts index 9484e0ae..24e16b52 100644 --- a/src/app/routes/usercenter/components/driver/driver.component.ts +++ b/src/app/routes/usercenter/components/driver/driver.component.ts @@ -2,10 +2,12 @@ import { Component, OnInit, ViewChild } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { STColumn, STColumnBadge, STComponent, STData } from '@delon/abc/st'; import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/form'; +import { ModalHelper } from '@delon/theme'; import { DynamicSettingModalComponent } from '@shared'; import { NzModalService } from 'ng-zorro-antd/modal'; import { AccountDetailComponent } from 'src/app/shared/components/account-detail/account-detail.component'; import { UsermanageService } from '../../services/usercenter.service'; +import { CarSettleAddDriverComponent } from './add-driver/add-driver.component'; @Component({ selector: 'app-usercenter-components-driver', styleUrls: ['./driver.component.less'], @@ -24,7 +26,7 @@ export class UserCenterComponentsDriverComponent implements OnInit { promotersTelephone = ''; resourceStatus: any = 10; - constructor(public service: UsermanageService, private modal: NzModalService, private router: Router, private ar: ActivatedRoute) {} + constructor(public service: UsermanageService, private modal: NzModalService, private router: Router, private ar: ActivatedRoute,private modalHelper: ModalHelper) {} /** * 查询参数 @@ -245,7 +247,12 @@ export class UserCenterComponentsDriverComponent implements OnInit { } }; } - + add() { + this.modalHelper.create(CarSettleAddDriverComponent, { size: 900 }).subscribe((res) => { + // this.initData() + console.log(res) + }); + } private initST(): STColumn[] { return [ { title: '司机姓名', className: 'text-center', index: 'name' , width: 150}, diff --git a/src/app/routes/usercenter/services/usercenter.service.ts b/src/app/routes/usercenter/services/usercenter.service.ts index 1aaefde0..71fe2111 100644 --- a/src/app/routes/usercenter/services/usercenter.service.ts +++ b/src/app/routes/usercenter/services/usercenter.service.ts @@ -110,8 +110,19 @@ export class UsermanageService extends ShipperBaseService { // 获取个人刷脸结果 $api_getFaceFlowQuery = '/api/mdc/pbc/factorsVerify/getFaceFlowQuery'; + /////////////////// + // 识别身份证 + $api_checkIdCard = '/api/mdc/pbc/hwc/ocr/recognizeIdCard'; + // 从业资格证 + $api_recognizeQualificationCertificate = '/api/mdc/pbc/hwc/ocr/recognizeQualificationCertificate'; + // 驾驶证识别 + $api_recognizeDriverLicense = `/api/mdc/pbc/hwc/ocr/recognizeDriverLicense`; + // 根据地区code查询列表 + $api_getRegionByCode = '/api/mdc/pbc/region/getRegionByCode'; + // 新增熟车 + $api_enterpriseVehicleSave = `/api/mdc/cuc/enterpriseVehicle/save`; constructor(public injector: Injector, private nzModalService: NzModalService, public eaCacheSrv: EACacheService) { - super(injector,eaCacheSrv); + super(injector, eaCacheSrv); } showImg(url: any) { diff --git a/src/app/routes/usercenter/usercenter.module.ts b/src/app/routes/usercenter/usercenter.module.ts index 6df953ea..dd8d6579 100644 --- a/src/app/routes/usercenter/usercenter.module.ts +++ b/src/app/routes/usercenter/usercenter.module.ts @@ -22,6 +22,7 @@ import { FreightComponentsUserComponent } from './components/freight/user/user.c import { UsercenterRoutingModule } from './usercenter-routing.module'; import { AuditAdminComponent } from './components/freight/enterprise-audit/audit-admin/audit-admin.component'; import { CaptainDetailComponent } from './components/driver/captain/captain-detail/captain-detail.component'; +import { CarSettleAddDriverComponent } from './components/driver/add-driver/add-driver.component'; const COMPONENTS = [ FreightComponentsListComponent, @@ -36,7 +37,8 @@ const COMPONENTS = [ UserCenterComponentsDriverDetailComponent, UserCenterComponentsDriverCaptainComponent, CaptainDetailComponent, - AuditAdminComponent + AuditAdminComponent, + CarSettleAddDriverComponent ]; @NgModule({ diff --git a/src/app/routes/vehicle/components/list/list.component.ts b/src/app/routes/vehicle/components/list/list.component.ts index 5eddbf2e..9f72aa9f 100644 --- a/src/app/routes/vehicle/components/list/list.component.ts +++ b/src/app/routes/vehicle/components/list/list.component.ts @@ -212,6 +212,9 @@ export class VehicleComponentsListComponent implements OnInit { false: { text: '空闲', color: 'default' } } }, + { title: '道运证', width: '150px', className: 'text-center', index: 'roadTransportNo' }, + { title: '审核人', width: '150px', className: 'text-center', index: 'approvalUserName' }, + { title: '行驶证到期状态', width: '180px', diff --git a/src/assets/images/drivercard.png b/src/assets/images/drivercard.png new file mode 100644 index 00000000..c87c0dfc Binary files /dev/null and b/src/assets/images/drivercard.png differ diff --git a/src/assets/images/driverfront.png b/src/assets/images/driverfront.png new file mode 100644 index 00000000..96d378d6 Binary files /dev/null and b/src/assets/images/driverfront.png differ diff --git a/src/assets/images/eg01.png b/src/assets/images/eg01.png new file mode 100644 index 00000000..366bda19 Binary files /dev/null and b/src/assets/images/eg01.png differ diff --git a/src/assets/images/eg02.png b/src/assets/images/eg02.png new file mode 100644 index 00000000..b9da9074 Binary files /dev/null and b/src/assets/images/eg02.png differ diff --git a/src/assets/images/jopcard.png b/src/assets/images/jopcard.png new file mode 100644 index 00000000..3b88e129 Binary files /dev/null and b/src/assets/images/jopcard.png differ