Commit 4a6c342735b2a3d2a1e49c0f867b4c42d4b1e57a

Authored by chenxt
1 parent 92808bd6

补板颜色选择cmyk需要拆分

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 =&gt; { @@ -2601,7 +2599,6 @@ const CommonTableComponent = props =&gt; {
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 =&gt; { @@ -2613,15 +2610,38 @@ const CommonTableComponent = props =&gt; {
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 =&gt; { @@ -2658,7 +2678,6 @@ const CommonTableComponent = props =&gt; {
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 =&gt; { @@ -3416,11 +3435,30 @@ const SisColorChooseComponent = props =&gt; {
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 =&gt; { @@ -3441,36 +3479,50 @@ const SisColorChooseComponent = props =&gt; {
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,