Commit 3e2bd56b3453a7980f7954839bc2000b80b879fe

Authored by chenxt
1 parent 284c1916

颜色选择可以修改板数

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',