+
已选择
{{ selectedRows.length }} 条数据
-
+
diff --git a/src/app/routes/datatable/reporting/components/order-reporting/order-reporting.component.less b/src/app/routes/datatable/reporting/components/order-reporting/order-reporting.component.less
new file mode 100644
index 00000000..6009fbbf
--- /dev/null
+++ b/src/app/routes/datatable/reporting/components/order-reporting/order-reporting.component.less
@@ -0,0 +1,5 @@
+:host {
+ .text-black {
+ color: #000;
+ }
+}
diff --git a/src/app/routes/datatable/reporting/components/order-reporting/order-reporting.component.ts b/src/app/routes/datatable/reporting/components/order-reporting/order-reporting.component.ts
index 28e93168..0c7ef2c2 100644
--- a/src/app/routes/datatable/reporting/components/order-reporting/order-reporting.component.ts
+++ b/src/app/routes/datatable/reporting/components/order-reporting/order-reporting.component.ts
@@ -1,15 +1,17 @@
import { Component, OnInit, ViewChild } from '@angular/core';
-import { Router, ActivatedRoute } from '@angular/router';
+import { ActivatedRoute, Router } from '@angular/router';
import { STColumn, STComponent, STData } from '@delon/abc/st';
import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/form';
-import { ModalHelper, _HttpClient } from '@delon/theme';
import { ShipperBaseService } from '@shared';
import { NzModalService } from 'ng-zorro-antd/modal';
import { ReportingService } from '../../services/reporting.service';
+import { DatatableReportingUploadSettingComponent } from '../upload-setting/upload-setting.component';
+import { DatatableReportingVerifyResultComponent } from '../verify-result/verify-result.component';
@Component({
selector: 'app-datatable-order-reporting',
templateUrl: './order-reporting.component.html',
+ styleUrls: ['./order-reporting.component.less']
})
export class DatatableOrderReportingComponent implements OnInit {
_$expand = false;
@@ -226,7 +228,7 @@ export class DatatableOrderReportingComponent implements OnInit {
],
ui: {
placeholder: '请选择',
-
+ widget: 'select',
visibleIf: {
_$expand: (value: boolean) => value,
},
@@ -242,7 +244,7 @@ export class DatatableOrderReportingComponent implements OnInit {
],
ui: {
placeholder: '请选择',
-
+ widget: 'select',
visibleIf: {
_$expand: (value: boolean) => value,
},
@@ -261,11 +263,11 @@ export class DatatableOrderReportingComponent implements OnInit {
*/
initST() {
this.columns = [
- { title: '', type: 'checkbox', className: 'text-center', width: '80px', },
- { title: '订单状态', index: 'name', className: 'text-center', width: '120px', },
- { title: '司机状态', index: 'name', className: 'text-center', width: '120px', },
- { title: '车辆状态', index: 'name', className: 'text-center', width: '120px', },
- { title: '本地校验', render: 'orderSn', className: 'text-center', width: '180px', },
+ { title: '', type: 'checkbox', className: 'text-center', width: '60px', },
+ { title: '订单状态', render: 'orderStatus', className: 'text-center', width: '120px', },
+ { title: '司机状态', render: 'driverStatus', className: 'text-center', width: '120px', },
+ { title: '车辆状态', render: 'carStatus', className: 'text-center', width: '120px', },
+ { title: '本地校验', render: 'localValid', className: 'text-center', width: '120px', },
{
title: '订单号',
render: 'billComplianceVOS',
@@ -278,71 +280,50 @@ export class DatatableOrderReportingComponent implements OnInit {
title: '网络货运人',
render: 'serviceType',
className: 'text-center',
- width: '120px',
+ width: '180px',
},
- { title: '统一社会信用代码', index: 'loadingPlace', render: 'loadingPlace', className: 'text-center', width: '300px' },
- { title: '业务类型', index: 'dischargePlace', render: 'dischargePlace', className: 'text-center', width: '300px' },
- { title: '运单生成时间', render: 'goodsInfoVOList', className: 'text-center', width: '200px' },
- { title: '发货时间', render: 'driver', className: 'text-center', width: '150px' },
- { title: '收货时间', render: 'payeeName', className: 'text-center', width: '150px' },
+ { title: '统一社会信用代码', index: 'loadingPlace', render: 'loadingPlace', className: 'text-center', width: '200px' },
+ { title: '业务类型', index: 'dischargePlace', render: 'dischargePlace', className: 'text-center', width: '120px' },
+ { title: '运单生成时间', render: 'goodsInfoVOList', className: 'text-center', width: '180px' },
+ { title: '发货时间', render: 'driver', className: 'text-center', width: '180px' },
+ { title: '收货时间', render: 'payeeName', className: 'text-center', width: '180px' },
{ title: '托运人名称', render: 'transportInfo', className: 'text-center', width: '250px' },
- { title: '托运人统一社会信用代码', index: 'loadingPlace', render: 'loadingPlace', className: 'text-center', width: '300px' },
- { title: '装货地址', index: 'dischargePlace', render: 'dischargePlace', className: 'text-center', width: '300px' },
- { title: '运单生成时间', render: 'goodsInfoVOList', className: 'text-center', width: '200px' },
+ { title: '托运人统一社会信用代码', index: 'loadingPlace', render: 'loadingPlace', className: 'text-center', width: '200px' },
+ { title: '装货地址', index: 'dischargePlace', render: 'dischargePlace', className: 'text-center', width: '200px' },
{ title: '收货方名称', render: 'driver', className: 'text-center', width: '150px' },
{ title: '收货地址', render: 'payeeName', className: 'text-center', width: '150px' },
- { title: '运费金额', render: 'transportInfo', className: 'text-center', width: '250px' },
+ { title: '运费金额', render: 'amount', className: 'text-center', width: '250px' },
{ title: '车牌号', render: 'payeeName', className: 'text-center', width: '150px' },
{ title: '车牌颜色', render: 'transportInfo', className: 'text-center', width: '250px' },
{ title: '司机姓名', render: 'payeeName', className: 'text-center', width: '150px' },
- { title: '司机手机号码', render: 'transportInfo', className: 'text-center', width: '250px' },
+ { title: '司机手机号码', render: 'transportInfo', className: 'text-center', width: '200px' },
{ title: '司机身份证号', render: 'payeeName', className: 'text-center', width: '150px' },
- { title: '货物信息', render: 'transportInfo', className: 'text-center', width: '250px' },
+ { title: '货物信息', render: 'transportInfo', className: 'text-center', width: '180px' },
{ title: '实际承运人名称', render: 'payeeName', className: 'text-center', width: '150px' },
- { title: '实际承运人证件号码', render: 'transportInfo', className: 'text-center', width: '250px' },
+ { title: '实际承运人证件号码', render: 'transportInfo', className: 'text-center', width: '200px' },
{ title: '实际承运人道路运输许可证号', render: 'payeeName', className: 'text-center', width: '150px' },
{ title: '车辆轨迹', render: 'transportInfo', className: 'text-center', width: '250px' },
{ title: '司机轨迹', render: 'payeeName', className: 'text-center', width: '150px' },
- { title: '上传次数', render: 'transportInfo', className: 'text-center', width: '250px' },
- { title: '上传时间', render: 'transportInfo', className: 'text-center', width: '250px' },
- {
- title: '操作',
- width: '200px',
- className: 'text-center',
- buttons: [
- // { text: '编辑', click: (_record: any) => this.appeal(_record) },
- {
- text: '申诉',
- // click: (record) => this.appeal(record),
- iif: (_record) => _record.representationsStatus === '1',
- acl: { 'ability': ['RiskOrder-Appeal'] }
- },
- {
- text: '撤销申诉',
- pop: {
- title: '是否确定立即撤销申诉?',
- okType: 'danger',
- },
- click: (record) => this.recall(record),
- iif: (_record) => _record.representationsStatus === '2',
- acl: { 'ability': ['RiskOrder-CancleAppeal'] }
- },
- { text: '详情', click: (_record: any) => this.view(_record), acl: { 'ability': ['RiskOrder-Detail'] } },
- ],
- },
+ { title: '上传次数', render: 'transportInfo', className: 'text-center', width: '150px' },
+ { title: '上传时间', render: 'transportInfo', className: 'text-center', width: '180px' },
];
}
/**
- * 删除单个实例
+ *撤销
* @param record 记录实例
*/
- recall(record: STData) {
- this.service.request(this.service.$api_recall_reporting, { id: record?.id }).subscribe((res: any) => {
+ recall() {
+ if (this.selectedRows.length === 0) {
+ this.openWainingModal('请选择需要撤回的数据');
+ return;
+ }
+
+ this.service.request(this.service.$api_recall_reporting, { rows: this.selectedRows }).subscribe((res: any) => {
if (res) {
- this.search({ representationsStatus: '' });
+ this.search();
}
})
@@ -390,7 +371,10 @@ export class DatatableOrderReportingComponent implements OnInit {
* 上传
*/
upload() {
-
+ if (this.selectedRows.length === 0) {
+ this.openWainingModal('请选择需要上传的数据');
+ return;
+ }
}
@@ -399,10 +383,46 @@ export class DatatableOrderReportingComponent implements OnInit {
* @param params 上传设置
*/
uploadSetting() {
-
+ const modalRef = this.modal.create({
+ nzTitle: '上传设置',
+ nzWidth: 600,
+ nzContent: DatatableReportingUploadSettingComponent,
+ nzComponentParams: {},
+ nzFooter: null
+ });
+ modalRef.afterClose.subscribe(res => {
+ })
}
- search(params = {}) {
+ /**
+ * 查看校验结果
+ */
+ viewResult(item: any) {
+ const modalRef = this.modal.create({
+ nzTitle: '校验结果',
+ nzWidth: 1200,
+ nzContent: DatatableReportingVerifyResultComponent,
+ nzComponentParams: {
+ record: item
+ },
+ nzFooter: null
+ });
+ modalRef.afterClose.subscribe(res => {
+ })
+ }
+
+ /**
+ * 查看监管审核结果
+ */
+ viewAuditResult(record: any) {
+ if (record?.billStatus !== '2') {
+ return;
+ }
+ this.openWainingModal('监管审核结果', record?.result)
+ }
+
+
+ search() {
this.st.load(1);
}
@@ -413,4 +433,13 @@ export class DatatableOrderReportingComponent implements OnInit {
this.service.exportStart(this.sf?.value, this.service.$api_async_export_order_reporting_list);
}
+ openWainingModal(content: string, title = '提示') {
+ this.modal.warning({
+ nzMask: false,
+ nzTitle: title,
+ nzContent: content,
+ })
+ }
+
+
}
diff --git a/src/app/routes/datatable/reporting/components/upload-setting/upload-setting.component.html b/src/app/routes/datatable/reporting/components/upload-setting/upload-setting.component.html
new file mode 100644
index 00000000..a4f5ae6e
--- /dev/null
+++ b/src/app/routes/datatable/reporting/components/upload-setting/upload-setting.component.html
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/src/app/routes/datatable/reporting/components/upload-setting/upload-setting.component.spec.ts b/src/app/routes/datatable/reporting/components/upload-setting/upload-setting.component.spec.ts
new file mode 100644
index 00000000..aeb5cf2c
--- /dev/null
+++ b/src/app/routes/datatable/reporting/components/upload-setting/upload-setting.component.spec.ts
@@ -0,0 +1,24 @@
+import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
+import { DatatableReportingUploadSettingComponent } from './upload-setting.component';
+
+describe('DatatableReportingUploadSettingComponent', () => {
+ let component: DatatableReportingUploadSettingComponent;
+ let fixture: ComponentFixture
;
+
+ beforeEach(waitForAsync(() => {
+ TestBed.configureTestingModule({
+ declarations: [DatatableReportingUploadSettingComponent]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(DatatableReportingUploadSettingComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/routes/datatable/reporting/components/upload-setting/upload-setting.component.ts b/src/app/routes/datatable/reporting/components/upload-setting/upload-setting.component.ts
new file mode 100644
index 00000000..b9f2d909
--- /dev/null
+++ b/src/app/routes/datatable/reporting/components/upload-setting/upload-setting.component.ts
@@ -0,0 +1,109 @@
+import { Component, OnInit } from '@angular/core';
+import { SFSchema, SFUISchema } from '@delon/form';
+import { NzModalRef } from 'ng-zorro-antd/modal';
+import { ReportingService } from '../../services/reporting.service';
+
+@Component({
+ selector: 'app-datatable-upload-setting',
+ templateUrl: './upload-setting.component.html',
+})
+export class DatatableReportingUploadSettingComponent implements OnInit {
+ record: any = {};
+ i: any = {};
+ schema!: SFSchema;
+ ui!: SFUISchema;
+
+ constructor(
+ private modal: NzModalRef,
+ public service: ReportingService
+ ) { }
+
+ ngOnInit(): void {
+ this.initSF();
+ // this.loadData();
+ }
+
+ /**
+ * 初始化查询表单
+ */
+ initSF() {
+ this.schema = {
+ properties: {
+ no: {
+ type: 'string',
+ title: '订单数据',
+ enum: [
+ {
+ label: '手动上传',
+ value: '1'
+ },
+ {
+ label: '自动上传',
+ value: '2'
+ }
+ ],
+ description: '开启自动上传后,订单将在支付完成且风险单校验通过后自动上传',
+ ui: {
+ widget: 'radio',
+
+ }
+ },
+ owner: {
+ type: 'string',
+ title: '资金数据',
+ enum: [
+ {
+ label: '手动上传',
+ value: '1'
+ },
+ {
+ label: '自动上传',
+ value: '2'
+ }
+ ],
+ description: '开启自动上传后,订单将在支付完成且风险单校验通过后自动上传',
+ ui: {
+ widget: 'radio',
+
+ }
+ },
+ },
+ required: ['owner', 'no'],
+ }
+ this.ui = {
+ '*': {
+ spanLabelFixed: 100,
+ grid: { span: 24 },
+ },
+ };
+ }
+
+ /**
+ * 获取设置数据
+ */
+ loadData() {
+ this.service.request(this.service.$api_get_upload_setting, {}).subscribe(res => {
+ if (res) {
+ this.i = res;
+
+ }
+ })
+ }
+
+ /**
+ * 修改
+ * @param value
+ */
+ save(value: any): void {
+ this.service.request(this.service.$api_upload_setting_save, { ...value }).subscribe(res => {
+ if (res) {
+ this.service.msgSrv.success('保存成功');
+ this.modal.close(true);
+ }
+ })
+ }
+
+ close(): void {
+ this.modal.destroy();
+ }
+}
diff --git a/src/app/routes/datatable/reporting/components/verify-result/verify-result.component.html b/src/app/routes/datatable/reporting/components/verify-result/verify-result.component.html
new file mode 100644
index 00000000..5136cd37
--- /dev/null
+++ b/src/app/routes/datatable/reporting/components/verify-result/verify-result.component.html
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
{{item.expenseName}}:{{item.price | currency}}
+
+
+
+
+
+
diff --git a/src/app/routes/datatable/reporting/components/verify-result/verify-result.component.spec.ts b/src/app/routes/datatable/reporting/components/verify-result/verify-result.component.spec.ts
new file mode 100644
index 00000000..48b1e9e5
--- /dev/null
+++ b/src/app/routes/datatable/reporting/components/verify-result/verify-result.component.spec.ts
@@ -0,0 +1,24 @@
+import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
+import { DatatableReportingVerifyResultComponent } from './verify-result.component';
+
+describe('DatatableReportingVerifyResultComponent', () => {
+ let component: DatatableReportingVerifyResultComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(waitForAsync(() => {
+ TestBed.configureTestingModule({
+ declarations: [DatatableReportingVerifyResultComponent]
+ })
+ .compileComponents();
+ }));
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(DatatableReportingVerifyResultComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/routes/datatable/reporting/components/verify-result/verify-result.component.ts b/src/app/routes/datatable/reporting/components/verify-result/verify-result.component.ts
new file mode 100644
index 00000000..3d52b397
--- /dev/null
+++ b/src/app/routes/datatable/reporting/components/verify-result/verify-result.component.ts
@@ -0,0 +1,85 @@
+import { Component, OnInit, ViewChild } from '@angular/core';
+import { Router } from '@angular/router';
+import { STColumn, STComponent } from '@delon/abc/st';
+import { SFSchema } from '@delon/form';
+import { ModalHelper, _HttpClient } from '@delon/theme';
+import { NzModalRef } from 'ng-zorro-antd/modal';
+import { ReportingService } from '../../services/reporting.service';
+
+@Component({
+ selector: 'app-datatable-verify-result',
+ templateUrl: './verify-result.component.html',
+})
+export class DatatableReportingVerifyResultComponent implements OnInit {
+ url = `/user`;
+ searchSchema: SFSchema = {
+ properties: {
+ no: {
+ type: 'string',
+ title: '编号'
+ }
+ }
+ };
+ @ViewChild('st') private readonly st!: STComponent;
+ columns: STColumn[] = [];
+ record: any = {}
+ tabs: any[] = [
+ { name: '订单信息', value: '1' },
+ { name: '司机信息', value: '2' },
+ { name: '车辆信息', value: '3' },
+ ];
+
+ get reqParams() {
+ return {};
+ }
+ constructor(public service: ReportingService, private modalRef: NzModalRef, public router: Router) {
+
+ }
+
+ ngOnInit(): void {
+ this.initST();
+ }
+
+ /**
+ * 初始化数据列表
+ */
+ initST() {
+ this.columns = [
+ { title: '序号', type: 'no', className: 'text-center', width: '60px', },
+ { title: '监管平台字段', index: 'orderStatus', className: 'text-center', width: '120px', },
+ { title: '系统字段', index: 'orderStatus', className: 'text-center', width: '100px', },
+ { title: '归属模块', index: 'orderStatus', className: 'text-center', width: '120px', },
+ { title: '是否必填', index: 'orderStatus', className: 'text-center', width: '100px', },
+ { title: '上传值', index: 'orderStatus', className: 'text-center', width: '150px', },
+ { title: '本地校验', index: 'orderStatus', className: 'text-center', width: '100px', },
+ { title: '错误内容', index: 'orderStatus', className: 'text-center', width: '150px', },
+ ]
+ }
+
+
+ add(): void {
+ // this.modal
+ // .createStatic(FormEditComponent, { i: { id: 0 } })
+ // .subscribe(() => this.st.reload());
+ }
+
+ selectTab(e: any) {
+
+ }
+
+ update() {
+ if (this.record?.billType === '1') {
+ window.open(location.origin + `/#/order-management/vehicle-detailChange/${this.record?.id}`)
+
+ } else if (this.record.billType === '2') {
+ window.open(location.origin + `/#/order-management/bulk-detailChange/${this.record?.id}`);
+ }
+
+
+ }
+ close(): void {
+ this.modalRef.destroy();
+ }
+
+
+}
diff --git a/src/app/routes/datatable/reporting/services/reporting.service.ts b/src/app/routes/datatable/reporting/services/reporting.service.ts
index 99a1cad7..1343c918 100644
--- a/src/app/routes/datatable/reporting/services/reporting.service.ts
+++ b/src/app/routes/datatable/reporting/services/reporting.service.ts
@@ -6,9 +6,11 @@ import { BaseService } from '@shared';
})
export class ReportingService extends BaseService {
- $api_order_reporting_page = ``; // 订单上报列表
+ $api_order_reporting_page = `/api/sdc/billOperate/listWholePage`; // 订单上报列表
$api_recall_reporting = ``; // 撤回
$api_async_export_order_reporting_list = ``; // 导出订单上报
+ $api_get_upload_setting = ``; // 修改上传设置
+ $api_upload_setting_save = ``; // 修改上传设置
constructor(public injector: Injector) {
super(injector);
}
diff --git a/src/app/routes/datatable/services/data.service.ts b/src/app/routes/datatable/services/data.service.ts
index 6cdb0e7f..95bc318c 100644
--- a/src/app/routes/datatable/services/data.service.ts
+++ b/src/app/routes/datatable/services/data.service.ts
@@ -23,10 +23,44 @@ export class DataService extends BaseService {
// 查询运营报表
$api_listOperationalReportPage = `/api/sdc/report/listOperationalReportPage`;
+ // 查询业绩报表
+ $api_listPerformanceReportPage = `/api/sdc/report/listPerformanceReportPage`;
// 运营报表运单状态分布
$api_operationalReportWaybillStatusDistribution = `/api/sdc/report/operationalReportWaybillStatusDistribution`;
-
+ // 获取网络货运人
+ $api_get_network_freight_forwarder_list = `/api/mdc/cuc/networkTransporter/findAll`;
+ // 业绩报表柱状图
+ $api_performanceReportHistogram = `/api/sdc/report/performanceReportHistogram`;
constructor(public injector: Injector) {
super(injector);
}
+
+ /**
+* 获取网络货运人
+* @returns
+*/
+ getNetworkFreightForwarder(params = {}, containerAll = false) {
+ return this.request(this.$api_get_network_freight_forwarder_list, params).pipe(
+ map((res: any) => {
+ if (!res) {
+ return [];
+ }
+ const list = res.map((item: any) => {
+ return {
+ label: item.enterpriseName,
+ value: item.id
+ };
+ });
+ const obj = [];
+ if (containerAll) {
+ obj.push({ label: '全部', value: '' });
+ }
+ return [...obj, ...list];
+ })
+ );
+ }
+
+ getPerformanceReportHistogram(params = {}){
+ return this.request(this.$api_performanceReportHistogram, params)
+ }
}
diff --git a/src/app/routes/order-management/components/bulk-detail/bulk-detail.component.html b/src/app/routes/order-management/components/bulk-detail/bulk-detail.component.html
index 50746e93..464766ad 100644
--- a/src/app/routes/order-management/components/bulk-detail/bulk-detail.component.html
+++ b/src/app/routes/order-management/components/bulk-detail/bulk-detail.component.html
@@ -4,7 +4,7 @@
* @Author : Shiming
* @Date : 2021-12-06 20:20:26
* @LastEditors : Shiming
- * @LastEditTime : 2022-03-29 11:09:00
+ * @LastEditTime : 2022-03-29 14:30:12
* @FilePath : \\tms-obc-web\\src\\app\\routes\\order-management\\components\\bulk-detail\\bulk-detail.component.html
* Copyright (C) 2022 huzhenhong. All rights reserved.
-->
@@ -222,7 +222,7 @@
-