import { makeAutoObservable, runInAction } from 'mobx'; import { fetchJSON } from '../utils/request'; import { objectMapper, pick, price_to_number, } from '../utils/commons'; import { pivotBy } from './../libs/ht'; import moment from "moment"; import { DATE_FORMAT, DATETIME_FORMAT, SMALL_DATETIME_FORMAT } from '../config'; /** * 用于透视的数据 */ const getDetailData = async (param) => { const json = await fetchJSON('/service-Analyse2/GetTradeApartDetail', param); return json.errcode === 0 ? json.result : []; }; /** * */ const getOrderCountByType = async (param) => { const paramBody = objectMapper(param, { WebCode: 'WebCode', OrderType: 'OrderType', IncludeTickets: 'IncludeTickets', DateType: 'DateType', DepartmentList: 'DepartmentList', // { key: 'DepartmentList', transform: (v) => v.join(',') }, Date1: 'COLI_ApplyDate1', Date2: 'COLI_ApplyDate2', }); const url = '/service-web/QueryData/GetOrderCountByType'; const json = await fetchJSON(url, paramBody); return json.errcode === 0 ? json : {}; }; const getAgentGroupInfoALL = async (param) => { const paramBody = objectMapper(param, { DateType: 'DateType', DepartmentList: 'DepList', // { key: 'DepartmentList', transform: (v) => v.join(',') }, Date1: 'OldDate1', Date2: 'OldDate2', }); const url = '/service-web/QueryData/GetAgentGroupInfoALL'; const json = await fetchJSON(url, paramBody); return json.errcode === 0 ? json : {}; }; const getDepartmentOrderMLByType = async (param) => { const paramBody = objectMapper(param, { DateType: 'DateType', DepartmentList: 'DepartmentList', // { key: 'DepartmentList', transform: (v) => v.join(',') }, OrderType: 'OrderType', // 总览, 产品类型 }); const url = '/service-web/QueryData/GetDepartmentOrderMLByType'; const json = await fetchJSON(url, paramBody); const { result1 } = json.errcode === 0 ? json : { result1: [] }; const total1 = ['COLI_CJCount', 'COLI_ML2',].reduce( (r, col) => ({ ...r, [col]: result1.reduce((rr, row) => rr + row[col], 0), }), {} ); return { total1, result1 }; }; const GHproductTypeListSetting = { ja: ['日本', '东亚跨国'], se: ['东南亚跨国', '泰国', '越南', '印度尼西亚', '水灯节', '柬埔寨', '老挝'], in: ['印度', '印度次大陆跨国', '尼泊尔', '不丹', '斯里兰卡'], }; const GHCountryListSetting = { ja: ['日本', ], se: ['泰国', '越南', '印度尼西亚', '水灯节', '柬埔寨', '老挝', '新加坡', '马来西亚', '菲律宾'], in: ['印度', '印度次大陆跨国', '尼泊尔', '不丹', '斯里兰卡'], }; const rowItem = (filterData) => { const { data: dataByLineClass, summaryMix: summaryByLineClass } = pivotBy(filterData, [['COLI_LineClass'], [], []]); const LineClass_Origin = dataByLineClass.filter((ele) => ele.COLI_LineClass.toLocaleLowerCase().indexOf('网前自然订单') !== -1).reduce((r, c) => r + c.SumOrder, 0); const LineClass_PPC = dataByLineClass.filter((ele) => ele.COLI_LineClass.toLocaleLowerCase().indexOf('ppc') !== -1).reduce((r, c) => r + c.SumOrder, 0); const { data: dataByWebCode, summaryMix: summaryByWebCode } = pivotBy(filterData, [['WebCode'], [], []]); const toB = dataByWebCode.filter((ele) => ele.WebCode.toLocaleLowerCase().indexOf('to b') !== -1).reduce((r, c) => r + c.SumOrder, 0); const external = dataByWebCode.filter((ele) => ele.WebCode.toLocaleLowerCase().indexOf("站外渠道") !== -1).reduce((r, c) => r + c.SumOrder, 0); const filterIsOldC = filterData.filter((ele) => ele.WebCode.toLocaleLowerCase().indexOf('to b') === -1); const { data: dataByIsOld, summaryMix: summaryByIsOld } = pivotBy(filterIsOldC, [['IsOld', 'isCusCommend'], [], []]); const isOld1 = dataByIsOld.filter((ele) => ele.rowLabel.indexOf('1') !== -1).reduce((r, c) => r + c.SumOrder, 0); const total = LineClass_Origin + LineClass_PPC + toB + isOld1 + external; return { LineClass_Origin, LineClass_PPC, toB, external, isOld1, total }; }; // 日本+: 日本+东亚跨国 const dataJA = (rawData, yearData) => { const productTypeList = GHproductTypeListSetting.ja; const filterData = rawData.filter((ele) => productTypeList.some((item) => ele.productType.toLocaleLowerCase().indexOf(item) !== -1)); const filterDataYear = yearData.filter((ele) => productTypeList.some((item) => ele.OrderType.toLocaleLowerCase().indexOf(item) !== -1)); const rowYear = filterDataYear.reduce((r, c) => r + c.OrderCount, 0); return { ...rowItem(filterData), rowYear }; }; // 东南亚+: 东南亚跨国+泰国+越南+印尼+水灯节线路 const dataSE = (rawData, yearData) => { const productTypeList = GHproductTypeListSetting.se; const filterData = rawData.filter((ele) => productTypeList.some((item) => ele.productType.toLocaleLowerCase().indexOf(item) !== -1)); const filterDataYear = yearData.filter((ele) => productTypeList.some((item) => ele.OrderType.toLocaleLowerCase().indexOf(item) !== -1)); const rowYear = filterDataYear.reduce((r, c) => r + c.OrderCount, 0); return { ...rowItem(filterData), rowYear }; }; // 印度+: 印度+次大陆跨国+尼泊尔+不丹+斯里兰卡 const dataIN = (rawData, yearData) => { const productTypeList = GHproductTypeListSetting.in; const exceptProduct = ['印度尼西亚']; const filterData = rawData .filter((ele) => productTypeList.some((item) => ele.productType.toLocaleLowerCase().indexOf(item) !== -1)) .filter((ele) => exceptProduct.every((item) => ele.productType.toLocaleLowerCase().indexOf(item) === -1)); const filterDataYear = yearData .filter((ele) => productTypeList.some((item) => ele.OrderType.toLocaleLowerCase().indexOf(item) !== -1)) .filter((ele) => exceptProduct.every((item) => ele.OrderType.toLocaleLowerCase().indexOf(item) === -1)); const rowYear = filterDataYear.reduce((r, c) => r + c.OrderCount, 0); return { ...rowItem(filterData), rowYear }; }; // 其他GH const dataGHOther = (rawData, yearData) => { const exceptProduct = Object.values(GHproductTypeListSetting).reduce((r, c) => r.concat(c), []); const filterData = rawData.filter((ele) => exceptProduct.every((item) => ele.productType.toLocaleLowerCase().indexOf(item) === -1)); const filterDataYear = yearData.filter((ele) => exceptProduct.every((item) => ele.OrderType.toLocaleLowerCase().indexOf(item) === -1)); const rowYear = filterDataYear.reduce((r, c) => r + c.OrderCount, 0); return { ...rowItem(filterData), rowYear }; }; const dataSales = (tKey, rawData, yearData, yearData2) => { const targetList = GHCountryListSetting[tKey]; const tIndex = Object.keys(GHCountryListSetting).indexOf(tKey); const exceptTargetList = Object.keys(GHCountryListSetting).reduce((r, c, i) => r.concat(i < tIndex ? GHCountryListSetting[c] : []), []); // console.log(tIndex, tKey, 'exceptTargetList', exceptTargetList, 'targetList', targetList); const filterRaw1 = rawData.filter((ele) => exceptTargetList.every((item) => !ele.destinationCountry.includes(item))); // console.log(tKey, 'filterRaw1', filterRaw1); const filterDataC = filterRaw1.filter((ele) => targetList.some((item) => ele.destinationCountry.includes(item))); const filterDataT = tKey === 'se' ? filterRaw1.filter((ele) => ['泰国水灯节'].some((item) => ele.productType.toLocaleLowerCase().indexOf(item) !== -1)) : []; const filterData = filterDataC.concat(filterDataT); const CJCount = filterData.length; // filterData.reduce((r, c) => r + c.CJCount, 0); const YJLY = filterData.reduce((r, c) => r + price_to_number(c.ML), 0); const filterRaw2 = yearData.filter((ele) => exceptTargetList.every((item) => !ele.destinationCountry.includes(item))); const filterDataYearC = filterRaw2.filter((ele) => targetList.some((item) => ele.destinationCountry.includes(item))); const filterDataYearT = tKey === 'se' ? filterRaw2.filter((ele) => ['泰国水灯节'].some((item) => ele.productType.toLocaleLowerCase().indexOf(item) !== -1)) : []; const filterDataYear = filterDataYearC.concat(filterDataYearT); const rowYearData = { CJCount: filterDataYear.length, YJLY: filterDataYear.reduce((r, c) => r + price_to_number(c.ML), 0) }; // console.log(tKey, filterDataYear.map(ee => ee.destinationCountry), filterDataYear.map(ee => ee.productType), filterDataYear); const filterDataYearRaw2 = yearData2.filter((ele) => exceptTargetList.every((item) => !ele.destinationCountry.includes(item))); const filterDataYear2C = filterDataYearRaw2.filter((ele) => targetList.some((item) => ele.destinationCountry.includes(item))); const filterDataYear2T = tKey === 'se' ? filterDataYearRaw2.filter((ele) => ['泰国水灯节'].some((item) => ele.productType.toLocaleLowerCase().indexOf(item) !== -1)) : []; const filterDataYear2 = filterDataYear2C.concat(filterDataYear2T); const rowYearData2 = { CJCount: filterDataYear2.length, YJLY: filterDataYear2.reduce((r, c) => r + price_to_number(c.ML), 0) }; const rowYear = { YJLY: price_to_number(rowYearData.YJLY), CJCount: rowYearData.CJCount, GroupCount: rowYearData.CJCount, YJLY2: price_to_number(rowYearData2.YJLY), CJCount2: rowYearData2.CJCount, GroupCount2: rowYearData2.CJCount, }; const cols = ['YJLY', 'CJCount'].reduce((r, key) => ({ ...r, [key]: filterData.reduce((a, c) => a + price_to_number(c[key]), 0) }), {}); // console.log(tKey, filterData, filterDataYear, filterDataYear2); return { ...cols, GroupCount:CJCount, CJCount, YJLY, rowYear, rawData: filterData, rawYearData: filterDataYear, rawYearData2: filterDataYear2 }; }; const dataSalesGHOther = (rawData, yearData, yearData2) => { const exceptContry = Object.values(GHCountryListSetting).reduce((r, c) => r.concat(c), []); // console.log('exceptContry', exceptContry); // console.log('OOoo rawData', rawData.map(e => e.destinationCountry)); const filterData = rawData .filter((ele) => ['泰国水灯节'].every((item) => ele.productType.toLocaleLowerCase().indexOf(item) === -1)) .filter((ele) => exceptContry.every((item) => !ele.destinationCountry.includes(item))); // console.log('OOoo', filterData.map(e => e.destinationCountry), filterData.map(e => e.productType)); const CJCount = filterData.length; // filterData.reduce((r, c) => r + c.CJCount, 0); const YJLY = filterData.reduce((r, c) => r + price_to_number(c.ML), 0); const filterDataYear = yearData .filter((ele) => ['泰国水灯节'].every((item) => ele.productType.toLocaleLowerCase().indexOf(item) === -1)) .filter((ele) => exceptContry.every((item) => !ele.destinationCountry.includes(item))); const rowYearData = { CJCount: filterDataYear.length, YJLY: filterDataYear.reduce((r, c) => r + price_to_number(c.ML), 0) }; // console.log('OOoo year', filterDataYear.map(e => e.destinationCountry), filterDataYear.map(e => e.productType)); const filterDataYear2 = yearData2 .filter((ele) => ['泰国水灯节'].every((item) => ele.productType.toLocaleLowerCase().indexOf(item) === -1)) .filter((ele) => exceptContry.every((item) => !ele.destinationCountry.includes(item))); const rowYearData2 = { CJCount: filterDataYear2.length, YJLY: filterDataYear2.reduce((r, c) => r + price_to_number(c.ML), 0) }; // console.log('Oo', filterDataYear2.map(e => e.destinationCountry), filterDataYear2); // console.log('Oo row', rowYearData2); const rowYear = { YJLY: price_to_number(rowYearData.YJLY), CJCount: rowYearData.CJCount, GroupCount: rowYearData.CJCount, YJLY2: price_to_number(rowYearData2.YJLY), CJCount2: rowYearData2.CJCount, GroupCount2: rowYearData2.CJCount, }; return { GroupCount:CJCount, CJCount, YJLY, rowYear, rawData: filterData, rawYearData: filterDataYear, rawYearData2: filterDataYear2 }; }; class MeetingData { constructor(rootStore) { this.rootStore = rootStore; makeAutoObservable(this); } searchValues = { DateType: { key: 'applyDate', value: 'applyDate', label: '提交日期' }, }; setSearchValues(body) { this.searchValues = body; } GHTableData = []; GHTableLoading = false; /** * 获取市场订单数据 --------------------------------------------------------------------------------------------------- */ dataGHOrder = async (param) => { // console.log('dataGH', param); this.GHTableLoading = true; const defaultParam = { DateType: 'applyDate' }; // 本周 const CHData = await getDetailData({ ...param, ...defaultParam, 'DepartmentList': '1', 'WebCode': 'All' }); const exceptCHData = await getDetailData({ ...param, ...defaultParam, 'DepartmentList': '28,33', 'WebCode': 'All' }); const yearStart = moment().startOf("year").format(DATE_FORMAT); /** 截至今年 - 行 */ const [ { ordercountTotal1: CHDataYear }, { ordercount1: exceptCHDataYear }, ] = await Promise.all([ getOrderCountByType({ ...param, ...defaultParam, Date1: yearStart, 'DepartmentList': '1', 'WebCode': 'All', OrderType: 'LineClass' }), getOrderCountByType({ ...param, ...defaultParam, Date1: yearStart, 'DepartmentList': '28,33', 'WebCode': 'All', OrderType: 'Product' }), ]); // const { ordercountTotal1: CHDataYear } = await getOrderCountByType({ ...param, ...defaultParam, Date1: yearStart, 'DepartmentList': '1', 'WebCode': 'All', OrderType: 'LineClass' }); // const { ordercount1: exceptCHDataYear } = await getOrderCountByType({ ...param, ...defaultParam, Date1: yearStart, 'DepartmentList': '28,33', 'WebCode': 'All', OrderType: 'Product' }); /** 截至今年 - 列 */ const [ { ordercount1: ColLineClassDataYear }, { ordercountTotal1: ColToBDataYear }, { ordercountTotal1: ColExternalDataYear }, ] = await Promise.all([ getOrderCountByType({ ...param, ...defaultParam, Date1: yearStart, 'DepartmentList': '1,2,28,7,33', 'WebCode': 'All', OrderType: 'LineClass' }), getOrderCountByType({ ...param, ...defaultParam, Date1: yearStart, 'DepartmentList': '1,2,28,7,33', 'WebCode': 'GHTOBHW,GHTOBZG', OrderType: 'LineClass'}), getOrderCountByType({ ...param, ...defaultParam, Date1: yearStart, 'DepartmentList': '1,2,28,7,33', 'WebCode': 'ZWQD', OrderType: 'LineClass'}), ]); // const { ordercount1: ColLineClassDataYear } = await getOrderCountByType({ ...param, ...defaultParam, Date1: yearStart, 'DepartmentList': '1,2,28,7,33', 'WebCode': 'All', OrderType: 'LineClass' }); // const { ordercountTotal1: ColToBDataYear } = await getOrderCountByType({ ...param, ...defaultParam, Date1: yearStart, 'DepartmentList': '1,2,28,7,33', 'WebCode': 'GHTOBHW,GHTOBZG', OrderType: 'LineClass' }); // const { ordercountTotal1: ColExternalDataYear } = await getOrderCountByType({ ...param, ...defaultParam, Date1: yearStart, 'DepartmentList': '1,2,28,7,33', 'WebCode': 'ZWQD', OrderType: 'LineClass' }); // 老客户 const yearDetail = await getDetailData({ ...param, ...defaultParam, Date1: yearStart, 'DepartmentList': '1,2,28,7,33', 'WebCode': 'All' }); const { isOld1: isOld1Year } = rowItem(yearDetail); const colYearRow = { LineClass_Origin: ColLineClassDataYear.filter((ele) => ele.OrderType.toLocaleLowerCase().indexOf('网前自然订单') !== -1).reduce((r, c) => r + c.OrderCount, 0), LineClass_PPC: ColLineClassDataYear.filter((ele) => ele.OrderType.toLocaleLowerCase().indexOf('ppc') !== -1).reduce((r, c) => r + c.OrderCount, 0), toB: ColToBDataYear.OrderCount, isOld1: isOld1Year, external: ColExternalDataYear.OrderCount, }; const rows = [ { key: 'ch', label: '中国', ...rowItem(CHData), rowYear: CHDataYear.OrderCount }, { key: 'ja', label: '日本+', ...dataJA(exceptCHData, exceptCHDataYear) }, { key: 'se', label: '东南亚+', ...dataSE(exceptCHData, exceptCHDataYear) }, { key: 'in', label: '印度+', ...dataIN(exceptCHData, exceptCHDataYear) }, { key: 'other', label: '其他GH', ...dataGHOther(exceptCHData, exceptCHDataYear) }, ]; const columnsSum = ['LineClass_Origin', 'LineClass_PPC', 'toB', 'external', 'isOld1', 'total', 'rowYear'].reduce( (r, col) => ({ ...r, [col]: rows.reduce((rr, row) => rr + row[col], 0), }), {} ); rows.push({ key: 'columnSum', label: '合计', ...columnsSum }); rows.push({ key: 'colYearRow', label: '截至', ...colYearRow }); runInAction(() => { this.GHTableData = rows; this.GHTableLoading = false; }); }; GHSalesTableData = []; GHSalesLoading = false; /** * 获取GH销售数据 --------------------------------------------------------------------------------------------------- */ dataGHSales = async (param) => { this.GHSalesLoading = true; const salesParam = { ...param, DateType: 'confirmDate', WebCode: 'CHT,AH,GH,GHKYZG,GHKYHW,ZWQD,GH_ZWQD_HW,JH,HTravel', OrderType:'ALL', }; // WebCode: 不含分销, 这个参数值不直接使用, 不含分销=总数-分销 const partnerParam = { WebCode: 'GHTOBHW,GHTOBZG' }; const [ { total1: CHSalesDataTotal }, { total1: CHPartnerSalesData }, { total1: AHSalesDataTotal }, { total1: AHpartnerSalesData }, { total1: GHSalesDataTotal }, { total1: GHpartnerSalesData }, ] = await Promise.all([ getDepartmentOrderMLByType({...salesParam, DepartmentList: '1,2', WebCode: 'ALL', }), getDepartmentOrderMLByType({...salesParam, DepartmentList: '1,2', ...partnerParam }), getDepartmentOrderMLByType({...salesParam, DepartmentList: '28', WebCode: 'ALL', }), getDepartmentOrderMLByType({...salesParam, DepartmentList: '28', ...partnerParam }), getDepartmentOrderMLByType({...salesParam, DepartmentList: '33', WebCode: 'ALL', }), getDepartmentOrderMLByType({...salesParam, DepartmentList: '33', ...partnerParam }), ]); // 不含分销 = 总额 - 分销 const CHSalesData = {'COLI_CJCount': CHSalesDataTotal.COLI_CJCount-CHPartnerSalesData.COLI_CJCount, 'COLI_ML2': CHSalesDataTotal.COLI_ML2-CHPartnerSalesData.COLI_ML2}; const AHSalesData = {'COLI_CJCount': AHSalesDataTotal.COLI_CJCount-AHpartnerSalesData.COLI_CJCount, 'COLI_ML2': AHSalesDataTotal.COLI_ML2-AHpartnerSalesData.COLI_ML2}; const GHSalesData = {'COLI_CJCount': GHSalesDataTotal.COLI_CJCount-GHpartnerSalesData.COLI_CJCount, 'COLI_ML2': GHSalesDataTotal.COLI_ML2-GHpartnerSalesData.COLI_ML2}; const partnerSalesData = {'COLI_CJCount': CHPartnerSalesData.COLI_CJCount+AHpartnerSalesData.COLI_CJCount, 'COLI_ML2': CHPartnerSalesData.COLI_ML2+AHpartnerSalesData.COLI_ML2}; const totalSalesData = { 'COLI_CJCount': CHSalesDataTotal.COLI_CJCount + AHSalesDataTotal.COLI_CJCount + GHSalesDataTotal.COLI_CJCount, 'COLI_ML2': CHSalesDataTotal.COLI_ML2 + AHSalesDataTotal.COLI_ML2 + GHSalesDataTotal.COLI_ML2, }; const yearStart = moment().startOf("year").format(DATE_FORMAT); const yearEnd = moment().endOf("year").format(SMALL_DATETIME_FORMAT); /** 截至今年 - 成交 */ const [ { total1: CHSalesYearTotal }, { total1: CHPartnerSalesYear }, { total1: AHSalesYearTotal }, { total1: AHpartnerSalesYear }, { total1: GHSalesYearTotal }, { total1: GHpartnerSalesYear }, ] = await Promise.all([ getDepartmentOrderMLByType({...salesParam, Date1: yearStart, DepartmentList: '1,2', WebCode: 'ALL', }), getDepartmentOrderMLByType({...salesParam, Date1: yearStart, DepartmentList: '1,2', ...partnerParam }), getDepartmentOrderMLByType({...salesParam, Date1: yearStart, DepartmentList: '28', WebCode: 'ALL', }), getDepartmentOrderMLByType({...salesParam, Date1: yearStart, DepartmentList: '28', ...partnerParam }), getDepartmentOrderMLByType({...salesParam, Date1: yearStart, DepartmentList: '33', WebCode: 'ALL', }), getDepartmentOrderMLByType({...salesParam, Date1: yearStart, DepartmentList: '33', ...partnerParam }), ]); const CHDataYear = {'COLI_CJCount': CHSalesYearTotal.COLI_CJCount-CHPartnerSalesYear.COLI_CJCount, 'COLI_ML2': CHSalesYearTotal.COLI_ML2-CHPartnerSalesYear.COLI_ML2}; const AHDataYear = {'COLI_CJCount': AHSalesYearTotal.COLI_CJCount-AHpartnerSalesYear.COLI_CJCount, 'COLI_ML2': AHSalesYearTotal.COLI_ML2-AHpartnerSalesYear.COLI_ML2}; const GHDataYear = {'COLI_CJCount': GHSalesYearTotal.COLI_CJCount-GHpartnerSalesYear.COLI_CJCount, 'COLI_ML2': GHSalesYearTotal.COLI_ML2-GHpartnerSalesYear.COLI_ML2}; const partnerDataYear = {'COLI_CJCount': CHPartnerSalesYear.COLI_CJCount+AHpartnerSalesYear.COLI_CJCount, 'COLI_ML2': CHPartnerSalesYear.COLI_ML2+AHpartnerSalesYear.COLI_ML2}; const totalDataYear = { 'COLI_CJCount': CHSalesYearTotal.COLI_CJCount + AHSalesYearTotal.COLI_CJCount + GHSalesYearTotal.COLI_CJCount, 'COLI_ML2': CHSalesYearTotal.COLI_ML2 + AHSalesYearTotal.COLI_ML2 + GHSalesYearTotal.COLI_ML2, }; /** 截至今年 - 走团 */ const [ { total1: CHStartDataYearTotal }, { total1: CHPartnerStartDataYear }, { total1: AHStartDataYearTotal }, { total1: AHpartnerStartDataYear }, { total1: GHStartDataYearTotal }, { total1: GHpartnerStartDataYear }, ] = await Promise.all([ getDepartmentOrderMLByType({...salesParam, Date1: yearStart, Date2:yearEnd, DateType: 'startDate', DepartmentList: '1,2', WebCode: 'ALL', }), getDepartmentOrderMLByType({...salesParam, Date1: yearStart, Date2:yearEnd, DateType: 'startDate', DepartmentList: '1,2', ...partnerParam }), getDepartmentOrderMLByType({...salesParam, Date1: yearStart, Date2:yearEnd, DateType: 'startDate', DepartmentList: '28', WebCode: 'ALL', }), getDepartmentOrderMLByType({...salesParam, Date1: yearStart, Date2:yearEnd, DateType: 'startDate', DepartmentList: '28', ...partnerParam }), getDepartmentOrderMLByType({...salesParam, Date1: yearStart, Date2:yearEnd, DateType: 'startDate', DepartmentList: '33', WebCode: 'ALL', }), getDepartmentOrderMLByType({...salesParam, Date1: yearStart, Date2:yearEnd, DateType: 'startDate', DepartmentList: '33', ...partnerParam }), ]); const CHStartDataYear = {'COLI_CJCount': CHStartDataYearTotal.COLI_CJCount-CHPartnerStartDataYear.COLI_CJCount, 'COLI_ML2': CHStartDataYearTotal.COLI_ML2-CHPartnerStartDataYear.COLI_ML2}; const AHStartDataYear = {'COLI_CJCount': AHStartDataYearTotal.COLI_CJCount-AHpartnerStartDataYear.COLI_CJCount, 'COLI_ML2': AHStartDataYearTotal.COLI_ML2-AHpartnerStartDataYear.COLI_ML2}; const GHStartDataYear = {'COLI_CJCount': GHStartDataYearTotal.COLI_CJCount-GHpartnerStartDataYear.COLI_CJCount, 'COLI_ML2': GHStartDataYearTotal.COLI_ML2-GHpartnerStartDataYear.COLI_ML2}; const partnerStartDataYear = {'COLI_CJCount': CHPartnerStartDataYear.COLI_CJCount+AHpartnerStartDataYear.COLI_CJCount, 'COLI_ML2': CHPartnerStartDataYear.COLI_ML2+AHpartnerStartDataYear.COLI_ML2}; const totalStartDataYear = { 'COLI_CJCount': CHStartDataYearTotal.COLI_CJCount + AHStartDataYearTotal.COLI_CJCount + GHStartDataYearTotal.COLI_CJCount, 'COLI_ML2': CHStartDataYearTotal.COLI_ML2 + AHStartDataYearTotal.COLI_ML2 + GHStartDataYearTotal.COLI_ML2, }; const rows = [ { key: 'ch', label: 'CH(不含分销)', YJLY: price_to_number(CHSalesData.COLI_ML2), CJCount: (CHSalesData.COLI_CJCount), rowYear: { YJLY: price_to_number(CHDataYear.COLI_ML2), CJCount: CHDataYear.COLI_CJCount, YJLY2: price_to_number(CHStartDataYear.COLI_ML2) }, }, { key: 'ah', label: 'HT(不含分销)', YJLY: price_to_number(AHSalesData.COLI_ML2), CJCount: (AHSalesData.COLI_CJCount), rowYear: { YJLY: price_to_number(AHDataYear.COLI_ML2), CJCount: AHDataYear.COLI_CJCount, YJLY2: price_to_number(AHStartDataYear.COLI_ML2) }, }, { key: 'partner', label: '分销', YJLY: price_to_number(partnerSalesData.COLI_ML2), CJCount: (partnerSalesData.COLI_CJCount), rowYear: { YJLY: price_to_number(partnerDataYear.COLI_ML2), CJCount: partnerDataYear.COLI_CJCount, YJLY2: price_to_number(partnerStartDataYear.COLI_ML2) }, }, { key: 'gh', label: 'GH(不含分销)', YJLY: price_to_number(GHSalesData.COLI_ML2), CJCount: (GHSalesData.COLI_CJCount), rowYear: { YJLY: price_to_number(GHDataYear.COLI_ML2), CJCount: GHDataYear.COLI_CJCount, YJLY2: price_to_number(GHStartDataYear.COLI_ML2) }, }, { key: 'total', label: '合计', YJLY: price_to_number(totalSalesData.COLI_ML2), CJCount: (totalSalesData.COLI_CJCount), rowYear: { YJLY: price_to_number(totalDataYear.COLI_ML2), CJCount: totalDataYear.COLI_CJCount, YJLY2: price_to_number(totalStartDataYear.COLI_ML2) }, }, ]; runInAction(() => { this.GHSalesTableData = rows; this.GHSalesLoading = false; }); }; GHServiceTableData = []; GHServiceLoading = false; /** * 获取GH服务数据 --------------------------------------------------------------------------------------------------- */ dataGHService = async (param) => { this.GHServiceLoading = true; const serviceParam = { ...param, DateType: 'startDate', 'WebCode': 'All' }; // 走团数 const [ { ordercountTotal1: { OrderCount: CHGroupCount } }, { ordercountTotal1: { OrderCount: AHGroupCount } }, { ordercountTotal1: { OrderCount: GHGroupCount } }, ] = await Promise.all([ getOrderCountByType({ ...serviceParam, 'DepartmentList': '1,2', OrderType: 'Form'}), getOrderCountByType({ ...serviceParam, 'DepartmentList': '28', OrderType: 'Form'}), getOrderCountByType({ ...serviceParam, 'DepartmentList': '33', OrderType: 'Form'}), ]); // 走团数 - 年 // * 走团: 整团数, 而非各地接社/目的地的总和 const yearStart = moment().startOf("year").format(DATE_FORMAT); const [ { ordercountTotal1: { OrderCount: CHGroupCountYear } }, { ordercountTotal1: { OrderCount: AHGroupCountYear } }, { ordercountTotal1: { OrderCount: GHGroupCountYear } }, ] = await Promise.all([ getOrderCountByType({ ...serviceParam, 'DepartmentList': '1,2', OrderType: 'Form', Date1: yearStart, }), getOrderCountByType({ ...serviceParam, 'DepartmentList': '28', OrderType: 'Form', Date1: yearStart, }), getOrderCountByType({ ...serviceParam, 'DepartmentList': '33', OrderType: 'Form', Date1: yearStart, }), ]); // 好评数 const [ { total1: { GoodCount: CHGoodCount } }, { total1: { GoodCount: AHGoodCount } }, { total1: { GoodCount: GHGoodCount } }, ] = await Promise.all([ getAgentGroupInfoALL({ ...serviceParam, 'DepartmentList': '1,2', }), getAgentGroupInfoALL({ ...serviceParam, 'DepartmentList': '28', }), getAgentGroupInfoALL({ ...serviceParam, 'DepartmentList': '33', }), ]); // 好评数 - 年 const [ { total1: { GoodCount: CHGoodCountYear, } }, { total1: { GoodCount: AHGoodCountYear, } }, { total1: { GoodCount: GHGoodCountYear, } }, ] = await Promise.all([ getAgentGroupInfoALL({ ...serviceParam, Date1: yearStart, 'DepartmentList': '1,2', }), getAgentGroupInfoALL({ ...serviceParam, Date1: yearStart, 'DepartmentList': '28', }), getAgentGroupInfoALL({ ...serviceParam, Date1: yearStart, 'DepartmentList': '33', }), ]); const rows = [ { key: 'ch', label: 'CH', GoodCount: CHGoodCount, GroupCount: CHGroupCount, rowYear: { GroupCount: CHGroupCountYear, GoodCount: CHGoodCountYear } }, { key: 'ah', label: 'HT', GoodCount: AHGoodCount, GroupCount: AHGroupCount, rowYear: { GroupCount: AHGroupCountYear, GoodCount: AHGoodCountYear } }, { key: 'Gh', label: 'GH', GoodCount: GHGoodCount, GroupCount: GHGroupCount, rowYear: { GroupCount: GHGroupCountYear, GoodCount: GHGoodCountYear } }, ]; // const GHRowWeek = { GoodCount: GHGoodCountWeek, GroupCount: 0 }; // const columnsSum = ['GoodCount', 'GroupCount'].reduce((r, col) => ({ ...r, [col]: [...rows, GHRowWeek].reduce((rr, row) => rr + (row[col] || 0), 0) }), {}); // const allYearData = rows.map((row) => row.rowYear).concat([{ GoodCount: GHGoodCountYear, GroupCount: 0 }]); // // console.log(allYearData); // const rowYear = ['GoodCount', 'GroupCount', ].reduce((r, col) => ({ ...r, [col]: allYearData.reduce((rr, row) => rr + (row[col] || 0), 0) }), {}); // rows.push({ key: 'columnSum', label: '合计', ...columnsSum, rowYear }); // console.log(rows); runInAction(() => { this.GHServiceTableData = rows; this.GHServiceLoading = false; }); }; } export default MeetingData;