Commit 3a605525 by zhaochengxiang

模型分支用户

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