Commit 3a605525 by zhaochengxiang

模型分支用户

parent 173c142e
......@@ -58,20 +58,6 @@ const FC = (props) => {
return ''
}, [maintenanceRecords])
const getUsers = () => {
setLoadingUsers(true)
dispatch({
type: 'datamodel.getCooperationUsers',
callback: data => {
setLoadingUsers(false)
setUsers(data)
},
error: () => {
setLoadingUsers(false)
}
})
}
const getMaintenanceRecords = () => {
dispatch({
type: 'datamodel.getMaintenanceRecords',
......
......@@ -135,8 +135,6 @@ const FC = (props) => {
export default FC
const Basic = React.forwardRef(function ({ type, item, user }, ref) {
const [loadingUsers, setLoadingUsers] = React.useState(false)
const [users, setUsers] = React.useState()
const [form] = Form.useForm()
React.useImperativeHandle(ref, () => ({
......@@ -178,11 +176,7 @@ const Basic = React.forwardRef(function ({ type, item, user }, ref) {
}
return rows
},
}), [form, type, user, users])
React.useEffect(() => {
getUsers()
}, [])
}), [form, type, user])
React.useEffect(() => {
if (item && type === 'update') {
......@@ -198,20 +192,6 @@ const Basic = React.forwardRef(function ({ type, item, user }, ref) {
return (type==='update' && !item?.editable) ? 5 : 15
}, [type, item])
const getUsers = () => {
setLoadingUsers(true)
dispatch({
type: 'datamodel.getCooperationUsers',
callback: data => {
setLoadingUsers(false)
setUsers(data)
},
error: () => {
setLoadingUsers(false)
}
})
}
const onValuesChange = (changedValues, allValues) => {
}
......@@ -250,7 +230,7 @@ const Basic = React.forwardRef(function ({ type, item, user }, ref) {
rules={[{ required: (type==='update'), message: '请选择项目负责人!' }]}
>
{
type === 'add' ? <span>{user?.userName}</span> : <UsersItem loading={loadingUsers} users={users} readonly={(type==='update'&&!item?.editable)} />
type === 'add' ? <span>{`${user?.userDName}(${user?.userName})`}</span> : <UsersItem readonly={(type==='update'&&!item?.editable)} />
}
</Form.Item>
<Form.Item
......@@ -259,7 +239,7 @@ const Basic = React.forwardRef(function ({ type, item, user }, ref) {
style={{ marginBottom }}
// rules={[{ required: true, message: '请选择项目成员!' }]}
>
<UsersItem loading={loadingUsers} users={users} readonly={(type==='update'&&!item?.editable)} />
<UsersItem readonly={(type==='update'&&!item?.editable)} />
</Form.Item>
<Form.Item
label='模型设置'
......@@ -273,27 +253,48 @@ const Basic = React.forwardRef(function ({ type, item, user }, ref) {
})
//注意 这里使用name作为唯一标识 id有可能为空
export const UsersItem = ({ loading, users, value, onChange, readonly = false }) => {
export const UsersItem = ({ value, onChange, readonly = false }) => {
const [loading, setLoading] = React.useState(false)
const [searchValue, setSearchValue] = React.useState()
const [options, setOptions] = React.useState()
useDebounceEffect(() => {
setOptions(
(users??[])
.filter(item => !searchValue || (item.name??'').indexOf(searchValue)!==-1 || (item.dname??'').indexOf(searchValue)!==-1)
.map(item => ({
label: item.name,
value: item.name,
}))
)
}, [searchValue, users], { wait: 300 })
if (searchValue) {
getUsers()
} else {
setOptions()
}
}, [searchValue], { wait: 300 })
const getUsers = () => {
setLoading(true)
dispatch({
type: 'datamodel.getCooperationUsers',
payload: {
match: searchValue,
},
callback: data => {
setLoading(false)
setOptions(
(data??[]).map(item => ({
label: `${item.dname}(${item.name})`,
value: `${item.dname}(${item.name})`,
...item
}))
)
},
error: () => {
setLoading(false)
}
})
}
return (
<>
{
readonly ? <span>{value?.map(item => item.name).toString()}</span> : <Select loading={loading} mode='multiple' allowClear
readonly ? <span>{value?.map(item => `${item.dname}(${item.name})`).toString()}</span> : <Select loading={loading} mode='multiple' allowClear
placeholder='请选择用户'
value={(options??[]).length>0?value?.map(item => item.name):[]}
value={(value??[]).map(item => `${item.dname}(${item.name})`)}
searchValue={searchValue}
onSearch={(val) => {
setSearchValue(val)
......@@ -303,8 +304,11 @@ export const UsersItem = ({ loading, users, value, onChange, readonly = false })
}}
filterOption={false}
options={options}
onChange={(val) => {
onChange?.((users??[]).filter(item => (val??[]).indexOf(item.name) !== -1))
onChange={(val) => {
onChange?.([
...(value??[]).filter(item => (val??[]).indexOf(`${item.dname}(${item.name})`) !== -1),
...(options??[]).filter(item => (val??[]).indexOf(item.value) !== -1)
])
}}
/>
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment