Commit 98991488 by zhaochengxiang

模型范围组件

parent a424e781
...@@ -358,6 +358,109 @@ const BasicForm = React.forwardRef(function ({ type, task }, ref) { ...@@ -358,6 +358,109 @@ const BasicForm = React.forwardRef(function ({ type, task }, ref) {
) )
}) })
const ModelRangeItem = ({ value, onChange }) => {
const [loading, setLoading] = React.useState(false)
const [treeData, setTreeData] = React.useState()
const [treeSelectedKey, setTreeSelectedKey] = React.useState()
React.useEffect(() => {
getTreeData()
}, [])
React.useEffect(() => {
if (treeSelectedKey) {
const treeIndex = (treeList??[]).findIndex(item => item.key === treeSelectedKey)
if (treeIndex !== -1) {
onChange?.({
modelCatalogIdList: treeList[treeIndex].ids??[],
modelCatalogNameList: treeList[treeIndex].names??[]
})
} else {
onChange?.()
}
} else {
onChange?.()
}
}, [treeSelectedKey])
const generateList = (data, list, ids, names) => {
(data||[]).forEach(node => {
const newIds = [...ids??[], node.value]
const newNames = [...names??[], node.title]
list.push({
...node,
ids: newIds,
names: newNames,
})
if (node.children) {
generateList(node.children, list, newIds, newNames)
}
})
}
const [treeData1, treeList] = React.useMemo(() => {
if (treeData) {
const newTreeList = []
const newTreeData = produce(treeData, draft => {
const setNode = (g) => {
g.key = g.id
g.title = g.name
g.value = g.id
g.children = []
for (let child of g.subCatalogs??[]) {
setNode(child)
g.children.push(child)
}
}
for (let item of draft??[]) {
setNode(item)
}
})
generateList(newTreeData, newTreeList, [], [])
return [
newTreeData,
newTreeList,
]
}
return [[], []]
}, [treeData])
const getTreeData = () => {
setLoading(true)
dispatch({
type: 'datamodel.refreshDataModelCatalog',
callback: (data) => {
setLoading(false)
setTreeData(data?.subCatalogs)
},
erorr: () => {
setLoading(false)
}
})
}
const onTreeSelect = (selectedKeys) => {
setTreeSelectedKey(selectedKeys)
}
return (
<TreeSelect
loading={loading}
dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}
treeData={treeData1}
selectedRowKeys={treeSelectedKey?[treeSelectedKey]:undefined}
onSelect={onTreeSelect}
placeholder="请选择模型范围"
/>
)
}
const MetadataRangeItem = ({ value, onChange }) => { const MetadataRangeItem = ({ value, onChange }) => {
const [loadingDomains, setLoadingDomains] = React.useState(false) const [loadingDomains, setLoadingDomains] = React.useState(false)
const [domains, setDomains] = React.useState() const [domains, setDomains] = React.useState()
...@@ -602,76 +705,9 @@ const MetadataRangeItem = ({ value, onChange }) => { ...@@ -602,76 +705,9 @@ const MetadataRangeItem = ({ value, onChange }) => {
const Range = React.forwardRef(function ({ type, task }, ref) { const Range = React.forwardRef(function ({ type, task }, ref) {
const [ranges, setRanges] = React.useState() const [ranges, setRanges] = React.useState()
const [isAdding, setAdding] = React.useState(false) const [isAdding, setAdding] = React.useState(false)
const [loadingModelTree, setLoadingModelTree] = React.useState(false)
const [modelTreeData, setModelTreeData] = React.useState()
const [form] = Form.useForm() const [form] = Form.useForm()
React.useEffect(() => {
getModelTree()
}, [])
const generateList = (data, list, ids, names) => {
(data||[]).forEach(node => {
const newIds = [...ids??[], node.value]
const newNames = [...names??[], node.title]
list.push({
...node,
ids: newIds,
names: newNames,
})
if (node.children) {
generateList(node.children, list, newIds, newNames)
}
})
}
const [modelTreeData1, modelTreeList] = React.useMemo(() => {
if (modelTreeData) {
const newTreeList = []
const newTreeData = produce(modelTreeData, draft => {
const setNode = (g) => {
g.key = g.id
g.title = g.name
g.value = g.id
g.children = []
for (let child of g.subCatalogs??[]) {
setNode(child)
g.children.push(child)
}
}
for (let item of draft??[]) {
setNode(item)
}
})
generateList(newTreeData, newTreeList, [], [])
return [
newTreeData,
newTreeList,
]
}
return [[], []]
}, [modelTreeData])
const getModelTree = () => {
setLoadingModelTree(true)
dispatch({
type: 'datamodel.refreshDataModelCatalog',
callback: (data) => {
setLoadingModelTree(false)
setModelTreeData(data?.subCatalogs)
},
erorr: () => {
setLoadingModelTree(false)
}
})
}
const onAddClick = () => { const onAddClick = () => {
setAdding(true) setAdding(true)
} }
...@@ -689,7 +725,6 @@ const Range = React.forwardRef(function ({ type, task }, ref) { ...@@ -689,7 +725,6 @@ const Range = React.forwardRef(function ({ type, task }, ref) {
labelCol={{ span: 6 }} labelCol={{ span: 6 }}
wrapperCol={{ span: 18 }} wrapperCol={{ span: 18 }}
autoComplete="off" autoComplete="off"
// onValuesChange={onValuesChange}
> >
<Row gutter={15}> <Row gutter={15}>
<Col span={12}> <Col span={12}>
...@@ -698,12 +733,7 @@ const Range = React.forwardRef(function ({ type, task }, ref) { ...@@ -698,12 +733,7 @@ const Range = React.forwardRef(function ({ type, task }, ref) {
name="modelCatalogId" name="modelCatalogId"
rules={[{ required: true, message: '请选择模型范围!' }]} rules={[{ required: true, message: '请选择模型范围!' }]}
> >
<TreeSelect <ModelRangeItem />
loading={loadingModelTree}
dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}
treeData={modelTreeData1}
placeholder="请选择模型范围"
/>
</Form.Item> </Form.Item>
</Col> </Col>
<Col span={12}> <Col span={12}>
......
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