Commit 3e2bd56b3453a7980f7954839bc2000b80b879fe
1 parent
284c1916
颜色选择可以修改板数
Showing
1 changed file
with
91 additions
and
29 deletions
src/components/Common/CommonBill/index.js
| @@ -2389,17 +2389,41 @@ const BillComponent = Form.create({ | @@ -2389,17 +2389,41 @@ const BillComponent = Form.create({ | ||
| 2389 | // 拆分为C、M、Y、K四个单独选项 | 2389 | // 拆分为C、M、Y、K四个单独选项 |
| 2390 | const colors = item.sName.split("+"); | 2390 | const colors = item.sName.split("+"); |
| 2391 | colors.forEach(color => { | 2391 | colors.forEach(color => { |
| 2392 | + // 根据颜色获取对应的修改值 | ||
| 2393 | + let colorModifiedValue; | ||
| 2394 | + switch (color) { | ||
| 2395 | + case 'C': colorModifiedValue = item.cColorModified; break; | ||
| 2396 | + case 'M': colorModifiedValue = item.mColorModified; break; | ||
| 2397 | + case 'Y': colorModifiedValue = item.yColorModified; break; | ||
| 2398 | + case 'K': colorModifiedValue = item.kColorModified; break; | ||
| 2399 | + default: colorModifiedValue = undefined; | ||
| 2400 | + } | ||
| 2401 | + // 确定选中状态 | ||
| 2402 | + let isSelected; | ||
| 2403 | + switch (color) { | ||
| 2404 | + case 'C': isSelected = item.cSelected; break; | ||
| 2405 | + case 'M': isSelected = item.mSelected; break; | ||
| 2406 | + case 'Y': isSelected = item.ySelected; break; | ||
| 2407 | + case 'K': isSelected = item.kSelected; break; | ||
| 2408 | + default: isSelected = item.bSelected; | ||
| 2409 | + } | ||
| 2392 | processedColorList.push({ | 2410 | processedColorList.push({ |
| 2393 | ...item, | 2411 | ...item, |
| 2394 | sId: `${item.sId}_${color}`, // 生成唯一ID | 2412 | sId: `${item.sId}_${color}`, // 生成唯一ID |
| 2395 | sName: color, | 2413 | sName: color, |
| 2396 | - dColor: 1, // 每个颜色板数为1 | ||
| 2397 | - bSelected: item.bSelected || false, | ||
| 2398 | - isSplitFromCMYK: true // 标记为从CMYK拆分 | 2414 | + dColor: colorModifiedValue !== undefined ? colorModifiedValue : 1, // 使用修改后的值或默认值1 |
| 2415 | + bSelected: isSelected || false, | ||
| 2416 | + isSplitFromCMYK: true, // 标记为从CMYK拆分 | ||
| 2417 | + dColorModified: colorModifiedValue // 保存修改值 | ||
| 2399 | }); | 2418 | }); |
| 2400 | }); | 2419 | }); |
| 2401 | } else { | 2420 | } else { |
| 2402 | - processedColorList.push(item); | 2421 | + // 恢复之前修改的板数值(如果存在 dColorModified) |
| 2422 | + const restoredItem = { | ||
| 2423 | + ...item, | ||
| 2424 | + dColor: item.dColorModified !== undefined ? item.dColorModified : item.dColor | ||
| 2425 | + }; | ||
| 2426 | + processedColorList.push(restoredItem); | ||
| 2403 | } | 2427 | } |
| 2404 | }); | 2428 | }); |
| 2405 | 2429 | ||
| @@ -2814,24 +2838,14 @@ const SisColorChooseComponent = props => { | @@ -2814,24 +2838,14 @@ const SisColorChooseComponent = props => { | ||
| 2814 | const [rightData, setRightData] = useState(props?.sisColorSelectedData?.filter(item => item.bSelected) || []); | 2838 | const [rightData, setRightData] = useState(props?.sisColorSelectedData?.filter(item => item.bSelected) || []); |
| 2815 | useEffect(() => { | 2839 | useEffect(() => { |
| 2816 | if (props.sisColorSelectedData && props.sisColorSelectedData.length > 0) { | 2840 | if (props.sisColorSelectedData && props.sisColorSelectedData.length > 0) { |
| 2817 | - // 处理拆分的C、M、Y、K选项的选中状态 | ||
| 2818 | - const selectedData = props.sisColorSelectedData.filter(item => { | ||
| 2819 | - if (item.isSplitFromCMYK) { | ||
| 2820 | - // 对于拆分的CMYK选项,检查原始数据中对应的选中状态 | ||
| 2821 | - const originalItem = JSON.parse(props[`${sisTableName}Data`]?.find(row => row.sId === controlSelectedRowId)?.[sisColorField] || '[]').find(orig => orig.sName === 'C+M+Y+K'); | ||
| 2822 | - if (originalItem) { | ||
| 2823 | - switch (item.sName) { | ||
| 2824 | - case 'C': return originalItem.cSelected || false; | ||
| 2825 | - case 'M': return originalItem.mSelected || false; | ||
| 2826 | - case 'Y': return originalItem.ySelected || false; | ||
| 2827 | - case 'K': return originalItem.kSelected || false; | ||
| 2828 | - default: return false; | ||
| 2829 | - } | ||
| 2830 | - } | ||
| 2831 | - return false; | ||
| 2832 | - } else { | ||
| 2833 | - return item.bSelected || false; | ||
| 2834 | - } | 2841 | + // 筛选已选中的项,并恢复之前修改的板数值 |
| 2842 | + const selectedData = props.sisColorSelectedData.filter(item => item.bSelected).map(item => { | ||
| 2843 | + // 恢复之前修改的板数值(如果存在 dColorModified) | ||
| 2844 | + const savedValue = item.dColorModified !== undefined ? item.dColorModified : item.dColor; | ||
| 2845 | + return { | ||
| 2846 | + ...item, | ||
| 2847 | + dColor: savedValue | ||
| 2848 | + }; | ||
| 2835 | }); | 2849 | }); |
| 2836 | setRightData(selectedData); | 2850 | setRightData(selectedData); |
| 2837 | } else { | 2851 | } else { |
| @@ -2868,10 +2882,15 @@ const SisColorChooseComponent = props => { | @@ -2868,10 +2882,15 @@ const SisColorChooseComponent = props => { | ||
| 2868 | if (item.sName === 'C+M+Y+K') { | 2882 | if (item.sName === 'C+M+Y+K') { |
| 2869 | // 处理CMYK颜色 | 2883 | // 处理CMYK颜色 |
| 2870 | // 检查C、M、Y、K是否被选中 | 2884 | // 检查C、M、Y、K是否被选中 |
| 2871 | - const cSelected = rightData.some(item => item.sName === 'C' && item.isSplitFromCMYK); | ||
| 2872 | - const mSelected = rightData.some(item => item.sName === 'M' && item.isSplitFromCMYK); | ||
| 2873 | - const ySelected = rightData.some(item => item.sName === 'Y' && item.isSplitFromCMYK); | ||
| 2874 | - const kSelected = rightData.some(item => item.sName === 'K' && item.isSplitFromCMYK); | 2885 | + const cItem = rightData.find(item => item.sName === 'C' && item.isSplitFromCMYK); |
| 2886 | + const mItem = rightData.find(item => item.sName === 'M' && item.isSplitFromCMYK); | ||
| 2887 | + const yItem = rightData.find(item => item.sName === 'Y' && item.isSplitFromCMYK); | ||
| 2888 | + const kItem = rightData.find(item => item.sName === 'K' && item.isSplitFromCMYK); | ||
| 2889 | + | ||
| 2890 | + const cSelected = !!cItem; | ||
| 2891 | + const mSelected = !!mItem; | ||
| 2892 | + const ySelected = !!yItem; | ||
| 2893 | + const kSelected = !!kItem; | ||
| 2875 | 2894 | ||
| 2876 | // 计算选中的CMYK颜色数量 | 2895 | // 计算选中的CMYK颜色数量 |
| 2877 | const selectedCount = [cSelected, mSelected, ySelected, kSelected].filter(Boolean).length; | 2896 | const selectedCount = [cSelected, mSelected, ySelected, kSelected].filter(Boolean).length; |
| @@ -2884,14 +2903,22 @@ const SisColorChooseComponent = props => { | @@ -2884,14 +2903,22 @@ const SisColorChooseComponent = props => { | ||
| 2884 | cSelected, | 2903 | cSelected, |
| 2885 | mSelected, | 2904 | mSelected, |
| 2886 | ySelected, | 2905 | ySelected, |
| 2887 | - kSelected | 2906 | + kSelected, |
| 2907 | + // 保存各颜色的修改值 | ||
| 2908 | + cColorModified: cItem?.dColorModified, | ||
| 2909 | + mColorModified: mItem?.dColorModified, | ||
| 2910 | + yColorModified: yItem?.dColorModified, | ||
| 2911 | + kColorModified: kItem?.dColorModified, | ||
| 2888 | }); | 2912 | }); |
| 2889 | } else { | 2913 | } else { |
| 2890 | // 处理非CMYK的颜色 | 2914 | // 处理非CMYK的颜色 |
| 2891 | const i = rightData.findIndex(rightItem => rightItem.sId === item.sId); | 2915 | const i = rightData.findIndex(rightItem => rightItem.sId === item.sId); |
| 2916 | + const rightItem = rightData[i]; | ||
| 2892 | colorList.push({ | 2917 | colorList.push({ |
| 2893 | ...item, | 2918 | ...item, |
| 2894 | - bSelected: i > -1 | 2919 | + bSelected: i > -1, |
| 2920 | + dColor: rightItem?.dColorModified !== undefined ? rightItem.dColorModified : item.dColor, | ||
| 2921 | + dColorModified: rightItem?.dColorModified // 保存修改后的值 | ||
| 2895 | }); | 2922 | }); |
| 2896 | } | 2923 | } |
| 2897 | }); | 2924 | }); |
| @@ -2975,8 +3002,43 @@ const SisColorChooseComponent = props => { | @@ -2975,8 +3002,43 @@ const SisColorChooseComponent = props => { | ||
| 2975 | }, | 3002 | }, |
| 2976 | ]; | 3003 | ]; |
| 2977 | 3004 | ||
| 3005 | + // 处理板数输入框变化 | ||
| 3006 | + const handleDColorChange = (record, value) => { | ||
| 3007 | + const newValue = parseFloat(value) || 0; | ||
| 3008 | + const newData = rightData.map(item => { | ||
| 3009 | + if (item.sId === record.sId) { | ||
| 3010 | + return { | ||
| 3011 | + ...item, | ||
| 3012 | + dColor: newValue, | ||
| 3013 | + dColorModified: newValue, // 将修改后的值存储在 dColorModified 字段中 | ||
| 3014 | + }; | ||
| 3015 | + } | ||
| 3016 | + return item; | ||
| 3017 | + }); | ||
| 3018 | + setRightData(newData); | ||
| 3019 | + }; | ||
| 3020 | + | ||
| 2978 | const rightColumns = [ | 3021 | const rightColumns = [ |
| 2979 | - ...baseColumns.map(col => ({ ...col })), | 3022 | + ...baseColumns.map(col => { |
| 3023 | + // 板数列改为可编辑输入框 | ||
| 3024 | + if (col.dataIndex === 'dColor') { | ||
| 3025 | + return { | ||
| 3026 | + ...col, | ||
| 3027 | + render: (text, record) => ( | ||
| 3028 | + <Input | ||
| 3029 | + type="number" | ||
| 3030 | + value={text} | ||
| 3031 | + onChange={(e) => handleDColorChange(record, e.target.value)} | ||
| 3032 | + style={{ | ||
| 3033 | + border: '1px solid #d9d9d9', | ||
| 3034 | + width: '80px', | ||
| 3035 | + }} | ||
| 3036 | + /> | ||
| 3037 | + ), | ||
| 3038 | + }; | ||
| 3039 | + } | ||
| 3040 | + return { ...col }; | ||
| 3041 | + }), | ||
| 2980 | { | 3042 | { |
| 2981 | title: '操作', | 3043 | title: '操作', |
| 2982 | key: 'action', | 3044 | key: 'action', |