Merge remote-tracking branch 'origin/main'

main
Lei OT 3 months ago
commit dcb185be5a

@ -3,7 +3,7 @@ import moment from "moment";
import { NavLink } from "react-router-dom"; import { NavLink } from "react-router-dom";
import * as config from "../config"; import * as config from "../config";
import * as req from '../utils/request'; import * as req from '../utils/request';
import { groupBy, prepareUrl } from '../utils/commons'; import { groupBy, prepareUrl, isEmpty, show_vs_tag, formatPercent, percentToDecimal } from '../utils/commons';
class CustomerServices { class CustomerServices {
@ -53,113 +53,264 @@ class CustomerServices {
.then(json => { .then(json => {
if (json.errcode === 0) { if (json.errcode === 0) {
runInAction(() => { runInAction(() => {
const splitTotalList = groupBy(json.result1, row => row.EOI_ObjSN === -1 ? '0' : '1'); if (isEmpty(json.result2)){
this.agentGroupList = splitTotalList['1']; const splitTotalList = groupBy(json.result1, row => row.EOI_ObjSN === -1 ? '0' : '1');
const total1 = splitTotalList['0']?.[0] || {}; // json.total1; this.agentGroupList = splitTotalList['1'];
this.agentGroupListColumns = [ const total1 = splitTotalList['0']?.[0] || {}; // json.total1;
{ this.agentGroupListColumns = [
title: '地接社名称', {
dataIndex: 'VendorName', title: '地接社名称',
fixed: 'left', dataIndex: 'VendorName',
children: [{ fixed: 'left',
// title: this.startDate.format(config.DATE_FORMAT) + '~' + this.endDate.format(config.DATE_FORMAT), children: [{
dataIndex: 'VendorName', // title: this.startDate.format(config.DATE_FORMAT) + '~' + this.endDate.format(config.DATE_FORMAT),
fixed: 'left', dataIndex: 'VendorName',
render: (text, record) => <NavLink to={`/agent/${record.EOI_ObjSN}/group/list`}>{record.VendorName}</NavLink> fixed: 'left',
} render: (text, record) => <NavLink to={`/agent/${record.EOI_ObjSN}/group/list`}>{record.VendorName}</NavLink>
] }
}, ]
{ },
title: '团数', {
dataIndex: 'GroupCount', title: '团数',
sorter: (a, b) => a.GroupCount - b.GroupCount, dataIndex: 'GroupCount',
children: [{ sorter: (a, b) => a.GroupCount - b.GroupCount,
title: total1.GroupCount, children: [{
dataIndex: 'GroupCount' title: total1.GroupCount,
} dataIndex: 'GroupCount'
] }
}, ]
{ },
title: '人数', {
dataIndex: 'PersonNum', title: '人数',
sorter: (a, b) => a.PersonNum - b.PersonNum, dataIndex: 'PersonNum',
children: [{ sorter: (a, b) => a.PersonNum - b.PersonNum,
title: total1.PersonNum, children: [{
dataIndex: 'PersonNum' title: total1.PersonNum,
} dataIndex: 'PersonNum'
] }
}, ]
{ },
title: '团天数', {
dataIndex: 'GroupDays', title: '团天数',
sorter: (a, b) => a.GroupDays - b.GroupDays, dataIndex: 'GroupDays',
children: [{ sorter: (a, b) => a.GroupDays - b.GroupDays,
title: total1.GroupDays, children: [{
dataIndex: 'GroupDays' title: total1.GroupDays,
} dataIndex: 'GroupDays'
] }
}, ]
{ },
title: '交易额', {
dataIndex: 'totalcost', title: '交易额',
sorter: (a, b) => a.totalcost - b.totalcost, dataIndex: 'totalcost',
children: [{ sorter: (a, b) => a.totalcost - b.totalcost,
title: total1.totalcost, children: [{
dataIndex: 'totalcost' title: total1.totalcost,
} dataIndex: 'totalcost'
] }
}, ]
{ },
title: '前勤分', {
dataIndex: 'qianqin', title: '前勤分',
sorter: (a, b) => a.qianqin - b.qianqin, dataIndex: 'qianqin',
children: [{ sorter: (a, b) => a.qianqin - b.qianqin,
title: total1.qianqin, children: [{
dataIndex: 'qianqin' title: total1.qianqin,
} dataIndex: 'qianqin'
] }
}, ]
{ },
title: '好评数', {
dataIndex: 'GoodCount', title: '好评数',
sorter: (a, b) => a.GoodCount - b.GoodCount, dataIndex: 'GoodCount',
children: [{ sorter: (a, b) => a.GoodCount - b.GoodCount,
title: total1.GoodCount, children: [{
dataIndex: 'GoodCount' title: total1.GoodCount,
} dataIndex: 'GoodCount'
] }
}, ]
{ },
title: '好评率', {
dataIndex: 'GoodRate', title: '好评率',
sorter: (a, b) => parseInt(a.GoodRate) - parseInt(b.GoodRate), dataIndex: 'GoodRate',
children: [{ sorter: (a, b) => parseInt(a.GoodRate) - parseInt(b.GoodRate),
title: total1.GoodRate, children: [{
dataIndex: 'GoodRate' title: total1.GoodRate,
} dataIndex: 'GoodRate'
] }
}, ]
{ },
title: '差评数', {
dataIndex: 'BadCount', title: '差评数',
sorter: (a, b) => a.BadCount - b.BadCount, dataIndex: 'BadCount',
children: [{ sorter: (a, b) => a.BadCount - b.BadCount,
title: total1.BadCount, children: [{
dataIndex: 'BadCount' title: total1.BadCount,
} dataIndex: 'BadCount'
] }
}, ]
{ },
title: '差评率', {
dataIndex: 'BadRate', title: '差评率',
sorter: (a, b) => parseInt(a.BadRate) - parseInt(b.BadRate), dataIndex: 'BadRate',
children: [{ sorter: (a, b) => parseInt(a.BadRate) - parseInt(b.BadRate),
title: total1.BadRate, children: [{
dataIndex: 'BadRate' title: total1.BadRate,
dataIndex: 'BadRate'
}
]
}
];
}
else{
const splitTotalList1 = groupBy(json.result1, row => row.EOI_ObjSN === -1 ? '0' : '1');
const splitTotalList2 = groupBy(json.result2, row => row.EOI_ObjSN === -1 ? '0' : '1');
const result = [];
for (const item1 of splitTotalList1['1']) {
for (const item2 of splitTotalList2['1']) {
if (item1.EOI_ObjSN === item2.EOI_ObjSN) {
const goodRate1 = percentToDecimal(item1.GoodRate);
const goodRate2 = percentToDecimal(item2.GoodRate);
const badRate1 = percentToDecimal(item1.BadRate);
const badRate2 = percentToDecimal(item2.BadRate);
result.push({
EOI_ObjSN: item1.EOI_ObjSN,
VendorName: item1.VendorName,
GroupCount: show_vs_tag(formatPercent((item1.GroupCount-item2.GroupCount)/item2.GroupCount),item1.GroupCount-item2.GroupCount,item1.GroupCount,item2.GroupCount),
PersonNum: show_vs_tag(formatPercent((item1.PersonNum-item2.PersonNum)/item2.PersonNum),item1.PersonNum-item2.PersonNum,item1.PersonNum,item2.PersonNum),
GroupDays: show_vs_tag(formatPercent((item1.GroupDays-item2.GroupDays)/item2.GroupDays),item1.GroupDays-item2.GroupDays,item1.GroupDays,item2.GroupDays),
totalcost: show_vs_tag(formatPercent((item1.totalcost-item2.totalcost)/item2.totalcost),
(item1.totalcost-item2.totalcost).toFixed(2),item1.totalcost,item2.totalcost),
GoodCount: show_vs_tag(formatPercent((item1.GoodCount-item2.GoodCount)/item2.GoodCount),item1.GoodCount-item2.GoodCount,item1.GoodCount,item2.GoodCount),
GoodRate: show_vs_tag(formatPercent((goodRate1-goodRate2)/goodRate2),formatPercent(goodRate1-goodRate2),item1.GoodRate,item2.GoodRate),
BadCount: show_vs_tag(formatPercent((item1.BadCount-item2.BadCount)/item2.BadCount),item1.BadCount-item2.BadCount,item1.BadCount,item2.BadCount),
BadRate: show_vs_tag(formatPercent((badRate1-badRate2)/badRate2),formatPercent(badRate1-badRate2),item1.BadRate,item2.BadRate),
qianqin: show_vs_tag(formatPercent((item1.qianqin-item2.qianqin)/item2.qianqin),(item1.qianqin-item2.qianqin).toFixed(2),item1.qianqin,item2.qianqin),
key:item1.key,
});
} }
] }
} }
]; this.agentGroupList = result;
const total1 = splitTotalList1['0']?.[0] || {};
const total2 = splitTotalList2['0']?.[0] || {};
this.agentGroupListColumns = [
{
title: '地接社名称',
dataIndex: 'VendorName',
fixed: 'left',
children: [{
// title: this.startDate.format(config.DATE_FORMAT) + '~' + this.endDate.format(config.DATE_FORMAT),
dataIndex: 'VendorName',
fixed: 'left',
render: (text, record) => <NavLink to={`/agent/${record.EOI_ObjSN}/group/list`}>{record.VendorName}</NavLink>
}
]
},
{
title: '团数',
dataIndex: 'GroupCount',
sorter: (a, b) => a.GroupCount - b.GroupCount,
children: [{
title: show_vs_tag(formatPercent((total1.GroupCount-total2.GroupCount)/total2.GroupCount),total1.GroupCount-total2.GroupCount,total1.GroupCount,total2.GroupCount),
titleX: [total1.GroupCount, total2.GroupCount].join(' vs '),
dataIndex: 'GroupCount'
}
]
},
{
title: '人数',
dataIndex: 'PersonNum',
sorter: (a, b) => a.PersonNum - b.PersonNum,
children: [{
title: show_vs_tag(formatPercent((total1.PersonNum-total2.PersonNum)/total2.PersonNum),total1.PersonNum-total2.PersonNum,total1.PersonNum,total2.PersonNum),
titleX: [total1.PersonNum, total2.PersonNum].join(' vs '),
dataIndex: 'PersonNum'
}
]
},
{
title: '团天数',
dataIndex: 'GroupDays',
sorter: (a, b) => a.GroupDays - b.GroupDays,
children: [{
title: show_vs_tag(formatPercent((total1.GroupDays-total2.GroupDays)/total2.GroupDays),total1.GroupDays-total2.GroupDays,total1.GroupDays,total2.GroupDays),
titleX: [total1.GroupDays, total2.GroupDays].join(' vs '),
dataIndex: 'GroupDays'
}
]
},
{
title: '交易额',
dataIndex: 'totalcost',
sorter: (a, b) => a.totalcost - b.totalcost,
children: [{
title: show_vs_tag(formatPercent((total1.totalcost-total2.totalcost)/total2.totalcost),(total1.totalcost-total2.totalcost).toFixed(2),total1.totalcost,total2.totalcost),
titleX: [total1.totalcost, total2.totalcost].join(' vs '),
dataIndex: 'totalcost'
}
]
},
{
title: '前勤分',
dataIndex: 'qianqin',
sorter: (a, b) => a.qianqin - b.qianqin,
children: [{
title: show_vs_tag(formatPercent((total1.qianqin-total2.qianqin)/total2.qianqin),(total1.qianqin-total2.qianqin).toFixed(2),total1.qianqin,total2.qianqin),
titleX: [total1.qianqin, total2.qianqin].join(' vs '),
dataIndex: 'qianqin'
}
]
},
{
title: '好评数',
dataIndex: 'GoodCount',
sorter: (a, b) => a.GoodCount - b.GoodCount,
children: [{
title: show_vs_tag(formatPercent((total1.GoodCount-total2.GoodCount)/total2.GoodCount),total1.GoodCount-total2.GoodCount,total1.GoodCount,total2.GoodCount),
titleX: [total1.GoodCount, total2.GoodCount].join(' vs '),
dataIndex: 'GoodCount'
}
]
},
{
title: '好评率',
dataIndex: 'GoodRate',
sorter: (a, b) => parseInt(a.GoodRate) - parseInt(b.GoodRate),
children: [{
title: show_vs_tag(formatPercent((percentToDecimal(total1.GoodRate)-percentToDecimal(total2.GoodRate))/percentToDecimal(total2.GoodRate)),
formatPercent(percentToDecimal(total1.GoodRate)-percentToDecimal(total2.GoodRate)),total1.GoodRate,total2.GoodRate),
titleX: [total1.GoodRate, total2.GoodRate].join(' vs '),
dataIndex: 'GoodRate'
}
]
},
{
title: '差评数',
dataIndex: 'BadCount',
sorter: (a, b) => a.BadCount - b.BadCount,
children: [{
title: show_vs_tag(formatPercent((total1.BadCount-total2.BadCount)/total2.BadCount),total1.BadCount-total2.BadCount,total1.BadCount,total2.BadCount),
titleX: [total1.BadCount, total2.BadCount].join(' vs '),
dataIndex: 'BadCount'
}
]
},
{
title: '差评率',
dataIndex: 'BadRate',
sorter: (a, b) => parseInt(a.BadRate) - parseInt(b.BadRate),
children: [{
title: show_vs_tag(formatPercent((percentToDecimal(total1.BadRate)-percentToDecimal(total2.BadRate))/percentToDecimal(total2.GoodRate)),
formatPercent(percentToDecimal(total1.BadRate)-percentToDecimal(total2.BadRate)),total1.BadRate,total2.BadRate),
titleX: [total1.BadRate, total2.BadRate].join(' vs '),
dataIndex: 'BadRate'
}
]
}
];
}
}); });
} }
}) })

@ -72,6 +72,10 @@ export function formatPercent(number) {
return Math.round(number * 100) + "%"; return Math.round(number * 100) + "%";
} }
export function percentToDecimal(number) {
return parseFloat(number) / 100;
}
export function formatDate(date) { export function formatDate(date) {
if (isEmpty(date)) { if (isEmpty(date)) {
return "NaN"; return "NaN";

@ -32,7 +32,7 @@ const AgentGroupCount = () => {
fieldProps: { fieldProps: {
DepartmentList: { show_all: true, mode: 'multiple' }, DepartmentList: { show_all: true, mode: 'multiple' },
WebCode: { show_all: false, mode: 'multiple' }, WebCode: { show_all: false, mode: 'multiple' },
dates: { hide_vs: true }, years: { hide_vs: true },
departureDateType: { disabledKeys: ['applyDate'] }, departureDateType: { disabledKeys: ['applyDate'] },
}, },
}} }}

Loading…
Cancel
Save