dialog.tsx
2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import * as React from 'react';
import { useRef, useState } from 'react';
import { Modal, Tag } from 'antd';
import './style.less';
import type { RoleModel } from './core';
import RoleSelCore from './core';
// import { RequestMethod } from 'umi-request';
type RoleSelectorDialogProps = {
appId?: string;
title?: string;
visible: boolean;
onCancel: () => void;
data?: [];
multiple?: boolean;
onOk: (selectedKeys: string[], selectedData: RoleModel[]) => void;
request: AnalyserOptions;
isRole?: boolean; // 是否为设计时角色权限
appCode?: string;
};
const RoleSelectorDialog: React.FC<RoleSelectorDialogProps> = (props) => {
const [selectedData, setSelectedData] = useState<RoleModel[]>([]);
const [selectedKeys, setSelectedKeys] = useState<string[]>([]);
const coreRef = useRef({
// eslint-disable-next-line @typescript-eslint/no-unused-vars
remove: (index: number) => {
// console.log(index)
},
emptySelect: () => {},
});
const handleOk = () => {
props.onOk(selectedKeys, selectedData);
coreRef.current.emptySelect();
setSelectedKeys([]);
setSelectedData([]);
};
const handleCancel = () => {
props.onCancel();
coreRef.current.emptySelect();
setSelectedKeys([]);
setSelectedData([]);
};
const handleSelectPos = (keys: string[], datas: RoleModel[]) => {
setSelectedKeys(keys);
setSelectedData(datas);
};
const handleRemove = (index: number) => {
coreRef.current.remove(index);
};
return (
<Modal
title={props.title || '选择角色'}
width={560}
visible={props.visible}
className={'qx-role-selector__dialog'}
onOk={handleOk}
onCancel={handleCancel}
>
{props.multiple ? (
<div className={'qx-role-selected__temp'}>
{(selectedData || []).map((item: RoleModel, index: number) => (
<Tag closable color={'blue'} key={item.id} onClose={() => handleRemove(index)}>
{item.name}
</Tag>
))}
</div>
) : null}
<div className={'qx-role-selector__content'}>
{props.visible ? (
<RoleSelCore
request={props.request}
cRef={coreRef}
// multiple
multiple={!props?.isRole}
onSelect={handleSelectPos}
appId={props.appId}
isRole={props?.isRole}
appCode={props?.appCode}
/>
) : null}
</div>
</Modal>
);
};
export default RoleSelectorDialog;