Merge branch 'develop' of https://gitlab.eascs.com/tms-ui/tms-obc-web into develop

This commit is contained in:
wangshiming
2021-12-10 14:42:57 +08:00
7 changed files with 471 additions and 530 deletions

View File

@ -1,78 +1,47 @@
<ng-container>
<!-- 页头 -->
<page-header-wrapper [logo]="logo" [title]="'司机详情'" [action]="action" [content]="content">
<page-header-wrapper [logo]="logo" [title]="'司机详情'" [content]="content">
<ng-template #logo>
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
<i nz-icon nzType="left" nzTheme="outline"></i>
</button>
</ng-template>
<ng-template #content>
<nz-skeleton [nzLoading]="service.http.loading">
<div class="user-info">
<img [src]="detailData?.shoppFeignVO?.logoUrl" />
<img [src]="userDetail?.avatar" />
<div style="flex: 1">
<div style="display: flex;">
<p style="padding-right: 80px; width: 400px;">张司机{{ detailData?.shoppFeignVO?.publicity }}</p>
<nz-badge nzStatus="success" nzText="正常" ></nz-badge>
<nz-badge nzStatus="error" nzText="冻结" *ngIf="detailData?.status === 1"></nz-badge>
<nz-badge nzStatus="warning" nzText="废弃" *ngIf="detailData?.status === 2"></nz-badge>
<p style="padding-right: 80px; width: 400px;">{{ userDetail?.name }}</p>
<nz-badge nzStatus="error" nzText="正常" *ngIf="userDetail?.stateLocked"></nz-badge>
<nz-badge nzStatus="warning" nzText="冻结" *ngIf="!userDetail?.stateLocked"></nz-badge>
</div>
<div style="display: flex;">
<p style="padding-right: 80px; width: 400px;">手机号:1452454545{{ detailData?.shoppFeignVO?.introduction }}</p>
<p >认证时间2021-09-02 12.53.32</p>
</div>
<div>
服务评级:<nz-rate [ngModel]="2" nzDisabled></nz-rate>
<p style="padding-right: 80px; width: 400px;">手机号:{{ userDetail?.phone }}
</p>
<p>注册时间:{{ userDetail?.createTime }}</p>
</div>
<div style="position: relative;top: -65%;
left: 75%;">
<button
[nzLoading]="service.http.loading"
nz-button
nzDanger
nz-popconfirm
[nzPopconfirmTitle]="enable"
(nzOnConfirm)="freezeOrResume(0)"
nzPopconfirmPlacement="bottomRight"
>
<div style="float: right;margin-right: 24px;">
<button [nzLoading]="service.http.loading" nz-button nzType="primary" nzGhost nz-popconfirm
[nzPopconfirmTitle]="enable" (nzOnConfirm)="userAction(1)" nzPopconfirmPlacement="bottomRight">
启用
</button>
<button
[nzLoading]="service.http.loading"
nz-button
nzDanger
nz-popconfirm
[nzPopconfirmTitle]="frozen"
(nzOnConfirm)="freezeOrResume(1)"
nzPopconfirmPlacement="bottomRight"
>
<button [nzLoading]="service.http.loading" nz-button nzDanger nz-popconfirm [nzPopconfirmTitle]="frozen"
(nzOnConfirm)="userAction(0)" nzPopconfirmPlacement="bottomRight">
冻结
</button>
</div>
</div>
</div>
</nz-skeleton>
</ng-template>
<ng-template #action> </ng-template>
<ng-template #frozen>
<div class="ant-popover-message">
<i nz-icon="" nztheme="fill" class="anticon anticon-exclamation-circle ng-star-inserted">
<svg
viewBox="64 64 896 896"
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>
<i nz-icon nzType="info-circle" nzTheme="fill"></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>
@ -80,141 +49,153 @@
</ng-template>
<ng-template #enable>
<div class="ant-popover-message">
<i nz-icon="" nztheme="fill" class="anticon anticon-exclamation-circle ng-star-inserted">
<svg
viewBox="64 64 896 896"
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>
<i nz-icon nzType="info-circle" nzTheme="fill"></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>
</div>
</ng-template>
</page-header-wrapper>
<nz-card>
<nz-card [nzLoading]="service.http.loading">
<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="姓名">
{{ detailData?.contactsName }}
{{ userIdentityDetail?.name }}
</sv>
<sv label="身份证号">
{{ detailData?.contactsPhone }}
{{ userIdentityDetail?.certificateNumber }}
</sv>
</sv-container>
<sv-container col="1">
<sv label="企业授权函">
<!-- <app-imagelist [imgList]="detailData?.enterpriseQualificationCertificate"></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>
</div>
</div>
<app-imagelist
[imgList]="[userIdentityDetail?.certificatePhotoFrontWatermark,userIdentityDetail?.certificatePhotoBackWatermark]">
</app-imagelist>
</sv>
</sv-container>
<nz-divider></nz-divider>
<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="驾驶证号">
{{ detailData?.enterpriseName }}
{{ driverDetail?.licenseNo }}
</sv>
<sv label="准驾车型">
{{ detailData?.unifiedSocialCreditCode }}
{{ driverDetail?.driverModel }}
</sv>
<sv label="有效期起">
{{ detailData?.enterpriseType }}
{{ driverDetail?.validStartTime }}
</sv>
</sv-container>
<sv-container col="2" class="mt16">
<sv label="有效期至">
{{ detailData?.registrationCapital }}
<span *ngIf="detailData?.registrationCapital">万元</span>
{{ driverDetail?.validEndTime }}
<span *ngIf="driverDetail?.registrationCapital">万元</span>
</sv>
<sv label="驾驶证签发机关">
{{ detailData?.enterpriseRegistrationTime }}
{{ driverDetail?.signingOrganization }}
</sv>
<sv label="驾驶证照片">
<!-- <app-imagelist [imgList]="detailData?.enterpriseQualificationCertificate"></app-imagelist> -->
<app-imagelist [imgList]="[detailData?.certificatePhotoWatermark]"></app-imagelist>
</sv>
</sv-container>
<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="从业资格证号">
{{ detailData?.businessScope }}
{{ licenseDetail?.licenseNo }}
</sv>
<sv label="发证日期">
{{ detailData?.businessScope }}
{{ licenseDetail?.validStartTime }}
</sv>
<sv label="有效期至">
{{ detailData?.businessScope }}
{{ licenseDetail?.validEndTime }}
</sv>
</sv-container>
<sv-container col="1">
<sv label="从业资格证照片">
<!-- <app-imagelist [imgList]="detailData?.enterpriseQualificationCertificate"></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>
<app-imagelist [imgList]="[licenseDetail?.certificatePhotoWatermark]"></app-imagelist>
</sv>
</sv-container>
<nz-divider></nz-divider>
<sv-container col="3" class="mt16">
<sv-title>载具信息</sv-title>
<ng-container *ngFor="let carDatail of carList">
<sv label="车牌号">
{{ detailData?.name }}
{{ carDatail?.carNo }}
</sv>
<sv label="车牌颜色">
{{ detailData?.certificateNumber }}
{{ carDatail?.carNoColor }}
</sv>
<sv label="车型">
{{ detailData?.validStartTime }}
{{ carDatail?.carModel }}
</sv>
<sv label="车长">
{{ detailData?.validStartTime }}
{{ carDatail?.carLength }}
</sv>
<sv label="是否为当前车辆">
{{ detailData?.validStartTime }}
{{ carDatail?.isDefault?'是':'否' }}
</sv>
<sv label="自有载具">
{{ detailData?.validStartTime }}
{{ carDatail?.isSelf?'否':'是' }}
</sv>
<sv label="行驶证照片" col="1">
<!-- <app-imagelist [imgList]="detailData?.certificatePhoto"></app-imagelist> -->
<sv label="行驶证照片" col="3">
<app-imagelist
[imgList]="[carDatail?.certificatePhotoFrontWatermark,carDatail?.certificatePhotoBackWatermark]">
</app-imagelist>
</sv>
<sv label="道路运输证照片" col="1">
<!-- <app-imagelist [imgList]="detailData?.certificatePhoto"></app-imagelist> -->
<sv label="道路运输证照片" col="3">
<app-imagelist [imgList]="[carDatail?.roadTransportPhotoWatermark]"></app-imagelist>
</sv>
<sv label="车头照" col="1">
<!-- <app-imagelist [imgList]="detailData?.certificatePhoto"></app-imagelist> -->
<sv label="车头照" col="3">
<app-imagelist [imgList]="[carDatail?.carFrontPhotoWatermark]"></app-imagelist>
</sv>
</sv-container>
<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 label="开户银行">
{{ detailData?.name }}
@ -223,6 +204,7 @@
{{ detailData?.certificateNumber }}
</sv>
</sv-container>
<nz-divider></nz-divider>
<sv-container col="3" class="mt16">
<sv-title>服务评级</sv-title>
@ -246,29 +228,42 @@
</sv>
</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>
</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>
<button nz-button nzType="default" (click)="handleCancel('suppliersTypeNo')">取消</button>
<button nz-button nzType="primary" (click)="handleOK()" [disabled]="">确认</button>
<ng-template #redectModal>
<div nz-row nzGutter="8">
<div nz-col nzSpan="24" se-container [labelWidth]="120">
<se [col]="1" label="姓名">
{{ 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>
</nz-modal>

View File

@ -1,46 +1,24 @@
@import '~@delon/theme/index';
:host {
::ng-deep {
.ant-steps-dot {
.ant-steps-item-content {
width: 200px;
}
.ant-steps-item-icon {
margin-left: 96px;
}
.ant-steps-item-tail::after {
margin-left: 40px;
}
}
.success {
color: @success-color;
.sv__title {
font-weight: 600;
}
.warning {
color: @warning-color;
}
.error {
color: @error-color;
}
}
.mt16 {
margin-top: 16px;
}
.user-info {
display : flex;
font-size: 16px;
.enterprise-name {
margin-right: 15px;
}
img {
width : 64px;
height : 64px;
margin-right : 15px;
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 { ModalHelper, _HttpClient } from '@delon/theme';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalService } from 'ng-zorro-antd/modal';
import { UsermanageService } from '../../../services/usercenter.service';
@Component({
selector: 'app-usercenter-components-driver-detail',
templateUrl: './detail.component.html',
styleUrls: ['./detail.component.less'],
styleUrls: ['./detail.component.less']
})
export class UserCenterComponentsDriverDetailComponent implements OnInit {
i: any;
url = `/rule?_allow_anonymous=true`;
@ViewChild('st', { static: false }) st!: STComponent;
detailData: any;
isShow = false;
isVisible = false;
isVisibleNo = false;
modalTitle = '有效期';
modalName = '';
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 = {};
userDetail: any;
userIdentityDetail: any;
driverDetail: any;
licenseDetail: any;
carList: any = [];
constructor(
private http: _HttpClient,
private modal: ModalHelper,
public service: UsermanageService,
private route: ActivatedRoute,
private modalHelper: ModalHelper,
private msgSrv: NzMessageService,
) {}
@ViewChild('redectModal', { static: false })
redectModal!: any;
@ViewChild('rejectedDriverModal', { static: false })
rejectedDriverModal!: any;
approvalOpinion = '';
constructor(private nzModalService: NzModalService, public service: UsermanageService, private route: ActivatedRoute) {}
ngOnInit() {
console.log(this.route.snapshot);
// this.initData();
this.initSF();
this.initSFNo();
// this.launchSign();
this.initData();
}
/**
* 初始化查询表单
*/
initSF() {
this.schema = {
properties: {
_$expand: { type: 'boolean', ui: { hidden: true } },
effectiveDate: {
title: '有效期',
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 } } };
initData() {
// 获取司机头部信息
this.service
.request(this.service.$api_get_user_detail, {
appUserId: this.route.snapshot.params.id
})
.subscribe(res => {
if (res) {
this.userDetail = res;
}
initSFNo() {
this.schema2 = {
properties: {
'姓名': { type: 'number', ui: { widget: 'text', defaultText: '深圳市星链供应链云科技有限公' } as SFTextWidgetSchema },
roleDescription: {
title: '备注',
type: 'string',
maxLength: 30,
ui: {
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 } } };
});
// 获取用户个人信息
this.service
.request(this.service.$api_get_user_identity, {
id: this.route.snapshot.params.id
})
.subscribe(res => {
if (res) {
this.userIdentityDetail = res;
}
showModal(name: any) {
this.modalName = name;
if (name === 'effectiveDate') {
this.isShow = true;
} else {
this.isVisible = true;
});
// 获取驾驶证信息
this.service
.request(this.service.$api_get_driver_license, { appUserId: this.route.snapshot.params.id }, 'POST', false)
.subscribe(res => {
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');
const params = {
tenantId: this.route.snapshot.params.id,
// tenantId: this.route.snapshot.queryParams.tenantId,
};
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,
};
});
// 获取载具信息
this.service
.request(this.service.$api_get_driver_car_license, { appUserId: this.route.snapshot.params.id }, 'POST', false)
.subscribe(res => {
if (res) {
this.carList = res;
}
});
}
/**
* 根据地区code查询地区详情
* @param code 地区代码
*/
async getRegionFullName(code: any) {
const params = {
regionCode: code,
};
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;
userAction(status: number) {
this.nzModalService.warning({
nzTitle: status === 1 ? '确定启用该司机吗?' : '确定冻结该司机吗?',
nzContent: status === 1 ? '停用后,司机将被限制使用,无法登陆,请谨慎操作!' : '启用后,该司机将恢复正常使用功能,请再次确认!',
nzOnOk: () => {
// this.service.request(this.service.$api_lock_user)
this.initData();
}
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() {
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" -->
<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 }"
[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"
[loading]="service.http.loading">
<ng-template st-row="contactsPhone" let-item let-index="index">
<div style="color: #52c41a;" (click)="daoyun(item)">
{{ item.contactsPhone }}
</div>
<ng-template st-row="promotersTelephone" let-item let-index="index">
<a (click)="addPromoter(item)">{{ item.promotersTelephone || '添加' }}</a>
</ng-template>
</st>
</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 {
_$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('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) {}
@ -44,80 +46,38 @@ export class UserCenterComponentsDriverComponent implements OnInit {
}
ngOnInit() {
this.initST();
this.ar.url.subscribe(params => {
this.st?.load(1);
});
}
initST() {
this.columns = [
// { title: '', type: 'checkbox', className: 'text-center' },
{ title: '司机姓名', className: 'text-center', index: 'storeName' },
{ title: '手机号', className: 'text-center', index: 'contactsName' },
{ title: '承运总单量', className: 'text-center', render: 'enterpriseName' },
{ title: '当前车辆', className: 'text-center', index: 'unifiedSocialCreditCode' },
{
title: '实名认证状态',
className: 'text-center',
index: 'effectiveDateStr',
type: 'badge',
badge: {
: { text: '正常', color: 'success' },
: { text: '冻结', color: 'warning' },
: { text: '废弃', color: 'default' }
addPromoter(item?: any) {
this.promotersTelephone = item?.promotersTelephone;
const modal = this.modal.create({
nzTitle: '推广业务员',
nzContent: this.promoterModal,
nzOnOk: () => {
if (!!!this.promotersTelephone) {
return false;
}
},
{
title: '驾驶证状态',
className: 'text-center',
index: 'enStatusStr2',
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: 'enStatusStr3',
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) {
this.service.msgSrv.success(item?.promotersTelephone ? '添加推广员成功' : '修改推广员成功');
}
},
{ title: '推广业务员', className: 'text-center', index: 'unifiedSocialCreditCode2' },
{ title: '注册时间', className: 'text-center', index: 'unifiedSocialCreditCode3' },
{
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 } });
this.st.load();
});
return;
}
});
}
]
}
];
}
daoyun(item: any) {
this.router.navigate(['./view', item.tenantId], { relativeTo: this.ar });
}
expandToggle() {
this._$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[];
@ViewChild('st', { static: false }) st!: STComponent;
@ViewChild('sf', { static: false }) sf!: SFComponent;
@ViewChild('promoterModal', { static: false })
promoterModal!: any;
promotersTelephone = '';
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_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_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) {
super(injector);
}