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

This commit is contained in:
潘晓云
2022-04-22 18:11:22 +08:00
35 changed files with 1148 additions and 523 deletions

View File

@ -2,8 +2,14 @@
<page-header-wrapper [title]="'数据报表'"></page-header-wrapper>
<div nz-row [nzGutter]="16">
<div nz-col class="gutter-row" [nzSpan]="6">
<g2-card [title]="'客户预存款总额'" [bordered]="true" [total]="totalAdvanceDeposit?.totalAmount || '¥ 0.00万'"
<g2-card [title]="AdvanceDepositTitle" [bordered]="true" [total]="totalAdvanceDeposit?.totalAmount || '¥ 0.00万'"
[footer]="AdvanceDepositFooter" contentHeight="46">
<ng-template #AdvanceDepositTitle>
<p class="mini_area_title">
<span class="title">客户预存款总额</span>
<span class="subtitle">完成率 <span class="percent">32.12%</span></span>
</p>
</ng-template>
<ng-template #AdvanceDepositFooter>
<g2-mini-area line color="#cceafe" height="45" [data]="totalAdvanceDeposit?.list || []"
(clickItem)="handleClick($event)">
@ -12,8 +18,14 @@
</g2-card>
</div>
<div nz-col class="gutter-row" [nzSpan]="6">
<g2-card [title]="'业绩量总额'" [bordered]="true" [total]="totalPerformanceVolume?.totalAmount || '¥ 0.00万'"
[footer]="PerformanceVolumeFooter" contentHeight="46">
<g2-card [title]="PerformanceVolumeTitle" [bordered]="true"
[total]="totalPerformanceVolume?.totalAmount || '¥ 0.00万'" [footer]="PerformanceVolumeFooter" contentHeight="46">
<ng-template #PerformanceVolumeTitle>
<p class="mini_area_title">
<span class="title">业绩量总额</span>
<span class="subtitle">完成率 <span class="percent">32.12%</span></span>
</p>
</ng-template>
<ng-template #PerformanceVolumeFooter>
<g2-mini-area line color="#cceafe" height="45" [data]="totalPerformanceVolume?.list || []"
(clickItem)="handleClick($event)">
@ -22,20 +34,30 @@
</g2-card>
</div>
<div nz-col class="gutter-row" [nzSpan]="6">
<g2-card [title]="'司机应付总额'" [bordered]="true" [total]="totalFreight?.totalAmount || '¥ 0.00万'" [footer]="footer"
contentHeight="46">
<ng-template #footer>
<g2-mini-area line color="#cceafe" height="45" [data]="totalFreight?.list || []"
<g2-card [title]="FreightTitle" [bordered]="true" [total]="totalFreight?.totalAmount || '¥ 0.00万'"
[footer]="Freightfooter" contentHeight="46">
<ng-template #FreightTitle>
<p class="mini_area_title">
<span class="title">司机应付总额</span>
</p>
</ng-template>
<ng-template #Freightfooter>
<g2-mini-area line borderColor="#E60012" color="#F09896" height="45" [data]="totalFreight?.list || []"
(clickItem)="handleClick($event)">
</g2-mini-area>
</ng-template>
</g2-card>
</div>
<div nz-col class="gutter-row" [nzSpan]="6">
<g2-card [title]="'附加费总额'" [bordered]="true" [total]="totalSurcharge?.totalAmount || '¥ 0.00万'"
<g2-card [title]="SurchargeTitle" [bordered]="true" [total]="totalSurcharge?.totalAmount || '¥ 0.00万'"
[footer]="SurchargeFooter" contentHeight="46">
<ng-template #SurchargeTitle>
<p class="mini_area_title">
<span class="title">附加费总额</span>
</p>
</ng-template>
<ng-template #SurchargeFooter>
<g2-mini-area line color="#cceafe" height="45" [data]="totalSurcharge?.list || []"
<g2-mini-area line borderColor="#E60012" color="#F09896" height="45" [data]="totalSurcharge?.list || []"
(clickItem)="handleClick($event)">
</g2-mini-area>
</ng-template>
@ -43,13 +65,13 @@
</div>
</div>
<div nz-row [nzGutter]="16">
<div nz-col class="gutter-row" [nzSpan]="9">
<nz-card [nzTitle]="'订单类型比例'">
<div nz-col class="gutter-row" [nzSpan]="6">
<nz-card><label class="chart_title">订单类型比例</label>
<g2-custom #g2custom delay="100"></g2-custom>
</nz-card>
</div>
<div nz-col class="gutter-row" [nzSpan]="15">
<nz-card [nzTitle]="'大区业绩完成情况'">
<div nz-col class="gutter-row" [nzSpan]="18">
<nz-card><label class="chart_title">大区业绩完成情况</label>
<!-- <g2-timeline [data]="chartData" [titleMap]="{ y1: '订单金额(元)', y2: '' }" [height]="200" mask="MM月DD日"
[slider]="false"></g2-timeline> -->
<g2-custom #RegionalPerforman delay="100"></g2-custom>
@ -57,16 +79,17 @@
</div>
</div>
<div nz-row [nzGutter]="16">
<div nz-col class="gutter-row" [nzSpan]="9">
<nz-card [nzTitle]="'运单直付比例'">
<div nz-col class="gutter-row" [nzSpan]="6">
<nz-card> <label class="chart_title">运单直付比例</label>
<!-- <g2-pie #pie title="销售额" subTitle="销售额" [total]="total" [valueFormat]="format" [data]="salesPieData" height="294"
(clickItem)="handleClick($event)" [lineWidth]="10">
</g2-pie> -->
<g2-custom #BillDirectProportion delay="100"></g2-custom>
</nz-card>
</div>
<div nz-col class="gutter-row" [nzSpan]="15">
<nz-card [nzTitle]="'业绩完成情况'">
<div nz-col class="gutter-row" [nzSpan]="18">
<nz-card>
<label class="chart_title">业绩完成情况</label>
<!-- <g2-bar [data]="salesData" (clickItem)="handleClick($event)" height="400"></g2-bar> -->
<g2-custom #SaleProportion delay="100"></g2-custom>

View File

@ -0,0 +1,49 @@
.chart_title {
font-size : 16px;
font-weight : 500;
color : #1D2129;
line-height : 24px;
background-clip : text;
-webkit-background-clip: text;
position : absolute;
}
.mini_area_title {
display : flex;
justify-content: space-between;
.title {
font-size : 16px;
font-weight: 500;
color : #1D2129;
}
.subtitle {
font-size : 14px;
font-weight: 400;
color : #575D6C;
text-align : right;
.percent {
color: #E60012
}
}
}
:host::ng-deep {
.g2-card__meta-wrap {
width: 100%;
.g2-card__total {
font-size : 28px;
font-weight: 500;
color : #1D2129;
margin-top : 8px;
}
}
.g2-card__footer {
border: 0px;
}
}

View File

@ -82,8 +82,14 @@ export class DatatableDataindexComponent implements OnInit {
// 大区业绩完成情况
this.service.request(this.service.$api_getBillAmount).subscribe((res: DataPerformanceTrendVO[]) => {
if (res) {
this.regionalPerformanceCompletion = res.map(item => ({ ...item, time: new Date(item.time)?.getTime() }));
this.initRegionalPerformanceChart(this.RegionalPerforman['el'].nativeElement as any, this.regionalPerformanceCompletion);
// this.regionalPerformanceCompletion = res.map(item => ({ ...item, time: new Date(item.time)?.getTime() }));
// this.initRegionalPerformanceChart(this.RegionalPerforman['el'].nativeElement as any, this.regionalPerformanceCompletion);
this.regionalPerformanceCompletion = this.formatBarData(res);
this.initBiaxialChart(this.RegionalPerforman['el'].nativeElement as any, this.regionalPerformanceCompletion, {
y1Title: '业绩量(万)',
y2Title: '业绩完成率',
y3Title: '同期业绩完成率'
});
}
});
// 订单类型比例
@ -97,7 +103,11 @@ export class DatatableDataindexComponent implements OnInit {
this.service.request(this.service.$api_get_bill_payment_amount).subscribe(res => {
if (res) {
this.salesData = this.formatBarData(res);
this.initBiaxialChart(this.SaleProportion['el'].nativeElement as any, this.salesData);
this.initBiaxialChart(this.SaleProportion['el'].nativeElement as any, this.salesData, {
y1Title: '业绩量(万)',
y2Title: '业绩完成率',
y3Title: '同期业绩完成率'
});
}
});
}
@ -116,13 +126,13 @@ export class DatatableDataindexComponent implements OnInit {
const chart = new Chart({
container: el,
autoFit: true,
height: 400
height: 380
});
// 新建一个 view 用来单独渲染Annotation
const innerView = chart.createView();
chart.coordinate('theta', {
radius: 0.6,
innerRadius: 0.7
radius: 0.65,
innerRadius: 0.6
});
chart.data(data);
@ -138,17 +148,17 @@ export class DatatableDataindexComponent implements OnInit {
// 声明需要进行自定义图例字段: 'item'
chart.legend('item', {
position: 'right', // 配置图例显示位置
position: 'bottom', // 配置图例显示位置
custom: true, // 关键字段,告诉 G2要使用自定义的图例
items: data.map((obj: any, index: any) => {
return {
name: obj.item, // 对应 itemName
value: obj.percent, // 对应 itemValue
marker: {
symbol: 'square', // marker 的形状
symbol: 'circle', // marker 的形状
style: {
r: 5, // marker 图形半径
fill: chart.getTheme().colors10[index] // marker 颜色,使用默认颜色,同图形对应
fill: index === 0 ? '#E60012' : '#F09896' // marker 颜色,使用默认颜色,同图形对应
}
} // marker 配置
};
@ -165,7 +175,7 @@ export class DatatableDataindexComponent implements OnInit {
.interval()
.adjust('stack')
.position('percent')
.color('item')
.color('item', ['#E60012', '#F09896'])
.style({
fillOpacity: 1,
stroke: 'white',
@ -182,6 +192,14 @@ export class DatatableDataindexComponent implements OnInit {
};
}
}
})
.label('percent', percent => {
return {
content: data => {
return ` ${percent * 100}%`;
},
style: { fontSize: 14 }
};
});
innerView
@ -190,21 +208,21 @@ export class DatatableDataindexComponent implements OnInit {
position: ['50%', '50%'],
content: data[0].item,
style: {
fontSize: 20,
fontSize: 14,
fill: '#8c8c8c',
textAlign: 'center'
},
offsetY: -20
offsetY: -10
})
.text({
position: ['50%', '50%'],
content: data[0].count,
style: {
fontSize: 28,
fill: '#8c8c8c',
fontSize: 16,
fill: '##000',
textAlign: 'center'
},
offsetY: 20
offsetY: 10
});
innerView.render(true);
@ -242,21 +260,21 @@ export class DatatableDataindexComponent implements OnInit {
position: ['50%', '50%'],
content: data.item,
style: {
fontSize: 20,
fontSize: 14,
fill: '#8c8c8c',
textAlign: 'center'
},
offsetY: -20
offsetY: -10
})
.text({
position: ['50%', '50%'],
content: data.count,
style: {
fontSize: 28,
fill: '#8c8c8c',
fontSize: 16,
fill: '##000',
textAlign: 'center'
},
offsetY: 20
offsetY: 10
});
innerView.render(true);
lastItem = data.item;
@ -271,6 +289,50 @@ export class DatatableDataindexComponent implements OnInit {
}
}
/**
* 构建面积图
* @param el
*/
private initAreaMap(el: HTMLElement, datas: any[]): void {
const chart = new Chart({
container: el,
autoFit: true,
height: 500
});
chart.data(datas);
chart.scale('Data', {
range: [0, 1],
tickCount: 10,
type: 'timeCat'
});
chart.scale('sales', {
nice: true
});
chart.axis('Data', false);
chart.axis('sales', false);
chart.tooltip({
showCrosshairs: true
});
// chart.annotation().dataMarker({
// position: ['2014-01', 1750],
// top: true,
// text: {
// content: '因政策调整导致销量下滑',
// style: {
// fontSize: 13
// }
// },
// line: {
// length: 30
// }
// });
chart.line().position('Data*sales');
chart.area().position('Data*sales');
chart.render();
}
/**
* 构建大区业绩完成情况柱折双轴图
* @param el
@ -308,6 +370,7 @@ export class DatatableDataindexComponent implements OnInit {
// 声明需要进行自定义图例字段: 'item'
chart.legend({
title: { text: '1111', spacing: 11 },
offsetY: 10,
position: 'bottom', // 配置图例显示位置
custom: true, // 关键字段,告诉 G2要使用自定义的图例
@ -333,54 +396,60 @@ export class DatatableDataindexComponent implements OnInit {
* @param el
* @param data
*/
private initBiaxialChart(el: HTMLElement, data: any[]) {
private initBiaxialChart(
el: HTMLElement,
data: any[],
{ y1Title, y2Title, y3Title }: { y1Title: string; y2Title: string; y3Title: string }
) {
const chart = new Chart({
container: el,
autoFit: true,
height: 400
height: 380
});
chart.data(data);
// 设置坐标轴
chart.scale({
pre: { alias: '同期业绩完成率', min: 0, max: 1, formatter: val => val * 100 + '%' },
pre2: { alias: '业绩完成率', min: 0, max: 1, formatter: val => val * 100 + '%' },
quantity: { alias: '业绩量 (万)', min: 0, max: 1000000 }
y1: { alias: y1Title, min: 0, max: 1000000 },
y2: { alias: y2Title, min: 0, max: 1, formatter: val => (val * 100).toFixed(0) + '%' },
y3: { alias: y3Title, min: 0, max: 1, formatter: val => (val * 100).toFixed(0) + '%' }
});
// 设置
chart.legend({
custom: true,
position: 'top-right',
padding: [10, 0, 40, 0],
items: [
{ value: 'quantity', name: '业绩量 (万)', marker: { symbol: 'hyphen', style: { stroke: '#3182bd', r: 15, lineWidth: 5 } } },
{ value: 'pre2', name: '业绩完成率', marker: { symbol: 'hyphen', style: { stroke: '#fdae6b', r: 15, lineWidth: 5 } } },
{ value: 'pre', name: '同期业绩完成率', marker: { symbol: 'hyphen', style: { stroke: '#ff4d4f', r: 15, lineWidth: 5 } } }
{ value: 'y1', name: y1Title, marker: { symbol: 'circle', style: { fill: '#E60012', r: 5, fontSize: 13 } } },
{ value: 'y3', name: y3Title, marker: { symbol: 'circle', style: { fill: '#6CBFFF', r: 5, fontSize: 13 } } },
{ value: 'y2', name: y2Title, marker: { symbol: 'circle', style: { fill: '#50D4AB', r: 5, fontSize: 13 } } }
]
});
chart.axis('pre', {
chart.axis('y2', {
grid: null,
title: null,
label: {
formatter: val => +val * 100 + '%'
formatter: val => val
}
});
chart.axis('pre2', false);
chart.axis('y3', false);
chart.tooltip({
shared: true
});
chart.interval().position('time*quantity').label('quantity').color('#3182bd');
chart.interval().position('x*y1').color('#E60012');
chart
.line()
.position('time*pre')
.label('pre', val => ({ content: (val * 100).toFixed(0) + '%' }))
.color('#ff4d4f')
.position('x*y2')
// .label('pre', val => ({ content: (val * 100).toFixed(0) + '%' }))
.color('#6CBFFF')
.size(3);
chart.point().position('time*pre').color('#ff4d4f').size(3).shape('circle');
chart.point().position('x*y2').color('#6CBFFF').size(3).shape('circle');
chart
.line()
.position('time*pre2')
.label('pre2', val => ({ content: (val * 100).toFixed(0) + '%' }))
.color('#fdae6b')
.position('x*y3')
// .label('pre2', val => ({ content: (val * 100).toFixed(0) + '%' }))
.color('#50D4AB')
.size(3);
chart.point().position('time*pre2').color('#fdae6b').size(3).shape('circle');
chart.point().position('x*y3').color('#50D4AB').size(3).shape('circle');
chart.interaction('active-region');
chart.removeInteraction('legend-filter'); // 自定义图例,移除默认的分类图例筛选交互
@ -417,11 +486,10 @@ export class DatatableDataindexComponent implements OnInit {
private formatBarData(data: DataPerformanceTrendVO[]): any[] {
return data.map(item => ({
time: item.time,
quantity: item.quantity,
color: undefined,
pre: Math.floor(Math.random() * 100) / 100,
pre2: Math.floor(Math.random() * 100) / 100
x: item.time,
y1: item.quantity,
y2: Math.floor(Math.random() * 100) / 100,
y3: Math.floor(Math.random() * 100) / 100
}));
}

View File

@ -57,7 +57,7 @@ export class CwcBankCardManagementBindComponent implements OnInit {
bankCardNumber: {
type: 'string',
title: '银行卡号',
maxLength: 21,
maxLength: 30,
ui: {
showRequired: true,
placeholder: '请输入银行卡号',

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2022-01-12 10:52:50
* @LastEditors : Shiming
* @LastEditTime : 2022-04-14 10:53:35
* @LastEditTime : 2022-04-22 16:51:29
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\bulk\\bulk.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
@ -82,7 +82,7 @@
<div> {{ item.settlementWeight ? item.settlementWeight + '吨/ ': ''}} {{ item.settlementVolume ? item.settlementVolume + '方 ': ''}}</div>
</ng-template>
<ng-template st-row="payeeName" let-item let-index="index">
<div> {{ item?.payeeName }}{{ item?.payeePhone ? "/" + item?.payeePhone : '' }} </div>
<div *ngIf="item.payeeName !== item.driverName"> {{ item?.payeeName }}{{ item?.payeePhone ? "/" + item?.payeePhone : '' }} </div>
</ng-template>
<ng-template st-row="createUserName" let-item let-index="index">
<div> {{ item?.createUserName }}{{ item?.createUserPhone ? "/" + item?.createUserPhone : '' }} </div>

View File

@ -509,8 +509,7 @@ export class OrderManagementBulkComponent implements OnInit {
title: '车队长',
className: 'text-left',
width: '180px',
index: 'payeeName',
render: 'payeeName'
render: 'payeeName',
},
{
title: '装卸货时间',

View File

@ -547,8 +547,7 @@ export class OrderManagementReceiptsAuditComponent implements OnInit {
nzContent: `<b>确认后单据不可修改,请谨慎操作。</b>`,
nzOnOk: () =>
{
this.service.downloadFile(this.service.$api_createBillTakeGoods,params)
this.service.downloadFile(this.service.$api_createBillDischargeGoods,params)
this.service.downloadFile(this.service.$api_createBillEsignGoods,params)
this.service.msgSrv.success('生成成功!');
this.st?.reload()
// this.getGoodsSourceStatistical();

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2021-12-28 14:42:03
* @LastEditors : Shiming
* @LastEditTime : 2022-04-21 17:03:50
* @LastEditTime : 2022-04-22 16:27:43
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\vehicle-detail\\vehicle-detail.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2022-01-12 10:52:50
* @LastEditors : Shiming
* @LastEditTime : 2022-04-08 11:32:46
* @LastEditTime : 2022-04-22 16:53:07
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\vehicle\\vehicle.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
@ -95,7 +95,7 @@
</ng-template>
<ng-template st-row="driverName" let-item let-index="index">
<div> {{ item?.driverName }}{{ item?.driverPhone ? '/' + item?.driverPhone : '' }}{{ item?.carNo ? '/' + item?.carNo : '' }} </div><br />
<div> {{ item?.payeeName ? item?.payeeName + '/' : ''}}{{ item?.payeePhone }} </div>
<div *ngIf="item.payeeName !== item.driverName">车队长: {{ item?.payeeName ? item?.payeeName + '/' : ''}}{{ item?.payeePhone }} </div>
</ng-template>
<ng-template st-row="loadingTime" let-item let-index="index">

View File

@ -4,27 +4,33 @@
* @Author : Shiming
* @Date : 2021-12-15 13:17:42
* @LastEditors : Shiming
* @LastEditTime : 2022-04-21 14:41:44
* @LastEditTime : 2022-04-22 15:27:20
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\modal\\audit\\voucher-view\\voucher-view.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
<div class="sfBox" [ngClass]="Status !== 1 ? 'hideBtn' : ''">
<sf #sf mode="edit" [schema]="schema" [ui]="ui" [formData]="formData" button="none">
<ng-template sf-template="no0" let-me let-ui="ui" let-schema="schema">
<div style="color: #1890FF" >
<div (click)="openlaod(1)">电子装货单 <span style="color: red;">
<sf #sf mode="edit" [schema]="schema" [ui]="ui" [formData]="formData" button="none">
<ng-template sf-template="no0" let-me let-ui="ui" let-schema="schema">
<div style="color: #1890ff; cursor: pointer;">
<div (click)="openlaod(1)"
>电子装货单
<!-- <span style="color: red;">
{{datas?.loadingElectronicsLadingBillFilePath ? '已签署' :'未签署'}}
</span></div>
</div>
</ng-template>
<ng-template sf-template="no6" let-me let-ui="ui" let-schema="schema">
<div style="color: #1890FF" (click)="openlaod(2)">电子卸货单<span style="color: red;"> {{datas?.unloadingElectronicsLadingBillFilePath ? '已签署' :'未签署'}}</span></div>
</ng-template>
</sf>
</span> -->
</div>
</div>
</ng-template>
<ng-template sf-template="no6" let-me let-ui="ui" let-schema="schema">
<div style="color: #1890ff; cursor: pointer;" (click)="openlaod(2)"
>电子卸货单
<!-- <span style="color: red;"> {{datas?.unloadingElectronicsLadingBillFilePath ? '已签署' :'未签署'}}</span> -->
</div>
</ng-template>
</sf>
</div>
<div class="modal-footer">
<button nz-button type="button" *ngIf="Status === 1" (click)="close()">关闭</button>
<button nz-button type="submit" *ngIf="Status === 1" nzType="primary" (click)="save(sf.value)" [nzLoading]="http.loading">确定</button>
<button nz-button type="submit" nzType="primary" *ngIf="Status == 2" (click)="sure()" [nzLoading]="http.loading">生成电子单据</button>
<button nz-button type="button" *ngIf="Status === 1" (click)="close()">关闭</button>
<button nz-button type="submit" *ngIf="Status === 1" nzType="primary" (click)="save(sf.value)" [nzLoading]="http.loading">确定</button>
<button nz-button type="submit" nzType="primary" *ngIf="Status == 2" (click)="sure()" [nzLoading]="http.loading">生成电子单据</button>
</div>

View File

@ -509,11 +509,50 @@ export class orderManagementVoucherViewComponent implements OnInit {
});
}
sure() {
const params = [this.i?.id];
this.service.downloadFile(this.service.$api_createBillTakeGoods, params);
this.service.downloadFile(this.service.$api_createBillDischargeGoods, params);
this.service.msgSrv.success('生成电子单据成功!');
this.modal.destroy(true);
// const params = [this.i?.id];
// this.service.downloadFile(this.service.$api_createBillTakeGoods, params);
// this.service.downloadFile(this.service.$api_createBillDischargeGoods, params);
// 逻辑: 先判断电子提货单是否已生成,文件为空则触发签署文件,再查询是否签署成功,成功则退出,刷新页面,再次点击为预览
let time = 10;
setInterval(function () {
time -= 1;
}, 1000);
const modal = this.modalService.success({
nzTitle: '电子装货单和电子卸货单签署中!',
nzContent: `
请等待${time}秒后自动关闭
`
});
this.service.request(this.service.$api_createBillEsignGoods, [this.datas?.id]).subscribe(res => {
if (res) {
switch (res[0]?.esignFlowStatus) {
case 1:
case '1':
setTimeout(() => {
this.service.request(this.service.$api_getBillGoodsEsignFile, [this.datas?.id]).subscribe(res => {
if (res[0]?.esignFlowStatus == '2') {
this.service.msgSrv.success('生成电子单据成功!');
this.modal.destroy(true);
}
});
modal.destroy();
}, 9000);
return;
case 2:
modal.destroy();
return;
default:
this.service.msgSrv.error('电子卸货单签署异常!');
modal.destroy();
return;
}
} else {
this.service.msgSrv.error('电子卸货单签署异常!');
modal.destroy();
}
});
}
// 确认到车界面信息(两个只能看的图片)
initData() {
@ -575,99 +614,19 @@ export class orderManagementVoucherViewComponent implements OnInit {
}
openlaod(value: any) {
if (value === 1) {
// 逻辑: 先判断电子提货单是否已生成,文件为空则触发签署文件,再查询是否签署成功,成功则退出,刷新页面,再次点击为预览
let time = 10;
setInterval(function () {
time -= 1;
}, 1000);
const modal = this.modalService.success({
nzTitle: '电子装货单签署中!',
nzContent: `
请等待${time}秒后自动关闭
`
this.service.request(this.service.$api_getBillTakeGoods, {id:this.datas?.id}).subscribe(res => {
if (res) {
console.log(res);
window.open(res?.contractFilePath)
}
});
if (!this.datas?.loadingElectronicsLadingBillFilePath) {
this.service.request(this.service.$api_createBillTakeGoods, [this.datas?.id]).subscribe(res => {
if (res) {
switch (res[0]?.esignFlowStatus) {
case 1:
case '1':
setTimeout(() => {
this.service.request(this.service.$api_getBillTakeEsignFile, [this.datas?.id]).subscribe(res => {
if (res[0]?.esignFlowStatus == '2') {
this.service.msgSrv.success('电子装货单已生效!');
this.modal.destroy(true);
}
});
modal.destroy();
}, 10000);
return;
case 2:
modal.destroy();
return;
case '13':
case 13:
this.service.msgSrv.error('签署异常!');
modal.destroy();
return;
}
}
});
} else {
const a = document.createElement('a');
a.href = this.datas?.loadingElectronicsLadingBillFilePath;
document.body.appendChild(a);
a.click(); //点击下载
document.body.removeChild(a); //下载完成移除元素
}
} else {
// 逻辑: 先判断电子提货单是否已生成,文件为空则触发签署文件,再查询是否签署成功,成功则退出,刷新页面,再次点击为预览
let time = 10;
setInterval(function () {
time -= 1;
}, 1000); //反复执行函数本身
const modal = this.modalService.success({
nzTitle: '电子卸货单签署中!',
nzContent: `
请等待${time}秒后自动关闭
`
this.service.request(this.service.$api_getBillDischargeGoods, {id:this.datas?.id}).subscribe(res => {
if (res) {
console.log(res);
window.open(res?.contractFilePath)
}
});
if (!this.datas?.unloadingElectronicsLadingBillFilePath) {
this.service.request(this.service.$api_createBillDischargeGoods, [this.datas?.id]).subscribe(res => {
if (res) {
switch (res[0]?.esignFlowStatus) {
case 1:
case '1':
setTimeout(() => {
this.service.request(this.service.$api_getBillDischargeEsignFile, [this.datas?.id]).subscribe(res => {
if (res[0]?.esignFlowStatus == '2') {
this.service.msgSrv.success('电子卸货单已生效!');
this.modal.destroy(true);
}
});
modal.destroy();
}, 10000);
return;
case 2:
modal.destroy();
return;
case '13':
case 13:
this.service.msgSrv.error('签署异常!');
modal.destroy();
return;
}
}
});
} else {
const a = document.createElement('a');
a.href = this.datas?.unloadingElectronicsLadingBillFilePath;
document.body.appendChild(a);
a.click(); //点击下载
document.body.removeChild(a); //下载完成移除元素
}
}
}
}
}

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2021-12-30 14:45:39
* @LastEditors : Shiming
* @LastEditTime : 2022-03-24 10:28:48
* @LastEditTime : 2022-04-22 16:31:57
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\modal\\vehicle\\modify-captain\\modify-captain.component.ts
* Copyright (C) 2022 huzhenhong. All rights reserved.
*/
@ -44,7 +44,8 @@ export class VehicleModifyCaptainComponent implements OnInit {
mobile: {
type: 'string',
title: '车队长手机号',
maxLength: 11
maxLength: 11,
default: ''
}
},
required: ['mobile']
@ -103,18 +104,20 @@ export class VehicleModifyCaptainComponent implements OnInit {
if (res) {
this.modal.destroy();
this.service.msgSrv.success('修改成功');
} else {
this.service.msgSrv.error(res?.msg);
}
});
}
initDate() {
let phone = this.sf?.value.mobile.replace(/^\s*|\s*$/g,"")
if(!phone) {
this.service.msgSrv.error('请输入手机号!');
return
}
const params = {
fetchBank: 1,
...this.sf?.value
};
this.service.request(this.service.$api_get_getCarCaptainByMobile, params).subscribe((res: any) => {
console.log(res);
if (res) {
this.dataList = [res];
}

View File

@ -4,13 +4,13 @@
* @Author : Shiming
* @Date : 2022-02-22 13:53:29
* @LastEditors : Shiming
* @LastEditTime : 2022-03-08 15:01:14
* @LastEditTime : 2022-04-22 16:27:40
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\modal\\vehicle\\view-track\\view-track.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
<div nz-row>
<div nz-col [nzSpan]="24">
<amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="MapList">
<amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList" [pois]="pois">
</amap-path-simplifier>
<st [scroll]="{ y: '350px' }" #st [data]="addressItems" [columns]="logColumns2" [ps]="0"
[page]="{ show: false, showSize: false }" size="small" class="map_st">

View File

@ -1,11 +1,10 @@
/* stylelint-disable order/properties-order */
:host {
::ng-deep {
// .mapBox {
// iframe, canvas {
// width: 400px !important;
// }
// }
}
}
.map_st2 {
position: absolute;
top: 20px;
right: 49px;
height: 350px;
width: 360px;
}
}

View File

@ -4,21 +4,12 @@
* @Author : Shiming
* @Date : 2022-02-22 13:53:29
* @LastEditors : Shiming
* @LastEditTime : 2022-03-08 16:11:58
* @LastEditTime : 2022-04-22 16:24:06
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\modal\\vehicle\\view-track\\view-track.component.ts
* Copyright (C) 2022 huzhenhong. All rights reserved.
*/
import { Component, OnInit, ViewChild } from '@angular/core';
import { STColumn } from '@delon/abc/st';
import {
SFComponent,
SFCustomWidgetSchema,
SFNumberWidgetSchema,
SFRadioWidgetSchema,
SFSchema,
SFTextareaWidgetSchema,
SFUISchema
} from '@delon/form';
import { Component, OnInit } from '@angular/core';
import { STColumn, STComponent } from '@delon/abc/st';
import format from 'date-fns/format';
import { _HttpClient } from '@delon/theme';
import { NzMessageService } from 'ng-zorro-antd/message';
@ -37,9 +28,11 @@ export class OneCarOrderViewtrackComponent implements OnInit {
mapList: any[] = []; //地图点位数据组
addressItems: any[] = []; //打点地址数据组
logColumns2: STColumn[] = [
{ title: '时间', index: 'parkBte' },
{ title: '地点', index: 'parkAdr' }
{ title: '时间', index: 'parkBte', width: 120, className: 'text-center' },
{ title: '地点', index: 'parkAdr',width: 120,className: 'text-center' }
];
pois: any[] = [];
constructor(
private modalRef: NzModalRef,
private modal: NzModalService,
@ -56,31 +49,58 @@ export class OneCarOrderViewtrackComponent implements OnInit {
}
// 获取车辆轨迹
getTrajectory() {
this.service.request(this.service.$api_get_getTrajectory, { id: this.i?.id }).subscribe(res => {
this.service.request(this.service.$api_get_getWholeBillDetail, { id: this.i.id }).subscribe(res => {
if (res) {
this.pois = [
{
markerLabel: '装',
color: 'blue',
position: [res.startingPoint.longitude, res.startingPoint.latitude],
title: `发货地:${res.startingPoint.province}${res.startingPoint.city}${res.startingPoint.area || ''}${
res.startingPoint.detailedAddress
}`,
time: '计划出发时间:' + res.loadPlanTime
},
{
markerLabel: '卸',
color: 'red',
position: [res.endPoint.longitude, res.endPoint.latitude],
title: `卸货地:${res.endPoint.province}${res.endPoint.city}${res.endPoint.area}${res.endPoint.detailedAddress}`,
time: '计划卸货时间:' + res.unloadPlanTime
}
];
}
});
this.service.request(this.service.$api_get_getTrajectory, { id: this.i.id }).subscribe(res => {
if (res) {
const points = res.trackArray;
let list: any[] = [];
points?.forEach((item: any) => {
list.push({
name: item.hgt,
name: `${item.spd}`,
lnglat: [Number((Number(item.lon) / 600000).toFixed(6)), Number((Number(item.lat) / 600000).toFixed(6))],
time: item.gtm
});
});
this.mapList = list;
this.addressItems = res.parkAdr;
if (this.addressItems && this.addressItems.length > 0) {
this.addressItems.forEach(item => {
const addressItems: any[] = res.parkArray;
if (addressItems?.length > 0) {
addressItems.forEach(item => {
item.parkBte = this.getLocalTime(item.parkBte);
});
this.addressItems = [...addressItems];
} else {
this.addressItems = [];
}
console.log(this.addressItems);
}
});
}
// 获取司机轨迹
getDriverTrajectory() {
this.service.request(this.service.$api_get_getAppDriverPosition, { id: this.i?.id }).subscribe(res => {
this.service.request(this.service.$api_get_getAppDriverPosition, { id: this.i.id }).subscribe(res => {
if (res) {
const points = res.tracks;
let list: any[] = [];
@ -91,7 +111,7 @@ export class OneCarOrderViewtrackComponent implements OnInit {
time: item.gtm
});
});
this.mapList = list;
this.mapList = list || [];
const addressItems = [...res.tracks];
if (addressItems) {
addressItems.forEach(item => {

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2021-12-03 15:31:52
* @LastEditors : Shiming
* @LastEditTime : 2022-04-19 15:16:37
* @LastEditTime : 2022-04-22 17:14:39
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\services\\order-management.service.ts
* Copyright (C) 2022 huzhenhong. All rights reserved.
*/
@ -163,8 +163,8 @@ export class OrderManagementService extends ShipperBaseService {
// 异常预警
public $api_getAbnormalWarningByBillId = '/api/sdc/abnormalWarning/getAbnormalWarningByBillId';
// 生成卸货单
public $api_createBillDischargeGoods = '/api/sdc/billOperate/createBillDischargeGoods';
// 获取电子提/卸货单签章附件
public $api_getBillGoodsEsignFile = '/api/sdc/billOperate/getBillGoodsEsignFile';
// 生成提货单
public $api_createBillTakeGoods = '/api/sdc/billOperate/createBillTakeGoods';
// 生成卸货单-页面展示
@ -209,11 +209,16 @@ export class OrderManagementService extends ShipperBaseService {
// 查看补充协议
public $api_getSupplementaryAgreement = `/api/sdc/billShipper/getSupplementaryAgreement`;
// 获取电子提货单签章附件
public $api_getBillTakeEsignFile = `/api/sdc/billOperate/getBillTakeEsignFile`;
// 获取电子卸货单签章附件
public $api_getBillDischargeEsignFile = `/api/sdc/billOperate/getBillDischargeEsignFile`;
// 预览卸货单
public $api_getBillDischargeGoods = `/api/sdc/billOperate/getBillDischargeGoods`;
// 预览提货单
public $api_getBillTakeGoods = `/api/sdc/billOperate/getBillTakeGoods`;
// 生成提/卸货单
public $api_createBillEsignGoods = `/api/sdc/billOperate/createBillEsignGoods`;
// // 生成卸货单
// public $api_createBillDischargeGoods = `/api/sdc/billOperate/createBillDischargeGoods`;

View File

@ -25,7 +25,7 @@ export class PartnerListComponent {
@ViewChild('editTemplate', { static: true })
editTemplate: any;
templateId: any;
templateId: any;
templates: any[] = [];
@ViewChild('editCannel', { static: true })
@ -73,7 +73,9 @@ export class PartnerListComponent {
nzFooter: null
});
modal.afterClose.subscribe(res => {
modal.destroy();
if (res) {
this.st.load(1);
}
});
}

View File

@ -1,5 +1,6 @@
import { Component, Input, OnInit, ViewChild } from '@angular/core';
import { SFComponent, SFSchema, SFValue } from '@delon/form';
import { ModalHelper } from '@delon/theme';
import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';
import { PartnerListService } from '../../services/partner-list.service';
@ -15,7 +16,7 @@ export class PartnerAuditModalComponent implements OnInit {
info: any;
schema!: SFSchema;
sourcePage = '';
constructor(private nzModalService: NzModalService, public service: PartnerListService) {}
constructor(private nzModalService: NzModalService, public service: PartnerListService, private modal: NzModalRef) {}
ngOnInit(): void {
this.initSF(this.info);
@ -49,7 +50,7 @@ export class PartnerAuditModalComponent implements OnInit {
widget: 'radio',
hidden: this.info.isPass !== undefined
},
default: true
default: this.info.isPass !== undefined ? this.info.isPass : true
},
channelId: {
title: '渠道销售',
@ -121,7 +122,7 @@ export class PartnerAuditModalComponent implements OnInit {
.subscribe(res => {
if (res) {
this.service.msgSrv.success('审核成功!');
this.close();
this.modal.destroy(1);
}
});
}

View File

@ -142,6 +142,12 @@ export class PartnerDetailComponent implements OnInit, OnDestroy {
nzComponentParams: { info: { ...this.detailData, isPass }, sourcePage: '合伙人审核详情' },
nzFooter: null
});
modal.afterClose.subscribe(res => {
if (res) {
this.initData();
}
});
}
ratify() {
@ -370,7 +376,7 @@ export class PartnerDetailComponent implements OnInit, OnDestroy {
buttons: [
{
text: '详情',
click: (item) => this.service.showChangeDetail(item.id)
click: item => this.service.showChangeDetail(item.id)
}
]
}

View File

@ -130,6 +130,12 @@ export class PersonalPartnerDetailComponent implements OnInit {
},
nzFooter: null
});
modal.afterClose.subscribe(res => {
if (res) {
this.initData();
}
});
}
ratify() {

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2022-03-28 14:53:52
* @LastEditors : Shiming
* @LastEditTime : 2022-03-28 17:03:21
* @LastEditTime : 2022-04-22 10:30:33
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\components\\rebate-setting\\add-partnerlist\\add-partnerlist.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
@ -25,6 +25,6 @@
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }" [loading]="false"
[scroll]="{ x: '1000' }">
</st>
<button *ngIf="selectedIndex===0" (click)="batchReply()" nz-button nzType="primary" acl
[acl-ability]="['AbnormalAppear-batchReply']">批量回复</button>
<button style="float: right;" *ngIf="selectedIndex===0" (click)="batchReply()" nz-button nzType="primary" acl
[acl-ability]="['AbnormalAppear-batchReply']">批量选择</button>
</nz-card>

View File

@ -128,7 +128,7 @@ export class ParterRebateManageMentAddPartnerListComponent implements OnInit {
// 回复操作
add(item: any) {
console.log(item);
this.modals.destroy(item);
this.modals.destroy([item]);
}
// 批量回复操作
batchReply() {

View File

@ -4,38 +4,44 @@
* @Author : Shiming
* @Date : 2022-02-24 20:09:49
* @LastEditors : Shiming
* @LastEditTime : 2022-03-29 10:47:02
* @LastEditTime : 2022-04-22 14:29:23
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\components\\rebate-setting\\add\\add.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
<page-header-wrapper [title]="'新增'"> </page-header-wrapper>
<nz-card>
<div nz-row>
<!-- 数据列表 -->
<sv-container col="1">
&nbsp;&nbsp;<sv label="配置名称"> <input style="max-width: 400px;" nz-input placeholder="请输入" [(ngModel)]="configName" /></sv>
<sv label="配置名称"> <input style="max-width: 400px;" nz-input placeholder="请输入" [(ngModel)]="configName" /></sv>
<sv-title>固定结算费率配置</sv-title>
&nbsp;&nbsp;<sv label="固定结算费率"> <nz-input-number [(ngModel)]="accountingRate" [nzPrecision]="precision" nzPlaceHolder="请输入"></nz-input-number>&nbsp;%</sv>
<sv label="固定结算费率"> <nz-input-number [(ngModel)]="accountingRate" [nzPrecision]="precision" nzPlaceHolder="请输入"></nz-input-number>&nbsp;%</sv>
<sv-title>业务量和管理费比例配置</sv-title>
&nbsp;&nbsp;<sv label="选择配置类型">
<sv label="选择配置类型">
<nz-radio-group [(ngModel)]="configType">
<label nz-radio nzValue="1">按全部等级配置</label>
<label nz-radio nzValue="2">按不同等级配置</label>
</nz-radio-group>
</sv>
<sv col="1">
&nbsp;&nbsp;
<app-rebate-table #table [(data)]='tabelData'></app-rebate-table>
<sv col="1" >
<div style='width: 850px'>
<app-rebate-table #table [(data)]='tabelData'></app-rebate-table>
</div>
</sv>
<sv-title>关联合伙人配置</sv-title>
&nbsp;&nbsp;<sv label="合伙人选择">
<nz-select [(ngModel)]="partnerType" style="max-width: 400px; min-width: 200px;">
<sv label="合伙人选择">
<nz-select [(ngModel)]="partnerType" (ngModelChange)="changePartner(partnerType)" style="max-width: 400px; min-width: 200px;">
<nz-option nzValue="1" nzLabel="全部合伙人"></nz-option>
<nz-option nzValue="2" nzLabel="新注册合伙人"></nz-option>
<nz-option nzValue="3" nzLabel="自定义合伙人"></nz-option>
</nz-select>
&nbsp;&nbsp;<span style="color: #0000FF;" (click)="add()">添加</span>
<span *ngIf="addStatus" style="padding-left: 15px; color: #0000FF;" (click)="add()">添加</span>
<st *ngIf="partnerPeopleList?.length > 0" #st [data]="partnerPeopleList" [columns]="columns"
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' } }"
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
@ -43,7 +49,8 @@
[scroll]="{ x: '1000' }">
</st>
</sv>
&nbsp;&nbsp;<sv label="优先级" col="1">
<sv label="优先级" col="1">
<nz-select [(ngModel)]="priority" style="max-width: 400px; min-width: 200px;">
<nz-option nzValue=1 nzLabel="1">1</nz-option>
<nz-option nzValue=2 nzLabel="2">2</nz-option>
@ -52,19 +59,22 @@
<nz-option nzValue=5 nzLabel="5">5</nz-option>
</nz-select>
</sv>
&nbsp;&nbsp;<sv label="规则说明" col="1">
<sf #sf mode="edit" [schema]="schema1" [ui]="{ '*': { spanLabelFixed: 10, grid: { span: 16 }} }"
<sv label="规则说明" col="1">
<sf #sf mode="edit" [schema]="schema1" [ui]="{ '*': { spanLabelFixed: 10, grid: { span: 12 }} }"
button="none"> </sf>
</sv>
&nbsp;&nbsp;<sv label="备注" col="1">
<sv label="备注" col="1" style="margin-top: 16px;">
<textarea style="max-width: 400px; min-width: 200px;" rows="4" nz-input [(ngModel)]="remarke"></textarea>
</sv>
</sv-container>
<div class="align-center" style="margin-top: 15px;">
<button nz-button nzType="primary" (click)="goBack()">取消</button>
<button nz-button nzType="primary" style="margin-left: 48px" (click)="save()"
acl [acl-ability]="['SUPPLY-VEHICLE-AMEND-submitChange']">提交</button
>
</div>
</div>
</nz-card>

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2022-03-21 09:26:45
* @LastEditors : Shiming
* @LastEditTime : 2022-03-29 10:53:39
* @LastEditTime : 2022-04-22 15:01:43
* @FilePath : \\tms-obc-web\\src\\app\\routes\\partner\\rebate-management\\components\\rebate-setting\\add\\add.component.ts
* Copyright (C) 2022 huzhenhong. All rights reserved.
*/
@ -26,12 +26,13 @@ import { inRange } from '@delon/util';
export class ParterRebateManageMentAddComponent implements OnInit {
@ViewChild('table') table!: any;
tabelData: any;
addStatus: boolean = false;
configName: string = '';
partnerType: string = '';
remarke: string = '';
accountingRate: Number = 0;
priority: string = '';
partnerPeopleList: any;
partnerPeopleList: any = [];
configType = '1';
precision = 2;
partnerId :Array<string> =[];
@ -78,7 +79,7 @@ export class ParterRebateManageMentAddComponent implements OnInit {
widget: 'tinymce',
loadingTip: 'loading...',
config: {
height: 650
height: 500,
}
},
// default: data?.agreementContent || ''
@ -87,6 +88,7 @@ export class ParterRebateManageMentAddComponent implements OnInit {
};
}
ngOnInit() {
this.addStatus =false
this.initSF();
}
goBack() {
@ -108,22 +110,25 @@ export class ParterRebateManageMentAddComponent implements OnInit {
modalRef.afterClose.subscribe((res: any) => {
this.partnerId = [];
if (res) {
console.log(Array.isArray(res));
console.log(res);
if(Array.isArray(res)) {
this.partnerPeopleList = res;
console.log(res);
console.log(this.partnerPeopleList);
this.partnerPeopleList = this.partnerPeopleList.concat(res);
res.forEach((ele: any) => {
this.partnerId.push(ele?.id);
})
} else {
this.partnerPeopleList = [res];
console.log(res);
this.partnerPeopleList = this.partnerPeopleList.concat(res);
this.partnerId.push(res?.id);
}
}
});
}
delete(item: any) {
console.log(item);
this.partnerPeopleList = this.partnerPeopleList.filter((d:any, i: any) => {
return item.id != d.id
});
}
save () {
const params = {
@ -146,4 +151,10 @@ export class ParterRebateManageMentAddComponent implements OnInit {
}
})
}
changePartner(value: any) {
console.log(value);
if(value) {
this.addStatus = true
}
}
}

View File

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-12-20 17:18:43
* @LastEditTime : 2022-04-20 16:48:26
* @LastEditTime : 2022-04-22 14:50:25
* @LastEditors : Shiming
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath : \\tms-obc-web\\src\\app\\routes\\sys-setting\\services\\system.service.ts
@ -64,7 +64,7 @@ export class SystemService extends BaseService {
$api_deletebatch_crmCustomer = '/api/mdc/cuc/crmCustomer/deletebatch';
// 获取某个应用的所有菜单
$api_getAllFunctionInfoByAppId: string = '/api/mdc/cuc/functionInfo/getAllFunctionInfoByAppIdNoHide';
$api_getAllFunctionInfoByAppId: string = '/api/mdc/cuc/functionInfo/getAllFunctionInfoByAppId';
// 查询网络货运信息表
$api_networkTransporter_page = '/api/mdc/cuc/networkTransporter/list/page';

View File

@ -8,42 +8,30 @@
<ng-template #content>
<div class="user-info" nz-row>
<div nz-col nzSpan="24" class="d-flex">
<img [src]="detailData?.enterpriseLogo" style="width: 120px;" />
<div style="flex: 1;">
<img [src]="detailData?.enterpriseLogo" style="width: 120px" />
<div style="flex: 1">
<div nz-row>
<div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24">
<p style="margin-bottom: 0;">{{ detailData?.enterpriseName }}</p>
<p style="margin-bottom: 0">{{ detailData?.enterpriseName }}</p>
</div>
<div nz-col [nzLg]="12" [nzSm]="24" [nzXs]="24" class="text-right mb-sm">
<label style="font-size: 18px;font-weight: 600;">{{statusE[detailData?.approvalStatus] }}</label>
<label style="font-size: 18px; font-weight: 600">{{ statusE[detailData?.approvalStatus] }}</label>
</div>
</div>
<div nz-row>
<div nz-col [nzLg]="8" [nzSm]="24" [nzXs]="24">
<p>{{ detailData?.unifiedSocialCreditCode }}</p>
</div>
<div nz-col [nzLg]="8" [nzSm]="24" [nzXs]="24">
申请时间:{{detailData?.createTime}}
</div>
<div nz-col [nzXl]="8" [nzLg]="8" [nzSm]="24" [nzXs]="24" class="d-flex" style="justify-content: flex-end;">
<ng-container *ngIf="isEdit;else editButton">
<button [nzLoading]="service.http.loading" nz-button (click)="reset()">
取消
</button>
<button [nzLoading]="service.http.loading" nz-button nzDanger (click)="save()">
保存
</button>
<div nz-col [nzLg]="8" [nzSm]="24" [nzXs]="24"> 申请时间:{{ detailData?.createTime }} </div>
<div nz-col [nzXl]="8" [nzLg]="8" [nzSm]="24" [nzXs]="24" class="d-flex" style="justify-content: flex-end">
<ng-container *ngIf="isEdit; else editButton">
<button [nzLoading]="service.http.loading" nz-button (click)="reset()"> 取消 </button>
<button [nzLoading]="service.http.loading" nz-button nzDanger (click)="save()"> 保存 </button>
</ng-container>
<ng-template #editButton>
<button [nzLoading]="service.http.loading" nz-button nzDanger (click)="auditPass()">
通过
</button>
<button [nzLoading]="service.http.loading" nz-button nzDanger (click)="auditNo()">
驳回
</button>
<button [nzLoading]="service.http.loading" nz-button nzDanger (click)="ratify()">
修改
</button>
<button [nzLoading]="service.http.loading" nz-button nzDanger (click)="auditPass()"> 通过 </button>
<button [nzLoading]="service.http.loading" nz-button nzDanger (click)="auditNo()"> 驳回 </button>
<button [nzLoading]="service.http.loading" nz-button nzDanger (click)="ratify()"> 修改 </button>
</ng-template>
</div>
</div>
@ -53,34 +41,76 @@
</ng-template>
</page-header-wrapper>
<nz-card [class]="isEdit?'edit-box':'readOnly-box'">
<nz-card [class]="isEdit ? 'edit-box' : 'readOnly-box'">
<sv-container col="3">
<sv-title>企业管理员信息</sv-title>
<sv label="姓名">
<input nz-input type="text" [(ngModel)]="detailData.adminUserInfo.name" [readonly]="!isEdit"
[nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.adminUserInfo.name"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="手机号">
<input nz-input type="text" [(ngModel)]="detailData.adminUserInfo.mobile" [readonly]="!isEdit"
[nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.adminUserInfo.mobile"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="身份证号">
<input nz-input type="text" [(ngModel)]="detailData.adminUserInfo.certificateNumber" [readonly]="!isEdit"
[nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.adminUserInfo.certificateNumber"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="身份证照" col="2">
<div class="d-flex">
<ng-container
*ngTemplateOutlet="uploadTemplate;context:{image:detailData?.adminUserInfo?.certificatePhotoFrontWatermark,key:'certificatePhotoFrontWatermark',hover:'adminFront'}">
*ngTemplateOutlet="
uploadTemplate;
context: {
image: detailData?.adminUserInfo?.certificatePhotoFrontWatermark,
key: 'certificatePhotoFrontWatermark',
hover: 'adminFront'
}
"
>
</ng-container>
<ng-container
*ngTemplateOutlet="uploadTemplate;context:{image:detailData?.adminUserInfo?.certificatePhotoBackWatermark,key:'certificatePhotoBackWatermark',hover:'adminBack'}">
*ngTemplateOutlet="
uploadTemplate;
context: {
image: detailData?.adminUserInfo?.certificatePhotoBackWatermark,
key: 'certificatePhotoBackWatermark',
hover: 'adminBack'
}
"
>
</ng-container>
</div>
</sv>
<sv label="企业授权函" col="2">
<ng-container
*ngTemplateOutlet="uploadTemplate;context:{image:detailData?.adminUserInfo?.certificatePhotoBackWatermark,key:'certificatePhotoBackWatermark',hover:'adminPhoto'}">
*ngTemplateOutlet="
uploadTemplate;
context: {
image: detailData?.adminUserInfo?.certificatePhotoBackWatermark,
key: 'certificatePhotoBackWatermark',
hover: 'adminPhoto'
}
"
>
</ng-container>
</sv>
</sv-container>
@ -89,83 +119,134 @@
<sv-container col="3">
<sv-title>
<label class="mr-md">企业基本信息</label>
<label *ngIf="detailData?.approvalStatus===10" style="color: #1890ff;"><i nz-icon nzType="info-circle"
nzTheme="fill" class="mr-xs"></i>待审核
<label *ngIf="detailData?.approvalStatus === 10" style="color: #1890ff"
><i nz-icon nzType="info-circle" nzTheme="fill" class="mr-xs"></i>待审核
</label>
<label *ngIf="detailData?.approvalStatus===20" style="color: #52c41a;"><i nz-icon nzType="check-circle"
nzTheme="fill" class="mr-xs"></i>审核通过
<label *ngIf="detailData?.approvalStatus === 20" style="color: #52c41a"
><i nz-icon nzType="check-circle" nzTheme="fill" class="mr-xs"></i>审核通过
</label>
<label *ngIf="detailData?.approvalStatus===30" style="color: #ff4d4f;"><i nz-icon nzType="close-circle"
nzTheme="fill" class="mr-xs"></i>驳回
<label *ngIf="detailData?.approvalStatus === 30" style="color: #ff4d4f"
><i nz-icon nzType="close-circle" nzTheme="fill" class="mr-xs"></i>驳回
</label>
</sv-title>
<sv label="公司名称">
<input nz-input type="text" [(ngModel)]="detailData.enterpriseName" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.enterpriseName"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="统一社会信用代码">
<input nz-input type="text" [(ngModel)]="detailData.unifiedSocialCreditCode" [readonly]="!isEdit"
[nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.unifiedSocialCreditCode"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="公司类型">
<input nz-input type="text" [(ngModel)]="detailData.enterpriseType" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.enterpriseType"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="注册资本">
<ng-container *ngIf="isEdit; else registrationCapitalTemplate">
<input nz-input type="number" [(ngModel)]="detailData.registrationCapital" [readonly]="!isEdit"
[nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'" class="mr-sm">
<input
nz-input
type="number"
[(ngModel)]="detailData.registrationCapital"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
class="mr-sm"
/>
</ng-container>
<ng-template #registrationCapitalTemplate>
{{detailData?.registrationCapital}}
{{ detailData?.registrationCapital }}
</ng-template>
<span *ngIf="detailData?.registrationCapital">万元</span>
</sv>
<sv label="成立日期">
<nz-date-picker [(ngModel)]="detailData.enterpriseRegistrationTime" [nzDisabled]="!isEdit"
[nzPlaceHolder]="isEdit?'':'-'" [nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit?'calendar':''"></nz-date-picker>
<nz-date-picker
[(ngModel)]="detailData.enterpriseRegistrationTime"
[nzDisabled]="!isEdit"
[nzPlaceHolder]="isEdit ? '' : '-'"
[nzBorderless]="!isEdit"
[nzSuffixIcon]="isEdit ? 'calendar' : ''"
></nz-date-picker>
</sv>
<sv label="营业期限">
<ng-container *ngIf="isEdit; else operatingelseTemplate">
<nz-range-picker [ngModel]="[detailData?.operatingStartTime,detailData?.operatingEndTime]"
(ngModelChange)="changeTime($event)"></nz-range-picker>
<nz-range-picker
[ngModel]="[detailData?.operatingStartTime, detailData?.operatingEndTime]"
(ngModelChange)="changeTime($event)"
></nz-range-picker>
</ng-container>
<ng-template #operatingelseTemplate>
<div *ngIf="!!detailData?.operatingStartTime && !!detailData?.operatingEndTime">
{{ detailData?.operatingStartTime }} 至 {{ detailData?.operatingEndTime }}
</div>
<div *ngIf="!detailData?.operatingStartTime && !detailData?.operatingEndTime">长期</div>
<div *ngIf="!!detailData?.operatingStartTime && !detailData?.operatingEndTime">{{ detailData?.operatingStartTime
}} 至 长期</div>
<div *ngIf="!!detailData?.operatingStartTime && !detailData?.operatingEndTime">{{ detailData?.operatingStartTime }} 至 长期</div>
</ng-template>
</sv>
<sv label="公司所在地" col="3">
<ng-container *ngIf="isEdit; else cascaderelseTemplate">
<nz-cascader [(ngModel)]="values" [nzLoadData]="loadData" (ngModelChange)="changeCascader($event)">
</nz-cascader>
<nz-cascader [(ngModel)]="values" [nzLoadData]="loadData" (ngModelChange)="changeCascader($event)"> </nz-cascader>
</ng-container>
<ng-template #cascaderelseTemplate>
{{ detailData?.fullRegionVO?.provinceName }}{{ detailData?.fullRegionVO?.cityName }}{{
detailData?.fullRegionVO?.areaName }}
{{ detailData?.fullRegionVO?.provinceName }}{{ detailData?.fullRegionVO?.cityName }}{{ detailData?.fullRegionVO?.areaName }}
</ng-template>
</sv>
<sv label="公司详细地址" col="2">
<input nz-input type="text" [(ngModel)]="detailData.enterpriseAddress" [readonly]="!isEdit"
[nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.enterpriseAddress"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
</sv-container>
<sv-container col="1" class="mt16">
<sv label="经营范围">
<input nz-input type="text" [(ngModel)]="detailData.businessScope" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.businessScope"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="税务机关" col="2">
<input nz-input type="text" [(ngModel)]="detailData.taxAuthority" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.taxAuthority"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="营业执照" col="2">
<ng-container
*ngTemplateOutlet="uploadTemplate;context:{image:detailData?.licensePhotoWatermark,key:'licensePhotoWatermark',hover:'detailPhoto'}">
*ngTemplateOutlet="
uploadTemplate;
context: { image: detailData?.licensePhotoWatermark, key: 'licensePhotoWatermark', hover: 'detailPhoto' }
"
>
</ng-container>
</sv>
</sv-container>
@ -173,12 +254,24 @@
<sv-container col="3" class="mt16">
<sv-title>企业法人信息</sv-title>
<sv label="法定代表人">
<input nz-input type="text" [(ngModel)]="detailData.legalPersonIdentityVO.name" [readonly]="!isEdit"
[nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.legalPersonIdentityVO.name"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="身份证号码">
<input nz-input type="text" [(ngModel)]="detailData.legalPersonIdentityVO.certificateNumber" [readonly]="!isEdit"
[nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.legalPersonIdentityVO.certificateNumber"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="身份证有效期">
{{ detailData?.legalPersonIdentityVO?.validStartTime }} -
@ -187,10 +280,26 @@
<sv label="身份证照" col="1">
<div class="d-flex">
<ng-container
*ngTemplateOutlet="uploadTemplate;context:{image:detailData?.legalPersonIdentityVO?.certificatePhotoFrontWatermark,key:'certificatePhotoFrontWatermark',hover:'legalFront'}">
*ngTemplateOutlet="
uploadTemplate;
context: {
image: detailData?.legalPersonIdentityVO?.certificatePhotoFrontWatermark,
key: 'certificatePhotoFrontWatermark',
hover: 'legalFront'
}
"
>
</ng-container>
<ng-container
*ngTemplateOutlet="uploadTemplate;context:{image:detailData?.legalPersonIdentityVO?.certificatePhotoBackWatermark,key:'certificatePhotoBackWatermark',hover:'legalBack'}">
*ngTemplateOutlet="
uploadTemplate;
context: {
image: detailData?.legalPersonIdentityVO?.certificatePhotoBackWatermark,
key: 'certificatePhotoBackWatermark',
hover: 'legalBack'
}
"
>
</ng-container>
</div>
</sv>
@ -199,20 +308,44 @@
<sv-container col="3" class="mt16">
<sv-title>企业开票信息</sv-title>
<sv label="开户银行">
<input nz-input type="text" [(ngModel)]="detailData.createBank" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.createBank"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="银行账户">
<input nz-input type="text" [(ngModel)]="detailData.bankAccount" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.bankAccount"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="注册电话">
<input nz-input type="text" [(ngModel)]="detailData.registerPhone" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.registerPhone"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="注册地址">
<input nz-input type="text" [(ngModel)]="detailData.registerAddress" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.registerAddress"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
</sv-container>
</nz-card>
@ -239,28 +372,39 @@
{{ detailData?.enterpriseName }}
</se>
<se [col]="1" label="备注" required>
<textarea nz-input rows="3" style="width: 325px;margin-left: 14px;" [(ngModel)]="approvalOpinion"></textarea>
<textarea nz-input rows="3" style="width: 325px; margin-left: 14px" [(ngModel)]="approvalOpinion"></textarea>
</se>
</div>
</div>
</ng-template>
<ng-template #uploadTemplate let-image="image" let-key="key" let-hover="hover">
<nz-upload class="avatar-uploader" [nzAction]="uploadURl" nzName="multipartFile" nzListType="picture-card"
[nzShowUploadList]="false" nzFileType="image/png,image/jpeg,image/jpg,image/gif"
[nzDisabled]="!isEdit || disabledUpload" (nzChange)="changeUpload($event,key)">
<nz-upload
class="avatar-uploader"
[nzAction]="uploadURl"
nzName="multipartFile"
nzListType="picture-card"
[nzShowUploadList]="false"
nzFileType="image/png,image/jpeg,image/jpg,image/gif"
[nzDisabled]="!isEdit || disabledUpload"
(nzChange)="changeUpload($event, key)"
>
<ng-container *ngIf="!image && isEdit">
<i class="upload-icon" nz-icon [nzType]="false ? 'loading' : 'plus'"></i>
<div class="ant-upload-text">上传</div>
</ng-container>
<div *ngIf="image" (mouseover)="detailData[hover]=true" (mouseleave)="detailData[hover]=false"
(click)="$event.cancelBubble=true" class="image-hover">
<img [src]="image" style="width: 200px;height: 160px;" />
<div
*ngIf="image"
(mouseover)="detailData[hover] = true"
(mouseleave)="detailData[hover] = false"
(click)="$event.cancelBubble = true"
class="image-hover"
>
<img [src]="image" style="width: 200px; height: 160px" />
<div class="mask" *ngIf="detailData[hover] && isEdit"></div>
<div class="mask-over" *ngIf="detailData[hover] && isEdit">
<i nz-icon nzType="close-circle" nzTheme="fill" class="delete-icon" (click)="deleteImg(key)"></i>
<div style="display: flex;align-items: center;">
<div style="display: flex; align-items: center">
<i nz-icon nzType="eye" nzTheme="fill" class="show-icon" (click)="showImg(image)"></i>
</div>
</div>

View File

@ -1,5 +1,5 @@
<!-- 页头 -->
<page-header-wrapper [logo]="logo" title="车辆详情" [content]="content" [ngClass]="{'affix': scrollTop>210}">
<page-header-wrapper [logo]="logo" title="车辆详情" [content]="content" [ngClass]="{ affix: scrollTop > 210 }">
<ng-template #logo>
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
<i nz-icon nzType="left" nzTheme="outline"></i>
@ -7,23 +7,28 @@
</ng-template>
<ng-template #content>
<sv-container col="3">
<h2>车牌号:{{detailData?.carNo}}</h2>
<sv-title style="font-weight: 700;">
<h2>车牌号:{{ detailData?.carNo }}</h2>
<sv-title style="font-weight: 700">
<span *ngIf="detailData?.approvalStatus === 1 || detailData?.approvalStatus === '1'">未上传</span>
<span *ngIf="detailData?.approvalStatus === 0 || detailData?.approvalStatus === '0'">草稿</span>
<span *ngIf="detailData?.approvalStatus === 10 || detailData?.approvalStatus === '10'">待审核</span>
<span *ngIf="detailData?.approvalStatus === 20 || detailData?.approvalStatus === '20'">已审核</span>
<span *ngIf="detailData?.approvalStatus === 30 || detailData?.approvalStatus === '30'">已驳回</span>
<span *ngIf="detailData?.approvalStatus === 40 || detailData?.approvalStatus === '40'">证件过期</span>
<div style="float: right;" *ngIf="detailData?.approvalStatus !== 20 && detailData?.approvalStatus !== '20'">
<ng-container *ngIf="!isEdit ">
<button nz-button nzType="default" nzDanger (click)="approveDriver()" acl
acl-ability="VEHICLE-AUDIT-DETAIL-pass">通过</button>
<button nz-button nzType="default" nzDanger (click)="rejectedDriver()" acl
<div style="float: right" *ngIf="detailData?.approvalStatus !== 20 && detailData?.approvalStatus !== '20'">
<ng-container *ngIf="!isEdit">
<button nz-button nzType="default" nzDanger (click)="approveDriver()" acl acl-ability="VEHICLE-AUDIT-DETAIL-pass">通过</button>
<button
nz-button
nzType="default"
nzDanger
(click)="rejectedDriver()"
acl
acl-ability="VEHICLE-AUDIT-DETAIL-reject"
*ngIf="detailData?.approvalStatus === 10 || detailData?.approvalStatus === '10'">驳回</button>
<button nz-button nzType="default" nzDanger (click)="ratify()" acl
acl-ability="VEHICLE-AUDIT-DETAIL-save">修改</button>
*ngIf="detailData?.approvalStatus === 10 || detailData?.approvalStatus === '10'"
>驳回</button
>
<button nz-button nzType="default" nzDanger (click)="ratify()" acl acl-ability="VEHICLE-AUDIT-DETAIL-save">修改</button>
</ng-container>
<ng-container *ngIf="isEdit">
<button nz-button nzType="default" (click)="reset()">取消</button>
@ -41,14 +46,17 @@
</ng-template>
</page-header-wrapper>
<nz-card [class]="isEdit?'edit-box':'readOnly-box'">
<nz-card [class]="isEdit ? 'edit-box' : 'readOnly-box'">
<sv-container col="3">
<sv-title style="font-weight: 700;">车辆基础信息
</sv-title>
<sv-title style="font-weight: 700">车辆基础信息 </sv-title>
<sv label="车牌颜色">
<nz-select [(ngModel)]="detailData.carNoColor" [nzPlaceHolder]="isEdit?'':'-'" [nzBorderless]="!isEdit"
[nzShowArrow]="isEdit" [nzDisabled]="!isEdit">
<nz-select
[(ngModel)]="detailData.carNoColor"
[nzPlaceHolder]="isEdit ? '' : '-'"
[nzBorderless]="!isEdit"
[nzShowArrow]="isEdit"
[nzDisabled]="!isEdit"
>
<nz-option *ngFor="let i of contenCarNoColor" [nzLabel]="i.label" [nzValue]="i.value"></nz-option>
</nz-select>
</sv>
@ -57,25 +65,46 @@
[nzShowArrow]="isEdit" [nzDisabled]="!isEdit">
<nz-option *ngFor="let i of contencarModel" [nzLabel]="i.label" [nzValue]="i.value"></nz-option>
</nz-select> -->
<input nz-input type="text" [(ngModel)]="detailData.carModel" [readonly]="!isEdit"
[nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.carModel"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="车长">
<nz-select [(ngModel)]="detailData.carLength" [nzPlaceHolder]="isEdit?'':'-'" [nzBorderless]="!isEdit"
[nzShowArrow]="isEdit" [nzDisabled]="!isEdit">
<nz-select
[(ngModel)]="detailData.carLength"
[nzPlaceHolder]="isEdit ? '' : '-'"
[nzBorderless]="!isEdit"
[nzShowArrow]="isEdit"
[nzDisabled]="!isEdit"
>
<nz-option *ngFor="let i of contenCarLength" [nzLabel]="i.label" [nzValue]="i.value"></nz-option>
</nz-select>
</sv>
<sv label="是否为挂车">
<nz-select [(ngModel)]="detailData.isTrailer" [nzPlaceHolder]="isEdit?'':'-'" [nzBorderless]="!isEdit"
[nzShowArrow]="isEdit" [nzDisabled]="!isEdit">
<nz-select
[(ngModel)]="detailData.isTrailer"
[nzPlaceHolder]="isEdit ? '' : '-'"
[nzBorderless]="!isEdit"
[nzShowArrow]="isEdit"
[nzDisabled]="!isEdit"
>
<nz-option [nzValue]="false" nzLabel="否"></nz-option>
<nz-option [nzValue]="true" nzLabel="是"></nz-option>
</nz-select>
</sv>
<sv label="是否挂靠">
<nz-select [(ngModel)]="detailData.isSelf" [nzPlaceHolder]="isEdit?'':'-'" [nzBorderless]="!isEdit"
[nzShowArrow]="isEdit" [nzDisabled]="!isEdit">
<nz-select
[(ngModel)]="detailData.isSelf"
[nzPlaceHolder]="isEdit ? '' : '-'"
[nzBorderless]="!isEdit"
[nzShowArrow]="isEdit"
[nzDisabled]="!isEdit"
>
<nz-option [nzValue]="false" nzLabel="否"></nz-option>
<nz-option [nzValue]="true" nzLabel="是"></nz-option>
</nz-select>
@ -84,23 +113,38 @@
<sv-container col="1" class="mt-md">
<sv label="车头照">
<ng-container
*ngTemplateOutlet="uploadTemplate;context:{image:detailData?.carFrontPhotoWatermark,key:'carFrontPhotoWatermark',hover: 'PhotoWatermark2'}">
*ngTemplateOutlet="
uploadTemplate;
context: { image: detailData?.carFrontPhotoWatermark, key: 'carFrontPhotoWatermark', hover: 'PhotoWatermark2' }
"
>
</ng-container>
</sv>
</sv-container>
<nz-divider></nz-divider>
<sv-container col="3">
<sv-title style="font-weight: 700;">行驶证信息</sv-title>
<sv-title style="font-weight: 700">行驶证信息</sv-title>
<sv label="档案编号">
<input nz-input type="text" [(ngModel)]="detailData.archivesNo" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.archivesNo"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="行驶证注册日期">
<!-- <input nz-input type="text" [(ngModel)]="detailData.driverLicenseRegisterTime" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'"> -->
<nz-date-picker [(ngModel)]="detailData.driverLicenseRegisterTime" [nzDisabled]="!isEdit"
[nzPlaceHolder]="isEdit?'':'-'" [nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit?'calendar':''"></nz-date-picker>
<nz-date-picker
[(ngModel)]="detailData.driverLicenseRegisterTime"
[nzDisabled]="!isEdit"
[nzPlaceHolder]="isEdit ? '' : '-'"
[nzBorderless]="!isEdit"
[nzSuffixIcon]="isEdit ? 'calendar' : ''"
></nz-date-picker>
</sv>
</sv-container>
@ -108,12 +152,24 @@
<sv label="行驶证到期日">
<!-- <input nz-input type="text" [(ngModel)]="detailData.driverLicenseEndTime" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'"> -->
<nz-date-picker [(ngModel)]="detailData.driverLicenseEndTime" [nzDisabled]="!isEdit"
[nzPlaceHolder]="isEdit?'':'-'" [nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit?'calendar':''"></nz-date-picker>
<nz-date-picker
[(ngModel)]="detailData.driverLicenseEndTime"
[nzDisabled]="!isEdit"
[nzPlaceHolder]="isEdit ? '' : '-'"
[nzBorderless]="!isEdit"
[nzSuffixIcon]="isEdit ? 'calendar' : ''"
></nz-date-picker>
</sv>
<sv label="行驶证签发机关">
<input nz-input style="width: '300px'" type="text" [(ngModel)]="detailData.driverLicenseSigningOrg"
[readonly]="!isEdit" [nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'">
<input
nz-input
style="width: '300px'"
type="text"
[(ngModel)]="detailData.driverLicenseSigningOrg"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
</sv-container>
@ -121,16 +177,32 @@
<sv label="行驶证发证日期">
<!-- <input nz-input type="text" [(ngModel)]="detailData.driverLicenseGetTime" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'"> -->
<nz-date-picker [(ngModel)]="detailData.driverLicenseGetTime" [nzDisabled]="!isEdit"
[nzPlaceHolder]="isEdit?'':'-'" [nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit?'calendar':''"></nz-date-picker>
<nz-date-picker
[(ngModel)]="detailData.driverLicenseGetTime"
[nzDisabled]="!isEdit"
[nzPlaceHolder]="isEdit ? '' : '-'"
[nzBorderless]="!isEdit"
[nzSuffixIcon]="isEdit ? 'calendar' : ''"
></nz-date-picker>
</sv>
<sv label="车辆识别代码">
<input nz-input type="text" [(ngModel)]="detailData.carDistinguishCode" [readonly]="!isEdit"
[nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.carDistinguishCode"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="使用性质">
<nz-select [(ngModel)]="detailData.useNature" [nzPlaceHolder]="isEdit?'':'-'" [nzBorderless]="!isEdit"
[nzShowArrow]="isEdit" [nzDisabled]="!isEdit">
<nz-select
[(ngModel)]="detailData.useNature"
[nzPlaceHolder]="isEdit ? '' : '-'"
[nzBorderless]="!isEdit"
[nzShowArrow]="isEdit"
[nzDisabled]="!isEdit"
>
<nz-option [nzValue]="'1'" nzLabel="营运"></nz-option>
<nz-option [nzValue]="'0'" nzLabel="非营运"></nz-option>
</nz-select>
@ -139,64 +211,127 @@
<sv-container col="3">
<sv label="载重(吨)">
<input nz-input type="text" [(ngModel)]="detailData.carLoad" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.carLoad"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="整备质量">
<input nz-input type="text" [(ngModel)]="detailData.curbWeight" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.curbWeight"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="所有人">
<input nz-input style="width: '300px'" type="text" [(ngModel)]="detailData.carOwner" [readonly]="!isEdit"
[nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'">
<input
nz-input
style="width: '300px'"
type="text"
[(ngModel)]="detailData.carOwner"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
</sv-container>
<sv-container col="1">
<sv label="行驶证照片">
<ng-container
*ngTemplateOutlet="uploadTemplate;context:{image:detailData?.certificatePhotoFrontWatermark,key:'certificatePhotoFrontWatermark',hover: 'FrontWatermark'}">
*ngTemplateOutlet="
uploadTemplate;
context: { image: detailData?.certificatePhotoFrontWatermark, key: 'certificatePhotoFrontWatermark', hover: 'FrontWatermark' }
"
>
</ng-container>
<ng-container
*ngTemplateOutlet="uploadTemplate;context:{image:detailData?.certificatePhotoBackWatermark,key:'certificatePhotoBackWatermark',hover: 'BackWatermark'}">
*ngTemplateOutlet="
uploadTemplate;
context: { image: detailData?.certificatePhotoBackWatermark, key: 'certificatePhotoBackWatermark', hover: 'BackWatermark' }
"
>
</ng-container>
</sv>
</sv-container>
<nz-divider></nz-divider>
<sv-container col="3" class="mt16">
<sv-title style="font-weight: 700;">道路运输证信息</sv-title>
<sv-title style="font-weight: 700">道路运输证信息</sv-title>
<sv label="道路运输证号">
<input nz-input type="text" [(ngModel)]="detailData.roadTransportNo" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.roadTransportNo"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="经营许可证号">
<input nz-input type="text" [(ngModel)]="detailData.roadTransportLicenceNo" [readonly]="!isEdit"
[nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.roadTransportLicenceNo"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="发证日期">
<!-- <input nz-input type="text" [(ngModel)]="detailData.roadTransportStartTime" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'"> -->
<nz-date-picker [(ngModel)]="detailData.roadTransportStartTime" [nzDisabled]="!isEdit"
[nzPlaceHolder]="isEdit?'':'-'" [nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit?'calendar':''"></nz-date-picker>
<nz-date-picker
[(ngModel)]="detailData.roadTransportStartTime"
[nzDisabled]="!isEdit"
[nzPlaceHolder]="isEdit ? '' : '-'"
[nzBorderless]="!isEdit"
[nzSuffixIcon]="isEdit ? 'calendar' : ''"
></nz-date-picker>
</sv>
<sv label="有效期至">
<!-- <input nz-input type="text" [(ngModel)]="detailData.roadTransportEndTime" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'"> -->
<nz-date-picker [(ngModel)]="detailData.roadTransportEndTime" [nzDisabled]="!isEdit"
[nzPlaceHolder]="isEdit?'':'-'" [nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit?'calendar':''"></nz-date-picker>
<nz-date-picker
[(ngModel)]="detailData.roadTransportEndTime"
[nzDisabled]="!isEdit"
[nzPlaceHolder]="isEdit ? '' : '-'"
[nzBorderless]="!isEdit"
[nzSuffixIcon]="isEdit ? 'calendar' : ''"
></nz-date-picker>
</sv>
<sv label="道路运输证照片">
<ng-container
*ngTemplateOutlet="uploadTemplate;context:{image:detailData?.roadTransportPhotoWatermark,key:'roadTransportPhotoWatermark', hover: 'Watermark'}">
*ngTemplateOutlet="
uploadTemplate;
context: { image: detailData?.roadTransportPhotoWatermark, key: 'roadTransportPhotoWatermark', hover: 'Watermark' }
"
>
</ng-container>
</sv>
</sv-container>
<nz-divider></nz-divider>
<sv-container col="2" class="mt16">
<sv-title style="font-weight: 700;">认证司机</sv-title>
<sv-title style="font-weight: 700">认证司机</sv-title>
</sv-container>
<st #st [bordered]="true" [columns]="columns" [data]="service.$api_get_queryDriverByCarId"
[req]="{ method: 'POST', allInBody: true, params: reqParams }" [res]="{ reName: { list: 'data', total: 'data' } }"
[ngStyle]="{ margin: '1rem 0' }" multiSort size="small" [page]="{ show: false }">
<st
#st
[bordered]="true"
[columns]="columns"
[scroll]="{x: '1200px'}"
[data]="service.$api_get_queryDriverByCarId"
[req]="{ method: 'POST', allInBody: true, params: reqParams }"
[res]="{ reName: { list: 'data', total: 'data' } }"
[ngStyle]="{ margin: '1rem 0' }"
multiSort
size="small"
[page]="{ show: false }"
>
<ng-template st-row="auditStatusEnum" let-item let-index="index">
<div>
<span *ngIf="item?.auditStatusEnum === -1 || item?.auditStatusEnum === '-1'">未上传</span>
@ -210,7 +345,6 @@
</st>
</nz-card>
<ng-template #redectModal>
<div nz-row nzGutter="8">
<div nz-col nzSpan="24" se-container [labelWidth]="120">
@ -218,30 +352,42 @@
{{ detailData?.carNo }}
</se>
<se [col]="1" label="备注" required>
<textarea nz-input rows="3" style="margin-left: 14px;" [(ngModel)]="approvalOpinion"></textarea>
<textarea nz-input rows="3" style="margin-left: 14px" [(ngModel)]="approvalOpinion"></textarea>
</se>
</div>
</div>
</ng-template>
<ng-template #uploadTemplate let-image="image" let-key="key" let-hover="hover">
<nz-upload class="avatar-uploader" [nzAction]="uploadURl" nzName="multipartFile" nzListType="picture-card"
[nzShowUploadList]="false" nzFileType="image/png,image/jpeg,image/jpg,image/gif"
[nzDisabled]="!isEdit || disabledUpload" (nzChange)="changeUpload($event,key)">
<nz-upload
class="avatar-uploader"
[nzAction]="uploadURl"
nzName="multipartFile"
nzListType="picture-card"
[nzShowUploadList]="false"
nzFileType="image/png,image/jpeg,image/jpg,image/gif"
[nzDisabled]="!isEdit || disabledUpload"
(nzChange)="changeUpload($event, key)"
>
<ng-container *ngIf="!image && isEdit">
<i class="upload-icon" nz-icon [nzType]="false ? 'loading' : 'plus'"></i>
<div class="ant-upload-text">上传</div>
</ng-container>
<div *ngIf="image" (mouseover)="detailData[hover]=true" (mouseleave)="detailData[hover]=false"
(click)="$event.cancelBubble=true" class="image-hover">
<img (click)="showImg(image)" [src]="image" style="width: 200px;height: 160px;" />
<div
*ngIf="image"
(mouseover)="detailData[hover] = true"
(mouseleave)="detailData[hover] = false"
(click)="$event.cancelBubble = true"
class="image-hover"
>
<img (click)="showImg(image)" [src]="image" style="width: 200px; height: 160px" />
<div class="mask" *ngIf="detailData[hover] && isEdit"></div>
<div class="mask-over" *ngIf="detailData[hover] && isEdit">
<i nz-icon nzType="close-circle" nzTheme="fill" class="delete-icon" (click)="deleteImg(key)"></i>
<div style="display: flex;align-items: center;">
<div style="display: flex; align-items: center">
<i nz-icon nzType="eye" nzTheme="fill" class="show-icon" (click)="showImg(image)"></i>
</div>
</div>
</div>
</nz-upload>
</ng-template>
</ng-template>

View File

@ -61,10 +61,10 @@ export class VehicleComponentsAuditDetailComponent implements OnInit, OnDestroy
initST() {
this.columns = [
{ title: '司机姓名', index: 'name', className: 'text-center' },
{ title: '司机手机号', index: 'mobile', className: 'text-center' },
{ title: '身份证号', index: 'idCardNo', className: 'text-center' },
{ title: '挂靠协议', render: 'auditStatusEnum', className: 'text-center' },
{ title: '司机姓名', index: 'name', width: 150, className: 'text-center' },
{ title: '司机手机号', index: 'mobile', width: 200,className: 'text-center' },
{ title: '身份证号', index: 'idCardNo', width: 200, className: 'text-center' },
{ title: '挂靠协议', render: 'auditStatusEnum', width: 100,className: 'text-center' },
{
title: '车主申明/挂靠协议',
fixed: 'right',

View File

@ -8,11 +8,10 @@
</ng-template>
<ng-template #content>
<sv-container col="1">
<sv-title style="font-weight: 700;">
<div style="float: right;">
<sv-title style="font-weight: 700">
<div style="float: right">
<ng-container *ngIf="!isEdit">
<button nz-button nzType="default" nzDanger (click)="ratify()" acl
acl-ability="VEHICLE-LIST-DETAIL-save">修改</button>
<button nz-button nzType="default" nzDanger (click)="ratify()" acl acl-ability="VEHICLE-LIST-DETAIL-save">修改</button>
</ng-container>
<ng-container *ngIf="isEdit">
<button nz-button nzType="default" (click)="reset()">取消</button>
@ -23,45 +22,76 @@
</sv-container>
<sv-container col="3">
<sv-title style="font-weight: 700;">车辆基础信息</sv-title>
<sv-title style="font-weight: 700">车辆基础信息</sv-title>
<sv label="车牌号">
<input nz-input type="text" [(ngModel)]="detailData.carNo" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.carNo"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="车牌颜色">
<!-- <input nz-input type="text" [(ngModel)]="detailData.carNoColor" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'"> -->
<nz-select [(ngModel)]="detailData.carNoColor" [nzPlaceHolder]="isEdit?'':'-'" [nzBorderless]="!isEdit"
[nzShowArrow]="isEdit" [nzDisabled]="!isEdit">
<nz-select
[(ngModel)]="detailData.carNoColor"
[nzPlaceHolder]="isEdit ? '' : '-'"
[nzBorderless]="!isEdit"
[nzShowArrow]="isEdit"
[nzDisabled]="!isEdit"
>
<nz-option *ngFor="let i of contenCarNoColor" [nzLabel]="i.label" [nzValue]="i.value"></nz-option>
</nz-select>
</sv>
<sv label="车型">
<!-- <input nz-input type="text" [(ngModel)]="detailData.carModel" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'"> -->
<nz-select [(ngModel)]="detailData.carModel" [nzPlaceHolder]="isEdit?'':'-'" [nzBorderless]="!isEdit"
[nzShowArrow]="isEdit" [nzDisabled]="!isEdit">
<nz-select
[(ngModel)]="detailData.carModel"
[nzPlaceHolder]="isEdit ? '' : '-'"
[nzBorderless]="!isEdit"
[nzShowArrow]="isEdit"
[nzDisabled]="!isEdit"
>
<nz-option *ngFor="let i of contencarModel" [nzLabel]="i.label" [nzValue]="i.value"></nz-option>
</nz-select>
</sv>
<sv label="车长(米)">
<!-- <input nz-input type="text" [(ngModel)]="detailData.carLength" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'"> -->
<nz-select [(ngModel)]="detailData.carLength" [nzPlaceHolder]="isEdit?'':'-'" [nzBorderless]="!isEdit"
[nzShowArrow]="isEdit" [nzDisabled]="!isEdit">
<nz-select
[(ngModel)]="detailData.carLength"
[nzPlaceHolder]="isEdit ? '' : '-'"
[nzBorderless]="!isEdit"
[nzShowArrow]="isEdit"
[nzDisabled]="!isEdit"
>
<nz-option *ngFor="let i of contenCarLength" [nzLabel]="i.label" [nzValue]="i.value"></nz-option>
</nz-select>
</sv>
<sv label="是否挂靠">
<nz-select [(ngModel)]="detailData.isSelf" [nzPlaceHolder]="isEdit?'':'-'" [nzBorderless]="!isEdit"
[nzShowArrow]="isEdit" [nzDisabled]="!isEdit">
<nz-select
[(ngModel)]="detailData.isSelf"
[nzPlaceHolder]="isEdit ? '' : '-'"
[nzBorderless]="!isEdit"
[nzShowArrow]="isEdit"
[nzDisabled]="!isEdit"
>
<nz-option [nzValue]="false" nzLabel="否"></nz-option>
<nz-option [nzValue]="true" nzLabel="是"></nz-option>
</nz-select>
</sv>
<sv label="是否为挂车">
<nz-select [(ngModel)]="detailData.isTrailer" [nzPlaceHolder]="isEdit?'':'-'" [nzBorderless]="!isEdit"
[nzShowArrow]="isEdit" [nzDisabled]="!isEdit">
<nz-select
[(ngModel)]="detailData.isTrailer"
[nzPlaceHolder]="isEdit ? '' : '-'"
[nzBorderless]="!isEdit"
[nzShowArrow]="isEdit"
[nzDisabled]="!isEdit"
>
<nz-option [nzValue]="false" nzLabel="否"></nz-option>
<nz-option [nzValue]="true" nzLabel="是"></nz-option>
</nz-select>
@ -71,7 +101,11 @@
<sv label="车头照">
<!-- <app-imagelist [imgList]="[detailData?.carFrontPhotoWatermark, detailData?.carFrontPhotoWatermark]"></app-imagelist> -->
<ng-container
*ngTemplateOutlet="uploadTemplate;context:{image:detailData?.carFrontPhotoWatermark,key:'carFrontPhotoWatermark',hover: 'PhotoWatermark2'}">
*ngTemplateOutlet="
uploadTemplate;
context: { image: detailData?.carFrontPhotoWatermark, key: 'carFrontPhotoWatermark', hover: 'PhotoWatermark2' }
"
>
</ng-container>
</sv>
</sv-container>
@ -79,33 +113,62 @@
</page-header-wrapper>
<nz-card>
<sv-container col="3">
<sv-title style="font-weight: 700;">行驶证信息</sv-title>
<sv-title style="font-weight: 700">行驶证信息</sv-title>
<sv label="档案编号">
<input nz-input type="text" [(ngModel)]="detailData.archivesNo" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.archivesNo"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="车辆品牌">
<input nz-input type="text" [(ngModel)]="detailData.carBrand" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.carBrand"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="行驶证注册日期">
<!-- <input nz-input type="text" [(ngModel)]="detailData.driverLicenseRegisterTime" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'"> -->
<nz-date-picker [(ngModel)]="detailData.driverLicenseRegisterTime" [nzDisabled]="!isEdit"
[nzPlaceHolder]="isEdit?'':'-'" [nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit?'calendar':''">
<nz-date-picker
[(ngModel)]="detailData.driverLicenseRegisterTime"
[nzDisabled]="!isEdit"
[nzPlaceHolder]="isEdit ? '' : '-'"
[nzBorderless]="!isEdit"
[nzSuffixIcon]="isEdit ? 'calendar' : ''"
>
</nz-date-picker>
</sv>
</sv-container>
<sv-container col="3">
<sv label="行驶证到期日">
<nz-date-picker [(ngModel)]="detailData.driverLicenseEndTime" [nzDisabled]="!isEdit"
[nzPlaceHolder]="isEdit?'':'-'" [nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit?'calendar':''">
<nz-date-picker
[(ngModel)]="detailData.driverLicenseEndTime"
[nzDisabled]="!isEdit"
[nzPlaceHolder]="isEdit ? '' : '-'"
[nzBorderless]="!isEdit"
[nzSuffixIcon]="isEdit ? 'calendar' : ''"
>
</nz-date-picker>
</sv>
<sv label="行驶证签发机关">
<input style="width: '300px'" nz-input type="text" [(ngModel)]="detailData.driverLicenseSigningOrg"
[readonly]="!isEdit" [nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'">
<input
style="width: '300px'"
nz-input
type="text"
[(ngModel)]="detailData.driverLicenseSigningOrg"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
</sv-container>
@ -113,17 +176,33 @@
<sv label="行驶证发证日期">
<!-- <input nz-input type="text" [(ngModel)]="detailData.driverLicenseGetTime" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'"> -->
<nz-date-picker [(ngModel)]="detailData.driverLicenseGetTime" [nzDisabled]="!isEdit"
[nzPlaceHolder]="isEdit?'':'-'" [nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit?'calendar':''">
<nz-date-picker
[(ngModel)]="detailData.driverLicenseGetTime"
[nzDisabled]="!isEdit"
[nzPlaceHolder]="isEdit ? '' : '-'"
[nzBorderless]="!isEdit"
[nzSuffixIcon]="isEdit ? 'calendar' : ''"
>
</nz-date-picker>
</sv>
<sv label="车辆识别代码">
<input nz-input type="text" [(ngModel)]="detailData.carDistinguishCode" [readonly]="!isEdit"
[nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.carDistinguishCode"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="使用性质">
<nz-select [(ngModel)]="detailData.useNature" [nzPlaceHolder]="isEdit?'':'-'" [nzBorderless]="!isEdit"
[nzShowArrow]="isEdit" [nzDisabled]="!isEdit">
<nz-select
[(ngModel)]="detailData.useNature"
[nzPlaceHolder]="isEdit ? '' : '-'"
[nzBorderless]="!isEdit"
[nzShowArrow]="isEdit"
[nzDisabled]="!isEdit"
>
<nz-option [nzValue]="'1'" nzLabel="营运"></nz-option>
<nz-option [nzValue]="'0'" nzLabel="非营运"></nz-option>
</nz-select>
@ -132,68 +211,130 @@
<sv-container col="3">
<sv label="载重(吨)">
<input nz-input type="text" [(ngModel)]="detailData.carLoad" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.carLoad"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="整备质量">
<input nz-input type="text" [(ngModel)]="detailData.curbWeight" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.curbWeight"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="所有人">
<input style="width: '300px'" nz-input type="text" [(ngModel)]="detailData.carOwner" [readonly]="!isEdit"
[nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'">
<input
style="width: '300px'"
nz-input
type="text"
[(ngModel)]="detailData.carOwner"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
</sv-container>
<sv-container col="1">
<sv label="行驶证照片">
<ng-container
*ngTemplateOutlet="uploadTemplate;context:{image:detailData?.certificatePhotoFrontWatermark,key:'certificatePhotoFrontWatermark',hover: 'FrontWatermark'}">
*ngTemplateOutlet="
uploadTemplate;
context: { image: detailData?.certificatePhotoFrontWatermark, key: 'certificatePhotoFrontWatermark', hover: 'FrontWatermark' }
"
>
</ng-container>
<ng-container
*ngTemplateOutlet="uploadTemplate;context:{image:detailData?.certificatePhotoBackWatermark,key:'certificatePhotoBackWatermark',hover: 'BackWatermark'}">
*ngTemplateOutlet="
uploadTemplate;
context: { image: detailData?.certificatePhotoBackWatermark, key: 'certificatePhotoBackWatermark', hover: 'BackWatermark' }
"
>
</ng-container>
</sv>
</sv-container>
<nz-divider></nz-divider>
<sv-container col="3" class="mt16">
<sv-title style="font-weight: 700;">道路运输证信息</sv-title>
<sv-title style="font-weight: 700">道路运输证信息</sv-title>
<sv label="道路运输证号">
<input nz-input type="text" [(ngModel)]="detailData.roadTransportNo" [readonly]="!isEdit"
[nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.roadTransportNo"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="经营许可证号">
<input nz-input type="text" [(ngModel)]="detailData.roadTransportLicenceNo" [readonly]="!isEdit"
[nzBorderless]="!isEdit" [placeholder]="isEdit?'':'-'">
<input
nz-input
type="text"
[(ngModel)]="detailData.roadTransportLicenceNo"
[readonly]="!isEdit"
[nzBorderless]="!isEdit"
[placeholder]="isEdit ? '' : '-'"
/>
</sv>
<sv label="发证日期">
<!-- <input nz-input type="text" [(ngModel)]="detailData.roadTransportStartTime" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'"> -->
<nz-date-picker [(ngModel)]="detailData.roadTransportStartTime" [nzDisabled]="!isEdit"
[nzPlaceHolder]="isEdit?'':'-'" [nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit?'calendar':''">
<nz-date-picker
[(ngModel)]="detailData.roadTransportStartTime"
[nzDisabled]="!isEdit"
[nzPlaceHolder]="isEdit ? '' : '-'"
[nzBorderless]="!isEdit"
[nzSuffixIcon]="isEdit ? 'calendar' : ''"
>
</nz-date-picker>
</sv>
<sv label="有效期至">
<!-- <input nz-input type="text" [(ngModel)]="detailData.roadTransportEndTime" [readonly]="!isEdit" [nzBorderless]="!isEdit"
[placeholder]="isEdit?'':'-'"> -->
<nz-date-picker [(ngModel)]="detailData.roadTransportEndTime" [nzDisabled]="!isEdit"
[nzPlaceHolder]="isEdit?'':'-'" [nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit?'calendar':''">
<nz-date-picker
[(ngModel)]="detailData.roadTransportEndTime"
[nzDisabled]="!isEdit"
[nzPlaceHolder]="isEdit ? '' : '-'"
[nzBorderless]="!isEdit"
[nzSuffixIcon]="isEdit ? 'calendar' : ''"
>
</nz-date-picker>
</sv>
<sv label="道路运输证照片">
<!-- <app-imagelist [imgList]="[detailData?.roadTransportPhoto,detailData?.roadTransportPhotoWatermark ]"></app-imagelist> -->
<ng-container
*ngTemplateOutlet="uploadTemplate;context:{image:detailData?.roadTransportPhotoWatermark,key:'roadTransportPhotoWatermark', hover: 'Watermark'}">
*ngTemplateOutlet="
uploadTemplate;
context: { image: detailData?.roadTransportPhotoWatermark, key: 'roadTransportPhotoWatermark', hover: 'Watermark' }
"
>
</ng-container>
</sv>
</sv-container>
<nz-divider></nz-divider>
<sv-container col="2" class="mt16">
<sv-title style="font-weight: 700;">认证司机</sv-title>
<sv-title style="font-weight: 700">认证司机</sv-title>
</sv-container>
<st #st [bordered]="true" [columns]="columns" [data]="service.$api_get_queryDriverByCarId"
[req]="{ method: 'POST', allInBody: true, params: reqParams }"
[res]="{ reName: { list: 'data', total: 'data' } }" [ngStyle]="{ margin: '1rem 0' }" multiSort size="small"
[page]="{ show: false }">
<st
#st
[bordered]="true"
[columns]="columns"
[scroll]="{x: '1200px'}"
[data]="service.$api_get_queryDriverByCarId"
[req]="{ method: 'POST', allInBody: true, params: reqParams }"
[res]="{ reName: { list: 'data', total: 'data' } }"
[ngStyle]="{ margin: '1rem 0' }"
multiSort
size="small"
[page]="{ show: false }"
>
<ng-template st-row="auditStatusEnum" let-item let-index="index">
<div>
<span *ngIf="item?.auditStatusEnum === -1 || item?.auditStatusEnum === '-1'">未上传</span>
@ -208,8 +349,13 @@
</nz-card>
</ng-container>
<nz-modal [(nzVisible)]="isVisible" [nzWidth]="600" [nzFooter]="nzModalFooterEvaluate" (nzOnOk)="handleOK()"
(nzOnCancel)="handleCancel('2')">
<nz-modal
[(nzVisible)]="isVisible"
[nzWidth]="600"
[nzFooter]="nzModalFooterEvaluate"
(nzOnOk)="handleOK()"
(nzOnCancel)="handleCancel('2')"
>
<ng-container *nzModalContent>
<nz-tabset>
<nz-tab nzTitle="我的评价">
@ -219,9 +365,7 @@
</div>
</nz-tab>
<nz-tab nzTitle="司机评价">
<div>
暂无评价内容
</div>
<div> 暂无评价内容 </div>
</nz-tab>
</nz-tabset>
</ng-container>
@ -232,23 +376,35 @@
</nz-modal>
<ng-template #uploadTemplate let-image="image" let-key="key" let-hover="hover">
<nz-upload class="avatar-uploader" [nzAction]="uploadURl" nzName="multipartFile" nzListType="picture-card"
[nzShowUploadList]="false" nzFileType="image/png,image/jpeg,image/jpg,image/gif"
[nzDisabled]="!isEdit || disabledUpload" (nzChange)="changeUpload($event,key)">
<nz-upload
class="avatar-uploader"
[nzAction]="uploadURl"
nzName="multipartFile"
nzListType="picture-card"
[nzShowUploadList]="false"
nzFileType="image/png,image/jpeg,image/jpg,image/gif"
[nzDisabled]="!isEdit || disabledUpload"
(nzChange)="changeUpload($event, key)"
>
<ng-container *ngIf="!image && isEdit">
<i class="upload-icon" nz-icon [nzType]="false ? 'loading' : 'plus'"></i>
<div class="ant-upload-text">上传</div>
</ng-container>
<div *ngIf="image" (mouseover)="detailData[hover]=true" (mouseleave)="detailData[hover]=false"
(click)="$event.cancelBubble=true" class="image-hover">
<img (click)="showImg(image)" [src]="image" style="width: 200px;height: 160px;" />
<div
*ngIf="image"
(mouseover)="detailData[hover] = true"
(mouseleave)="detailData[hover] = false"
(click)="$event.cancelBubble = true"
class="image-hover"
>
<img (click)="showImg(image)" [src]="image" style="width: 200px; height: 160px" />
<div class="mask" *ngIf="detailData[hover] && isEdit"></div>
<div class="mask-over" *ngIf="detailData[hover] && isEdit">
<i nz-icon nzType="close-circle" nzTheme="fill" class="delete-icon" (click)="deleteImg(key)"></i>
<div style="display: flex;align-items: center;">
<div style="display: flex; align-items: center">
<i nz-icon nzType="eye" nzTheme="fill" class="show-icon" (click)="showImg(image)"></i>
</div>
</div>
</div>
</nz-upload>
</ng-template>
</ng-template>

View File

@ -89,9 +89,10 @@ export class VehicleComponentsListDetailComponent implements OnInit {
}
initST() {
this.columns = [
{ title: '司机姓名', index: 'name', width: 300, className: 'text-center' },
{ title: '司机手机号', index: 'mobile', width: 300, className: 'text-center' },
{ title: '挂靠协议', render: 'auditStatusEnum', className: 'text-center' },
{ title: '司机姓名', index: 'name', width: 150, className: 'text-center' },
{ title: '司机手机号', index: 'mobile', width: 200, className: 'text-center' },
{ title: '身份证号', index: 'idCardNo',width: 200, className: 'text-center' },
{ title: '挂靠协议', render: 'auditStatusEnum', width: 100,className: 'text-center' },
{ title: '录入人员', index: 'saveUser', className: 'text-center' },
{
title: '车主申明/挂靠协议',

View File

@ -18,7 +18,8 @@
<div class="modal-title">查看协议</div>
</div>
<div class="text-center">
<div class="text-center"><img [src]="i?.carProtocal" /></div>
<!-- <div class="text-center"><img [src]="i?.carProtocal" /></div> -->
<div class="text-center"> <img (click)="showImg(i?.carProtocal)" [src]="i?.carProtocal" style="width: 200px;height: 160px;" /></div>
</div>
<div *nzModalFooter>
<button *ngIf="i?.auditStatusEnum == 20 || i?.auditStatusEnum == 30" nz-button nzType="default" (click)="cancel()">取消</button>

View File

@ -1,13 +1,14 @@
/*
* @Author: your name
* @Date: 2021-12-07 17:30:18
* @LastEditTime: 2022-01-18 16:36:27
* @LastEditors: Please set LastEditors
* @LastEditTime : 2022-04-22 15:15:49
* @LastEditors : Shiming
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath: \tms-obc-web\src\app\routes\vehicle\components\list\img-view\img-view.component.ts
* @FilePath : \\tms-obc-web\\src\\app\\routes\\vehicle\\components\\list\\img-view\\img-view.component.ts
*/
import { Component, OnInit } from '@angular/core';
import { _HttpClient } from '@delon/theme';
import { NzImageService } from 'ng-zorro-antd/image';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalRef } from 'ng-zorro-antd/modal';
import { VehicleService } from '../../../services/vehicle.service';
@ -20,7 +21,7 @@ export class VehicleImgViewComponent implements OnInit {
record: any = {};
i: any;
constructor(private modal: NzModalRef, public msgSrv: NzMessageService, public http: _HttpClient, public service: VehicleService) {}
constructor(private modal: NzModalRef, public msgSrv: NzMessageService, public http: _HttpClient, public service: VehicleService, private nzImageService: NzImageService) {}
ngOnInit(): void {
console.log(this.i);
@ -42,6 +43,13 @@ export class VehicleImgViewComponent implements OnInit {
}
})
}
showImg(url: any) {
const params = {
imgList: [url],
index: 0
};
this.nzImageService.preview([{ src: url }]);
}
// 通过
okCancel() {
const params ={

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2022-01-25 20:18:52
* @LastEditors : Shiming
* @LastEditTime : 2022-03-29 10:34:14
* @LastEditTime : 2022-04-22 14:09:16
* @FilePath : \\tms-obc-web\\src\\app\\shared\\components\\rebate-table\\rebate-table.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
@ -15,20 +15,20 @@
<button class="ml-md" nz-button nzType="primary" (click)="save()">保存</button>
</div> -->
<nz-table #groupingTable [nzData]="data" nzBordered nzSize="small" [nzFrontPagination]="false"
[nzScroll]="{ x: '900px' }" [nzShowPagination]="false" class="ml-xl" style="max-width: 1200px;">
[nzScroll]="{ y: '900px' }" [nzShowPagination]="false" class="ml-xl" style="max-width: 1000px;">
<thead>
<tr>
<th rowspan="2" nzWidth="250px" nzAlign="center" nzLeft>序号</th>
<th rowspan="2" nzWidth="60px" nzAlign="center" nzLeft>序号</th>
<th nzWidth="220px" nzAlign="center" >合伙人等级</th>
<th nzWidth="220px" nzAlign="center" >初始业务量(万/月)</th>
<th nzWidth="220px" nzAlign="center" >到达业务量(万/月)</th>
<th nzWidth="220px" nzAlign="center" >管理费比例%</th>
<th nzWidth="160px" nzAlign="center" >初始业务量(万/月)</th>
<th nzWidth="160px" nzAlign="center" >到达业务量(万/月)</th>
<th nzWidth="160px" nzAlign="center" >管理费比例%</th>
<th rowspan="2" nzWidth="60px" nzAlign="center" nzRight>操作</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let item of groupingTable.data;let i = index">
<td nzWidth="250px" nzAlign="center" nzLeft>
<td nzWidth="60px" nzAlign="center" nzLeft>
<div style="text-align: center;">
<div>
{{i + 1}}
@ -42,26 +42,26 @@
</nz-select>
</div>
</td>
<td nzWidth="220px" nzAlign="center" >
<div style=" margin-left: 26%">
<nz-input-group nzPrefix="=">
<nz-input-number [(ngModel)]="item.startAmount" [nzMin]="0" nzSize="small" (ngModelChange)="changeendAmount($event,i)"
<td nzWidth="160px" nzAlign="center" >
<div >
<nz-input-group nzPrefix="=" >
<nz-input-number nzPrefix="=" [(ngModel)]="item.startAmount" [nzMin]="0" nzSize="small" (ngModelChange)="changeendAmount($event,i)"
>
</nz-input-number>
</nz-input-group>
</div>
</td>
<td nzWidth="220px" nzAlign="center" >
<div style=" margin-left: 26%">
<td nzWidth="160px" nzAlign="center" >
<div >
<nz-input-group nzPrefix="">
<nz-input-number [(ngModel)]="item.endAmount" [nzMin]="0" nzSize="small" >
</nz-input-number>
</nz-input-group>
</div>
</td>
<td nzWidth="220px" nzAlign="center" >
<div style=" margin-left: 26%">
<td nzWidth="160px" nzAlign="center" >
<div >
<nz-input-group [nzAddOnAfter]="addOnAfterTemplate2">
<nz-input-number [(ngModel)]="item.managementFeeRatio" [nzMin]="0" nzSize="small"
>

View File

@ -15,5 +15,8 @@
.ant-input-group {
display: -webkit-inline-box !important;
}
.ant-input-affix-wrapper {
border: none
}
}