From 3e2bd56b3453a7980f7954839bc2000b80b879fe Mon Sep 17 00:00:00 2001 From: chenxt <10125295+chen-xintao97@user.noreply.gitee.com> Date: Fri, 10 Apr 2026 11:10:58 +0800 Subject: [PATCH] 颜色选择可以修改板数 --- src/components/Common/CommonBill/index.js | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 91 insertions(+), 29 deletions(-) diff --git a/src/components/Common/CommonBill/index.js b/src/components/Common/CommonBill/index.js index 8b1cb42..26cfead 100644 --- a/src/components/Common/CommonBill/index.js +++ b/src/components/Common/CommonBill/index.js @@ -2389,17 +2389,41 @@ const BillComponent = Form.create({ // 拆分为C、M、Y、K四个单独选项 const colors = item.sName.split("+"); colors.forEach(color => { + // 根据颜色获取对应的修改值 + let colorModifiedValue; + switch (color) { + case 'C': colorModifiedValue = item.cColorModified; break; + case 'M': colorModifiedValue = item.mColorModified; break; + case 'Y': colorModifiedValue = item.yColorModified; break; + case 'K': colorModifiedValue = item.kColorModified; break; + default: colorModifiedValue = undefined; + } + // 确定选中状态 + let isSelected; + switch (color) { + case 'C': isSelected = item.cSelected; break; + case 'M': isSelected = item.mSelected; break; + case 'Y': isSelected = item.ySelected; break; + case 'K': isSelected = item.kSelected; break; + default: isSelected = item.bSelected; + } processedColorList.push({ ...item, sId: `${item.sId}_${color}`, // 生成唯一ID sName: color, - dColor: 1, // 每个颜色板数为1 - bSelected: item.bSelected || false, - isSplitFromCMYK: true // 标记为从CMYK拆分 + dColor: colorModifiedValue !== undefined ? colorModifiedValue : 1, // 使用修改后的值或默认值1 + bSelected: isSelected || false, + isSplitFromCMYK: true, // 标记为从CMYK拆分 + dColorModified: colorModifiedValue // 保存修改值 }); }); } else { - processedColorList.push(item); + // 恢复之前修改的板数值(如果存在 dColorModified) + const restoredItem = { + ...item, + dColor: item.dColorModified !== undefined ? item.dColorModified : item.dColor + }; + processedColorList.push(restoredItem); } }); @@ -2814,24 +2838,14 @@ const SisColorChooseComponent = props => { const [rightData, setRightData] = useState(props?.sisColorSelectedData?.filter(item => item.bSelected) || []); useEffect(() => { if (props.sisColorSelectedData && props.sisColorSelectedData.length > 0) { - // 处理拆分的C、M、Y、K选项的选中状态 - const selectedData = props.sisColorSelectedData.filter(item => { - if (item.isSplitFromCMYK) { - // 对于拆分的CMYK选项,检查原始数据中对应的选中状态 - const originalItem = JSON.parse(props[`${sisTableName}Data`]?.find(row => row.sId === controlSelectedRowId)?.[sisColorField] || '[]').find(orig => orig.sName === 'C+M+Y+K'); - if (originalItem) { - switch (item.sName) { - case 'C': return originalItem.cSelected || false; - case 'M': return originalItem.mSelected || false; - case 'Y': return originalItem.ySelected || false; - case 'K': return originalItem.kSelected || false; - default: return false; - } - } - return false; - } else { - return item.bSelected || false; - } + // 筛选已选中的项,并恢复之前修改的板数值 + const selectedData = props.sisColorSelectedData.filter(item => item.bSelected).map(item => { + // 恢复之前修改的板数值(如果存在 dColorModified) + const savedValue = item.dColorModified !== undefined ? item.dColorModified : item.dColor; + return { + ...item, + dColor: savedValue + }; }); setRightData(selectedData); } else { @@ -2868,10 +2882,15 @@ const SisColorChooseComponent = props => { if (item.sName === 'C+M+Y+K') { // 处理CMYK颜色 // 检查C、M、Y、K是否被选中 - const cSelected = rightData.some(item => item.sName === 'C' && item.isSplitFromCMYK); - const mSelected = rightData.some(item => item.sName === 'M' && item.isSplitFromCMYK); - const ySelected = rightData.some(item => item.sName === 'Y' && item.isSplitFromCMYK); - const kSelected = rightData.some(item => item.sName === 'K' && item.isSplitFromCMYK); + const cItem = rightData.find(item => item.sName === 'C' && item.isSplitFromCMYK); + const mItem = rightData.find(item => item.sName === 'M' && item.isSplitFromCMYK); + const yItem = rightData.find(item => item.sName === 'Y' && item.isSplitFromCMYK); + const kItem = rightData.find(item => item.sName === 'K' && item.isSplitFromCMYK); + + const cSelected = !!cItem; + const mSelected = !!mItem; + const ySelected = !!yItem; + const kSelected = !!kItem; // 计算选中的CMYK颜色数量 const selectedCount = [cSelected, mSelected, ySelected, kSelected].filter(Boolean).length; @@ -2884,14 +2903,22 @@ const SisColorChooseComponent = props => { cSelected, mSelected, ySelected, - kSelected + kSelected, + // 保存各颜色的修改值 + cColorModified: cItem?.dColorModified, + mColorModified: mItem?.dColorModified, + yColorModified: yItem?.dColorModified, + kColorModified: kItem?.dColorModified, }); } else { // 处理非CMYK的颜色 const i = rightData.findIndex(rightItem => rightItem.sId === item.sId); + const rightItem = rightData[i]; colorList.push({ ...item, - bSelected: i > -1 + bSelected: i > -1, + dColor: rightItem?.dColorModified !== undefined ? rightItem.dColorModified : item.dColor, + dColorModified: rightItem?.dColorModified // 保存修改后的值 }); } }); @@ -2975,8 +3002,43 @@ const SisColorChooseComponent = props => { }, ]; + // 处理板数输入框变化 + const handleDColorChange = (record, value) => { + const newValue = parseFloat(value) || 0; + const newData = rightData.map(item => { + if (item.sId === record.sId) { + return { + ...item, + dColor: newValue, + dColorModified: newValue, // 将修改后的值存储在 dColorModified 字段中 + }; + } + return item; + }); + setRightData(newData); + }; + const rightColumns = [ - ...baseColumns.map(col => ({ ...col })), + ...baseColumns.map(col => { + // 板数列改为可编辑输入框 + if (col.dataIndex === 'dColor') { + return { + ...col, + render: (text, record) => ( + handleDColorChange(record, e.target.value)} + style={{ + border: '1px solid #d9d9d9', + width: '80px', + }} + /> + ), + }; + } + return { ...col }; + }), { title: '操作', key: 'action', -- libgit2 0.22.2