|
|
|
@ -5,6 +5,7 @@ import * as comm from '../utils/commons';
|
|
|
|
|
import { NavLink } from 'react-router-dom';
|
|
|
|
|
import { groupsMappedByCode, dataFieldAlias } from './../libs/ht';
|
|
|
|
|
import * as req from '../utils/request';
|
|
|
|
|
import { parseKPI } from './KPI';
|
|
|
|
|
|
|
|
|
|
// 销售数据
|
|
|
|
|
class SaleStore {
|
|
|
|
@ -31,7 +32,8 @@ class SaleStore {
|
|
|
|
|
date_title = 'date_title'; // 日期段,只用于显示,防止日期选择控件的变化导致页面刷新
|
|
|
|
|
|
|
|
|
|
salesTrade = {
|
|
|
|
|
groupType: 'dept', loading: false, operator: [], dept: [], overview: [],
|
|
|
|
|
groupType: 'dept', loading: false,
|
|
|
|
|
operator: [], dept: [], overview: [],
|
|
|
|
|
operatorMapped: {}, pickSales: [], pickSalesData: [],
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
@ -523,13 +525,52 @@ class SaleStore {
|
|
|
|
|
data: undefined,
|
|
|
|
|
yearML: Object.values(yData[ykey].data)[0]?.SumML || 0, // 整理排序用
|
|
|
|
|
})).sort(comm.sortBy('yearML')).reverse();
|
|
|
|
|
|
|
|
|
|
const kpiObjects = mergeYearMonth.map(v => ({ key: v.groupsKey, value: v.groupsKey, label: v.groupsLabel }));
|
|
|
|
|
const kpiData = await this.getKPISettings(groupType, queryData, kpiObjects);
|
|
|
|
|
const salesTradeDataMapped = mergeYearMonth.reduce((ro, vo) => ({...ro, [vo.groupsKey]: vo}), {});
|
|
|
|
|
kpiData.map(ele => {
|
|
|
|
|
ele.kpiData.map((km) => {
|
|
|
|
|
const padM = String(km.monthIndex).padStart(2, '0');
|
|
|
|
|
const _monthMLKPI = { [dataFieldAlias.SumML.nestkey.v]: km.value, 'groupsKey': ele.object_id, 'groupsLabel': ele.object_name, 'groupDateVal': `${km.yearIndex}-${padM}-01`, };
|
|
|
|
|
if (comm.isEmpty(salesTradeDataMapped[ele.object_id])) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
if (comm.isEmpty(salesTradeDataMapped[ele.object_id].mData[`month_${padM}`])) {
|
|
|
|
|
salesTradeDataMapped[ele.object_id].mData[`month_${padM}`] = {};
|
|
|
|
|
}
|
|
|
|
|
Object.assign(salesTradeDataMapped[ele.object_id].mData[`month_${padM}`], _monthMLKPI);
|
|
|
|
|
return km;
|
|
|
|
|
});
|
|
|
|
|
return ele;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
runInAction(() => {
|
|
|
|
|
this.salesTrade.loading = false;
|
|
|
|
|
this.salesTrade[groupType] = mergeYearMonth;
|
|
|
|
|
this.salesTrade[`${groupType}Mapped`] = mergeYearMonth.reduce((r, v) => ({...r, [v.groupsKey]: Object.values(v.mData)}), {});
|
|
|
|
|
this.salesTrade[groupType] = Object.values(salesTradeDataMapped);
|
|
|
|
|
this.salesTrade[`${groupType}Mapped`] = Object.values(salesTradeDataMapped).reduce((r, v) => ({...r, [v.groupsKey]: Object.values(v.mData)}), {});
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async getKPISettings(curObject, queryData, objects) {
|
|
|
|
|
const getkpiParam = comm.objectMapper(queryData, {
|
|
|
|
|
DateType: { key: 'date_type' },
|
|
|
|
|
Date1: { key: 'start_date' },
|
|
|
|
|
Date2: { key: 'end_date' },
|
|
|
|
|
HTBusinessUnits: { key: 'object_id' },
|
|
|
|
|
DepartmentList: { key: 'object_id' },
|
|
|
|
|
});
|
|
|
|
|
Object.assign(getkpiParam, { object: curObject, subject: 'sum_profit' });
|
|
|
|
|
getkpiParam.object_id = curObject === 'overview' ? '' : objects.map((ele) => ele.key).join(',');
|
|
|
|
|
const json = await req.fetchJSON('/service-Analyse2/getkpi', getkpiParam);
|
|
|
|
|
if (json.errcode === 0) {
|
|
|
|
|
const yearData = parseKPI(json.result, ['subject', 'object_id']);
|
|
|
|
|
const year = moment(queryData.Date1).year();
|
|
|
|
|
return yearData?.[year]?.sum_profit || [];
|
|
|
|
|
}
|
|
|
|
|
return [];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取业绩数据
|
|
|
|
|
*/
|
|
|
|
|