Merge branch 'develop' of https://gitlab.eascs.com/tms-ui/tms-obc-web into develop
This commit is contained in:
@ -0,0 +1,151 @@
|
||||
<!--
|
||||
* @Description :
|
||||
* @Version : 1.0
|
||||
* @Author : Shiming
|
||||
* @Date : 2022-01-12 10:52:50
|
||||
* @LastEditors : Shiming
|
||||
* @LastEditTime : 2022-01-21 16:57:10
|
||||
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\receipts-audit\\receipts-audit.component.html
|
||||
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
||||
-->
|
||||
<!-- 搜索表单 -->
|
||||
<page-header-wrapper [title]="''">
|
||||
</page-header-wrapper>
|
||||
<nz-card>
|
||||
<div nz-row nzGutter="8">
|
||||
<!-- 查询字段小于或等于3个时,不显示伸缩按钮 -->
|
||||
<div nz-col nzSpan="24" *ngIf="queryFieldCount <= 4">
|
||||
<sf #sf [schema]="schema" [ui]="ui" [mode]="'search'" [disabled]="!sf?.valid" [loading]="service.http.loading"
|
||||
(formSubmit)="st?.load(1)" (formReset)="resetSF()"></sf>
|
||||
</div>
|
||||
|
||||
<!-- 查询字段大于3个时,根据展开状态调整布局 -->
|
||||
<ng-container *ngIf="queryFieldCount > 4">
|
||||
<div nz-col [nzSpan]="_$expand ? 24 : 18">
|
||||
<sf #sf [schema]="schema" [ui]="ui" [compact]="true" [button]="'none'"></sf>
|
||||
</div>
|
||||
<div nz-col [nzSpan]="_$expand ? 24 : 6" [class.text-right]="_$expand">
|
||||
<button nz-button nzType="primary" [nzLoading]="service.http.loading"
|
||||
(click)="search()">查询</button>
|
||||
<button nz-button nzType="primary" [disabled]="service.http.loading"
|
||||
>导出</button>
|
||||
<button nz-button [disabled]="service.http.loading" (click)="resetSF()">重置</button>
|
||||
<button nz-button nzType="link" (click)="expandToggle()">
|
||||
{{ !_$expand ? '展开' : '收起' }}
|
||||
<i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i>
|
||||
</button>
|
||||
</div>
|
||||
</ng-container>
|
||||
</div>
|
||||
</nz-card>
|
||||
|
||||
<nz-card>
|
||||
<nz-tabset (nzSelectedIndexChange)="selectChange($event)"
|
||||
[nzTabBarExtraContent]="extraTemplate">
|
||||
<nz-tab [nzTitle]="'全部('+tabs?.totalCount+')'"></nz-tab>
|
||||
<nz-tab [nzTitle]="'待审核('+tabs?.receivedQuantity+')'"></nz-tab>
|
||||
<nz-tab [nzTitle]="'已审核('+tabs?.stayQuantity+')'"></nz-tab>
|
||||
</nz-tabset>
|
||||
<div style="margin-top: 15px;">
|
||||
<st
|
||||
#st
|
||||
[bordered]="true"
|
||||
[scroll]="{ x: '2000px' }"
|
||||
[data]="service.$api_get_billExamine_page"
|
||||
[columns]="columns"
|
||||
[req]="{ method: 'POST', allInBody: true, reName: { pi: 'pageIndex', ps: 'pageSize' }, params: reqParams }"
|
||||
[res]="{ reName: { list: 'data.records', total: 'data.total' } }"
|
||||
[page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }"
|
||||
[loading]="service.http.loading"
|
||||
>
|
||||
<ng-template st-row="freightPrice" let-item let-index="index">
|
||||
{{ item.freightPrice | currency}}
|
||||
</ng-template>
|
||||
<ng-template st-row="loadingLadingBillFilePath" let-item let-index="index">
|
||||
<div>
|
||||
<span><img [src]="item.loadingLadingBillFilePath" alt=""></span>
|
||||
<span><img [src]="item.loadingPeopleVehiclesGoodsFilePath" alt=""></span>
|
||||
</div>
|
||||
</ng-template>
|
||||
<ng-template st-row="unloadingLadingBillFilePath" let-item let-index="index">
|
||||
<span><img [src]="item.unloadingLadingBillFilePath" alt=""></span>
|
||||
<span><img [src]="item.unloadingPeopleVehiclesGoodsFilePath" alt=""></span>
|
||||
</ng-template>
|
||||
<ng-template st-row="loadingTime" let-item let-index="index">
|
||||
<div *ngIf="item?.loadingTime">装 | {{item?.loadingTime}}</div>
|
||||
<div *ngIf="item?.unloadingTime">卸 | {{item?.unloadingTime}}</div>
|
||||
</ng-template>
|
||||
<ng-template st-row="driverName" let-item let-index="index">
|
||||
<div>
|
||||
{{item?.driverName}}/{{item?.driverPhone}}/{{item?.carNo}}
|
||||
</div>
|
||||
</ng-template>
|
||||
<ng-template st-row="payeeName" let-item let-index="index">
|
||||
<div>
|
||||
{{item?.payeeName}}/{{item?.payeePhone}}
|
||||
</div>
|
||||
</ng-template>
|
||||
<ng-template st-row="billCode" let-item let-index="index">
|
||||
<a [routerLink]="'/order-management/bulk-detail/'+item.id">{{item.billCode}}</a>
|
||||
<div>
|
||||
<span>{{item?.billStatusLabel}}</span>
|
||||
</div>
|
||||
</ng-template>
|
||||
<ng-template st-row="goodsName" let-item let-index="index">
|
||||
<div>{{item?.goodsName}}</div>
|
||||
<div>
|
||||
<span>{{item?.weight ? item?.weight + '吨/' : '' }}</span>
|
||||
<span>{{item?.volume ? item?.volume + '方/' : '' }}</span>
|
||||
<span>{{item?.goodsNumber ? item?.goodsNumber + '吨' : '' }}</span>
|
||||
</div>
|
||||
</ng-template>
|
||||
<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 | currency }}
|
||||
<span *ngIf="data.paymentStatusLabel" style="color: #f59a63">{{ data.paymentStatusLabel }}</span>
|
||||
</p>
|
||||
</div>
|
||||
</ng-template>
|
||||
<!-- <ng-template st-row="externalSn" let-item let-index="index">
|
||||
<span class="mr-xs">{{111111}}</span>
|
||||
<a (click)="editEnternalSn(item)">编辑</a>
|
||||
</ng-template> -->
|
||||
<ng-template st-row="enStatusStr27878" let-item let-index="index">
|
||||
<div class="mr-xs" nzPopoverTitle="Title" nz-popover [nzPopoverContent]="contentTemplate">{{item.no}}</div>
|
||||
</ng-template>
|
||||
<ng-template #contentTemplate>
|
||||
<div>
|
||||
<p>预付:¥200.00</p>
|
||||
<p>到付:¥200.00</p>
|
||||
<p>油卡:¥200.00</p>
|
||||
<p>回单付:¥200.00</p>
|
||||
<p>小计:¥200.00</p>
|
||||
<p>附加费:¥200.00</p>
|
||||
</div>
|
||||
</ng-template>
|
||||
</st>
|
||||
</div>
|
||||
</nz-card>
|
||||
|
||||
|
||||
|
||||
|
||||
<ng-template #enable>
|
||||
<div class="ant-popover-message">
|
||||
<i nz-icon nzType="info-circle" nzTheme="fill"></i>
|
||||
<div class="ant-popover-message-title ng-star-inserted self-ant-popover-title" style="font-size: 16px">已选择{{selectedRows?.length || 0}}条订单,确认批量签收吗?
|
||||
</div>
|
||||
<div class="ant-popover-message-title ng-star-inserted">
|
||||
签收后不可再修改运费,请确保运费等信息准确无误后,再进行签收。
|
||||
</div>
|
||||
</div>
|
||||
</ng-template>
|
||||
<ng-template #extraTemplate>
|
||||
<div>
|
||||
<!-- <button nz-button nzType="primary" nzGhost nz-popconfirm
|
||||
[nzPopconfirmTitle]="enable" (nzOnConfirm)="userAction()" nzPopconfirmPlacement="bottomRight">
|
||||
批量签收
|
||||
</button> -->
|
||||
</div>
|
||||
</ng-template>
|
||||
@ -0,0 +1,13 @@
|
||||
|
||||
:host {
|
||||
p{
|
||||
margin-bottom: 0
|
||||
}
|
||||
.left_btn {
|
||||
width: 50px;
|
||||
height: 32px;
|
||||
padding-left: 8px;
|
||||
line-height:32px;
|
||||
background-color: #d7d7d7;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,35 @@
|
||||
/*
|
||||
* @Description :
|
||||
* @Version : 1.0
|
||||
* @Author : Shiming
|
||||
* @Date : 2021-12-06 20:03:28
|
||||
* @LastEditors : Shiming
|
||||
* @LastEditTime : 2022-01-19 16:47:34
|
||||
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\receipts-audit\\receipts-audit.component.spec.ts
|
||||
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
||||
*/
|
||||
|
||||
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { OrderManagementReceiptsAuditComponent } from './compliance-audit.component';
|
||||
|
||||
describe('OrderManagementReceiptsAuditComponent', () => {
|
||||
let component: OrderManagementReceiptsAuditComponent;
|
||||
let fixture: ComponentFixture<OrderManagementReceiptsAuditComponent>;
|
||||
|
||||
beforeEach(waitForAsync(() => {
|
||||
TestBed.configureTestingModule({
|
||||
declarations: [ OrderManagementReceiptsAuditComponent ]
|
||||
})
|
||||
.compileComponents();
|
||||
}));
|
||||
|
||||
beforeEach(() => {
|
||||
fixture = TestBed.createComponent(OrderManagementReceiptsAuditComponent);
|
||||
component = fixture.componentInstance;
|
||||
fixture.detectChanges();
|
||||
});
|
||||
|
||||
it('should create', () => {
|
||||
expect(component).toBeTruthy();
|
||||
});
|
||||
});
|
||||
@ -0,0 +1,446 @@
|
||||
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||
import { STColumn, STComponent } from '@delon/abc/st';
|
||||
import { SFComponent, SFDateWidgetSchema, SFSchema, SFSchemaEnum, SFSelectWidgetSchema, SFUISchema } from '@delon/form';
|
||||
import { ModalHelper, _HttpClient } from '@delon/theme';
|
||||
import { NzModalService } from 'ng-zorro-antd/modal';
|
||||
import { map } from 'rxjs/operators';
|
||||
import { OrderManagementService } from '../../services/order-management.service';
|
||||
import { UpdateFreightComponent } from '../../modal/bulk/update-freight/update-freight.component';
|
||||
import { ConfirReceiptComponent } from '../../modal/bulk/confir-receipt/confir-receipt.component';
|
||||
import { of } from 'rxjs';
|
||||
import { ShipperBaseService } from '@shared';
|
||||
import { Router } from '@angular/router';
|
||||
import { orderManagementVoucherViewComponent } from '../../modal/audit/voucher-view/voucher-view.component';
|
||||
|
||||
@Component({
|
||||
selector: 'app-order-management-compliance-audit',
|
||||
templateUrl: './compliance-audit.component.html',
|
||||
styleUrls: ['./compliance-audit.component.less']
|
||||
})
|
||||
export class OrderManagementComplianceAuditComponent implements OnInit {
|
||||
ui: SFUISchema = {};
|
||||
uiView: SFUISchema = {};
|
||||
schema: SFSchema = {};
|
||||
schemaView: SFSchema = {};
|
||||
auditMany = false;
|
||||
isVisibleView = false;
|
||||
isVisibleEvaluate = false;
|
||||
isVisible = false;
|
||||
_$expand = false;
|
||||
@ViewChild('st') private readonly st!: STComponent;
|
||||
@ViewChild('sf', { static: false }) sf!: SFComponent;
|
||||
columns: STColumn[] = [];
|
||||
resourceStatus: any;
|
||||
tabs = {
|
||||
receivedQuantity: 0,
|
||||
stayQuantity: 0,
|
||||
totalCount: 0
|
||||
};
|
||||
constructor(
|
||||
public service: OrderManagementService,
|
||||
private modal: NzModalService,
|
||||
public shipperservice: ShipperBaseService,
|
||||
private router: Router
|
||||
) {}
|
||||
|
||||
/**
|
||||
* 查询参数
|
||||
*/
|
||||
get reqParams() {
|
||||
const a: any = {};
|
||||
if (this.resourceStatus) {
|
||||
a.billStatus = this.resourceStatus;
|
||||
}
|
||||
const params: any = Object.assign({}, this.sf?.value || {});
|
||||
delete params._$expand;
|
||||
return {
|
||||
...a,
|
||||
...params,
|
||||
createTime: {
|
||||
start: this.sf?.value?.createTime?.[0] || '',
|
||||
end: this.sf?.value?.createTime?.[1] || ''
|
||||
}
|
||||
};
|
||||
}
|
||||
get selectedRows() {
|
||||
return this.st?.list.filter(item => item.checked) || [];
|
||||
}
|
||||
search() {
|
||||
this.st?.load(1);
|
||||
this.getGoodsSourceStatistical();
|
||||
}
|
||||
getGoodsSourceStatistical() {
|
||||
this.tabs = {
|
||||
receivedQuantity: 0,
|
||||
stayQuantity: 0,
|
||||
totalCount: 0
|
||||
};
|
||||
const params: any = Object.assign({}, this.reqParams || {});
|
||||
delete params.billStatus
|
||||
this.service.request(this.service.$api_get_getAuditStatistical, { ...this.reqParams }).subscribe(res => {
|
||||
if (res) {
|
||||
let totalCount = 0;
|
||||
res.forEach((element: any) => {
|
||||
if (element.billStatusLabel === '待审核') {
|
||||
this.tabs.receivedQuantity = element.quantity;
|
||||
} else if (element.billStatusLabel === '已审核') {
|
||||
this.tabs.stayQuantity = element.quantity;
|
||||
}
|
||||
totalCount += element.quantity;
|
||||
});
|
||||
this.tabs.totalCount = totalCount;
|
||||
}
|
||||
});
|
||||
}
|
||||
selectChange(e: number) {
|
||||
this.resourceStatus = e;
|
||||
this.initST();
|
||||
setTimeout(() => {
|
||||
this.st.load();
|
||||
this.getGoodsSourceStatistical();
|
||||
}, 500);
|
||||
}
|
||||
ngOnInit(): void {
|
||||
this.getGoodsSourceStatistical();
|
||||
this.initSF();
|
||||
this.initST();
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化查询表单
|
||||
*/
|
||||
initSF() {
|
||||
this.schema = {
|
||||
properties: {
|
||||
_$expand: { type: 'boolean', ui: { hidden: true } },
|
||||
billCode: {
|
||||
type: 'string',
|
||||
title: '订单号'
|
||||
},
|
||||
resourceCode: {
|
||||
type: 'string',
|
||||
title: '货源编号'
|
||||
},
|
||||
shipperAppUserId: {
|
||||
type: 'string',
|
||||
title: '货主',
|
||||
ui: {
|
||||
widget: 'select',
|
||||
serverSearch: true,
|
||||
searchDebounceTime: 300,
|
||||
searchLoadingText: '搜索中...',
|
||||
allowClear: true,
|
||||
onSearch: (q: any) => {
|
||||
if (!!q) {
|
||||
return this.service
|
||||
.request(this.service.$api_enterpriceList, { enterpriseName: q })
|
||||
.pipe(map((res: any) => (res as any[]).map(i => ({ label: i.enterpriseName, value: i.id } as SFSchemaEnum))))
|
||||
.toPromise();
|
||||
} else {
|
||||
return of([]);
|
||||
}
|
||||
}
|
||||
} as SFSelectWidgetSchema
|
||||
},
|
||||
enterpriseProjectId: {
|
||||
type: 'string',
|
||||
title: '所属项目',
|
||||
ui: {
|
||||
widget: 'select',
|
||||
placeholder: '请选择',
|
||||
allowClear: true,
|
||||
asyncData: () => this.service.getEnterpriseProject(),
|
||||
visibleIf: {
|
||||
_$expand: (value: boolean) => value
|
||||
}
|
||||
},
|
||||
default: ''
|
||||
},
|
||||
loadingPlace: {
|
||||
type: 'string',
|
||||
title: '装货地',
|
||||
ui: {
|
||||
visibleIf: {
|
||||
_$expand: (value: boolean) => value
|
||||
}
|
||||
}
|
||||
},
|
||||
dischargePlace: {
|
||||
type: 'string',
|
||||
title: '卸货地',
|
||||
ui: {
|
||||
visibleIf: {
|
||||
_$expand: (value: boolean) => value
|
||||
}
|
||||
}
|
||||
},
|
||||
driverName: {
|
||||
title: '承运司机',
|
||||
type: 'string',
|
||||
ui: {
|
||||
visibleIf: {
|
||||
_$expand: (value: boolean) => value
|
||||
}
|
||||
}
|
||||
},
|
||||
carNo: {
|
||||
title: '车牌号',
|
||||
type: 'string',
|
||||
ui: {
|
||||
visibleIf: {
|
||||
_$expand: (value: boolean) => value
|
||||
}
|
||||
}
|
||||
},
|
||||
carCaptainName: {
|
||||
title: '车队长',
|
||||
type: 'string',
|
||||
ui: {
|
||||
visibleIf: {
|
||||
_$expand: (value: boolean) => value
|
||||
}
|
||||
}
|
||||
},
|
||||
paymentStatus: {
|
||||
title: '支付状态',
|
||||
type: 'string',
|
||||
ui: {
|
||||
widget: 'dict-select',
|
||||
params: { dictKey: 'overall:payment:status' },
|
||||
containsAllLable: true,
|
||||
visibleIf: {
|
||||
_$expand: (value: boolean) => value
|
||||
}
|
||||
} as SFSelectWidgetSchema
|
||||
},
|
||||
enterpriseInfoId: {
|
||||
type: 'string',
|
||||
title: '网络货运人',
|
||||
ui: {
|
||||
widget: 'select',
|
||||
placeholder: '请选择',
|
||||
allowClear: true,
|
||||
visibleIf: {
|
||||
_$expand: (value: boolean) => value
|
||||
},
|
||||
asyncData: () => this.shipperservice.getNetworkFreightForwarder()
|
||||
}
|
||||
},
|
||||
serviceType: {
|
||||
title: '服务类型',
|
||||
type: 'string',
|
||||
default: '',
|
||||
ui: {
|
||||
widget: 'dict-select',
|
||||
params: { dictKey: 'service:type' },
|
||||
containsAllLable: true,
|
||||
visibleIf: {
|
||||
_$expand: (value: boolean) => value
|
||||
}
|
||||
} as SFSelectWidgetSchema
|
||||
},
|
||||
settlementBasis: {
|
||||
title: '装卸凭证',
|
||||
type: 'string',
|
||||
ui: {
|
||||
widget: 'dict-select',
|
||||
containsAllLable: true,
|
||||
params: { dictKey: 'goodresource:settlement:type' },
|
||||
containAllLable: true,
|
||||
visibleIf: {
|
||||
_$expand: (value: boolean) => value
|
||||
}
|
||||
} as SFSelectWidgetSchema
|
||||
}
|
||||
},
|
||||
type: 'object'
|
||||
};
|
||||
this.ui = { '*': { spanLabelFixed: 110, grid: { span: 8, gutter: 4 } } };
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化数据列表
|
||||
*/
|
||||
initST() {
|
||||
this.columns = [
|
||||
{ title: '', type: 'checkbox', fixed: 'left', width: '50px', className: 'text-center' },
|
||||
{
|
||||
title: '订单号',
|
||||
width: '180px',
|
||||
fixed: 'left',
|
||||
className: 'text-left',
|
||||
render: 'billCode'
|
||||
},
|
||||
{
|
||||
title: '运费明细',
|
||||
width: '250px',
|
||||
className: 'text-right',
|
||||
render: 'mybidDetailInfo'
|
||||
},
|
||||
{ title: '网络货运人', index: 'enterpriseInfoName', width: '220px', className: 'text-left' },
|
||||
{ title: '货主', index: 'shipperAppUserName', width: '220px', className: 'text-left' },
|
||||
{ title: '所属项目', index: 'enterpriseProjectName', width: '220px', className: 'text-left' },
|
||||
{ title: '货源编号', index: 'resourceCode', width: '180px', className: 'text-left' },
|
||||
{ title: '装货地', index: 'loadingAddressArr', width: '180px', className: 'text-left' },
|
||||
{
|
||||
title: '卸货地',
|
||||
className: 'text-left',
|
||||
width: '180px',
|
||||
index: 'unloadingAddressArr'
|
||||
},
|
||||
{
|
||||
title: '货物信息',
|
||||
className: 'text-left',
|
||||
width: '250px',
|
||||
render: 'goodsName'
|
||||
},
|
||||
{
|
||||
title: '承运司机',
|
||||
className: 'text-left',
|
||||
width: '250px',
|
||||
index: 'driverName',
|
||||
render: 'driverName'
|
||||
},
|
||||
{
|
||||
title: '收款人',
|
||||
className: 'text-left',
|
||||
width: '180px',
|
||||
index: 'payeeName',
|
||||
render: 'payeeName'
|
||||
},
|
||||
{
|
||||
title: '装卸货时间',
|
||||
width: '200px',
|
||||
className: 'text-left',
|
||||
render: 'loadingTime'
|
||||
},
|
||||
{
|
||||
title: '装货凭证',
|
||||
width: '180px',
|
||||
className: 'text-left',
|
||||
render: 'loadingLadingBillFilePath'
|
||||
},
|
||||
{
|
||||
title: '卸货凭证',
|
||||
width: '180px',
|
||||
className: 'text-left',
|
||||
render: 'unloadingLadingBillFilePath'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
fixed: 'right',
|
||||
width: '120px',
|
||||
className: 'text-left',
|
||||
buttons: [
|
||||
{
|
||||
text: '通过',
|
||||
click: _record => console.log('1'),
|
||||
// iif: item => item.billStatus == '5'
|
||||
},
|
||||
{
|
||||
text: '生成电子单据',
|
||||
click: _record => this.generate(_record),
|
||||
// iif: item => item.billStatus == '4'
|
||||
},
|
||||
{
|
||||
text: '修改',
|
||||
click: _record => this.modification(_record),
|
||||
// iif: item => item.billStatus == '4'
|
||||
},
|
||||
]
|
||||
}
|
||||
];
|
||||
}
|
||||
/**
|
||||
* 查询字段个数
|
||||
*/
|
||||
get queryFieldCount(): number {
|
||||
return Object.keys(this.schema?.properties || {}).length;
|
||||
}
|
||||
/**
|
||||
* 伸缩查询条件
|
||||
*/
|
||||
expandToggle(): void {
|
||||
this._$expand = !this._$expand;
|
||||
this.sf?.setValue('/_$expand', this._$expand);
|
||||
}
|
||||
tabChange(item: any) {}
|
||||
/**
|
||||
* 重置表单
|
||||
*/
|
||||
resetSF(): void {
|
||||
this.sf.reset();
|
||||
this._$expand = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入货源
|
||||
*/
|
||||
importGoodsSource() {}
|
||||
audit(item: any) {}
|
||||
|
||||
/**
|
||||
* 审核通过按钮
|
||||
*/
|
||||
handleOK() {}
|
||||
OpenPrice(item: any) {
|
||||
this.isVisible = true;
|
||||
}
|
||||
// 修改
|
||||
modification(item: any) {
|
||||
const modalRef = this.modal.create({
|
||||
nzTitle: '修改',
|
||||
nzWidth: '50%',
|
||||
nzContent: orderManagementVoucherViewComponent,
|
||||
nzComponentParams: {
|
||||
i: item,
|
||||
Status: 1
|
||||
},
|
||||
nzFooter: null
|
||||
});
|
||||
modalRef.afterClose.subscribe((result: any) => {
|
||||
this.st.load(1);
|
||||
this.getGoodsSourceStatistical()
|
||||
});
|
||||
}
|
||||
// 生成电子单据
|
||||
generate(item: any) {
|
||||
const modalRef = this.modal.create({
|
||||
nzTitle: '查看凭证',
|
||||
nzWidth: '50%',
|
||||
nzContent: orderManagementVoucherViewComponent,
|
||||
nzComponentParams: {
|
||||
i: item,
|
||||
Status: 2
|
||||
},
|
||||
nzFooter: null
|
||||
});
|
||||
modalRef.afterClose.subscribe((result: any) => {
|
||||
this.st.load(1);
|
||||
this.getGoodsSourceStatistical()
|
||||
});
|
||||
}
|
||||
// 取消订单
|
||||
cancellation(item: any) {
|
||||
// api_get_cancelAnOrder
|
||||
this.modal.confirm({
|
||||
nzTitle: '<b>确定取消该订单吗?</b>',
|
||||
nzContent: `<b>取消后无法恢复,请确认</b>`,
|
||||
nzOnOk: () =>
|
||||
this.service.request(this.service.$api_get_cancelAnOrder, { id: item.id }).subscribe(res => {
|
||||
if (res === true) {
|
||||
this.service.msgSrv.success('操作成功!');
|
||||
this.st?.reload(1);
|
||||
this.getGoodsSourceStatistical();
|
||||
this.initST();
|
||||
}
|
||||
this.st?.reload(1);
|
||||
this.getGoodsSourceStatistical();
|
||||
})
|
||||
});
|
||||
}
|
||||
// 修改订单
|
||||
changeOrder(value: any) {
|
||||
this.router.navigate(['order-management/bulk-detailChange', value.id]);
|
||||
}
|
||||
}
|
||||
@ -4,7 +4,7 @@
|
||||
* @Author : Shiming
|
||||
* @Date : 2022-01-12 10:52:50
|
||||
* @LastEditors : Shiming
|
||||
* @LastEditTime : 2022-01-21 11:17:05
|
||||
* @LastEditTime : 2022-01-21 16:57:10
|
||||
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\receipts-audit\\receipts-audit.component.html
|
||||
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
||||
-->
|
||||
@ -61,6 +61,16 @@
|
||||
<ng-template st-row="freightPrice" let-item let-index="index">
|
||||
{{ item.freightPrice | currency}}
|
||||
</ng-template>
|
||||
<ng-template st-row="loadingLadingBillFilePath" let-item let-index="index">
|
||||
<div>
|
||||
<span><img [src]="item.loadingLadingBillFilePath" alt=""></span>
|
||||
<span><img [src]="item.loadingPeopleVehiclesGoodsFilePath" alt=""></span>
|
||||
</div>
|
||||
</ng-template>
|
||||
<ng-template st-row="unloadingLadingBillFilePath" let-item let-index="index">
|
||||
<span><img [src]="item.unloadingLadingBillFilePath" alt=""></span>
|
||||
<span><img [src]="item.unloadingPeopleVehiclesGoodsFilePath" alt=""></span>
|
||||
</ng-template>
|
||||
<ng-template st-row="loadingTime" let-item let-index="index">
|
||||
<div *ngIf="item?.loadingTime">装 | {{item?.loadingTime}}</div>
|
||||
<div *ngIf="item?.unloadingTime">卸 | {{item?.unloadingTime}}</div>
|
||||
|
||||
@ -32,12 +32,8 @@ export class OrderManagementReceiptsAuditComponent implements OnInit {
|
||||
columns: STColumn[] = [];
|
||||
resourceStatus: any;
|
||||
tabs = {
|
||||
cancelQuantity: 0,
|
||||
receivedQuantity: 0,
|
||||
stayQuantity: 0,
|
||||
signQuantity: 0,
|
||||
compolatelQuantity: 0,
|
||||
GoingQuantity: 0,
|
||||
totalCount: 0
|
||||
};
|
||||
constructor(
|
||||
@ -75,15 +71,13 @@ export class OrderManagementReceiptsAuditComponent implements OnInit {
|
||||
}
|
||||
getGoodsSourceStatistical() {
|
||||
this.tabs = {
|
||||
cancelQuantity: 0,
|
||||
receivedQuantity: 0,
|
||||
stayQuantity: 0,
|
||||
signQuantity: 0,
|
||||
compolatelQuantity: 0,
|
||||
GoingQuantity: 0,
|
||||
totalCount: 0
|
||||
};
|
||||
this.service.request(this.service.$api_getBulkStatistical, { ...this.reqParams }).subscribe(res => {
|
||||
const params: any = Object.assign({}, this.reqParams || {});
|
||||
delete params.billStatus
|
||||
this.service.request(this.service.$api_get_getAuditStatistical, { ...this.reqParams }).subscribe(res => {
|
||||
if (res) {
|
||||
let totalCount = 0;
|
||||
res.forEach((element: any) => {
|
||||
@ -324,13 +318,13 @@ export class OrderManagementReceiptsAuditComponent implements OnInit {
|
||||
title: '装货凭证',
|
||||
width: '180px',
|
||||
className: 'text-left',
|
||||
index: 'createTime'
|
||||
render: 'loadingLadingBillFilePath'
|
||||
},
|
||||
{
|
||||
title: '卸货凭证',
|
||||
width: '180px',
|
||||
className: 'text-left',
|
||||
index: 'createTime'
|
||||
render: 'unloadingLadingBillFilePath'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
|
||||
@ -4,8 +4,8 @@
|
||||
* @Author : Shiming
|
||||
* @Date : 2021-12-15 13:17:42
|
||||
* @LastEditors : Shiming
|
||||
* @LastEditTime : 2022-01-18 17:23:52
|
||||
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\modal\\vehicle\\sure-arrive\\sure-arrive.component.html
|
||||
* @LastEditTime : 2022-01-21 16:59:43
|
||||
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\modal\\audit\\voucher-view\\voucher-view.component.html
|
||||
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
||||
-->
|
||||
|
||||
@ -25,6 +25,7 @@
|
||||
</sf>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button nz-button type="button" (click)="close()">关闭</button>
|
||||
<button nz-button type="submit" nzType="primary" (click)="save(sf.value)" [nzLoading]="http.loading">确认到车</button>
|
||||
<button nz-button type="button" *ngIf="Status === 1" (click)="close()">关闭</button>
|
||||
<button nz-button type="submit" *ngIf="Status === 1" nzType="primary" (click)="save(sf.value)" [nzLoading]="http.loading">确定</button>
|
||||
<button nz-button type="submit" nzType="primary" *ngIf="Status !== 1" (click)="save(sf.value)" [nzLoading]="http.loading">生成电子单据</button>
|
||||
</div>
|
||||
|
||||
@ -17,9 +17,9 @@ import { apiConf } from '@conf/api.conf';
|
||||
import { _HttpClient } from '@delon/theme';
|
||||
import { NzMessageService } from 'ng-zorro-antd/message';
|
||||
import { NzModalRef } from 'ng-zorro-antd/modal';
|
||||
import { WaybillManagementServe } from 'src/app/routes/waybill-management/services/waybill-management.service';
|
||||
import { Observable, Observer } from 'rxjs';
|
||||
import { EAEnvironmentService } from '@shared';
|
||||
import { OrderManagementService } from '../../../services/order-management.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-order-management-voucher-view',
|
||||
@ -39,10 +39,10 @@ export class orderManagementVoucherViewComponent implements OnInit {
|
||||
@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: OrderManagementService,private datePipe: DatePipe,private envSrv: EAEnvironmentService, ) {}
|
||||
|
||||
ngOnInit(): void {
|
||||
console.log(this.i)
|
||||
// console.log(this.i)
|
||||
this.initData()
|
||||
this.i.time = this.i.loadingTime;
|
||||
this.initSF();
|
||||
@ -52,7 +52,7 @@ export class orderManagementVoucherViewComponent implements OnInit {
|
||||
|
||||
this.schema = {
|
||||
properties: {
|
||||
imgUrl3: {
|
||||
loadingLadingBillFilePath: {
|
||||
type: 'string',
|
||||
title: '装货凭证',
|
||||
ui: {
|
||||
@ -90,7 +90,7 @@ export class orderManagementVoucherViewComponent implements OnInit {
|
||||
listType: 'picture-card',
|
||||
} as SFUploadWidgetSchema,
|
||||
},
|
||||
imgUrl4: {
|
||||
loadingPeopleVehiclesGoodsFilePath: {
|
||||
type: 'string',
|
||||
title: '',
|
||||
ui: {
|
||||
@ -136,7 +136,7 @@ export class orderManagementVoucherViewComponent implements OnInit {
|
||||
},
|
||||
default: '单张大小不超过5M,支持.jpg、.jpeg和 .png格式',
|
||||
},
|
||||
imgUrl1: {
|
||||
unloadingLadingBillFilePath: {
|
||||
type: 'string',
|
||||
title: '卸货凭证',
|
||||
ui: {
|
||||
@ -174,7 +174,7 @@ export class orderManagementVoucherViewComponent implements OnInit {
|
||||
listType: 'picture-card',
|
||||
} as SFUploadWidgetSchema,
|
||||
},
|
||||
imgUrl2: {
|
||||
unloadingPeopleVehiclesGoodsFilePath: {
|
||||
type: 'string',
|
||||
title: '',
|
||||
ui: {
|
||||
@ -218,7 +218,7 @@ export class orderManagementVoucherViewComponent implements OnInit {
|
||||
}else {
|
||||
this.schema = {
|
||||
properties: {
|
||||
imgUrl3: {
|
||||
loadingLadingBillFilePath: {
|
||||
type: 'string',
|
||||
title: '装货凭证',
|
||||
readOnly: true,
|
||||
@ -257,7 +257,7 @@ export class orderManagementVoucherViewComponent implements OnInit {
|
||||
listType: 'picture-card',
|
||||
} as SFUploadWidgetSchema,
|
||||
},
|
||||
imgUrl4: {
|
||||
loadingPeopleVehiclesGoodsFilePath: {
|
||||
type: 'string',
|
||||
title: '',
|
||||
readOnly: true,
|
||||
@ -304,7 +304,7 @@ export class orderManagementVoucherViewComponent implements OnInit {
|
||||
},
|
||||
default: '单张大小不超过5M,支持.jpg、.jpeg和 .png格式',
|
||||
},
|
||||
imgUrl1: {
|
||||
unloadingLadingBillFilePath: {
|
||||
type: 'string',
|
||||
title: '卸货凭证',
|
||||
readOnly: true,
|
||||
@ -343,7 +343,7 @@ export class orderManagementVoucherViewComponent implements OnInit {
|
||||
listType: 'picture-card',
|
||||
} as SFUploadWidgetSchema,
|
||||
},
|
||||
imgUrl2: {
|
||||
unloadingPeopleVehiclesGoodsFilePath: {
|
||||
type: 'string',
|
||||
title: '',
|
||||
readOnly: true,
|
||||
@ -391,10 +391,10 @@ export class orderManagementVoucherViewComponent implements OnInit {
|
||||
spanLabelFixed: 100,
|
||||
grid: { span: 20 }
|
||||
},
|
||||
$imgUrl1: { grid: { span: 12} },
|
||||
$imgUrl2: { grid: { span: 12} },
|
||||
$imgUrl3: { grid: { span: 12} },
|
||||
$imgUrl4: { grid: { span: 12} },
|
||||
$unloadingLadingBillFilePath: { grid: { span: 12} },
|
||||
$unloadingPeopleVehiclesGoodsFilePath: { grid: { span: 12} },
|
||||
$loadingLadingBillFilePath: { grid: { span: 12} },
|
||||
$loadingPeopleVehiclesGoodsFilePath: { grid: { span: 12} },
|
||||
};
|
||||
}
|
||||
save(value: any): void {
|
||||
@ -405,17 +405,17 @@ export class orderManagementVoucherViewComponent implements OnInit {
|
||||
}
|
||||
const params = {
|
||||
id: this.i.id,
|
||||
imgUrl1: value.imgUrl1.data.fullFilePath,
|
||||
imgUrl2: value.imgUrl2.data.fullFilePath,
|
||||
unloadingLadingBillFilePath: value.unloadingLadingBillFilePath.data.fullFilePath,
|
||||
unloadingPeopleVehiclesGoodsFilePath: value.unloadingPeopleVehiclesGoodsFilePath.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);
|
||||
}
|
||||
})
|
||||
// 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.data.weight) {
|
||||
this.service.msgSrv.warning('必填项为空!')
|
||||
@ -425,48 +425,70 @@ export class orderManagementVoucherViewComponent implements OnInit {
|
||||
console.log(this.i)
|
||||
const params = {
|
||||
id: this.i?.id,
|
||||
imgUrl1: value.imgUrl1.data.fullFilePath,
|
||||
imgUrl2: value.imgUrl2.data.fullFilePath,
|
||||
unloadingLadingBillFilePath: value.unloadingLadingBillFilePath.data.fullFilePath,
|
||||
unloadingPeopleVehiclesGoodsFilePath: value.unloadingPeopleVehiclesGoodsFilePath.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 ')
|
||||
console.log(params)
|
||||
this.service.request(this.service.$api_get_insertBulkUnloadCarInfo, params).subscribe((res) => {
|
||||
if(res) {
|
||||
this.service.msgSrv.success('确认到车成功!')
|
||||
this.modal.destroy(true);
|
||||
}
|
||||
})
|
||||
// params.time = this.datePipe.transform(value.time, 'yyyy-MM-dd HH:mm:ss ')
|
||||
// console.log(params)
|
||||
// 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) => {
|
||||
this.service.request(this.service.$api_get_getCredentials, { id : this.i?.id}).subscribe((res) => {
|
||||
console.log(res)
|
||||
if (res.imgUrl1) {
|
||||
this.formData = {
|
||||
imgUrl3: [
|
||||
if (res.unloadingLadingBillFilePath) {
|
||||
this.formData = {
|
||||
loadingLadingBillFilePath: [
|
||||
{
|
||||
uid: 'logo',
|
||||
name: 'LOGO',
|
||||
status: 'done',
|
||||
url: res.imgUrl1,
|
||||
url: res.loadingLadingBillFilePath,
|
||||
response: {
|
||||
url: res.imgUrl1,
|
||||
url: res.loadingLadingBillFilePath,
|
||||
},
|
||||
},
|
||||
],
|
||||
imgUrl4: [
|
||||
loadingPeopleVehiclesGoodsFilePath: [
|
||||
{
|
||||
uid: 'logo',
|
||||
name: 'LOGO',
|
||||
status: 'done',
|
||||
url: res.loadingPeopleVehiclesGoodsFilePath,
|
||||
response: {
|
||||
url: res.loadingPeopleVehiclesGoodsFilePath,
|
||||
},
|
||||
},
|
||||
],
|
||||
unloadingLadingBillFilePath: [
|
||||
{
|
||||
uid: 'logo',
|
||||
name: 'LOGO',
|
||||
status: 'done',
|
||||
url: res.unloadingLadingBillFilePath,
|
||||
response: {
|
||||
url: res.unloadingLadingBillFilePath,
|
||||
},
|
||||
},
|
||||
],
|
||||
unloadingPeopleVehiclesGoodsFilePath: [
|
||||
{
|
||||
uid: 'logo',
|
||||
name: 'LOGO',
|
||||
status: 'done',
|
||||
url: res.imgUrl2,
|
||||
url: res.unloadingPeopleVehiclesGoodsFilePath,
|
||||
response: {
|
||||
url: res.imgUrl2,
|
||||
url: res.unloadingPeopleVehiclesGoodsFilePath,
|
||||
},
|
||||
},
|
||||
],
|
||||
|
||||
@ -15,6 +15,7 @@ import { OrderManagementBulkeDetailComponent } from './components/bulk-detail/bu
|
||||
import { OrderManagementBulkComponent } from './components/bulk/bulk.component';
|
||||
import { OrderManagementComplaintDetailComponent } from './components/complaint-detail/complaint-detail.component';
|
||||
import { OrderManagementComplaintComponent } from './components/complaint/complaint.component';
|
||||
import { OrderManagementComplianceAuditComponent } from './components/compliance-audit/compliance-audit.component';
|
||||
import { OrderManagementReceiptsAuditComponent } from './components/receipts-audit/receipts-audit.component';
|
||||
import { OrderManagementRiskDetailComponent } from './components/risk-detail/risk-detail.component';
|
||||
import { OrderManagementRiskComponent } from './components/risk/risk.component';
|
||||
@ -34,6 +35,7 @@ const routes: Routes = [
|
||||
{ path: 'complaint', component: OrderManagementComplaintComponent },
|
||||
{ path: 'complaint-detail/:id', component: OrderManagementComplaintDetailComponent },
|
||||
{ path: 'receipts-audit', component: OrderManagementReceiptsAuditComponent },
|
||||
{ path: 'compliance-audit', component: OrderManagementComplianceAuditComponent },
|
||||
]
|
||||
@NgModule({
|
||||
imports: [RouterModule.forChild(routes)],
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
* @Author : Shiming
|
||||
* @Date : 2022-01-06 09:24:00
|
||||
* @LastEditors : Shiming
|
||||
* @LastEditTime : 2022-01-21 11:12:17
|
||||
* @LastEditTime : 2022-01-21 17:14:17
|
||||
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\order-management.module.ts
|
||||
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
||||
*/
|
||||
@ -16,6 +16,7 @@ import { OrderManagementBulkeDetailComponent } from './components/bulk-detail/bu
|
||||
import { OrderManagementBulkComponent } from './components/bulk/bulk.component';
|
||||
import { OrderManagementComplaintDetailComponent } from './components/complaint-detail/complaint-detail.component';
|
||||
import { OrderManagementComplaintComponent } from './components/complaint/complaint.component';
|
||||
import { OrderManagementComplianceAuditComponent } from './components/compliance-audit/compliance-audit.component';
|
||||
import { OrderManagementReceiptsAuditComponent } from './components/receipts-audit/receipts-audit.component';
|
||||
import { OrderManagementRiskDetailComponent } from './components/risk-detail/risk-detail.component';
|
||||
import { OrderManagementRiskComponent } from './components/risk/risk.component';
|
||||
@ -58,7 +59,8 @@ const COMPONENTS: Type<void>[] = [
|
||||
VehicleModifyCaptainComponent,
|
||||
OrderManagementComplaintDetailComponent,
|
||||
OrderManagementReceiptsAuditComponent,
|
||||
orderManagementVoucherViewComponent
|
||||
orderManagementVoucherViewComponent,
|
||||
OrderManagementComplianceAuditComponent
|
||||
];
|
||||
|
||||
@NgModule({
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
* @Author : Shiming
|
||||
* @Date : 2021-12-03 15:31:52
|
||||
* @LastEditors : Shiming
|
||||
* @LastEditTime : 2022-01-21 10:47:08
|
||||
* @LastEditTime : 2022-01-21 16:51:32
|
||||
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\services\\order-management.service.ts
|
||||
* Copyright (C) 2022 huzhenhong. All rights reserved.
|
||||
*/
|
||||
@ -133,6 +133,8 @@ export class OrderManagementService extends ShipperBaseService {
|
||||
public $api_get_getCredentials = '/api/sdc/billExamine/getCredentials';
|
||||
// 单据审核
|
||||
public $api_get_billAudit = '/api/sdc/billExamine/billAudit';
|
||||
// 统计单据审核状态数量
|
||||
public $api_get_getAuditStatistical = '/api/sdc/billExamine/getAuditStatistical';
|
||||
/**
|
||||
* 根据企业ID,获取企业历史网络货运人
|
||||
* @returns
|
||||
|
||||
@ -163,11 +163,21 @@
|
||||
"icon": "anticon anticon-dashboard",
|
||||
"link": "/order-management/risk"
|
||||
},
|
||||
{
|
||||
"text": "单据审核",
|
||||
"icon": "anticon anticon-dashboard",
|
||||
"link": "/order-management/receipts-audit"
|
||||
},
|
||||
{
|
||||
"text": "投诉管理",
|
||||
"icon": "anticon anticon-dashboard",
|
||||
"link": "/order-management/complaint"
|
||||
},
|
||||
{
|
||||
"text": "合规抽查",
|
||||
"icon": "anticon anticon-dashboard",
|
||||
"link": "/order-management/compliance-audit"
|
||||
},
|
||||
{
|
||||
"text": "整车订单详情",
|
||||
"icon": "anticon anticon-dashboard",
|
||||
|
||||
Reference in New Issue
Block a user