diff --git a/proxy.conf.js b/proxy.conf.js index 0b7a386b..3ec9b0fd 100644 --- a/proxy.conf.js +++ b/proxy.conf.js @@ -4,7 +4,7 @@ * @Author : Shiming * @Date : 2022-01-18 09:51:21 * @LastEditors : Shiming - * @LastEditTime : 2022-04-14 14:40:51 + * @LastEditTime : 2022-04-18 16:40:52 * @FilePath : \\tms-obc-web\\proxy.conf.js * Copyright (C) 2022 huzhenhong. All rights reserved. */ @@ -30,7 +30,7 @@ module.exports = { // }, '//api': { target: { - host: 'tms-api-test.eascs.com', + host: 'tms-api-dev.eascs.com', protocol: 'https:', port: 443 }, diff --git a/src/app/routes/datatable/components/busitable/busiindex/busiindex.component.ts b/src/app/routes/datatable/components/busitable/busiindex/busiindex.component.ts index 6a27ee0b..a5cc2092 100644 --- a/src/app/routes/datatable/components/busitable/busiindex/busiindex.component.ts +++ b/src/app/routes/datatable/components/busitable/busiindex/busiindex.component.ts @@ -75,6 +75,11 @@ export class DatatableBusiindexComponent implements OnInit { } else if(this.mode === 'month') { type = 2 } + if(this.modeNext === 'year') { + type = 1 + } else if(this.modeNext === 'month') { + type = 2 + } const params: any = { time: this.timeNext, type @@ -83,8 +88,8 @@ export class DatatableBusiindexComponent implements OnInit { if (res) { this.chartData = res if(flag) { - this.pillar.reRender() - this.curve.reRender() + // this.pillar.reRender() + // this.curve.reRender() } } }) @@ -106,15 +111,15 @@ export class DatatableBusiindexComponent implements OnInit { } else if(this.mode === 'date') { this.time = [this.datePipe.transform(this.date, 'yyyy-MM-dd') + ' 00:00:00'] } else{ - this.time = [this.datePipe.transform(this.defineDate[0], 'yyyy-MM-dd') + '00:00:00', this.datePipe.transform(this.defineDate[1], 'yyyy-MM-dd') + ' 00:00:00'] + this.time = [this.datePipe.transform(this.defineDate[0], 'yyyy-MM-dd') + ' 00:00:00', this.datePipe.transform(this.defineDate[1], 'yyyy-MM-dd') + ' 00:00:00'] } this.st.reload({ ...this.reqParams }); } changeDataNext() { - if(this.mode === 'year') { + if(this.modeNext === 'year') { this.dateFormat = 'yyyy' - } else if(this.mode === 'month') { + } else if(this.modeNext === 'month') { this.dateFormat = 'yyyy-MM' } } @@ -122,10 +127,15 @@ export class DatatableBusiindexComponent implements OnInit { if(result === null) { return } - if(this.mode === 'year') { + console.log(this.mode); + if(this.modeNext === 'year') { this.timeNext = [this.datePipe.transform(this.dateNext, 'yyyy') + '-01-01 00:00:00'] - } else if(this.mode === 'month') { + } else if(this.modeNext === 'month') { this.timeNext = [this.datePipe.transform(this.dateNext, 'yyyy-MM') + '-01 00:00:00'] + + console.log(this.dateNext); + console.log(this.timeNext); + } this.initData(true) } diff --git a/src/app/routes/datatable/components/busitable/busiindex/curve/curve.component.ts b/src/app/routes/datatable/components/busitable/busiindex/curve/curve.component.ts index 00d9e8b5..764a1747 100644 --- a/src/app/routes/datatable/components/busitable/busiindex/curve/curve.component.ts +++ b/src/app/routes/datatable/components/busitable/busiindex/curve/curve.component.ts @@ -15,9 +15,9 @@ export class BusitableCurveComponent implements OnInit, OnChanges { } ngOnChanges(changes: SimpleChanges): void { if (this.chartData) { - // setTimeout(()=>{ - // this.chart.render(true) - // }, 1000) + setTimeout(()=>{ + this.chart.render(true) + }, 1000) } } @@ -48,19 +48,23 @@ export class BusitableCurveComponent implements OnInit, OnChanges { year: { range: [0, 1], }, - value: { - min: 0, + number: { + min: -9999, nice: true, }, }); - + const itemTpl = ` +
+ 环比:  {value}% +
+` this.chart.tooltip({ showCrosshairs: true, // 展示 Tooltip 辅助线 shared: true, - }); - - this.chart.line().position('time*value').label('value'); - this.chart.point().position('time*value'); + itemTpl: itemTpl + }); + this.chart.line().position('time*number').label('number'); + this.chart.point().position('time*number'); this.chart.render(); } diff --git a/src/app/routes/datatable/components/busitable/pillar/pillar.component.ts b/src/app/routes/datatable/components/busitable/pillar/pillar.component.ts index ddb0569b..1a5e9ae1 100644 --- a/src/app/routes/datatable/components/busitable/pillar/pillar.component.ts +++ b/src/app/routes/datatable/components/busitable/pillar/pillar.component.ts @@ -1,3 +1,13 @@ +/* + * @Description : + * @Version : 1.0 + * @Author : Shiming + * @Date : 2022-04-06 14:32:03 + * @LastEditors : Shiming + * @LastEditTime : 2022-04-18 14:25:25 + * @FilePath : \\tms-obc-web\\src\\app\\routes\\datatable\\components\\busitable\\pillar\\pillar.component.ts + * Copyright (C) 2022 huzhenhong. All rights reserved. + */ import { Component, ElementRef, Input, NgZone, OnChanges, OnInit, SimpleChanges, ViewChild } from '@angular/core'; import { Chart } from '@antv/g2'; import { DataService } from 'src/app/routes/datatable/services/data.service'; @@ -45,10 +55,16 @@ export class BusitablePillarComponent implements OnInit, OnChanges { this.chart.data(this.chartData); + const itemTpl = ` +
+ 业绩量:  {value} +
+` this.chart.tooltip({ + showTitle: true, showMarkers: false, - }); - + itemTpl: itemTpl + }); this.chart.interval().position('time*number'); this.chart.render(); } diff --git a/src/app/routes/datatable/components/compliance/customer/customer.component.html b/src/app/routes/datatable/components/compliance/customer/customer.component.html index f499eafa..13193b65 100644 --- a/src/app/routes/datatable/components/compliance/customer/customer.component.html +++ b/src/app/routes/datatable/components/compliance/customer/customer.component.html @@ -4,7 +4,7 @@ * @Author : Shiming * @Date : 2022-03-30 13:55:41 * @LastEditors : Shiming - * @LastEditTime : 2022-04-15 17:28:46 + * @LastEditTime : 2022-04-18 16:13:49 * @FilePath : \\tms-obc-web\\src\\app\\routes\\datatable\\components\\compliance\\customer\\customer.component.html * Copyright (C) 2022 huzhenhong. All rights reserved. --> diff --git a/src/app/routes/datatable/components/compliance/salesman/salesman.component.html b/src/app/routes/datatable/components/compliance/salesman/salesman.component.html index 56092666..745c3ec5 100644 --- a/src/app/routes/datatable/components/compliance/salesman/salesman.component.html +++ b/src/app/routes/datatable/components/compliance/salesman/salesman.component.html @@ -1,6 +1,46 @@ + - - - - - + + + +
+
+ + +
+
+ + + + + + +
+ + +
+
+
+
+
+
+
+ + +
\ No newline at end of file diff --git a/src/app/routes/datatable/components/compliance/salesman/salesman.component.less b/src/app/routes/datatable/components/compliance/salesman/salesman.component.less new file mode 100644 index 00000000..d754ef94 --- /dev/null +++ b/src/app/routes/datatable/components/compliance/salesman/salesman.component.less @@ -0,0 +1,20 @@ +.chooseBox { + display: flex; + float : right; +} + +.timeBox { + display: flex; + margin : 0 0 0 10px; +} + +.dateBox { + display: inline-block; + margin : 0 0 0 10px; +} + +:host::ng-deep { + .ant-form-item-control { + max-width: 100%; + } +} \ No newline at end of file diff --git a/src/app/routes/datatable/components/compliance/salesman/salesman.component.ts b/src/app/routes/datatable/components/compliance/salesman/salesman.component.ts index 3b6cd019..d8dc8f23 100644 --- a/src/app/routes/datatable/components/compliance/salesman/salesman.component.ts +++ b/src/app/routes/datatable/components/compliance/salesman/salesman.component.ts @@ -1,45 +1,220 @@ 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'; +import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/form'; +import { DatePipe, _HttpClient } from '@delon/theme'; +import { differenceInCalendarDays } from 'date-fns'; +import { DataService } from '../../../services/data.service'; @Component({ selector: 'app-datatable-compliance-salesman', templateUrl: './salesman.component.html', + styleUrls: ['./salesman.component.less'], + providers: [DatePipe] + }) export class DatatableComplianceSalesmanComponent implements OnInit { url = `/user`; + @ViewChild('st', { static: false }) st!: STComponent; + @ViewChild('sf', { static: false }) sf!: SFComponent; + _$expand = false; + type = 1; + mode = 'year'; + date: any = null; + defineDate = []; + time: any = ['2022-01-01 00:00:00'] + dateFormat = 'yyyy'; + today = new Date(); + ui: SFUISchema = {}; + schema: SFSchema = {}; + isLoading: boolean = false; searchSchema: SFSchema = { properties: { - no: { + department: { type: 'string', - title: '编号' + title: '', + ui: { + placeholder: '请选择部门', + change: (value: any) => { + console.log(value); + this.st.reload({ ...this.reqParams }); + } + }, + + }, + customerName: { + type: 'string', + title: '', + ui: { + placeholder: '请输入业务员', + change: (value: any) => { + console.log(value); + this.st.reload({ ...this.reqParams }); + } + }, + }, + salesmanName: { + type: 'string', + title: '', + ui: { + placeholder: '请输入客户名称', + change: (value: any) => { + this.st.reload({ ...this.reqParams }); + } + } + }, + no4: { + type: 'string', + title: '', + ui: { + class: 'custom', + widget: 'custom', + grid: { xxl: 9, xl: 10, lg: 12, md: 24, sm: 24, xs: 24 } + + } } - } + }, + }; - @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' }, - ] - } + { title: '部门', index: 'department', className: 'text-center', width: '200px' }, + { title: '业务员', index: 'salesmen', className: 'text-center', width: '100px' }, + { title: '客户数', index: 'cusCount', className: 'text-right', width: '100px', }, + { title: '订单数', index: 'billCount', className: 'text-center', width: '120px' }, + { title: '订单合格率', index: 'billComPer', className: 'text-right', width: '100px',format: (item: any) => {return ((item?.billComPer)*100).toFixed(2) + '%' }}, + { title: '付款及时率', index: 'payTimePer', className: 'text-center', width: '130px',format: (item: any) => {return ((item?.payTimePer)*100).toFixed(2) + '%'  } }, + { title: '货源单占比', index: 'goodResPer', className: 'text-right', width: '120px',format: (item: any) => {return ((item?.goodResPer)*100).toFixed(2) + '%'  } }, + { title: '运费直付占比', index: 'feightPayPer', className: 'text-right', width: '100px', format: (item: any) => {return ((item?.feightPayPer)*100).toFixed(2) + '%'  } }, ]; - - constructor(private http: _HttpClient, private modal: ModalHelper) { } - - ngOnInit(): void { } - - add(): void { - // this.modal - // .createStatic(FormEditComponent, { i: { id: 0 } }) - // .subscribe(() => this.st.reload()); + /** + * 查询参数 + */ + get reqParams() { + if(this.mode === 'year') { + this.type = 1 + } else if(this.mode === 'month') { + this.type = 2 + } else if(this.mode === 'date') { + this.type = 3 + } else { + this.type = 4 + } + let params: any = { + time: this.time, + type: this.type, + ...this.sf?.value + }; + + delete params._$expand; + return { ...params }; } + constructor(public service: DataService, private datePipe: DatePipe) { } + ngOnInit(): void { + this.initSF(); + } + /** + * 初始化查询表单 + */ + initSF() { + this.schema = { + properties: { + _$expand: { type: 'boolean', ui: { hidden: true } }, + enterpriseName: { + type: 'string', + title: '货主名称', + ui: { + placeholder: '请输入', + } + }, + customerType: { + type: 'string', + title: '客户类型', + ui: { + widget: 'select', + placeholder: '请选择', + }, + enum: [ + {label: '直客', value: 2}, + {label: '渠道客户', value: 3}, + {label: '平台客户', value: 1}, + ] + }, + customerStatus: { + type: 'string', + title: '客户状态', + ui: { + widget: 'select', + placeholder: '请选择', + }, + enum: [ + {label: '未激活', value: 1}, + {label: '沉默', value: 2}, + {label: '流失', value: 3}, + {label: '活跃', value: 4}, + ] + }, + registerTime: { + title: '注册时间', + type: 'string', + ui: { + widget: 'sl-from-to', type: 'date', format: 'yyyy-MM-dd', visibleIf: { + _$expand: (value: boolean) => value, + }, + } as SFDateWidgetSchema, + } + }, + type: 'object' + }; + this.ui = { '*': { spanLabelFixed: 110, grid: { span: 8, gutter: 4 } } }; + } + 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(result === null) { + return + } + 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'] + } else if(this.mode === 'date') { + this.time = [this.datePipe.transform(this.date, 'yyyy-MM-dd') + ' 00:00:00'] + } else{ + this.time = [this.datePipe.transform(this.defineDate[0], 'yyyy-MM-dd') + '00:00:00', this.datePipe.transform(this.defineDate[1], 'yyyy-MM-dd') + ' 00:00:00'] + } + this.st.reload({ ...this.reqParams }); + } + disabledDate = (current: Date): boolean => + // Can not select days before today and today + differenceInCalendarDays(current, this.today) > 0; + export() { + // this.service.downloadFile(this.service.$api_exportUploadBill, this.sf.value, {}); + } + search() { + this.st?.load(1) + + } + /** + * 伸缩查询条件 + */ + expandToggle() { + this._$expand = !this._$expand; + this.sf?.setValue('/_$expand', this._$expand); + } + + /** + * 重置表单 + */ + resetSF() { + this.sf.reset(); + this._$expand = false; + this.isLoading = true + } } diff --git a/src/app/routes/datatable/components/customtable/mancustomtable/mancustomtable.component.html b/src/app/routes/datatable/components/customtable/mancustomtable/mancustomtable.component.html index 482ccb06..47dd8d20 100644 --- a/src/app/routes/datatable/components/customtable/mancustomtable/mancustomtable.component.html +++ b/src/app/routes/datatable/components/customtable/mancustomtable/mancustomtable.component.html @@ -1,9 +1,51 @@ - - - + + + + + + + + + +
+
+ + +
+
+ + + + + + +
+ + +
+
+
+
+
+
+
-
- - - - + + + \ No newline at end of file diff --git a/src/app/routes/datatable/components/customtable/mancustomtable/mancustomtable.component.less b/src/app/routes/datatable/components/customtable/mancustomtable/mancustomtable.component.less new file mode 100644 index 00000000..d754ef94 --- /dev/null +++ b/src/app/routes/datatable/components/customtable/mancustomtable/mancustomtable.component.less @@ -0,0 +1,20 @@ +.chooseBox { + display: flex; + float : right; +} + +.timeBox { + display: flex; + margin : 0 0 0 10px; +} + +.dateBox { + display: inline-block; + margin : 0 0 0 10px; +} + +:host::ng-deep { + .ant-form-item-control { + max-width: 100%; + } +} \ No newline at end of file diff --git a/src/app/routes/datatable/components/customtable/mancustomtable/mancustomtable.component.ts b/src/app/routes/datatable/components/customtable/mancustomtable/mancustomtable.component.ts index 7f41c8ca..e81c0f4b 100644 --- a/src/app/routes/datatable/components/customtable/mancustomtable/mancustomtable.component.ts +++ b/src/app/routes/datatable/components/customtable/mancustomtable/mancustomtable.component.ts @@ -1,45 +1,234 @@ 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'; +import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/form'; +import { DatePipe, _HttpClient } from '@delon/theme'; +import { differenceInCalendarDays } from 'date-fns'; +import { DataService } from '../../../services/data.service'; @Component({ selector: 'app-datatable-mancustomtable', templateUrl: './mancustomtable.component.html', + styleUrls: ['./mancustomtable.component.less'], + providers: [DatePipe] }) export class DatatableMancustomtableComponent implements OnInit { url = `/user`; + @ViewChild('st', { static: false }) st!: STComponent; + @ViewChild('sf', { static: false }) sf!: SFComponent; + _$expand = false; + type = 1; + mode = 'year'; + date: any = null; + defineDate = []; + time: any = ['2022-01-01 00:00:00']; + dateFormat = 'yyyy'; + today = new Date(); + ui: SFUISchema = {}; + schema: SFSchema = {}; + isLoading: boolean = false; searchSchema: SFSchema = { properties: { - no: { + customerName: { type: 'string', - title: '编号' + title: '', + ui: { + placeholder: '请输入客户名称', + change: (value: any) => { + console.log(value); + this.st.reload({ ...this.reqParams }); + } + } + }, + salesmanName: { + type: 'string', + title: '', + ui: { + placeholder: '请输入业务员', + change: (value: any) => { + this.st.reload({ ...this.reqParams }); + } + } + }, + no4: { + type: 'string', + title: '', + ui: { + class: 'custom', + widget: 'custom', + grid: { xxl: 12, xl: 12, lg: 24, md: 24, sm: 24, xs: 24 } + } } } }; - @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: '部门', index: 'enterpriseName', className: 'text-center', width: '200px' }, + { title: '业务员', index: 'registerTime', className: 'text-center', width: '200px' }, + { title: '已认证货主数', index: 'customerType', className: 'text-center', width: '100px' }, + { title: '新增合伙人', index: 'customerType', className: 'text-center', width: '100px' }, + { title: '合伙人活跃率', index: 'customerType', className: 'text-center', width: '100px' }, + { title: '主动合伙人', index: 'customerType', className: 'text-center', width: '100px' }, + { title: '纪念合伙人', index: 'customerType', className: 'text-center', width: '100px' }, + { title: '流失合伙人', index: 'customerType', className: 'text-center', width: '100px' }, + { title: '未搭档合伙人', index: 'customerType', className: 'text-center', width: '100px' }, + { title: '新增货主数', index: 'salesmanName', className: 'text-center', width: '100px' }, + { title: '货主活跃率', index: 'partnerName', className: 'text-center', width: '100px' }, { - title: '', - buttons: [ - // { text: '查看', click: (item: any) => `/form/${item.id}` }, - // { text: '编辑', type: 'static', component: FormEditComponent, click: 'reload' }, - ] - } + title: '活跃货主数', + index: 'customerStatus', + className: 'text-center', + width: '100px' + }, + { title: '纪念货主数', index: 'zsl', className: 'text-center', width: '100px' }, + { + title: '货货主数', + index: 'ddje', + className: 'text-right', + width: '100px', + }, + { title: '未激活货主数', index: 'ysdds', className: 'text-center', width: '120px' } ]; + /** + * 查询参数 + */ + get reqParams() { + if (this.mode === 'year') { + this.type = 1; + } else if (this.mode === 'month') { + this.type = 2; + } else if (this.mode === 'date') { + this.type = 3; + } else { + this.type = 4; + } + let params: any = { + time: this.time, + type: this.type, + ...this.sf?.value + }; - constructor(private http: _HttpClient, private modal: ModalHelper) { } + delete params._$expand; + return { ...params }; + } + constructor(public service: DataService, private datePipe: DatePipe) {} + ngOnInit(): void { + this.initSF(); + } + /** + * 初始化查询表单 + */ + initSF() { + this.schema = { + properties: { + _$expand: { type: 'boolean', ui: { hidden: true } }, + enterpriseName: { + type: 'string', + title: '货主名称', + ui: { + placeholder: '请输入' + } + }, + customerType: { + type: 'string', + title: '客户类型', + ui: { + widget: 'select', + placeholder: '请选择' + }, + enum: [ + { label: '直客', value: 2 }, + { label: '渠道客户', value: 3 }, + { label: '平台客户', value: 1 } + ] + }, + customerStatus: { + type: 'string', + title: '客户状态', + ui: { + widget: 'select', + placeholder: '请选择' + }, + enum: [ + { label: '未激活', value: 1 }, + { label: '沉默', value: 2 }, + { label: '流失', value: 3 }, + { label: '活跃', value: 4 } + ] + }, + registerTime: { + title: '注册时间', + type: 'string', + ui: { + widget: 'sl-from-to', + type: 'date', + format: 'yyyy-MM-dd', + visibleIf: { + _$expand: (value: boolean) => value + } + } as SFDateWidgetSchema + } + }, + type: 'object' + }; + this.ui = { '*': { spanLabelFixed: 110, grid: { span: 8, gutter: 4 } } }; + } + 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 (result === null) { + return; + } + 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']; + } else if (this.mode === 'date') { + this.time = [this.datePipe.transform(this.date, 'yyyy-MM-dd') + ' 00:00:00']; + } else { + this.time = [ + this.datePipe.transform(this.defineDate[0], 'yyyy-MM-dd') + '00:00:00', + this.datePipe.transform(this.defineDate[1], 'yyyy-MM-dd') + ' 00:00:00' + ]; + } + this.st.reload({ ...this.reqParams }); + } + disabledDate = (current: Date): boolean => + // Can not select days before today and today + differenceInCalendarDays(current, this.today) > 0; - ngOnInit(): void { } - - add(): void { - // this.modal - // .createStatic(FormEditComponent, { i: { id: 0 } }) - // .subscribe(() => this.st.reload()); + export() { + // this.service.downloadFile(this.service.$api_exportUploadBill, this.sf.value, {}); + } + search() { + this.st?.load(1); + } + /** + * 伸缩查询条件 + */ + expandToggle() { + this._$expand = !this._$expand; + this.sf?.setValue('/_$expand', this._$expand); } + /** + * 重置表单 + */ + resetSF() { + this.sf.reset(); + this._$expand = false; + this.isLoading = true; + } + selectChange(e: number) { + // this.resourceStatus = e; + // this.initST(); + setTimeout(() => { + this.st.load(); + }, 500); + } } diff --git a/src/app/routes/datatable/services/data.service.ts b/src/app/routes/datatable/services/data.service.ts index 117ac0d8..a75ff652 100644 --- a/src/app/routes/datatable/services/data.service.ts +++ b/src/app/routes/datatable/services/data.service.ts @@ -4,7 +4,7 @@ * @Author : Shiming * @Date : 2021-12-27 10:30:56 * @LastEditors : Shiming - * @LastEditTime : 2022-04-15 16:03:46 + * @LastEditTime : 2022-04-18 16:37:20 * @FilePath : \\tms-obc-web\\src\\app\\routes\\datatable\\services\\data.service.ts * Copyright (C) 2022 huzhenhong. All rights reserved. */ @@ -88,6 +88,11 @@ export class DataService extends BaseService { // 客户-合规报表 $api_listCusComplianceReportPage = `/api/sdc/report/listCusComplianceReportPage`; + // 查询业务员报表-客户、合伙人 + $api_listPartBusinessReportPage = `/api/sdc/report/listPartBusinessReportPage`; + // 业务员-合规报表 + $api_listPartComplianceReportPage = `/api/sdc/report/listPartComplianceReportPage`; + constructor(public injector: Injector) { diff --git a/src/app/routes/order-management/components/bulk/bulk.component.ts b/src/app/routes/order-management/components/bulk/bulk.component.ts index 6504791e..15ba339a 100644 --- a/src/app/routes/order-management/components/bulk/bulk.component.ts +++ b/src/app/routes/order-management/components/bulk/bulk.component.ts @@ -324,7 +324,7 @@ export class OrderManagementBulkComponent implements OnInit { } } }, - enterpriseInfoId: { + enterpriseInfoName: { type: 'string', title: '网络货运人', ui: { @@ -334,7 +334,7 @@ export class OrderManagementBulkComponent implements OnInit { visibleIf: { _$expand: (value: boolean) => value }, - asyncData: () => this.shipperservice.getNetworkFreightForwarder() + asyncData: () => this.shipperservice.getNetworkEnterpriseName() } }, serviceType: { diff --git a/src/app/routes/order-management/components/complaint/complaint.component.ts b/src/app/routes/order-management/components/complaint/complaint.component.ts index 2d421c63..e29ca2e0 100644 --- a/src/app/routes/order-management/components/complaint/complaint.component.ts +++ b/src/app/routes/order-management/components/complaint/complaint.component.ts @@ -103,6 +103,17 @@ export class OrderManagementComplaintComponent implements OnInit { ui: { widget: 'dict-select', params: { dictKey: 'drvcomplaint:cause' }, + hidden: this.selectedMainTabStatus == '1', + containsAllLabel: true + } as SFSelectWidgetSchema + }, + shpComplaintCause: { + title: '投诉原因', + type: 'string', + ui: { + widget: 'dict-select', + params: { dictKey: 'drvcomplaint:cause' }, + hidden: this.selectedMainTabStatus == '2', containsAllLabel: true } as SFSelectWidgetSchema }, @@ -179,7 +190,7 @@ export class OrderManagementComplaintComponent implements OnInit { title: '处理人', className: 'text-center', width: '200px', - index: 'handlePartyLabel' + index: 'handlerName' }, { title: '处理时间', diff --git a/src/app/routes/order-management/components/vehicle/vehicle.component.ts b/src/app/routes/order-management/components/vehicle/vehicle.component.ts index b24ecb46..09e3ac81 100644 --- a/src/app/routes/order-management/components/vehicle/vehicle.component.ts +++ b/src/app/routes/order-management/components/vehicle/vehicle.component.ts @@ -299,14 +299,14 @@ export class OrderManagementVehicleComponent extends BasicTableComponent impleme placeholder: '请选择' } }, - enterpriseInfoId: { + enterpriseInfoName: { type: 'string', title: '网络货运人', ui: { widget: 'select', placeholder: '请选择', allowClear: true, - asyncData: () => this.shipperservice.getNetworkFreightForwarder() + asyncData: () => this.shipperservice.getNetworkEnterpriseName() } }, // goodsNameId: { diff --git a/src/app/routes/ticket-management/components/etc-invoiced-list/etc-invoiced-list.component.ts b/src/app/routes/ticket-management/components/etc-invoiced-list/etc-invoiced-list.component.ts index bb3aae92..f8aab8ac 100644 --- a/src/app/routes/ticket-management/components/etc-invoiced-list/etc-invoiced-list.component.ts +++ b/src/app/routes/ticket-management/components/etc-invoiced-list/etc-invoiced-list.component.ts @@ -37,7 +37,8 @@ export class ETCInvoicedListComponent implements OnInit { const modal = this.nzModalService.create({ nzTitle: '运单交易明细', nzContent: TransactionDetailsComponent, - nzWidth: 900, + nzNoAnimation: true, + nzWidth: 950, nzComponentParams: { data: item }, nzOnOk: com => { console.log(com.selectedData); @@ -147,8 +148,8 @@ export class ETCInvoicedListComponent implements OnInit { private initST(): STColumn[] { return [ - { title: '运单号', index: 'wayBillCode',width: 200 }, - { title: '订单号', index: 'billCode',width: 200 }, + { title: '运单号', index: 'wayBillCode', width: 200 }, + { title: '订单号', index: 'billCode', width: 200 }, { title: '开票状态', index: 'invoicingStatus', @@ -157,12 +158,12 @@ export class ETCInvoicedListComponent implements OnInit { width: 120 }, { title: '订单类型', index: 'billTypeLabel', width: 120 }, - { title: '装货地', index: 'loadingPlace',width: 200 }, - { title: '卸货地', index: 'dischargePlace' ,width: 200}, - { title: '司机信息', render: 'call1No' ,width: 200}, - { title: '车辆信息', render: 'call12No',width: 200 }, - { title: '托运人', index: 'shipperAppUserName',width: 200 }, - { title: '网络货运人', index: 'enterpriseInfoName' ,width: 200}, + { title: '装货地', index: 'loadingPlace', width: 200 }, + { title: '卸货地', index: 'dischargePlace', width: 200 }, + { title: '司机信息', render: 'call1No', width: 200 }, + { title: '车辆信息', render: 'call12No', width: 200 }, + { title: '托运人', index: 'shipperAppUserName', width: 200 }, + { title: '网络货运人', index: 'enterpriseInfoName', width: 200 }, { title: '开票金额', index: 'invoicingAmount', @@ -175,11 +176,9 @@ export class ETCInvoicedListComponent implements OnInit { title: '开票张数', index: 'invoicingNumber', width: 100, - type: 'widget', - className: 'text-right', - widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.invoicingNumber }) } + className: 'text-right' }, - { title: '申请时间', index: 'orderReceivingTime', type: 'date',width: 200 }, + { title: '申请时间', index: 'orderReceivingTime', type: 'date', width: 200 }, { title: '操作', className: 'text-center', diff --git a/src/app/routes/ticket-management/components/etc-invoiced-list/transaction-details/transaction-details.component.html b/src/app/routes/ticket-management/components/etc-invoiced-list/transaction-details/transaction-details.component.html index c5ec8500..fa1ba654 100644 --- a/src/app/routes/ticket-management/components/etc-invoiced-list/transaction-details/transaction-details.component.html +++ b/src/app/routes/ticket-management/components/etc-invoiced-list/transaction-details/transaction-details.component.html @@ -27,6 +27,6 @@ [res]="{ reName: { list: 'data.records', total: 'data.total' } }" [page]="{ show: true, showSize: true, pageSizes: [10, 20, 30, 50, 100, 200, 300, 500, 1000] }" [loading]="false" - [scroll]="{ x: '860px', y: '400px' }" + [scroll]="{ x: '890px', y: '400px' }" > diff --git a/src/app/routes/ticket-management/components/etc-invoiced-list/transaction-details/transaction-details.component.ts b/src/app/routes/ticket-management/components/etc-invoiced-list/transaction-details/transaction-details.component.ts index 56fe6d59..27ac6d3e 100644 --- a/src/app/routes/ticket-management/components/etc-invoiced-list/transaction-details/transaction-details.component.ts +++ b/src/app/routes/ticket-management/components/etc-invoiced-list/transaction-details/transaction-details.component.ts @@ -1,5 +1,5 @@ /* - * @Description : + * @Description : * @Version : 1.0 * @Author : Shiming * @Date : 2022-03-14 14:17:38 @@ -20,7 +20,7 @@ import { TicketService } from '../../../services/ticket.service'; templateUrl: './transaction-details.component.html' }) export class TransactionDetailsComponent implements OnInit { - data :any= []; + data: any = []; selectedData = []; url = `/api/fcc/ficoEtcInvoiceH/list/page`; @ViewChild('st', { static: true }) @@ -28,9 +28,15 @@ export class TransactionDetailsComponent implements OnInit { @ViewChild('sf', { static: false }) sf!: SFComponent; columns: STColumn[] = [ - { title: '交易id', index: 'id' }, + { title: '交易id', index: 'tradeId' }, { title: '交易流水号', index: 'tradeFlowNo' }, - { title: '交易金额', index: 'fee' }, + { + title: '交易金额', + index: 'fee', + type: 'widget', + className: 'text-right', + widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.fee }) } + }, { title: '开票状态', index: 'stateLabel' }, { title: '交易时间', index: 'exTime', type: 'date' } ]; @@ -63,17 +69,15 @@ export class TransactionDetailsComponent implements OnInit { } }; - constructor(public service: TicketService, private nzModalService: NzModalService, private router: Router) {} ngOnInit(): void { console.log(this.data); - } get reqParams() { const a: any = {}; if (this.data?.id) { - a.wayBillId = this.data?.wayBillId; + a.waybillId = this.data?.wayBillId; } const params: any = Object.assign({}, this.sf?.value || {}); delete params._$expand; diff --git a/src/app/routes/ticket-management/components/etc-invoiced-requested/etc-invoiced-requested.component.ts b/src/app/routes/ticket-management/components/etc-invoiced-requested/etc-invoiced-requested.component.ts index 7955bc1a..08ea0663 100644 --- a/src/app/routes/ticket-management/components/etc-invoiced-requested/etc-invoiced-requested.component.ts +++ b/src/app/routes/ticket-management/components/etc-invoiced-requested/etc-invoiced-requested.component.ts @@ -223,7 +223,7 @@ export class ETCInvoicedRequestedComponent implements OnInit { { title: '卸货地', index: 'dischargePlace', width: '220px' }, { title: '司机信息', render: 'call1No', width: '140px' }, { title: '车辆信息', render: 'call1N2o', width: '200px' }, - { title: '车牌颜色', index: 'licenseCarNOColor', width: '140px' }, + { title: '车牌颜色', index: 'licenseCarNOColorLabel', width: '140px' }, { title: '车辆是否已备案', index: 'putOnRecord', width: '150px', type: 'enum', enum: { false: '否', true: '是' } }, { title: '托运人', index: 'shipperAppUserName', width: '140px' }, { title: '网络货运人', index: 'enterpriseInfoName', width: '220px' }, diff --git a/src/app/routes/ticket-management/components/input-invoice/input-invoice.component.html b/src/app/routes/ticket-management/components/input-invoice/input-invoice.component.html index 3c1b49fd..5c6ac9d3 100644 --- a/src/app/routes/ticket-management/components/input-invoice/input-invoice.component.html +++ b/src/app/routes/ticket-management/components/input-invoice/input-invoice.component.html @@ -5,7 +5,7 @@
value } - } + }, + default: '' }, hrto: { type: 'string', title: '销售方', ui: { - placeholder: '请输入', + widget: 'select', + placeholder: '请选择', + allowClear: true, + asyncData: () => this.service.getCRMCustomerId(), visibleIf: { expand: (value: boolean) => value } @@ -156,8 +163,8 @@ export class InputInvoiceComponent implements OnInit { title: '收票状态', enum: [ { value: '', label: '全部' }, - { value: 1, label: '是' }, - { value: 0, label: '否' } + { value: '1', label: '新建' }, + { value: '2', label: '关闭' } ], ui: { widget: 'select', @@ -216,8 +223,8 @@ export class InputInvoiceComponent implements OnInit { private initST(): STColumn[] { return [ { title: '', index: 'key', type: 'checkbox', width: 60, className: 'text-center', fixed: 'left' }, - { title: '收票单号', index: 'inpinvcode', type: 'link', width: 170 }, - { title: '网络货运人', index: 'ltdName', width: 150 }, + { title: '收票单号', index: 'inpinvcode', type: 'link', width: 190 }, + { title: '网络货运人', index: 'ltdName', width: 220 }, { title: '发票日期', index: 'invdate', type: 'date', width: 150, className: 'text-center' }, { title: '发票号', index: 'invoiceno', width: 130 }, { @@ -237,7 +244,7 @@ export class InputInvoiceComponent implements OnInit { widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.invtax }) } }, { title: '发票类型', index: 'invtype', width: 150, className: 'text-center' }, - { title: '销售方', index: 'hrtoName', width: 150 }, + { title: '销售方', index: 'hrtoName', width: 200 }, { title: '创建时间', index: 'createtime', type: 'date', width: 150, className: 'text-center' }, { title: '创建人', index: 'createbyname', width: 120 }, { title: '收票状态', index: 'stsLabel', width: 120, className: 'text-center' }, diff --git a/src/app/routes/ticket-management/components/invoice-requested/invoice-requested-detail/invoice-requested-detail.component.html b/src/app/routes/ticket-management/components/invoice-requested/invoice-requested-detail/invoice-requested-detail.component.html index 0d2ad116..b22492f3 100644 --- a/src/app/routes/ticket-management/components/invoice-requested/invoice-requested-detail/invoice-requested-detail.component.html +++ b/src/app/routes/ticket-management/components/invoice-requested/invoice-requested-detail/invoice-requested-detail.component.html @@ -15,7 +15,7 @@ - {{headerInfo?.vatinvHNum}} / {{headerInfo?.vatinvBillNum}} + {{headerInfo?.vatinvHNum}} / {{headerInfo?.ordlines}} {{headerInfo?.vatinvHAmount |currency}} / {{headerInfo?.vatinvHNumAmount |currency}} diff --git a/src/app/routes/waybill-management/components/abnormal-appear/abnormal-appear.component.ts b/src/app/routes/waybill-management/components/abnormal-appear/abnormal-appear.component.ts index 5f02d97d..36fe755a 100644 --- a/src/app/routes/waybill-management/components/abnormal-appear/abnormal-appear.component.ts +++ b/src/app/routes/waybill-management/components/abnormal-appear/abnormal-appear.component.ts @@ -78,13 +78,21 @@ export class WaybillManagementAbnormalAppearComponent implements OnInit { get reqParams() { return { ...this.sf?.value, - replyStatus: this.resourceStatus || 0 + replyStatus: this.resourceStatus || 0, + reportingTime: { + start: this.sf?.value?.reportingTime?.[0] || '', + end: this.sf?.value?.reportingTime?.[1] || '' + }, }; } get reqParams2() { return { ...this.sf?.value, - replyStatus: this.resourceStatus || 1 + replyStatus: this.resourceStatus || 1, + reportingTime: { + start: this.sf?.value?.reportingTime?.[0] || '', + end: this.sf?.value?.reportingTime?.[1] || '' + }, }; } diff --git a/src/app/shared/services/business/shipper-base.service.ts b/src/app/shared/services/business/shipper-base.service.ts index 6390cbd0..8713292a 100644 --- a/src/app/shared/services/business/shipper-base.service.ts +++ b/src/app/shared/services/business/shipper-base.service.ts @@ -124,6 +124,30 @@ export class ShipperBaseService extends BaseService { * @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]; + }) + ); + } + /** + * 获取网络货运人 + * @returns + */ + getNetworkEnterpriseName(params = {}, containerAll = false) { return this.request(this.$api_get_network_freight_forwarder_list, params).pipe( map((res: any) => { if (!res) { @@ -169,6 +193,31 @@ export class ShipperBaseService extends BaseService { ); } + /** + * 获取CRM客户 crmCustomerId + * @returns + */ + getCRMCustomerId(params = {}, containerAll = false) { + return this.request(this.$api_get_crm_customer_list, params).pipe( + map((res: any) => { + if (!res) { + return []; + } + const list = res.map((item: any) => { + return { + label: item.enterpriseName, + value: item.crmCustomerId + }; + }); + const obj = []; + if (containerAll) { + obj.push({ label: '全部', value: '' }); + } + return [...obj, ...list]; + }) + ); + } + /** * 获取货主企业列表 * @returns