diff --git a/src/components/kpi/SubjectTable/Count.jsx b/src/components/kpi/SubjectTable/Count.jsx index cb8a363..083fc65 100644 --- a/src/components/kpi/SubjectTable/Count.jsx +++ b/src/components/kpi/SubjectTable/Count.jsx @@ -22,12 +22,17 @@ export default observer((props) => { const [dataSource, setDataSource] = useState(KPIStore.pageData); const [editOpen, setEditOpen] = useState(false); const [editableRowsKeys, setEditableRowKeys] = useState([]); + useEffect(() => { + resetTable(); + return () => {}; + }, [KPIStore.pageData]); + + const resetTable = () => { setDataSource(KPIStore.pageData); setEditableRowKeys([]); setEditOpen(false); - return () => {}; - }, [KPIStore.pageData]); + }; const PercentInput = useMemo( () => @@ -187,7 +192,6 @@ export default observer((props) => { ); // v.formItemProps.initialValue const makeInitialTable = (e) => { setEditOpen(e); - // test: 单独设置之后, 清空筛选会导致无法批量设置新的 const _initialRow = Object.assign({}, initialRow, initialPercentKey); const _objects = isEmpty(objects) ? curObjectItem?.data || [] : objects; const _initialTable = _objects.map((obj) => ({ @@ -202,7 +206,7 @@ export default observer((props) => { _initialTable.reduce((r, v) => ({ ...r, [v.object_name]: v }), {}), dataSource.reduce((r, v) => ({ ...r, [v.object_name]: v }), {}) ) - ); + ).sort((a, b) => isEmpty(b.kpiDataMapped) ? -1 : 1); if (e && isEmpty(dataSource)) { setDataSource(_initialTable); setEditableRowKeys(_initialTable.map((ele) => ele.key)); @@ -212,6 +216,12 @@ export default observer((props) => { setEditableRowKeys(e ? mergePageData.map((ele) => ele.key) : []); }; const [delKpiIds, setDelKpiIds] = useState([]); + const rowHighlight = (record, rowIndex) => { + const all = 'editable-row'; + const rowNotSetted = isEmpty(record?.kpiDataMapped) === true; + const warningCls = rowNotSetted ? '' : 'ant-tag-green'; + return editOpen ? [all, warningCls].join(' ') : ''; + }; return ( <> @@ -227,6 +237,7 @@ export default observer((props) => { value={dataSource} onChange={onTableChange} recordCreatorProps={false} + rowClassName={rowHighlight} editable={{ type: 'multiple', editableKeys: editableRowsKeys, @@ -252,8 +263,10 @@ export default observer((props) => { - {!editOpen && : } diff --git a/src/components/kpi/SubjectTable/Profit.jsx b/src/components/kpi/SubjectTable/Profit.jsx index 331daa2..c417422 100644 --- a/src/components/kpi/SubjectTable/Profit.jsx +++ b/src/components/kpi/SubjectTable/Profit.jsx @@ -23,11 +23,15 @@ export default observer((props) => { const [editOpen, setEditOpen] = useState(false); const [editableRowsKeys, setEditableRowKeys] = useState([]); useEffect(() => { + resetTable(); + return () => {}; + }, [KPIStore.pageData]); + + const resetTable = () => { setDataSource(KPIStore.pageData); setEditableRowKeys([]); setEditOpen(false); - return () => {}; - }, [KPIStore.pageData]); + }; const PercentInput = useMemo( () => @@ -187,24 +191,22 @@ export default observer((props) => { ); // v.formItemProps.initialValue const makeInitialTable = (e) => { setEditOpen(e); - // 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_id]: v }), {}), dataSource.reduce((r, v) => ({ ...r, [v.object_id]: v }), {}) ) - ); + ).sort((a, b) => isEmpty(b.kpiDataMapped) ? -1 : 1); + // console.log(mergePageData, 'iiiii'); if (e && isEmpty(dataSource)) { setDataSource(_initialTable); setEditableRowKeys(_initialTable.map((ele) => ele.key)); @@ -214,6 +216,12 @@ export default observer((props) => { setEditableRowKeys(e ? mergePageData.map((ele) => ele.key) : []); }; const [delKpiIds, setDelKpiIds] = useState([]); + const rowHighlight = (record, rowIndex) => { + const all = 'editable-row'; + const rowNotSetted = isEmpty(record?.kpiDataMapped) === true; + const warningCls = rowNotSetted ? '' : 'ant-tag-green'; + return editOpen ? [all, warningCls].join(' ') : ''; + }; return ( <> @@ -229,6 +237,7 @@ export default observer((props) => { value={dataSource} onChange={onTableChange} recordCreatorProps={false} + rowClassName={rowHighlight} editable={{ type: 'multiple', editableKeys: editableRowsKeys, @@ -254,8 +263,10 @@ export default observer((props) => { - {!editOpen && : } diff --git a/src/components/kpi/SubjectTable/Rates.jsx b/src/components/kpi/SubjectTable/Rates.jsx index 2cac5ac..5a7c1d9 100644 --- a/src/components/kpi/SubjectTable/Rates.jsx +++ b/src/components/kpi/SubjectTable/Rates.jsx @@ -23,12 +23,15 @@ export default observer((props) => { const [editOpen, setEditOpen] = useState(false); const [editableRowsKeys, setEditableRowKeys] = useState([]); useEffect(() => { - // console.log(KPIStore.pageData); + resetTable(); + return () => {}; + }, [KPIStore.pageData]); + + const resetTable = () => { setDataSource(KPIStore.pageData); setEditableRowKeys([]); setEditOpen(false); - return () => {}; - }, [KPIStore.pageData]); + }; const PercentInput = useMemo( () => @@ -187,7 +190,6 @@ export default observer((props) => { ); // v.formItemProps.initialValue const makeInitialTable = (e) => { setEditOpen(e); - // test: 单独设置之后, 清空筛选会导致无法批量设置新的 const _initialRow = Object.assign({}, initialRow, initialPercentKey); const _objects = isEmpty(objects) ? curObjectItem?.data || [] : objects; const _initialTable = _objects.map((obj) => ({ @@ -202,7 +204,7 @@ export default observer((props) => { _initialTable.reduce((r, v) => ({ ...r, [v.object_name]: v }), {}), dataSource.reduce((r, v) => ({ ...r, [v.object_name]: v }), {}) ) - ); + ).sort((a, b) => isEmpty(b.kpiDataMapped) ? -1 : 1); if (e && isEmpty(dataSource)) { setDataSource(_initialTable); setEditableRowKeys(_initialTable.map((ele) => ele.key)); @@ -212,6 +214,12 @@ export default observer((props) => { setEditableRowKeys(e ? mergePageData.map((ele) => ele.key) : []); }; const [delKpiIds, setDelKpiIds] = useState([]); + const rowHighlight = (record, rowIndex) => { + const all = 'editable-row'; + const rowNotSetted = isEmpty(record?.kpiDataMapped) === true; + const warningCls = rowNotSetted ? '' : 'ant-tag-green'; + return editOpen ? [all, warningCls].join(' ') : ''; + }; return ( <> @@ -227,6 +235,7 @@ export default observer((props) => { value={dataSource} onChange={onTableChange} recordCreatorProps={false} + rowClassName={rowHighlight} editable={{ type: 'multiple', editableKeys: editableRowsKeys, @@ -252,8 +261,10 @@ export default observer((props) => { - {!editOpen && : }