tree下传数据给dialog

This commit is contained in:
catchonme 2019-09-12 16:42:07 +08:00
parent 7da56c081f
commit 87a5b88d3a
2 changed files with 18 additions and 8 deletions

View File

@ -62,7 +62,7 @@ interface TreeSelectorProps {
onEdit?: Function; onEdit?: Function;
editable?: boolean; editable?: boolean;
openEditDialog?: Function; openEditDialog?: Function;
deletable?: boolean; removable?: boolean;
onRemove?: Function; onRemove?: Function;
} }
@ -439,7 +439,7 @@ export class TreeSelector extends React.Component<TreeSelectorProps, TreeSelecto
minLength, minLength,
addable, addable,
editable, editable,
deletable removable
} = this.props; } = this.props;
const { const {
addItem, addItem,
@ -561,7 +561,7 @@ export class TreeSelector extends React.Component<TreeSelectorProps, TreeSelecto
&& !editItem ? ( && !editItem ? (
<span className={cx('Tree-item-icons')}> <span className={cx('Tree-item-icons')}>
{addable ? <Icon icon="plus" className="icon" onClick={() => this.handleAdd(item, !isLeaf)}/> : null} {addable ? <Icon icon="plus" className="icon" onClick={() => this.handleAdd(item, !isLeaf)}/> : null}
{deletable ? <Icon icon="minus" className="icon" onClick={() => this.handleRemove(item)}/> : null} {removable ? <Icon icon="minus" className="icon" onClick={() => this.handleRemove(item)}/> : null}
{editable ? <Icon icon="pencil" className="icon" onClick={() => this.handleEdit(item)}/> : null} {editable ? <Icon icon="pencil" className="icon" onClick={() => this.handleEdit(item)}/> : null}
</span> </span>
) : null} ) : null}

View File

@ -31,7 +31,8 @@ export interface TreeState {
isAddModalOpened: boolean, isAddModalOpened: boolean,
isEditModalOpened: boolean, isEditModalOpened: boolean,
parent: Option | null, parent: Option | null,
prev: Option | null prev: Option | null,
data: any
} }
export default class TreeControl extends React.Component<TreeProps, TreeState> { export default class TreeControl extends React.Component<TreeProps, TreeState> {
@ -48,7 +49,8 @@ export default class TreeControl extends React.Component<TreeProps, TreeState> {
isAddModalOpened: false, isAddModalOpened: false,
isEditModalOpened: false, isEditModalOpened: false,
parent: null, parent: null,
prev: null prev: null,
data: null
} }
reload() { reload() {
@ -121,7 +123,7 @@ export default class TreeControl extends React.Component<TreeProps, TreeState> {
const result = await env.fetcher(deleteApi, ctx); const result = await env.fetcher(deleteApi, ctx);
if (!result.ok) { if (!result.ok) {
env.notify('error', '删除失败'); env.notify('error', result.msg || '删除失败');
return; return;
} }
@ -131,8 +133,10 @@ export default class TreeControl extends React.Component<TreeProps, TreeState> {
@autobind @autobind
openAddDialog(parent: Option | null) { openAddDialog(parent: Option | null) {
const {data} = this.props;
this.setState({ this.setState({
isAddModalOpened: true, isAddModalOpened: true,
data: createObject(data, parent ? parent : {}),
parent parent
}); });
} }
@ -147,10 +151,12 @@ export default class TreeControl extends React.Component<TreeProps, TreeState> {
@autobind @autobind
openEditDialog(prev: Option) { openEditDialog(prev: Option) {
const {data} = this.props;
this.setState({ this.setState({
isEditModalOpened: true, isEditModalOpened: true,
data: createObject(data, prev),
prev prev
}) });
} }
@autobind @autobind
@ -197,6 +203,8 @@ export default class TreeControl extends React.Component<TreeProps, TreeState> {
deleteApi deleteApi
} = this.props; } = this.props;
const {data} = this.state;
return ( return (
<div className={cx(`${ns}TreeControl`, className)}> <div className={cx(`${ns}TreeControl`, className)}>
{loading ? ( {loading ? (
@ -238,7 +246,7 @@ export default class TreeControl extends React.Component<TreeProps, TreeState> {
onEdit={this.handleEdit} onEdit={this.handleEdit}
openEditDialog={this.openEditDialog} openEditDialog={this.openEditDialog}
onRemove={this.handleRemove} onRemove={this.handleRemove}
deletable={isEffectiveApi(deleteApi)} removable={isEffectiveApi(deleteApi)}
/> />
)} )}
@ -250,6 +258,7 @@ export default class TreeControl extends React.Component<TreeProps, TreeState> {
}, },
{ {
key: 'addModal', key: 'addModal',
data: data,
onConfirm: this.handleAddModalConfirm, onConfirm: this.handleAddModalConfirm,
onClose: this.closeAddDialog, onClose: this.closeAddDialog,
show: this.state.isAddModalOpened show: this.state.isAddModalOpened
@ -264,6 +273,7 @@ export default class TreeControl extends React.Component<TreeProps, TreeState> {
}, },
{ {
key: 'editModal', key: 'editModal',
data: data,
onConfirm: this.handleEditModalConfirm, onConfirm: this.handleEditModalConfirm,
onClose: this.closeEditDialog, onClose: this.closeEditDialog,
show: this.state.isEditModalOpened show: this.state.isEditModalOpened