Commit 3e2bd56b3453a7980f7954839bc2000b80b879fe

Authored by chenxt
1 parent 284c1916

颜色选择可以修改板数

src/components/Common/CommonBill/index.js
... ... @@ -2389,17 +2389,41 @@ const BillComponent = Form.create({
2389 2389 // 拆分为C、M、Y、K四个单独选项
2390 2390 const colors = item.sName.split("+");
2391 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 2410 processedColorList.push({
2393 2411 ...item,
2394 2412 sId: `${item.sId}_${color}`, // 生成唯一ID
2395 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 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 2838 const [rightData, setRightData] = useState(props?.sisColorSelectedData?.filter(item => item.bSelected) || []);
2815 2839 useEffect(() => {
2816 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 2850 setRightData(selectedData);
2837 2851 } else {
... ... @@ -2868,10 +2882,15 @@ const SisColorChooseComponent = props => {
2868 2882 if (item.sName === 'C+M+Y+K') {
2869 2883 // 处理CMYK颜色
2870 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 2895 // 计算选中的CMYK颜色数量
2877 2896 const selectedCount = [cSelected, mSelected, ySelected, kSelected].filter(Boolean).length;
... ... @@ -2884,14 +2903,22 @@ const SisColorChooseComponent = props => {
2884 2903 cSelected,
2885 2904 mSelected,
2886 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 2913 } else {
2890 2914 // 处理非CMYK的颜色
2891 2915 const i = rightData.findIndex(rightItem => rightItem.sId === item.sId);
  2916 + const rightItem = rightData[i];
2892 2917 colorList.push({
2893 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 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 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 3043 title: '操作',
2982 3044 key: 'action',
... ...