KPI 设置: 国内外业务; todo: 成员关系

feature/2.0-sales-trade
Lei OT 2 years ago
parent dcfb38d0de
commit fd3148cf5d

@ -13,7 +13,7 @@ const searchFormItemSet = {
}; };
export default observer((props) => { export default observer((props) => {
const searchProps = searchFormItemSet?.[props.curObject] || {}; const searchProps = searchFormItemSet?.[props.curObject] || { shows: ['DateType', 'years',] , sort };
return ( return (
<> <>
<KPISettings {...{ searchProps, KPISubjects }} {...props} /> <KPISettings {...{ searchProps, KPISubjects }} {...props} />

@ -201,8 +201,8 @@ export default observer((props) => {
const mergePageData = Object.values( const mergePageData = Object.values(
Object.assign( Object.assign(
{}, {},
_initialTable.reduce((r, v) => ({ ...r, [v.object_name]: v }), {}), _initialTable.reduce((r, v) => ({ ...r, [v.object_id]: v }), {}),
dataSource.reduce((r, v) => ({ ...r, [v.object_name]: v }), {}) dataSource.reduce((r, v) => ({ ...r, [v.object_id]: v }), {})
) )
); );
if (e && isEmpty(dataSource)) { if (e && isEmpty(dataSource)) {

@ -1,57 +0,0 @@
import { useContext } from 'react';
import { observer } from 'mobx-react';
// import { stores_Context } from '../config';
import { Button, Table, Switch, Input, Space, Typography, Row, Col, Spin, Radio, Tabs } from 'antd';
import SearchForm from '../../search/SearchForm';
import { bu, KPIObjects } from '../../../libs/ht';
export default observer((props) => {
// const { } = useContext(stores_Context);
return (
<>
<Row gutter={16} className="mb-1">
<Col className="gutter-row mb-n1 p-none" span={24}>
<SearchForm
defaultValue={{
'initialValue': {
// ...searchPayloadHome,
},
// hides: ['businessUnits', 'months', 'WebCode', 'dates'],
shows: ['HTBusinessUnits', 'DateType', 'DepartmentList', 'years'],
'fieldProps': {
HTBusinessUnits: { show_all: true },
DepartmentList: { show_all: true },
WebCode: { show_all: false },
years: { hide_vs: true },
},
}}
confirmText="查询"
onSubmit={(_err, obj, form, str) => {
// TradeStore.setStateSearch(form);
// pageRefresh(obj);
}}
/>
</Col>
</Row>
<Row gutter={16} className="mb-1 p-s1">
<Col className="gutter-row mb-n1 p-none" span={24} style={{ backgroundColor: '#ffffff' }}>
<Tabs
tabPosition={'left'}
style={
{
// height: 220,
}
}
items={KPIObjects.map((ele, i) => {
const id = String(i);
return {
...ele,
children: `Content of tab ${id}`,
};
})}
/>
</Col>
</Row>
</>
);
});

@ -116,13 +116,29 @@ export const dataFieldAlias = dataFieldOptions.reduce(
* KPI对象 * KPI对象
*/ */
export const KPIObjects = [ export const KPIObjects = [
{ key: 'overview', value: 'overview', label: '海纳' }, { key: 'overview', value: 'overview', label: '海纳', data: [{ key: '-1', value: '-1', label: '海纳' }] },
{
key: 'bizarea',
value: 'bizarea',
label: '国内外业务',
data: [
{ key: 'inside', value: 'inside', label: '国内' },
{ key: 'outside', value: 'outside', label: '海外' },
],
},
{ key: 'bu', value: 'bu', label: 'HT事业部', data: bu }, { key: 'bu', value: 'bu', label: 'HT事业部', data: bu },
{ key: 'dept', value: 'dept', label: '小组', data: leafGroup }, { key: 'dept', value: 'dept', label: '小组', data: leafGroup },
{ key: 'du', value: 'du', label: '销售小组', data: deptUnits }, { key: 'du', value: 'du', label: '销售小组', data: deptUnits },
{ key: 'operator', value: 'operator', label: '顾问' }, { key: 'operator', value: 'operator', label: '顾问' },
{ key: 'destination', value: 'destination', label: '目的地' }, { key: 'destination', value: 'destination', label: '目的地' },
{ key: 'country', value: 'country', label: '国籍' }, { key: 'country', value: 'country', label: '国籍' },
{ key: 'guestgrouptype', value: 'guestgrouptype', label: '成员关系', data: [ // todo:
{ key: 'family', value: 'family', label: '家庭' },
{ key: 'solo', value: 'solo', label: 'Solo' },
{ key: 'group', value: 'group', label: '组织' },
{ key: 'other', value: 'other', label: '其他' },
]
},
]; ];
export const KPISubjects = [ export const KPISubjects = [
{ key: 'sum_profit', value: 'sum_profit', label: '毛利' }, { key: 'sum_profit', value: 'sum_profit', label: '毛利' },

@ -90,6 +90,24 @@ class Trade {
}); });
} }
/**
* 成员关系, 年度
*/
fetchTradeDataByGuestType(queryData) {
this.BuData.loading = true;
Object.assign(queryData, { groupType: 'GuestGroupType', groupDateType: 'year' });
this.fetchTradeData(queryData).then((json) => {
if (json.errcode === 0) {
runInAction(() => {
const data = json.result1;
this.BuData.loading = false;
this.BuData.dataSource = data;
});
}
});
}
/** /**
* 业务区域, 按月 * 业务区域, 按月
*/ */
@ -141,6 +159,11 @@ class Trade {
return null; return null;
} }
/**
* 从结果中取出目标客户的数据
*/
setTargetsRes = () => {};
setStateSearch(body) { setStateSearch(body) {
this.searchPayloadHome = body; this.searchPayloadHome = body;
} }

@ -9,7 +9,8 @@ import OverviewPanel from './../components/kpi/OverviewPanel';
import './kpi.css'; import './kpi.css';
const objectComponents = { const objectComponents = {
'overview': OverviewPanel, // 'overview': OverviewPanel,
'overview': ObjectPanel,
'bu': ObjectPanel, 'bu': ObjectPanel,
'dept': ObjectPanel, 'dept': ObjectPanel,
'du': ObjectPanel, 'du': ObjectPanel,
@ -68,7 +69,7 @@ export default observer((props) => {
|| !isEmpty(searchFormStore.formValues?.operator)) { || !isEmpty(searchFormStore.formValues?.operator)) {
// && isEmpty(getkpiParam.object_id) // && isEmpty(getkpiParam.object_id)
setRetObjects(searchOperator.dataSource); setRetObjects(searchOperator.dataSource);
getkpiParam.object_id = searchOperator.dataSource.map((ele) => ele.key).join(','); // getkpiParam.object_id = searchOperator.dataSource.map((ele) => ele.key).join(','); // todo:
delete getkpiParam.dept_id; delete getkpiParam.dept_id;
} }
} }
@ -95,7 +96,7 @@ export default observer((props) => {
onChange={onObjectChange} onChange={onObjectChange}
type="card" type="card"
items={KPIObjects.map((ele, i) => { items={KPIObjects.map((ele, i) => {
const ObjectItemPanel = objectComponents[ele.key]; const ObjectItemPanel = objectComponents?.[ele.key] || ObjectPanel;
return { return {
...ele, ...ele,
children: ( children: (

Loading…
Cancel
Save