From a51b724288807447a5db960861a850f71afec761 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E6=99=93=E4=BA=91?= Date: Tue, 29 Mar 2022 16:44:54 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=B8=8A=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datatable/datatable-routing.module.ts | 4 +- src/app/routes/datatable/datatable.module.ts | 6 +- .../order-reporting.component.html | 52 ++----- .../order-reporting.component.less | 5 + .../order-reporting.component.ts | 141 +++++++++++------- .../upload-setting.component.html | 8 + .../upload-setting.component.spec.ts | 24 +++ .../upload-setting.component.ts | 109 ++++++++++++++ .../verify-result.component.html | 22 +++ .../verify-result.component.spec.ts | 24 +++ .../verify-result/verify-result.component.ts | 85 +++++++++++ .../reporting/services/reporting.service.ts | 4 +- 12 files changed, 385 insertions(+), 99 deletions(-) create mode 100644 src/app/routes/datatable/reporting/components/order-reporting/order-reporting.component.less create mode 100644 src/app/routes/datatable/reporting/components/upload-setting/upload-setting.component.html create mode 100644 src/app/routes/datatable/reporting/components/upload-setting/upload-setting.component.spec.ts create mode 100644 src/app/routes/datatable/reporting/components/upload-setting/upload-setting.component.ts create mode 100644 src/app/routes/datatable/reporting/components/verify-result/verify-result.component.html create mode 100644 src/app/routes/datatable/reporting/components/verify-result/verify-result.component.spec.ts create mode 100644 src/app/routes/datatable/reporting/components/verify-result/verify-result.component.ts diff --git a/src/app/routes/datatable/datatable-routing.module.ts b/src/app/routes/datatable/datatable-routing.module.ts index 6f84e112..9bab4e2a 100644 --- a/src/app/routes/datatable/datatable-routing.module.ts +++ b/src/app/routes/datatable/datatable-routing.module.ts @@ -2,11 +2,13 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; import { DatatableDataindexComponent } from './dataindex/dataindex.component'; import { DatatableOrderReportingComponent } from './reporting/components/order-reporting/order-reporting.component'; +import { DatatableReportingVerifyResultComponent } from './reporting/components/verify-result/verify-result.component'; const routes: Routes = [ { path: 'dataindex', component: DatatableDataindexComponent }, - { path: 'reporting/order', component: DatatableOrderReportingComponent }]; + { path: 'reporting/order', component: DatatableOrderReportingComponent }, + { path: 'verify-result', component: DatatableReportingVerifyResultComponent }]; @NgModule({ imports: [RouterModule.forChild(routes)], diff --git a/src/app/routes/datatable/datatable.module.ts b/src/app/routes/datatable/datatable.module.ts index e6b0e997..53965896 100644 --- a/src/app/routes/datatable/datatable.module.ts +++ b/src/app/routes/datatable/datatable.module.ts @@ -3,10 +3,14 @@ import { SharedModule, SHARED_G2_MODULES } from '@shared'; import { DatatableRoutingModule } from './datatable-routing.module'; import { DatatableDataindexComponent } from './dataindex/dataindex.component'; import { DatatableOrderReportingComponent } from './reporting/components/order-reporting/order-reporting.component'; +import { DatatableReportingUploadSettingComponent } from './reporting/components/upload-setting/upload-setting.component'; +import { DatatableReportingVerifyResultComponent } from './reporting/components/verify-result/verify-result.component'; const COMPONENTS: Type[] = [ DatatableDataindexComponent, - DatatableOrderReportingComponent]; + DatatableOrderReportingComponent, + DatatableReportingUploadSettingComponent, + DatatableReportingVerifyResultComponent]; @NgModule({ imports: [ diff --git a/src/app/routes/datatable/reporting/components/order-reporting/order-reporting.component.html b/src/app/routes/datatable/reporting/components/order-reporting/order-reporting.component.html index 7724c122..e55d1e52 100644 --- a/src/app/routes/datatable/reporting/components/order-reporting/order-reporting.component.html +++ b/src/app/routes/datatable/reporting/components/order-reporting/order-reporting.component.html @@ -29,57 +29,29 @@ [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, 50, 100] }" [loading]="false"> - - {{item.billCode}} + + {{item?.billStatusLabel}} + {{item?.billStatusLabel}} + - -
-
{{item.expenseName}}:{{item.price | currency}}
-
+ + + {{item?.billStatusLabel}} + {{item?.billStatusLabel}} - -
{{ address }}
-
- -
{{ address }}
-
- -
-
货物名称 : {{item.goodsName}}
-
重量/体积 : {{item.weight}}/{{item.volume}}
-
车型/车长 :{{item.carModelLabel}}/{{item.carLengthLabel}}
-
-
- -
{{item.driverName}}
-
{{item.driverPhone}}
-
{{item.carNo}}
-
- -
{{item.payeeName}}
-
{{item.payeePhone}}
-
- -
创建时间:{{item.createTime}}
-
装货时间:{{item.loadTime}}
-
卸货时间:{{item.unloadTime}}
-
- -
{{item?.complianceName}}
-
- -
{{item?.billTypeLabel}} ({{item?.serviceTypeLabel}})
+ +
{{item?.amount | currency :' '}}
-
+
已选择 {{ 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); } From 28087d6363e1f9453c24fe7da4af871834b0ad32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E6=99=93=E4=BA=91?= Date: Tue, 29 Mar 2022 16:51:36 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E8=B5=84=E9=87=91=E4=B8=8A=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datatable/datatable-routing.module.ts | 2 + src/app/routes/datatable/datatable.module.ts | 4 +- .../fund-reporting.component.html | 57 +++ .../fund-reporting.component.less | 5 + .../fund-reporting.component.spec.ts | 24 + .../fund-reporting.component.ts | 445 ++++++++++++++++++ 6 files changed, 536 insertions(+), 1 deletion(-) create mode 100644 src/app/routes/datatable/reporting/components/fund-reporting/fund-reporting.component.html create mode 100644 src/app/routes/datatable/reporting/components/fund-reporting/fund-reporting.component.less create mode 100644 src/app/routes/datatable/reporting/components/fund-reporting/fund-reporting.component.spec.ts create mode 100644 src/app/routes/datatable/reporting/components/fund-reporting/fund-reporting.component.ts diff --git a/src/app/routes/datatable/datatable-routing.module.ts b/src/app/routes/datatable/datatable-routing.module.ts index ece4c610..ace2f993 100644 --- a/src/app/routes/datatable/datatable-routing.module.ts +++ b/src/app/routes/datatable/datatable-routing.module.ts @@ -7,6 +7,7 @@ import { DatatableDriverComponent } from './components/customtable/driver/driver import { DatatableOperationtableComponent } from './components/operationtable/operationtable.component'; import { DatatableOrderReportingComponent } from './reporting/components/order-reporting/order-reporting.component'; import { DatatableDataindexComponent } from './components/dataindex/dataindex.component'; +import { DatatableFundReportingComponent } from './reporting/components/fund-reporting/fund-reporting.component'; const routes: Routes = [ { path: 'dataindex', component: DatatableDataindexComponent }, @@ -16,6 +17,7 @@ const routes: Routes = [ { path: 'driver', component: DatatableDriverComponent }, { path: 'operationtable', component: DatatableOperationtableComponent }, { path: 'reporting/order', component: DatatableOrderReportingComponent }, + { path: 'reporting/fund', component: DatatableFundReportingComponent } ]; diff --git a/src/app/routes/datatable/datatable.module.ts b/src/app/routes/datatable/datatable.module.ts index c9b85c4a..d42018af 100644 --- a/src/app/routes/datatable/datatable.module.ts +++ b/src/app/routes/datatable/datatable.module.ts @@ -11,6 +11,7 @@ import { DatatableOrderReportingComponent } from './reporting/components/order-r import { DatatableDataindexComponent } from './components/dataindex/dataindex.component'; import { DatatableReportingUploadSettingComponent } from './reporting/components/upload-setting/upload-setting.component'; import { DatatableReportingVerifyResultComponent } from './reporting/components/verify-result/verify-result.component'; +import { DatatableFundReportingComponent } from './reporting/components/fund-reporting/fund-reporting.component'; const COMPONENTS: Type[] = [ DatatableDataindexComponent, @@ -22,7 +23,8 @@ const COMPONENTS: Type[] = [ OperationtablePieComponent, DatatableOrderReportingComponent, DatatableReportingUploadSettingComponent, - DatatableReportingVerifyResultComponent + DatatableReportingVerifyResultComponent, + DatatableFundReportingComponent ]; @NgModule({ diff --git a/src/app/routes/datatable/reporting/components/fund-reporting/fund-reporting.component.html b/src/app/routes/datatable/reporting/components/fund-reporting/fund-reporting.component.html new file mode 100644 index 00000000..e55d1e52 --- /dev/null +++ b/src/app/routes/datatable/reporting/components/fund-reporting/fund-reporting.component.html @@ -0,0 +1,57 @@ + + + + +
+
+ +
+
+ + + + +
+
+
+ + + + + + + + + + {{item?.billStatusLabel}} + {{item?.billStatusLabel}} + + + + + {{item?.billStatusLabel}} + {{item?.billStatusLabel}} + + +
{{item?.amount | currency :' '}}
+
+
+
+ +
+
+ 已选择 + {{ selectedRows.length }} 条数据 +
+ + + +
+
diff --git a/src/app/routes/datatable/reporting/components/fund-reporting/fund-reporting.component.less b/src/app/routes/datatable/reporting/components/fund-reporting/fund-reporting.component.less new file mode 100644 index 00000000..6009fbbf --- /dev/null +++ b/src/app/routes/datatable/reporting/components/fund-reporting/fund-reporting.component.less @@ -0,0 +1,5 @@ +:host { + .text-black { + color: #000; + } +} diff --git a/src/app/routes/datatable/reporting/components/fund-reporting/fund-reporting.component.spec.ts b/src/app/routes/datatable/reporting/components/fund-reporting/fund-reporting.component.spec.ts new file mode 100644 index 00000000..fb500388 --- /dev/null +++ b/src/app/routes/datatable/reporting/components/fund-reporting/fund-reporting.component.spec.ts @@ -0,0 +1,24 @@ +import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; +import { DatatableFundReportingComponent } from './fund-reporting.component'; + +describe('DatatableFundReportingComponent', () => { + let component: DatatableFundReportingComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [DatatableFundReportingComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DatatableFundReportingComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/routes/datatable/reporting/components/fund-reporting/fund-reporting.component.ts b/src/app/routes/datatable/reporting/components/fund-reporting/fund-reporting.component.ts new file mode 100644 index 00000000..e817b130 --- /dev/null +++ b/src/app/routes/datatable/reporting/components/fund-reporting/fund-reporting.component.ts @@ -0,0 +1,445 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import { STColumn, STComponent, STData } from '@delon/abc/st'; +import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/form'; +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-fund-reporting', + templateUrl: './fund-reporting.component.html', + styleUrls: ['./fund-reporting.component.less'] +}) +export class DatatableFundReportingComponent implements OnInit { + _$expand = false; + ui!: SFUISchema; + schema!: SFSchema; + columns!: STColumn[]; + @ViewChild('st', { static: false }) st!: STComponent; + @ViewChild('sf', { static: false }) sf!: SFComponent; + tabType!: string; + tabs: any[] = [ + { name: '待上传', value: '1' }, + { name: '上传中', value: '2' }, + { name: '已上传', value: '3' }, + { name: '异常', value: '4' }, + { name: '全部', value: '' } + ]; + selectedIndex = ''; //选择的项目 + serviceTel = ''; + constructor( + public service: ReportingService, + private router: Router, + private ar: ActivatedRoute, + private modal: NzModalService, + public shipperSrv: ShipperBaseService + ) { + } + + /** + * 查询字段个数 + */ + get queryFieldCount(): number { + return Object.keys(this.schema?.properties || {}).length; + } + + /** + * 查询参数 + */ + get reqParams() { + const params = Object.assign({}, this.sf?.value || {}, { + representationsStatus: this.selectedIndex, + }); + delete params._$expand; + return { ...params }; + } + + /** + * 选中行 + */ + get selectedRows() { + return this.st?.list.filter((item: any) => item.checked) || []; + } + + /** + * 伸缩查询条件 + */ + expandToggle() { + this._$expand = !this._$expand; + this.sf?.setValue('/_$expand', this._$expand); + } + + /** + * 重置表单 + */ + resetSF() { + this.sf.reset(); + this._$expand = false; + } + /** + * 程序初始化入口 + */ + ngOnInit() { + this.initSF(); + this.initST(); + } + + /** + * 初始化查询表单 + */ + initSF() { + this.schema = { + properties: { + _$expand: { type: 'boolean', ui: { hidden: true } }, + billCode: { title: '订单号', type: 'string', ui: { placeholder: '请输入' } }, + resourceCode: { + type: 'string', + title: '运单号', + ui: { + placeholder: '请输入', + }, + }, + enterpriseInfoId: { + title: '网络货运人', + type: 'string', + ui: { + placeholder: '请选择', + widget: 'select', + asyncData: () => this.shipperSrv.getNetworkFreightForwarder({}, false), + + allowClear: true + } + }, + externalResourceCode: { + title: '货主', + type: 'string', + ui: { + placeholder: '请输入', + visibleIf: { + _$expand: (value: boolean) => value, + }, + } + }, + driverName: { + title: '承运司机', + type: 'string', + ui: { + placeholder: '请输入司机姓名/手机号', visibleIf: { + _$expand: (value: boolean) => value, + }, + } + }, + carNo: { + title: '车牌号', + type: 'string', + maxLength: 9, + ui: { + placeholder: '请输入', + visibleIf: { + _$expand: (value: boolean) => value, + }, + } + }, + serviceType: { + title: '上传状态', + type: 'string', + ui: { + placeholder: '请选择', + widget: 'dict-select', + params: { dictKey: 'service:type' }, + containsAllLabel: true, + visibleIf: { + _$expand: (value: boolean) => value, + }, + } + }, + serviceType1: { + title: '本地校验', + type: 'string', + ui: { + placeholder: '请选择', + widget: 'dict-select', + params: { dictKey: 'service:type' }, + containsAllLabel: true, + visibleIf: { + _$expand: (value: boolean) => value, + }, + } + }, + createTime: { + title: '上传时间', + type: 'string', + ui: { + widget: 'sl-from-to', + type: 'date', + format: 'yyyy-MM-dd', + visibleIf: { + _$expand: (value: boolean) => value, + }, + } as SFDateWidgetSchema, + }, + createTime1: { + title: '运单生成时间', + type: 'string', + ui: { + widget: 'sl-from-to', + type: 'date', + format: 'yyyy-MM-dd', + visibleIf: { + _$expand: (value: boolean) => value, + }, + } as SFDateWidgetSchema, + }, + createTime2: { + title: '发货时间', + type: 'string', + ui: { + widget: 'sl-from-to', + type: 'date', + format: 'yyyy-MM-dd', + visibleIf: { + _$expand: (value: boolean) => value, + }, + } as SFDateWidgetSchema, + }, + createTime3: { + title: '收货时间', + type: 'string', + ui: { + widget: 'sl-from-to', + type: 'date', + format: 'yyyy-MM-dd', + visibleIf: { + _$expand: (value: boolean) => value, + }, + } as SFDateWidgetSchema, + }, + + loadingPlace: { + title: '车辆轨迹', + type: 'string', + enum: [ + { label: '全部', value: '' }, + { label: '有', value: '1' }, + { label: '无', value: '0' } + ], + ui: { + placeholder: '请选择', + widget: 'select', + visibleIf: { + _$expand: (value: boolean) => value, + }, + } + }, + loadingPlace1: { + title: '司机轨迹', + type: 'string', + enum: [ + { label: '全部', value: '' }, + { label: '有', value: '1' }, + { label: '无', value: '0' } + ], + ui: { + placeholder: '请选择', + widget: 'select', + visibleIf: { + _$expand: (value: boolean) => value, + }, + } + }, + }, + }; + this.ui = { + '*': { spanLabelFixed: 120, grid: { span: 8, gutter: 4 }, enter: () => this.search() }, + $time: { grid: { span: 24 } }, + }; + } + + /** + * 初始化数据列表 + */ + initST() { + this.columns = [ + { 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', + className: 'text-center', + width: '150px', + }, + { title: '运单号', render: 'freightDetails', className: 'text-center', width: '150px', }, + + { + title: '网络货运人', + render: 'serviceType', + className: 'text-center', + width: '180px', + }, + { 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: '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: '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: '200px' }, + { title: '司机身份证号', render: 'payeeName', className: 'text-center', width: '150px' }, + { title: '货物信息', render: 'transportInfo', className: 'text-center', width: '180px' }, + { title: '实际承运人名称', render: 'payeeName', className: 'text-center', width: '150px' }, + { 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: '150px' }, + { title: '上传时间', render: 'transportInfo', className: 'text-center', width: '180px' }, + ]; + } + + + + /** + *撤销 + * @param record 记录实例 + */ + 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(); + } + }) + + } + + selectChange(item: any) { + this.selectedIndex = item?.representationsStatus || ''; + setTimeout(() => { + this.st.load(1); + }) + } + + /** + * 查看当行数据 + */ + view(record: STData) { + // this.router.navigate(['../view', record.uuid], { relativeTo: this.ar }); + this.router.navigate(['../detail'], { + queryParams: { + id: record.id, + }, + relativeTo: this.ar + }); + } + + // appeal(item: any) { + // const modalRef = this.modal.create({ + // nzTitle: '申诉', + // nzWidth: '40%', + // nzContent: CtcAppealComponent, + // nzComponentParams: { + // i: item, + // status: 'add' + // }, + // nzFooter: null + // }); + // modalRef.afterClose.subscribe(res => { + // if (res) { + // this.search({ representationsStatus: '' }); + // } + // }) + // } + + /** + * 上传 + */ + upload() { + if (this.selectedRows.length === 0) { + this.openWainingModal('请选择需要上传的数据'); + return; + } + } + + + /** + * + * @param params 上传设置 + */ + uploadSetting() { + const modalRef = this.modal.create({ + nzTitle: '上传设置', + nzWidth: 600, + nzContent: DatatableReportingUploadSettingComponent, + nzComponentParams: {}, + nzFooter: null + }); + modalRef.afterClose.subscribe(res => { + }) + } + + /** + * 查看校验结果 + */ + 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); + } + + /** + * 异步导出 + */ + export() { + 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, + }) + } + + +} From b91095ed9a645ed4b9e674564650d1c034e1a0fe Mon Sep 17 00:00:00 2001 From: heqinghang Date: Tue, 29 Mar 2022 17:57:06 +0800 Subject: [PATCH 3/4] 666 --- .../customer/customer.component.html | 6 + .../compliance/customer/customer.component.ts | 45 +++++++ .../compliance/index/index.component.html | 66 +++++++++ .../compliance/index/index.component.less | 17 +++ .../compliance/index/index.component.ts | 125 ++++++++++++++++++ .../salesman/salesman.component.html | 6 + .../compliance/salesman/salesman.component.ts | 45 +++++++ .../financetable/financetable.component.html | 6 + .../financetable/financetable.component.ts | 45 +++++++ .../invoicetable/invoicetable.component.html | 14 ++ .../invoicetable/invoicetable.component.ts | 70 ++++++++++ .../datatable/datatable-routing.module.ts | 14 +- src/app/routes/datatable/datatable.module.ts | 14 +- src/assets/mocks/menu-data.json | 26 +++- 14 files changed, 494 insertions(+), 5 deletions(-) create mode 100644 src/app/routes/datatable/components/compliance/customer/customer.component.html create mode 100644 src/app/routes/datatable/components/compliance/customer/customer.component.ts create mode 100644 src/app/routes/datatable/components/compliance/index/index.component.html create mode 100644 src/app/routes/datatable/components/compliance/index/index.component.less create mode 100644 src/app/routes/datatable/components/compliance/index/index.component.ts create mode 100644 src/app/routes/datatable/components/compliance/salesman/salesman.component.html create mode 100644 src/app/routes/datatable/components/compliance/salesman/salesman.component.ts create mode 100644 src/app/routes/datatable/components/financetable/financetable.component.html create mode 100644 src/app/routes/datatable/components/financetable/financetable.component.ts create mode 100644 src/app/routes/datatable/components/invoicetable/invoicetable.component.html create mode 100644 src/app/routes/datatable/components/invoicetable/invoicetable.component.ts diff --git a/src/app/routes/datatable/components/compliance/customer/customer.component.html b/src/app/routes/datatable/components/compliance/customer/customer.component.html new file mode 100644 index 00000000..56092666 --- /dev/null +++ b/src/app/routes/datatable/components/compliance/customer/customer.component.html @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/app/routes/datatable/components/compliance/customer/customer.component.ts b/src/app/routes/datatable/components/compliance/customer/customer.component.ts new file mode 100644 index 00000000..1546a048 --- /dev/null +++ b/src/app/routes/datatable/components/compliance/customer/customer.component.ts @@ -0,0 +1,45 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { STColumn, STComponent } from '@delon/abc/st'; +import { SFSchema } from '@delon/form'; +import { ModalHelper, _HttpClient } from '@delon/theme'; + +@Component({ + selector: 'app-datatable-compliance-customer', + templateUrl: './customer.component.html', +}) +export class DatatableComplianceCustomerComponent implements OnInit { + url = `/user`; + searchSchema: SFSchema = { + properties: { + no: { + type: 'string', + title: '编号' + } + } + }; + @ViewChild('st') private readonly st!: STComponent; + columns: STColumn[] = [ + { title: '编号', index: 'no' }, + { title: '调用次数', type: 'number', index: 'callNo' }, + { title: '头像', type: 'img', width: '50px', index: 'avatar' }, + { title: '时间', type: 'date', index: 'updatedAt' }, + { + title: '', + buttons: [ + // { text: '查看', click: (item: any) => `/form/${item.id}` }, + // { text: '编辑', type: 'static', component: FormEditComponent, click: 'reload' }, + ] + } + ]; + + constructor(private http: _HttpClient, private modal: ModalHelper) { } + + ngOnInit(): void { } + + add(): void { + // this.modal + // .createStatic(FormEditComponent, { i: { id: 0 } }) + // .subscribe(() => this.st.reload()); + } + +} diff --git a/src/app/routes/datatable/components/compliance/index/index.component.html b/src/app/routes/datatable/components/compliance/index/index.component.html new file mode 100644 index 00000000..dbcfc3c0 --- /dev/null +++ b/src/app/routes/datatable/components/compliance/index/index.component.html @@ -0,0 +1,66 @@ + + + + +
+
+ +
+
+
+
+ + + + +
+ +
+
+
+
+
+
+ +
+
+ + +
+ 合格:12423 不合格:12423 +
+
+
+
+
+ + +
+ 货源单:12423 合同单:12423 +
+
+
+
+
+ + +
+ 司机:12423 车队长:12423 +
+
+
+
+
+ + +
+ 准时:12423 逾期:12423 +
+
+
+
+
+ + + + diff --git a/src/app/routes/datatable/components/compliance/index/index.component.less b/src/app/routes/datatable/components/compliance/index/index.component.less new file mode 100644 index 00000000..3d0d3e63 --- /dev/null +++ b/src/app/routes/datatable/components/compliance/index/index.component.less @@ -0,0 +1,17 @@ +.card-f{ + color: #5a5a5a; + .card-f-l{ + margin-right: 24px; + } +} +.chooseBox{ + display: flex; +} +.timeBox{ + display: flex; + margin: 0 0 0 10px; +} +.dateBox{ + display: inline-block; + margin: 0 0 0 10px; +} \ No newline at end of file diff --git a/src/app/routes/datatable/components/compliance/index/index.component.ts b/src/app/routes/datatable/components/compliance/index/index.component.ts new file mode 100644 index 00000000..b50e7764 --- /dev/null +++ b/src/app/routes/datatable/components/compliance/index/index.component.ts @@ -0,0 +1,125 @@ +import { Component, ElementRef, NgZone, OnInit, ViewChild } from '@angular/core'; +import { DatePipe, ModalHelper, _HttpClient } from '@delon/theme'; +import { G2MiniAreaClickItem, G2MiniAreaData } from '@delon/chart/mini-area'; +import { format } from 'date-fns'; +import { SFComponent, SFDateWidgetSchema, SFRadioWidgetSchema, SFSchema, SFUISchema } from '@delon/form'; +import { G2TimelineData, G2TimelineMap } from '@delon/chart/timeline'; +import { Chart } from '@antv/g2'; +const DataSet = require('@antv/data-set'); +@Component({ + selector: 'app-datatable-compliance-index', + templateUrl: './index.component.html', + styleUrls: ['./index.component.less'], + providers: [DatePipe] +}) +export class DatatableComplianceIndexComponent implements OnInit { + @ViewChild('sf', { static: false }) + sf!: SFComponent; + ui!: SFUISchema; + schema: SFSchema = {}; + + mode = 'year'; + date: any = null; + dateFormat = 'yyyy-MM-dd'; + time: any = ['2022-01-01 00:00:00'] + constructor(private http: _HttpClient, private modal: ModalHelper, private ngZone: NgZone, private datePipe: DatePipe) {} + + ngOnInit(): void { + this.initSF(); + } + + changeData(){ + if(this.mode === 'year') { + this.dateFormat = 'yyyy' + } else if(this.mode === 'month') { + this.dateFormat = 'yyyy-MM' + } else { + this.dateFormat = 'yyyy-MM-dd' + } + } + + onChange(result: any) { + if(this.mode === 'year') { + this.time = [this.datePipe.transform(this.date, 'yyyy') + '-01-01 00:00:00'] + } else if(this.mode === 'month') { + this.time = [this.datePipe.transform(this.date, 'yyyy-MM') + '-01 00:00:00'] + } + } + + initSF() { + this.schema = { + properties: { + name: { + type: 'string', + title: '', + ui: { + widget: 'select', + placeholder: '网络货运人' + } + }, + name2: { + type: 'string', + title: '', + ui: { + widget: 'select', + placeholder: '部门' + } + }, + name3: { + type: 'string', + title: '', + ui: { + placeholder: '业务员' + } + } + } + }; + this.ui = { + '*': { + grid: { span: 4 } + } + }; + + } + + data = [ + { Date: '22 February', 订单合格率: 50000, 付款及时率: 125000 }, + { Date: '28 February', 订单合格率: 60000, 付款及时率: 150000 }, + { Date: '3 March', 订单合格率: 100000, 付款及时率: 250000 }, + { Date: '20 March', 订单合格率: 200000, 付款及时率: 500000 }, + { Date: '7 April', 订单合格率: 250000, 付款及时率: 625000 }, + { Date: '13 June', 订单合格率: 210000, 付款及时率: 525000 } + ]; + render(el: ElementRef) { + this.ngZone.runOutsideAngular(() => this.init(el.nativeElement)); + } + + private init(el: HTMLElement): void { + const chart = new Chart({ + container: el, + autoFit: true, + height: 400 + }); + // 以三组数据为例, 需要展示 91/92/93年中a/b/c数据走势 + const data = [ + {x: '1991', z: 'a', y: 1}, + {x: '1991', z: 'b', y: 2}, + {x: '1991', z: 'c', y: 3}, + + {x: '1992', z: 'a', y: 11}, + {x: '1992', z: 'b', y: 22}, + {x: '1992', z: 'c', y: 33}, + + {x: '1993', z: 'a', y: 1}, + {x: '1993', z: 'b', y: 2}, + {x: '1993', z: 'c', y: 3} + ]; + + chart.data(data); + // 在x*y的坐标点上按z值绘制线条, 如果z值相同将使用直线连接 + chart.line().position('x*y').color('z'); + // 在x*y的坐标上按z值绘制圆点 + chart.point().position('x*y').size(4).color('z').shape('circle'); + chart.render(); + } +} diff --git a/src/app/routes/datatable/components/compliance/salesman/salesman.component.html b/src/app/routes/datatable/components/compliance/salesman/salesman.component.html new file mode 100644 index 00000000..56092666 --- /dev/null +++ b/src/app/routes/datatable/components/compliance/salesman/salesman.component.html @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/app/routes/datatable/components/compliance/salesman/salesman.component.ts b/src/app/routes/datatable/components/compliance/salesman/salesman.component.ts new file mode 100644 index 00000000..3b6cd019 --- /dev/null +++ b/src/app/routes/datatable/components/compliance/salesman/salesman.component.ts @@ -0,0 +1,45 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { STColumn, STComponent } from '@delon/abc/st'; +import { SFSchema } from '@delon/form'; +import { ModalHelper, _HttpClient } from '@delon/theme'; + +@Component({ + selector: 'app-datatable-compliance-salesman', + templateUrl: './salesman.component.html', +}) +export class DatatableComplianceSalesmanComponent implements OnInit { + url = `/user`; + searchSchema: SFSchema = { + properties: { + no: { + type: 'string', + title: '编号' + } + } + }; + @ViewChild('st') private readonly st!: STComponent; + columns: STColumn[] = [ + { title: '编号', index: 'no' }, + { title: '调用次数', type: 'number', index: 'callNo' }, + { title: '头像', type: 'img', width: '50px', index: 'avatar' }, + { title: '时间', type: 'date', index: 'updatedAt' }, + { + title: '', + buttons: [ + // { text: '查看', click: (item: any) => `/form/${item.id}` }, + // { text: '编辑', type: 'static', component: FormEditComponent, click: 'reload' }, + ] + } + ]; + + constructor(private http: _HttpClient, private modal: ModalHelper) { } + + ngOnInit(): void { } + + add(): void { + // this.modal + // .createStatic(FormEditComponent, { i: { id: 0 } }) + // .subscribe(() => this.st.reload()); + } + +} diff --git a/src/app/routes/datatable/components/financetable/financetable.component.html b/src/app/routes/datatable/components/financetable/financetable.component.html new file mode 100644 index 00000000..56092666 --- /dev/null +++ b/src/app/routes/datatable/components/financetable/financetable.component.html @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/app/routes/datatable/components/financetable/financetable.component.ts b/src/app/routes/datatable/components/financetable/financetable.component.ts new file mode 100644 index 00000000..00e0f1b3 --- /dev/null +++ b/src/app/routes/datatable/components/financetable/financetable.component.ts @@ -0,0 +1,45 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { STColumn, STComponent } from '@delon/abc/st'; +import { SFSchema } from '@delon/form'; +import { ModalHelper, _HttpClient } from '@delon/theme'; + +@Component({ + selector: 'app-datatable-financetable', + templateUrl: './financetable.component.html', +}) +export class DatatableFinancetableComponent implements OnInit { + url = `/user`; + searchSchema: SFSchema = { + properties: { + no: { + type: 'string', + title: '编号' + } + } + }; + @ViewChild('st') private readonly st!: STComponent; + columns: STColumn[] = [ + { title: '编号', index: 'no' }, + { title: '调用次数', type: 'number', index: 'callNo' }, + { title: '头像', type: 'img', width: '50px', index: 'avatar' }, + { title: '时间', type: 'date', index: 'updatedAt' }, + { + title: '', + buttons: [ + // { text: '查看', click: (item: any) => `/form/${item.id}` }, + // { text: '编辑', type: 'static', component: FormEditComponent, click: 'reload' }, + ] + } + ]; + + constructor(private http: _HttpClient, private modal: ModalHelper) { } + + ngOnInit(): void { } + + add(): void { + // this.modal + // .createStatic(FormEditComponent, { i: { id: 0 } }) + // .subscribe(() => this.st.reload()); + } + +} diff --git a/src/app/routes/datatable/components/invoicetable/invoicetable.component.html b/src/app/routes/datatable/components/invoicetable/invoicetable.component.html new file mode 100644 index 00000000..13411ab5 --- /dev/null +++ b/src/app/routes/datatable/components/invoicetable/invoicetable.component.html @@ -0,0 +1,14 @@ + + + + + + diff --git a/src/app/routes/datatable/components/invoicetable/invoicetable.component.ts b/src/app/routes/datatable/components/invoicetable/invoicetable.component.ts new file mode 100644 index 00000000..9916e4c4 --- /dev/null +++ b/src/app/routes/datatable/components/invoicetable/invoicetable.component.ts @@ -0,0 +1,70 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { STColumn, STComponent } from '@delon/abc/st'; +import { SFSchema } from '@delon/form'; +import { ModalHelper, _HttpClient } from '@delon/theme'; + +@Component({ + selector: 'app-datatable-invoicetable', + templateUrl: './invoicetable.component.html', +}) +export class DatatableInvoicetableComponent implements OnInit { + @ViewChild('st', { static: false }) + st!: STComponent; + columns!: STColumn[]; + + data=[{name1:1111}] + constructor(private http: _HttpClient, private modal: ModalHelper) { } + + /** + * 查询参数 + */ + get reqParams() { + return { }; + } + ngOnInit(): void { + this.initST(); + } + initST() { + this.columns = [ + { + title: '运营主体', + index: 'name1' + }, + { + title: '已开票总金额', + index: 'name1' + }, + { + title: '当月已开票金额', + index: 'name1' + }, + { + title: '已申请待开金额', + index: 'name1' + }, + { + title: '未申请开票金额(历史)', + index: 'name1' + }, + { + title: '未申请开票金额(当月)', + index: 'name1' + }, + { + title: '当月发票张数', + index: 'name1' + }, + { + title: '剩余发票张数', + index: 'name1' + }, + + ]; + } + add(): void { + // this.modal + // .createStatic(FormEditComponent, { i: { id: 0 } }) + // .subscribe(() => this.st.reload()); + } + +} diff --git a/src/app/routes/datatable/datatable-routing.module.ts b/src/app/routes/datatable/datatable-routing.module.ts index c71ba4c6..2bea9ee5 100644 --- a/src/app/routes/datatable/datatable-routing.module.ts +++ b/src/app/routes/datatable/datatable-routing.module.ts @@ -7,6 +7,11 @@ import { DatatableDriverComponent } from './components/customtable/driver/driver import { DatatableOperationtableComponent } from './components/operationtable/operationtable.component'; import { DatatableOrderReportingComponent } from './reporting/components/order-reporting/order-reporting.component'; import { DatatableDataindexComponent } from './components/dataindex/dataindex.component'; +import { DatatableComplianceIndexComponent } from './components/compliance/index/index.component'; +import { DatatableFinancetableComponent } from './components/financetable/financetable.component'; +import { DatatableInvoicetableComponent } from './components/invoicetable/invoicetable.component'; +import { DatatableComplianceSalesmanComponent } from './components/compliance/salesman/salesman.component'; +import { DatatableComplianceCustomerComponent } from './components/compliance/customer/customer.component'; const routes: Routes = [ { path: 'dataindex', component: DatatableDataindexComponent }, @@ -15,9 +20,14 @@ const routes: Routes = [ { path: 'owner', component: DatatableOwnerComponent }, { path: 'driver', component: DatatableDriverComponent }, { path: 'operationtable', component: DatatableOperationtableComponent }, - { path: 'reporting/order', component: DatatableOrderReportingComponent }]; + { path: 'reporting/order', component: DatatableOrderReportingComponent }, + { path: 'compliancetabel/index', component: DatatableComplianceIndexComponent }, + { path: 'compliancetabel/salesman', component: DatatableComplianceSalesmanComponent }, + { path: 'compliancetabel/customer', component: DatatableComplianceCustomerComponent }, + { path: 'financetable', component: DatatableFinancetableComponent }, + { path: 'invoicetable', component: DatatableInvoicetableComponent }, +]; - @NgModule({ imports: [RouterModule.forChild(routes)], exports: [RouterModule] diff --git a/src/app/routes/datatable/datatable.module.ts b/src/app/routes/datatable/datatable.module.ts index d37e1e6b..6516ec67 100644 --- a/src/app/routes/datatable/datatable.module.ts +++ b/src/app/routes/datatable/datatable.module.ts @@ -9,6 +9,11 @@ import { DatatableOperationtableComponent } from './components/operationtable/op import { OperationtablePieComponent } from './components/operationtable/pie/pie.component'; import { DatatableOrderReportingComponent } from './reporting/components/order-reporting/order-reporting.component'; import { DatatableDataindexComponent } from './components/dataindex/dataindex.component'; +import { DatatableComplianceIndexComponent } from './components/compliance/index/index.component'; +import { DatatableFinancetableComponent } from './components/financetable/financetable.component'; +import { DatatableInvoicetableComponent } from './components/invoicetable/invoicetable.component'; +import { DatatableComplianceSalesmanComponent } from './components/compliance/salesman/salesman.component'; +import { DatatableComplianceCustomerComponent } from './components/compliance/customer/customer.component'; const COMPONENTS: Type[] = [ DatatableDataindexComponent, @@ -18,8 +23,13 @@ const COMPONENTS: Type[] = [ DatatableDriverComponent, DatatableOperationtableComponent, OperationtablePieComponent, - DatatableOrderReportingComponent -]; + DatatableOrderReportingComponent, + DatatableComplianceIndexComponent, + DatatableFinancetableComponent, + DatatableInvoicetableComponent, + DatatableComplianceSalesmanComponent, + DatatableComplianceCustomerComponent +] @NgModule({ imports: [ diff --git a/src/assets/mocks/menu-data.json b/src/assets/mocks/menu-data.json index 824190d8..69601b29 100644 --- a/src/assets/mocks/menu-data.json +++ b/src/assets/mocks/menu-data.json @@ -646,8 +646,32 @@ { "text": "订单上报", "link": "/datatable/reporting/order" + }, + { + "text": "合规监控报表", + "children": [{ + "text": "合规监控报表", + "link": "/datatable/compliancetabel/index" + }, + { + "text": "业务员-合规报表", + "link": "/datatable/compliancetabel/salesman" + }, + { + "text": "客户-合规报表", + "link": "/datatable/compliancetabel/customer" + } + ] + }, + { + "text": "财务报表", + "link": "/datatable/financetable" + }, + { + "text": "开票数据报表", + "link": "/datatable/invoicetable" } - ] + ] } ] }] From 26e3893f3a8a322b386b204b65dce88f10ba9cf1 Mon Sep 17 00:00:00 2001 From: Taric Xin Date: Wed, 30 Mar 2022 09:44:33 +0800 Subject: [PATCH 4/4] edit --- .../cancellation-invoice/cancellation-invoice.component.html | 2 +- .../invoice-requested-detail.component.ts | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/app/routes/ticket-management/components/cancellation-invoice/cancellation-invoice.component.html b/src/app/routes/ticket-management/components/cancellation-invoice/cancellation-invoice.component.html index c31db228..80d1837f 100644 --- a/src/app/routes/ticket-management/components/cancellation-invoice/cancellation-invoice.component.html +++ b/src/app/routes/ticket-management/components/cancellation-invoice/cancellation-invoice.component.html @@ -65,7 +65,7 @@

开户行: {{openInfo?.artobank}}

- {{openInfo?.vatnameLable}} + {{openInfo?.vatnameLabel}} {{openInfo?.vatremarks}} diff --git a/src/app/routes/ticket-management/components/invoice-requested/invoice-requested-detail/invoice-requested-detail.component.ts b/src/app/routes/ticket-management/components/invoice-requested/invoice-requested-detail/invoice-requested-detail.component.ts index fc9c0897..ee8858b6 100644 --- a/src/app/routes/ticket-management/components/invoice-requested/invoice-requested-detail/invoice-requested-detail.component.ts +++ b/src/app/routes/ticket-management/components/invoice-requested/invoice-requested-detail/invoice-requested-detail.component.ts @@ -50,6 +50,8 @@ export class InvoiceRequestedDetailComponent implements OnInit { } beforeReq = (requestOptions: STRequestOptions) => { + this.totalCallNo = '0'; + this.selectedRows = []; Object.assign(requestOptions.body, { vatappHId: this.id }); if (this.sf) { Object.assign(requestOptions.body, { ...this.sf.value }); @@ -58,7 +60,7 @@ export class InvoiceRequestedDetailComponent implements OnInit { }; afterRes = (data: any[], rawData?: any) => { - this.totalCallNo = data.reduce((total, cv) => total + cv.billkpmoney, 0).toFixed(2); + // this.totalCallNo = data.reduce((total, cv) => total + cv.billkpmoney, 0).toFixed(2); return data.map(item => ({ ...item }));