From 0d3b170f01d4ebf5da633869c59734ccac8f10c5 Mon Sep 17 00:00:00 2001 From: Lei OT Date: Fri, 17 Nov 2023 15:09:50 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E6=95=B0=E6=8D=AE=E9=80=8F=E8=A7=86:?= =?UTF-8?q?=20=E5=A2=9E=E5=8A=A0=E6=95=B0=E6=8D=AE=E9=A1=B9=E6=98=BE?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/libs/ht.js | 5 +++++ src/views/DataPivot.jsx | 22 ++++++++++++++++++---- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/libs/ht.js b/src/libs/ht.js index 5f64cfd..68fb22d 100644 --- a/src/libs/ht.js +++ b/src/libs/ht.js @@ -219,6 +219,8 @@ export const pivotBy = (data, [rows, columns, date]) => { tourdays: 0, applyDays: 0, confirmDays: 0, + SingleML: 0, + OrderValue: 0, }; const calculatedData = dataObj[colKey].reduce((r, v) => { @@ -241,6 +243,7 @@ export const pivotBy = (data, [rows, columns, date]) => { const _rowCalc = { ConfirmRates: calculatedData.ConfirmOrder ? fixTo4Decimals(calculatedData.ConfirmOrder / calculatedData.SumOrder) : 0, OrderValue: calculatedData.SumOrder ? fixToInt(calculatedData.SumML / calculatedData.SumOrder) : 0, + SingleML: calculatedData.ConfirmOrder ? fixToInt(calculatedData.SumML / calculatedData.ConfirmOrder) : 0, }; // Formatter calculatedData.transactions = fixTo2Decimals(calculatedData.transactions); @@ -248,6 +251,7 @@ export const pivotBy = (data, [rows, columns, date]) => { calculatedData.SumML_txt = dataFieldAlias.SumML.formatter(calculatedData.SumML); calculatedData.quotePrice = fixTo2Decimals(calculatedData.quotePrice); calculatedData.ConfirmRates_txt = dataFieldAlias.ConfirmRates.formatter(_rowCalc.ConfirmRates); + calculatedData.SingleML = fixTo2Decimals(calculatedData.SingleML); DataGroupByKeys[colKey] = { ...calculatedData, ..._rowCalc }; }); @@ -279,6 +283,7 @@ export const pivotBy = (data, [rows, columns, date]) => { summaryCalc.confirmDays = Math.ceil(summaryCalc.confirmDays / allColumns.length); summaryCalc.ConfirmRates = summaryCalc.ConfirmOrder ? fixTo2Decimals(summaryCalc.ConfirmOrder / summaryCalc.SumOrder*100) : 0; summaryCalc.OrderValue = summaryCalc.SumOrder ? fixToInt(summaryCalc.SumML / summaryCalc.SumOrder) : 0; + summaryCalc.SingleML = summaryCalc.ConfirmOrder ? fixTo2Decimals(summaryCalc.SumML / summaryCalc.ConfirmOrder) : 0; summaryCalc.SumML_txt = dataFieldAlias.SumML.formatter(summaryCalc.SumML); summaryCalc.ConfirmRates_txt = dataFieldAlias.ConfirmRates.formatter(summaryCalc.ConfirmRates); diff --git a/src/views/DataPivot.jsx b/src/views/DataPivot.jsx index 2d1ed9c..456dce7 100644 --- a/src/views/DataPivot.jsx +++ b/src/views/DataPivot.jsx @@ -53,13 +53,26 @@ const pageSetting = { // { key: 'ConfirmRates', title: '成交率', dataIndex: 'ConfirmRates_txt', width: '5em' }, // { key: 'SumML', title: '毛利', dataIndex: 'SumML_txt', width: '5em' }, ], + childrenColumns: [ + { key: 'ConfirmOrder', title: '成交数', dataIndex: 'ConfirmOrder', width: '5em' }, + { key: 'ConfirmRates', title: '成交率', dataIndex: 'ConfirmRates_txt', width: '5em' }, + ], searchInitial: { DateType: { key: 'applyDate', value: 'applyDate', label: '提交日期' } }, }, trade: { xField: 'confirmDate', yField: 'SumML', yFieldAlias: 'SumML_txt', - tableColumns: [{ key: 'SumML', title: '毛利', dataIndex: 'SumML', width: '5em' }], // SumML_txt + tableColumns: [ + { key: 'SumML', title: '毛利', dataIndex: 'SumML', width: '5em' }, // SumML_txt + ], + childrenColumns: [ + { key: 'SumOrder', title: '订单数', dataIndex: 'SumOrder', width: '5em' }, + { key: 'ConfirmOrder', title: '成交数', dataIndex: 'ConfirmOrder', width: '5em' }, + { key: 'ConfirmRates', title: '成交率', dataIndex: 'ConfirmRates_txt', width: '5em' }, + { key: 'SingleML', title: '单团毛利', dataIndex: 'SingleML', width: '5em' }, + { key: 'OrderValue', title: '单个订单价值', dataIndex: 'OrderValue', width: '5em' }, + ], searchInitial: { DateType: { key: 'confirmDate', value: 'confirmDate', label: '确认日期' } }, }, }; @@ -71,7 +84,7 @@ export default observer((props) => { const { formValues, formValuesToSub } = searchFormStore; const { originData } = DataPivotStore.detailData[page]; - const { xField: defaultDateType, yField: defaultValKey, yFieldAlias, tableColumns, searchInitial } = pageSetting[page]; + const { xField: defaultDateType, yField: defaultValKey, yFieldAlias, tableColumns, childrenColumns, searchInitial } = pageSetting[page]; const [curXfield, setCurXfield] = useState(defaultDateType); const [loading, setLoading] = useState(false); @@ -324,11 +337,12 @@ export default observer((props) => { pagination: false, columns: [ ...pivotDateColumns[0].map((ele) => ({ key: ele, title: filterFieldsMapped[ele].label, dataIndex: ele, width: '6em', fixed: 'left' })), - ...tableColumns, + ...(isEmpty(pivotDateColumns[1]) ? [].concat(cloneDeep(tableColumns), childrenColumns) : tableColumns), ...pivotDateColumns[1].map((ele) => ({ key: ele, title: filterFieldsMapped[ele].label, - align: 'left', className: 'p-s1', + align: 'left', + className: 'p-s1', children: cloneDeep(pivotDateColumnsValues[1][0] || []).map((col) => ({ key: col, title: `${col || '(空)'}: ${pivotTableColumnSummary[col]?.[defaultValKey]}`,