From 3b8a2218a545418e9b511025fa4d5766c609554d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Tue, 16 Jan 2024 15:27:04 +0800 Subject: [PATCH] =?UTF-8?q?custom/=E9=B2=81=E6=8E=A7=E6=95=B0=E5=AD=97-?= =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=A0=B8=E7=AE=97=E5=88=97=E8=A1=A8=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E6=89=B9=E9=87=8F=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/calcTable/index.tsx | 47 ++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/src/pages/calcTable/index.tsx b/src/pages/calcTable/index.tsx index f1b3618..d244209 100644 --- a/src/pages/calcTable/index.tsx +++ b/src/pages/calcTable/index.tsx @@ -32,7 +32,7 @@ interface EditableCellProps { record?: any; pattern?: number; rowIndex?: number; - handleSave?: (record: any) => void; + handleSave?: (type: string, record: any) => void; } type Props = OwnProps; @@ -106,16 +106,31 @@ const Index: FunctionComponent = (props) => { } }); }; - const handleSave = (row: any) => { + const handleSave = (salaryItemId: string, row: any) => { setDataSource(prevState => { const newData = [...prevState]; const index = newData.findIndex(item => row.id === item.id); const item = newData[index]; - if (!_.isEmpty(getDifferentValues(item, row))) { - if (editItemList.current.findIndex(g => !_.isEmpty(g[_.keys(getDifferentValues(item, row))[0]]) && g.id === row.id) !== -1) { - editItemList.current.splice(editItemList.current.findIndex(g => !_.isEmpty(g[_.keys(getDifferentValues(item, row))[0]])), 1); - } - editItemList.current.push({ id: row.id, ...getDifferentValues(item, row) }); + if (_.map(editItemList.current, t => t.id).includes(row.id)) { + editItemList.current = _.reduce(editItemList.current, (pre: any, cur: any) => { + if (cur.id === row.id) { + return [...pre, { + id: row.id, items: _.map(cur.items, h => h.salaryItemId).includes(salaryItemId) ? + _.map(cur.items, k => { + if (k.salaryItemId === salaryItemId) { + return { ...k, salaryItemId, resultValue: row[salaryItemId] }; + } + return { ...k }; + }) + : [...cur.items, { salaryItemId, resultValue: row[salaryItemId] }] + }]; + } + return [...pre, cur]; + }, []); + } else { + editItemList.current.push({ + id: row.id, items: [{ salaryItemId, resultValue: row[salaryItemId] }] + }); } window.parent.postMessage( { @@ -128,20 +143,6 @@ const Index: FunctionComponent = (props) => { return newData; }); }; - const getDifferentValues = (obj1: any, obj2: any) => { - const differentProperties = {}; - for (const key in obj1) { - if (obj1.hasOwnProperty(key) && obj2.hasOwnProperty(key)) { - if (obj1[key] !== obj2[key]) { - differentProperties[key] = { - obj1Value: obj1[key], - obj2Value: obj2[key] - }; - } - } - } - return differentProperties; - }; const handleChange = (rowIndex: any, dataIndex: any, v: any, dataSource: any[]) => { setDataSource(() => { @@ -261,11 +262,11 @@ const EditableCell: React.FC = (props) => { [_.keys(values)[0]]: !_.isNil(_.get(values, _.keys(values)[0])) ? toDecimal_n(_.get(values, _.keys(values)[0]), restProps?.pattern) : toDecimal_n(0, restProps?.pattern) }; } - handleSave?.({ ...record, ...values }); + handleSave?.(_.keys(values)[0], { ...record, ...values }); } catch (errInfo) { console.log("Save failed:", errInfo); } - }, 500); + }, 200); let childNode = children; if (editable) { childNode = editing ? (