From 1f574acab3a0222e889b97117eed59b2d7133328 Mon Sep 17 00:00:00 2001 From: Lei OT Date: Wed, 4 Sep 2024 10:52:29 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BA=A7=E5=93=81=E7=AE=A1=E7=90=86:?= =?UTF-8?q?=20`=E5=90=8D=E7=A7=B0`=E7=BC=96=E8=BE=91=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=88=B0=E4=B8=AD=E6=96=87=E8=AF=AD=E7=A7=8D`=E5=90=8D?= =?UTF-8?q?=E7=A7=B0`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/products/Detail/ProductInfoForm.jsx | 9 ++++++++- src/views/products/Detail/ProductInfoLgc.jsx | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/views/products/Detail/ProductInfoForm.jsx b/src/views/products/Detail/ProductInfoForm.jsx index 65e6e0d..b470b8a 100644 --- a/src/views/products/Detail/ProductInfoForm.jsx +++ b/src/views/products/Detail/ProductInfoForm.jsx @@ -29,6 +29,8 @@ const InfoForm = ({ onSubmit, onReset, onValuesChange, editablePerm, infoEditabl const filedsets = useProductsTypesFieldsets(editingProduct?.info?.product_type_id); const shows = filedsets[0]; + const [pickEditedInfo, setPickEditedInfo] = useState({}); // 传递联动的字段 + // const [editable, setEditable] = useState(true); const [formEditable, setFormEditable] = useState(true); const [showSave, setShowSave] = useState(true); @@ -39,6 +41,7 @@ const InfoForm = ({ onSubmit, onReset, onValuesChange, editablePerm, infoEditabl const lgc_details_mapped = (editingProduct?.lgc_details || []).reduce((r, c) => ({ ...r, [c.lgc]: c }), {}); form.setFieldValue('lgc_details_mapped', lgc_details_mapped); form.setFieldValue('quotation', editingProduct?.quotation); + setPickEditedInfo({ ...pickEditedInfo, product_title: editingProduct?.info?.product_title }); setFormEditable(infoEditable || priceEditable); @@ -78,6 +81,10 @@ const InfoForm = ({ onSubmit, onReset, onValuesChange, editablePerm, infoEditabl const onIValuesChange = (changedValues, allValues) => { const dest = formValuesMapper(allValues); // console.log('form onValuesChange', Object.keys(changedValues), changedValues); + if ('product_title' in changedValues) { + const editTitle = (changedValues.product_title); + setPickEditedInfo({ ...pickEditedInfo, product_title: editTitle }); + } if (typeof onValuesChange === 'function') { onValuesChange(dest); } @@ -130,7 +137,7 @@ const InfoForm = ({ onSubmit, onReset, onValuesChange, editablePerm, infoEditabl }, }), ]}> - + diff --git a/src/views/products/Detail/ProductInfoLgc.jsx b/src/views/products/Detail/ProductInfoLgc.jsx index 4fd4685..6beec47 100644 --- a/src/views/products/Detail/ProductInfoLgc.jsx +++ b/src/views/products/Detail/ProductInfoLgc.jsx @@ -6,7 +6,7 @@ import { useTranslation } from 'react-i18next'; import { useDefaultLgc } from '@/i18n/LanguageSwitcher'; import { cloneDeep, isEmpty, isNotEmpty } from '@/utils/commons'; -const ProductInfoLgc = ({ editable, formInstance, ...props }) => { +const ProductInfoLgc = ({ editable, formInstance, pickEditedInfo, ...props }) => { const { t } = useTranslation('products'); const { language: languageHT } = useDefaultLgc(); const HTLanguageSetsMapVal = useHTLanguageSetsMapVal(); @@ -15,6 +15,13 @@ const ProductInfoLgc = ({ editable, formInstance, ...props }) => { const [activeKey, setActiveKey] = useState(); const [items, setItems] = useState([]); + useEffect(() => { + formInstance.setFieldValue(['lgc_details_mapped', '2', 'title'], pickEditedInfo.product_title); + + return () => {}; + }, [pickEditedInfo.product_title]); + + useEffect(() => { const existsLgc = (editingProduct?.lgc_details || []).map((ele, li) => ({ ...ele,