diff --git a/src/components/kpi/KPISettings.jsx b/src/components/kpi/KPISettings.jsx
index ecec5d4..2ae7b3e 100644
--- a/src/components/kpi/KPISettings.jsx
+++ b/src/components/kpi/KPISettings.jsx
@@ -6,6 +6,7 @@ import SearchForm from './../search/SearchForm';
import { bu, KPIObjects, KPISubjects } from './../../libs/ht';
import { isEmpty, fixTo2Decimals, fixTo4Decimals, cloneDeep, numberFormatter, fixToInt, merge } from './../../utils/commons';
import ProfitTable from './SubjectTable/Profit';
+import { toJS } from 'mobx';
const Todo = (props) => {
return
{
- console.log('invoke kpi setting search');
+ // console.log('invoke kpi setting search');
if (typeof onSearchSubmit === 'function') {
- onSearchSubmit(obj);
+ onSearchSubmit(obj, form);
}
}}
/>
@@ -63,6 +64,7 @@ export default observer((props) => {
tabPosition={'left'}
onChange={(sub) => {
KPIStore.setSettingSubject(sub);
+ // onSearchSubmit(searchFormStore.formValuesToSub);
}}
items={KPISubjects.map((ele, i) => {
const SubjectTableComponent = subjectComponents[ele.key];
diff --git a/src/components/kpi/ObjectPanel.jsx b/src/components/kpi/ObjectPanel.jsx
index a78c231..7eebc39 100644
--- a/src/components/kpi/ObjectPanel.jsx
+++ b/src/components/kpi/ObjectPanel.jsx
@@ -1,16 +1,15 @@
-import { useContext } from 'react';
import { observer } from 'mobx-react';
-// import { stores_Context } from '../config';
-import { Table } from 'antd';
import KPISettings from './KPISettings';
import { bu, KPISubjects } from '../../libs/ht';
+const sort = { DateType: 10, years: 11 };
+const yearInitial = {};
const searchFormItemSet = {
- 'bu': { shows: ['DateType', 'years', 'HTBusinessUnits'] },
- 'dept': { shows: ['DateType', 'years', 'DepartmentList'], fieldProps: { DepartmentList: { allowClear: true } } },
- 'operator': { shows: ['DateType', 'years', 'DepartmentList'] }, // , 'operator'
- 'destination': { shows: ['DateType', 'years', 'destination'] },
- 'country': { shows: ['DateType', 'years', 'country'] },
+ 'bu': { shows: ['DateType', 'years', 'HTBusinessUnits'], sort },
+ 'dept': { shows: ['DateType', 'years', 'DepartmentList'], sort, fieldProps: { DepartmentList: { allowClear: true,isLeaf: true, show_all: false } }, },
+ 'operator': { shows: ['DateType', 'years', 'DepartmentList', 'operator'], fieldProps: { DepartmentList: { allowClear: true, isLeaf: true }, operator: { param: { is_assign: 1 } } }, sort },
+ 'destination': { shows: ['DateType', 'years', 'destination'], sort },
+ 'country': { shows: ['DateType', 'years', 'country'], sort },
};
export default observer((props) => {
diff --git a/src/components/kpi/OverviewPanel.jsx b/src/components/kpi/OverviewPanel.jsx
index 49f8760..6e7720c 100644
--- a/src/components/kpi/OverviewPanel.jsx
+++ b/src/components/kpi/OverviewPanel.jsx
@@ -129,6 +129,7 @@ export default observer((props) => {
value: mVal,
kpi_id: curObj.kpiDataMapped?.[`M${mIndex}`]?.kpi_id || undefined,
key: undefined,
+ group_date_type: 'month',
};
});
return r.concat(allMonth);
@@ -143,6 +144,7 @@ export default observer((props) => {
start_date: moment([KPIStore.settingYear, 0, 1]).format('YYYY-MM-DD'),
end_date: moment([KPIStore.settingYear, 11, 1]).endOf('M').format('YYYY-MM-DD HH:mm'),
kpi_id: kpiYear?.kpi_id || undefined,
+ group_date_type: 'year',
}))(dataSource?.[0] || {});
tableData.unshift(yearRow);
console.log('sub', tableData, delKpiIds);
diff --git a/src/components/kpi/SubjectTable/Profit.jsx b/src/components/kpi/SubjectTable/Profit.jsx
index 777adb4..be76b4a 100644
--- a/src/components/kpi/SubjectTable/Profit.jsx
+++ b/src/components/kpi/SubjectTable/Profit.jsx
@@ -24,11 +24,11 @@ export default observer((props) => {
const [editableRowsKeys, setEditableRowKeys] = useState([]);
useEffect(() => {
setDataSource(KPIStore.pageData);
+ setEditableRowKeys([]);
setEditOpen(false);
return () => {};
}, [KPIStore.pageData]);
-
const PercentInput = useMemo(
() =>
// eslint-disable-next-line react/display-name
@@ -84,7 +84,7 @@ export default observer((props) => {
title: '年度目标',
dataIndex: 'yearValue',
valueType: 'digit',
- fieldProps: { style: { width: '100%' }, step: 10000*100 },
+ fieldProps: { style: { width: '100%' }, step: 10000 * 100 },
formItemProps: {
style: { width: '100%' },
},
@@ -138,22 +138,23 @@ export default observer((props) => {
value: mVal,
kpi_id: curObj.kpiDataMapped?.[`M${mIndex}`]?.kpi_id || undefined,
key: undefined,
+ group_date_type: 'month',
};
});
- return r.concat(allMonth);
+ const yearRow = (({ object, object_name, object_id, subject, date_type, yearValue, kpiYear }) => ({
+ object,
+ object_name,
+ object_id,
+ subject,
+ date_type,
+ value: yearValue,
+ start_date: moment([KPIStore.settingYear, 0, 1]).format('YYYY-MM-DD'),
+ end_date: moment([KPIStore.settingYear, 11, 1]).endOf('M').format('YYYY-MM-DD HH:mm'),
+ kpi_id: kpiYear?.kpi_id || undefined,
+ group_date_type: 'year',
+ }))(curObj);
+ return r.concat(allMonth, yearRow);
}, []);
- const yearRow = (({ object, object_name, object_id, subject, date_type, yearValue, kpiYear }) => ({
- object,
- object_name,
- object_id,
- subject,
- date_type,
- value: yearValue,
- start_date: moment([KPIStore.settingYear, 0, 1]).format('YYYY-MM-DD'),
- end_date: moment([KPIStore.settingYear, 11, 1]).endOf('M').format('YYYY-MM-DD HH:mm'),
- kpi_id: kpiYear?.kpi_id || undefined,
- }))(dataSource?.[0] || {});
- tableData.unshift(yearRow);
console.log('sub', tableData, 'del:', delKpiIds);
// return false; // debug:
KPIStore.onSubmit(tableData, { delQueue: delKpiIds }).then((res) => {
@@ -180,28 +181,37 @@ export default observer((props) => {
date_type: searchFormStore.formValuesToSub.DateType,
kpiDataMapped: {},
key: Date.now().toString(32),
+ group_date_type: 'month',
}),
{}
); // v.formItemProps.initialValue
const makeInitialTable = (e) => {
setEditOpen(e);
- // todo: 单独设置之后, 清空筛选会导致无法批量设置新的
+ // test: 单独设置之后, 清空筛选会导致无法批量设置新的
+ const _initialRow = Object.assign({}, initialRow, initialPercentKey);
+ const _objects = isEmpty(objects) ? curObjectItem?.data || [] : objects;
+ // console.log('ooo', objects, isEmpty(objects), curObjectItem?.data || []);
+ const _initialTable = _objects.map((obj) => ({
+ ...cloneDeep(_initialRow),
+ object_name: obj.label,
+ object_id: obj.value,
+ key: Date.now().toString(32) + obj.value,
+ }));
+ // console.log(_initialRow, 'iiiii');
+ const mergePageData = Object.values(
+ Object.assign(
+ {},
+ _initialTable.reduce((r, v) => ({ ...r, [v.object_name]: v }), {}),
+ dataSource.reduce((r, v) => ({ ...r, [v.object_name]: v }), {})
+ )
+ );
if (e && isEmpty(dataSource)) {
- const _initialRow = Object.assign({}, initialRow, initialPercentKey);
- const _objects = isEmpty(objects) ? (curObjectItem?.data || []) : objects;
- console.log('ooo', objects, isEmpty(objects), curObjectItem?.data || []);
- const _initialTable = _objects.map((obj) => ({
- ...cloneDeep(_initialRow),
- object_name: obj.label,
- object_id: obj.value,
- key: Date.now().toString(32) + obj.value,
- }));
- console.log(_initialRow, 'iiiii');
setDataSource(_initialTable);
setEditableRowKeys(_initialTable.map((ele) => ele.key));
return false;
}
- setEditableRowKeys(e ? dataSource.map((ele) => ele.key) : []);
+ setDataSource(mergePageData);
+ setEditableRowKeys(e ? mergePageData.map((ele) => ele.key) : []);
};
const [delKpiIds, setDelKpiIds] = useState([]);
return (
@@ -226,13 +236,11 @@ export default observer((props) => {
return [defaultDoms.delete];
},
onDelete: (_key, _row) => {
- // console.log('del', _key, _row);
const rowKpiIds = (_row?.kpiData || []).map((ele) => ele.kpi_id);
rowKpiIds.push(_row?.kpiYear?.kpi_id);
setDelKpiIds(rowKpiIds);
},
onValuesChange: (record, recordList) => {
- // console.log('on edit, onValuesChange',record, recordList);
onTableChange(recordList);
},
onChange: (editableKeys, editableRows) => {
@@ -242,9 +250,14 @@ export default observer((props) => {
/>
-
+
+
+ {!editOpen && }
+
>
diff --git a/src/components/kpi/SumProfitPanel.jsx b/src/components/kpi/SubjectTable/SumProfitPanel.jsx
similarity index 91%
rename from src/components/kpi/SumProfitPanel.jsx
rename to src/components/kpi/SubjectTable/SumProfitPanel.jsx
index 0818a00..1b5666d 100644
--- a/src/components/kpi/SumProfitPanel.jsx
+++ b/src/components/kpi/SubjectTable/SumProfitPanel.jsx
@@ -2,8 +2,8 @@ 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';
+import SearchForm from '../../search/SearchForm';
+import { bu, KPIObjects } from '../../../libs/ht';
export default observer((props) => {
// const { } = useContext(stores_Context);
diff --git a/src/components/search/GroupSelect.jsx b/src/components/search/GroupSelect.jsx
index 24daa00..edfb5a4 100644
--- a/src/components/search/GroupSelect.jsx
+++ b/src/components/search/GroupSelect.jsx
@@ -1,7 +1,7 @@
import React, { Component } from 'react';
import { Select } from 'antd';
import { observer } from 'mobx-react';
-import { groups } from '../../libs/ht';
+import { groups, leafGroup } from '../../libs/ht';
class GroupSelect extends Component {
constructor(props) {
@@ -9,9 +9,10 @@ class GroupSelect extends Component {
}
render() {
- const { store, mode, value, onChange, show_all, ...extProps } = this.props;
+ const { store, mode, value, onChange, show_all, isLeaf, ...extProps } = this.props;
const _mode = mode || store?.group_select_mode || null;
const _show_all = ['tags', 'multiple'].includes(_mode) ? false : show_all;
+ const options = isLeaf===true ? leafGroup : groups;
return (