This commit is contained in:
wangshiming
2022-03-21 14:52:57 +08:00
54 changed files with 925 additions and 825 deletions

View File

@ -21,7 +21,7 @@
{{ costInfo?.artoname }}
</se>
<se label="结算客户" required>
{{ costInfo?.shipperId }}
{{ costInfo?.cnoName }}
</se>
<se label="收款账户">
{{ costInfo?.ltdaccountId }}
@ -75,8 +75,8 @@
</div> -->
<st #infoST [scroll]="{ x: '2000px' }" [data]="service.$api_get_advance_collection_hrxiao"
[columns]="columns.info" [page]="{ show: false }" [req]="{ process: beforeReq }"
[res]="{ reName: { list: 'data' } }" [loading]="false"
[scroll]="{ x: '1200px', y: '370px' }" class="mt-md">
[res]="{ reName: { list: 'data' } }" [loading]="false" [scroll]="{ x: '1200px', y: '370px' }"
class="mt-md">
<ng-template st-row="no" let-item let-index="index" let-column="column">
{{index+1}}
</ng-template>

View File

@ -1,9 +1,9 @@
import { Component, OnInit, ViewChild } from '@angular/core';
import { Component, ViewChild } from '@angular/core';
import { Router } from '@angular/router';
import { STComponent, STColumn, STRequestOptions } from '@delon/abc/st';
import { SFComponent, SFSchema, SFDateWidgetSchema } from '@delon/form';
import { NzModalService } from 'ng-zorro-antd/modal';
import { AccountDetailComponent } from 'src/app/shared/components/account-detail/account-detail.component';
import { FreightAccountService } from '../../services/freight-account.service';
@Component({
@ -11,7 +11,7 @@ import { FreightAccountService } from '../../services/freight-account.service';
templateUrl: './advance-collection.component.html',
styleUrls: ['../../../commom/less/box.less', '../../../commom/less/expend-but.less']
})
export class AdvanceCollectionComponent implements OnInit {
export class AdvanceCollectionComponent {
@ViewChild('st', { static: true })
st!: STComponent;
@ViewChild('sf', { static: false })
@ -23,8 +23,6 @@ export class AdvanceCollectionComponent implements OnInit {
constructor(public service: FreightAccountService, private router: Router, private modal: NzModalService) {}
ngOnInit(): void {}
beforeReq = (requestOptions: STRequestOptions) => {
if (this.sf) {
Object.assign(requestOptions.body, { ...this.sf.value });
@ -49,7 +47,7 @@ export class AdvanceCollectionComponent implements OnInit {
}
exportList() {
this.service.downloadFile(this.service.$mock_url, { ...this.sf.value, pageSize: -1 });
this.service.downloadFile(this.service.$mock_url, { ...this.sf.value, pageSize: -1 });
}
private initSF(): SFSchema {
@ -149,14 +147,14 @@ export class AdvanceCollectionComponent implements OnInit {
buttons: [
{
text: '浏览',
click: item => this.router.navigate(['/financial-management/advance-collection/detail/' + item.id])
},
{
text: '核销'
},
{
text: '退款'
click: item => this.router.navigate([`/financial-management/advance-collection/detail/${item.id}`])
}
// {
// text: '核销'
// },
// {
// text: '退款'
// }
]
}
];

View File

@ -2,6 +2,7 @@ import { Component, OnInit, ViewChild } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { STComponent, STColumn, STRequestOptions, STChange } from '@delon/abc/st';
import { SFComponent, SFSchema, SFDateWidgetSchema } from '@delon/form';
import { FreightAccountService } from '../../../services/freight-account.service';
@Component({
@ -134,6 +135,24 @@ export class PlatformAccountDetailComponent implements OnInit {
},
default: ''
},
channelSource: {
type: 'string',
title: '账户类型',
enum: [
{ value: '', label: '全部' },
{ value: '1', label: '货主账户' },
{ value: '2', label: '司机账户' },
{ value: '3', label: '运营商账户' }
],
ui: {
widget: 'select',
placeholder: '请选择',
visibleIf: {
expand: (value: boolean) => value
}
},
default: ''
},
incomeType: {
type: 'string',
title: '收支类型',

View File

@ -1,10 +1,11 @@
import { Component, OnInit, ViewChild } from '@angular/core';
import { CurrencyPipe } from '@angular/common';
import { Component, ViewChild } from '@angular/core';
import { Router } from '@angular/router';
import { STComponent, STColumn, STRequestOptions } from '@delon/abc/st';
import { SFComponent, SFSchema, SFDateWidgetSchema } from '@delon/form';
import { NzModalService } from 'ng-zorro-antd/modal';
import { FreightAccountService } from '../../services/freight-account.service';
import { CurrencyPipe } from '@angular/common';
@Component({
selector: 'app-transaction-flow',
@ -12,7 +13,7 @@ import { CurrencyPipe } from '@angular/common';
styleUrls: ['./transaction-flow.component.less'],
providers: [CurrencyPipe]
})
export class TransactionFlowComponent implements OnInit {
export class TransactionFlowComponent {
@ViewChild('st', { static: true })
st!: STComponent;
@ViewChild('sf', { static: false })
@ -29,8 +30,6 @@ export class TransactionFlowComponent implements OnInit {
private currencyPipe: CurrencyPipe
) {}
ngOnInit(): void {}
beforeReq = (requestOptions: STRequestOptions) => {
if (this.sf) {
Object.assign(requestOptions.body, {
@ -162,7 +161,7 @@ export class TransactionFlowComponent implements OnInit {
}
}
},
orderSn221f: {
projectId: {
type: 'string',
title: '所属项目',
ui: {

View File

@ -1,8 +1,9 @@
import { Component, OnInit, ViewChild } from '@angular/core';
import { Component, ViewChild } from '@angular/core';
import { Router } from '@angular/router';
import { STComponent, STColumn, STChange, STRequestOptions } from '@delon/abc/st';
import { SFComponent, SFSchema, SFDateWidgetSchema } from '@delon/form';
import { NzModalService } from 'ng-zorro-antd/modal';
import { FreightAccountService } from '../../services/freight-account.service';
@Component({
@ -10,7 +11,7 @@ import { FreightAccountService } from '../../services/freight-account.service';
templateUrl: './withdrawals-record.component.html',
styleUrls: ['../../../commom/less/box.less', '../../../commom/less/expend-but.less']
})
export class WithdrawalsRecordComponent implements OnInit {
export class WithdrawalsRecordComponent {
@ViewChild('st', { static: true })
st!: STComponent;
@ViewChild('sf', { static: false })
@ -27,9 +28,8 @@ export class WithdrawalsRecordComponent implements OnInit {
refundStatus: any = '';
msg = '';
constructor(public service: FreightAccountService, private nzModalService: NzModalService, private router: Router) {}
ngOnInit(): void {}
constructor(public service: FreightAccountService, private nzModalService: NzModalService, private router: Router) {}
beforeReq = (requestOptions: STRequestOptions) => {
if (this.sf) {
@ -66,7 +66,7 @@ export class WithdrawalsRecordComponent implements OnInit {
auditAction(item?: any) {
this.msg = '';
let params: Array<string> = [];
let params: string[] = [];
if (item) {
params = [item.id];
} else {
@ -78,6 +78,7 @@ export class WithdrawalsRecordComponent implements OnInit {
nzFooter: [
{
label: '拒绝',
loading: () => this.service.http.loading,
type: 'default',
onClick: () => {
if (!this.msg) {
@ -101,6 +102,7 @@ export class WithdrawalsRecordComponent implements OnInit {
},
{
label: '通过',
loading: () => this.service.http.loading,
type: 'primary',
onClick: () => {
this.service
@ -291,7 +293,7 @@ export class WithdrawalsRecordComponent implements OnInit {
},
{
text: '详情',
click: item => this.router.navigate(['/financial-management/withdrawals-record/detail/' + item.id])
click: item => this.router.navigate([`/financial-management/withdrawals-record/detail/${item.id}`])
}
]
}

View File

@ -284,7 +284,7 @@
<sv label="协议附件">
<!-- {{i?.supplementaryInformationVO?.stateReceipt?'是':'否'}} -->
<a href="javascript:;" (click)="agreement('1')">查看附件</a>&nbsp;&nbsp;&nbsp;&nbsp;
<a href="javascript:;" (click)="agreement('2')">补充协议</a>
<a target="_blank" [routerLink]="['/agreement']" [queryParams]="{ type: 8 }">补充协议</a>
</sv>
</sv-container>
<sv-container col="2" class="mt-md">
@ -344,7 +344,7 @@
<nz-card nzTitle="轨迹信息" style="width: 100%" [nzExtra]="extraTemplate" #distannce5>
<div nz-row>
<div nz-col [nzSpan]="12">
<st [scroll]="{y: '500px'}" #st [data]="addressItems" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }">
<st [scroll]="{y: '500px'}" style="min-height: 600px;" #st [data]="addressItems" [columns]="logColumns" [ps]="0" [page]="{ show: false, showSize: false }">
</st>
</div>
<div nz-col [nzSpan]="12">
@ -363,6 +363,7 @@
<nz-modal [(nzVisible)]="isVisible" [nzFooter]="nzModalFooter" nzTitle="附件信息" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()">
<ng-container *nzModalContent>
<div *ngIf="!imges">暂无附件信息</div>
<app-imagelist [imgList]="imges"></app-imagelist>
</ng-container>
<ng-template #nzModalFooter>

View File

@ -908,11 +908,7 @@ export class OrderManagementBulkDetailChangeComponent implements OnInit {
});
};
agreement(value: any) {
if (value === '1') {
this.imges = this.i?.supplementAgreement;
} else if (value === '2') {
this.imges = this.i?.supplementAgreement;
}
this.imges = this.i?.agreementFilePath;
this.isVisible = true;
}
handleCancel() {

View File

@ -24,7 +24,7 @@
<button
(click)="cancellation()"
nz-button
*ngIf="i?.billStatus == '4' || i?.billStatus == '5' || i?.billStatus == '2' || i?.billStatus == '3' || i?.billStatus == '1'"
*ngIf="i?.billStatus !== '1' && i?.billStatus !== '5' && i?.billStatus !== '6' && i?.overallPaymentStatus != '2'"
acl [acl-ability]="['ORDER-BULK-DETAIL-cancelAnOrder']"
>取消订单</button
>
@ -47,7 +47,7 @@
<sv label="调度员">{{ i?.goodsResource?.dispatchName }}/{{ i?.goodsResource?.dispatchPhone }} </sv>
<sv label="外部订单号">{{ i?.externalBillCode }}</sv>
<sv label="货源编号">{{ i?.goodsResource?.resourceCode }} </sv>
<sv label="运单号">{{ i?.wayBillCode }}</sv>
<sv label="运单号">{{ i?.wayBill?.wayBillCode }}</sv>
<sv label="承诺付款天数">{{ i?.goodsResource?.paymentDays }}</sv>
</div>
<nz-tabset style="margin-top: 15px">
@ -94,8 +94,8 @@
{{ i?.unloadPlanTime }}
</sv> -->
<sv label="接单数量"> {{ i?.acceptWeight }}吨,{{ i?.acceptVolume }}方 </sv>
<sv *ngIf="i?.billStatus =='3' || i?.billStatus =='4' || i?.billStatus =='5'" label="装货数量"> {{ i?.acceptWeight }}吨,{{ i?.acceptVolume }}方,{{ i?.acceptNumber }}件 </sv>
<sv *ngIf="i?.billStatus =='4' || i?.billStatus =='5'" label="卸货数量"> {{ i?.settlementWeight }}吨,{{ i?.settlementVolume }}方,{{ i?.acceptNumber }}件 </sv>
<sv *ngIf="i?.billStatus =='3' || i?.billStatus =='4' || i?.billStatus =='5'" label="装货数量"> {{ i?.loadWeight }}吨{{ i?.loadVolume }}方</sv>
<sv *ngIf="i?.billStatus =='4' || i?.billStatus =='5'" label="卸货数量"> {{ i?.settlementWeight }}吨,{{ i?.settlementVolume }}方</sv>
</sv-container>
<div class="mt-md">
<h4 class="text-md"
@ -165,7 +165,7 @@
<sv label="协议附件">
<!-- {{i?.supplementaryInformationVO?.stateReceipt?'是':'否'}} -->
<a href="javascript:;" (click)="agreement('1')">查看附件</a> &nbsp;&nbsp;&nbsp;&nbsp;
<a href="javascript:;" (click)="agreement('2')">补充协议</a>
<a target="_blank" [routerLink]="['/agreement']" [queryParams]="{ type: 8 }">补充协议</a>
</sv>
</sv-container>
<sv-container col="2" class="mt-md">
@ -208,11 +208,11 @@
<nz-card nzTitle="轨迹信息" style="width: 100%" [nzExtra]="extraTemplate" #distannce5>
<div nz-row>
<div nz-col [nzSpan]="12">
<st [scroll]="{y: '500px'}" #st [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }">
<st [scroll]="{y: '500px'}" style="min-height: 600px;" #st [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }">
</st>
</div>
<div nz-col [nzSpan]="12">
<amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [MapList]="mapList"></amap-path-simplifier>
<amap-path-simplifier [mapWidth]="'100%'" [pois]="pois" [mapHeight]="'600px'" [MapList]="mapList"></amap-path-simplifier>
</div>
</div>
</nz-card>
@ -251,6 +251,7 @@
<nz-modal [(nzVisible)]="isVisible" [nzFooter]="nzModalFooter" nzTitle="附件信息" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()">
<ng-container *nzModalContent>
<div *ngIf="!imges">暂无附件信息</div>
<app-imagelist [imgList]="imges"></app-imagelist>
</ng-container>
<ng-template #nzModalFooter>

View File

@ -28,6 +28,7 @@ export class OrderManagementBulkeDetailComponent implements OnInit {
MapList: any[]=[];
id = this.route.snapshot.params.id;
billExpenses: any[] = []; //运费信息表格信息
pois: any[] = [];
i: any;
imges: any;
totalObj: any;
@ -79,6 +80,20 @@ export class OrderManagementBulkeDetailComponent implements OnInit {
this.i = res;
this.billExpenses = this.i?.billExpenseDetails?.filter((data: any) => data.expenseCode === 'TRA');
this.i.scheduleVOList = this.i?.scheduleVOList?.filter((data:any)=>data.displayStatus !=="HIDE");
this.pois = [
{
markerLabel: '起',
color: 'blue',
position: [res.startingPoint.longitude, res.startingPoint.latitude],
title: res.startingPoint.detailedAddress
},
{
markerLabel: '卸',
color: 'red',
position: [res.endPoint.longitude, res.endPoint.latitude],
title: res.endPoint.detailedAddress
}
];
}
});
this.service.request(this.service.$api_get_getRiskDetail, { id: this.id }).subscribe(res => {
@ -97,11 +112,7 @@ export class OrderManagementBulkeDetailComponent implements OnInit {
this.router.navigate(['order-management/bulk-detailChange', this.id]);
}
agreement(value: any) {
if (value === '1') {
this.imges = this.i?.supplementAgreement;
} else if (value === '2') {
this.imges = this.i?.supplementAgreement;
}
this.imges = this.i?.agreementFilePath;
this.isVisible = true;
}
handleCancel() {

View File

@ -242,7 +242,7 @@
</div>
</ng-template>
<ng-template #extraTemplate>
<div>
<div *ngIf="resourceStatus == 4">
<button
nz-button
nzType="primary"

View File

@ -118,7 +118,7 @@ export class OrderManagementBulkComponent implements OnInit {
};
}
search() {
this.st?.load(1);
this.st?.load();
this.getGoodsSourceStatistical();
}
getGoodsSourceStatistical() {
@ -181,7 +181,10 @@ export class OrderManagementBulkComponent implements OnInit {
_$expand: { type: 'boolean', ui: { hidden: true } },
billCode: {
type: 'string',
title: '订单号'
title: '订单号',
ui: {
placeholder: '最多100个单号空号隔开',
}
},
resourceCode: {
type: 'string',
@ -513,7 +516,7 @@ export class OrderManagementBulkComponent implements OnInit {
title: '操作',
fixed: 'right',
width: '130px',
className: 'text-center',
className: 'text-left block-td',
buttons: [
{
text: '运费变更记录',
@ -523,44 +526,44 @@ export class OrderManagementBulkComponent implements OnInit {
acl: { ability: ['ORDER-BULK-listChangeApply'] },
},
{
text: '查看评价 ',
text: '查看评价',
click: _record => this.viewEvaluate(_record),
iif: item => item.billStatus == '5',
acl: { ability: ['ORDER-BULK-evaluation'] },
},
{
text: '查看详情 ',
text: '查看详情',
click: (item: any) => {
this.router.navigate(['./bulk-detail', item.id], { relativeTo: this.ar });
},
acl: { ability: ['USERCENTER-FREIGHT-USER-view'] },
},
{
text: '变更运费 ',
text: '变更运费',
click: _record => this.updateFreight(_record),
iif: item => item.billStatus !== '1' && item.billStatus !== '6' && item.overallPaymentStatus != '2',
acl: { ability: ['ORDER-BULK-FreightChangeBulkDetail'] },
},
{
text: '确认签收 ',
text: '确认签收',
click: _record => this.confirmReceipt(_record),
iif: item => item.billStatus == '4',
acl: { ability: ['VEHICLE-LIST-view'] },
},
{
text: '取消订单 ',
text: '取消订单',
click: _record => this.cancellation(_record),
iif: item => item.billStatus !== '1' && item.billStatus !== '6' && item.overallPaymentStatus != '2',
acl: { ability: ['ORDER-BULK-signBulkOrder'] },
},
{
text: '申请退款 ',
text: '申请退款',
click: (_record) => this.applyRefund(_record),
iif: item => item.isApplyForRefund,
acl: { ability: ['ORDER-VEHICLE-modificationOrder'] },
},
{
text: '修改订单 ',
text: '修改订单',
click: _record => this.changeOrder(_record),
iif: item => item.billStatus == '4' || item.billStatus == '5' || item.billStatus == '2' || item.billStatus == '3',
acl: { ability: ['ORDER-BULK-BulkBillDetail'] },

View File

@ -389,7 +389,7 @@ export class OrderManagementComplianceAuditComponent implements OnInit {
title: '操作',
fixed: 'right',
width: '140px',
className: 'text-center',
className: 'text-center block-td',
buttons: [
{
text: '查看申诉记录',
@ -403,7 +403,7 @@ export class OrderManagementComplianceAuditComponent implements OnInit {
acl: { ability: ['ORDER-COMPLIANCE-AUDIT-listChangeApply'] },
},
{
text: '合规抽查  ',
text: '合规抽查',
click: _record => this.audit(_record),
iif: item => item.complianceStatus == '0',
acl: { ability: ['ORDER-COMPLIANCE-AUDIT-updateBillByCompliance'] },

View File

@ -331,7 +331,7 @@ export class OrderManagementReceiptsAuditComponent implements OnInit {
title: '操作',
fixed: 'right',
width: '136px',
className: 'text-center',
className: 'text-center block-td',
buttons: [
{
text: '生成电子单据',
@ -340,19 +340,19 @@ export class OrderManagementReceiptsAuditComponent implements OnInit {
acl: { ability: ['ORDER-RECEIPTS-electronicBillingOne'] },
},
{
text: '通过    ',
text: '通过',
click: _record => this.sign(_record),
iif: item => item.auditStatus == '1',
acl: { ability: ['ORDER-RECEIPTS-billAuditPassBatch'] },
},
{
text: '修改    ',
text: '修改',
click: _record => this.modification(_record),
iif: item => item.auditStatus == '1' ,
acl: { ability: ['ORDER-RECEIPTS-updateBillExamine'] },
},
{
text: '查看凭证 ',
text: '查看凭证',
click: _record => this.generate(_record, 3),
iif: item => item.auditStatus == '2',
acl: { ability: ['ORDER-RECEIPTS-view'] },

View File

@ -302,7 +302,7 @@ export class OrderManagementRiskComponent implements OnInit {
title: '操作',
fixed: 'right',
width: '90px',
className: 'text-center',
className: 'text-center block-td',
buttons: [
{
text: '审核',
@ -311,7 +311,7 @@ export class OrderManagementRiskComponent implements OnInit {
acl: { ability: ['ORDER-RISK-audit'] },
},
{
text: '详情 ',
text: '详情',
click: _record => this.viewEvaluate(_record),
acl: { ability: ['ORDER-RISK-riskDetail'] },
}

View File

@ -35,9 +35,9 @@
<sv label="录单员">{{ i?.createUserName || i?.goodsResource?.createUserName }} /{{ i?.createUserPhone || i?.goodsResource?.createUserPhone }} </sv>
<sv label="调度员">{{ i?.goodsResource?.dispatchName }}/{{ i?.goodsResource?.dispatchPhone }} </sv>
<sv label="外部订单号">{{ i?.externalBillCode }}</sv>
<sv label="货源编号">{{ i?.resourceCode }} </sv>
<sv label="货源编号">{{ i?.goodsResource?.resourceCode }} </sv>
<sv label="运单号">{{ i?.wayBillId }}</sv>
<sv label="承诺付款天数">{{ i?.goodsResource?.dispatchName }}</sv>
<sv label="承诺付款天数">{{ i?.goodsResource?.paymentDays }}</sv>
</div>
<nz-tabset style="margin-top: 15px">
@ -259,7 +259,7 @@
<sv label="协议附件">
<!-- {{i?.supplementaryInformationVO?.stateReceipt?'是':'否'}} -->
<a href="javascript:;" (click)="agreement('1')">查看附件</a>&nbsp;&nbsp;&nbsp;&nbsp;
<a href="javascript:;" (click)="agreement('2')">补充协议</a>
<a target="_blank" [routerLink]="['/agreement']" [queryParams]="{ type: 8 }">补充协议</a>
</sv>
</sv-container>
<sv-container col="2" class="mt-md">
@ -318,7 +318,7 @@
<nz-card nzTitle="轨迹信息" style="width: 100%" [nzExtra]="extraTemplate" #distannce5>
<div nz-row>
<div nz-col [nzSpan]="12">
<st [scroll]="{y: '500px'}" #st [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }">
<st [scroll]="{y: '500px'}" style="min-height: 600px;" #st [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }">
</st>
</div>
<div nz-col [nzSpan]="12">
@ -336,6 +336,7 @@
</nz-card>
<nz-modal [(nzVisible)]="isVisible" [nzFooter]="nzModalFooter" nzTitle="附件信息" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()">
<ng-container *nzModalContent>
<div *ngIf="!imges">暂无附件信息</div>
<app-imagelist [imgList]="imges"></app-imagelist>
</ng-container>
<ng-template #nzModalFooter>

View File

@ -855,11 +855,7 @@ export class OrderManagementVehicleDetailChangeComponent implements OnInit {
});
};
agreement(value: any) {
if (value === '1') {
this.imges = this.i?.supplementAgreement;
} else if (value === '2') {
this.imges = this.i?.supplementAgreement;
}
this.imges = this.i?.agreementFilePath;
this.isVisible = true;
}
handleCancel() {

View File

@ -46,9 +46,9 @@
<sv label="录单员">{{ i?.createUserName || i?.goodsResource?.createUserName }} /{{ i?.createUserPhone || i?.goodsResource?.createUserPhone }} </sv>
<sv label="调度员">{{ i?.goodsResource?.dispatchName }}/{{ i?.goodsResource?.dispatchPhone }} </sv>
<sv label="外部订单号">{{ i?.externalBillCode }}</sv>
<sv label="货源编号">{{ i?.resourceCode }} </sv>
<sv label="货源编号">{{ i?.goodsResource?.resourceCode }} </sv>
<sv label="运单号">{{ i?.wayBillId }}</sv>
<sv label="承诺付款天数">{{ i?.goodsResource?.dispatchName }}</sv>
<sv label="承诺付款天数">{{ i?.goodsResource?.paymentDays }}</sv>
</div>
<nz-tabset style="margin-top: 15px">
@ -140,7 +140,7 @@
<sv label="货物价值">
{{i?.goodsResource?.goodsValue !==null?(i?.goodsResource?.goodsValue|currency)+'元':'-'}}
</sv>
<sv label="保价费金额">
<sv label="服务包费用">
{{i?.goodsResource?.insurancePremium!==null?(i?.goodsResource?.insurancePremium |currency)+'元':'-'}}
</sv>
</sv-container>
@ -171,7 +171,7 @@
<sv label="协议附件">
<!-- {{i?.supplementaryInformationVO?.stateReceipt?'是':'否'}} -->
<a href="javascript:;" (click)="agreement('1')">查看附件</a> &nbsp;&nbsp;&nbsp;&nbsp;
<a href="javascript:;" (click)="agreement('2')">补充协议</a>
<a target="_blank" [routerLink]="['/agreement']" [queryParams]="{ type: 8 }">补充协议</a>
</sv>
</sv-container>
<sv-container col="2" class="mt-md">
@ -214,12 +214,12 @@
<nz-card nzTitle="轨迹信息" style="width: 100%" [nzExtra]="extraTemplate" #distannce5>
<div nz-row>
<div nz-col [nzSpan]="12">
<st [scroll]="{y: '500px'}" #st [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }">
<st [scroll]="{y: '500px'}" style="min-height: 600px;" #st [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }">
</st>
</div>
<div nz-col [nzSpan]="12">
<amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [MapList]="mapList"></amap-path-simplifier>
</div>
<amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [MapList]="mapList" [pois]="pois"></amap-path-simplifier>
</div>
</div>
</nz-card>
<ng-template #extraTemplate>
@ -233,6 +233,7 @@
<nz-modal [(nzVisible)]="isVisible" [nzFooter]="nzModalFooter" nzTitle="附件信息" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()">
<ng-container *nzModalContent>
<div *ngIf="!imges">暂无附件信息</div>
<app-imagelist [imgList]="imges"></app-imagelist>
</ng-container>
<ng-template #nzModalFooter>

View File

@ -124,11 +124,7 @@ export class OrderManagementVehicleDetailComponent implements OnInit {
this.router.navigate(['order-management/vehicle-detailChange', this.id]);
}
agreement(value: any) {
if (value === '1') {
this.imges = this.i?.agreementFilePath;
} else if (value === '2') {
this.imges = this.i?.agreementFilePath;
}
this.imges = this.i?.agreementFilePath;
this.isVisible = true;
}
handleCancel() {

View File

@ -86,13 +86,26 @@
<ng-template st-row="createUserName" let-item let-index="index">
<div> {{ item?.createUserName }}/{{ item?.createUserPhone }} </div>
</ng-template>
<ng-template st-row="mybidDetailInfo" let-item let-index="index">
<!-- <ng-template st-row="mybidDetailInfo" let-item let-index="index">
<div *ngIf="item.mybidDetailInfo.length > 0">
<p *ngFor="let data of item.mybidDetailInfo">
{{ data.expenseName }}:¥{{ data.price | number: '0.2-2' }}
<span *ngIf="data.paymentStatusLabel" style="color: #f59a63">{{ data.paymentStatusLabel }}</span>
</p>
</div>
</ng-template> -->
<ng-template st-row="mybidDetailInfo" let-item let-index="index">
<div *ngIf="item.mybidDetailInfo.length > 0">
<div *ngFor="let data of item.mybidDetailInfo">
{{ data.expenseName }}{{ data.price | currency }}
<span *ngIf="data.paymentStatus && data.paymentStatus === '1' && data.price>0" style="color: #f59a63">待申请</span>
<span *ngIf="data.paymentStatus && data.paymentStatus === '2'" style="color: #f59a63">已支付</span>
<span *ngIf="data.paymentStatus && data.paymentStatus === '3'" style="color: #f59a63">已拒绝</span>
<span *ngIf="data.paymentStatus && data.paymentStatus === '4'" style="color: #f59a63">申请中</span>
<span *ngIf="data.paymentStatus && data.paymentStatus === '5'" style="color: #f59a63">退款中</span>
<span *ngIf="data.paymentStatus && data.paymentStatus === '6'" style="color: #f59a63">退款成功</span>
</div>
</div>
</ng-template>
<ng-template st-row="billExpenseDetailVOList" let-item let-index="index">
<div *ngFor="let i of item?.billExpenseDetailVOList; let ii = index">
@ -201,6 +214,7 @@
<button nz-button nzType="primary" (click)="modifyFreightPeople()" acl [acl-ability]="['ORDER-VEHICLE-modificationNetworkFreight']"> 修改网络货运人 </button>
<button nz-button nzType="primary" (click)="modifycaptain()" acl [acl-ability]="['ORDER-VEHICLE-modificationCarCaptain']"> 修改车队长 </button>
<button
*ngIf="resourceStatus == 4"
nz-button
nzType="primary"
nzGhost

View File

@ -191,8 +191,10 @@ resourceStatus: any;
_$expand: { type: 'boolean', ui: { hidden: true } },
billCode: {
type: 'string',
title: '订单号'
title: '订单号',
ui: {
placeholder: '最多100个单号空号隔开',
}
},
resourceCode: {
type: 'string',
@ -436,7 +438,7 @@ resourceStatus: any;
title: '操作',
fixed: 'right',
width: '130px',
className: 'text-center',
className: 'text-center block-td',
buttons: [
{
@ -446,50 +448,50 @@ resourceStatus: any;
acl: { ability: ['ORDER-VEHICLE-ChangeApplyList'] },
},
{
text: '查看详情 ',
text: '查看详情',
click: (item: any) => {
this.router.navigate(['./vehicle-detail', item.id], { relativeTo: this.ar });
},
acl: { ability: ['USERCENTER-FREIGHT-USER-view'] },
},
{
text: '查看评价 ',
text: '查看评价',
click: (_record) => this.viewEvaluate(_record),
iif: item => item.billStatus == '5',
acl: { ability: ['ORDER-VEHICLE-evaluation'] },
},
{
text: '变更运费 ',
text: '变更运费',
click: (_record) => this.updateFreight(_record),
iif: item => item.billStatus !== '1' && item.billStatus !== '6' && item.overallPaymentStatus != '2',
acl: { ability: ['ORDER-VEHICLE-FreightChangeWholeDetail'] },
},
{
text: '确认签收 ',
text: '确认签收',
click: (_record) => this.confirmReceipt(_record),
iif: item => item.billStatus == '4',
acl: { ability: ['ORDER-VEHICLE-signWholeOrder'] },
},
{
text: '取消订单 ',
text: '取消订单',
click: (_record) => this.cancellation(_record),
iif: item => item.billStatus !== '1' && item.billStatus !== '6' && item.overallPaymentStatus !== '2',
acl: { ability: ['ORDER-VEHICLE-cancelAnOrder'] },
},
{
text: '修改订单 ',
text: '修改订单',
click: (_record) => this.changeOrder(_record),
iif: item => item.billStatus == '4' || item.billStatus == '5' || item.billStatus == '2' || item.billStatus == '3',
acl: { ability: ['ORDER-VEHICLE-modificationOrder'] },
},
{
text: '申请退款 ',
text: '申请退款',
click: (_record) => this.applyRefund(_record),
iif: item => item.isApplyForRefund,
acl: { ability: ['ORDER-VEHICLE-modificationOrder'] },
},
{
text: '查看轨迹 ',
text: '查看轨迹',
click: (_record) => this.viewTrack(_record),
iif: item => item.billStatus !== '1' && item.billStatus !== '6',
// acl: { ability: ['VEHICLE-LIST-view'] },
@ -748,16 +750,6 @@ resourceStatus: any;
nzContent: VehicleFreightPeopleComponent,
nzComponentParams: { data: { ids: params, enterpriseInfoIds: params2, } },
nzFooter: null,
// nzOnOk: sin => {
// this.service.request(this.service.$api_change_bulk, { billId: item.id, ...sin.sf.value }).subscribe(res => {
// if (res) {
// this.service.msgSrv.success('变更运费成功');
// modal.destroy();
// this.st.reload();
// }
// });
// return false;
// }
});
modal.afterClose.subscribe((result) => {
if (result) {

View File

@ -61,7 +61,7 @@ export class VehicleFreightPeopleComponent implements OnInit {
};
this.ui = {
'*': {
spanLabelFixed: 100,
spanLabelFixed: 130,
grid: { span: 16 }
}
};
@ -80,8 +80,8 @@ export class VehicleFreightPeopleComponent implements OnInit {
console.log(params);
this.service.request(this.service.$api_set_updateEnterpriseInfoBatch, params).subscribe((res: any) => {
if (res) {
this.modal.destroy();
this.service.msgSrv.success('变更运费成功');
this.modal.destroy(true);
this.service.msgSrv.success('修改网络货运人成功');
}
});
}

View File

@ -29,7 +29,7 @@ export class VehicleModifyRateComponent implements OnInit {
{ title: '订单号', index: 'billCode' },
{ title: '原附加费率', render: 'oldAdditionalRate' },
{ title: '原附加费', render: 'oldSurcharge' },
{ title: '新附加费', render: 'newSurcharge' },
// { title: '新附加费', render: 'newSurcharge' },
];
aggreechecked = false;

View File

@ -12,13 +12,13 @@
<sf #sf mode="edit" [schema]="schema" [ui]="ui" [formData]="formData" button="none">
<ng-template sf-template="weight" let-me let-ui="ui" let-schema="schema">
<div style="display: flex">
<nz-input-number [(ngModel)]="data.weight" [nzMin]="1" [nzMax]="999" [nzStep]="1"></nz-input-number>
<nz-input-number [(ngModel)]="data.weight" [nzMin]="1" [nzMax]="99999" [nzStep]="0.01" [nzPrecision]="2"></nz-input-number>
<div class="left_btn"></div>
</div>
</ng-template>
<ng-template sf-template="volume" let-me let-ui="ui" let-schema="schema">
<div style="display: flex">
<nz-input-number [(ngModel)]="data.volume" [nzMin]="1" [nzMax]="999" [nzStep]="1"></nz-input-number>
<nz-input-number [(ngModel)]="data.volume" [nzMin]="1" [nzMax]="99999" [nzStep]="0.01" [nzPrecision]="2"></nz-input-number>
<div class="left_btn"></div>
</div>
</ng-template>

View File

@ -1,4 +1,3 @@
import { Component, OnInit, ViewChild } from '@angular/core';
import { DatePipe } from '@angular/common';
import {
@ -32,441 +31,455 @@ export class VehicleSureArriveComponent implements OnInit {
i: any;
formData: any;
Status: any;
data: any ={
data: any = {
weight: 0,
volume: 0
};
@ViewChild('sf', { static: false }) sf!: SFComponent;
schema: SFSchema = {};
ui: SFUISchema = {};
constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public http: _HttpClient, public service: WaybillManagementServe,private datePipe: DatePipe,private envSrv: EAEnvironmentService, ) {}
constructor(
private modal: NzModalRef,
private msgSrv: NzMessageService,
public http: _HttpClient,
public service: WaybillManagementServe,
private datePipe: DatePipe,
private envSrv: EAEnvironmentService
) {}
ngOnInit(): void {
console.log(this.i)
this.initData()
console.log(this.i);
this.initData();
this.i.time = this.i?.loadingTime;
this.initSF();
}
initSF() {
if(this.Status === 1) {
this.schema = {
properties: {
time: {
type: 'string',
title: '卸货时间',
format: 'date-time',
if (this.Status === 1) {
this.schema = {
properties: {
time: {
type: 'string',
title: '卸货时间',
format: 'date-time'
},
imgUrl3: {
type: 'string',
title: '装货凭证',
readOnly: true,
ui: {
widget: 'upload',
action: apiConf.fileUpload,
accept: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '提货单',
data: {
appId: this.envSrv.env.appId
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg,image/jpg,image/gif';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card'
} as SFUploadWidgetSchema
},
imgUrl4: {
type: 'string',
title: '',
readOnly: true,
ui: {
widget: 'upload',
action: apiConf.fileUpload,
accept: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '人车货照片',
data: {
appId: this.envSrv.env.appId
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg,image/jpg,image/gif';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card'
} as SFUploadWidgetSchema
},
no4: {
type: 'string',
title: '',
ui: {
widget: 'text'
},
default: '单张大小不超过5M支持.jpg、.jpeg和 .png格式'
},
imgUrl1: {
type: 'string',
title: '卸货凭证',
ui: {
widget: 'upload',
action: apiConf.fileUpload,
accept: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '提货单',
data: {
appId: this.envSrv.env.appId
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg,image/jpg,image/gif';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card'
} as SFUploadWidgetSchema
},
imgUrl2: {
type: 'string',
title: '',
ui: {
widget: 'upload',
action: apiConf.fileUpload,
accept: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '人车货照片',
data: {
appId: this.envSrv.env.appId
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg,image/jpg,image/gif';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card'
} as SFUploadWidgetSchema
}
},
imgUrl3: {
type: 'string',
title: '装货凭证',
readOnly: true,
ui: {
widget: 'upload',
action: apiConf.fileUpload,
accept: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '提货单',
data: {
appId: this.envSrv.env.appId,
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg,image/jpg,image/gif';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
required: ['time']
};
} else {
this.schema = {
properties: {
time: {
type: 'string',
title: '卸货时间',
format: 'date-time'
},
weight: {
type: 'string',
title: '卸货重量',
ui: {
widget: 'custom'
}
},
volume: {
type: 'string',
title: '卸货体积',
ui: {
widget: 'custom'
}
},
imgUrl3: {
type: 'string',
title: '装货凭证',
readOnly: true,
ui: {
widget: 'upload',
action: apiConf.fileUpload,
accept: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '提货单',
data: {
appId: this.envSrv.env.appId
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg,image/jpg,image/gif';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
});
},
multiple: false,
listType: 'picture-card'
} as SFUploadWidgetSchema
},
imgUrl4: {
type: 'string',
title: '',
readOnly: true,
ui: {
widget: 'upload',
action: apiConf.fileUpload,
accept: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '人车货照片',
data: {
appId: this.envSrv.env.appId
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg,image/jpg,image/gif';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
});
},
multiple: false,
listType: 'picture-card'
} as SFUploadWidgetSchema
},
no4: {
type: 'string',
title: '',
ui: {
widget: 'text'
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
default: '单张大小不超过5M支持.jpg、.jpeg和 .png格式'
},
imgUrl1: {
type: 'string',
title: '卸货凭证',
ui: {
widget: 'upload',
action: apiConf.fileUpload,
accept: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '提货单',
data: {
appId: this.envSrv.env.appId
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg,image/jpg,image/gif';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card'
} as SFUploadWidgetSchema
},
imgUrl2: {
type: 'string',
title: '',
ui: {
widget: 'upload',
action: apiConf.fileUpload,
accept: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '人车货照片',
data: {
appId: this.envSrv.env.appId
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg,image/jpg,image/gif';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card'
} as SFUploadWidgetSchema
}
},
imgUrl4: {
type: 'string',
title: '',
readOnly: true,
ui: {
widget: 'upload',
action: apiConf.fileUpload,
accept: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '人车货照片',
data: {
appId: this.envSrv.env.appId,
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg,image/jpg,image/gif';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
},
no4: {
type: 'string',
title: '',
ui: {
widget: 'text',
},
default: '单张大小不超过5M支持.jpg、.jpeg和 .png格式',
},
imgUrl1: {
type: 'string',
title: '卸货凭证',
ui: {
widget: 'upload',
action: apiConf.fileUpload,
accept: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '提货单',
data: {
appId: this.envSrv.env.appId,
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg,image/jpg,image/gif';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
},
imgUrl2: {
type: 'string',
title: '',
ui: {
widget: 'upload',
action: apiConf.fileUpload,
accept: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '人车货照片',
data: {
appId: this.envSrv.env.appId,
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg,image/jpg,image/gif';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
}
},
required: ['time']
};
}else {
this.schema = {
properties: {
time: {
type: 'string',
title: '卸货时间',
format: 'date-time',
},
weight: {
type: 'string',
title: '卸货重量',
ui: {
widget: 'custom',
}
},
volume: {
type: 'string',
title: '卸货体积',
ui: {
widget: 'custom',
}
},
imgUrl3: {
type: 'string',
title: '装货凭证',
readOnly: true,
ui: {
widget: 'upload',
action: apiConf.fileUpload,
accept: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '提货单',
data: {
appId: this.envSrv.env.appId,
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg,image/jpg,image/gif';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
},
imgUrl4: {
type: 'string',
title: '',
readOnly: true,
ui: {
widget: 'upload',
action: apiConf.fileUpload,
accept: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '人车货照片',
data: {
appId: this.envSrv.env.appId,
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg,image/jpg,image/gif';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
},
no4: {
type: 'string',
title: '',
ui: {
widget: 'text',
},
default: '单张大小不超过5M支持.jpg、.jpeg和 .png格式',
},
imgUrl1: {
type: 'string',
title: '卸货凭证',
ui: {
widget: 'upload',
action: apiConf.fileUpload,
accept: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '提货单',
data: {
appId: this.envSrv.env.appId,
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg,image/jpg,image/gif';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
},
imgUrl2: {
type: 'string',
title: '',
ui: {
widget: 'upload',
action: apiConf.fileUpload,
accept: 'image/png,image/jpeg,image/jpg,image/gif',
limit: 1,
limitFileCount: 1,
resReName: 'data.fullFileWatermarkPath',
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '人车货照片',
data: {
appId: this.envSrv.env.appId,
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
return new Observable((observer: Observer<boolean>) => {
const isLt1M = file.size / 1024 / 1024 < 5;
const fileType = 'image/png,image/jpeg,image/jpg,image/gif';
if (fileType.indexOf(file.type) === -1) {
this.service.msgSrv.warning('图片格式不正确!');
observer.complete();
return;
}
if (!isLt1M) {
this.service.msgSrv.warning('图片大小超过5M!');
observer.complete();
return;
}
observer.next(isLt1M);
observer.complete();
});
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
}
},
required: ['time' ]
};
}
required: ['time', 'weight', 'volume']
};
}
this.ui = {
'*': {
spanLabelFixed: 100,
grid: { span: 20 }
},
$imgUrl1: { grid: { span: 12} },
$imgUrl2: { grid: { span: 12} },
$imgUrl3: { grid: { span: 12} },
$imgUrl4: { grid: { span: 12} },
$imgUrl1: { grid: { span: 12 } },
$imgUrl2: { grid: { span: 12 } },
$imgUrl3: { grid: { span: 12 } },
$imgUrl4: { grid: { span: 12 } }
};
}
save(value: any): void {
if(this.Status === 1) {
if(!value.time) {
this.service.msgSrv.warning('卸货时间为空!')
if (this.Status === 1) {
if (!value.time) {
this.service.msgSrv.warning('卸货时间为空!');
return;
}
const params = {
}
const params = {
id: this.i.id,
imgUrl1: value?.imgUrl1?.data?.fullFilePath,
imgUrl2: value?.imgUrl2?.data?.fullFilePath,
time: value?.time,
}
params.time = this.datePipe.transform(value.time, 'yyyy-MM-dd HH:mm:ss ')
this.service.request(this.service.$api_get_insertWholeUnloadCarInfo, params).subscribe((res) => {
if(res) {
this.service.msgSrv.success('确认到车成功!')
this.modal.destroy(true);
}
})
} else {
if(!value.time ) {
this.service.msgSrv.warning('卸货时间为空!')
return;
}
const params = {
id: this.i?.id,
imgUrl1: value?.imgUrl1?.data?.fullFilePath,
imgUrl2: value?.imgUrl2?.data?.fullFilePath,
time: value?.time,
volume: this.data?.volume,
weight: this.data?.weight
}
params.time = this.datePipe.transform(value.time, 'yyyy-MM-dd HH:mm:ss ')
this.service.request(this.service.$api_get_insertBulkUnloadCarInfo, params).subscribe((res) => {
if(res) {
this.service.msgSrv.success('确认到车成功!')
this.modal.destroy(true);
}
})
}
time: value?.time
};
params.time = this.datePipe.transform(value.time, 'yyyy-MM-dd HH:mm:ss ');
this.service.request(this.service.$api_get_insertWholeUnloadCarInfo, params).subscribe(res => {
if (res) {
this.service.msgSrv.success('确认到车成功!');
this.modal.destroy(true);
}
});
} else {
if (!value?.time) {
this.service.msgSrv.warning('装货时间为空!');
return;
}
if (!this.data?.volume) {
this.service.msgSrv.warning('装货重量为空!');
return;
}
if (!this.data?.weight) {
this.service.msgSrv.warning('装货体积为空!');
return;
}
const params = {
id: this.i?.id,
imgUrl1: value?.imgUrl1?.data?.fullFilePath,
imgUrl2: value?.imgUrl2?.data?.fullFilePath,
time: value?.time,
volume: this.data?.volume,
weight: this.data?.weight
};
params.time = this.datePipe.transform(value.time, 'yyyy-MM-dd HH:mm:ss ');
this.service.request(this.service.$api_get_insertBulkUnloadCarInfo, params).subscribe(res => {
if (res) {
this.service.msgSrv.success('确认到车成功!');
this.modal.destroy(true);
}
});
}
}
// 确认到车界面信息(两个只能看的图片)
// 确认到车界面信息(两个只能看的图片)
initData() {
this.service.request(this.service.$api_get_getUnloadCarInfo, { id : this.i?.id}).subscribe((res) => {
console.log(res)
this.service.request(this.service.$api_get_getUnloadCarInfo, { id: this.i?.id }).subscribe(res => {
console.log(res);
if (res.imgUrl1) {
this.formData = {
imgUrl3: [
@ -476,10 +489,10 @@ export class VehicleSureArriveComponent implements OnInit {
status: 'done',
url: res.imgUrl1,
response: {
url: res.imgUrl1,
},
},
],
url: res.imgUrl1
}
}
],
imgUrl4: [
{
uid: 'logo',
@ -487,16 +500,15 @@ export class VehicleSureArriveComponent implements OnInit {
status: 'done',
url: res.imgUrl2,
response: {
url: res.imgUrl2,
},
},
],
url: res.imgUrl2
}
}
]
};
}
})
});
}
close(): void {
this.modal.destroy(true);
}
}

View File

@ -12,13 +12,13 @@
<sf #sf mode="edit" [schema]="schema" [ui]="ui" [formData]="i" button="none">
<ng-template sf-template="weight" let-me let-ui="ui" let-schema="schema">
<div style="display: flex">
<nz-input-number [(ngModel)]="data.weight" [nzMin]="1" [nzMax]="999999" [nzStep]="1"></nz-input-number>
<nz-input-number [(ngModel)]="data.weight" [nzMin]="1" [nzMax]="999999" [nzPrecision]="2" [nzStep]="0.01"></nz-input-number>
<div class="left_btn"></div>
</div>
</ng-template>
<ng-template sf-template="volume" let-me let-ui="ui" let-schema="schema">
<div style="display: flex">
<nz-input-number [(ngModel)]="data.volume" [nzMin]="1" [nzMax]="999999" [nzStep]="1"></nz-input-number>
<nz-input-number [(ngModel)]="data.volume" [nzMin]="1" [nzMax]="999999" [nzStep]="0.01" [nzPrecision]="2"></nz-input-number>
<div class="left_btn"></div>
</div>
</ng-template>

View File

@ -1,4 +1,3 @@
import { Component, OnInit, ViewChild } from '@angular/core';
import {
SFComponent,
@ -31,37 +30,44 @@ export class VehicleSureDepartComponent implements OnInit {
record: any = {};
i: any;
Status: any;
data: any ={
data: any = {
weight: '',
volume: ''
};
@ViewChild('sf', { static: false }) sf!: SFComponent;
schema: SFSchema = {};
ui: SFUISchema = {};
constructor(private modal: NzModalRef, private msgSrv: NzMessageService, public http: _HttpClient, public service: WaybillManagementServe, private envSrv: EAEnvironmentService,private datePipe: DatePipe) {}
constructor(
private modal: NzModalRef,
private msgSrv: NzMessageService,
public http: _HttpClient,
public service: WaybillManagementServe,
private envSrv: EAEnvironmentService,
private datePipe: DatePipe
) {}
ngOnInit(): void {
this.initSF();
console.log(this.i)
this.data.weight = this.i?.weight
console.log(this.i);
this.data.weight = this.i?.weight;
this.i.time = this.i.loadingTime;
}
initSF() {
if(this.Status === 1) {
if (this.Status === 1) {
this.schema = {
properties: {
time: {
type: 'string',
title: '装货时间',
format: 'date-time',
format: 'date-time'
},
no4: {
type: 'string',
title: '',
ui: {
widget: 'text',
},
default: '单张大小不超过5M支持.jpg、.jpeg和 .png格式',
widget: 'text'
},
default: '单张大小不超过5M支持.jpg、.jpeg和 .png格式'
},
imgUrl1: {
type: 'string',
@ -76,7 +82,7 @@ export class VehicleSureDepartComponent implements OnInit {
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '提货单',
data: {
appId: this.envSrv.env.appId,
appId: this.envSrv.env.appId
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
@ -98,8 +104,8 @@ export class VehicleSureDepartComponent implements OnInit {
});
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
listType: 'picture-card'
} as SFUploadWidgetSchema
},
imgUrl2: {
type: 'string',
@ -114,7 +120,7 @@ export class VehicleSureDepartComponent implements OnInit {
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '人车货照片',
data: {
appId: this.envSrv.env.appId,
appId: this.envSrv.env.appId
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
@ -136,8 +142,8 @@ export class VehicleSureDepartComponent implements OnInit {
});
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
listType: 'picture-card'
} as SFUploadWidgetSchema
}
},
required: ['time']
@ -148,29 +154,29 @@ export class VehicleSureDepartComponent implements OnInit {
time: {
type: 'string',
title: '装货时间',
format: 'date-time',
format: 'date-time'
},
weight: {
type: 'string',
title: '装货重量',
ui: {
widget: 'custom',
}
widget: 'custom'
}
},
volume: {
type: 'string',
title: '装货体积',
ui: {
widget: 'custom',
}
widget: 'custom'
}
},
no4: {
type: 'string',
title: '',
ui: {
widget: 'text',
},
default: '单张大小不超过5M支持.jpg、.jpeg和 .png格式',
widget: 'text'
},
default: '单张大小不超过5M支持.jpg、.jpeg和 .png格式'
},
imgUrl1: {
type: 'string',
@ -185,7 +191,7 @@ export class VehicleSureDepartComponent implements OnInit {
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '提货单',
data: {
appId: this.envSrv.env.appId,
appId: this.envSrv.env.appId
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
@ -207,8 +213,8 @@ export class VehicleSureDepartComponent implements OnInit {
});
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
listType: 'picture-card'
} as SFUploadWidgetSchema
},
imgUrl2: {
type: 'string',
@ -223,7 +229,7 @@ export class VehicleSureDepartComponent implements OnInit {
urlReName: 'data.fullFileWatermarkPath',
descriptionI18n: '人车货照片',
data: {
appId: this.envSrv.env.appId,
appId: this.envSrv.env.appId
},
name: 'multipartFile',
beforeUpload: (file: any, fileList: any) => {
@ -245,69 +251,75 @@ export class VehicleSureDepartComponent implements OnInit {
});
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
listType: 'picture-card'
} as SFUploadWidgetSchema
}
},
required: ['time']
required: ['time', 'weight', 'volume']
};
}
this.ui = {
'*': {
spanLabelFixed: 100,
grid: { span: 20 }
},
$imgUrl1: { grid: { span: 12} },
$imgUrl2: { grid: { span: 12} },
$imgUrl1: { grid: { span: 12 } },
$imgUrl2: { grid: { span: 12 } }
};
}
save(value: any): void {
if(this.Status === 1) {
if(!value?.time) {
this.service.msgSrv.warning('装货时间为空!')
if (this.Status === 1) {
if (!value?.time) {
this.service.msgSrv.warning('装货时间为空!');
return;
}
const params = {
}
const params = {
id: this.i.id,
imgUrl1: value?.imgUrl1?.data?.fullFilePath,
imgUrl2: value?.imgUrl2?.data?.fullFilePath,
time: value?.time
};
params.time = this.datePipe.transform(value.time, 'yyyy-MM-dd HH:mm:ss ');
this.service.request(this.service.$api_get_insertWholeStartCarInfo, params).subscribe(res => {
if (res) {
this.service.msgSrv.success('确认发车成功!');
this.modal.destroy(true);
}
});
} else {
if (!value?.time) {
this.service.msgSrv.warning('装货时间为空!');
return;
}
if (!this.data?.volume) {
this.service.msgSrv.warning('装货重量为空!');
return;
}
if (!this.data?.weight) {
this.service.msgSrv.warning('装货体积为空!');
return;
}
console.log(value);
const params = {
id: this.i.id,
imgUrl1: value?.imgUrl1?.data?.fullFilePath,
imgUrl2: value?.imgUrl2?.data?.fullFilePath,
time: value?.time,
}
params.time = this.datePipe.transform(value.time, 'yyyy-MM-dd HH:mm:ss ')
this.service.request(this.service.$api_get_insertWholeStartCarInfo, params).subscribe((res) => {
if(res) {
this.service.msgSrv.success('确认发车成功!')
this.modal.destroy(true);
volume: this.data?.volume,
weight: this.data?.weight
};
params.time = this.datePipe.transform(value.time, 'yyyy-MM-dd HH:mm:ss ');
this.service.request(this.service.$api_get_insertBulkStartCarInfo, params).subscribe(res => {
if (res) {
this.service.msgSrv.success('确认发车成功!');
this.modal.destroy(true);
}
})
} else {
if(!value?.time) {
this.service.msgSrv.warning('装货时间为空!')
return;
}
console.log(value)
const params = {
id: this.i.id,
imgUrl1: value?.imgUrl1?.data?.fullFilePath,
imgUrl2: value?.imgUrl2?.data?.fullFilePath,
time: value?.time,
volume: this.data?.volume,
weight: this.data?.weight
}
params.time = this.datePipe.transform(value.time, 'yyyy-MM-dd HH:mm:ss ')
this.service.request(this.service.$api_get_insertBulkStartCarInfo, params).subscribe((res) => {
if(res) {
this.service.msgSrv.success('确认发车成功!')
this.modal.destroy(true);
}
})
});
}
}
close(): void {
this.modal.destroy(true);
}
}

View File

@ -12,7 +12,7 @@
<nz-card nzTitle="轨迹信息" [nzExtra]="extraTemplate" >
<div style="display: flex; flex: 1;">
<div style=" flex: 1;">
<st #st [scroll]="{y: '500px'}" [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }">
<st #st [scroll]="{y: '500px'}" style="min-height: 600px;" [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }">
</st>
</div>
<div style="flex: 1;" >

View File

@ -40,14 +40,14 @@
<div class="approval-status">
<div style="width: 60%; margin: 0 auto">
<nz-steps style="width: 70%; margin: 0 auto" [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]="i?.resourceStatus === '2' ? '已完结' : '完结'" [nzSubtitle]="i?.endTime"></nz-step>
<nz-step [nzStatus]="i?.resourceStatus !== '1'?'finish':'process'" nzIcon="solution"
[nzDescription]="i?.createTime" nzTitle="下单"></nz-step>
<nz-step *ngIf="i?.resourceStatus === '1' || i?.resourceStatus === '4' "
[nzStatus]="i?.resourceStatus=== '1'? 'wait':'finish'" nzIcon="file-done"
[nzTitle]="i?.resourceStatus === '4'?'已完结':'完结'" [nzDescription]="i?.endTime"></nz-step>
<nz-step nzStatus="finish" nzIcon="close-circle" nzTitle="取消货源" *ngIf="i?.resourceStatus === '3'"
[nzSubtitle]="i?.endTime"></nz-step>
[nzDescription]="i?.endTime"></nz-step>
</nz-steps>
</div>
</div>
@ -56,17 +56,23 @@
<nz-card nzTitle="基本信息">
<sv-container col="3">
<sv-title>货物信息</sv-title>
<ng-container *ngFor="let item of i?.goodsInfoList">
<ng-container *ngFor="let item of i?.goodsInfoVOList">
<sv label="货物名称">
{{ item?.goodsName }}
{{item.goodsTypeName}} > {{item.goodsName}}
</sv>
<sv label="货物数量"> {{ item?.weight }}吨 | {{ item?.volume }}方 </sv>
<sv label="剩余"> {{ 10 }}吨 | {{ 10 }}方 </sv>
<sv label="用车需求"> {{ item?.carModel }} | {{ item?.carLength }}米 </sv>
<sv label="承运信息">
{{ i?.carrierInformationVO?.driverName }} / {{ i?.carrierInformationVO?.driverTelephone }} /
{{ i?.carrierInformationVO?.driverLicensePlate }}
<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> -->
@ -123,15 +129,16 @@
</div>
<nz-divider class="mb-xs mt-xs"></nz-divider>
<div class="text-right">
<label>单价:</label>
<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>
</div>
</div>
</div>
</div>
</nz-card>
<nz-card nzTitle="关联单">
<nz-card 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>)

View File

@ -126,13 +126,12 @@
<sf #sf4 [schema]="schema4" [formData]="sf4data" [button]="'none'" [ui]="ui4">
<ng-template sf-template="freightPrice" let-i let-ui="ui">
<nz-input-group [nzAddOnAfter]="addOnAfterTemplate">
<nz-input-number [ngModel]="i.value" (ngModelChange)="i.setValue($event)" [nzMin]="1" style="width: 100%"></nz-input-number>
<nz-input-number [nzMax]="99999" [nzMin] ="0" nzPlaceHolder="请输入" type="number" [ngModel]="i.value"
(ngModelChange)="i.setValue($event)" [nzPrecision]="2" style="width: 100%;"></nz-input-number>
</nz-input-group>
<ng-template #addOnAfterTemplate>
<nz-select [ngModel]="sf4.value.freightType" (ngModelChange)="sf4.setValue('/freightType', $event)">
<nz-option nzLabel="元/吨" nzValue="1"></nz-option>
<nz-option nzLabel="元/方" nzValue="2"></nz-option>
<nz-option nzLabel="元/车" nzValue="3"></nz-option>
<nz-option [nzValue]="item.value" [nzLabel]="item.label" *ngFor="let item of freightTypeOptions"> </nz-option>
</nz-select>
</ng-template>
</ng-template>

View File

@ -41,6 +41,8 @@ export class SupplyManagementBulkPublishComponent implements OnInit {
totalTime = 0.0; //路程总时间
currentGoodsTypeName: any;
enterpriseProjectIds: any;
freightTypeOptions: any;
ruleOptions: any;
id = this.route.snapshot.params.id; // 传参id
// // 单位
startInfo: any = [];
@ -104,6 +106,7 @@ export class SupplyManagementBulkPublishComponent implements OnInit {
this.initSF4();
this.initSF6();
this.initdata();
this.initDict();
this.getLimitvalue();
}
initSF1() {
@ -190,10 +193,10 @@ export class SupplyManagementBulkPublishComponent implements OnInit {
type: 'string',
title: '调度员手机号',
maxLength: 30,
ui: {
ui: {
placeholder: '请输入'
}
},
}
},
required: ['shipperAppUserId', 'enterpriseProjectId', 'enterpriseInfoName', 'deadlineTime']
};
@ -201,7 +204,7 @@ export class SupplyManagementBulkPublishComponent implements OnInit {
'*': {
spanLabelFixed: 115,
grid: { span: 12 }
},
}
};
}
initSF3() {
@ -272,7 +275,7 @@ export class SupplyManagementBulkPublishComponent implements OnInit {
}
}
},
required: ['goodsTypeId', 'goodsName', 'goodsNameId','goodsName1']
required: ['goodsTypeId', 'goodsName', 'goodsNameId', 'goodsName1']
};
this.ui3 = {
'*': {
@ -301,7 +304,6 @@ export class SupplyManagementBulkPublishComponent implements OnInit {
},
default: '1'
},
rule: {
type: 'string',
title: '',
@ -532,6 +534,14 @@ export class SupplyManagementBulkPublishComponent implements OnInit {
Number(this.sf7?.value?.receiptPay) +
Number(this.sf7?.value?.toPay);
}
initDict() {
this.service.getDictByKey('freight:type').subscribe(res => {
this.freightTypeOptions = res;
});
this.service.getDictByKey('goodresource:rounding:rules').subscribe(res => {
this.ruleOptions = res;
});
}
// 获取城市列表
getRegionCode(regionCode: any) {
return this.service
@ -706,7 +716,7 @@ export class SupplyManagementBulkPublishComponent implements OnInit {
unLoadingPlaceDTOList: LoadingList,
goodsInfoDTOList: goodsInfoDTOList,
estimatedKilometers: this.totalDistance,
estimatedTravelTime: this.totalTime,
estimatedTravelTime: this.totalTime
};
params.freightPrice = this.totalFees;
const modalRef = this.modalService.create({
@ -714,7 +724,7 @@ export class SupplyManagementBulkPublishComponent implements OnInit {
nzContent: TranAgreementComponent,
nzWidth: 900,
nzFooter: null,
nzComponentParams: { object: params, shipperName: this.shipperName , type:'bulk'}
nzComponentParams: { object: params, shipperName: this.shipperName, type: 'bulk' }
});
modalRef.afterClose.subscribe(result => {
if (result) {
@ -1001,13 +1011,13 @@ export class SupplyManagementBulkPublishComponent implements OnInit {
if (this.PageStatus === '大宗修改') {
this.sf4data.id = res?.goodsInfoVOList[0]?.id;
}
// 计算里程,时间
if (this.startInfo[0]?.detailedAddress && this.endInfo[0]?.detailedAddress) {
this.amapService.drivingCompute([...this.startInfo], [...this.endInfo]).subscribe(res => {
this.totalDistance = res.distance;
this.totalTime = res.time;
});
}
// 计算里程,时间
if (this.startInfo[0]?.detailedAddress && this.endInfo[0]?.detailedAddress) {
this.amapService.drivingCompute([...this.startInfo], [...this.endInfo]).subscribe(res => {
this.totalDistance = res.distance;
this.totalTime = res.time;
});
}
this.totalFees = res?.freightPrice || '0';
this.sf7data = {
stateReceipt: res?.stateReceipt,
@ -1080,13 +1090,13 @@ export class SupplyManagementBulkPublishComponent implements OnInit {
element.type = '2';
});
// 计算里程,时间
if (this.startInfo[0]?.detailedAddress && this.endInfo[0]?.detailedAddress) {
this.amapService.drivingCompute([...this.startInfo], [...this.endInfo]).subscribe(res => {
this.totalDistance = res.distance;
this.totalTime = res.time;
});
}
// 计算里程,时间
if (this.startInfo[0]?.detailedAddress && this.endInfo[0]?.detailedAddress) {
this.amapService.drivingCompute([...this.startInfo], [...this.endInfo]).subscribe(res => {
this.totalDistance = res.distance;
this.totalTime = res.time;
});
}
}
getLimitvalue() {
const getlimitvaluesParms = [

View File

@ -134,20 +134,12 @@
<sf #sf4 [schema]="schema4" [button]="'none'" [ui]="ui4" [formData]="sf4data">
<ng-template sf-template="freightPrice" let-i let-ui="ui">
<nz-input-group [nzAddOnAfter]="addOnAfterTemplate">
<input
nz-input
type="number"
min="0"
step="0.01"
[ngModel]="i.value"
(ngModelChange)="i.setValue($event)"
placeholder="请输入"
oninput="if(value>99999)value=99999;if(value<1)value=1"
/>
<nz-input-number [nzMax]="99999" [nzMin] ="0" nzPlaceHolder="请输入" type="number" [ngModel]="i.value"
(ngModelChange)="i.setValue($event)" [nzPrecision]="2" style="width: 100%;"></nz-input-number>
</nz-input-group>
<ng-template #addOnAfterTemplate>
<nz-select [ngModel]="sf4.value.freightType" (ngModelChange)="sf4.setValue('/freightType', $event)">
<nz-option [nzValue]="item.value" [nzLabel]="item.label" *ngFor="let item of freightTypeOptions"></nz-option>
<nz-option [nzValue]="item.value" [nzLabel]="item.label" *ngFor="let item of freightTypeOptions"> </nz-option>
</nz-select>
</ng-template>
</ng-template>

View File

@ -39,6 +39,7 @@ export class SupplyManagementBulkReleasePublishComponent implements OnInit {
creatTime: any; // 货源单设置回显
modifyTime: any; // 货源单设置回显
totalFees: any; // 总数信息
ruleOptions: any;
id = '';
type = 'add';
limitValues = {
@ -89,6 +90,7 @@ export class SupplyManagementBulkReleasePublishComponent implements OnInit {
this.initSF4();
this.initSF6();
this.getLimitvalue();
this.initDict();
this.startInfo = [
{
detailedAddress: '',
@ -538,6 +540,14 @@ export class SupplyManagementBulkReleasePublishComponent implements OnInit {
}
};
}
initDict() {
this.service.getDictByKey('freight:type').subscribe(res => {
this.freightTypeOptions = res;
});
this.service.getDictByKey('goodresource:rounding:rules').subscribe(res => {
this.ruleOptions = res;
});
}
//指派熟车
chooseFamifiar(item: any) {
const modalRef = this.modalService.create({

View File

@ -73,7 +73,7 @@
[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] }"
[loading]="loading"
[loading]="false"
>
<ng-template st-row="createUserName" let-item let-index="index">
<div> {{ item?.createUserName }}/{{ item?.createUserPhone }} </div>

View File

@ -98,7 +98,7 @@ export class SupplyManagementBulkComponent implements OnInit {
return requestOptions;
};
search() {
this.st?.load(1);
this.st?.load();
this.getGoodsSourceStatistical()
}
afterRes = (data: any[], rawData?: any) => {
@ -323,7 +323,7 @@ export class SupplyManagementBulkComponent implements OnInit {
title: '操作',
fixed: 'right',
width: '110px',
className: 'text-center',
className: 'text-center block-td',
buttons: [
{
text: '货源审核',
@ -332,7 +332,7 @@ export class SupplyManagementBulkComponent implements OnInit {
acl: { ability: ['SUPPLY-INDEX-bulkBatchAudit'] },
},
{
text: '二维码 ',
text: '二维码',
click: (_record) => this.assignedQrcode(_record),
iif: item => item.resourceStatus == 1,
},

View File

@ -991,9 +991,9 @@ export class SupplyManagementOnecarPublishComponent implements OnInit {
];
// 运费信息
const expenseList = [
{ expenseCode: 'PRE', expenseName: '预付', price: this.sf7.value.prePay || 0, id: this.sf7data?.prePayId || '' },
{ expenseCode: 'RECE', expenseName: '到付', price: this.sf7.value.toPay || 0, id: this.sf7data?.toPayId || '' },
{ expenseCode: 'BACK', expenseName: '回单付', price: this.sf7.value.receiptPay || 0, id: this.sf7data?.receiptPayId || '' }
{ expenseCode: 'PRE', expenseName: '预付', price: this.sf7.value.prePay || 0, id: this.sf7data?.prePayId || '' ,resourceId: this.sf7data?.PREresourceId || '' },
{ expenseCode: 'RECE', expenseName: '到付', price: this.sf7.value.toPay || 0, id: this.sf7data?.toPayId || '' ,resourceId: this.sf7data?.RECEresourceId || ''},
{ expenseCode: 'BACK', expenseName: '回单付', price: this.sf7.value.receiptPay || 0, id: this.sf7data?.receiptPayId || '' ,resourceId: this.sf7data?.BACKresourceId || ''}
];
// 从“再下一单”过来将所有的子参数内的id都删除
if (this.PageStatus === '整车下一单') {
@ -1288,14 +1288,28 @@ export class SupplyManagementOnecarPublishComponent implements OnInit {
receiptAddress: res?.supplementaryInformationVO.address || '',
remarks: res?.supplementaryInformationVO?.remarks || ''
};
// this.sf7data = {
// prePay: res?.shippingInformationVO?.prePay,
// toPay: res?.shippingInformationVO?.toPay,
// // oilCardPay: 0,
// receiptPay: res?.shippingInformationVO?.receiptPay,
// total: res?.shippingInformationVO?.totalFee,
// appendFee: res?.shippingInformationVO?.appendFee,
// paymentDays: res?.paymentDays
// };
this.sf7data = {
prePay: res?.shippingInformationVO?.prePay,
toPay: res?.shippingInformationVO?.toPay,
// oilCardPay: 0,
receiptPay: res?.shippingInformationVO?.receiptPay,
total: res?.shippingInformationVO?.totalFee,
appendFee: res?.shippingInformationVO?.appendFee,
paymentDays: res?.paymentDays
prePay: res?.expenseVOList?.filter((data: any) => data.expenseCode === 'PRE')[0]?.price || null,
toPay: res?.expenseVOList?.filter((data: any) => data.expenseCode === 'RECE')[0]?.price || null,
receiptPay: res?.expenseVOList?.filter((data: any) => data.expenseCode === 'BACK')[0]?.price || null,
appendFee: res?.expenseVOList?.filter((data: any) => data.expenseCode === 'ATT')[0]?.price || 0,
paymentDays: res?.paymentDays || '',
prePayId: res?.expenseVOList?.filter((data: any) => data.expenseCode === 'PRE')[0]?.id || '',
PREresourceId: res?.expenseVOList?.filter((data: any) => data.expenseCode === 'PRE')[0]?.resourceId || '',
RECEresourceId: res?.expenseVOList?.filter((data: any) => data.expenseCode === 'RECE')[0]?.resourceId || '',
BACKresourceId: res?.expenseVOList?.filter((data: any) => data.expenseCode === 'BACK')[0]?.resourceId || '',
toPayId: res?.expenseVOList?.filter((data: any) => data.expenseCode === 'RECE')[0]?.id || '',
receiptPayId: res?.expenseVOList?.filter((data: any) => data.expenseCode === 'BACK')[0]?.id || '',
appendFeeId: res?.expenseVOList?.filter((data: any) => data.expenseCode === 'ATT')[0]?.id || ''
};
this.sf7.setValue('/prePay', this.sf7data.prePay);
this.sf7.setValue('/toPay', this.sf7data.toPay);

View File

@ -162,7 +162,7 @@
<sv label="货物价值">
{{i?.goodsValue !==null?(i?.goodsValue|currency)+'元':'-'}}
</sv>
<sv label="保价费金额">
<sv label="服务包费用">
{{i?.insurancePremium!==null?(i?.insurancePremium |currency)+'元':'-'}}
</sv>
</sv-container>

View File

@ -179,11 +179,12 @@ export class SupplyManagementVehicleComponent implements OnInit {
label: '下载失败数据',
type: 'primary',
onClick: () => {
this.service.request(this.service.$api_getFailUploadGoodsOperateResource, result.ids).subscribe((res: any) => {
if (res) {
console.log(res);
}
});
this.service.downloadFile(this.service.$api_getFailUploadGoodsOperateResource, result.ids);
// this.service.request(this.service.$api_getFailUploadGoodsOperateResource, result.ids).subscribe((res: any) => {
// if (res) {
// console.log(res);
// }
// });
console.log(111);
}
}
@ -595,7 +596,7 @@ export class SupplyManagementVehicleComponent implements OnInit {
title: '操作',
fixed: 'right',
width: '110px',
className: 'text-center',
className: 'text-center block-td',
buttons: [
{
text: '货源审核',
@ -626,7 +627,7 @@ export class SupplyManagementVehicleComponent implements OnInit {
acl: { ability: ['SUPPLY-INDEX-vehiclePlaceOrder'] }
},
{
text: '重新指派 ',
text: '重新指派',
click: _record => this.assignedCar(_record),
iif: item => item.resourceStatus === '1' && item.serviceType === '2',
acl: { ability: ['SUPPLY-INDEX-vehicleReassign'] }

View File

@ -154,13 +154,20 @@ export class SupplyManagementImportSupplyComponent implements OnInit {
});
}
save(): void {
console.log(this?.networkTransporter)
console.log(this.sf.value)
if(!this.sf.value?.shipperAppUserId || !this?.networkTransporter || !this.sf.value?.enterpriseProjectId || !this.sf.value?.fileName) {
this.service.msgSrv.error('请填写必填项并上传文件!')
return
}
const formData : any= new FormData();
this.files.forEach((file: any) => {
this.files?.forEach((file: any) => {
formData.append('file', file);
formData.append('shipperAppUserId', this.sf.value?.shipperAppUserId);
formData.append('enterpriseInfoId', this?.networkTransporter);
formData.append('enterpriseProjectId', this.sf.value?.enterpriseProjectId);
});
console.log(formData)
this.service.request(this.service.$api_goodsResourceOperateImport, formData).subscribe(res => {
if (res) {

View File

@ -175,4 +175,9 @@ export class SupplyManagementService extends BaseService {
$api_asyncExportWholeList = '/api/sdc/goodsResourceOperate/asyncExportWholeList';
// 根据货主ID查询合同签署属性
public $api_getContractAtr = '/api/mdc/cuc/enterpriseInfo/cargoOwner/getContractAtr';
getDictByKey(dictKey: string) {
const params = { dictKey: dictKey };
return this.request(this.$api_getDictValue, params);
}
}

View File

@ -29,7 +29,7 @@
</div>
</div>
<st #st [data]="service.$api_get_crmCustomer_page" [columns]="columns" [req]="{ params: reqParams }"
[loading]="false" [scroll]="{ y: '370px' }" (change)="stChange($event)">
[loading]="false" [scroll]="{ y: '370px' }" (change)="stChange($event)" [page]="{}" >
<ng-template st-row="customerType" let-item let-index="index">
<div>
<span *ngIf="item?.customerType == 1">客户</span>

View File

@ -1,12 +1,13 @@
import { query } from '@angular/animations';
import { CurrencyPipe } from '@angular/common';
import { Component, OnInit, ViewChild } from '@angular/core';
import { Component, ViewChild } from '@angular/core';
import { Router } from '@angular/router';
import { STComponent, STColumn, STChange, STRequestOptions } from '@delon/abc/st';
import { SFComponent, SFSchema, SFDateWidgetSchema, SFUISchema } from '@delon/form';
import { isTemplateRef } from 'ng-zorro-antd/core/util';
import { NzMessageService } from 'ng-zorro-antd/message';
import { NzModalService } from 'ng-zorro-antd/modal';
import { TicketService } from '../../services/ticket.service';
import { PrintOrderModalComponent } from './print-order-modal/print-order-modal.component';
import { RequestedInvoiceModalComponent } from './requested-invoice-modal/requested-invoice-modal.component';
@ -16,7 +17,7 @@ import { RequestedInvoiceModalComponent } from './requested-invoice-modal/reques
templateUrl: './invoice-requested.component.html',
styleUrls: ['./invoice-requested.component.less', '../../../commom/less/box.less']
})
export class InvoiceRequestedComponent implements OnInit {
export class InvoiceRequestedComponent {
@ViewChild('st', { static: true })
st!: STComponent;
@ViewChild('sf', { static: false })
@ -33,8 +34,6 @@ export class InvoiceRequestedComponent implements OnInit {
selectedRows: any[] = [];
constructor(public service: TicketService, private nzModalService: NzModalService, private router: Router) {}
ngOnInit(): void {}
beforeReq = (requestOptions: STRequestOptions) => {
if (this.resourceStatus) {
Object.assign(requestOptions.body, { sts: this.resourceStatus });
@ -219,6 +218,11 @@ export class InvoiceRequestedComponent implements OnInit {
},
nzFooter: null
});
modal.afterClose.subscribe(res => {
if (res) {
this.st.load(1);
}
});
}
/**
@ -296,6 +300,14 @@ export class InvoiceRequestedComponent implements OnInit {
otherremarks: {
type: 'string',
title: '其他需求',
<<<<<<< HEAD
=======
enum: [
{ label: '全部', value: '' },
{ label: '是', value: true },
{ label: '否', value: false }
],
>>>>>>> ace758617fd29baf5826fe50da26dfa1b86ae71e
ui: {
visibleIf: {
expand: (value: boolean) => value
@ -427,7 +439,7 @@ export class InvoiceRequestedComponent implements OnInit {
// },
{
text: '订单明细<br/>',
click: item => this.router.navigate(['/ticket/invoice-requested/detail/' + item?.id], { queryParams: { sts: item.sts } })
click: item => this.router.navigate([`/ticket/invoice-requested/detail/${item?.id}`], { queryParams: { sts: item.sts } })
},
{
text: '查看原因<br/>',

View File

@ -12,7 +12,7 @@
<app-requested-detail [id]="id"></app-requested-detail>
<st
#st
#st1
[data]="service.$api_get_invoice_requested_order_detail"
[columns]="columns"
bordered

View File

@ -6,9 +6,10 @@
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath : \\tms-obc-web\\src\\app\\routes\\ticket-management\\components\\invoice-requested\\requested-invoice-modal\\requested-invoice-modal.component.ts
*/
import { Component, OnInit, ViewChild } from '@angular/core';
import { Component, ViewChild } from '@angular/core';
import { STChange, STColumn, STComponent, STRequestOptions } from '@delon/abc/st';
import { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';
import { TicketService } from '../../../services/ticket.service';
@Component({
@ -16,16 +17,14 @@ import { TicketService } from '../../../services/ticket.service';
templateUrl: './requested-invoice-modal.component.html',
styleUrls: ['./requested-invoice-modal.component.less']
})
export class RequestedInvoiceModalComponent implements OnInit {
@ViewChild('st', { static: false })
st!: STComponent;
export class RequestedInvoiceModalComponent {
@ViewChild('st1', { static: false })
st1!: STComponent;
columns: STColumn[] = this.initST();
id: any;
selectedRows: any[] = [];
constructor(public service: TicketService, private nzModalService: NzModalService, private modal: NzModalRef) {}
ngOnInit(): void {}
beforeReq = (requestOptions: STRequestOptions) => {
Object.assign(requestOptions.body, { vatappHId: this.id });
return requestOptions;
@ -33,6 +32,7 @@ export class RequestedInvoiceModalComponent implements OnInit {
/**
* 移除订单
*
* @returns
*/
removeOrder(item: any[]) {
@ -45,7 +45,7 @@ export class RequestedInvoiceModalComponent implements OnInit {
this.service.request(this.service.$api_remove_bill, ids).subscribe(res => {
if (res) {
this.service.msgSrv.success('移除成功');
this.modal.destroy();
this.modal.destroy(true);
}
});
}
@ -57,7 +57,7 @@ export class RequestedInvoiceModalComponent implements OnInit {
this.selectedRows = e.checkbox!;
break;
case 'filter':
this.st.load();
this.st1.load();
break;
}
}
@ -78,7 +78,7 @@ export class RequestedInvoiceModalComponent implements OnInit {
width: 90,
type: 'widget',
className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.billkpmoney }) }
widget: { type: 'currency-chy', params: ({ record }: any) => ({ value: record.billkpmoney }) }
},
{
title: '运输费',
@ -86,7 +86,7 @@ export class RequestedInvoiceModalComponent implements OnInit {
width: 90,
type: 'widget',
className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.fjfmoney2 }) }
widget: { type: 'currency-chy', params: ({ record }: any) => ({ value: record.fjfmoney2 }) }
},
{
title: '附加费',
@ -94,7 +94,7 @@ export class RequestedInvoiceModalComponent implements OnInit {
width: 90,
type: 'widget',
className: 'text-right',
widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.fjfmoney }) }
widget: { type: 'currency-chy', params: ({ record }: any) => ({ value: record.fjfmoney }) }
},
{
title: '操作',
@ -104,7 +104,7 @@ export class RequestedInvoiceModalComponent implements OnInit {
buttons: [
{
text: '移除',
click: item => this.removeOrder([item])
click: (item: any) => this.removeOrder([item])
}
]
}
@ -116,17 +116,19 @@ export class RequestedInvoiceModalComponent implements OnInit {
return;
}
const selectedRows = this.selectedRows.map(item => {
delete item._values;
return item;
return { ...item };
});
const params = {
ficoVatappBillVOList: selectedRows,
ficoVatappBillVOList: selectedRows.map(item => {
delete item._values;
return item;
}),
id: this.id
};
this.service.request(this.service.$api_get_applyFicoVatinv, params).subscribe((res: any) => {
if (res) {
this.service.msgSrv.success('开票成功');
this.modal.destroy();
this.modal.destroy(true);
}
});
}

View File

@ -377,12 +377,11 @@ export class FreightComponentsListComponent implements OnInit {
{
title: '操作',
width: '110px',
className: 'text-center',
className: 'text-center block-td',
fixed: 'right',
buttons: [
{ type: 'divider' },
{
text: '查看  <br>',
text: '查看',
acl: { ability: ['USERCENTER-FREIGHT-LIST-view'] },
click: item => {
this.router.navigate(['./detail', item.id], { relativeTo: this.ar });

View File

@ -19,8 +19,8 @@
</div>
<div nz-row style="display: flex; justify-content: end;" class="mb-xs">
<div nz-col>
<button nz-button *ngIf="i.wayBillStatus == '2'" (click)="sureDepart(i)" acl [acl-ability]="['WAYBILL-BULK-DETAIL-insertBulkStartCarInfo']">确认发车</button>
<button nz-button nzType="primary" *ngIf="i.wayBillStatus == '3'" (click)="sureArrive(i)" nzGhost acl [acl-ability]="['WAYBILL-BULK-DETAIL-insertBulkUnloadCarInfo']" >确认到车</button>
<button nz-button *ngIf="i?.wayBillStatus == '2'" (click)="sureDepart(i)" acl [acl-ability]="['WAYBILL-BULK-DETAIL-insertBulkStartCarInfo']">确认发车</button>
<button nz-button nzType="primary" *ngIf="i?.wayBillStatus == '3'" (click)="sureArrive(i)" nzGhost acl [acl-ability]="['WAYBILL-BULK-DETAIL-insertBulkUnloadCarInfo']" >确认到车</button>
</div>
</div>
<div>
@ -29,10 +29,10 @@
<sv label="货主">{{ i?.shippername }} </sv>
<sv label="所属项目">{{i?.enterpriseProject}}</sv>
<sv label="服务类型">{{i?.serviceTypeLabel}}</sv>
<sv label="调度员">{{i?.dispatch?.name}} /{{i?.dispatch?.phone}}</sv>
<sv label="调度员">{{i?.dispatchName}} /{{i?.dispatchPhone}}</sv>
<sv label="外部订单号">{{ i?.externalBillCode }}</sv>
<sv label="货源编号">{{ i?.resourceCode }} </sv>
<sv label="运单号">{{ i?.wayBillCode }}</sv>
<sv label="运单号">{{ i?.wayBill?.wayBillCode }}</sv>
<sv label="承诺付款天数">{{ i?.paymentDays }}</sv>
</div>
<nz-tabset style="margin-top: 15px;">
@ -92,13 +92,13 @@
{{i?.unloadPlanTime}}
</sv> -->
<sv label="接单数量">
{{i?.acceptWeight}}吨,{{i?.acceptVolume}}方,{{i?.acceptNumber}}件
{{ i?.acceptWeight }}吨,{{ i?.acceptVolume }}方
</sv>
<sv *ngIf="i?.billStatus =='3' || i?.billStatus =='4' || i?.billStatus =='5'" label="装货数量">
{{i?.acceptWeight}}吨,{{i?.acceptVolume}}方,{{i?.acceptNumber}}件
{{ i?.loadWeight }}吨{{ i?.loadVolume }}方
</sv>
<sv *ngIf="i?.billStatus =='4' || i?.billStatus =='5'" label="卸货数量">
{{i?.settlementWeight}}吨,{{i?.settlementVolume}}方,{{i?.acceptNumber}}件
{{ i?.settlementWeight }}吨,{{ i?.settlementVolume }}方
</sv>
</sv-container>
<div class="mt-md">
@ -182,7 +182,7 @@
<sv label="协议附件">
<!-- {{i?.supplementaryInformationVO?.stateReceipt?'是':'否'}} -->
<a href="javascript:;" (click)="agreement('1')">查看附件</a> &nbsp;&nbsp;&nbsp;&nbsp;
<a href="javascript:;" (click)="agreement('2')">补充协议</a>
<a target="_blank" [routerLink]="['/agreement']" [queryParams]="{ type: 8 }">补充协议</a>
</sv>
</sv-container>
<sv-container col="2" class="mt-md">
@ -224,13 +224,12 @@
</sv>
</sv-container>
</nz-card>
<nz-card>
<div nz-row>
<nz-card nzTitle="轨迹信息" style="width: 100%" [nzExtra]="extraTemplate" #distannce5>
<div nz-row>
<div nz-col [nzSpan]="12">
<st [scroll]="{y: '500px'}" #st [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }">
<st [scroll]="{y: '500px'}" style="min-height: 600px;" #st [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }">
</st>
</div>
<div nz-col [nzSpan]="12">
@ -249,6 +248,7 @@
<nz-modal [(nzVisible)]="isVisible" [nzFooter]="nzModalFooter" nzTitle="附件信息" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()">
<ng-container *nzModalContent>
<div *ngIf="!imges">暂无附件信息</div>
<app-imagelist [imgList]="imges"></app-imagelist>
</ng-container>
<ng-template #nzModalFooter>

View File

@ -72,7 +72,7 @@ export class WaybillManagementBulkeDetailComponent implements OnInit {
ngOnInit(): void {
this.initData()
this.getDriverTrajectory()
this.getTrajectory()
}
initData() {
const params = {
@ -84,7 +84,7 @@ export class WaybillManagementBulkeDetailComponent implements OnInit {
this.unLoadingPlaceVOList.push(...res.dischargePlace)
console.log(this.unLoadingPlaceVOList)
this.i = res;
this.billExpenses = this.i?.billExpenseDetailVOList?.filter((data: any) => data.costCode === 'TRA');
this.billExpenses = this.i?.billExpenseDetails?.filter((data: any) => data.costCode === 'TRA');
this.i.scheduleVOList = this.i?.scheduleVOList?.filter((data:any)=>data.displayStatus !=="HIDE");
})
}
@ -102,17 +102,7 @@ export class WaybillManagementBulkeDetailComponent implements OnInit {
window.history.go(-1);
}
agreement(value: any) {
console.log('123')
console.log(value)
if(value === '1') {
this.imges = this.i?.supplementAgreement
} else if (value === '2') {
this.imges = this.i?.loadingCertificate
} else if (value === '3') {
this.imges = this.i?.unLoadingCertificate
} else if (value === '4') {
this.imges = this.i?.receiptCertificate
}
this.imges = this.i?.agreementFilePath
this.isVisible = true;
}
handleCancel() {

View File

@ -86,9 +86,9 @@
<div>{{item?.settlementBasisLabel}}</div>
</ng-template>
<ng-template st-row="billExpenseDetailVOList" let-item let-index="index">
<div *ngIf="item?.billExpenseDetailVOList.length > 0">
<div *ngIf="item?.billExpenseDetailVOList?.length > 0">
<p *ngFor="let data of item?.billExpenseDetailVOList">
{{ data.costCodeLabel }}{{ data.price | currency }}
{{ data.costName }}{{ data.price | currency }}
<span style="color: #f59a63">{{ data.paymentStatusLabel }}</span>
</p>
</div>

View File

@ -283,8 +283,7 @@ tabs = {
width: '200px',
className: 'text-left',
format: (item: any) =>
`${item.settlementWeight || '0'}吨/
${item.settlementVolume || '0'}`
`${item.settlementWeight || ''}`
},
{
title: '承运司机',

View File

@ -29,10 +29,10 @@
<sv label="货主">{{ i?.shippername }} </sv>
<sv label="所属项目">{{i?.enterpriseProject}}</sv>
<sv label="服务类型">{{i?.serviceTypeLabel}}</sv>
<sv label="调度员">{{i?.dispatch?.name}} /{{i?.dispatch?.phone}}</sv>
<sv label="调度员">{{i?.dispatchName}} /{{i?.dispatchPhone}}</sv>
<sv label="外部订单号">{{ i?.externalBillCode }}</sv>
<sv label="货源编号">{{ i?.resourceCode }} </sv>
<sv label="运单号">{{ i?.wayBillCode }}</sv>
<sv label="运单号">{{ i?.wayBill?.wayBillCode }}</sv>
<sv label="承诺付款天数">{{ i?.paymentDays }}</sv>
</div>
<nz-tabset style="margin-top: 15px;">
@ -133,13 +133,13 @@
<nz-card nzTitle="服务信息">
<sv-container>
<sv label="服务包">
{{i?.goodsResource?.insuranceTypeLabel}}
{{i?.insuranceTypeLabel}}
</sv>
<sv label="货物价值">
{{i?.goodsResource?.goodsValue !==null?(i?.goodsResource?.goodsValue|currency)+'元':'-'}}
{{i?.goodsValue !==null?(i?.goodsValue|currency)+'元':'-'}}
</sv>
<sv label="保价费金额">
{{i?.goodsResource?.insurancePremium!==null?(i?.goodsResource?.insurancePremium |currency)+'元':'-'}}
<sv label="服务包费用">
{{i?.insurancePremium!==null?(i?.insurancePremium |currency)+'元':'-'}}
</sv>
</sv-container>
</nz-card>
@ -164,7 +164,7 @@
<sv label="协议附件">
<!-- {{i?.supplementaryInformationVO?.stateReceipt?'是':'否'}} -->
<a href="javascript:;" (click)="agreement('1')">查看附件</a> &nbsp;&nbsp;&nbsp;&nbsp;
<a href="javascript:;" (click)="agreement('2')">补充协议</a>
<a target="_blank" [routerLink]="['/agreement']" [queryParams]="{ type: 8 }">补充协议</a>
</sv>
</sv-container>
<sv-container col="2" class="mt-md">
@ -181,28 +181,25 @@
<nz-card nzTitle="补充信息">
<sv-container>
<sv label="是否回单">
{{i?.receiptType == 1 ?'是':'否'}}
{{ i?.supplementaryInformationVO?.stateReceipt ? '是' : '否' }}
</sv>
<sv label="回单类型" *ngIf="i?.receiptType == 1">
{{i?.receiptTypeLabel}}
<sv label="回单类型" *ngIf="i?.supplementaryInformationVO?.stateReceipt">
{{ i?.supplementaryInformationVO?.receiptType === '1' ? '电子回单' : '纸质回单' }}
</sv>
<sv label="联系人" *ngIf="i?.receiptType == 1">
{{i?.receiptUser}}{{ i?.receiptUserPhone ? ' /' + i?.receiptUserPhone : ''}}
<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?.receiptType == 1">
{{i?.receiptPlace}}
<sv label="详细地址" *ngIf="i?.supplementaryInformationVO?.stateReceipt">
{{ i?.supplementaryInformationVO?.address }}
</sv>
<sv label="详细地址" *ngIf="i?.receiptType == 1">
{{i?.receiptAddress}}
</sv>
</sv-container>
<sv-container col="1" class="mt-md">
<sv label="回单凭证" *ngIf="i?.receiptType == 1">
<app-imagelist *ngIf="i?.receiptFilePath" [imgList]="[i?.receiptFilePath]"></app-imagelist>
<sv label="回单凭证" *ngIf="i?.supplementaryInformationVO?.stateReceipt">
<app-imagelist [imgList]="i?.receiptFilePath"></app-imagelist>
</sv>
<sv label="备注">
{{i?.goodsResource?.remarks}}
{{ i?.supplementaryInformationVO?.remarks }}
</sv>
</sv-container>
</nz-card>
@ -212,7 +209,7 @@
<nz-card nzTitle="轨迹信息" style="width: 100%" [nzExtra]="extraTemplate" #distannce5>
<div nz-row>
<div nz-col [nzSpan]="12">
<st [scroll]="{y: '500px'}" #st [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }">
<st [scroll]="{y: '500px'}" style="min-height: 600px;" #st [data]="addressItems" [columns]="logColumns2" [ps]="0" [page]="{ show: false, showSize: false }">
</st>
</div>
<div nz-col [nzSpan]="12">
@ -231,6 +228,7 @@
<nz-modal [(nzVisible)]="isVisible" [nzFooter]="nzModalFooter" nzTitle="附件信息" (nzOnOk)="handleOK()" (nzOnCancel)="handleCancel()">
<ng-container *nzModalContent>
<div *ngIf="!imges">暂无附件信息</div>
<app-imagelist [imgList]="imges"></app-imagelist>
</ng-container>
<ng-template #nzModalFooter>

View File

@ -24,12 +24,11 @@ import { WaybillManagementServe } from '../../services/waybill-management.servic
styleUrls: ['./vehicle-detail.component.less']
})
export class WaybillManagementVehicleDetailComponent implements OnInit, OnDestroy {
id = this.route.snapshot.params.id;
MapList: any[]=[];
MapList: any[] = [];
trajectory = 'car';
mapList:any[] = []; //地图点位数据组
addressItems:any[] = []; //打点地址数据组
mapList: any[] = []; //地图点位数据组
addressItems: any[] = []; //打点地址数据组
i: any;
totalObj: any;
attObj: any;
@ -50,7 +49,7 @@ export class WaybillManagementVehicleDetailComponent implements OnInit, OnDestro
{
title: '支付状态',
className: 'text-center',
index: 'paymentStatusLabel',
index: 'paymentStatusLabel'
}
];
@ -60,19 +59,16 @@ export class WaybillManagementVehicleDetailComponent implements OnInit, OnDestro
private route: ActivatedRoute,
private msgSrv: NzMessageService,
private service: WaybillManagementServe,
private modal: NzModalService,
) {
}
private modal: NzModalService
) {}
ngOnDestroy(): void {
this.subscribeScoll.unsubscribe();
}
ngOnInit(): void {
this.initData()
this.getTrajectory()
this.initData();
this.getTrajectory();
this.subscribeScoll = fromEvent(window, 'scroll').subscribe(event => {
this.scrollTop = document.documentElement.scrollTop;
});
@ -80,48 +76,38 @@ export class WaybillManagementVehicleDetailComponent implements OnInit, OnDestro
initData() {
const params = {
id: this.id
}
this.service.request(this.service.$api_get_getWholeDetail, params).subscribe((res) => {
console.log(res)
this.unLoadingPlaceVOList.push(...res.loadingPlace)
this.unLoadingPlaceVOList.push(...res.dischargePlace)
console.log(this.unLoadingPlaceVOList)
};
this.service.request(this.service.$api_get_getWholeDetail, params).subscribe(res => {
console.log(res);
this.unLoadingPlaceVOList.push(...res.loadingPlace);
this.unLoadingPlaceVOList.push(...res.dischargePlace);
console.log(this.unLoadingPlaceVOList);
this.i = res;
this.billExpenses = this.i?.billExpenseDetailVOList?.filter(
this.billExpenses = this.i?.billExpenseDetails?.filter(
(data: any) => data.costCode === 'PRE' || data.costCode === 'RECE' || data.costCode === 'BACK'
);
this.i.scheduleVOList = this.i?.scheduleVOList?.filter((data: any) => data.displayStatus !== 'HIDE');
})
});
}
goBack() {
window.history.go(-1);
}
agreement(value: any) {
console.log('123')
console.log(value)
if(value === '1') {
this.imges = this.i?.supplementAgreement
} else if (value === '2') {
this.imges = this.i?.loadingCertificate
} else if (value === '3') {
this.imges = this.i?.unLoadingCertificate
} else if (value === '4') {
this.imges = this.i?.receiptCertificate
}
this.imges = this.i?.agreementFilePath;
this.isVisible = true;
}
handleCancel() {
this.isVisible = false
}
handleOK() {
this.isVisible = false
}
goDistance(elf: NzCardComponent) {
if (elf) {
elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' });
this.isVisible = false;
}
handleOK() {
this.isVisible = false;
}
goDistance(elf: NzCardComponent) {
if (elf) {
elf['elementRef'].nativeElement.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start' });
}
}
}
// *确认发车
sureDepart(item: any) {
@ -136,9 +122,8 @@ goDistance(elf: NzCardComponent) {
nzFooter: null
});
modalRef.afterClose.subscribe((result: any) => {
this.initData()
});
this.initData();
});
}
// 确认到车
sureArrive(item: any) {
@ -153,17 +138,16 @@ goDistance(elf: NzCardComponent) {
nzFooter: null
});
modalRef.afterClose.subscribe((result: any) => {
this.initData()
});
this.initData();
});
}
// 获取车辆轨迹
getTrajectory(){
getTrajectory() {
this.service.request(this.service.$api_get_getTrajectory, { id: this.id }).subscribe(res => {
if (res) {
const points = res.trackArray;
let list :any[] = [];
let list: any[] = [];
points?.forEach((item: any) => {
list.push({
name: item.hgt,
@ -172,7 +156,7 @@ goDistance(elf: NzCardComponent) {
});
this.mapList = list;
this.addressItems = res.cityArray;
if(this.addressItems && this.addressItems.length > 0){
if (this.addressItems && this.addressItems.length > 0) {
this.addressItems.forEach(item => {
item.vinOutTime = this.getLocalTime(item.vinOutTime);
});
@ -181,12 +165,12 @@ goDistance(elf: NzCardComponent) {
});
}
// 获取司机轨迹
getDriverTrajectory(){
// 获取司机轨迹
getDriverTrajectory() {
this.service.request(this.service.$api_get_getAppDriverPosition, { id: this.id }).subscribe(res => {
if (res) {
const points = res.tracks;
let list :any[] = [];
let list: any[] = [];
points?.forEach((item: any) => {
list.push({
name: item.hgt,
@ -195,7 +179,7 @@ goDistance(elf: NzCardComponent) {
});
this.mapList = list;
this.addressItems = [...res.enclosureDataAppTrack];
if(this.addressItems && this.addressItems.length > 0){
if (this.addressItems && this.addressItems.length > 0) {
this.addressItems.forEach(item => {
item.vinOutTime = this.getLocalTime(item.gtm);
item.cityName = item.appAdress;
@ -203,14 +187,14 @@ goDistance(elf: NzCardComponent) {
}
}
});
}
trajectoryChange(event:any){
if(event ==='car'){
this.getTrajectory()
}else if(event ==='driver'){
}
trajectoryChange(event: any) {
if (event === 'car') {
this.getTrajectory();
} else if (event === 'driver') {
this.getDriverTrajectory();
}
}
}
getLocalTime(time: any) {
return format(new Date(parseInt(time)), 'yyyy-MM-dd HH:mm:ss');
}

View File

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-12-03 11:10:14
* @LastEditTime : 2022-03-21 14:50:07
* @LastEditTime : 2022-03-21 14:52:24
* @LastEditors : Shiming
* @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
* @FilePath : \\tms-obc-web\\src\\app\\routes\\waybill-management\\components\\vehicle\\vehicle.component.html

View File

@ -56,7 +56,7 @@ export class WaybillManagementServe extends BaseService {
// 获取轨迹
$api_get_getTrajectory = `/api/sdc/billShipper/getTrajectoryByBillId`;
// 获取订单司机轨迹
$api_get_getAppDriverPosition = `/api/sdc/billShipper/getAppDriverPosition`;
$api_get_getAppDriverPosition = `/api/sdc/wayBillOperate/getAppDriverPosition`;
// 获取货主企业列表
public $api_enterpriceList = '/api/mdc/cuc/enterpriseInfo/operate/enterpriceList';
constructor(public injector: Injector) {

View File

@ -1,8 +1,8 @@
import { Component, Input, OnChanges, OnInit, Output, SimpleChanges, EventEmitter } from '@angular/core';
import { BaseService } from 'src/app/shared/services';
import { throwError } from 'rxjs';
import AMapLoader from '@amap/amap-jsapi-loader';
import { Component, Input, OnChanges, OnInit, Output, SimpleChanges, EventEmitter, OnDestroy } from '@angular/core';
import { amapConf } from '@conf/amap.config';
import { throwError } from 'rxjs';
import { BaseService } from 'src/app/shared/services';
declare var AMap: any;
declare var AMapUI: any;
declare var Loca: any;
@ -13,7 +13,7 @@ const CONFIG = amapConf;
templateUrl: './amap-path-simplifier.component.html',
styleUrls: ['./amap-path-simplifier.component.less']
})
export class AmapPathSimplifierComponent implements OnInit, OnChanges {
export class AmapPathSimplifierComponent implements OnInit, OnChanges, OnDestroy {
aMap: any;
pathSimplifierIns: any;
geocoder: any;
@ -32,7 +32,7 @@ export class AmapPathSimplifierComponent implements OnInit, OnChanges {
mapHeight = '500px';
@Output()
clcikPointEvent = new EventEmitter<any>();
readonly clcikPointEvent = new EventEmitter<any>();
@Input()
pois: any = [];
@ -45,7 +45,7 @@ export class AmapPathSimplifierComponent implements OnInit, OnChanges {
this.setPathIndex(this.selectedIndex);
}
if (changes?.MapList?.currentValue && this?.pathSimplifierIns && changes.MapList?.currentValue.length > 0) {
console.log(this.MapList);
// console.log(this.MapList);
this.pathList = [
{
name: '路线1',
@ -130,7 +130,7 @@ export class AmapPathSimplifierComponent implements OnInit, OnChanges {
getHoverTitle: function (pathData: any, pathIndex: any, pointIndex: any) {
if (pointIndex >= 0) {
//point
return pathData.name + '' + pathData.points[pointIndex].name;
return `${pathData.name},${pathData.points[pointIndex].name}`;
}
return '';
},
@ -147,7 +147,7 @@ export class AmapPathSimplifierComponent implements OnInit, OnChanges {
this.pathSimplifierIns.on('pointClick', (e: any, info: any) => {
this.clcikPointEvent.emit({ e, info });
console.log('Click: ' + info.pathData.points[info.pointIndex].name);
console.log(`Click: ${info.pathData.points[info.pointIndex].name}`);
});
}
@ -202,7 +202,7 @@ export class AmapPathSimplifierComponent implements OnInit, OnChanges {
});
}
setData(pathList: Array<any>) {
setData(pathList: any[]) {
this.pathSimplifierIns.setData(pathList);
}
@ -224,7 +224,7 @@ export class AmapPathSimplifierComponent implements OnInit, OnChanges {
}
/** 根据经纬度获取地址信息 */
getPoiByPositon(position: Array<string>) {
getPoiByPositon(position: string[]) {
this.geocoder.getAddress(position, (status: any, result: any) => {
if (status === 'complete' && result.info === 'OK') {
// result中对应详细地理坐标信息
@ -239,6 +239,7 @@ export class AmapPathSimplifierComponent implements OnInit, OnChanges {
/**
* 选中标点,设置窗口信息
*
* @param location
*/
selectedPOI(location: any) {
@ -250,6 +251,7 @@ export class AmapPathSimplifierComponent implements OnInit, OnChanges {
/**
* 增加标记点
*
* @param poi
*/
setPOI(poi: POI) {
@ -278,5 +280,5 @@ export class AmapPathSimplifierComponent implements OnInit, OnChanges {
export interface POI {
markerLabel: string;
color: string;
position: Array<string>;
position: string[];
}

View File

@ -47,4 +47,19 @@ input[type="number"] {
.break-word-all {
word-break: break-all;
word-wrap : break-word;
}
}
st {
.block-td {
.ant-divider-vertical {
display: none;
margin: 0;
border-left: none;
}
st-td {
span>a {
display: block;
}
}
}
}