feat: 添加子表格复制功能
This commit is contained in:
		
							parent
							
								
									5a7c78d791
								
							
						
					
					
						commit
						aa8ac55c28
					
				@ -1,4 +1,4 @@
 | 
				
			|||||||
import { DeleteOutlined, MenuOutlined } from '@ant-design/icons';
 | 
					import { DeleteOutlined, MenuOutlined, CopyOutlined } from '@ant-design/icons';
 | 
				
			||||||
import { TinyColor } from '@ctrl/tinycolor';
 | 
					import { TinyColor } from '@ctrl/tinycolor';
 | 
				
			||||||
import { SortableContext, SortableContextProps, useSortable } from '@dnd-kit/sortable';
 | 
					import { SortableContext, SortableContextProps, useSortable } from '@dnd-kit/sortable';
 | 
				
			||||||
import { css } from '@emotion/css';
 | 
					import { css } from '@emotion/css';
 | 
				
			||||||
@ -29,7 +29,7 @@ import { useToken } from '../__builtins__';
 | 
				
			|||||||
import { SubFormProvider } from '../association-field/hooks';
 | 
					import { SubFormProvider } from '../association-field/hooks';
 | 
				
			||||||
import { ColumnFieldProvider } from './components/ColumnFieldProvider';
 | 
					import { ColumnFieldProvider } from './components/ColumnFieldProvider';
 | 
				
			||||||
import { extractIndex, isCollectionFieldComponent, isColumnComponent } from './utils';
 | 
					import { extractIndex, isCollectionFieldComponent, isColumnComponent } from './utils';
 | 
				
			||||||
import { isNewRecord } from '../../../data-source/collection-record/isNewRecord';
 | 
					import { isNewRecord, markRecordAsNew } from '../../../data-source/collection-record/isNewRecord';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const useArrayField = (props) => {
 | 
					const useArrayField = (props) => {
 | 
				
			||||||
  const field = useField<ArrayField>();
 | 
					  const field = useField<ArrayField>();
 | 
				
			||||||
@ -118,6 +118,16 @@ const useTableColumns = (props: { showDel?: boolean; isSubTable?: boolean }) =>
 | 
				
			|||||||
      fixed: 'right',
 | 
					      fixed: 'right',
 | 
				
			||||||
      render: (v, record, index) => {
 | 
					      render: (v, record, index) => {
 | 
				
			||||||
        return (
 | 
					        return (
 | 
				
			||||||
 | 
					          <>
 | 
				
			||||||
 | 
					            <CopyOutlined
 | 
				
			||||||
 | 
					              style={{ cursor: 'pointer', marginRight: '10px' }}
 | 
				
			||||||
 | 
					              onClick={() => {
 | 
				
			||||||
 | 
					                action(() => {
 | 
				
			||||||
 | 
					                  field.value = field.value || [];
 | 
				
			||||||
 | 
					                  field.value.push(markRecordAsNew({ ...JSON.parse(JSON.stringify(record)) }));
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					              }}
 | 
				
			||||||
 | 
					            />
 | 
				
			||||||
            <DeleteOutlined
 | 
					            <DeleteOutlined
 | 
				
			||||||
              style={{ cursor: 'pointer' }}
 | 
					              style={{ cursor: 'pointer' }}
 | 
				
			||||||
              onClick={() => {
 | 
					              onClick={() => {
 | 
				
			||||||
@ -133,6 +143,7 @@ const useTableColumns = (props: { showDel?: boolean; isSubTable?: boolean }) =>
 | 
				
			|||||||
                });
 | 
					                });
 | 
				
			||||||
              }}
 | 
					              }}
 | 
				
			||||||
            />
 | 
					            />
 | 
				
			||||||
 | 
					          </>
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
@ -248,6 +259,7 @@ export const Table: any = observer(
 | 
				
			|||||||
    } = { ...others1, ...others2 } as any;
 | 
					    } = { ...others1, ...others2 } as any;
 | 
				
			||||||
    const field = useArrayField(others);
 | 
					    const field = useArrayField(others);
 | 
				
			||||||
    const columns = useTableColumns(others);
 | 
					    const columns = useTableColumns(others);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const schema = useFieldSchema();
 | 
					    const schema = useFieldSchema();
 | 
				
			||||||
    const collection = useCollection_deprecated();
 | 
					    const collection = useCollection_deprecated();
 | 
				
			||||||
    const isTableSelector = schema?.parent?.['x-decorator'] === 'TableSelectorProvider';
 | 
					    const isTableSelector = schema?.parent?.['x-decorator'] === 'TableSelectorProvider';
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user