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/compliance/salesman/salesman.component.html b/src/app/routes/datatable/components/compliance/salesman/salesman.component.html index 04d2fd7f..7ba68896 100644 --- a/src/app/routes/datatable/components/compliance/salesman/salesman.component.html +++ b/src/app/routes/datatable/components/compliance/salesman/salesman.component.html @@ -4,22 +4,18 @@ * @Author : Shiming * @Date : 2022-03-30 17:57:46 * @LastEditors : Shiming - * @LastEditTime : 2022-04-18 16:11:00 + * @LastEditTime : 2022-04-18 16:37:41 * @FilePath : \\tms-obc-web\\src\\app\\routes\\datatable\\components\\compliance\\salesman\\salesman.component.html * Copyright (C) 2022 huzhenhong. All rights reserved. --> - - - - - - + + +
-
@@ -40,10 +36,9 @@
-
- diff --git a/src/app/routes/datatable/components/compliance/salesman/salesman.component.less b/src/app/routes/datatable/components/compliance/salesman/salesman.component.less index d754ef94..590729b4 100644 --- a/src/app/routes/datatable/components/compliance/salesman/salesman.component.less +++ b/src/app/routes/datatable/components/compliance/salesman/salesman.component.less @@ -1,7 +1,4 @@ -.chooseBox { - display: flex; - float : right; -} + .timeBox { display: flex; 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 ea13ba98..1ed776e9 100644 --- a/src/app/routes/datatable/components/compliance/salesman/salesman.component.ts +++ b/src/app/routes/datatable/components/compliance/salesman/salesman.component.ts @@ -29,11 +29,11 @@ export class DatatableComplianceSalesmanComponent implements OnInit { isLoading: boolean = false; searchSchema: SFSchema = { properties: { - customerName: { + department: { type: 'string', title: '', ui: { - placeholder: '请输入客户名称', + placeholder: '请选择部门', change: (value: any) => { console.log(value); this.st.reload({ ...this.reqParams }); @@ -41,11 +41,22 @@ export class DatatableComplianceSalesmanComponent implements OnInit { }, }, - salesmanName: { + 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 }); } @@ -57,39 +68,21 @@ export class DatatableComplianceSalesmanComponent implements OnInit { ui: { class: 'custom', widget: 'custom', - grid: { xxl: 12, xl: 12, lg: 24, md: 24, sm: 24, xs: 24 } + grid: { xxl: 12, xl: 12, lg: 12, md: 12, sm: 12, xs: 12 } } } - } + }, + }; columns: STColumn[] = [ - { title: '货主名称', index: 'enterpriseName', className: 'text-center', width: '200px' }, - { title: '注册时间', index: 'registerTime', className: 'text-center', width: '200px' }, - { title: '客户类型', index: 'customerType', className: 'text-center', width: '100px', type: 'enum', enum: { - 1: '平台客户', - 2: '直客', - 3: '渠道客户' - } - }, - { title: '业务员', index: 'salesmanName', className: 'text-center', width: '100px' }, - { title: '合伙人', index: 'partnerName', className: 'text-center', width: '100px' }, - { title: '客户状态', index: 'customerStatus', className: 'text-center', width: '100px', type: 'enum', enum: { - 1: '未激活', - 2: '沉默', - 3: '流失', - 4: '活跃' - } }, - { title: '订单数', index: 'zsl', className: 'text-center', width: '100px' }, - { title: '订单金额', index: 'ddje', className: 'text-right', width: '100px', type: 'widget', widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.ddje }) } }, - { title: '应收订单数', index: 'ysdds', className: 'text-center', width: '120px' }, - { title: '应收金额', index: 'yingsje', className: 'text-right', width: '100px', type: 'widget', widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.yingsje }) } }, - { title: '待开票订单数', index: 'yifyf', className: 'text-center', width: '130px' }, - { title: '待开票金额', index: 'dkpdds', className: 'text-right', width: '120px', type: 'widget', widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.dkpdds }) } }, - { title: '已收金额', index: 'yisje', className: 'text-right', width: '100px', type: 'widget', widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.yisje }) } }, - { title: '应收附加费', index: 'yingsfjf', className: 'text-right', width: '120px', type: 'widget', widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.yingsfjf }) } }, - { title: '已收附加费', index: 'yisfjf', className: 'text-right', width: '120px', type: 'widget', widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.yisfjf }) } }, - { title: '附加费率', index: 'fjfl', className: 'text-center', width: '100px' }, - { title: '已开票金额', index: 'ykpje', className: 'text-right', width: '100px', type: 'widget', widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.ykpje }) } }, + { 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) + '%'  } }, ]; /** * 查询参数 @@ -223,11 +216,4 @@ export class DatatableComplianceSalesmanComponent implements OnInit { 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/components/customtable/mancustomtable/mancustomtable.component.html b/src/app/routes/datatable/components/customtable/mancustomtable/mancustomtable.component.html index e85440da..47dd8d20 100644 --- a/src/app/routes/datatable/components/customtable/mancustomtable/mancustomtable.component.html +++ b/src/app/routes/datatable/components/customtable/mancustomtable/mancustomtable.component.html @@ -4,7 +4,7 @@ * @Author : Shiming * @Date : 2022-03-30 17:57:46 * @LastEditors : Shiming - * @LastEditTime : 2022-04-18 16:12:19 + * @LastEditTime : 2022-04-18 16:45:14 * @FilePath : \\tms-obc-web\\src\\app\\routes\\datatable\\components\\customtable\\mancustomtable\\mancustomtable.component.html * Copyright (C) 2022 huzhenhong. All rights reserved. --> @@ -43,7 +43,7 @@ - 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 af76ee24..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,11 +1,10 @@ import { Component, OnInit, ViewChild } from '@angular/core'; import { STColumn, STComponent } from '@delon/abc/st'; import { SFComponent, SFDateWidgetSchema, SFSchema, SFUISchema } from '@delon/form'; -import { DatePipe, _HttpClient } from '@delon/theme'; +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', @@ -21,7 +20,7 @@ export class DatatableMancustomtableComponent implements OnInit { mode = 'year'; date: any = null; defineDate = []; - time: any = ['2022-01-01 00:00:00'] + time: any = ['2022-01-01 00:00:00']; dateFormat = 'yyyy'; today = new Date(); ui: SFUISchema = {}; @@ -38,8 +37,7 @@ export class DatatableMancustomtableComponent implements OnInit { console.log(value); this.st.reload({ ...this.reqParams }); } - }, - + } }, salesmanName: { type: 'string', @@ -63,61 +61,59 @@ export class DatatableMancustomtableComponent implements OnInit { } }; columns: STColumn[] = [ - { title: '货主名称', index: 'enterpriseName', className: 'text-center', width: '200px' }, - { title: '注册时间', index: 'registerTime', className: 'text-center', width: '200px' }, - { title: '客户类型', index: 'customerType', className: 'text-center', width: '100px', type: 'enum', enum: { - 1: '平台客户', - 2: '直客', - 3: '渠道客户' - } - }, - { title: '业务员', index: 'salesmanName', className: 'text-center', width: '100px' }, - { title: '合伙人', index: 'partnerName', className: 'text-center', width: '100px' }, - { title: '客户状态', index: 'customerStatus', className: 'text-center', width: '100px', type: 'enum', enum: { - 1: '未激活', - 2: '沉默', - 3: '流失', - 4: '活跃' - } }, - { title: '订单数', index: 'zsl', className: 'text-center', width: '100px' }, - { title: '订单金额', index: 'ddje', className: 'text-right', width: '100px', type: 'widget', widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.ddje }) } }, - { title: '应收订单数', index: 'ysdds', className: 'text-center', width: '120px' }, - { title: '应收金额', index: 'yingsje', className: 'text-right', width: '100px', type: 'widget', widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.yingsje }) } }, - { title: '待开票订单数', index: 'yifyf', className: 'text-center', width: '130px' }, - { title: '待开票金额', index: 'dkpdds', className: 'text-right', width: '120px', type: 'widget', widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.dkpdds }) } }, - { title: '已收金额', index: 'yisje', className: 'text-right', width: '100px', type: 'widget', widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.yisje }) } }, - { title: '应收附加费', index: 'yingsfjf', className: 'text-right', width: '120px', type: 'widget', widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.yingsfjf }) } }, - { title: '已收附加费', index: 'yisfjf', className: 'text-right', width: '120px', type: 'widget', widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.yisfjf }) } }, - { title: '附加费率', index: 'fjfl', className: 'text-center', width: '100px' }, - { title: '已开票金额', index: 'ykpje', className: 'text-right', width: '100px', type: 'widget', widget: { type: 'currency-chy', params: ({ record }) => ({ value: record.ykpje }) } }, + { 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: '活跃货主数', + 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 + 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 + 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 { + constructor(public service: DataService, private datePipe: DatePipe) {} + ngOnInit(): void { this.initSF(); } - /** + /** * 初始化查询表单 */ initSF() { @@ -128,7 +124,7 @@ export class DatatableMancustomtableComponent implements OnInit { type: 'string', title: '货主名称', ui: { - placeholder: '请输入', + placeholder: '请输入' } }, customerType: { @@ -136,12 +132,12 @@ export class DatatableMancustomtableComponent implements OnInit { title: '客户类型', ui: { widget: 'select', - placeholder: '请选择', + placeholder: '请选择' }, enum: [ - {label: '直客', value: 2}, - {label: '渠道客户', value: 3}, - {label: '平台客户', value: 1}, + { label: '直客', value: 2 }, + { label: '渠道客户', value: 3 }, + { label: '平台客户', value: 1 } ] }, customerStatus: { @@ -149,50 +145,56 @@ export class DatatableMancustomtableComponent implements OnInit { title: '客户状态', ui: { widget: 'select', - placeholder: '请选择', + placeholder: '请选择' }, enum: [ - {label: '未激活', value: 1}, - {label: '沉默', value: 2}, - {label: '流失', value: 3}, - {label: '活跃', value: 4}, + { 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, + 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' + changeData() { + if (this.mode === 'year') { + this.dateFormat = 'yyyy'; + } else if (this.mode === 'month') { + this.dateFormat = 'yyyy-MM'; } else { - this.dateFormat = 'yyyy-MM-dd' - } + this.dateFormat = 'yyyy-MM-dd'; + } } onChange(result: any) { - if(result === null) { - return + 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'] + 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 }); } @@ -200,28 +202,27 @@ export class DatatableMancustomtableComponent implements OnInit { // 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) - + 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); - } - + expandToggle() { + this._$expand = !this._$expand; + this.sf?.setValue('/_$expand', this._$expand); + } + /** * 重置表单 */ - resetSF() { + resetSF() { this.sf.reset(); this._$expand = false; - this.isLoading = true + this.isLoading = true; } selectChange(e: number) { // this.resourceStatus = e; 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) {