From ac2b2e12f2d8fa3455e56a688a5b53a3f7dcb198 Mon Sep 17 00:00:00 2001 From: zhangjing1 Date: Mon, 16 Mar 2026 22:19:35 +0800 Subject: [PATCH] bug(ECX-8008): --- .../pages/reservation/goods-reservate.js | 73 ++++++++++++------- 1 file changed, 45 insertions(+), 28 deletions(-) diff --git a/src/marketing/pages/reservation/goods-reservate.js b/src/marketing/pages/reservation/goods-reservate.js index 03f7cd8f1..b9fecfb56 100644 --- a/src/marketing/pages/reservation/goods-reservate.js +++ b/src/marketing/pages/reservation/goods-reservate.js @@ -110,18 +110,24 @@ function GoodReservate(props) { let _formList = [] if (isEdit) { - //编辑 - _formList = recordInfo?.content?.[0]?.formdata ?? [] + // 编辑:合并所有 content 区块,并为每项标记 contentIndex 便于提交时按块回填 + const contentBlocks = recordInfo?.content ?? [] + _formList = contentBlocks.flatMap((block, idx) => + (block.formdata || []).map((f) => ({ ...f, contentIndex: idx })) + ) } else { - //新增 - _formList = activity_info?.formdata?.content?.[0]?.formdata ?? [] + // 新增:合并所有 content 区块展示,并为每项标记 contentIndex + const contentBlocks = activity_info?.formdata?.content ?? [] + _formList = contentBlocks.flatMap((block, idx) => + (block.formdata || []).map((f) => ({ ...f, contentIndex: idx })) + ) } let _form = {} let _rules = {} if (_formList.length) { _formList.forEach((item) => { if (item.options && !isEdit) { - //新增才需要转换 + // 新增才需要转换 item.options = JSON.parse(item.options) } @@ -370,19 +376,29 @@ function GoodReservate(props) { console.log('formList', formList) - const renderFormList = (list = []) => { + const contentBlocks = info?.formdata?.content ?? [] + + const renderFormList = () => { + if (!formList.length) return null return ( - <> - {list.length > 0 && ( - - {list.map((item, idx) => ( - - {renderFormItem(item)} - - ))} - - )} - + + {contentBlocks.map((block, blockIdx) => { + const blockFields = formList.filter((item) => item.contentIndex === blockIdx) + if (!blockFields.length) return null + return ( + + {block.title ? ( + {block.title} + ) : null} + {blockFields.map((item, idx) => ( + + {renderFormItem(item)} + + ))} + + ) + })} + ) } @@ -395,17 +411,18 @@ function GoodReservate(props) { const handleSubmit = async () => { const { activity_id } = info let new_subdata = { activity_id, formdata: { content: [] }, distributor_id: getDistributorId() } - const _content = formList.map((item) => ({ - ...item, - answer: ['idcard', 'otherfile'].includes(item.form_element) - ? flatArray(form[item.id]) - : form[item.id] - })) - let formDatacontent = _cloneDeep(info.formdata?.content) - - formDatacontent[0].formdata = _content + const formDatacontent = (info.formdata?.content || []).map((block, blockIdx) => { + const blockFields = formList.filter((item) => item.contentIndex === blockIdx) + const formdata = blockFields.map((item) => ({ + ...item, + answer: ['idcard', 'otherfile'].includes(item.form_element) + ? flatArray(form[item.id]) + : form[item.id] + })) + return { ..._cloneDeep(block), formdata } + }) new_subdata.formdata.content = JSON.stringify(formDatacontent) - console.log('new_subdata', new_subdata, _content) + console.log('new_subdata', new_subdata, formDatacontent) if (router?.params.record_id) { //编辑 @@ -501,7 +518,7 @@ function GoodReservate(props) { 提示:欲在天津会场出席的s大家看我喝点酒哈我觉得回家啊我活动空间啊我和贷记卡文化科技大会。 */} - {renderFormList(formList)} + {renderFormList()}