Merge branch 'develop'

This commit is contained in:
wangshiming
2022-04-21 17:17:53 +08:00
33 changed files with 350 additions and 189 deletions

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{
"name": "tms-obc-web",
"version": "0.0.0",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@ -43,12 +43,12 @@
</div>
</div>
<div nz-row [nzGutter]="16">
<div nz-col class="gutter-row" [nzSpan]="12">
<div nz-col class="gutter-row" [nzSpan]="9">
<nz-card [nzTitle]="'订单类型比例'">
<g2-custom #g2custom delay="100"></g2-custom>
</nz-card>
</div>
<div nz-col class="gutter-row" [nzSpan]="12">
<div nz-col class="gutter-row" [nzSpan]="15">
<nz-card [nzTitle]="'大区业绩完成情况'">
<!-- <g2-timeline [data]="chartData" [titleMap]="{ y1: '订单金额(元)', y2: '' }" [height]="200" mask="MM月DD日"
[slider]="false"></g2-timeline> -->
@ -57,7 +57,7 @@
</div>
</div>
<div nz-row [nzGutter]="16">
<div nz-col class="gutter-row" [nzSpan]="12">
<div nz-col class="gutter-row" [nzSpan]="9">
<nz-card [nzTitle]="'运单直付比例'">
<!-- <g2-pie #pie title="销售额" subTitle="销售额" [total]="total" [valueFormat]="format" [data]="salesPieData" height="294"
(clickItem)="handleClick($event)" [lineWidth]="10">
@ -65,9 +65,10 @@
<g2-custom #BillDirectProportion delay="100"></g2-custom>
</nz-card>
</div>
<div nz-col class="gutter-row" [nzSpan]="12">
<div nz-col class="gutter-row" [nzSpan]="15">
<nz-card [nzTitle]="'业绩完成情况'">
<g2-bar [data]="salesData" (clickItem)="handleClick($event)" height="400"></g2-bar>
<!-- <g2-bar [data]="salesData" (clickItem)="handleClick($event)" height="400"></g2-bar> -->
<g2-custom #SaleProportion delay="100"></g2-custom>
</nz-card>
</div>

View File

@ -9,6 +9,8 @@ import { G2TimelineClickItem, G2TimelineData } from '@delon/chart/timeline';
import { CurrencyPipe } from '@angular/common';
import { LOGS } from '_mock';
import { G2CustomComponent } from '@delon/chart/custom';
import { G2BarData } from '@delon/chart/bar';
import { GeometryLabelCfg } from '@antv/g2/lib/interface';
@Component({
selector: 'app-datatable-dataindex',
@ -20,6 +22,7 @@ export class DatatableDataindexComponent implements OnInit {
@ViewChild('g2custom', { static: false }) g2custom!: G2CustomComponent;
@ViewChild('RegionalPerforman', { static: false }) RegionalPerforman!: G2CustomComponent;
@ViewChild('BillDirectProportion', { static: false }) BillDirectProportion!: G2CustomComponent;
@ViewChild('SaleProportion', { static: false }) SaleProportion!: G2CustomComponent;
salesData: any[] = [];
totalAdvanceDeposit: { totalAmount: string; list: G2MiniAreaData[] } = { totalAmount: '0', list: this.genData() };
@ -94,6 +97,7 @@ export class DatatableDataindexComponent implements OnInit {
this.service.request(this.service.$api_get_bill_payment_amount).subscribe(res => {
if (res) {
this.salesData = this.formatBarData(res);
this.initBiaxialChart(this.SaleProportion['el'].nativeElement as any, this.salesData);
}
});
}
@ -267,6 +271,11 @@ export class DatatableDataindexComponent implements OnInit {
}
}
/**
* 构建大区业绩完成情况柱折双轴图
* @param el
* @param data
*/
private initRegionalPerformanceChart(el: HTMLElement, data: DataPerformanceTrendVO[]) {
const chart = new Chart({
container: el,
@ -319,6 +328,65 @@ export class DatatableDataindexComponent implements OnInit {
chart.render();
}
/**
* 构建业绩完成情况柱折双轴图
* @param el
* @param data
*/
private initBiaxialChart(el: HTMLElement, data: any[]) {
const chart = new Chart({
container: el,
autoFit: true,
height: 400
});
chart.data(data);
// 设置坐标轴
chart.scale({
pre: { alias: '同期业绩完成率', min: 0, max: 1, formatter: val => val * 100 + '%' },
pre2: { alias: '业绩完成率', min: 0, max: 1, formatter: val => val * 100 + '%' },
quantity: { alias: '业绩量 (万)', min: 0, max: 1000000 }
});
// 设置
chart.legend({
custom: true,
items: [
{ value: 'quantity', name: '业绩量 (万)', marker: { symbol: 'hyphen', style: { stroke: '#3182bd', r: 15, lineWidth: 5 } } },
{ value: 'pre2', name: '业绩完成率', marker: { symbol: 'hyphen', style: { stroke: '#fdae6b', r: 15, lineWidth: 5 } } },
{ value: 'pre', name: '同期业绩完成率', marker: { symbol: 'hyphen', style: { stroke: '#ff4d4f', r: 15, lineWidth: 5 } } }
]
});
chart.axis('pre', {
grid: null,
title: null,
label: {
formatter: val => +val * 100 + '%'
}
});
chart.axis('pre2', false);
chart.tooltip({
shared: true
});
chart.interval().position('time*quantity').label('quantity').color('#3182bd');
chart
.line()
.position('time*pre')
.label('pre', val => ({ content: (val * 100).toFixed(0) + '%' }))
.color('#ff4d4f')
.size(3);
chart.point().position('time*pre').color('#ff4d4f').size(3).shape('circle');
chart
.line()
.position('time*pre2')
.label('pre2', val => ({ content: (val * 100).toFixed(0) + '%' }))
.color('#fdae6b')
.size(3);
chart.point().position('time*pre2').color('#fdae6b').size(3).shape('circle');
chart.interaction('active-region');
chart.removeInteraction('legend-filter'); // 自定义图例,移除默认的分类图例筛选交互
chart.render();
}
private formatMiniAreaData(data: DataTotalVO) {
return {
totalAmount: `${this.currency.transform(data.totalAmount || 0)}`,
@ -329,6 +397,11 @@ export class DatatableDataindexComponent implements OnInit {
};
}
/**
* 初始化饼图数据格式
* @param data
* @returns
*/
private formatCoordinateData(data: DataBillTypeProportion[]): any[] {
const total = data.map(item => item.quantity).reduce((pre, next) => pre + next);
const rs: any[] = [];
@ -344,9 +417,11 @@ export class DatatableDataindexComponent implements OnInit {
private formatBarData(data: DataPerformanceTrendVO[]): any[] {
return data.map(item => ({
x: item.time,
y: item.quantity,
color: '#f50'
time: item.time,
quantity: item.quantity,
color: undefined,
pre: Math.floor(Math.random() * 100) / 100,
pre2: Math.floor(Math.random() * 100) / 100
}));
}
@ -356,7 +431,7 @@ export class DatatableDataindexComponent implements OnInit {
for (let i = 0; i < 20; i += 1) {
res.push({
x: format(new Date(beginDay + 1000 * 60 * 60 * 24 * i), 'yyyy-MM-dd'),
y: Math.floor(Math.random() * 100) + 10
y: Math.floor(Math.random() * 1)
});
}
return res;

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2022-04-06 10:57:56
* @LastEditors : Shiming
* @LastEditTime : 2022-04-21 09:45:41
* @LastEditTime : 2022-04-21 16:41:13
* @FilePath : \\tms-obc-web\\src\\app\\routes\\financial-management\\components\\freight-account\\freight-account-detail\\freight-account-detail.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
@ -50,7 +50,7 @@
</div>
<div nz-col [nzXl]="_$expand ? 24 : 6" [nzLg]="24" [nzSm]="24" [nzXs]="24" class="text-right">
<button nz-button nzType="primary" [nzLoading]="service.http.loading"
(click)="st?.load(1);loadInfo();">查询</button>
(click)="st?.load(1);">查询</button>
<button nz-button (click)="resetSF()">重置</button>
<button nz-button (click)="exportList()"> 导出</button>
<button nz-button nzType="link" (click)="expandToggle()">

View File

@ -46,7 +46,7 @@ export class FreightAccountDetailComponent implements OnInit {
}
});
}
this.loadStatistics(requestOptions.body);
// this.loadStatistics(requestOptions.body);
return requestOptions;
};

View File

@ -150,9 +150,9 @@ export class PaymentRecordComponent implements OnInit {
type: 'string',
title: '车队长收款',
enum: [
{ label: '全部', value: '' },
{ label: '', value: '0' },
{ label: '', value: '1' }
{label: '全部', value: ''},
{label: '', value: '1'},
{label: '', value: '2'}
],
ui: {
widget: 'select',

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2021-12-24 16:58:02
* @LastEditors : Shiming
* @LastEditTime : 2022-04-15 09:58:12
* @LastEditTime : 2022-04-21 15:33:31
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\bulk-detail-change\\bulk-detail-change.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
@ -282,8 +282,8 @@
<nz-card>
<p class="detail_title" #distannce5><span>|</span> 轨迹信息</p>
<nz-card #distannce5>
<p class="detail_title" ><span>|</span> 轨迹信息</p>
<div nz-row>
<div nz-col [nzSpan]="24">
<amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList">

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2021-12-06 20:20:26
* @LastEditors : Shiming
* @LastEditTime : 2022-04-15 09:58:13
* @LastEditTime : 2022-04-21 15:33:15
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\bulk-detail\\bulk-detail.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
@ -204,8 +204,8 @@
</sv-container>
</nz-card>
<nz-card>
<p class="detail_title" #distannce5><span>|</span> 轨迹信息</p>
<nz-card #distannce5>
<p class="detail_title" ><span>|</span> 轨迹信息</p>
<div nz-row>
<div nz-col [nzSpan]="24">
<amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList" [pois]="pois">
@ -230,7 +230,7 @@
</div>
<div>如果您的运单没有问题可以提出申诉并提供相关资料我们将24小时内审核反馈</div>
<ul *ngFor="let item of abnormalList">
<li style="color: red;">系统识别:{{item?.complianceTypeName}}</li>
<li style="color: red;">系统识别:{{item?.complianceName}}</li>
<li style="color: red;">{{item?.determineDetails}}</li>
</ul>
</div>

View File

@ -397,25 +397,25 @@ export class OrderManagementReceiptsAuditComponent implements OnInit {
{
text: '生成电子单据',
click: _record => this.generate(_record, 2),
iif: item => !item?.loadingElectronicsLadingBillFilePath,
iif: item => !item?.loadingElectronicsLadingBillFilePath || !item?.unloadingElectronicsLadingBillFilePath,
acl: { ability: ['ORDER-RECEIPTS-electronicBillingOne'] },
},
{
text: '通过',
click: _record => this.sign(_record),
iif: item => !item?.loadingElectronicsLadingBillFilePath,
iif: item => !item?.loadingElectronicsLadingBillFilePath || !item?.unloadingElectronicsLadingBillFilePath,
acl: { ability: ['ORDER-RECEIPTS-billAuditPassBatch'] },
},
{
text: '修改',
click: _record => this.modification(_record),
iif: item => !item?.loadingElectronicsLadingBillFilePath,
iif: item => !item?.loadingElectronicsLadingBillFilePath || !item?.unloadingElectronicsLadingBillFilePath,
acl: { ability: ['ORDER-RECEIPTS-updateBillExamine'] },
},
{
text: '查看凭证',
click: _record => this.generate(_record, 3),
iif: item => item?.loadingElectronicsLadingBillFilePath,
iif: item => item?.loadingElectronicsLadingBillFilePath && item?.unloadingElectronicsLadingBillFilePath,
acl: { ability: ['ORDER-RECEIPTS-view'] },
},
]

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2021-12-23 13:39:58
* @LastEditors : Shiming
* @LastEditTime : 2022-04-15 10:07:20
* @LastEditTime : 2022-04-21 15:33:42
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\vehicle-detail-change\\vehicle-detail-change.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
@ -316,8 +316,8 @@
</sv-container>
</nz-card>
<nz-card>
<p class="detail_title" #distannce5><span>|</span> 轨迹信息</p>
<nz-card #distannce5>
<p class="detail_title" ><span>|</span> 轨迹信息</p>
<div nz-row>
<div nz-col [nzSpan]="24">
<amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList">

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2021-12-28 14:42:03
* @LastEditors : Shiming
* @LastEditTime : 2022-04-15 09:56:50
* @LastEditTime : 2022-04-21 17:03:50
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\vehicle-detail\\vehicle-detail.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
@ -205,8 +205,8 @@
</sv-container>
</nz-card>
<nz-card>
<p class="detail_title" #distannce5><span>|</span> 轨迹信息</p>
<nz-card #distannce5>
<p class="detail_title"><span>|</span> 轨迹信息</p>
<div nz-row>
<div nz-col [nzSpan]="24">
<amap-path-simplifier [mapWidth]="'100%'" [mapHeight]="'600px'" [mapList]="mapList" [pois]="pois">
@ -229,7 +229,7 @@
<div> 您的订单可能存在交易风险,请及时提交申诉材料,提交成功后,平台将及时完成审核并通知您! </div>
<div>如果您的运单没有问题可以提出申诉并提供相关资料我们将24小时内审核反馈</div>
<ul *ngFor="let item of abnormalList">
<li style="color: red;">系统识别:{{ item?.complianceTypeName }}</li>
<li style="color: red;">系统识别:{{ item?.complianceName }}</li>
<li style="color: red;">{{ item?.determineDetails }}</li>
</ul>
</div>

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2021-12-15 13:17:42
* @LastEditors : Shiming
* @LastEditTime : 2022-04-21 13:29:36
* @LastEditTime : 2022-04-21 14:41:44
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\modal\\audit\\voucher-view\\voucher-view.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
@ -12,11 +12,13 @@
<sf #sf mode="edit" [schema]="schema" [ui]="ui" [formData]="formData" button="none">
<ng-template sf-template="no0" let-me let-ui="ui" let-schema="schema">
<div style="color: #1890FF" >
<div (click)="openlaod(1)">电子装货单</div>
<div (click)="openlaod(1)">电子装货单 <span style="color: red;">
{{datas?.loadingElectronicsLadingBillFilePath ? '已签署' :'未签署'}}
</span></div>
</div>
</ng-template>
<ng-template sf-template="no6" let-me let-ui="ui" let-schema="schema">
<div style="color: #1890FF" (click)="openlaod(2)">电子卸货单</div>
<div style="color: #1890FF" (click)="openlaod(2)">电子卸货单<span style="color: red;"> {{datas?.unloadingElectronicsLadingBillFilePath ? '已签署' :'未签署'}}</span></div>
</ng-template>
</sf>
</div>

View File

@ -1,4 +1,3 @@
import { Component, OnInit, ViewChild } from '@angular/core';
import { DatePipe } from '@angular/common';
import {
@ -16,7 +15,7 @@ import {
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 { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';
import { Observable, Observer } from 'rxjs';
import { EAEnvironmentService } from '@shared';
import { OrderManagementService } from '../../../services/order-management.service';
@ -41,20 +40,26 @@ 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: OrderManagementService, 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,
private modalService: NzModalService
) {}
ngOnInit(): void {
console.log(this.i)
this.initData()
console.log(this.i);
this.initData();
this.i.time = this.i.loadingTime;
this.initSF();
}
initSF() {
console.log(this.Status)
console.log(this.Status);
if (this.Status == 1) {
this.schema = {
properties: {
loadingLadingBillFilePath: {
type: 'string',
@ -73,7 +78,7 @@ export class orderManagementVoucherViewComponent implements OnInit {
content: [
`上传用户:${this.i?.driverName}(${this.i?.driverTelephone})`,
`上传位置:${this.i?.loadingAddressArr[0]}`,
`上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`,
`上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`
],
position: '2',
fontSize: '100'
@ -98,8 +103,8 @@ export class orderManagementVoucherViewComponent implements OnInit {
});
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
listType: 'picture-card'
} as SFUploadWidgetSchema
},
loadingPeopleVehiclesGoodsFilePath: {
type: 'string',
@ -118,7 +123,7 @@ export class orderManagementVoucherViewComponent implements OnInit {
content: [
`上传用户:${this.i?.driverName}(${this.i?.driverTelephone})`,
`上传位置:${this.i?.loadingAddressArr[0]}`,
`上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`,
`上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`
],
position: '2',
fontSize: '100'
@ -143,16 +148,16 @@ export class orderManagementVoucherViewComponent implements OnInit {
});
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
listType: 'picture-card'
} as SFUploadWidgetSchema
},
no4: {
type: 'string',
title: '',
ui: {
widget: 'text',
widget: 'text'
},
default: '单张大小不超过5M支持.jpg、.jpeg和 .png格式',
default: '单张大小不超过5M支持.jpg、.jpeg和 .png格式'
},
unloadingLadingBillFilePath: {
type: 'string',
@ -171,7 +176,7 @@ export class orderManagementVoucherViewComponent implements OnInit {
content: [
`上传用户:${this.i?.driverName}(${this.i?.driverTelephone})`,
`上传位置:${this.i?.unloadingAddressArr[0]}`,
`上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`,
`上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`
],
position: '2',
fontSize: '100'
@ -196,8 +201,8 @@ export class orderManagementVoucherViewComponent implements OnInit {
});
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
listType: 'picture-card'
} as SFUploadWidgetSchema
},
unloadingPeopleVehiclesGoodsFilePath: {
type: 'string',
@ -216,7 +221,7 @@ export class orderManagementVoucherViewComponent implements OnInit {
content: [
`上传用户:${this.i?.driverName}(${this.i?.driverTelephone})`,
`上传位置:${this.i?.unloadingAddressArr[0]}`,
`上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`,
`上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`
],
position: '2',
fontSize: '100'
@ -241,11 +246,16 @@ export class orderManagementVoucherViewComponent implements OnInit {
});
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
listType: 'picture-card'
} as SFUploadWidgetSchema
}
},
required: ['loadingLadingBillFilePath', 'loadingPeopleVehiclesGoodsFilePath', 'unloadingLadingBillFilePath', 'unloadingPeopleVehiclesGoodsFilePath']
required: [
'loadingLadingBillFilePath',
'loadingPeopleVehiclesGoodsFilePath',
'unloadingLadingBillFilePath',
'unloadingPeopleVehiclesGoodsFilePath'
]
};
} else {
this.schema = {
@ -254,8 +264,8 @@ export class orderManagementVoucherViewComponent implements OnInit {
type: 'string',
title: '',
ui: {
widget: 'custom',
},
widget: 'custom'
}
},
loadingLadingBillFilePath: {
type: 'string',
@ -275,7 +285,7 @@ export class orderManagementVoucherViewComponent implements OnInit {
content: [
`上传用户:${this.i?.driverName}(${this.i?.driverTelephone})`,
`上传位置:${this.i?.loadingAddressArr[0]}`,
`上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`,
`上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`
],
position: '2',
fontSize: '100'
@ -300,8 +310,8 @@ export class orderManagementVoucherViewComponent implements OnInit {
});
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
listType: 'picture-card'
} as SFUploadWidgetSchema
},
loadingPeopleVehiclesGoodsFilePath: {
type: 'string',
@ -321,7 +331,7 @@ export class orderManagementVoucherViewComponent implements OnInit {
content: [
`上传用户:${this.i?.driverName}(${this.i?.driverTelephone})`,
`上传位置:${this.i?.loadingAddressArr[0]}`,
`上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`,
`上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`
],
position: '2',
fontSize: '100'
@ -346,24 +356,24 @@ export class orderManagementVoucherViewComponent implements OnInit {
});
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
listType: 'picture-card'
} as SFUploadWidgetSchema
},
no4: {
type: 'string',
title: '',
ui: {
widget: 'text',
widget: 'text'
},
default: '单张大小不超过5M支持.jpg、.jpeg和 .png格式',
default: '单张大小不超过5M支持.jpg、.jpeg和 .png格式'
},
no6: {
type: 'string',
title: '',
ui: {
widget: 'custom',
},
widget: 'custom'
}
},
unloadingLadingBillFilePath: {
type: 'string',
@ -383,7 +393,7 @@ export class orderManagementVoucherViewComponent implements OnInit {
content: [
`上传用户:${this.i?.driverName}(${this.i?.driverTelephone})`,
`上传位置:${this.i?.unloadingAddressArr[0]}`,
`上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`,
`上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`
],
position: '2',
fontSize: '100'
@ -408,8 +418,8 @@ export class orderManagementVoucherViewComponent implements OnInit {
});
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
listType: 'picture-card'
} as SFUploadWidgetSchema
},
unloadingPeopleVehiclesGoodsFilePath: {
type: 'string',
@ -429,7 +439,7 @@ export class orderManagementVoucherViewComponent implements OnInit {
content: [
`上传用户:${this.i?.driverName}(${this.i?.driverTelephone})`,
`上传位置:${this.i?.unloadingAddressArr[0]}`,
`上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`,
`上传时间:${format(new Date(), 'yyyy-MM-dd HH:mm:ss')}`
],
position: '2',
fontSize: '100'
@ -454,11 +464,16 @@ export class orderManagementVoucherViewComponent implements OnInit {
});
},
multiple: false,
listType: 'picture-card',
} as SFUploadWidgetSchema,
listType: 'picture-card'
} as SFUploadWidgetSchema
}
},
required: ['loadingLadingBillFilePath', 'loadingPeopleVehiclesGoodsFilePath', 'unloadingLadingBillFilePath', 'unloadingPeopleVehiclesGoodsFilePath']
required: [
'loadingLadingBillFilePath',
'loadingPeopleVehiclesGoodsFilePath',
'unloadingLadingBillFilePath',
'unloadingPeopleVehiclesGoodsFilePath'
]
};
}
this.ui = {
@ -469,42 +484,42 @@ export class orderManagementVoucherViewComponent implements OnInit {
$unloadingLadingBillFilePath: { grid: { span: 12 } },
$unloadingPeopleVehiclesGoodsFilePath: { grid: { span: 12 } },
$loadingLadingBillFilePath: { grid: { span: 12 } },
$loadingPeopleVehiclesGoodsFilePath: { grid: { span: 12 } },
$loadingPeopleVehiclesGoodsFilePath: { grid: { span: 12 } }
};
}
save(value: any): void {
if (!this.sf.valid) {
this.service.msgSrv.warning('必填项为空!')
this.service.msgSrv.warning('必填项为空!');
return;
}
console.log(value)
console.log(value);
const params = {
id: this.i?.id,
loadingLadingBillFilePath: value?.loadingLadingBillFilePath?.data?.fullFilePath,
loadingPeopleVehiclesGoodsFilePath: value?.loadingPeopleVehiclesGoodsFilePath?.data?.fullFilePath,
unloadingLadingBillFilePath: value?.unloadingLadingBillFilePath?.data?.fullFilePath,
unloadingPeopleVehiclesGoodsFilePath: value?.unloadingPeopleVehiclesGoodsFilePath?.data?.fullFilePath,
}
console.log(params)
this.service.request(this.service.$api_get_updateBillExamine, params).subscribe((res) => {
unloadingPeopleVehiclesGoodsFilePath: value?.unloadingPeopleVehiclesGoodsFilePath?.data?.fullFilePath
};
console.log(params);
this.service.request(this.service.$api_get_updateBillExamine, params).subscribe(res => {
if (res) {
this.service.msgSrv.success('修改成功!')
this.service.msgSrv.success('修改成功!');
this.modal.destroy(true);
}
})
});
}
sure() {
const params = [this.i?.id];
this.service.downloadFile(this.service.$api_createBillTakeGoods, params)
this.service.downloadFile(this.service.$api_createBillDischargeGoods, params)
this.service.msgSrv.success('生成电子单据成功!')
this.service.downloadFile(this.service.$api_createBillTakeGoods, params);
this.service.downloadFile(this.service.$api_createBillDischargeGoods, params);
this.service.msgSrv.success('生成电子单据成功!');
this.modal.destroy(true);
}
// 确认到车界面信息(两个只能看的图片)
initData() {
this.service.request(this.service.$api_get_getCredentials, { id: this.i?.id }).subscribe((res) => {
console.log(res)
this.datas = res
this.service.request(this.service.$api_get_getCredentials, { id: this.i?.id }).subscribe(res => {
console.log(res);
this.datas = res;
if (res.unloadingLadingBillFilePath) {
this.formData = {
loadingLadingBillFilePath: [
@ -514,9 +529,9 @@ export class orderManagementVoucherViewComponent implements OnInit {
status: 'done',
url: res.loadingLadingBillFilePath,
response: {
url: res.loadingLadingBillFilePath,
},
},
url: res.loadingLadingBillFilePath
}
}
],
loadingPeopleVehiclesGoodsFilePath: [
{
@ -525,9 +540,9 @@ export class orderManagementVoucherViewComponent implements OnInit {
status: 'done',
url: res.loadingPeopleVehiclesGoodsFilePath,
response: {
url: res.loadingPeopleVehiclesGoodsFilePath,
},
},
url: res.loadingPeopleVehiclesGoodsFilePath
}
}
],
unloadingLadingBillFilePath: [
{
@ -536,9 +551,9 @@ export class orderManagementVoucherViewComponent implements OnInit {
status: 'done',
url: res.unloadingLadingBillFilePath,
response: {
url: res.unloadingLadingBillFilePath,
},
},
url: res.unloadingLadingBillFilePath
}
}
],
unloadingPeopleVehiclesGoodsFilePath: [
{
@ -547,44 +562,112 @@ export class orderManagementVoucherViewComponent implements OnInit {
status: 'done',
url: res.unloadingPeopleVehiclesGoodsFilePath,
response: {
url: res.unloadingPeopleVehiclesGoodsFilePath,
},
},
],
url: res.unloadingPeopleVehiclesGoodsFilePath
}
}
]
};
}
})
});
}
close(): void {
this.modal.destroy(true);
}
openlaod(value: any) {
if (value === 1) {
if(this.datas?.esignFlowStatus == '1') {
this.service.request(this.service.$api_getBillTakeEsignFile, [this.datas?.id]).subscribe((res) => {
console.log(res);
})
// 逻辑: 先判断电子提货单是否已生成,文件为空则触发签署文件,再查询是否签署成功,成功则退出,刷新页面,再次点击为预览
let time = 10;
setInterval(function () {
time -= 1;
}, 1000);
const modal = this.modalService.success({
nzTitle: '电子装货单签署中!',
nzContent: `
请等待${time}秒后自动关闭
`
});
if (!this.datas?.loadingElectronicsLadingBillFilePath) {
this.service.request(this.service.$api_createBillTakeGoods, [this.datas?.id]).subscribe(res => {
if (res) {
switch (res[0]?.esignFlowStatus) {
case 1:
case '1':
setTimeout(() => {
this.service.request(this.service.$api_getBillTakeEsignFile, [this.datas?.id]).subscribe(res => {
if (res[0]?.esignFlowStatus == '2') {
this.service.msgSrv.success('电子装货单已生效!');
this.modal.destroy(true);
}
});
modal.destroy();
}, 10000);
return;
case 2:
modal.destroy();
return;
case '13':
case 13:
this.service.msgSrv.error('签署异常!');
modal.destroy();
return;
}
}
});
} else {
const a = document.createElement('a');
a.href = this.datas?.loadingElectronicsLadingBillFilePath;
document.body.appendChild(a);
console.log(document.body.contains(a))
a.click(); //点击下载
document.body.removeChild(a); //下载完成移除元素
} else {
if(this.datas?.esignFlowStatus == '1') {
this.service.request(this.service.$api_getBillTakeEsignFile, [this.datas?.id]).subscribe((res) => {
console.log(res);
})
}
} else {
// 逻辑: 先判断电子提货单是否已生成,文件为空则触发签署文件,再查询是否签署成功,成功则退出,刷新页面,再次点击为预览
let time = 10;
setInterval(function () {
time -= 1;
}, 1000); //反复执行函数本身
const modal = this.modalService.success({
nzTitle: '电子卸货单签署中!',
nzContent: `
请等待${time}秒后自动关闭
`
});
if (!this.datas?.unloadingElectronicsLadingBillFilePath) {
this.service.request(this.service.$api_createBillDischargeGoods, [this.datas?.id]).subscribe(res => {
if (res) {
switch (res[0]?.esignFlowStatus) {
case 1:
case '1':
setTimeout(() => {
this.service.request(this.service.$api_getBillDischargeEsignFile, [this.datas?.id]).subscribe(res => {
if (res[0]?.esignFlowStatus == '2') {
this.service.msgSrv.success('电子卸货单已生效!');
this.modal.destroy(true);
}
});
modal.destroy();
}, 10000);
return;
case 2:
modal.destroy();
return;
case '13':
case 13:
this.service.msgSrv.error('签署异常!');
modal.destroy();
return;
}
}
});
} else {
const a = document.createElement('a');
a.href = this.datas?.unloadingElectronicsLadingBillFilePath;
document.body.appendChild(a);
console.log(document.body.contains(a))
a.click(); //点击下载
document.body.removeChild(a); //下载完成移除元素
}
}
}
}

View File

@ -499,7 +499,7 @@ export class VehicleSureArriveComponent implements OnInit {
});
} else {
if (!value?.time) {
this.service.msgSrv.warning('货时间为空!');
this.service.msgSrv.warning('货时间为空!');
return;
}
if (!this.data?.volume) {

View File

@ -214,6 +214,11 @@ export class OrderManagementService extends ShipperBaseService {
public $api_getBillTakeEsignFile = `/api/sdc/billOperate/getBillTakeEsignFile`;
// 获取电子卸货单签章附件
public $api_getBillDischargeEsignFile = `/api/sdc/billOperate/getBillDischargeEsignFile`;
// // 生成卸货单
// public $api_createBillDischargeGoods = `/api/sdc/billOperate/createBillDischargeGoods`;
// // 生成提货单
// public $api_createBillTakeGoods = `/api/sdc/billOperate/createBillTakeGoods`;
/**
* 根据企业ID获取企业历史网络货运人
* @returns

View File

@ -58,7 +58,7 @@
<textarea rows="3" nz-input [(ngModel)]="cannelItem.remark"></textarea>
</se>
<se label="一并转移的客户">
<p style="margin-top: 8px">已选(0</p>
<p style="margin-top: 8px">已选({{selectedRows?.length}}</p>
<st #rest [data]="service.$api_get_enterprice_rel_list" [columns]="[
{ title: '', index: 'key', type: 'checkbox' },
{ title: '客户名称', index: 'enterpriceName' }

View File

@ -379,12 +379,13 @@ export class PartnerListComponent {
return [
{
title: '合伙人名称',
index: 'contactName',
width: 180
index: 'enterpriseName',
width: 180,
format: item => (item.partnerType ? `${item.enterpriseName || item.contactName}` : '')
},
{ title: '付款编码', index: 'payCode', width: 160 },
{ title: '邀请码', index: 'invitationCode', className: 'text-center', width: 130 },
{ title: '企业管理员', index: 'adminName', width: 150 },
{ title: '企业管理员', index: 'contactName', width: 150, format: item => (item.partnerType ? `${item.contactName}` : '') },
{ title: '手机号', index: 'contactMobile', className: 'text-center', width: 150 },
{ title: '类型', index: 'partnerType', className: 'text-center', width: 130, type: 'enum', enum: { 1: '企业', 2: '个人' } },
{ title: '注册渠道', index: 'source', type: 'enum', enum: { 1: '合伙人注册', 2: '平台添加' }, width: 130 },

View File

@ -123,7 +123,7 @@
</sv>
<sv label="身份证有效期" col="1">
<nz-date-picker [(ngModel)]="detailData.adminUserInfo.validStartTime" [nzDisabled]="!isEdit" nzPlaceHolder=" "
[nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit ? 'calendar' : ''" style="width: 100px" class="calendar">
[nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit ? 'calendar' : ''" style="width: 140px" class="calendar">
</nz-date-picker>
-
<ng-container
@ -131,7 +131,7 @@
<label style="padding-left: 11px">长期</label>
</ng-container>
<nz-date-picker [(ngModel)]="detailData.adminUserInfo.validEndTime" [nzDisabled]="!isEdit" nzPlaceHolder=" "
[nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit ? 'calendar' : ''" style="width: 100px" class="calendar">
[nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit ? 'calendar' : ''" style="width: 140px" class="calendar">
</nz-date-picker>
<ng-container *ngIf="isEdit">
<label nz-checkbox [ngModel]="!!!detailData.adminUserInfo.validEndTime"
@ -214,7 +214,7 @@
</sv>
<sv label="身份证有效期" col="1">
<nz-date-picker [(ngModel)]="detailData.legalPersonIdentity.validStartTime" [nzDisabled]="!isEdit"
nzPlaceHolder=" " [nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit ? 'calendar' : ''" style="width: 100px"
nzPlaceHolder=" " [nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit ? 'calendar' : ''" style="width: 140px"
class="calendar"></nz-date-picker>
-
<ng-container
@ -222,7 +222,7 @@
<label style="padding-left: 11px">长期</label>
</ng-container>
<nz-date-picker [(ngModel)]="detailData.legalPersonIdentity.validEndTime" [nzDisabled]="!isEdit" nzPlaceHolder=" "
[nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit ? 'calendar' : ''" style="width: 100px" class="calendar">
[nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit ? 'calendar' : ''" style="width: 140px" class="calendar">
</nz-date-picker>
<ng-container *ngIf="isEdit">
<label nz-checkbox [ngModel]="!!!detailData.legalPersonIdentity.validEndTime"

View File

@ -97,7 +97,7 @@
</sv>
<sv label="身份证有效期" col="1">
<nz-date-picker [(ngModel)]="detailData.adminUserInfo.validStartTime" [nzDisabled]="!isEdit" nzPlaceHolder=" "
[nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit ? 'calendar' : ''" style="width: 100px" class="calendar">
[nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit ? 'calendar' : ''" style="width: 140px" class="calendar">
</nz-date-picker>
-
<ng-container
@ -105,7 +105,7 @@
<label style="padding-left: 11px">长期</label>
</ng-container>
<nz-date-picker [(ngModel)]="detailData.adminUserInfo.validEndTime" [nzDisabled]="!isEdit" nzPlaceHolder=" "
[nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit ? 'calendar' : ''" style="width: 100px" class="calendar">
[nzBorderless]="!isEdit" [nzSuffixIcon]="isEdit ? 'calendar' : ''" style="width: 140px" class="calendar">
</nz-date-picker>
<ng-container *ngIf="isEdit">
<label nz-checkbox [ngModel]="!!!detailData.adminUserInfo.validEndTime"

View File

@ -31,7 +31,7 @@ export class PartnerListService extends ShipperBaseService {
// 查询合伙人修改渠道渠道销售记录
$api_get_personal_channel_list = '/api/mdc/partnerChannelRelLog/list/page';
// 查询客户关系列表-不分页
$api_get_enterprice_rel_list = '/api/mdc/EnterpriseRelLog/list';
$api_get_enterprice_rel_list = '/api/mdc/enterpriseRelLog/list';
// 校验合伙人是否可修改渠道销售 true:可以修改 false不可以修改
$api_check_partenr_change_channel = '/api/mdc/partner/updateChannelCheck';
// 根据手机号查询实名信息

View File

@ -928,10 +928,15 @@ export class SupplyManagementOnecarPublishComponent implements OnInit {
this.service.msgSrv.warning('起终点相同,请重新选择装卸货地址!');
return;
}
if (this.validateForm1.value.loadingTime < new Date()) {
let date1 = this.validateForm1.value.loadingTime
let date2 = new Date()
let min = date1.getMinutes()
date1.setMinutes(min+10)
if (date1 < date2 ) {
this.service.msgSrv.warning('装货时间必须大于当前时间!');
return;
}
if (this.validateForm1.value.loadingTime > this.validateForm1.value.unloadingTime) {
this.service.msgSrv.warning('装货时间不能大于卸货时间!');
return;

View File

@ -892,7 +892,11 @@ export class SupplyManagementReleasePublishComponent implements OnInit {
this.service.msgSrv.warning('起终点相同,请重新选择装卸货地址!');
return;
}
if (this.validateForm1.value.loadingTime < new Date()) {
let date1 = this.validateForm1.value.loadingTime
let date2 = new Date()
let min = date1.getMinutes()
date1.setMinutes(min+10)
if (date1 < date2 ) {
this.service.msgSrv.warning('装货时间必须大于当前时间!');
return;
}

View File

@ -404,7 +404,7 @@ export class CancellationInvoiceComponent implements OnInit {
},
{
text: '手工开票<br>',
iif: item => item.sts != '3',
iif: item => item.sts != '3' && item.sts != '4' ,
click: item => this.requestedAction(item)
}
// {

View File

@ -108,7 +108,7 @@
<ng-template st-row="vatmoney" let-item let-index="index">
{{ item.billLTypeLabel }}: {{ item.vatmoney |currency }}
</ng-template>
</st>vatmoney
</st>
</nz-tab>
<nz-tab nzTitle="发票明细">
<st #invoiceST [data]="service.$api_get_invoice_details" [columns]="invoiceColumns" size="small" bordered="true"

View File

@ -185,7 +185,7 @@ export class InvoiceDetailComponent implements OnInit {
private initOrderST(): STColumn[] {
return [
{ title: '订单号', index: 'billHCode', width: 180 },
{ title: '订单完成日期', index: 'billTime', type: 'date', width: 150 },
{ title: '订单完成日期', index: 'billfinTime', type: 'date', width: 150 },
{ title: '所属项目', index: 'projectIdName', width: 180 },
{ title: '订单类型', index: 'billTypeLabel', width: 120 },
{ title: '装货地', index: 'loadingfrom', width: 200 },

View File

@ -298,7 +298,7 @@ export class InvoiceRequestedDetailComponent implements OnInit {
return [
{ title: '', index: 'key', type: 'checkbox' },
{ title: '订单号', render: 'billHCode', width: 170 },
{ title: '订单完成日期', index: 'billTime', type: 'date', width: 150 },
{ title: '订单完成日期', index: 'billfinTime', type: 'date', width: 150 },
{ title: '开票状态', index: 'vatappStsLabel', width: 100 },
{ title: '所属项目', index: 'projectIdName', width: 140 },
{ title: '订单类型', index: 'billType', width: 100, type: 'enum', enum: { 1: '整车', 2: '大宗' } },

View File

@ -1,7 +1,7 @@
/*
* @Author: your name
* @Date: 2021-12-23 16:50:17
* @LastEditTime : 2022-01-26 10:36:10
* @LastEditTime : 2022-04-21 13:57:43
* @LastEditors : Shiming
* @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
@ -86,7 +86,7 @@ export class RequestedInvoiceModalComponent {
return [
{ title: '', index: 'key', type: 'checkbox' },
{ title: '订单号', index: 'billHCode', width: 150 },
{ title: '订单完成日期', index: 'billTime', type: 'date', width: 150 },
{ title: '订单完成日期', index: 'billfinTime', type: 'date', width: 150 },
{ title: '所属项目', index: 'projectIdName', width: 250 },
{ title: '订单类型', index: 'billTypeName', width: 90 },
{ title: '装货地', index: 'loadingfrom', width: 250 },

View File

@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2022-02-17 20:24:17
* @LastEditors : Shiming
* @LastEditTime : 2022-02-24 17:04:41
* @LastEditTime : 2022-04-21 15:28:21
* @FilePath : \\tms-obc-web\\src\\app\\routes\\usercenter\\components\\freight\\freight-config\\freight-config.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
@ -24,10 +24,10 @@
<button nz-button nzType="primary" [disabled]="false" acl (click)="exportList()"
[acl-ability]="['USERCENTER-FREIGHT-LIST-export']">导出</button>
<button nz-button [disabled]="false" (click)="resetSF()">重置</button>
<button nz-button nzType="link" (click)="expandToggle()">
<!-- <button nz-button nzType="link" (click)="expandToggle()">
{{ !_$expand ? '展开' : '收起' }}
<i nz-icon [nzType]="!_$expand ? 'down' : 'up'"></i>
</button>
</button> -->
</div>
</div>
</nz-card>

View File

@ -228,25 +228,6 @@ export class FreightConfigComponent implements OnInit {
asyncData: () => this.shipperservice.getNetworkFreightForwarder()
}
},
goodsSurchargeRatio: {
title: '货源单费率',
type: 'string',
ui: {
placeholder: '请输入',
showRequired: false
}
},
contractSurchargeRatio: {
title: '合同单费率',
type: 'string',
ui: {
placeholder: '请输入',
showRequired: false,
visibleIf: {
_$expand: (value: boolean) => value
}
}
},
createTime: {
title: '注册时间',
type: 'string',
@ -255,9 +236,6 @@ export class FreightConfigComponent implements OnInit {
format: 'yyyy-MM-dd',
placeholder: '请选择',
nzShowTime: true,
visibleIf: {
_$expand: (value: boolean) => value
}
} as SFDateWidgetSchema
}
}

View File

@ -79,7 +79,6 @@ export class VehicleComponentsAuditDetailComponent implements OnInit, OnDestroy
{
text: '上传协议',
click: _record => this.updateEvaluate(_record),
iif: item => item.auditStatusEnum == -1
}
]
}

View File

@ -1,7 +1,7 @@
<!--
* @Author: your name
* @Date: 2021-12-03 11:10:14
* @LastEditTime : 2022-03-28 11:15:15
* @LastEditTime : 2022-04-21 17:09:45
* @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
@ -29,7 +29,7 @@
<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.expend-options]="_$expand" class="text-right">
<div nz-col [nzSpan]="_$expand ? 24 : 6" class="text-right">
<button nz-button nzType="primary" [nzLoading]="service.http.loading" (click)="search()" acl [acl-ability]="['WAYBILL-VEHICLE-search']">查询</button>
<button nz-button nzType="primary" [disabled]="false" acl [acl-ability]="['WAYBILL-VEHICLE-export']" (click)="exprot()">导出</button>
<button nz-button [disabled]="false" (click)="resetSF()">重置</button>

View File

@ -1,8 +1,16 @@
:host ::ng-deep{
p{
margin-bottom: 0
}
:host ::ng-deep{
::ng-deep nz-range-picker{
width: 100%;
}
}
p{
margin-bottom: 0
}
.left_btn {
width: 50px;
height: 32px;
padding-left: 8px;
line-height:32px;
background-color: #d7d7d7;
}
}

View File

@ -343,14 +343,14 @@ export class ShipperBaseService extends BaseService {
* @returns
*/
getChannel(params = {}, containerAll = false) {
return this.request(this.$api_get_channel, params, 'POST').pipe(
return this.request(this.$api_get_channel, params).pipe(
map(res => {
if (res) {
const obj = [];
if (containerAll) {
obj.push({ label: '全部', value: '' });
}
return [...obj, ...res.map((m: any) => ({ label: `${m.employeeVO?.empName}/${m.employeeVO?.mobile}`, value: m.id }))];
return [...obj, ...res.map((m: any) => ({ label: `${m.name}/${m.telephone}`, value: m.id }))];
} else {
return [];
}