feat: 看板: 总额年份对比

feature/year-over-year
Lei OT 2 years ago
parent 7926ce3efc
commit 6ea675f453

@ -72,12 +72,12 @@ export default observer((props) => {
...extProps,
value: props.valueSuffix ? `${props.value} ${props.valueSuffix}` : props.value,
prefix: <ValueIcon twoToneColor={"#89B67F"} />,
description: (
description: diff ? (
<Space>
<Statistic title={diff.label} value={` ${diff.value}`} />
{diff.VSrate && <Statistic title="同比" value={`${diff.VSrate}%`} trend={diff.VSrate > 0 ? 'up' : 'down'} />}
</Space>
),
) : null,
}}
chart={showMulti ? <Bullet data={bulletData} {...bulletConfig} layout={'horizontal'} />: false}
footer={null}

@ -19,8 +19,6 @@ class Trade {
const curQueryData = cloneDeep(queryData);
curQueryData.groupType = curQueryData?.groupType || 'overview';
curQueryData.groupDateType = 'year';
curQueryData.DateDiff1 = moment(curQueryData.Date1).subtract(1, 'year').format(DATE_FORMAT);
curQueryData.DateDiff2 = moment(curQueryData.Date2).subtract(1, 'year').format(SMALL_DATETIME_FORMAT);
const multiData = await this.fetchTradeDataAll((curQueryData));
const { summary, traditional, biz } = multiData.result1;
const { summary: summary2, traditional: traditional2, biz: biz2 } = multiData.result2;
@ -29,9 +27,10 @@ class Trade {
loading: false,
dataSource: [
{
title: '成团',col: 6,
title: '成团',
col: 6,
value: summary?.[0]?.ConfirmOrder,
originVal: (summary?.[0]?.ConfirmOrder || 0),
originVal: summary?.[0]?.ConfirmOrder || 0,
valueSuffix: undefined,
// valueSuffix: summary?.[0]?.ConfirmRates ? ` / ${summary?.[0]?.ConfirmRates} %` : undefined,
// VSrate: summary?.[0]?.ConfirmOrderrate,
@ -42,59 +41,83 @@ class Trade {
kpiVal: summary?.[0]?.[dataFieldAlias.ConfirmOrder.nestkey.v],
traditional: { title: '传统', value: traditional?.[0]?.ConfirmOrder },
biz: { title: '商务', value: biz?.[0]?.ConfirmOrder },
...(summary2?.[0]
? {
diff: {
label: summary2?.[0]?.groupDateVal || '对比',
value: summary2?.[0]?.ConfirmOrder || 0,
VSrate: summary2?.[0]?.ConfirmOrder ? fixTo2Decimals((summary?.[0]?.ConfirmOrder - summary2?.[0]?.ConfirmOrder)/summary2?.[0]?.ConfirmOrder*100) : null ,
label: summary2[0]?.groupDateVal || '对比',
value: summary2[0]?.ConfirmOrder || 0,
VSrate: summary2[0]?.ConfirmOrder ? fixTo2Decimals(((summary[0]?.ConfirmOrder - summary2[0]?.ConfirmOrder) / summary2[0]?.ConfirmOrder) * 100) : null,
},
}
: {}),
},
{
title: '毛利',col: 8,
originVal: (summary?.[0]?.SumML || 0),
value: dataFieldAlias.SumML.formatter(summary?.[0]?.SumML || 0) + '=' + dataFieldAlias.SumML.formatter((traditional?.[0]?.SumML || 0)) + '+' + dataFieldAlias.SumML.formatter((biz?.[0]?.SumML || 0)),
title: '毛利',
col: 8,
originVal: summary?.[0]?.SumML || 0,
value:
dataFieldAlias.SumML.formatter(summary?.[0]?.SumML || 0) +
'=' +
dataFieldAlias.SumML.formatter(traditional?.[0]?.SumML || 0) +
'+' +
dataFieldAlias.SumML.formatter(biz?.[0]?.SumML || 0),
KPIrate: summary?.[0]?.[dataFieldAlias.SumML.nestkey.p],
hasKPI: false,
childrenVisible: true,
kpiVal: summary?.[0]?.[dataFieldAlias.SumML.nestkey.v],
traditional: { title: '传统', value: (traditional?.[0]?.SumML || 0) },
biz: { title: '商务', value: (biz?.[0]?.SumML || 0) },
traditional: { title: '传统', value: traditional?.[0]?.SumML || 0 },
biz: { title: '商务', value: biz?.[0]?.SumML || 0 },
...(summary2?.[0]
? {
diff: {
label: summary2?.[0]?.groupDateVal || '对比',
value: dataFieldAlias.SumML.formatter(summary2?.[0]?.SumML || 0),
VSrate: summary2?.[0]?.SumML ? fixTo2Decimals((summary?.[0]?.SumML - summary2?.[0]?.SumML)/summary2?.[0]?.SumML*100) : null ,
label: summary2[0]?.groupDateVal || '对比',
value: dataFieldAlias.SumML.formatter(summary2[0]?.SumML || 0),
VSrate: summary2[0]?.SumML ? fixTo2Decimals(((summary?.[0]?.SumML - summary2[0]?.SumML) / summary2[0]?.SumML) * 100) : null,
},
}
: {}),
},
{
title: '完成率',col: 5,
originVal: (summary?.[0]?.[dataFieldAlias.SumML.nestkey.p] || 0),
title: '完成率',
col: 5,
originVal: summary?.[0]?.[dataFieldAlias.SumML.nestkey.p] || 0,
value: `${summary?.[0]?.[dataFieldAlias.SumML.nestkey.p] || ''}%`,
hasKPI: false,
childrenVisible: false,
kpiVal: 0, // summary?.[0]?.[dataFieldAlias.SumML.nestkey.p],
traditional: { title: '传统', value: traditional?.[0]?.[dataFieldAlias.SumML.nestkey.p] || 0, },
biz: { title: '商务', value: biz?.[0]?.[dataFieldAlias.SumML.nestkey.p] || 0, },
traditional: { title: '传统', value: traditional?.[0]?.[dataFieldAlias.SumML.nestkey.p] || 0 },
biz: { title: '商务', value: biz?.[0]?.[dataFieldAlias.SumML.nestkey.p] || 0 },
...(summary2?.[0]
? {
diff: {
label: summary2?.[0]?.groupDateVal || '对比',
value: `${summary2?.[0]?.[dataFieldAlias.SumML.nestkey.p] || '-'}%`,
label: summary2[0]?.groupDateVal || '对比',
value: `${summary2[0]?.[dataFieldAlias.SumML.nestkey.p] || '-'}%`,
VSrate: null,
},
}
: {}),
},
{
title: '人数', col: 5,
originVal: (summary?.[0]?.SumPersonNum || 0),
title: '人数',
col: 5,
originVal: summary?.[0]?.SumPersonNum || 0,
value: summary?.[0]?.SumPersonNum,
// VSrate: summary?.[0]?.SumPersonNumrate,
// KPIrate: summary?.[0]?.[dataFieldAlias.SumPersonNum.nestkey.p],
hasKPI: false, // // !isEmpty(summary?.[0]?.[dataFieldAlias.SumPersonNum.nestkey.p]),,
childrenVisible: true,
// kpiVal: summary?.[0]?.[dataFieldAlias.SumPersonNum.nestkey.v],
traditional: { title: '传统', value: traditional?.[0]?.SumPersonNum, },
biz: { title: '商务', value: biz?.[0]?.SumPersonNum, },
traditional: { title: '传统', value: traditional?.[0]?.SumPersonNum },
biz: { title: '商务', value: biz?.[0]?.SumPersonNum },
...(summary2?.[0]
? {
diff: {
label: summary2?.[0]?.groupDateVal || '对比',
value: summary2?.[0]?.SumPersonNum,
VSrate: summary2?.[0]?.SumPersonNum ? fixTo2Decimals((summary?.[0]?.SumPersonNum - summary2?.[0]?.SumPersonNum)/summary2?.[0]?.SumPersonNum*100) : null ,
label: summary2[0]?.groupDateVal || '对比',
value: summary2[0]?.SumPersonNum || '',
VSrate: summary2[0]?.SumPersonNum ? fixTo2Decimals(((summary?.[0]?.SumPersonNum - summary2[0]?.SumPersonNum) / summary2[0]?.SumPersonNum) * 100) : null,
},
}
: {}),
},
],
};
@ -115,7 +138,8 @@ class Trade {
Object.assign(queryData, { groupDateType: this.timeLineKey });
const multiData = await this.fetchTradeDataAll(cloneDeep(queryData));
const { traditional, biz } = multiData.result1;
// console.log(biz, 'mmmmmmmm', queryData, multiData);
const { summary: summary2, traditional: traditional2, biz: biz2 } = multiData.result2;
console.log(biz, 'mmmmmmmm', queryData, multiData);
const mergeData = [].concat(traditional, biz);
const dateKeyData = groupBy(mergeData, ele => ele.groupDateVal);
const sortByDateKey = Object.values(sortKeys(dateKeyData)).reduce( (a, b) => a.concat(b), []);

Loading…
Cancel
Save