|
|
|
@ -10,6 +10,19 @@ import { cloneDeep, fixTo2Decimals, sortBy, isEmpty, pick } from '../utils/commo
|
|
|
|
|
import Column from '../components/Column';
|
|
|
|
|
import { groupsMappedByKey } from './../libs/ht';
|
|
|
|
|
|
|
|
|
|
const COLOR_SETS = [
|
|
|
|
|
"#FFFFFF",
|
|
|
|
|
// "#5B8FF9",
|
|
|
|
|
// "#FF6B3B",
|
|
|
|
|
"#9FB40F",
|
|
|
|
|
"#76523B",
|
|
|
|
|
"#DAD5B5",
|
|
|
|
|
"#E19348",
|
|
|
|
|
"#F383A2",
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
const transparentHex = '1A';
|
|
|
|
|
|
|
|
|
|
const numberConvert10K = (number, scale = 10) => {
|
|
|
|
|
return fixTo2Decimals((number/(1000*scale)));
|
|
|
|
|
};
|
|
|
|
@ -34,7 +47,7 @@ export default observer((props) => {
|
|
|
|
|
const separateParam = [];
|
|
|
|
|
if (includeCH) {
|
|
|
|
|
const inCH = deptList.filter(k => ['1', '2', '7'].includes(k)).join(',');
|
|
|
|
|
separateParam.push({ DepartmentList: inCH, retLabel: 'CH'});
|
|
|
|
|
separateParam.push({ DepartmentList: inCH, retLabel: 'CH'});
|
|
|
|
|
}
|
|
|
|
|
if (includeAH) {
|
|
|
|
|
separateParam.push({ DepartmentList: '28', retLabel: 'AH'});
|
|
|
|
@ -103,14 +116,17 @@ export default observer((props) => {
|
|
|
|
|
* 业绩数据列
|
|
|
|
|
* ! 成行率: CH个人成行率<12%, AH个人成行率<8%
|
|
|
|
|
*/
|
|
|
|
|
const dataFields = (suffix) => [
|
|
|
|
|
const dataFields = (suffix, colRootIndex) => [
|
|
|
|
|
{
|
|
|
|
|
key: 'ConfirmRates' + suffix,
|
|
|
|
|
title: '成行率',
|
|
|
|
|
dataIndex: [suffix, 'ConfirmRates'],
|
|
|
|
|
width: '5em',
|
|
|
|
|
// CH个人成行率<12%, AH个人成行率<8%刷红
|
|
|
|
|
render: (val, r) => ({ props: { style: { color: val < (retPropsMinRatesSet?.[r?.retProps || 'default'] || retPropsMinRatesSet.default) ? 'red' : 'green' } }, children: val ? `${val}%` : '' }),
|
|
|
|
|
render: (val, r) => ({
|
|
|
|
|
props: { style: { color: val < (retPropsMinRatesSet?.[r?.retProps || 'default'] || retPropsMinRatesSet.default) ? 'red' : 'green', backgroundColor: COLOR_SETS[colRootIndex]+transparentHex } },
|
|
|
|
|
children: val ? `${val}%` : '',
|
|
|
|
|
}),
|
|
|
|
|
sorter: (a, b) => (a.groupType === 'overview' ? -1 : b.groupType === 'overview' ? 0 : a[suffix].ConfirmRates - b[suffix].ConfirmRates),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
@ -118,7 +134,10 @@ export default observer((props) => {
|
|
|
|
|
title: '业绩/万',
|
|
|
|
|
dataIndex: [suffix, 'SumML'],
|
|
|
|
|
width: '5em',
|
|
|
|
|
render: (_, r) => numberConvert10K(_),
|
|
|
|
|
render: (_, r) => ({
|
|
|
|
|
props: { style: { backgroundColor: COLOR_SETS[colRootIndex]+transparentHex } },
|
|
|
|
|
children: numberConvert10K(_),
|
|
|
|
|
}),
|
|
|
|
|
sorter: (a, b) => (a.groupType === 'overview' ? -1 : b.groupType === 'overview' ? 0 : a[suffix].SumML - b[suffix].SumML),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
@ -126,6 +145,10 @@ export default observer((props) => {
|
|
|
|
|
title: '团数',
|
|
|
|
|
dataIndex: [suffix, 'ConfirmOrder'],
|
|
|
|
|
width: '5em',
|
|
|
|
|
render: (_, r) => ({
|
|
|
|
|
props: { style: { backgroundColor: COLOR_SETS[colRootIndex]+transparentHex } },
|
|
|
|
|
children: _,
|
|
|
|
|
}),
|
|
|
|
|
sorter: (a, b) => (a.groupType === 'overview' ? -1 : b.groupType === 'overview' ? 0 : a[suffix].ConfirmOrder - b[suffix].ConfirmOrder),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
@ -133,6 +156,10 @@ export default observer((props) => {
|
|
|
|
|
title: '订单数',
|
|
|
|
|
dataIndex: [suffix, 'SumOrder'],
|
|
|
|
|
width: '5em',
|
|
|
|
|
render: (_, r) => ({
|
|
|
|
|
props: { style: { backgroundColor: COLOR_SETS[colRootIndex]+transparentHex } },
|
|
|
|
|
children: _,
|
|
|
|
|
}),
|
|
|
|
|
sorter: (a, b) => (a.groupType === 'overview' ? -1 : b.groupType === 'overview' ? 0 : a[suffix].SumOrder - b[suffix].SumOrder),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
@ -140,6 +167,10 @@ export default observer((props) => {
|
|
|
|
|
title: '老客户团数',
|
|
|
|
|
dataIndex: [suffix, 'ResumeOrder'],
|
|
|
|
|
width: '5em',
|
|
|
|
|
render: (_, r) => ({
|
|
|
|
|
props: { style: { backgroundColor: COLOR_SETS[colRootIndex]+transparentHex } },
|
|
|
|
|
children: _,
|
|
|
|
|
}),
|
|
|
|
|
sorter: (a, b) => (a.groupType === 'overview' ? -1 : b.groupType === 'overview' ? 0 : a[suffix].ResumeOrder - b[suffix].ResumeOrder),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
@ -147,7 +178,10 @@ export default observer((props) => {
|
|
|
|
|
title: '老客户成行率',
|
|
|
|
|
dataIndex: [suffix, 'ResumeRates'],
|
|
|
|
|
width: '5em',
|
|
|
|
|
render: (val, r) => ({ children: val ? `${val}%` : '' }),
|
|
|
|
|
render: (val, r) => ({
|
|
|
|
|
props: { style: { backgroundColor: COLOR_SETS[colRootIndex]+transparentHex } },
|
|
|
|
|
children: val ? `${val}%` : ''
|
|
|
|
|
}),
|
|
|
|
|
sorter: (a, b) => (a.groupType === 'overview' ? -1 : b.groupType === 'overview' ? 0 : a[suffix].ResumeRates - b[suffix].ResumeRates),
|
|
|
|
|
},
|
|
|
|
|
];
|
|
|
|
@ -168,12 +202,12 @@ export default observer((props) => {
|
|
|
|
|
{
|
|
|
|
|
title: '前90 -30天',
|
|
|
|
|
key: 'date',
|
|
|
|
|
children: dataFields('result90'),
|
|
|
|
|
children: dataFields('result90', 0),
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '前180 -50天',
|
|
|
|
|
key: 'department',
|
|
|
|
|
children: dataFields('result180'),
|
|
|
|
|
children: dataFields('result180', 1),
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
rowClassName: (record, rowIndex) => {
|
|
|
|
@ -231,7 +265,7 @@ export default observer((props) => {
|
|
|
|
|
...formValues,
|
|
|
|
|
...SalesCRMDataStore.searchValues,
|
|
|
|
|
},
|
|
|
|
|
shows: ['DepartmentList', 'WebCode'],
|
|
|
|
|
shows: ['DepartmentList', 'WebCode', 'date'],
|
|
|
|
|
fieldProps: {
|
|
|
|
|
DepartmentList: { show_all: false, mode: 'multiple', col: 5 },
|
|
|
|
|
WebCode: { show_all: false, mode: 'multiple', col: 5 },
|
|
|
|
|