forgeplus-react/src/forge/Component/AddMember.jsx

100 lines
2.4 KiB
React
Raw Normal View History

2021-02-03 15:53:15 +08:00
import React, { useEffect, useState } from 'react';
import { AutoComplete , Button , Icon } from 'antd';
import axios from 'axios';
import { getImageUrl } from 'educoder';
const { Option } = AutoComplete;
function AddMember({getID,login,showNotification}){
2021-02-03 15:53:15 +08:00
const [ id , setID ] = useState(undefined);
const [ source , setSource ] = useState(undefined);
const [ searchKey , setSearchKey ] = useState(undefined);
useEffect(()=>{
getUserList();
},[searchKey])
function getUserList(e){
const url = `/users/list.json`;
axios.get(url, {
params: {
search: searchKey,
},
}).then((result) => {
if (result) {
sourceOptions(result.data.users);
}
})
.catch((error) => {
console.log(error);
});
};
function sourceOptions(userDataSource){
const s = userDataSource && userDataSource.map((item, key) => {
return (
<Option
key={key}
2021-02-04 14:54:26 +08:00
value={`${item.user_id}`}
login={`${item.login}`}
name={item.username}
2021-02-03 15:53:15 +08:00
>
<img
className="user_img radius"
width="28"
height="28"
src={getImageUrl(`/${item && item.image_url}`)}
2021-02-03 15:53:15 +08:00
alt=""
/>
2021-06-09 11:52:36 +08:00
<span className="ml10" style={{ verticalAlign: "middle" }}>
2021-02-03 15:53:15 +08:00
{item.username}
<span className="color-grey ml10">({item.login})</span>
</span>
</Option>
);
});
setSource(s);
}
function changeInputUser(e){
setSearchKey(e);
};
// 选择用户
function selectInputUser(e, option){
2021-02-04 14:54:26 +08:00
setID(login ? e : option.props.login);
setSearchKey(option.props.name);
2021-02-03 15:53:15 +08:00
};
function addCollaborator(){
if(source && source.length>0){
getID && getID(id);
setSearchKey(undefined);
}else{
showNotification("请选择存在的用户!");
}
2021-02-03 15:53:15 +08:00
}
return(
<div className="addPanel">
<AutoComplete
dataSource={source}
value={searchKey}
style={{ width: 300 }}
onChange={changeInputUser}
onSelect={selectInputUser}
placeholder="搜索需要添加的用户..."
2021-02-04 14:54:26 +08:00
allowClear
2021-02-03 15:53:15 +08:00
/>
<Button
type="primary"
ghost
onClick={addCollaborator}
className="ml15"
>
<Icon type="plus" size="16"></Icon>
添加成员
</Button>
</div>
)
}
export default AddMember;