Commit 4a6c342735b2a3d2a1e49c0f867b4c42d4b1e57a
1 parent
92808bd6
补板颜色选择cmyk需要拆分
Showing
1 changed file
with
83 additions
and
31 deletions
src/mes/common/commonModelComponent/index.js
| @@ -745,7 +745,6 @@ const useCommonModelEvent = props => { | @@ -745,7 +745,6 @@ const useCommonModelEvent = props => { | ||
| 745 | item => item === `${tableName}NotFirstlineSelected` | 745 | item => item === `${tableName}NotFirstlineSelected` |
| 746 | ) > -1; | 746 | ) > -1; |
| 747 | 747 | ||
| 748 | - console.log('ssbNotFirstlidss', bNotFirstlineSelected); | ||
| 749 | 748 | ||
| 750 | if (!bNotFirstlineSelected) { | 749 | if (!bNotFirstlineSelected) { |
| 751 | // 如果配置了默认选中第一行,则默认选中第一行 | 750 | // 如果配置了默认选中第一行,则默认选中第一行 |
| @@ -2361,7 +2360,6 @@ const CommonViewTableComponent = props => { | @@ -2361,7 +2360,6 @@ const CommonViewTableComponent = props => { | ||
| 2361 | if (commonUtils.isEmptyObject(viewRow)) { | 2360 | if (commonUtils.isEmptyObject(viewRow)) { |
| 2362 | viewProps.enabledNew = false; | 2361 | viewProps.enabledNew = false; |
| 2363 | } | 2362 | } |
| 2364 | - console.log(viewProps, 'viewProps'); | ||
| 2365 | 2363 | ||
| 2366 | return ( | 2364 | return ( |
| 2367 | <> | 2365 | <> |
| @@ -2601,7 +2599,6 @@ const CommonTableComponent = props => { | @@ -2601,7 +2599,6 @@ const CommonTableComponent = props => { | ||
| 2601 | 2599 | ||
| 2602 | } | 2600 | } |
| 2603 | }; | 2601 | }; |
| 2604 | - console.log("🚀 ~ CommonTableComponent ~ tableProps:", tableProps) | ||
| 2605 | const handleViewChoose = (tableName, sFieldName, record, index, isColor) => { | 2602 | const handleViewChoose = (tableName, sFieldName, record, index, isColor) => { |
| 2606 | if (isColor) { | 2603 | if (isColor) { |
| 2607 | const { sId } = record; /* 控制表主键 */ | 2604 | const { sId } = record; /* 控制表主键 */ |
| @@ -2613,15 +2610,38 @@ const CommonTableComponent = props => { | @@ -2613,15 +2610,38 @@ const CommonTableComponent = props => { | ||
| 2613 | const iIndex = tableData?.findIndex(item => item.sId === sId); | 2610 | const iIndex = tableData?.findIndex(item => item.sId === sId); |
| 2614 | if (iIndex > -1) { | 2611 | if (iIndex > -1) { |
| 2615 | const sPositiveColor = tableData[iIndex][sFieldName]; | 2612 | const sPositiveColor = tableData[iIndex][sFieldName]; |
| 2616 | - const sPositiveColorList = (sPositiveColor && sPositiveColor !== 'undefined' && sPositiveColor !== 'null') | 2613 | + let sPositiveColorList = (sPositiveColor && sPositiveColor !== 'undefined' && sPositiveColor !== 'null') |
| 2617 | ? JSON.parse(sPositiveColor) | 2614 | ? JSON.parse(sPositiveColor) |
| 2618 | : []; | 2615 | : []; |
| 2616 | + | ||
| 2617 | + // 处理C+M+Y+K拆分为单独选项 | ||
| 2618 | + const processedColorList = []; | ||
| 2619 | + sPositiveColorList.forEach(item => { | ||
| 2620 | + if (item.sName === 'C+M+Y+K') { | ||
| 2621 | + // 拆分为C、M、Y、K四个单独选项 | ||
| 2622 | + const colors = item.sName.split("+"); | ||
| 2623 | + colors.forEach(color => { | ||
| 2624 | + processedColorList.push({ | ||
| 2625 | + ...item, | ||
| 2626 | + sId: `${item.sId}_${color}`, // 生成唯一ID | ||
| 2627 | + sName: color, | ||
| 2628 | + dColor: 1, // 每个颜色板数为1 | ||
| 2629 | + bSelected: item.bSelected || false, | ||
| 2630 | + isSplitFromCMYK: true // 标记为从CMYK拆分 | ||
| 2631 | + }); | ||
| 2632 | + }); | ||
| 2633 | + } else { | ||
| 2634 | + processedColorList.push(item); | ||
| 2635 | + } | ||
| 2636 | + }); | ||
| 2637 | + | ||
| 2638 | + | ||
| 2619 | props.onSaveState({ | 2639 | props.onSaveState({ |
| 2620 | sisColorChooseVisible: true, | 2640 | sisColorChooseVisible: true, |
| 2621 | controlSelectedRowId: sId, /* 控制表选中行sId */ | 2641 | controlSelectedRowId: sId, /* 控制表选中行sId */ |
| 2622 | processSelectedRowId: '', /* 工序表选中行sId */ | 2642 | processSelectedRowId: '', /* 工序表选中行sId */ |
| 2623 | sisColorSelectedRowKeys, | 2643 | sisColorSelectedRowKeys, |
| 2624 | - sisColorSelectedData: sPositiveColorList, | 2644 | + sisColorSelectedData: processedColorList, |
| 2625 | sisColorField: sFieldName, | 2645 | sisColorField: sFieldName, |
| 2626 | sisTableName: tableName, | 2646 | sisTableName: tableName, |
| 2627 | }); | 2647 | }); |
| @@ -2658,7 +2678,6 @@ const CommonTableComponent = props => { | @@ -2658,7 +2678,6 @@ const CommonTableComponent = props => { | ||
| 2658 | } | 2678 | } |
| 2659 | } | 2679 | } |
| 2660 | }, [props.masterData]) | 2680 | }, [props.masterData]) |
| 2661 | - console.log('tableProps', tableProps); | ||
| 2662 | 2681 | ||
| 2663 | return ( | 2682 | return ( |
| 2664 | <> | 2683 | <> |
| @@ -3416,11 +3435,30 @@ const SisColorChooseComponent = props => { | @@ -3416,11 +3435,30 @@ const SisColorChooseComponent = props => { | ||
| 3416 | const [rightData, setRightData] = useState(props?.sisColorSelectedData?.filter(item => item.bSelected) || []); | 3435 | const [rightData, setRightData] = useState(props?.sisColorSelectedData?.filter(item => item.bSelected) || []); |
| 3417 | useEffect(() => { | 3436 | useEffect(() => { |
| 3418 | if (props.sisColorSelectedData && props.sisColorSelectedData.length > 0) { | 3437 | if (props.sisColorSelectedData && props.sisColorSelectedData.length > 0) { |
| 3419 | - setRightData(props?.sisColorSelectedData?.filter(item => item.bSelected) || []); | 3438 | + // 处理拆分的C、M、Y、K选项的选中状态 |
| 3439 | + const selectedData = props.sisColorSelectedData.filter(item => { | ||
| 3440 | + if (item.isSplitFromCMYK) { | ||
| 3441 | + // 对于拆分的CMYK选项,检查原始数据中对应的选中状态 | ||
| 3442 | + const originalItem = JSON.parse(props[`${sisTableName}Data`]?.find(row => row.sId === controlSelectedRowId)?.[sisColorField] || '[]').find(orig => orig.sName === 'C+M+Y+K'); | ||
| 3443 | + if (originalItem) { | ||
| 3444 | + switch (item.sName) { | ||
| 3445 | + case 'C': return originalItem.cSelected || false; | ||
| 3446 | + case 'M': return originalItem.mSelected || false; | ||
| 3447 | + case 'Y': return originalItem.ySelected || false; | ||
| 3448 | + case 'K': return originalItem.kSelected || false; | ||
| 3449 | + default: return false; | ||
| 3450 | + } | ||
| 3451 | + } | ||
| 3452 | + return false; | ||
| 3453 | + } else { | ||
| 3454 | + return item.bSelected || false; | ||
| 3455 | + } | ||
| 3456 | + }); | ||
| 3457 | + setRightData(selectedData); | ||
| 3420 | } else { | 3458 | } else { |
| 3421 | setRightData([]); | 3459 | setRightData([]); |
| 3422 | } | 3460 | } |
| 3423 | - }, [props.sisColorSelectedData, props.sisColorChooseVisible]) | 3461 | + }, [props.sisColorSelectedData, props.sisColorChooseVisible, sisTableName, controlSelectedRowId, sisColorField, props]) |
| 3424 | if (!sisColorChooseVisible) return ""; | 3462 | if (!sisColorChooseVisible) return ""; |
| 3425 | 3463 | ||
| 3426 | const handleClose = () => { | 3464 | const handleClose = () => { |
| @@ -3441,36 +3479,50 @@ const SisColorChooseComponent = props => { | @@ -3441,36 +3479,50 @@ const SisColorChooseComponent = props => { | ||
| 3441 | }); | 3479 | }); |
| 3442 | return | 3480 | return |
| 3443 | } | 3481 | } |
| 3444 | - const colorList = JSON.parse(tableData[iIndex][sisColorField]).map(item => { | ||
| 3445 | - const i = rightData.findIndex(rightItem => rightItem.sId === item.sId); | ||
| 3446 | - let newItem = { | ||
| 3447 | - ...item | ||
| 3448 | - } | ||
| 3449 | - if (i > -1) { | ||
| 3450 | - newItem = { | ||
| 3451 | - ...newItem, | ||
| 3452 | - bSelected: true | ||
| 3453 | - } | 3482 | + |
| 3483 | + // 处理颜色数据,将拆分的C、M、Y、K合并回原来的C+M+Y+K格式,保持原始顺序 | ||
| 3484 | + const originalColorList = JSON.parse(tableData[iIndex][sisColorField]); | ||
| 3485 | + const colorList = []; | ||
| 3486 | + | ||
| 3487 | + // 按照原始顺序处理颜色 | ||
| 3488 | + originalColorList.forEach(item => { | ||
| 3489 | + if (item.sName === 'C+M+Y+K') { | ||
| 3490 | + // 处理CMYK颜色 | ||
| 3491 | + // 检查C、M、Y、K是否被选中 | ||
| 3492 | + const cSelected = rightData.some(item => item.sName === 'C' && item.isSplitFromCMYK); | ||
| 3493 | + const mSelected = rightData.some(item => item.sName === 'M' && item.isSplitFromCMYK); | ||
| 3494 | + const ySelected = rightData.some(item => item.sName === 'Y' && item.isSplitFromCMYK); | ||
| 3495 | + const kSelected = rightData.some(item => item.sName === 'K' && item.isSplitFromCMYK); | ||
| 3496 | + | ||
| 3497 | + // 计算选中的CMYK颜色数量 | ||
| 3498 | + const selectedCount = [cSelected, mSelected, ySelected, kSelected].filter(Boolean).length; | ||
| 3499 | + | ||
| 3500 | + // 添加C+M+Y+K项,bSelected为true当且仅当至少有一个颜色被选中 | ||
| 3501 | + colorList.push({ | ||
| 3502 | + ...item, | ||
| 3503 | + bSelected: selectedCount > 0, | ||
| 3504 | + // 保存选中的CMYK颜色状态 | ||
| 3505 | + cSelected, | ||
| 3506 | + mSelected, | ||
| 3507 | + ySelected, | ||
| 3508 | + kSelected | ||
| 3509 | + }); | ||
| 3454 | } else { | 3510 | } else { |
| 3455 | - newItem = { | ||
| 3456 | - ...newItem, | ||
| 3457 | - bSelected: false | ||
| 3458 | - } | 3511 | + // 处理非CMYK的颜色 |
| 3512 | + const i = rightData.findIndex(rightItem => rightItem.sId === item.sId); | ||
| 3513 | + colorList.push({ | ||
| 3514 | + ...item, | ||
| 3515 | + bSelected: i > -1 | ||
| 3516 | + }); | ||
| 3459 | } | 3517 | } |
| 3460 | - return newItem | ||
| 3461 | }); | 3518 | }); |
| 3519 | + | ||
| 3462 | tableData[iIndex] = { | 3520 | tableData[iIndex] = { |
| 3463 | ...tableData[iIndex], | 3521 | ...tableData[iIndex], |
| 3464 | [sisColorField]: JSON.stringify(colorList), | 3522 | [sisColorField]: JSON.stringify(colorList), |
| 3465 | } | 3523 | } |
| 3466 | - const { sPositiveColor, sOppositeColor } = tableData[iIndex] | ||
| 3467 | - const sPositiveColorList = (sPositiveColor && sPositiveColor !== 'undefined' && sPositiveColor !== 'null') | ||
| 3468 | - ? JSON.parse(sPositiveColor).filter(item => item.bSelected) | ||
| 3469 | - : []; | ||
| 3470 | - const sOppositeColorList = (sOppositeColor && sOppositeColor !== 'undefined' && sOppositeColor !== 'null') | ||
| 3471 | - ? JSON.parse(sOppositeColor).filter(item => item.bSelected) | ||
| 3472 | - : []; | ||
| 3473 | - const allTotalDColor = sPositiveColorList.reduce((total, item) => total + item.dColor, 0) + sOppositeColorList.reduce((total, item) => total + item.dColor, 0); | 3524 | + // 直接从右边表格计算allTotalDColor |
| 3525 | + const allTotalDColor = rightData.reduce((total, item) => total + item.dColor, 0); | ||
| 3474 | tableData[iIndex] = { | 3526 | tableData[iIndex] = { |
| 3475 | ...tableData[iIndex], | 3527 | ...tableData[iIndex], |
| 3476 | iOutsideQty: allTotalDColor, | 3528 | iOutsideQty: allTotalDColor, |