perf:老客户:增加对比折线

main
ZJYHX 2 months ago
parent be31c3983d
commit 1b86ab1192

@ -33,14 +33,15 @@ const Customer_care_regular = () => {
onSubmit={async (_err, obj, form, str) => { onSubmit={async (_err, obj, form, str) => {
customer_store.setSearchValues(obj, form, 'regular_data'); customer_store.setSearchValues(obj, form, 'regular_data');
regular_data.data_compare=[]; regular_data.data_compare=[];
regular_data.isRenderCount=0;
if (obj.DateDiff1 && obj.DateDiff2){ if (obj.DateDiff1 && obj.DateDiff2){
regular_data.showSum=false;
await customer_store.regular_customer_order(); await customer_store.regular_customer_order();
customer_store.regular_customer_order(false,true); customer_store.regular_customer_order(false,true);
customer_store.regular_customer_order(true,false,true); customer_store.regular_customer_order(true,false,true);
customer_store.regular_customer_order(true,true,true); customer_store.regular_customer_order(true,true,true);
} }
else{ else{
regular_data.showSum=true;
customer_store.regular_customer_order(); customer_store.regular_customer_order();
customer_store.regular_customer_order(true); customer_store.regular_customer_order(true);
} }
@ -111,7 +112,8 @@ const Customer_care_regular = () => {
</Col> </Col>
<Col span={24}> <Col span={24}>
<LineWithAvg dataSource={regular_data.pivotData} loading={regular_data.detail_loading} xField={regular_data.pivotX} yField={regular_data.pivotY} seriesField='_ylabel' showSUM={true} /> <LineWithAvg dataSource={regular_data.pivotData} loading={regular_data.detail_loading} xField={regular_data.pivotX} yField={regular_data.pivotY}
seriesField='_ylabel' showSUM={regular_data.showSum} />
</Col> </Col>
<Col span={24}> <Col span={24}>

@ -25,6 +25,10 @@ export default observer((props) => {
// xAxis: { // xAxis: {
// type: 'timeCat', // type: 'timeCat',
// }, // },
point: {
size: 4,
shape: "cicle",
},
yAxis: { yAxis: {
min: 0, min: 0,
maxTickInterval: 5, maxTickInterval: 5,
@ -79,12 +83,13 @@ export default observer((props) => {
// ``线, ``线 // ``线, ``线
const byDays = groupBy(rawData, xField); const byDays = groupBy(rawData, xField);
const sumY = rawData.reduce((a, b) => a + b[yField], 0); const sumY = rawData.reduce((a, b) => a + b[yField], 0);
const avgVal = Math.round(sumY / (Object.keys(byDays).length)); // const avgVal = Math.round(sumY / (Object.keys(byDays).length));
const avgLine = [ // const avgLine = [
{ type: 'text', position: ['start', avgVal], content: avgVal, offsetX: -15, style: { fill: '#F4664A', textBaseline: 'bottom' } }, // { type: 'text', position: ['start', avgVal], content: avgVal, offsetX: -15, style: { fill: '#F4664A', textBaseline: 'bottom' } },
{ type: 'line', start: [-10, avgVal], end: ['max', avgVal], style: { stroke: '#F4664A', lineDash: [2, 2] } }, // { type: 'line', start: [-10, avgVal], end: ['max', avgVal], style: { stroke: '#F4664A', lineDash: [2, 2] } },
]; // ];
setLineConfig({ ...lineConfig, yField, xField, annotations: avgLine }); // setLineConfig({ ...lineConfig, yField, xField, annotations: avgLine });
setLineConfig({ ...lineConfig, yField, xField,});
if (showSUM) { if (showSUM) {
const _sumLine = Object.keys(byDays).reduce((r, _d) => { const _sumLine = Object.keys(byDays).reduce((r, _d) => {
const summaryVal = byDays[_d].reduce((rows, row) => rows + row[yField], 0); const summaryVal = byDays[_d].reduce((rows, row) => rows + row[yField], 0);
@ -94,6 +99,9 @@ export default observer((props) => {
// console.log(_sumLine.map((ele) => ele[yField])); // console.log(_sumLine.map((ele) => ele[yField]));
setSumSeries(_sumLine); setSumSeries(_sumLine);
} }
else{
setSumSeries([]);
}
}; };
const onChangeXDateFieldGroup = (value, data, avg1) => { const onChangeXDateFieldGroup = (value, data, avg1) => {
@ -129,6 +137,9 @@ export default observer((props) => {
if (showSUM) { if (showSUM) {
setSumSeries(_sumLine); setSumSeries(_sumLine);
} }
else{
setSumSeries([]);
}
// setAvgLine1(avg1); // setAvgLine1(avg1);
const avg1Int = Math.round(avg1); const avg1Int = Math.round(avg1);

@ -145,18 +145,7 @@ class CustomerStore {
if (!isCompare){ if (!isCompare){
this.regular_data.data_detail = json; this.regular_data.data_detail = json;
} }
if (this.regular_data.data_compare.length===0){
this.regular_data.data_compare = json;
}
else{
const fistCompareDetail = this.regular_data.data_compare;
json.push(...fistCompareDetail);
}
if (isRender){ if (isRender){
if (this.regular_data.isRenderCount===0){
this.regular_data.isRenderCount=1;
}
else{
this.regular_data.detail_loading = false; this.regular_data.detail_loading = false;
const dump_l = (json || []).filter(ele => ele.COLI_IsOld !== '' && ele.COLI_IsCusCommend !== '').length; const dump_l = (json || []).filter(ele => ele.COLI_IsOld !== '' && ele.COLI_IsCusCommend !== '').length;
this.regular_data.total_data_tips = dump_l > 0 ? `包含 ${dump_l} 条同时勾选的数据` : ''; this.regular_data.total_data_tips = dump_l > 0 ? `包含 ${dump_l} 条同时勾选的数据` : '';
@ -174,9 +163,42 @@ class CustomerStore {
// console.log('IsOldData====', IsOldData, '\nisCusCommend', isCusCommendData); // console.log('IsOldData====', IsOldData, '\nisCusCommend', isCusCommendData);
// 合并成两个系列 // 合并成两个系列
const seriesData = [].concat(IsOldData.map(ele => ({...ele, _ylabel: '老客户'})), isCusCommendData.map(ele => ({...ele, _ylabel: '老客户推荐'})),).sort(sortBy(pivotByDate)); const seriesData = [].concat(IsOldData.map(ele => ({...ele, _ylabel: '老客户'})), isCusCommendData.map(ele => ({...ele, _ylabel: '老客户推荐'})),).sort(sortBy(pivotByDate));
// console.log('seriesData====', seriesData); const seriesNewData = seriesData.map(item => {
if (isCompare){
this.regular_data.pivotData = seriesData; // { IsOldData, isCusCommendData, }; return {
...item,
_ylabel: date_picker_store.start_date_cp.format(config.DATE_FORMAT)+ '-' +date_picker_store.end_date_cp.format(config.SMALL_DATETIME_FORMAT) + item._ylabel
};
}
else{
return {
...item,
_ylabel: date_picker_store.start_date.format(config.DATE_FORMAT)+ '-' +date_picker_store.end_date.format(config.SMALL_DATETIME_FORMAT) + item._ylabel
};
}
});
// console.log('seriesData====', seriesNewData);
if (this.regular_data.data_compare.length===0){
this.regular_data.data_compare=seriesNewData;
}
else{
let seriesCompareData = [];
const fistCompareDetail = this.regular_data.data_compare;
if (fistCompareDetail.length>seriesNewData.length){
seriesCompareData = fistCompareDetail;
for (let i = 0; i < seriesNewData.length; i++) {
seriesNewData[i].applyDate = fistCompareDetail[i].applyDate;
}
seriesCompareData.push(...seriesNewData);
}
else{
seriesCompareData=seriesNewData;
for (let i = 0; i < fistCompareDetail.length; i++) {
fistCompareDetail[i].applyDate = seriesNewData[i].applyDate;
}
seriesCompareData.push(...fistCompareDetail);
}
this.regular_data.pivotData = seriesCompareData; // { IsOldData, isCusCommendData, };
this.regular_data.pivotY = pivotByOrder; this.regular_data.pivotY = pivotByOrder;
this.regular_data.pivotX = pivotByDate; this.regular_data.pivotX = pivotByDate;
} }
@ -199,14 +221,10 @@ class CustomerStore {
// console.log('IsOldData====', IsOldData, '\nisCusCommend', isCusCommendData); // console.log('IsOldData====', IsOldData, '\nisCusCommend', isCusCommendData);
// 合并成两个系列 // 合并成两个系列
const seriesData = [].concat(IsOldData.map(ele => ({...ele, _ylabel: '老客户'})), isCusCommendData.map(ele => ({...ele, _ylabel: '老客户推荐'})),).sort(sortBy(pivotByDate)); const seriesData = [].concat(IsOldData.map(ele => ({...ele, _ylabel: '老客户'})), isCusCommendData.map(ele => ({...ele, _ylabel: '老客户推荐'})),).sort(sortBy(pivotByDate));
// console.log('seriesData====', seriesData);
this.regular_data.pivotData = seriesData; // { IsOldData, isCusCommendData, }; this.regular_data.pivotData = seriesData; // { IsOldData, isCusCommendData, };
this.regular_data.pivotY = pivotByOrder; this.regular_data.pivotY = pivotByOrder;
this.regular_data.pivotX = pivotByDate; this.regular_data.pivotX = pivotByDate;
} }
} else { } else {
if (isCompare){ if (isCompare){
const result = []; const result = [];
@ -269,7 +287,7 @@ class CustomerStore {
data: [], data: [],
data_detail: [], data_detail: [],
data_compare: [], data_compare: [],
isRenderCount:0, showSum:true,
total_data_tips: '', total_data_tips: '',
webcode: 'ALL', webcode: 'ALL',
site_select_mode: 'multiple',// 站点是否多选 site_select_mode: 'multiple',// 站点是否多选

Loading…
Cancel
Save