This commit is contained in:
Taric Xin
2021-12-09 21:23:10 +08:00
parent d4a4b45194
commit 8df3fcf013
7 changed files with 471 additions and 530 deletions

View File

@ -1,78 +1,47 @@
<ng-container > <ng-container>
<!-- 页头 --> <!-- 页头 -->
<page-header-wrapper [logo]="logo" [title]="'司机详情'" [action]="action" [content]="content"> <page-header-wrapper [logo]="logo" [title]="'司机详情'" [content]="content">
<ng-template #logo> <ng-template #logo>
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()"> <button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
<i nz-icon nzType="left" nzTheme="outline"></i> <i nz-icon nzType="left" nzTheme="outline"></i>
</button> </button>
</ng-template> </ng-template>
<ng-template #content> <ng-template #content>
<nz-skeleton [nzLoading]="service.http.loading">
<div class="user-info"> <div class="user-info">
<img [src]="detailData?.shoppFeignVO?.logoUrl" /> <img [src]="userDetail?.avatar" />
<div style="flex: 1"> <div style="flex: 1">
<div style="display: flex;"> <div style="display: flex;">
<p style="padding-right: 80px; width: 400px;">张司机{{ detailData?.shoppFeignVO?.publicity }}</p> <p style="padding-right: 80px; width: 400px;">{{ userDetail?.name }}</p>
<nz-badge nzStatus="success" nzText="正常" ></nz-badge> <nz-badge nzStatus="error" nzText="正常" *ngIf="userDetail?.stateLocked"></nz-badge>
<nz-badge nzStatus="error" nzText="冻结" *ngIf="detailData?.status === 1"></nz-badge> <nz-badge nzStatus="warning" nzText="冻结" *ngIf="!userDetail?.stateLocked"></nz-badge>
<nz-badge nzStatus="warning" nzText="废弃" *ngIf="detailData?.status === 2"></nz-badge>
</div> </div>
<div style="display: flex;"> <div style="display: flex;">
<p style="padding-right: 80px; width: 400px;">手机号:1452454545{{ detailData?.shoppFeignVO?.introduction }}</p> <p style="padding-right: 80px; width: 400px;">手机号:{{ userDetail?.phone }}
<p >认证时间2021-09-02 12.53.32</p> </p>
</div> <p>注册时间:{{ userDetail?.createTime }}</p>
<div>
服务评级:<nz-rate [ngModel]="2" nzDisabled></nz-rate>
</div> </div>
<div style="position: relative;top: -65%; <div style="float: right;margin-right: 24px;">
left: 75%;"> <button [nzLoading]="service.http.loading" nz-button nzType="primary" nzGhost nz-popconfirm
<button [nzPopconfirmTitle]="enable" (nzOnConfirm)="userAction(1)" nzPopconfirmPlacement="bottomRight">
[nzLoading]="service.http.loading"
nz-button
nzDanger
nz-popconfirm
[nzPopconfirmTitle]="enable"
(nzOnConfirm)="freezeOrResume(0)"
nzPopconfirmPlacement="bottomRight"
>
启用 启用
</button> </button>
<button <button [nzLoading]="service.http.loading" nz-button nzDanger nz-popconfirm [nzPopconfirmTitle]="frozen"
[nzLoading]="service.http.loading" (nzOnConfirm)="userAction(0)" nzPopconfirmPlacement="bottomRight">
nz-button
nzDanger
nz-popconfirm
[nzPopconfirmTitle]="frozen"
(nzOnConfirm)="freezeOrResume(1)"
nzPopconfirmPlacement="bottomRight"
>
冻结 冻结
</button> </button>
</div> </div>
</div> </div>
</div> </div>
</nz-skeleton>
</ng-template> </ng-template>
<ng-template #action> </ng-template>
<ng-template #frozen> <ng-template #frozen>
<div class="ant-popover-message"> <div class="ant-popover-message">
<i nz-icon="" nztheme="fill" class="anticon anticon-exclamation-circle ng-star-inserted"> <i nz-icon nzType="info-circle" nzTheme="fill"></i>
<svg <div class="ant-popover-message-title ng-star-inserted self-ant-popover-title" style="font-size: 16px">确定冻结该企业吗?
viewBox="64 64 896 896" </div>
focusable="false"
fill="currentColor"
width="1em"
height="1em"
class="ng-tns-c358-1487"
data-icon="exclamation-circle"
aria-hidden="true"
>
<path
d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 010-96 48.01 48.01 0 010 96z"
></path>
</svg>
</i>
<div class="ant-popover-message-title ng-star-inserted self-ant-popover-title" style="font-size: 16px">确定冻结该企业吗?</div>
<div class="ant-popover-message-title ng-star-inserted"> <div class="ant-popover-message-title ng-star-inserted">
停用后,该企业将被限制使用,不限于访问受限、无法发布货源等,请谨慎操作 停用后,该企业将被限制使用,不限于访问受限、无法发布货源等,请谨慎操作
</div> </div>
@ -80,141 +49,153 @@
</ng-template> </ng-template>
<ng-template #enable> <ng-template #enable>
<div class="ant-popover-message"> <div class="ant-popover-message">
<i nz-icon="" nztheme="fill" class="anticon anticon-exclamation-circle ng-star-inserted"> <i nz-icon nzType="info-circle" nzTheme="fill"></i>
<svg <div class="ant-popover-message-title ng-star-inserted self-ant-popover-title" style="font-size: 16px">确定启用该企业吗?
viewBox="64 64 896 896" </div>
focusable="false"
fill="currentColor"
width="1em"
height="1em"
class="ng-tns-c358-1487"
data-icon="exclamation-circle"
aria-hidden="true"
>
<path
d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm-32 232c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v272c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V296zm32 440a48.01 48.01 0 010-96 48.01 48.01 0 010 96z"
></path>
</svg>
</i>
<div class="ant-popover-message-title ng-star-inserted self-ant-popover-title" style="font-size: 16px">确定启用该企业吗?</div>
<div class="ant-popover-message-title ng-star-inserted"> <div class="ant-popover-message-title ng-star-inserted">
启用后,该企业将恢复正常使用功能,请再次确认 启用后,该企业将恢复正常使用功能,请再次确认
</div> </div>
</div> </div>
</ng-template> </ng-template>
</page-header-wrapper> </page-header-wrapper>
<nz-card>
<nz-card [nzLoading]="service.http.loading">
<sv-container col="2"> <sv-container col="2">
<sv-title>实名认证信息</sv-title> <sv-title>个人信息
<label *ngIf="userIdentityDetail?.certificationStatus===1" style="color: #52c41a;"><i nz-icon
nzType="check-circle" nzTheme="fill" class="mr-xs"></i>审核通过
</label>
<label *ngIf="userIdentityDetail?.certificationStatus===2" style="color: #ff4d4f;"><i nz-icon
nzType="close-circle" nzTheme="fill" class="mr-xs"></i>驳回
</label>
<div style="float: right;">
<button nz-button nzType="default" nzDanger (click)="approveUser()" *ngIf="userIdentityDetail?.certificationStatus===0">审核通过</button>
<button nz-button nzType="default" nzDanger (click)="rejectedUser()" *ngIf="userIdentityDetail?.certificationStatus===0">驳回审核</button>
<button nz-button nzType="default" nzDanger *ngIf="userIdentityDetail?.certificationStatus!==1">修改</button>
</div>
</sv-title>
<sv label="姓名"> <sv label="姓名">
{{ detailData?.contactsName }} {{ userIdentityDetail?.name }}
</sv> </sv>
<sv label="身份证号"> <sv label="身份证号">
{{ detailData?.contactsPhone }} {{ userIdentityDetail?.certificateNumber }}
</sv> </sv>
</sv-container> </sv-container>
<sv-container col="1"> <sv-container col="1">
<sv label="企业授权函"> <sv label="企业授权函">
<!-- <app-imagelist [imgList]="detailData?.enterpriseQualificationCertificate"></app-imagelist> --> <app-imagelist
<div style="display: flex;"> [imgList]="[userIdentityDetail?.certificatePhotoFrontWatermark,userIdentityDetail?.certificatePhotoBackWatermark]">
<div style=" position: relative; </app-imagelist>
top: -65%;
left: 75%;">
<button nz-button nzType="default" nzDanger (click)="auditPass()">审核通过</button>
<button nz-button nzType="default" nzDanger (click)="auditNo()">驳回审核</button>
</div>
</div>
</sv> </sv>
</sv-container> </sv-container>
<nz-divider></nz-divider> <nz-divider></nz-divider>
<sv-container col="3" class="mt16"> <sv-container col="3" class="mt16">
<sv-title>驾驶证信息</sv-title> <sv-title>驾驶证信息
<label *ngIf="driverDetail?.approvalStatus===20" style="color: #52c41a;"><i nz-icon nzType="check-circle"
nzTheme="fill" class="mr-xs"></i>审核通过
</label>
<label *ngIf="driverDetail?.approvalStatus===30" style="color: #ff4d4f;"><i nz-icon nzType="close-circle"
nzTheme="fill" class="mr-xs"></i>驳回
</label>
<div style="float: right;">
<button nz-button nzType="default" nzDanger
(click)="approveDriver()">审核通过</button>
<button nz-button nzType="default" nzDanger
(click)="rejectedDriver()">驳回审核</button>
<button nz-button nzType="default" *ngIf="driverDetail?.approvalStatus!==20" nzDanger
(click)="ratify()">修改</button>
</div>
</sv-title>
<sv label="驾驶证号"> <sv label="驾驶证号">
{{ detailData?.enterpriseName }} {{ driverDetail?.licenseNo }}
</sv> </sv>
<sv label="准驾车型"> <sv label="准驾车型">
{{ detailData?.unifiedSocialCreditCode }} {{ driverDetail?.driverModel }}
</sv> </sv>
<sv label="有效期起"> <sv label="有效期起">
{{ detailData?.enterpriseType }} {{ driverDetail?.validStartTime }}
</sv> </sv>
</sv-container> </sv-container>
<sv-container col="2" class="mt16"> <sv-container col="2" class="mt16">
<sv label="有效期至"> <sv label="有效期至">
{{ detailData?.registrationCapital }} {{ driverDetail?.validEndTime }}
<span *ngIf="detailData?.registrationCapital">万元</span> <span *ngIf="driverDetail?.registrationCapital">万元</span>
</sv> </sv>
<sv label="驾驶证签发机关"> <sv label="驾驶证签发机关">
{{ detailData?.enterpriseRegistrationTime }} {{ driverDetail?.signingOrganization }}
</sv> </sv>
<sv label="驾驶证照片"> <sv label="驾驶证照片">
<!-- <app-imagelist [imgList]="detailData?.enterpriseQualificationCertificate"></app-imagelist> --> <app-imagelist [imgList]="[detailData?.certificatePhotoWatermark]"></app-imagelist>
</sv> </sv>
</sv-container> </sv-container>
<sv-container col="3" class="mt16"> <sv-container col="3" class="mt16">
<sv-title>从业资格证信息</sv-title> <sv-title>从业资格证信息
<label *ngIf="licenseDetail?.approvalStatus===20" style="color: #52c41a;"><i nz-icon nzType="check-circle"
nzTheme="fill" class="mr-xs"></i>审核通过
</label>
<label *ngIf="licenseDetail?.approvalStatus===30" style="color: #ff4d4f;"><i nz-icon nzType="close-circle"
nzTheme="fill" class="mr-xs"></i>驳回
</label>
</sv-title>
<sv label="从业资格证号"> <sv label="从业资格证号">
{{ detailData?.businessScope }} {{ licenseDetail?.licenseNo }}
</sv> </sv>
<sv label="发证日期"> <sv label="发证日期">
{{ detailData?.businessScope }} {{ licenseDetail?.validStartTime }}
</sv> </sv>
<sv label="有效期至"> <sv label="有效期至">
{{ detailData?.businessScope }} {{ licenseDetail?.validEndTime }}
</sv> </sv>
</sv-container> </sv-container>
<sv-container col="1"> <sv-container col="1">
<sv label="从业资格证照片"> <sv label="从业资格证照片">
<!-- <app-imagelist [imgList]="detailData?.enterpriseQualificationCertificate"></app-imagelist> --> <app-imagelist [imgList]="[licenseDetail?.certificatePhotoWatermark]"></app-imagelist>
<div style="display: flex;">
<div style="position: relative;
top: -65%;
left: 75%;">
<button nz-button nzType="default" nzDanger (click)="auditPass()">审核通过</button>
<button nz-button nzType="default" nzDanger (click)="auditNo()">驳回审核</button>
<button nz-button nzType="default" nzDanger (click)="auditNo()">修改</button>
</div>
</div>
</sv> </sv>
</sv-container> </sv-container>
<nz-divider></nz-divider> <nz-divider></nz-divider>
<sv-container col="3" class="mt16"> <sv-container col="3" class="mt16">
<sv-title>载具信息</sv-title> <sv-title>载具信息</sv-title>
<ng-container *ngFor="let carDatail of carList">
<sv label="车牌号"> <sv label="车牌号">
{{ detailData?.name }} {{ carDatail?.carNo }}
</sv> </sv>
<sv label="车牌颜色"> <sv label="车牌颜色">
{{ detailData?.certificateNumber }} {{ carDatail?.carNoColor }}
</sv> </sv>
<sv label="车型"> <sv label="车型">
{{ detailData?.validStartTime }} {{ carDatail?.carModel }}
</sv> </sv>
<sv label="车长"> <sv label="车长">
{{ detailData?.validStartTime }} {{ carDatail?.carLength }}
</sv> </sv>
<sv label="是否为当前车辆"> <sv label="是否为当前车辆">
{{ detailData?.validStartTime }} {{ carDatail?.isDefault?'是':'否' }}
</sv> </sv>
<sv label="自有载具"> <sv label="自有载具">
{{ detailData?.validStartTime }} {{ carDatail?.isSelf?'否':'是' }}
</sv> </sv>
<sv label="行驶证照片" col="1"> <sv label="行驶证照片" col="3">
<!-- <app-imagelist [imgList]="detailData?.certificatePhoto"></app-imagelist> --> <app-imagelist
[imgList]="[carDatail?.certificatePhotoFrontWatermark,carDatail?.certificatePhotoBackWatermark]">
</app-imagelist>
</sv> </sv>
<sv label="道路运输证照片" col="1"> <sv label="道路运输证照片" col="3">
<!-- <app-imagelist [imgList]="detailData?.certificatePhoto"></app-imagelist> --> <app-imagelist [imgList]="[carDatail?.roadTransportPhotoWatermark]"></app-imagelist>
</sv> </sv>
<sv label="车头照" col="1"> <sv label="车头照" col="3">
<!-- <app-imagelist [imgList]="detailData?.certificatePhoto"></app-imagelist> --> <app-imagelist [imgList]="[carDatail?.carFrontPhotoWatermark]"></app-imagelist>
</sv> </sv>
</sv-container>
<nz-divider></nz-divider> <nz-divider></nz-divider>
<sv-container col="3" class="mt16"> </ng-container>
</sv-container>
<sv-container col="3" class="mt-md">
<sv-title>银行结算信息</sv-title> <sv-title>银行结算信息</sv-title>
<sv label="开户银行"> <sv label="开户银行">
{{ detailData?.name }} {{ detailData?.name }}
@ -223,6 +204,7 @@
{{ detailData?.certificateNumber }} {{ detailData?.certificateNumber }}
</sv> </sv>
</sv-container> </sv-container>
<nz-divider></nz-divider> <nz-divider></nz-divider>
<sv-container col="3" class="mt16"> <sv-container col="3" class="mt16">
<sv-title>服务评级</sv-title> <sv-title>服务评级</sv-title>
@ -246,29 +228,42 @@
</sv> </sv>
</sv-container> </sv-container>
<div style="float: right;">
<button nz-button nzType="default" nzDanger (click)="auditNo()">修改</button>
</div>
<sv-container col="3" class="mt16">
<sv-title>关联企业</sv-title>
<!-- <st #st [bordered]="true" [columns]="columns" [data]="detailData.goodsList" [ngStyle]="{ margin: '1rem 0' }"
multiSort size="small" [page]="{ show: false }">
</st> -->
</sv-container>
</nz-card> </nz-card>
</ng-container> </ng-container>
<nz-modal [(nzVisible)]="isVisible" [nzFooter]="nzModalFooter" nzTitle="审核通过" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel('suppliersType')">
<ng-container *nzModalContent>
<sf #sf [schema]="schema" [ui]="ui" [compact]="false" [button]="'none'" [formData]="suppliersData"></sf>
</ng-container>
<ng-template #nzModalFooter>
<button nz-button nzType="default" (click)="handleCancel('suppliersType')">取消</button>
<button nz-button nzType="primary" (click)="handleOK()" [disabled]="">确认</button>
</ng-template>
</nz-modal>
<nz-modal [(nzVisible)]="isVisibleNo" [nzFooter]="nzModalFooter2" nzTitle="审核驳回" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel('suppliersTypeNo')">
<ng-container *nzModalContent>
<sf #sf2 [schema]="schema2" [ui]="ui2" [compact]="false" [button]="'none'" [formData]="suppliersData"></sf>
</ng-container>
<ng-template #nzModalFooter2> <ng-template #redectModal>
<button nz-button nzType="default" (click)="handleCancel('suppliersTypeNo')">取消</button> <div nz-row nzGutter="8">
<button nz-button nzType="primary" (click)="handleOK()" [disabled]="">确认</button> <div nz-col nzSpan="24" se-container [labelWidth]="120">
</ng-template> <se [col]="1" label="姓名">
</nz-modal> {{ detailData?.enterpriseName }}
</se>
<se [col]="1" label="备注" required>
<textarea nz-input rows="3" style="width: 325px;margin-left: 14px;" [(ngModel)]="approvalOpinion"></textarea>
</se>
</div>
</div>
</ng-template>
<ng-template #rejectedDriverModal>
<div nz-row nzGutter="8">
<div nz-col nzSpan="24" se-container [labelWidth]="120">
<se [col]="1" label="驾驶证号">
{{driverDetail?.licenseNo }}
</se>
<se [col]="1" label="从业资格证号">
{{ licenseDetail?.licenseNo }}
</se>
<se [col]="1" label="备注" required>
<textarea nz-input rows="3" style="width: 325px;margin-left: 14px;" [(ngModel)]="approvalOpinion"></textarea>
</se>
</div>
</div>
</ng-template>

View File

@ -1,46 +1,24 @@
@import '~@delon/theme/index'; @import '~@delon/theme/index';
:host { :host {
::ng-deep { ::ng-deep {
.ant-steps-dot {
.ant-steps-item-content { .sv__title {
width: 200px; font-weight: 600;
}
.ant-steps-item-icon {
margin-left: 96px;
}
.ant-steps-item-tail::after {
margin-left: 40px;
}
}
.success {
color: @success-color;
} }
.warning {
color: @warning-color;
}
.error {
color: @error-color;
}
}
.mt16 {
margin-top: 16px;
}
.user-info { .user-info {
display: flex; display : flex;
font-size: 16px; font-size: 16px;
.enterprise-name {
margin-right: 15px;
}
img { img {
width: 64px; width : 64px;
height: 64px; height : 64px;
margin-right: 15px; margin-right : 15px;
border-radius: 50%; border-radius: 50%;
} }
.user-info-des {
margin-bottom: 5px;
} }
} }
} }

View File

@ -4,257 +4,181 @@ import { STColumn, STComponent } from '@delon/abc/st';
import { SFComponent, SFDateWidgetSchema, SFSchema, SFTagWidgetSchema, SFTextWidgetSchema, SFUISchema } from '@delon/form'; import { SFComponent, SFDateWidgetSchema, SFSchema, SFTagWidgetSchema, SFTextWidgetSchema, SFUISchema } from '@delon/form';
import { ModalHelper, _HttpClient } from '@delon/theme'; import { ModalHelper, _HttpClient } from '@delon/theme';
import { NzMessageService } from 'ng-zorro-antd/message'; import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalService } from 'ng-zorro-antd/modal';
import { UsermanageService } from '../../../services/usercenter.service'; import { UsermanageService } from '../../../services/usercenter.service';
@Component({ @Component({
selector: 'app-usercenter-components-driver-detail', selector: 'app-usercenter-components-driver-detail',
templateUrl: './detail.component.html', templateUrl: './detail.component.html',
styleUrls: ['./detail.component.less'], styleUrls: ['./detail.component.less']
}) })
export class UserCenterComponentsDriverDetailComponent implements OnInit { export class UserCenterComponentsDriverDetailComponent implements OnInit {
i: any;
url = `/rule?_allow_anonymous=true`;
@ViewChild('st', { static: false }) st!: STComponent;
detailData: any; detailData: any;
isShow = false; userDetail: any;
isVisible = false; userIdentityDetail: any;
isVisibleNo = false; driverDetail: any;
modalTitle = '有效期'; licenseDetail: any;
modalName = ''; carList: any = [];
ui!: SFUISchema;
schema!: SFSchema;
ui2!: SFUISchema;
schema2!: SFSchema;
@ViewChild('sf', { static: false }) sf!: SFComponent;
schema1!: SFSchema;
@ViewChild('sf2', { static: false }) sf2!: SFComponent;
validData: any = ['suppliersType'];
suppliersData: any = {};
constructor( @ViewChild('redectModal', { static: false })
private http: _HttpClient, redectModal!: any;
private modal: ModalHelper, @ViewChild('rejectedDriverModal', { static: false })
public service: UsermanageService, rejectedDriverModal!: any;
private route: ActivatedRoute, approvalOpinion = '';
private modalHelper: ModalHelper, constructor(private nzModalService: NzModalService, public service: UsermanageService, private route: ActivatedRoute) {}
private msgSrv: NzMessageService,
) {}
ngOnInit() { ngOnInit() {
console.log(this.route.snapshot); this.initData();
// this.initData();
this.initSF();
this.initSFNo();
// this.launchSign();
} }
/** initData() {
* 初始化查询表单 // 获取司机头部信息
*/ this.service
initSF() { .request(this.service.$api_get_user_detail, {
this.schema = { appUserId: this.route.snapshot.params.id
properties: { })
_$expand: { type: 'boolean', ui: { hidden: true } }, .subscribe(res => {
effectiveDate: { if (res) {
title: '有效期', this.userDetail = res;
type: 'string',
ui: {
widget: 'date',
format: 'yyyy-MM-dd 00:00:00',
// hidden: this.modalName === 'effectiveDate' ? false : true,
} as SFDateWidgetSchema,
},
},
required: ['effectiveDate'],
};
this.ui = { '*': { spanLabelFixed: 120, grid: { span: 24 } } };
} }
initSFNo() { });
this.schema2 = { // 获取用户个人信息
properties: { this.service
'姓名': { type: 'number', ui: { widget: 'text', defaultText: '深圳市星链供应链云科技有限公' } as SFTextWidgetSchema }, .request(this.service.$api_get_user_identity, {
roleDescription: { id: this.route.snapshot.params.id
title: '备注', })
type: 'string', .subscribe(res => {
maxLength: 30, if (res) {
ui: { this.userIdentityDetail = res;
placeholder: '请输入地址',
widget: 'textarea',
},
},
like: {
type: 'number',
title: '可选理由',
enum: [
{ value: 1, label: '电影' },
{ value: 2, label: '书' },
{ value: 3, label: '旅行' },
],
ui: {
widget: 'tag',
} as SFTagWidgetSchema,
default: [1, 2],
},
},
required: ['roleDescription'],
};
this.ui2 = { '*': { spanLabelFixed: 120, grid: { span: 24 } } };
} }
showModal(name: any) { });
this.modalName = name; // 获取驾驶证信息
if (name === 'effectiveDate') { this.service
this.isShow = true; .request(this.service.$api_get_driver_license, { appUserId: this.route.snapshot.params.id }, 'POST', false)
} else { .subscribe(res => {
this.isVisible = true; if (res) {
this.driverDetail = res;
} }
});
// 获取从业资格证信息
this.service
.request(this.service.$api_get_driver_practice_seniority, { appUserId: this.route.snapshot.params.id }, 'POST', false)
.subscribe(res => {
if (res) {
this.licenseDetail = res;
} }
async initData() { });
console.log(this.route.snapshot, 'this.route.snapshot'); // 获取载具信息
this.service
const params = { .request(this.service.$api_get_driver_car_license, { appUserId: this.route.snapshot.params.id }, 'POST', false)
tenantId: this.route.snapshot.params.id, .subscribe(res => {
// tenantId: this.route.snapshot.queryParams.tenantId, if (res) {
}; this.carList = res;
const res = await this.service.asyncRequest(this.service.$api_get_one, params); }
// // 商品资质 });
// if (res.enterpriseBusinessJson) {
// res.enterpriseBusinessJson.aptitudes = res.enterpriseBusinessJson?.aptitudes ? res.enterpriseBusinessJson.aptitudes.split(',') : [];
// }
// // // 申请人身份证证件
// // res.applyUserJson.imagelist = [];
// // res.applyUserJson.imagelist.push(res.applyUserJson.certificatePhotoFront);
// // res.applyUserJson.imagelist.push(res.applyUserJson.certificatePhotoBack);
// // res.applyUserJson.imagelist.push(res.applyUserJson.handCertificate);
// 法人身份证证件
const imagelist = [];
imagelist.push(res?.certificatePhotoFront);
imagelist.push(res?.certificatePhotoBack);
res.certificatePhoto = imagelist;
// 营业执照
res.enterpriseQualificationCertificate = res.enterpriseQualificationCertificate
? res.enterpriseQualificationCertificate.split(',')
: [];
// 返回所在地
res.enterpriseAddressCodeStr = await this.getRegionFullName(res.enterpriseAddressCode);
this.detailData = res;
this.suppliersData = {
suppliersType: res?.suppliersType,
externalSuppliersId: res?.externalSuppliersId,
};
} }
/** userAction(status: number) {
* 根据地区code查询地区详情 this.nzModalService.warning({
* @param code 地区代码 nzTitle: status === 1 ? '确定启用该司机吗?' : '确定冻结该司机吗?',
*/ nzContent: status === 1 ? '停用后,司机将被限制使用,无法登陆,请谨慎操作!' : '启用后,该司机将恢复正常使用功能,请再次确认!',
async getRegionFullName(code: any) { nzOnOk: () => {
const params = { // this.service.request(this.service.$api_lock_user)
regionCode: code, this.initData();
};
const res = await this.service.asyncRequest(this.service.$api_get_one, params, 'POST', true);
// if (res && res.regionFullName) {
// const arr = res.regionFullName.split(',');
// res.regionFullName = arr.reverse().join('-');
// }
return res && res.regionFullName;
} }
add() { });
// this.modal
// .createStatic(FormEditComponent, { i: { id: 0 } })
// .subscribe(() => this.st.reload());
} }
approveUser() {
this.nzModalService.confirm({
nzTitle: '审核通过',
nzContent: `是否确认通过(姓名:${this.userDetail?.name})审核`,
nzOnOk: () => {
this.adjuctUser({ auditStatus: 0, auditType: 0, identityId: this.userIdentityDetail?.id }, '审核通过');
}
});
}
rejectedUser() {
this.approvalOpinion = '';
this.nzModalService.create({
nzTitle: '审核驳回',
nzContent: this.redectModal,
nzOnOk: () => {
if (!this.approvalOpinion) {
return false;
}
this.adjuctUser(
{
auditStatus: 1,
auditType: 0,
identityId: this.userIdentityDetail?.id,
certificationOpinions: this.approvalOpinion
},
'审核驳回成功'
);
return;
}
});
}
approveDriver() {
this.nzModalService.confirm({
nzTitle: '审核通过',
nzContent: `<p>驾驶证号:${this.driverDetail?.licenseNo}</p><p>从业资格证号:${this.licenseDetail?.licenseNo}</p><p>是否确认通过审核`,
nzOnOk: () => {
this.adjuctDriverLicense(
{
auditStatus: 20,
appUserId: this.userDetail?.appUserId,
},
'审核成功'
);}
});
}
rejectedDriver() {
this.approvalOpinion = '';
this.nzModalService.create({
nzTitle: '审核驳回',
nzContent: this.rejectedDriverModal,
nzOnOk: () => {
if (!this.approvalOpinion) {
return false;
}
this.adjuctDriverLicense(
{
auditStatus: 30,
appUserId: this.userDetail?.appUserId,
approvalOpinion: this.approvalOpinion
},
'审核驳回成功'
);
return;
}
});
}
private adjuctUser(params: any, msg: string) {
this.service.request(this.service.$api_approve_identity, { ...params }).subscribe(res => {
if (res) {
this.service.msgSrv.success(msg);
}
this.initData();
});
}
private adjuctDriverLicense(params: any, msg: string) {
this.service.request(this.service.$api_approve_driver_license, { ...params }).subscribe(res => {
if (res) {
this.service.msgSrv.success(msg);
}
this.initData();
});
}
ratify() {}
goBack() { goBack() {
window.history.go(-1); window.history.go(-1);
} }
/**
* 冻结
*/
freezeOrResume(type: number) {
console.log(type)
// this.service.http
// .post(this.service.$api_set_freezeOrResume, {
// tenantId: this.route.snapshot.params.id,
// // tenantId: this.route.snapshot.queryParams.tenantId,
// status: type,
// })
// .subscribe((res) => {
// if (res.data === true) {
// if (type === 0) {
// this.service.msgSrv.success(`启用成功!`);
// } else if (type === 1) {
// this.service.msgSrv.success(`冻结成功!`);
// }
// this.ngOnInit();
// } else {
// this.service.msgSrv.error(res.msg || '操作失败!');
// }
// });
}
PayOrResume(type: number) {
console.log(type)
// this.service.http
// .post(this.service.$api_set_freezeOrResume, {
// tenantId: this.route.snapshot.params.id,
// // tenantId: this.route.snapshot.queryParams.tenantId,
// status: type,
// })
// .subscribe((res) => {
// if (res.data === true) {
// if (type === 0) {
// this.service.msgSrv.success(`启用成功!`);
// } else if (type === 1) {
// this.service.msgSrv.success(`冻结成功!`);
// }
// this.ngOnInit();
// } else {
// this.service.msgSrv.error(res.msg || '操作失败!');
// }
// });
}
handleCancel(name: any) {
if (name === 'suppliersTypeNo') {
this.isVisibleNo = false;
} else {
this.isVisible = false;
}
}
handleOK() {
const params: any = {
tenantId: this.route.snapshot.params.id,
// tenantId: this.route.snapshot.queryParams.tenantId,
};
// if (name === 'effectiveDate') {
// params.effectiveDate = this.sf?.value?.effectiveDate;
// } else {
// Object.assign(params, this.sf1?.value);
// }
// this.service.http.post(this.service.$api_set_freezeOrResume, params).subscribe((res) => {
// if (res.data === true) {
// this.service.msgSrv.success(`编辑成功!`);
// this.ngOnInit();
// } else {
// this.service.msgSrv.error(res.msg || '编辑失败!');
// }
// if (name === 'effectiveDate') {
// this.isShow = false;
// } else {
// this.isVisible = false;
// }
// });
}
auditPass() {
this.isVisible = true
}
auditNo() {
this.isVisibleNo = true
}
ratify() {
}
} }

View File

@ -23,15 +23,23 @@
<!-- 数据列表 --> <!-- 数据列表 -->
<!-- [data]="service.$api_get_supplier_page" --> <!-- [data]="service.$api_get_supplier_page" -->
<st #st [bordered]="true" [columns]="columns" [data]='service.$api_get_freight_list' <st #st [bordered]="true" [columns]="columns" [data]='service.$api_get_driver_list'
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }" [req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
[res]="{ reName: { list: 'data.records', total: 'data.total' } }" [res]="{ reName: { list: 'data.records', total: 'data.total' } }"
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }" [loadingDelay]="500" [page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }" [loadingDelay]="500"
[loading]="service.http.loading"> [loading]="service.http.loading">
<ng-template st-row="contactsPhone" let-item let-index="index"> <ng-template st-row="promotersTelephone" let-item let-index="index">
<div style="color: #52c41a;" (click)="daoyun(item)"> <a (click)="addPromoter(item)">{{ item.promotersTelephone || '添加' }}</a>
{{ item.contactsPhone }}
</div>
</ng-template> </ng-template>
</st> </st>
</nz-card> </nz-card>
<ng-template #promoterModal>
<div nz-row nzGutter="8">
<div nz-col nzSpan="24" se-container [labelWidth]="80">
<se [col]="1" label="手机号">
<input nz-input [(ngModel)]="promotersTelephone" />
</se>
</div>
</div>
</ng-template>

View File

@ -11,13 +11,15 @@ import { UsermanageService } from '../../services/usercenter.service';
}) })
export class UserCenterComponentsDriverComponent implements OnInit { export class UserCenterComponentsDriverComponent implements OnInit {
_$expand = false; _$expand = false;
url = `/rule?_allow_anonymous=true`;
ui: SFUISchema = { '*': { spanLabelFixed: 120, grid: { lg: 8, md: 12, sm: 12, xs: 24 }, enter: () => this.st.load() } };
schema: SFSchema = this.initSF();
columns!: STColumn[];
@ViewChild('st', { static: false }) st!: STComponent; @ViewChild('st', { static: false }) st!: STComponent;
@ViewChild('sf', { static: false }) sf!: SFComponent; @ViewChild('sf', { static: false }) sf!: SFComponent;
ui: SFUISchema = { '*': { spanLabelFixed: 120, grid: { lg: 8, md: 12, sm: 12, xs: 24 }, enter: () => this.st.load() } };
schema: SFSchema = this.initSF();
columns: STColumn[] = this.initST();
@ViewChild('promoterModal', { static: false })
promoterModal!: any;
promotersTelephone = '';
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) {}
@ -44,80 +46,38 @@ export class UserCenterComponentsDriverComponent implements OnInit {
} }
ngOnInit() { ngOnInit() {
this.initST();
this.ar.url.subscribe(params => { this.ar.url.subscribe(params => {
this.st?.load(1); this.st?.load(1);
}); });
} }
initST() { addPromoter(item?: any) {
this.columns = [ this.promotersTelephone = item?.promotersTelephone;
// { title: '', type: 'checkbox', className: 'text-center' }, const modal = this.modal.create({
{ title: '司机姓名', className: 'text-center', index: 'storeName' }, nzTitle: '推广业务员',
{ title: '手机号', className: 'text-center', index: 'contactsName' }, nzContent: this.promoterModal,
{ title: '承运总单量', className: 'text-center', render: 'enterpriseName' }, nzOnOk: () => {
{ title: '当前车辆', className: 'text-center', index: 'unifiedSocialCreditCode' }, if (!!!this.promotersTelephone) {
{ return false;
title: '实名认证状态',
className: 'text-center',
index: 'effectiveDateStr',
type: 'badge',
badge: {
: { text: '正常', color: 'success' },
: { text: '冻结', color: 'warning' },
: { text: '废弃', color: 'default' }
} }
}, if (typeof this.promotersTelephone === 'string' && !/(^1\d{10}$)/.test(this.promotersTelephone)) {
{ return false;
title: '驾驶证状态',
className: 'text-center',
index: 'enStatusStr2',
type: 'badge',
badge: {
: { text: '正常', color: 'success' },
: { text: '冻结', color: 'warning' },
: { text: '废弃', color: 'default' }
} }
}, this.service.request(this.service.$api_add_salesman, { ids: [item.id], salesmanMobile: this.promotersTelephone }).subscribe(res => {
{ if (res) {
title: '从业资格证状态', this.service.msgSrv.success(item?.promotersTelephone ? '添加推广员成功' : '修改推广员成功');
className: 'text-center',
index: 'enStatusStr3',
type: 'badge',
badge: {
: { text: '正常', color: 'success' },
: { text: '冻结', color: 'warning' },
: { text: '废弃', color: 'default' }
} }
}, this.st.load();
{ title: '推广业务员', className: 'text-center', index: 'unifiedSocialCreditCode2' }, });
{ title: '注册时间', className: 'text-center', index: 'unifiedSocialCreditCode3' }, return;
{
title: '操作',
width: '170px',
className: 'text-center',
buttons: [
{
text: '查看',
click: item => {
this.router.navigate(['./detail', item.tenantId], { relativeTo: this.ar });
// this.router.navigate(['./view', item.id], { relativeTo: this.ar, queryParams: { tenantId: item.tenantId } });
} }
});
} }
]
}
];
}
daoyun(item: any) {
this.router.navigate(['./view', item.tenantId], { relativeTo: this.ar });
}
expandToggle() { expandToggle() {
this._$expand = !this._$expand; this._$expand = !this._$expand;
this.sf?.setValue('/expand', this._$expand); this.sf?.setValue('/expand', this._$expand);
} }
creat() {
this.router.navigate(['./new'], { relativeTo: this.ar });
}
/** /**
* 重置表单 * 重置表单
*/ */
@ -238,4 +198,64 @@ export class UserCenterComponentsDriverComponent implements OnInit {
} }
}; };
} }
private initST(): STColumn[] {
return [
{ title: '司机姓名', className: 'text-center', index: 'name' },
{ title: '手机号', className: 'text-center', index: 'mobile' },
{ title: '当前车辆', className: 'text-center', index: 'carNo' },
{
title: '实名认证状态',
className: 'text-center',
index: 'identityStatus',
type: 'badge',
badge: {
0: { text: '待审核', color: 'default' },
1: { text: '通过', color: 'success' },
2: { text: '驳回', color: 'warning' }
}
},
{
title: '驾驶证状态',
className: 'text-center',
index: 'driverLicenseStatus',
type: 'badge',
badge: {
10: { text: '待审核', color: 'default' },
20: { text: '审核通过', color: 'success' },
30: { text: '驳回', color: 'warning' },
40: { text: '证件过期', color: 'error' }
}
},
{
title: '从业资格证状态',
className: 'text-center',
index: 'practiceSenioritLicenseStatus',
type: 'badge',
badge: {
10: { text: '待审核', color: 'default' },
20: { text: '审核通过', color: 'success' },
30: { text: '驳回', color: 'warning' },
40: { text: '证件过期', color: 'error' }
}
},
{ title: '推广业务员', className: 'text-center', render: 'promotersTelephone' },
{ title: '注册渠道', className: 'text-center', index: 'source', type: 'enum', enum: { 1: '自己录入', 2: '运营录入' } },
{ title: '注册时间', className: 'text-center', index: 'createTime' },
{
title: '操作',
width: '170px',
className: 'text-center',
buttons: [
{
text: '查看',
click: item => {
this.router.navigate(['./detail', item.appUserId], { relativeTo: this.ar });
// this.router.navigate(['./view', item.id], { relativeTo: this.ar, queryParams: { tenantId: item.tenantId } });
}
}
]
}
];
}
} }

View File

@ -16,9 +16,9 @@ export class FreightComponentsListComponent implements OnInit {
columns!: STColumn[]; columns!: STColumn[];
@ViewChild('st', { static: false }) st!: STComponent; @ViewChild('st', { static: false }) st!: STComponent;
@ViewChild('sf', { static: false }) sf!: SFComponent; @ViewChild('sf', { static: false }) sf!: SFComponent;
@ViewChild('promoterModal', { static: false }) @ViewChild('promoterModal', { static: false })
promoterModal!: any; promoterModal!: any;
promotersTelephone = ''; promotersTelephone = '';
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) {}

View File

@ -34,16 +34,32 @@ export class UsermanageService extends BaseService {
// 企业审核 // 企业审核
$api_audit_freight = '/api/mdc/cuc/enterpriseInfo/operate/audit'; $api_audit_freight = '/api/mdc/cuc/enterpriseInfo/operate/audit';
// 货主员工列表(运营后台) // 货主员工列表(运营后台)
$api_get_user_list = '/api/mdc/cuc/userApp/getShipperUserList'; $api_get_user_list = '/api/mdc/cuc/userApp/getShipperUserList';
// 根据应用用户id获取用户详情
$api_get_user_detail = '/api/mdc/cuc/user/getUserDetailByAppUserId';
// 冻结/启用用户 // 冻结/启用用户
$api_lock_user = '/api/mdc/cuc/enterpriseInfo/operate/lock'; $api_lock_user = '/api/mdc/cuc/enterpriseInfo/operate/lock';
// 查询司机列表
$api_get_driver_list = '/api/mdc/cuc/driver/list/page';
// 根据应用用户id获取用户详情
$api_get_user_detail = '/api/mdc/cuc/user/getUserDetailByAppUserId';
// 根据应用用户ID获取身份信息表
$api_get_user_identity = '/api/mdc/cuc/identityInfo/getIdentityInfoByAppUserId';
// 司机详情查看-驾驶证
$api_get_driver_license = '/api/mdc/cuc/driver/getDriversLicense';
// 司机详情查看-从业资格证信息
$api_get_driver_practice_seniority = '/api/mdc/cuc/driver/getDriversPracticeSeniority';
// 司机详情查看-载具信息
$api_get_driver_car_license = '/api/mdc/cuc/driver/getUserCarLicense';
// 人工审核实名认证
$api_approve_identity = '/api/mdc/cuc/identityInfo/identityAudit';
// 审核驾驶证信息
$api_approve_driver_license = '/api/mdc/cuc/driver/auditDriverLicense';
constructor(public injector: Injector) { constructor(public injector: Injector) {
super(injector); super(injector);
} }