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

This commit is contained in:
Taric Xin
2022-04-28 13:27:36 +08:00
27 changed files with 810 additions and 485 deletions

View File

@ -1,6 +1,6 @@
{
"name": "tms-obc-web",
"version": "1.0.0",
"version": "1.0.1",
"description": "运营后台-WEB",
"author": "cipchk <cipchk@qq.com>",
"repository": {

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2022-01-18 09:51:21
* @LastEditors : Shiming
* @LastEditTime : 2022-04-27 11:21:30
* @LastEditTime : 2022-04-27 17:26:44
* @FilePath : \\tms-obc-web\\proxy.conf.js
* Copyright (C) 2022 huzhenhong. All rights reserved.
*/
@ -30,7 +30,7 @@ module.exports = {
// },
'//api': {
target: {
host: 'tms-api-test.eascs.com',
host: 'tms-api-dev.eascs.com',
protocol: 'https:',
port: 443
},

View File

@ -5,7 +5,7 @@ import { OnChanges } from '@angular/core';
* @Author : Shiming
* @Date : 2022-01-05 11:01:55
* @LastEditors : Shiming
* @LastEditTime : 2022-04-27 11:13:07
* @LastEditTime : 2022-04-27 20:19:39
* @FilePath : \\tms-obc-web\\src\\app\\routes\\contract-management\\components\\contract-template-detail\\contract-template-detail.component.ts
* Copyright (C) 2022 huzhenhong. All rights reserved.
*/
@ -87,7 +87,6 @@ export class ContractManagementTemplateTextComponent implements OnInit {
widget: 'select',
placeholder: '请选择',
change: (tag: any, org: any) => {
console.log(tag);
switch (tag) {
case 'MX':
this.Types = [
@ -95,7 +94,7 @@ export class ContractManagementTemplateTextComponent implements OnInit {
{ label: '订单补充协议', value: '2' },
{ label: '运单合同', value: '3' },
{ label: '运单补充协议', value: '4' },
{ label: '委托代收合同', value: '5' },
{ label: '委托代收合同', value: '5' }
];
this.sf.getProperty('/contractType')!.schema.enum = this.Types;
this.sf.getProperty('/contractType')!.widget.reset(this.Types);
@ -176,7 +175,7 @@ export class ContractManagementTemplateTextComponent implements OnInit {
}
}
},
required: ['templateName', 'templateType','contractType']
required: ['templateName', 'templateType', 'contractType']
};
this.ui = {
'*': {
@ -204,14 +203,69 @@ export class ContractManagementTemplateTextComponent implements OnInit {
};
}
initData(url: string) {
console.log('编辑');
this.service.request(url, { id: this.route.snapshot.params.id }).subscribe(res => {
if (res) {
this.detailList = res;
this.title = this.detailList?.templateName;
this.sfdata = res;
this.sfdata2 = res;
switch (res.templateType) {
case 'MX':
let Types1 = [
{ label: '订单合同', value: '1' },
{ label: '订单补充协议', value: '2' },
{ label: '运单合同', value: '3' },
{ label: '运单补充协议', value: '4' },
{ label: '委托代收合同', value: '5' }
];
setTimeout(() => {
if (this.sf) {
this.sf.getProperty('/contractType')!.schema.enum = Types1;
this.sf.getProperty('/contractType')!.widget.reset(Types1);
if (res.contractType) {
this.sf.setValue('/contractType', res.contractType);
}
}
});
return;
break;
case 'KJ':
const Types2 = [
{ label: '网络货物运输服务合同', value: '6' },
{ label: '运输服务承揽合同', value: '7' }
];
setTimeout(() => {
if (this.sf) {
this.sf.getProperty('/contractType')!.schema.enum = Types2;
this.sf.getProperty('/contractType')!.widget.reset(Types2);
if (res.contractType) {
this.sf.setValue('/contractType', res.contractType);
}
}
});
return;
break;
case 'HHR':
const Types3 = [
{ label: '企业合伙人入驻合同', value: '8' },
{ label: '个人合伙人入驻合同', value: '9' }
];
setTimeout(() => {
if (this.sf) {
this.sf.getProperty('/contractType')!.schema.enum = Types3;
this.sf.getProperty('/contractType')!.widget.reset(Types3);
if (res.contractType) {
this.sf.setValue('/contractType', res.contractType);
}
}
});
return;
break;
default:
break;
}
}
});
}
@ -220,13 +274,12 @@ export class ContractManagementTemplateTextComponent implements OnInit {
}
save() {
console.log(this.sf.value.templateName);
console.log(this.sf.value.templateType);
console.log(this.sf2.value.templateContent);
console.log(this.title);
console.log(this.title || this.detailList.templateName);
if (!this.sf.value.templateName || !this.sf.value.templateType || !this.sf2.value.templateContent || !(this.title || this.detailList.templateName)) {
if (
!this.sf.value.templateName ||
!this.sf.value.templateType ||
!this.sf2.value.templateContent ||
!(this.title || this.detailList.templateName)
) {
this.service.msgSrv.error('必填参数为空,请检查再重新保存!');
return;
}
@ -239,9 +292,8 @@ export class ContractManagementTemplateTextComponent implements OnInit {
const params = {
...this.sf.value,
...this.sf2.value,
templateTitle: this.title || this.detailList.templateName
templateTitle: this.detailList.templateName || this.title
};
console.log(params);
this.service.request(this.service.$api_save_contractTemplate, params).subscribe((res: any) => {
if (res) {
this.service.msgSrv.success('保存成功!');
@ -249,4 +301,5 @@ export class ContractManagementTemplateTextComponent implements OnInit {
}
});
}
EditType() {}
}

View File

@ -125,6 +125,7 @@ export class ContractManagementTemplateFrameComponent implements OnInit {
{
title: '合同模板名称',
className: 'text-center',
width: '300px',
render: 'templateName'
},
{
@ -135,7 +136,7 @@ export class ContractManagementTemplateFrameComponent implements OnInit {
},
{
title: '合同类型',
width: '100px',
width: '200px',
className: 'text-center',
index: 'contractTypeLabel'
},

View File

@ -125,6 +125,7 @@ export class ContractManagementTemplatePartnerComponent implements OnInit {
{
title: '合同模板名称',
className: 'text-center',
width: '300px',
render: 'templateName'
},
{
@ -135,7 +136,7 @@ export class ContractManagementTemplatePartnerComponent implements OnInit {
},
{
title: '合同类型',
width: '100px',
width: '200px',
className: 'text-center',
index: 'contractTypeLabel'
},

View File

@ -125,6 +125,7 @@ export class ContractManagementTemplateDetailComponent implements OnInit {
{
title: '合同模板名称',
className: 'text-center',
width: '300px',
render: 'templateName'
},
{
@ -135,7 +136,7 @@ export class ContractManagementTemplateDetailComponent implements OnInit {
},
{
title: '合同类型',
width: '100px',
width: '200px',
className: 'text-center',
index: 'contractTypeLabel'
},

View File

@ -552,6 +552,11 @@ export class OrderManagementBulkComponent extends BasicTableComponent implements
click: _record => this.changeOrder(_record),
iif: item => item.billStatus == '4' || item.billStatus == '5' || item.billStatus == '2' || item.billStatus == '3',
acl: { ability: ['ORDER-BULK-BulkBillDetail'] }
},{
text: '订单上报推送',
click: _record => this.orderReportPush(_record),
iif: item => item.overallPaymentStatus === '2' && (item.billStatus === '4' || item.billStatus === '5')
// acl: { ability: ['VEHICLE-LIST-view'] },
}
]
}
@ -659,6 +664,15 @@ export class OrderManagementBulkComponent extends BasicTableComponent implements
this.changeId = item.id;
this.isVisible = true;
}
orderReportPush(item: any) {
this.service.request(this.service.$api_manualOrderSubmission,{id: item.id}).subscribe( res=> {
if(res) {
this.st.reload(this.st.pi)
this.service.msgSrv.success('推送成功');
}
})
}
/**
* 浮动费用查看
*/

View File

@ -50,7 +50,7 @@
<st #st [bordered]="true" multiSort [scroll]="{ x:'1200px',y:scrollY }" [data]="service.$api_get_listWholePage"
[columns]="columns" [req]="{ process: beforeReq }"
[res]="{ reName: { list: 'data.records', total: 'data.total' } , process: afterRes}"
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }">
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }" [loading]="service.http.loading">
<ng-template st-row="billCode" let-item let-index="index">
<a [routerLink]="'vehicle-detail/' + item.id">{{ item.billCode }}</a>
<div>

View File

@ -469,6 +469,12 @@ export class OrderManagementVehicleComponent extends BasicTableComponent impleme
click: _record => this.viewTrack(_record),
iif: item => item.billStatus !== '1' && item.billStatus !== '6'
// acl: { ability: ['VEHICLE-LIST-view'] },
},
{
text: '订单上报推送',
click: _record => this.orderReportPush(_record),
iif: item => item.overallPaymentStatus === '2' && (item.billStatus === '4' || item.billStatus === '5')
// acl: { ability: ['VEHICLE-LIST-view'] },
}
]
}
@ -738,6 +744,16 @@ export class OrderManagementVehicleComponent extends BasicTableComponent impleme
});
}
// 订单上报推送
orderReportPush(item: any) {
this.service.request(this.service.$api_manualOrderSubmission,{id: item.id}).subscribe( res=> {
if(res) {
this.st.reload(this.st.pi)
this.service.msgSrv.success('推送成功');
}
})
}
// *确认签收
confirmReceipt(item: any) {

View File

@ -219,6 +219,8 @@ export class OrderManagementService extends ShipperBaseService {
public $api_getBillTakeGoods = `/api/sdc/billOperate/getBillTakeGoods`;
// 生成提/卸货单
public $api_createBillEsignGoods = `/api/sdc/billOperate/createBillEsignGoods`;
// 订单上报推送
$api_manualOrderSubmission = '/api/sdc/billOperate/manualOrderSubmission';
// // 生成卸货单
// public $api_createBillDischargeGoods = `/api/sdc/billOperate/createBillDischargeGoods`;

View File

@ -1,5 +1,5 @@
<div *ngIf="i">
<page-header-wrapper [title]="'大宗货源详情'" [logo]="logo" [content]="headerContent">
<page-header-wrapper [title]="'大宗货源详情'" [logo]="logo">
<ng-template #logo>
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
<i nz-icon nzType="left" nzTheme="outline"></i>
@ -13,12 +13,12 @@
<div nz-row>
<div nz-col nzSpan="14" class="text-grey-darker">网络货运人:{{ i?.shipperAppUserName }}</div>
<div nz-col nzSpan="10">
<button nz-button (click)="cancleGoodsSource()" *ngIf="i?.resourceStatus === '1'" acl
[acl-ability]="['SUPPLY-BULK-DETAIL-cancelSupply']">取消货源</button>
<button nz-button (click)="updatePrice(i)" *ngIf="i?.resourceStatus === '1'" acl
[acl-ability]="['SUPPLY-BULK-DETAIL-updatePrice']">修改单价</button>
<button nz-button nzType="primary" nzGhost (click)="placeOrder(i)" acl
[acl-ability]="['SUPPLY-BULK-DETAIL-bulkAnotherOrder']">再下一单</button>
<button nz-button (click)="cancleGoodsSource()" *ngIf="i?.resourceStatus === '1'" acl
[acl-ability]="['SUPPLY-BULK-DETAIL-cancelSupply']">取消货源</button>
<button nz-button (click)="updatePrice(i)" *ngIf="i?.resourceStatus === '1'" acl
[acl-ability]="['SUPPLY-BULK-DETAIL-updatePrice']">修改单价</button>
<button nz-button nzType="primary" nzGhost (click)="placeOrder(i)" acl
[acl-ability]="['SUPPLY-BULK-DETAIL-bulkAnotherOrder']">再下一单</button>
</div>
</div>
<div class="mt-sm mb-sm" nz-row>
@ -27,7 +27,7 @@
</div>
</div>
<nz-divider></nz-divider>
<div sv-container *ngIf="i">
<div sv-container>
<sv label="项目">{{ i?.enterpriseProjectName }}</sv>
<sv label="截止时间">{{ i?.deadlineTime }}</sv>
<sv label="录单员">{{ i?.createUserName }}/{{ i?.createUserPhone }}</sv>
@ -36,7 +36,35 @@
</div>
</ng-template>
</page-header-wrapper>
<nz-card nzTitle="货源进度">
<nz-card [nzBorderless]="true" class="mb0">
<div class="mb-xs" nz-row>
<button nz-button nzType="primary" nzSize="small" nzDanger>{{ i?.resourceStatusLabel }}</button>
<h4 class="ml-md">货源编码 : {{ i?.resourceCode }}</h4>
</div>
<div nz-row>
<div nz-col nzSpan="14" class="text-grey-darker">网络货运人:{{ i?.shipperAppUserName }}</div>
<div nz-col nzSpan="10">
<button nz-button (click)="cancleGoodsSource()" *ngIf="i?.resourceStatus === '1'" acl
[acl-ability]="['SUPPLY-BULK-DETAIL-cancelSupply']">取消货源</button>
<button nz-button (click)="updatePrice(i)" *ngIf="i?.resourceStatus === '1'" acl
[acl-ability]="['SUPPLY-BULK-DETAIL-updatePrice']">修改单价</button>
<button nz-button nzType="primary" nzGhost (click)="placeOrder(i)" acl
[acl-ability]="['SUPPLY-BULK-DETAIL-bulkAnotherOrder']">再下一单</button>
</div>
</div>
<div class="mt-sm mb-sm" nz-row>
<div>
<b>总费用:<span class="text-red-light text-md">{{ i?.totalAmount | currency: '¥' }}</span></b>
</div>
</div>
<nz-divider></nz-divider>
<div sv-container>
<sv label="项目">{{ i?.enterpriseProjectName }}</sv>
<sv label="截止时间">{{ i?.deadlineTime }}</sv>
<sv label="录单员">{{ i?.createUserName }}/{{ i?.createUserPhone }}</sv>
<sv label="调度员">{{ i?.dispatchName }}/{{ i?.dispatchPhone }} </sv>
<sv label="服务类型">{{ i?.serviceTypeLabel }} </sv>
</div>
<div class="approval-status">
<div style="width: 60%; margin: 0 auto">
<nz-steps style="width: 70%; margin: 0 auto" [nzLabelPlacement]="'vertical'">
@ -51,33 +79,6 @@
</nz-steps>
</div>
</div>
</nz-card>
<nz-card nzTitle="基本信息">
<sv-container col="3">
<sv-title>货物信息</sv-title>
<ng-container *ngFor="let item of i?.goodsInfoVOList">
<sv label="货物名称">
{{item.goodsTypeName}} > {{item.goodsName}}
</sv>
<sv label="货物数量">
{{item.weight}}吨 / {{item.volume>=0?item.volume:'-'}}方
</sv>
<sv label="剩余">
{{i?.surplusWeight!==null?i?.surplusWeight:'--'}}吨 / {{i?.surplusVolume!==null?i?.surplusVolume:'-'}}方
</sv>
<sv label="用车需求">
{{item.carModelLabel || '--'}} / {{item.carLengthLabel || '--'}}<span *ngIf="item.carLength !=='999'"></span>
</sv>
<!-- <sv label="承运信息">
{{i?.carrierInformationVO?.driverName}} / {{i?.carrierInformationVO?.driverTelephone}} /
{{i?.carrierInformationVO?.driverLicensePlate}}
</sv> -->
<!-- <sv label="当前指派">
<a (click)="viewCurrentAssign(i)">查看</a>
</sv> -->
</ng-container>
</sv-container>
<div class="mt-md">
<h4 class="text-md">装货卸货信息
<span class="ml-sm text-sm">(
@ -119,7 +120,39 @@
</div>
</nz-card>
<nz-card nzTitle="运费信息">
<nz-card [nzBorderless]="true" class="mb0">
<div class="font-weight-blod text-md detail-title">
<a class="sign mr-xs"></a>
<span>基本信息</span>
</div>
<sv-container col="3">
<!-- <sv-title>货物信息</sv-title> -->
<ng-container *ngFor="let item of i?.goodsInfoVOList">
<sv label="货物名称">
{{item.goodsTypeName}} > {{item.goodsName}}
</sv>
<sv label="货物数量">
{{item.weight}}吨 / {{item.volume>=0?item.volume:'-'}}方
</sv>
<sv label="剩余">
{{i?.surplusWeight!==null?i?.surplusWeight:'--'}}吨 / {{i?.surplusVolume!==null?i?.surplusVolume:'-'}}方
</sv>
<sv label="用车需求">
{{item.carModelLabel || '--'}} / {{item.carLengthLabel || '--'}}<span *ngIf="item.carLength !=='999'"></span>
</sv>
<!-- <sv label="承运信息">
{{i?.carrierInformationVO?.driverName}} / {{i?.carrierInformationVO?.driverTelephone}} /
{{i?.carrierInformationVO?.driverLicensePlate}}
</sv> -->
<!-- <sv label="当前指派">
<a (click)="viewCurrentAssign(i)">查看</a>
</sv> -->
</ng-container>
</sv-container>
</nz-card>
<nz-card [nzBorderless]="true" class="mb0" nzTitle="运费信息">
<div>
<div nz-row>
<div *ngFor="let item of i?.goodsInfoVOList" nz-col nzSpan="24">
@ -132,13 +165,13 @@
<label>运费单价:</label>
<span class="text-error-dark text-xxl">{{ item?.freightPrice | currency: '¥' }} {{
freightType[item?.freightType] }}</span>
<span>(附加费率{{i?.rate * 100 | number: '0.2-2'}}%</span>
<span>(附加费率{{i?.rate * 100 | number: '0.2-2'}}%</span>
</div>
</div>
</div>
</div>
</nz-card>
<nz-card nzTitle="关联订单">
<nz-card [nzBorderless]="true" class="mb0" nzTitle="关联订单">
<sv-container col="5">
<sv [label]="item?.wayBillStatusLabel" *ngFor="let item of i?.wayBillClassifiedStatisticsVOList">
(<span [ngClass]="{ 'text-primary': item?.count > 0 }">{{ item?.count }}</span>)
@ -157,7 +190,7 @@
</sv> -->
</sv-container>
</nz-card>
<nz-card nzTitle="补充信息">
<nz-card [nzBorderless]="true" class="mb0" nzTitle="补充信息">
<sv-container>
<sv label="是否回单">
{{ i?.supplementaryInformationVO?.stateReceipt ? '是' : '否' }}
@ -166,7 +199,8 @@
{{ i?.supplementaryInformationVO?.receiptTypeLabel }}
</sv>
<sv label="联系人" *ngIf="i?.supplementaryInformationVO?.stateReceipt">
{{ i?.supplementaryInformationVO?.receiptUserName ? i?.supplementaryInformationVO?.receiptUserName + '/' : '' }} {{ i?.supplementaryInformationVO?.phon }}
{{ i?.supplementaryInformationVO?.receiptUserName ? i?.supplementaryInformationVO?.receiptUserName + '/' : '' }}
{{ i?.supplementaryInformationVO?.phon }}
</sv>
<sv label="所在地区" *ngIf="i?.supplementaryInformationVO?.stateReceipt">
{{ i?.supplementaryInformationVO?.area }}
@ -174,14 +208,13 @@
<sv label="详细地址" *ngIf="i?.supplementaryInformationVO?.stateReceipt">
{{ i?.supplementaryInformationVO?.address }}
</sv>
<sv label="备注" >
<sv label="备注">
{{ i?.supplementaryInformationVO?.remarks }}
</sv>
</sv-container>
</nz-card>
<nz-card nzTitle="操作日志">
<st #st [data]="service.$api_getOperationLogRecordsList" [columns]="logColumns"
[page]="{}"
<nz-card [nzBorderless]="true" class="mb0" nzTitle="操作日志">
<st #st [data]="service.$api_getOperationLogRecordsList" [columns]="logColumns" [page]="{}"
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
[res]="{ reName: { list: 'data.records', total: 'data.total' } }">
</st>

View File

@ -3,7 +3,7 @@
min-height: 210px;
p {
margin-bottom: .5em;
margin-bottom: 0;
}
}

View File

@ -175,7 +175,7 @@ export class SupplyManagementOnecarPublishComponent implements OnInit {
if (str) {
this.getRegionCode(str);
this.shipperName = qs?.label;
this.payChange();
this.payChange(1);
}
}
} as SFSelectWidgetSchema
@ -728,7 +728,7 @@ export class SupplyManagementOnecarPublishComponent implements OnInit {
}
});
}
payChange() {
payChange(value?:number) {
const prePay = this.sf7.value.prePay || 0;
const toPay = this.sf7.value.toPay || 0;
const receiptPay = this.sf7.value.receiptPay || 0;
@ -741,6 +741,13 @@ export class SupplyManagementOnecarPublishComponent implements OnInit {
fuelCardAmount: oilCardPay,
resourcetype: '1'
};
if((!this?.sf1.value?.shipperAppUserId || !this?.sf1.value?.enterpriseInfoName) && value) {
this.service.msgSrv.warning('请先选择货主和网络货运人!');
this.sf7.setValue('/prePay', 0);
this.sf7.setValue('/toPay', 0);
this.sf7.setValue('/receiptPay', 0);
return
}
this.service.request(this.service.$api_getCalculatedSurcharge, params).subscribe(res => {
if (res) {
this.sf7.setValue('/appendFee', res.surcharge);
@ -1039,11 +1046,12 @@ export class SupplyManagementOnecarPublishComponent implements OnInit {
paymentDays: this.sf7.value.paymentDays,
estimatedKilometers: this.totalDistance,
estimatedTravelTime: this.totalTime,
subtotal: this.sf7.value.subtotal,
total: this.sf7.value.total,
subtotal: this.sf7.value.subtotal.toFixed(2),
total: this.sf7.value.total.toFixed(2),
insurancePackagedGoods: this.sf4.value.insurancePackagedGoods,
goodsValue: this.sf4.value.goodsValue
};
console.log(params)
const modalRef = this.modalService.create({
nzTitle: '运输协议',
nzContent: TranAgreementComponent,

View File

@ -162,7 +162,7 @@ export class SupplyManagementReleasePublishComponent implements OnInit {
if (str) {
this.getRegionCode(str);
this.shipperName = qs?.label;
this.payChange();
this.payChange(1);
}
}
} as SFSelectWidgetSchema
@ -192,7 +192,7 @@ export class SupplyManagementReleasePublishComponent implements OnInit {
change: (q: any, qs: any) => {
console.log(qs.label);
this.sf1.setValue('/enterpriseInfoNamer', qs.label);
this.payChange()
this.payChange(1)
}
}
},
@ -748,7 +748,7 @@ export class SupplyManagementReleasePublishComponent implements OnInit {
this.sf1.getProperty('/enterpriseProjectId')!.widget.reset(res);
});
}
payChange() {
payChange(value?:number) {
const prePay = this.sf7.value.prePay || 0;
const toPay = this.sf7.value.toPay || 0;
const receiptPay = this.sf7.value.receiptPay || 0;
@ -761,6 +761,13 @@ export class SupplyManagementReleasePublishComponent implements OnInit {
fuelCardAmount: oilCardPay,
resourcetype: '1'
};
if((!this?.sf1.value?.shipperAppUserId || !this?.sf1.value?.enterpriseInfoName) && value) {
this.service.msgSrv.warning('请先选择货主和网络货运人!');
this.sf7.setValue('/prePay', 0);
this.sf7.setValue('/toPay', 0);
this.sf7.setValue('/receiptPay', 0);
return
}
this.service.request(this.service.$api_getCalculatedSurcharge, params).subscribe(res => {
if (res) {
this.sf7.setValue('/appendFee', res.surcharge);
@ -986,26 +993,26 @@ export class SupplyManagementReleasePublishComponent implements OnInit {
...this.sf6.value,
expenseDTOList: expenseList,
paymentDays: this.sf7.value.paymentDays,
subtotal: this.sf7.value.subtotal,
total: this.sf7.value.total,
subtotal: this.sf7.value.subtotal.toFixed(2),
total: this.sf7.value.total.toFixed(2),
estimatedKilometers: this.totalDistance,
estimatedTravelTime: this.totalTime,
insurancePackagedGoods: this.sf4.value.insurancePackagedGoods,
goodsValue: this.sf4.value.goodsValue
};
console.log(params);
const modalRef = this.modalService.create({
nzTitle: '运输协议',
nzContent: TranAgreementComponent,
nzWidth: 900,
nzFooter: null,
nzComponentParams: { object: params, shipperName: this.shipperName, type: 'onecar' }
});
modalRef.afterClose.subscribe(result => {
if (result) {
this.submit(submitType, params);
}
});
// const modalRef = this.modalService.create({
// nzTitle: '运输协议',
// nzContent: TranAgreementComponent,
// nzWidth: 900,
// nzFooter: null,
// nzComponentParams: { object: params, shipperName: this.shipperName, type: 'onecar' }
// });
// modalRef.afterClose.subscribe(result => {
// if (result) {
// this.submit(submitType, params);
// }
// });
}
// 提交
submit(submitType?: string, params?: any): void {

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2022-02-24 20:19:51
* @LastEditors : Shiming
* @LastEditTime : 2022-04-15 15:18:29
* @LastEditTime : 2022-04-27 19:52:22
* @FilePath : \\tms-obc-web\\src\\app\\routes\\supply-management\\components\\tran-agreement\\tran-agreement.component.ts
* Copyright (C) 2022 huzhenhong. All rights reserved.
*/

View File

@ -1,11 +1,46 @@
<div *ngIf="i">
<page-header-wrapper [title]="'整车货源详情'" [logo]="logo" [content]="headerContent">
<ng-template #logo>
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
<i nz-icon nzType="left" nzTheme="outline"></i>
</button>
</ng-template>
<ng-template #headerContent>
<nz-spin [nzSpinning]="service.http.loading">
<div *ngIf="i">
<page-header-wrapper [title]="'整车货源详情'" [logo]="logo">
<ng-template #logo>
<button nz-button nz-tooltip nzTooltipTitle="返回上一页" (click)="goBack()">
<i nz-icon nzType="left" nzTheme="outline"></i>
</button>
</ng-template>
<ng-template #headerContent>
<div class="mb-xs" nz-row>
<button nz-button nzType="primary" nzSize="small" nzDanger>{{ i?.resourceStatusLabel }}</button>
<h4 class="ml-md">货源编码 : {{ i?.resourceCode }}</h4>
</div>
<div nz-row>
<div nz-col nzSpan="14" class="text-grey-darker">网络货运人:{{ i?.enterpriseInfoName }}</div>
<div nz-col nzSpan="10">
<button nz-button (click)="cancleGoodsSource()" *ngIf="i?.resourceStatus === '1'" acl
[acl-ability]="['SUPPLY-VEHICLE-DETAIL-cancelSupply']">取消货源</button>
<button nz-button (click)="assignedCar(i)" *ngIf="i?.resourceStatus === '1' && i?.serviceType === '2'" acl
[acl-ability]="['SUPPLY-VEHICLE-DETAIL-vehicleAnew']">重新指派</button>
<button nz-button (click)="updateGoodsSource(i)"
*ngIf="i?.resourceStatus === '1' && i.insurancePayment !== 'Y'" acl
[acl-ability]="['SUPPLY-VEHICLE-DETAIL-changeSupply']">修改货源</button>
<button nz-button nzType="primary" nzGhost (click)="nextOrder(i)" acl
[acl-ability]="['SUPPLY-VEHICLE-DETAIL-vehiclePlaceOrder']">再下一单</button>
</div>
</div>
<div class="mt-sm mb-sm" nz-row>
<div>
<b>总费用:<span class="text-red-light text-md">{{ i?.totalAmount | currency }}</span></b>
</div>
</div>
<nz-divider></nz-divider>
<div sv-container *ngIf="i">
<sv label="外部货源号">{{ i?.externalResourceCode }} </sv>
<sv label="项目">{{ i?.enterpriseProjectName }}</sv>
<sv label="录单员">{{ i?.createUserName }}/{{ i?.createUserPhone }}</sv>
<sv label="调度员">{{ i?.dispatchName }}/{{ i?.dispatchPhone }} </sv>
<sv label="服务类型">{{ i?.serviceTypeLabel }} </sv>
</div>
</ng-template>
</page-header-wrapper>
<nz-card [nzBorderless]="true" class="mb0">
<div class="mb-xs" nz-row>
<button nz-button nzType="primary" nzSize="small" nzDanger>{{ i?.resourceStatusLabel }}</button>
<h4 class="ml-md">货源编码 : {{ i?.resourceCode }}</h4>
@ -13,218 +48,214 @@
<div nz-row>
<div nz-col nzSpan="14" class="text-grey-darker">网络货运人:{{ i?.enterpriseInfoName }}</div>
<div nz-col nzSpan="10">
<button
nz-button
(click)="cancleGoodsSource()"
*ngIf="i?.resourceStatus === '1'"
acl
[acl-ability]="['SUPPLY-VEHICLE-DETAIL-cancelSupply']"
>取消货源</button
>
<button
nz-button
(click)="assignedCar(i)"
*ngIf="i?.resourceStatus === '1' && i?.serviceType === '2'"
acl
[acl-ability]="['SUPPLY-VEHICLE-DETAIL-vehicleAnew']"
>重新指派</button
>
<button
nz-button
(click)="updateGoodsSource(i)"
*ngIf="i?.resourceStatus === '1' && i.insurancePayment !== 'Y'"
acl
[acl-ability]="['SUPPLY-VEHICLE-DETAIL-changeSupply']"
>修改货源</button
>
<button nz-button nzType="primary" nzGhost (click)="nextOrder(i)" acl [acl-ability]="['SUPPLY-VEHICLE-DETAIL-vehiclePlaceOrder']"
>再下一单</button
>
<button nz-button (click)="cancleGoodsSource()" *ngIf="i?.resourceStatus === '1'" acl
[acl-ability]="['SUPPLY-VEHICLE-DETAIL-cancelSupply']">取消货源</button>
<button nz-button (click)="assignedCar(i)" *ngIf="i?.resourceStatus === '1' && i?.serviceType === '2'" acl
[acl-ability]="['SUPPLY-VEHICLE-DETAIL-vehicleAnew']">重新指派</button>
<button nz-button (click)="updateGoodsSource(i)"
*ngIf="i?.resourceStatus === '1' && i.insurancePayment !== 'Y'" acl
[acl-ability]="['SUPPLY-VEHICLE-DETAIL-changeSupply']">修改货源</button>
<button nz-button nzType="primary" nzGhost (click)="nextOrder(i)" acl
[acl-ability]="['SUPPLY-VEHICLE-DETAIL-vehiclePlaceOrder']">再下一单</button>
</div>
</div>
<div class="mt-sm mb-sm" nz-row>
<!-- <div class="mt0 mb0" nz-row>
<div>
<b
>总费用:<span class="text-red-light text-md">{{ i?.totalAmount | currency: '¥' }}</span></b
>
<b>总费用:<span class="text-red-light text-md">{{ i?.totalAmount | currency }}</span></b>
</div>
</div>
<nz-divider></nz-divider>
<div sv-container *ngIf="i">
</div> -->
<nz-divider class="divider-margin"></nz-divider>
<div class="mb-lg" sv-container *ngIf="i">
<sv label="外部货源号">{{ i?.externalResourceCode }} </sv>
<sv label="项目">{{ i?.enterpriseProjectName }}</sv>
<sv label="录单员">{{ i?.createUserName }}/{{ i?.createUserPhone }}</sv>
<sv label="调度员">{{ i?.dispatchName }}/{{ i?.dispatchPhone }} </sv>
<sv label="服务类型">{{ i?.serviceTypeLabel }} </sv>
</div>
</ng-template>
</page-header-wrapper>
<nz-card title="货源进度">
<div class="approval-status">
<div style="width: 60%; margin: 0 auto">
<nz-steps [nzLabelPlacement]="'vertical'">
<nz-step
[nzStatus]="i?.resourceStatus !== '1' ? 'finish' : 'process'"
nzIcon="solution"
[nzDescription]="i?.createAt"
nzTitle="下单"
[nzSubtitle]="i?.createTime"
></nz-step>
<nz-step
*ngIf="i?.resourceStatus === '1' || i?.resourceStatus === '2'"
[nzStatus]="i?.resourceStatus === '1' ? 'wait' : 'finish'"
nzIcon="file-done"
[nzTitle]="'接单'"
[nzSubtitle]="i?.orderReceivingTime"
></nz-step>
<nz-step
nzStatus="finish"
nzIcon="close-circle"
nzTitle="取消货源"
*ngIf="i?.resourceStatus === '3'"
[nzSubtitle]="i?.endTime"
></nz-step>
</nz-steps>
<div class="approval-status">
<div lass="step-row">
<nz-steps [nzLabelPlacement]="'vertical'">
<nz-step [nzStatus]="i?.resourceStatus !== '1' ? 'finish' : 'process'" nzIcon="solution"
[nzDescription]="i?.createAt" nzTitle="下单" [nzSubtitle]="i?.createTime"></nz-step>
<nz-step *ngIf="i?.resourceStatus === '1' || i?.resourceStatus === '2'"
[nzStatus]="i?.resourceStatus === '1' ? 'wait' : 'finish'" nzIcon="file-done" [nzTitle]="'接单'"
[nzSubtitle]="i?.orderReceivingTime"></nz-step>
<nz-step nzStatus="finish" nzIcon="close-circle" nzTitle="取消货源" *ngIf="i?.resourceStatus === '3'"
[nzSubtitle]="i?.endTime"></nz-step>
</nz-steps>
</div>
</div>
</div>
</nz-card>
</nz-card>
<nz-card nzTitle="基本信息">
<sv-container col="2">
<sv-title>货物信息</sv-title>
<ng-container *ngFor="let item of i?.goodsInfoVOList">
<sv label="货物名称">
{{ item.goodsTypeName }} - {{ item.goodsName }}
<nz-card [nzBorderless]="true" class="mb0">
<div class="font-weight-blod text-md detail-title">
<a class="sign mr-xs"></a>
<span>基本信息</span>
</div>
<sv-container col="2">
<!-- <sv-title>货物信息</sv-title> -->
<ng-container *ngFor="let item of i?.goodsInfoVOList">
<sv label="货物名称">
{{ item.goodsTypeName }} - {{ item.goodsName }}
</sv>
<sv label="货物数量"> {{ item.weight }}吨,{{ item.volume }}方,{{ item.number }}件 </sv>
</ng-container>
</sv-container>
<sv-container class="mt-md">
<!-- <sv-title>承运信息</sv-title> -->
<sv label="司机姓名">
{{ i?.carrierInformationVO?.driverName }}
</sv>
<sv label="货物数量"> {{ item.weight }}吨,{{ item.volume }}方,{{ item.number }}件 </sv>
</ng-container>
</sv-container>
<sv-container class="mt-md">
<sv-title>承运信息</sv-title>
<sv label="司机姓名">
{{ i?.carrierInformationVO?.driverName }}
<sv label="手机号">
{{ i?.carrierInformationVO?.driverTelephone }}
</sv>
<sv label="车牌号">
{{ i?.carrierInformationVO?.driverLicensePlate }}
</sv>
</sv-container>
<sv label="承运司机" *ngIf="i?.carrierInformationVO.driverTelephone !== i?.payeePhone">
{{i?.carrierInformationVO.driverName || '--'}} / {{i?.carrierInformationVO.driverTelephone || '--'}} /
{{i?.carrierInformationVO.driverLicensePlate || '--'}}
</sv>
<sv label="手机号">
{{ i?.carrierInformationVO?.driverTelephone }}
<sv label="车型车长载重">
{{i?.driverCarModelLabel || '--'}} / {{(i?.driverCarLength || '--') +'米'}} / {{(i?.driverCarWeight ||
'--')+'吨'}}
</sv>
<sv label="车牌号">
{{ i?.carrierInformationVO?.driverLicensePlate }}
</sv>
</sv-container>
<div class="mt-md">
<h4 class="text-md"
>装货卸货信息
<span class="ml-sm text-sm"
>(
<label>{{ i?.loadingCount }}装</label>
<label>{{ i?.unloadingCount }}卸</label>
)
</span>
</h4>
<div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="12">
<div class="handling-info p-md">
<div class="flex" *ngFor="let item of i?.unLoadingPlaceVOList">
<div *ngIf="item?.type === '1'" class="loading-row">
<div class="handling-info-icon loading-bg"></div>
<div class="info">
<h4>装货地:{{ item?.province }}{{ item?.city }}{{ item?.area }}{{ item?.detailedAddress }}</h4>
<p>联系人:{{ item?.appUserName }}/{{ item?.contractTelephone }}</p>
</div>
</div>
</div>
<p class="time-info">装货时间:{{ i?.loadingTime }}</p>
</div>
</div>
<div nz-col [nzSpan]="12">
<div class="handling-info p-md">
<div class="flex" *ngFor="let item of i?.unLoadingPlaceVOList">
<div *ngIf="item?.type === '2'" class="loading-row">
<div class="handling-info-icon unloaing-bg"></div>
<div class="info">
<h4>卸货地:{{ item?.province }}{{ item?.city }}{{ item?.area }}{{ item?.detailedAddress }}</h4>
<p>联系人:{{ item?.appUserName }}/{{ item?.contractTelephone }}</p>
</div>
</div>
</div>
<p class="time-info">卸货时间:{{ i?.unloadingTime }}</p>
</div>
</div>
</div>
</div>
</nz-card>
<nz-card nzTitle="服务信息">
<sv-container>
<sv label="服务包">
{{ i?.insuranceTypeLabel}}
</sv>
<sv label="货物价值" *ngIf="i?.insuranceType !== '3'">
{{i?.goodsValue !==null?(i?.goodsValue|currency)+'元':'-'}}
</sv>
<sv label="服务包费用" *ngIf="i?.insuranceType !== '3'">
{{i?.insurancePremium!==null?(i?.insurancePremium |currency)+'元':'-'}}
</sv>
</sv-container>
</nz-card>
<nz-card [nzTitle]="'运费信息到货后' + i?.paymentDays + '天内支付运费'">
<st [data]="i?.expenseVOList" [columns]="expenseColumns" [page]="{ show: false }">
<ng-template st-row="total" let-item>
<div>
{{ item?.totalAmount | currency }}
<span>(含附加费)</span>
</div>
</ng-template>
<ng-template st-row="price" let-item>
<div>
{{ item?.price | currency }}
</div>
</ng-template>
</st>
<div class="freight-info-box mt-md" nz-row>
<div nz-col nzSpan="24">
<h3>
<label>总计 :</label>
<span class="text-error-dark text-xl">
{{ i?.totalAmount | currency }}
<div class="mt-md">
<h4 class="text-md">装货卸货信息
<span class="ml-sm text-sm">(
<label>{{ i?.loadingCount }}装</label>
<label>{{ i?.unloadingCount }}卸</label>
)
</span>
<span>(运费{{ i?.totalFreight | currency }}含附加运费 {{ i?.totalSurcharge | currency }}</span>
</h3>
<div *ngIf='i?.resourceStatus !== "1" && i?.carrierInformationVO?.driverName !== i?.payeeName' >车队长:{{ i?.payeeName }}/{{ i?.payeePhone }}/{{ i?.payeeCardNo }}</div>
</h4>
<div nz-row [nzGutter]="24">
<div nz-col [nzSpan]="12">
<div class="handling-info p-md">
<ng-container *ngFor="let item of i?.unLoadingPlaceVOList">
<div class="flex" *ngIf="item?.type === '1'">
<div class="loading-row">
<div class="handling-info-icon loading-bg"></div>
<div class="info">
<h4>装货地:{{ item?.province }}{{ item?.city }}{{ item?.area }}{{ item?.detailedAddress }}</h4>
<p>联系人:{{ item?.appUserName }}/{{ item?.contractTelephone }}</p>
</div>
</div>
</div>
</ng-container>
<p class="time-info">装货时间:{{ i?.loadingTime }}</p>
</div>
</div>
<div nz-col [nzSpan]="12">
<div class="handling-info p-md">
<ng-container *ngFor="let item of i?.unLoadingPlaceVOList">
<div class="flex" *ngIf="item?.type === '2'">
<div class="loading-row">
<div class="handling-info-icon unloaing-bg"></div>
<div class="info">
<h4>卸货地:{{ item?.province }}{{ item?.city }}{{ item?.area }}{{ item?.detailedAddress }}</h4>
<p>联系人:{{ item?.appUserName }}/{{ item?.contractTelephone }}</p>
</div>
</div>
</div>
</ng-container>
<p class="time-info">卸货时间:{{ i?.unloadingTime }}</p>
</div>
</div>
</div>
</div>
</div>
</nz-card>
<nz-card nzTitle="补充信息">
<sv-container>
<sv label="是否回单">
{{ i?.supplementaryInformationVO?.stateReceipt ? '是' : '否' }}
</sv>
<sv label="回单类型" *ngIf="i?.supplementaryInformationVO?.stateReceipt">
{{ i?.supplementaryInformationVO?.receiptType === '1' ? '电子回单' : '纸质回单' }}
</sv>
<sv label="联系人" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> {{ i?.supplementaryInformationVO?.receiptUserName || '-' }} / {{ i?.supplementaryInformationVO?.phon || '-' }}
</sv>
<sv label="所在地区" *ngIf="i?.supplementaryInformationVO?.stateReceipt">
{{ i?.supplementaryInformationVO?.area }}
</sv>
<sv label="详细地址" *ngIf="i?.supplementaryInformationVO?.stateReceipt">
{{ i?.supplementaryInformationVO?.address }}
</sv>
<sv label="备注">
{{ i?.supplementaryInformationVO?.remarks }}
</sv>
</sv-container>
</nz-card>
<nz-card nzTitle="操作日志">
<st #st [data]="service.$api_getOperationLogRecordsList" [columns]="logColumns"
[page]="{}"
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
[res]="{ reName: { list: 'data.records', total: 'data.total' } }">
<ng-template st-row="operator" let-item>
<div>
{{ item?.operator }} {{ item?.telephone ? '/' + item?.telephone : '' }}
</nz-card>
<nz-card [nzBorderless]="true" class="mb0">
<div class="font-weight-blod text-md detail-title">
<a class="sign"></a>
<span>服务信息</span>
</div>
</ng-template>
</st>
</nz-card>
</div>
<sv-container>
<sv label="服务包">
{{ i?.insuranceTypeLabel}}
</sv>
<sv label="货物价值" *ngIf="i?.insuranceType !== '3'">
{{i?.goodsValue !==null?(i?.goodsValue|currency)+'元':'-'}}
</sv>
<sv label="服务包费用" *ngIf="i?.insuranceType !== '3'">
{{i?.insurancePremium!==null?(i?.insurancePremium |currency)+'元':'-'}}
</sv>
</sv-container>
</nz-card>
<nz-card [nzBorderless]="true" class="mb0">
<div class="font-weight-blod text-md detail-title">
<a class="sign"></a>
<span>运费信息</span>
<span class="pl-sm text-warning">(到货后{{i?.paymentDays}}天内支付运费)</span>
</div>
<st [data]="i?.expenseVOList" [columns]="expenseColumns" [page]="{ show: false }">
<ng-template st-row="total" let-item>
<div>
{{ item?.totalAmount | currency }}
<span>(含附加费)</span>
</div>
</ng-template>
<ng-template st-row="price" let-item>
<div>
{{ item?.price | currency }}
</div>
</ng-template>
</st>
<div class="freight-info-box mt-md" nz-row>
<div nz-col nzSpan="24">
<h3>
<label>总计 :</label>
<span class="text-error-dark text-xl">
{{ i?.totalAmount | currency }}
</span>
<span>(运费{{ i?.totalFreight | currency }}含附加运费 {{ i?.totalSurcharge | currency }}</span>
</h3>
<div *ngIf='i?.resourceStatus !== "1" && i?.carrierInformationVO?.driverName !== i?.payeeName'>车队长:{{
i?.payeeName }}/{{ i?.payeePhone }}/{{ i?.payeeCardNo }}</div>
</div>
</div>
</nz-card>
<nz-card [nzBorderless]="true" class="mb0">
<div class="font-weight-blod text-md detail-title">
<a class="sign"></a>
<span>补充信息</span>
</div>
<sv-container>
<sv label="是否回单">
{{ i?.supplementaryInformationVO?.stateReceipt ? '是' : '否' }}
</sv>
<sv label="回单类型" *ngIf="i?.supplementaryInformationVO?.stateReceipt">
{{ i?.supplementaryInformationVO?.receiptType === '1' ? '电子回单' : '纸质回单' }}
</sv>
<sv label="联系人" *ngIf="i?.supplementaryInformationVO?.stateReceipt"> {{
i?.supplementaryInformationVO?.receiptUserName || '-' }} / {{ i?.supplementaryInformationVO?.phon || '-' }}
</sv>
<sv label="所在地区" *ngIf="i?.supplementaryInformationVO?.stateReceipt">
{{ i?.supplementaryInformationVO?.area }}
</sv>
<sv label="详细地址" *ngIf="i?.supplementaryInformationVO?.stateReceipt">
{{ i?.supplementaryInformationVO?.address }}
</sv>
<sv label="备注">
{{ i?.supplementaryInformationVO?.remarks }}
</sv>
</sv-container>
</nz-card>
<nz-card [nzBorderless]="true" class="mb0">
<div class="font-weight-blod text-md detail-title">
<a class="sign"></a>
<span>操作日志</span>
</div>
<st #st [data]="service.$api_getOperationLogRecordsList" [columns]="logColumns" [page]="{}"
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
[res]="{ reName: { list: 'data.records', total: 'data.total' } }">
<ng-template st-row="operator" let-item>
<div>
{{ item?.operator }} {{ item?.telephone ? '/' + item?.telephone : '' }}
</div>
</ng-template>
</st>
</nz-card>
</div>
</nz-spin>

View File

@ -3,7 +3,7 @@
min-height: 210px;
p {
margin-bottom: .5em;
margin-bottom: 5px;
}
}

View File

@ -7,7 +7,7 @@
<se label="个人提现手续费" style="margin:15px 0 0 0">
<div>
按照提现金额收取
<nz-input-number [(ngModel)]="personValue" [nzMin]="0" [nzMax]="100" [nzPrecision]="2" [nzStep]="0.01"></nz-input-number>
<nz-input-number [(ngModel)]="personServe" [nzMin]="0" [nzMax]="100" [nzPrecision]="2" [nzStep]="0.01"></nz-input-number>
<span> %手续费 </span>
</div>
</se>
@ -15,7 +15,7 @@
<div>
按照提现金额收取
<nz-input-number
[(ngModel)]="enterpriseValue"
[(ngModel)]="enterpriseServe"
[nzMin]="0"
[nzMax]="100"
[nzPrecision]="2"
@ -52,12 +52,12 @@
<div nz-row nzGutter="8">
<div nz-col nzSpan="24">
<span>客户</span>
<nz-input-number style="margin: 0 10px; " [(ngModel)]="personValue" [nzMin]="0" [nzMax]="3000" [nzPrecision]="2" [nzStep]="0.1"></nz-input-number>
<nz-input-number style="margin: 0 10px; " [(ngModel)]="silenceClient" [nzMin]="0" [nzMax]="3000" [nzPrecision]="2" [nzStep]="0.1"></nz-input-number>
<span>天内没有交易订单的视为“沉默客户”</span>
</div>
<div nz-col nzSpan="24" style="margin-top: 10px;">
<span>客户</span>
<nz-input-number style="margin: 0 10px; " [(ngModel)]="personValue" [nzMin]="0" [nzMax]="3000" [nzPrecision]="2" [nzStep]="0.1"></nz-input-number>
<nz-input-number style="margin: 0 10px; " [(ngModel)]="loseClient" [nzMin]="0" [nzMax]="3000" [nzPrecision]="2" [nzStep]="0.1"></nz-input-number>
<span>天内没有交易订单的视为“流失客户”</span>
</div>
<div nz-col nzSpan="24">
@ -66,15 +66,13 @@
</div>
</nz-card>
<div class="mb-md save-btn">
<button class="ml-lg" nz-button nzSize="large" nzType="primary">保存</button>
<button class="ml-lg" nz-button nzSize="large">取消</button>
<button class="ml-lg" nz-button nzSize="large" nzType="primary" (click)="save()">保存</button>
</div>
</div>
</div>
<ng-template #auditTimes let-data="data" let-title="title">
<div *ngIf="auditTimeStatus" >
<div style="display: flex">
<nz-radio-group [(ngModel)]="everyDay" (ngModelChange)="everyDayChange(everyDay)" style="display: block">
<label nz-radio [nzValue]="1" class="mt-sm"
>每天<span *ngIf="TimeStatus" style="margin-left: 30px; color: #0200ff; cursor: pointer" (click)="addEvery()">添加时间段</span></label
@ -92,7 +90,6 @@
</div>
</div>
</div>
</div>
<div >
<nz-radio-group [(ngModel)]="MonthDay" (ngModelChange)="MonthDayChange(MonthDay)" style="display: block">
<label nz-radio [nzValue]="2" class="mt-sm"

View File

@ -4,6 +4,8 @@ import { NzUploadFile } from 'ng-zorro-antd/upload';
import { Observable, Observer, of } from 'rxjs';
import { apiConf } from '@conf/api.conf';
import { SystemService } from '../../services/system.service';
const NOJSONTYPE = new Set([8, 12, 13]);
const IMAGECONFIG = {
previewFile: (file: NzUploadFile) => of(file.url),
action: apiConf.waterFileUpload,
@ -35,12 +37,16 @@ export class PartnerSystemConfigComponent implements OnInit, OnChanges {
isEveryDay: false,
isEveryWeek: false
};
personValue!: number;
enterpriseValue!: number;
auditValue!: number;
auditTime!: any;
auditTimeStatus: boolean = false;
labelWidth = 250;
personServe!: number; // 个人提现手续费
enterpriseServe!: number; // 企业提现手续费
auditValue!: boolean; // 提现审核
auditTime!: any; // 审核时间
silenceClient!: number; // 沉默客户
loseClient!: number; // 流失客户
everyDay: boolean = false;
auditTimeStatus: boolean = false;
MonthDay: boolean = false;
time: Date | null = null;
defaultOpenValue = new Date(0, 0, 0, 0, 0, 0);
@ -107,7 +113,9 @@ export class PartnerSystemConfigComponent implements OnInit, OnChanges {
constructor(private service: SystemService) {}
ngOnChanges(changes: SimpleChanges): void {
if (changes.configList) {
console.log(changes.configList);
console.log(changes.configList.currentValue);
}
}
@ -322,6 +330,61 @@ export class PartnerSystemConfigComponent implements OnInit, OnChanges {
this.auditTimeStatus = false;
}
}
save() {
console.log();
let params : any = {
personServe: this.personServe, // 个人提现手续费
enterpriseServe: this.enterpriseServe, // 企业提现手续费
auditValue: this.auditValue, // 提现审核
auditTime: this.auditTime, // 审核时间
silenceClient: this.silenceClient, // 沉默客户
loseClient: this.loseClient // 流失客户
};
if(this.auditTime == '2') {
// 每天
if(this.everyDay){
console.log(this.everyDayData);
params.everyDayData = this.everyDayData
} else if(this.MonthDay) {
// 每周
params.MonthDayData = this.MonthDayData
console.log(this.MonthDayData);
}
}
console.log( JSON.stringify(params));
console.log( this.configList);
const pra = Object.assign({}, ...this.configList)
pra.remark = JSON.stringify(params)
console.log(pra);
this.service.request(this.service.$api_update_config_batch, pra).subscribe(res => {
if (res) {
this.service.msgSrv.success('修改配置成功');
setTimeout(() => {
this.getConfigList(this.selectedTab);
}, 100);
}
});
}
getConfigList(selectedTab: any) {
this.selectedTab = selectedTab;
this.service.request(this.service.$api_get_config_by_parent_id, { id: selectedTab?.id }).subscribe((res: Array<any>) => {
if (res?.length > 0) {
res = res.map(item => ({
...item,
remark: item.remark ? JSON.parse(item.remark) : null,
itemValue: item?.itemValue ? (NOJSONTYPE.has(item?.itemType) ? item?.itemValue : JSON.parse(item?.itemValue)) : item?.itemValue,
itemData: item.itemData ? JSON.parse(item.itemData) : item.itemData
}));
const hiddenType = res.find(item => item.itemType === 7 || item.itemType === 999);
this.labelWidth = hiddenType ? 0 : 250;
this.configList = res;
} else {
this.configList = [];
}
});
}
private getImageModel(args: any, key: any) {
return [
{

View File

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-12-03 15:23:05
* @LastEditTime : 2022-04-27 15:52:30
* @LastEditTime : 2022-04-27 20:54:10
* @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\\sys-setting.module.ts
@ -38,6 +38,7 @@ import { OrganizationManagementComponent } from './components/organization-manag
import { OrganizationModalComponent } from './components/organization-management/organization-modal/organization-modal.component';
import { ApiAuthModalComponent } from './components/organization-management/api-auth-modal/api-auth-modal.component';
import { MenuTreeComponent } from './components/organization-management/menu-tree/menu-tree.component';
import { PartnerSystemConfigComponent } from './components/config/config.component';
const COMPONENTS = [
StaffManagementComponent,
@ -58,6 +59,7 @@ const COMPONENTS = [
NoTeManagementComponent,
SmsTemplateComponent,
OrganizationManagementComponent,
PartnerSystemConfigComponent
];
const NOTROUTECOMPONENTS = [
BuyerTranspowerComponent,

View File

@ -440,12 +440,15 @@ export class TaxManagementOrderReportingComponent implements OnInit {
if (item?.putStatus != '0') {
status = true
}
});
if(status) {
this.service.msgSrv.warning('选择了已上传,请重新勾选!');
return;
}
if(this.selectedRows.find(item => item.checkStatus !== '1')) {
this.service.msgSrv.warning('选择了未通过校验的订单,请重新勾选!');
return;
}
let params: any[] = [];
this.selectedRows.forEach(item => {
params.push(item.id);

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2022-03-14 14:17:38
* @LastEditors : Shiming
* @LastEditTime : 2022-03-25 16:22:32
* @LastEditTime : 2022-04-27 19:39:30
* @FilePath : \\tms-obc-web\\src\\app\\routes\\vehicle\\components\\list\\carauth\\carauth.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
@ -38,9 +38,12 @@
<ng-template sf-template="agreeImg" let-me let-ui="ui" let-schema="schema">
<img height="104" src="/assets/images/vehicle/agreement.png" class="borderImg" />
</ng-template>
<div #aaa style="position: absolute; top: 87.5%; left: 21%; opacity: 0; ">
<div style="color: #0c77e7;" (click)='view()'>点击查看行政区域代码</div>
</div>
</sf>
<img class="drivercard borderImg" height="104" src="/assets/images/vehicle/car.png" />
<div class="modal-footer">
<button nz-button type="button" (click)="close()">关闭</button>
<button nz-button type="button" nzType="primary" (click)="submitForm()" [disabled]="!(sf?.valid && i.flag !== 'view')" [nzLoading]="service.http.loading">确定</button>

View File

@ -2,7 +2,7 @@ import { Placeholder } from '@angular/compiler/src/i18n/i18n_ast';
import { Component, OnInit, ViewChild } from '@angular/core';
import { apiConf } from '@conf/api.conf';
import { cacheConf } from '@conf/cache.conf';
import { SFUISchema, SFSchema, SFUploadWidgetSchema, SFComponent, SFSelectWidgetSchema } from '@delon/form';
import { SFUISchema, SFSchema, SFUploadWidgetSchema, SFComponent, SFSelectWidgetSchema, SFTextWidgetSchema } from '@delon/form';
import { _HttpClient } from '@delon/theme';
import { EACacheService, EAEnvironmentService } from '@shared';
import { NzModalRef } from 'ng-zorro-antd/modal';
@ -17,6 +17,7 @@ import { VehicleService } from '../../../services/vehicle.service';
})
export class CarSettleCarauthComponent implements OnInit {
@ViewChild('sf', { static: false }) sf!: SFComponent;
@ViewChild('aaa', { static: false }) aaa!:any;
record: any = {};
i: any;
ui: SFUISchema = {};
@ -25,37 +26,39 @@ export class CarSettleCarauthComponent implements OnInit {
showJopFlag = false;
companyData: any = {};
detailData: any = {};
carNo = ''
carNo = '';
private titles = `
根据监管要求:总质量 4.5 吨及以下普通货 运车辆的,可填车籍地 6 位行政区域代码+000000。
`;
constructor(
private modal: NzModalRef,
public service: VehicleService,
private envSrv: EAEnvironmentService,
private eaCacheSrv: EACacheService,
) { }
private eaCacheSrv: EACacheService
) {}
ngOnInit(): void {
this.initData()
this.initSF()
this.initData();
this.initSF();
}
initData() {
if (this.i.id) {
this.companyData = this.eaCacheSrv.get(cacheConf.env)
this.companyData = this.eaCacheSrv.get(cacheConf.env);
const params = {
id: this.i.id,
}
id: this.i.id
};
this.service.request(this.service.$api_shipperCarGet, params).subscribe(res => {
this.detailData = res
this.detailData.isSelf = res.isSelf ? 1 : 0
this.detailData.isTrailer = res.isTrailer ? 1 : 0
this.detailData = res;
this.detailData.isSelf = res.isSelf ? 1 : 0;
this.detailData.isTrailer = res.isTrailer ? 1 : 0;
this.detailData.carFrontPhotoWatermark = [
{
uid: -1,
name: 'LOGO',
status: 'done',
url: this.detailData.carFrontPhotoWatermark,
response: this.detailData.carFrontPhotoWatermark,
},
response: this.detailData.carFrontPhotoWatermark
}
];
this.detailData.carProtocalWatermark = [
{
@ -63,8 +66,8 @@ export class CarSettleCarauthComponent implements OnInit {
name: 'LOGO',
status: 'done',
url: this.detailData.carProtocalWatermark,
response: this.detailData.carProtocalWatermark,
},
response: this.detailData.carProtocalWatermark
}
];
this.detailData.certificatePhotoFrontWatermark = [
{
@ -72,8 +75,8 @@ export class CarSettleCarauthComponent implements OnInit {
name: 'LOGO',
status: 'done',
url: this.detailData.certificatePhotoFrontWatermark,
response: this.detailData.certificatePhotoFrontWatermark,
},
response: this.detailData.certificatePhotoFrontWatermark
}
];
this.detailData.certificatePhotoBackWatermark = [
{
@ -81,8 +84,8 @@ export class CarSettleCarauthComponent implements OnInit {
name: 'LOGO',
status: 'done',
url: this.detailData.certificatePhotoBackWatermark,
response: this.detailData.certificatePhotoBackWatermark,
},
response: this.detailData.certificatePhotoBackWatermark
}
];
this.detailData.roadTransportPhotoWatermark = [
{
@ -90,10 +93,10 @@ export class CarSettleCarauthComponent implements OnInit {
name: 'LOGO',
status: 'done',
url: this.detailData.roadTransportPhotoWatermark,
response: this.detailData.roadTransportPhotoWatermark,
},
response: this.detailData.roadTransportPhotoWatermark
}
];
})
});
}
}
initSF() {
@ -112,7 +115,7 @@ export class CarSettleCarauthComponent implements OnInit {
widget: 'upload',
descriptionI18n: '请上传车头照照片支持JPG、PNG格式文件小于5M。',
data: {
appId: this.envSrv.env.appId,
appId: this.envSrv.env.appId
},
name: 'multipartFile',
multiple: false,
@ -127,9 +130,9 @@ export class CarSettleCarauthComponent implements OnInit {
status: 'done',
url: args.file.response.data.fullFileWatermarkPath,
response: {
url: args.file.response.data.fullFileWatermarkPath,
},
},
url: args.file.response.data.fullFileWatermarkPath
}
}
];
this.sf?.setValue('/carFrontPhotoWatermark', avatar);
this.detailData.carFrontPhoto = args.file.response.data.fullFilePath;
@ -144,13 +147,13 @@ export class CarSettleCarauthComponent implements OnInit {
observer.complete();
return;
}
console.log(_fileList)
console.log(_fileList);
observer.next(isLt2M);
observer.complete();
});
},
// previewFile: (file: NzUploadFile) => of(
}
// previewFile: (file: NzUploadFile) => of(
// file?.response?.data?.fullFilePath
// ),
}
@ -160,8 +163,8 @@ export class CarSettleCarauthComponent implements OnInit {
maxLength: 9,
type: 'string',
ui: {
placeholder: '请输入',
},
placeholder: '请输入'
}
},
carNoColor: {
title: '车牌颜色',
@ -170,24 +173,26 @@ export class CarSettleCarauthComponent implements OnInit {
widget: 'dict-select',
params: { dictKey: 'car:color' },
placeholder: '请选择车牌颜色',
containsAllLabel:false,
} as SFSelectWidgetSchema,
containsAllLabel: false
} as SFSelectWidgetSchema
},
carModel: {
title: '车型',
type: 'string',
readOnly: true,
ui: {
placeholder:'请上传行驶证自动带出'
},
placeholder: '请上传行驶证自动带出'
}
},
carEnergyType: {
title: '车辆能源类型',
type: 'string',
readOnly: true,
ui: {
placeholder:'请输入车辆能源类型'
},
widget: 'dict-select',
params: { dictKey: 'car:energy:type' },
placeholder: '请选择车辆能源类型',
containsAllLabel: false
}
},
carLength: {
title: '车长',
@ -196,20 +201,20 @@ export class CarSettleCarauthComponent implements OnInit {
widget: 'dict-select',
params: { dictKey: 'car:length' },
placeholder: '请选择车长',
containsAllLabel:false,
} as SFSelectWidgetSchema,
containsAllLabel: false
} as SFSelectWidgetSchema
},
carLoad: {
title: '载重',
title: '核定载质量',
type: 'string',
maxLength: 6,
ui: {
placeholder: '请输入',
addOnAfter: '吨',
change: (val: any) =>{
const value = val.replace(/\D/g,'')
this.sf.setValue('/carLoad', value)
},
change: (val: any) => {
const value = val.replace(/\D/g, '');
this.sf.setValue('/carLoad', value);
}
}
},
isSelf: {
@ -217,11 +222,11 @@ export class CarSettleCarauthComponent implements OnInit {
type: 'string',
enum: [
{ label: '否', value: 0 },
{ label: '是', value: 1 },
{ label: '是', value: 1 }
],
ui: {
widget: 'select',
placeholder: '请选择',
placeholder: '请选择'
}
},
isTrailer: {
@ -229,11 +234,11 @@ export class CarSettleCarauthComponent implements OnInit {
type: 'string',
enum: [
{ label: '否', value: 0 },
{ label: '是', value: 1 },
{ label: '是', value: 1 }
],
ui: {
widget: 'select',
placeholder: '请选择',
placeholder: '请选择'
}
},
carProtocalWatermark: {
@ -249,7 +254,7 @@ export class CarSettleCarauthComponent implements OnInit {
widget: 'upload',
descriptionI18n: '请上传挂靠协议支持JPG、PNG格式文件小于5M。',
data: {
appId: this.envSrv.env.appId,
appId: this.envSrv.env.appId
},
name: 'multipartFile',
multiple: false,
@ -263,12 +268,12 @@ export class CarSettleCarauthComponent implements OnInit {
status: 'done',
url: args.file.response.data.fullFileWatermarkPath,
response: {
url: args.file.response.data.fullFileWatermarkPath,
},
},
url: args.file.response.data.fullFileWatermarkPath
}
}
];
this.sf?.setValue('/carProtocalWatermark', avatar);
this.detailData.certificatePhotoFront = args.file.response.data.fullFilePath
this.detailData.certificatePhotoFront = args.file.response.data.fullFilePath;
}
},
beforeUpload: (file: any, _fileList: any) => {
@ -283,7 +288,7 @@ export class CarSettleCarauthComponent implements OnInit {
observer.complete();
});
},
previewFile: (file: NzUploadFile) => of(file.url),
previewFile: (file: NzUploadFile) => of(file.url)
}
},
agreeImg: {
@ -291,24 +296,24 @@ export class CarSettleCarauthComponent implements OnInit {
type: 'boolean',
// enum: [{ label: '长期', value: true }],
ui: {
widget: 'custom',
widget: 'custom'
}
},
titleA: {
title: '行驶证信息(必填)',
type: 'string',
ui: {
widget: 'text',
widget: 'text'
},
default: '照片上传后会自动识别文字并填充下列内容栏',
default: '照片上传后会自动识别文字并填充下列内容栏'
},
tipsA: {
title: '',
type: 'string',
ui: {
widget: 'custom',
offsetControl: 6,
},
offsetControl: 6
}
},
certificatePhotoFrontWatermark: {
type: 'string',
@ -323,7 +328,7 @@ export class CarSettleCarauthComponent implements OnInit {
widget: 'upload',
descriptionI18n: '请上传行驶证首页照片支持JPG、PNG格式文件小于5M。照片信息缺失、拼凑、过度PS、模糊不清都不会通过审核。',
data: {
appId: this.envSrv.env.appId,
appId: this.envSrv.env.appId
},
name: 'multipartFile',
multiple: false,
@ -337,15 +342,15 @@ export class CarSettleCarauthComponent implements OnInit {
status: 'done',
url: args.file.response.data.fullFileWatermarkPath,
response: {
url: args.file.response.data.fullFileWatermarkPath,
},
},
url: args.file.response.data.fullFileWatermarkPath
}
}
];
this.sf?.setValue('/certificatePhotoFrontWatermark', avatar);
this.detailData.certificatePhotoFront = args.file.response.data.fullFilePath
this.detailData.certificatePhotoFront = args.file.response.data.fullFilePath;
this.checkCarCard(args.file.response.data.fullFilePath, 'front');
} else {
this.detailData.certificatePhotoFront = ''
this.detailData.certificatePhotoFront = '';
}
},
beforeUpload: (file: any, _fileList: any) => {
@ -359,7 +364,7 @@ export class CarSettleCarauthComponent implements OnInit {
observer.next(isLt2M);
observer.complete();
});
},
}
// previewFile: (file: NzUploadFile) => of(file.url),
}
},
@ -368,8 +373,8 @@ export class CarSettleCarauthComponent implements OnInit {
type: 'string',
ui: {
widget: 'custom',
offsetControl: 6,
},
offsetControl: 6
}
},
certificatePhotoBackWatermark: {
type: 'string',
@ -384,7 +389,7 @@ export class CarSettleCarauthComponent implements OnInit {
widget: 'upload',
descriptionI18n: '请上传行驶证副业照片支持JPG、PNG格式文件小于5M。',
data: {
appId: this.envSrv.env.appId,
appId: this.envSrv.env.appId
},
name: 'multipartFile',
multiple: false,
@ -398,15 +403,15 @@ export class CarSettleCarauthComponent implements OnInit {
status: 'done',
url: args.file.response.data.fullFileWatermarkPath,
response: {
url: args.file.response.data.fullFileWatermarkPath,
},
},
url: args.file.response.data.fullFileWatermarkPath
}
}
];
this.sf?.setValue('/certificatePhotoBackWatermark', avatar);
this.detailData.certificatePhotoBack = args.file.response.data.fullFilePath
this.detailData.certificatePhotoBack = args.file.response.data.fullFilePath;
this.checkCarCard(args.file.response.data.fullFilePath, 'back');
} else {
this.detailData.certificatePhotoBack = ''
this.detailData.certificatePhotoBack = '';
}
},
beforeUpload: (file: any, _fileList: any) => {
@ -420,7 +425,7 @@ export class CarSettleCarauthComponent implements OnInit {
observer.next(isLt2M);
observer.complete();
});
},
}
// previewFile: (file: NzUploadFile) => of(file.url),
}
},
@ -429,16 +434,16 @@ export class CarSettleCarauthComponent implements OnInit {
type: 'string',
format: 'date',
ui: {
placeholder: '请输入',
},
placeholder: '请输入'
}
},
driverLicenseGetTime: {
title: '行驶证发证日期',
type: 'string',
format: 'date',
ui: {
placeholder: '请输入',
},
placeholder: '请输入'
}
},
driverLicenseEndTime: {
title: '行驶证到期日期',
@ -446,55 +451,64 @@ export class CarSettleCarauthComponent implements OnInit {
format: 'date',
maxLength: 30,
ui: {
placeholder: '请输入',
},
placeholder: '请输入'
}
},
driverLicenseSigningOrg: {
title: '行驶证签发机关',
type: 'string',
maxLength: 30,
ui: {
placeholder: '请输入',
},
placeholder: '请输入'
}
},
carDistinguishCode: {
title: '车辆识别代码',
type: 'string',
maxLength: 30,
ui: {
placeholder: '请输入',
},
placeholder: '请输入'
}
},
useNature: {
title: '使用性质',
type: 'string',
maxLength: 30,
ui: {
placeholder: '请输入',
},
placeholder: '请输入'
}
},
curbWeight: {
title: '整备质量',
type: 'string',
ui: {
placeholder: '请输入',
},
addOnAfter: '吨'
}
},
carTotalLoad: {
title: '总质量',
type: 'string',
ui: {
addOnAfter: '吨',
placeholder: '请输入'
}
},
carOwner: {
title: '所有人',
type: 'string',
maxLength: 30,
ui: {
placeholder: '请输入',
},
placeholder: '请输入'
}
},
titleB: {
title: '道运证(选填)',
type: 'string',
ui: {
widget: 'text',
widget: 'text'
},
default: '照片上传后会自动识别文字并填充下列内容栏',
default: '照片上传后会自动识别文字并填充下列内容栏'
},
roadTransportPhotoWatermark: {
type: 'string',
@ -509,7 +523,7 @@ export class CarSettleCarauthComponent implements OnInit {
widget: 'upload',
descriptionI18n: '请上传道运证照片支持JPG、PNG格式文件小于5M。蓝牌绿牌车辆可不用传道运证',
data: {
appId: this.envSrv.env.appId,
appId: this.envSrv.env.appId
},
name: 'multipartFile',
multiple: false,
@ -523,15 +537,15 @@ export class CarSettleCarauthComponent implements OnInit {
status: 'done',
url: args.file.response.data.fullFileWatermarkPath,
response: {
url: args.file.response.data.fullFileWatermarkPath,
},
},
url: args.file.response.data.fullFileWatermarkPath
}
}
];
this.sf?.setValue('/roadTransportPhotoWatermark', avatar);
this.detailData.roadTransportPhoto = args.file.response.data.fullFilePath
this.detailData.roadTransportPhoto = args.file.response.data.fullFilePath;
this.checkTransCard(args.file.response.data.fullFilePath);
} else {
this.detailData.roadTransportPhoto = ''
this.detailData.roadTransportPhoto = '';
}
},
beforeUpload: (file: any, _fileList: any) => {
@ -545,7 +559,7 @@ export class CarSettleCarauthComponent implements OnInit {
observer.next(isLt2M);
observer.complete();
});
},
}
// previewFile: (file: NzUploadFile) => of(file.url),
}
},
@ -554,7 +568,7 @@ export class CarSettleCarauthComponent implements OnInit {
type: 'boolean',
// enum: [{ label: '长期', value: true }],
ui: {
widget: 'custom',
widget: 'custom'
}
},
roadTransportNo: {
@ -564,33 +578,39 @@ export class CarSettleCarauthComponent implements OnInit {
ui: {
// widget: this.detailData.commitFlag !== 0 ? 'text' : '',
placeholder: '请输入',
},
optionalHelp: {
i18n: this.titles
}
}
},
'': { type: 'number', ui: { widget: 'text',
html: this.aaa,
defaultText: '点击查看行政区域代码' } as SFTextWidgetSchema },
roadTransportLicenceNo: {
title: '经营许可证号',
type: 'string',
maxLength: 30,
ui: {
// widget: this.detailData.commitFlag !== 0 ? 'text' : '',
placeholder: '请输入',
},
placeholder: '请输入'
}
},
roadTransportStartTime: {
title: '发证日期',
type: 'string',
format: 'date',
ui: {
placeholder: '请输入',
},
placeholder: '请输入'
}
},
roadTransportEndTime: {
title: '有效期至',
type: 'string',
format: 'date',
ui: {
placeholder: '请输入',
},
},
placeholder: '请输入'
}
}
},
required: [
'carFrontPhotoWatermark',
@ -610,62 +630,63 @@ export class CarSettleCarauthComponent implements OnInit {
'driverLicenseSigningOrg',
'carDistinguishCode',
'useNature',
'curbWeight',
'carTotalLoad',
'carOwner'
],
]
};
this.ui = {
'*': {
spanLabelFixed: 180,
grid: { span: 18 },
width: 600,
width: 600
},
$title1: {
spanLabelFixed: 0,
spanLabelFixed: 0
},
$title2: {
spanLabelFixed: 0,
spanLabelFixed: 0
},
$title3: {
spanLabelFixed: 0,
spanLabelFixed: 0
},
$isTrailer:{
grid: { span: 24 },
$isTrailer: {
grid: { span: 24 }
},
$carProtocalWatermark: {
grid: { span:12 },
grid: { span: 12 }
},
$agreeImg: {
grid: { span: 4 },
class: 'setCustom'
},
$titleB:{
grid: { span: 24 },
$titleB: {
grid: { span: 24 }
},
$roadTransportPhotoWatermark: {
grid: { span: 12 },
grid: { span: 12 }
},
$roadImg: {
grid: { span: 4 },
class: 'setCustom'
},
}
};
}
// 道路运输证识别
checkTransCard(imgurl: any) {
const params = {
transportationLicenseUrl: imgurl,
transportationLicenseUrl: imgurl
};
this.service.request(this.service.$api_recognizeTransportationLicense, params).subscribe((res: any) => {
if (res) {
this.sf.setValue('/roadTransportNo', res.number);
this.sf.setValue('/roadTransportLicenceNo', res.businessCertificate);
this.sf.setValue('/roadTransportStartTime', res.issueDate);
if(this.carNo === '') {
this.carNo = res.number
} else if(this.carNo && res.vehicleNumber.indexOf(this.carNo) === -1) {
this.service.msgSrv.warning('请上传同一认证车辆的相关证件')
if (this.carNo === '') {
this.carNo = res.number;
} else if (this.carNo && res.vehicleNumber.indexOf(this.carNo) === -1) {
this.service.msgSrv.warning('请上传同一认证车辆的相关证件');
}
}
});
@ -674,11 +695,12 @@ export class CarSettleCarauthComponent implements OnInit {
checkCarCard(imgurl: any, side: any) {
const params = {
vehicleLicenseUrl: imgurl,
side,
side
};
this.service.request(this.service.$api_recognizeVehicleLicense, params).subscribe((res: any) => {
if (res) {
if (side === 'front') { // 正面
if (side === 'front') {
// 正面
this.sf.setValue('/driverLicenseRegisterTime', res.registerDate);
this.sf.setValue('/carNo', res.number);
this.sf.setValue('/driverLicenseGetTime', res.issueDate);
@ -687,14 +709,15 @@ export class CarSettleCarauthComponent implements OnInit {
this.sf.setValue('/carOwner', res.name);
this.sf.setValue('/useNature', res.useCharacter);
this.sf.setValue('/carModel', res?.vehicleType);
this.sf.setValue('/carTotalLoad', res?.grossMass.slice(0, -2) % 1000);
} else {
this.sf.setValue('/curbWeight', res.unladenMass);
this.sf.setValue('/curbWeight', res.unladenMass.slice(0, -2) % 1000);
this.sf.setValue('/carLoad', res.approvedLoad.slice(0, -2) % 1000);
}
if(this.carNo === '') {
this.carNo = res.number
} else if(this.carNo && this.carNo !== res.number) {
this.service.msgSrv.warning('请上传同一认证车辆的相关证件')
if (this.carNo === '') {
this.carNo = res.number;
} else if (this.carNo && this.carNo !== res.number) {
this.service.msgSrv.warning('请上传同一认证车辆的相关证件');
}
}
});
@ -704,10 +727,10 @@ export class CarSettleCarauthComponent implements OnInit {
this.modal.close(true);
}
showExample() {
this.showCardFlag = !this.showCardFlag
this.showCardFlag = !this.showCardFlag;
}
showJopExample() {
this.showJopFlag = !this.showJopFlag
this.showJopFlag = !this.showJopFlag;
}
submitForm() {
const params: any = {
@ -715,20 +738,23 @@ export class CarSettleCarauthComponent implements OnInit {
...this.sf.value,
bindType: this.i.bindType
};
params.carFrontPhoto = this.detailData.carFrontPhoto
params.carProtocal = this.detailData.carProtocal
params.certificatePhotoFront = this.detailData.certificatePhotoFront
params.certificatePhotoBack = this.detailData.certificatePhotoBack
params.roadTransportPhoto = this.detailData.roadTransportPhoto
delete params.titleA
delete params.titleB
params.carFrontPhoto = this.detailData.carFrontPhoto;
params.carProtocal = this.detailData.carProtocal;
params.certificatePhotoFront = this.detailData.certificatePhotoFront;
params.certificatePhotoBack = this.detailData.certificatePhotoBack;
params.roadTransportPhoto = this.detailData.roadTransportPhoto;
delete params.titleA;
delete params.titleB;
console.log(params);
this.service.request(this.service.$api_saveUpdateShipperCar, params).subscribe((res: any) => {
if (res) {
this.service.msgSrv.success('添加成功')
this.modal.close(true)
this.service.msgSrv.success('添加成功');
this.modal.close(true);
}
})
});
}
view() {
window.open('http://www.mca.gov.cn/article/sj/xzqh/1980/')
}
}

View File

@ -2,16 +2,17 @@
@import '~@delon/abc/index';
@import '~@delon/chart/index';
@import 'app/layout/pro/styles/index.less';
@import './styles/common/global.less';
@import './styles/index';
@import './styles/theme';
.icon {
width : 18px;
fill : currentColor;
overflow : hidden;
font-size : 18px !important;
color : #ffffff;
width: 18px;
fill: currentColor;
overflow: hidden;
font-size: 18px !important;
color: #ffffff;
margin-right: 10px;
}
@ -19,13 +20,13 @@
/* 全局滚动条美化 */
*::-webkit-scrollbar {
width : (@layout-gutter);
width: (@layout-gutter);
height: (@layout-gutter);
}
*::-webkit-scrollbar-thumb {
background : #d9d9d9;
cursor : pointer;
background: #d9d9d9;
cursor: pointer;
border-radius: (@layout-gutter) / 2;
}
@ -46,14 +47,14 @@ input[type="number"] {
.break-word-all {
word-break: break-all;
word-wrap : break-word;
word-wrap: break-word;
}
st {
.block-td {
.ant-divider-vertical {
display : none;
margin : 0;
display: none;
margin: 0;
border-left: none;
}
@ -66,9 +67,9 @@ st {
}
nz-range-picker {
width : 100%;
width: 100%;
word-break: break-all;
word-wrap : break-word;
word-wrap: break-word;
}
.ant-select-tree .ant-select-tree-treenode-disabled {
@ -76,13 +77,13 @@ nz-range-picker {
margin: 0;
.ant-select-tree-checkbox-inner {
width : 0px;
width: 0px;
border-color: #ffffff !important;
}
}
.ant-select-tree-node-content-wrapper {
color : unset;
color: unset;
cursor: not-allowed;
}
}
@ -93,13 +94,13 @@ nz-range-picker {
margin: 0;
.ant-select-tree-checkbox-inner {
width : 0px;
width: 0px;
border-color: #ffffff !important;
}
}
.ant-select-tree-node-content-wrapper {
color : unset;
color: unset;
cursor: not-allowed;
}
}
@ -109,4 +110,4 @@ nz-range-picker {
cdk-virtual-scroll-viewport {
min-height: 54px;
}
}
}

View File

@ -0,0 +1,60 @@
.detail-title {
display: flex;
align-items: center;
margin-bottom: 12px;
.sign {
width: 2px;
height: 16px;
background: #E60012;
display: inline-block;
margin-right: 10px;
}
}
.divider-margin {
margin-top: 12px;
margin-bottom: 12px;
}
.step-row {
width: 80%;
margin: 0 auto;
.ant-steps-item-description {
font-size: 12px;
}
}
.new-sv-container {
&.sv__horizontal {
.sv__label-width {
justify-content: left;
}
}
}
.new-sf-container {
&.sf__horizontal .ant-form-item-label>label {
justify-content: left;
}
}
.common-order-header {
display: flex;
justify-content: space-between;
}
.common-grey {
color: #8A8E99;
}
.nameBox {
display: flex;
align-items: baseline;
.name {
margin: 0 10px 10px 0;
}
}

View File

@ -1,9 +1,11 @@
/* You can add global styles to this file, and also import other style files */
@import './fix/index';
.error-color {
color: #ff4d4f;
color: #ff4d4f;
}
@primary-color: #F5222D;
@font-size-base: 15px;
@font-size-base: 15px;

View File

@ -5,6 +5,7 @@
@import '../app/layout/pro/styles/theme-default.less';
@import './fix/theme-default.less';
// ==========Custom brand visual color==========
// ==========Custom brand visual color==========
@ -22,4 +23,4 @@
.ant-btn {
border-radius: 4px;
}
}