From 60e9a4af52697850b375b3058012e45f14941acc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Thu, 7 Dec 2023 13:27:35 +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=20=E8=A1=A8?= =?UTF-8?q?=E9=A1=B5=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 | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/pages/calcTable/index.tsx b/src/pages/calcTable/index.tsx index db7ebfe..dca62f5 100644 --- a/src/pages/calcTable/index.tsx +++ b/src/pages/calcTable/index.tsx @@ -49,7 +49,7 @@ const Index: FunctionComponent = (props) => { const [sumRowlistUrl, setSumRowlistUrl] = useState(""); const [payload, setPayload] = useState(""); const [form] = Form.useForm(); - const dataList = useRef([]); + const editItemList = useRef([]); useEffect(() => { window.parent.postMessage({ type: "init" }, "*"); @@ -71,7 +71,6 @@ const Index: FunctionComponent = (props) => { setPayload(payload); setPageInfo(pageInfo); setDataSource(dataSource); - dataList.current = dataSource; setSelectedRowKeys(selectedRowKeys); setColumns([...convertColumns(_.map(columns, o => ({ ...o, i18n: i18nRes }))), { title: i18nRes["操作"], dataIndex: "operate", fixed: "right", width: 120, @@ -109,10 +108,38 @@ const Index: FunctionComponent = (props) => { 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) }); + } + window.parent.postMessage( + { + type: "turn", + payload: { id: "BEATCHUPDATE", params: { resultValueList: JSON.stringify(editItemList.current) } } + }, + "*" + ); newData.splice(index, 1, { ...item, ...row }); 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(() => { return _.map([...dataSource], (item, index) => {