From 4a6c342735b2a3d2a1e49c0f867b4c42d4b1e57a Mon Sep 17 00:00:00 2001 From: chenxt <10125295+chen-xintao97@user.noreply.gitee.com> Date: Fri, 3 Apr 2026 09:28:03 +0800 Subject: [PATCH] 补板颜色选择cmyk需要拆分 --- src/mes/common/commonModelComponent/index.js | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------- 1 file changed, 83 insertions(+), 31 deletions(-) diff --git a/src/mes/common/commonModelComponent/index.js b/src/mes/common/commonModelComponent/index.js index a0dfb53..959c20d 100644 --- a/src/mes/common/commonModelComponent/index.js +++ b/src/mes/common/commonModelComponent/index.js @@ -745,7 +745,6 @@ const useCommonModelEvent = props => { item => item === `${tableName}NotFirstlineSelected` ) > -1; - console.log('ssbNotFirstlidss', bNotFirstlineSelected); if (!bNotFirstlineSelected) { // 如果配置了默认选中第一行,则默认选中第一行 @@ -2361,7 +2360,6 @@ const CommonViewTableComponent = props => { if (commonUtils.isEmptyObject(viewRow)) { viewProps.enabledNew = false; } - console.log(viewProps, 'viewProps'); return ( <> @@ -2601,7 +2599,6 @@ const CommonTableComponent = props => { } }; - console.log("🚀 ~ CommonTableComponent ~ tableProps:", tableProps) const handleViewChoose = (tableName, sFieldName, record, index, isColor) => { if (isColor) { const { sId } = record; /* 控制表主键 */ @@ -2613,15 +2610,38 @@ const CommonTableComponent = props => { const iIndex = tableData?.findIndex(item => item.sId === sId); if (iIndex > -1) { const sPositiveColor = tableData[iIndex][sFieldName]; - const sPositiveColorList = (sPositiveColor && sPositiveColor !== 'undefined' && sPositiveColor !== 'null') + let sPositiveColorList = (sPositiveColor && sPositiveColor !== 'undefined' && sPositiveColor !== 'null') ? JSON.parse(sPositiveColor) : []; + + // 处理C+M+Y+K拆分为单独选项 + const processedColorList = []; + sPositiveColorList.forEach(item => { + if (item.sName === 'C+M+Y+K') { + // 拆分为C、M、Y、K四个单独选项 + const colors = item.sName.split("+"); + colors.forEach(color => { + processedColorList.push({ + ...item, + sId: `${item.sId}_${color}`, // 生成唯一ID + sName: color, + dColor: 1, // 每个颜色板数为1 + bSelected: item.bSelected || false, + isSplitFromCMYK: true // 标记为从CMYK拆分 + }); + }); + } else { + processedColorList.push(item); + } + }); + + props.onSaveState({ sisColorChooseVisible: true, controlSelectedRowId: sId, /* 控制表选中行sId */ processSelectedRowId: '', /* 工序表选中行sId */ sisColorSelectedRowKeys, - sisColorSelectedData: sPositiveColorList, + sisColorSelectedData: processedColorList, sisColorField: sFieldName, sisTableName: tableName, }); @@ -2658,7 +2678,6 @@ const CommonTableComponent = props => { } } }, [props.masterData]) - console.log('tableProps', tableProps); return ( <> @@ -3416,11 +3435,30 @@ const SisColorChooseComponent = props => { const [rightData, setRightData] = useState(props?.sisColorSelectedData?.filter(item => item.bSelected) || []); useEffect(() => { if (props.sisColorSelectedData && props.sisColorSelectedData.length > 0) { - setRightData(props?.sisColorSelectedData?.filter(item => item.bSelected) || []); + // 处理拆分的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; + } + }); + setRightData(selectedData); } else { setRightData([]); } - }, [props.sisColorSelectedData, props.sisColorChooseVisible]) + }, [props.sisColorSelectedData, props.sisColorChooseVisible, sisTableName, controlSelectedRowId, sisColorField, props]) if (!sisColorChooseVisible) return ""; const handleClose = () => { @@ -3441,36 +3479,50 @@ const SisColorChooseComponent = props => { }); return } - const colorList = JSON.parse(tableData[iIndex][sisColorField]).map(item => { - const i = rightData.findIndex(rightItem => rightItem.sId === item.sId); - let newItem = { - ...item - } - if (i > -1) { - newItem = { - ...newItem, - bSelected: true - } + + // 处理颜色数据,将拆分的C、M、Y、K合并回原来的C+M+Y+K格式,保持原始顺序 + const originalColorList = JSON.parse(tableData[iIndex][sisColorField]); + const colorList = []; + + // 按照原始顺序处理颜色 + originalColorList.forEach(item => { + 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); + + // 计算选中的CMYK颜色数量 + const selectedCount = [cSelected, mSelected, ySelected, kSelected].filter(Boolean).length; + + // 添加C+M+Y+K项,bSelected为true当且仅当至少有一个颜色被选中 + colorList.push({ + ...item, + bSelected: selectedCount > 0, + // 保存选中的CMYK颜色状态 + cSelected, + mSelected, + ySelected, + kSelected + }); } else { - newItem = { - ...newItem, - bSelected: false - } + // 处理非CMYK的颜色 + const i = rightData.findIndex(rightItem => rightItem.sId === item.sId); + colorList.push({ + ...item, + bSelected: i > -1 + }); } - return newItem }); + tableData[iIndex] = { ...tableData[iIndex], [sisColorField]: JSON.stringify(colorList), } - const { sPositiveColor, sOppositeColor } = tableData[iIndex] - const sPositiveColorList = (sPositiveColor && sPositiveColor !== 'undefined' && sPositiveColor !== 'null') - ? JSON.parse(sPositiveColor).filter(item => item.bSelected) - : []; - const sOppositeColorList = (sOppositeColor && sOppositeColor !== 'undefined' && sOppositeColor !== 'null') - ? JSON.parse(sOppositeColor).filter(item => item.bSelected) - : []; - const allTotalDColor = sPositiveColorList.reduce((total, item) => total + item.dColor, 0) + sOppositeColorList.reduce((total, item) => total + item.dColor, 0); + // 直接从右边表格计算allTotalDColor + const allTotalDColor = rightData.reduce((total, item) => total + item.dColor, 0); tableData[iIndex] = { ...tableData[iIndex], iOutsideQty: allTotalDColor, -- libgit2 0.22.2