Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
szse
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zhaochengxiang
szse
Commits
3ec8faa5
Commit
3ec8faa5
authored
May 07, 2024
by
zhaochengxiang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
模型对比任务结果过滤
parent
8a5eeb76
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
341 additions
and
44 deletions
+341
-44
datamodel.js
src/model/datamodel.js
+24
-0
datamodeler.js
src/service/datamodeler.js
+24
-0
result-detail.jsx
src/view/Manage/ModelCompare/result-detail.jsx
+293
-44
No files found.
src/model/datamodel.js
View file @
3ec8faa5
...
@@ -592,6 +592,30 @@ export function* getCompareJobResultDeployModels(payload) {
...
@@ -592,6 +592,30 @@ export function* getCompareJobResultDeployModels(payload) {
return
yield
call
(
datamodelerService
.
getCompareJobResultDeployModels
,
payload
)
return
yield
call
(
datamodelerService
.
getCompareJobResultDeployModels
,
payload
)
}
}
export
function
*
getCompareJobResultMetadataNotMatchCatalog
(
payload
)
{
return
yield
call
(
datamodelerService
.
getCompareJobResultMetadataNotMatchCatalog
,
payload
)
}
export
function
*
getCompareJobResultMetadataPartialMatchCatalog
(
payload
)
{
return
yield
call
(
datamodelerService
.
getCompareJobResultMetadataPartialMatchCatalog
,
payload
)
}
export
function
*
getCompareJobResultMetadataPerfectMatchCatalog
(
payload
)
{
return
yield
call
(
datamodelerService
.
getCompareJobResultMetadataPerfectMatchCatalog
,
payload
)
}
export
function
*
getCompareJobResultModelNotMatchCatalog
(
payload
)
{
return
yield
call
(
datamodelerService
.
getCompareJobResultModelNotMatchCatalog
,
payload
)
}
export
function
*
getCompareJobResultModelPartialMatchCatalog
(
payload
)
{
return
yield
call
(
datamodelerService
.
getCompareJobResultModelPartialMatchCatalog
,
payload
)
}
export
function
*
getCompareJobResultModelPerfectMatchCatalog
(
payload
)
{
return
yield
call
(
datamodelerService
.
getCompareJobResultModelPerfectMatchCatalog
,
payload
)
}
export
function
*
addDataTypeConfig
(
payload
)
{
export
function
*
addDataTypeConfig
(
payload
)
{
return
yield
call
(
datamodelerService
.
addDataTypeConfig
,
payload
)
return
yield
call
(
datamodelerService
.
addDataTypeConfig
,
payload
)
}
}
...
...
src/service/datamodeler.js
View file @
3ec8faa5
...
@@ -537,6 +537,30 @@ export function getCompareJobResultDeployModels(payload) {
...
@@ -537,6 +537,30 @@ export function getCompareJobResultDeployModels(payload) {
return
PostJSON
(
"/datamodeler/easyDataModelModelCompareJobResult/deployModelByResultItemIds"
,
payload
)
return
PostJSON
(
"/datamodeler/easyDataModelModelCompareJobResult/deployModelByResultItemIds"
,
payload
)
}
}
export
function
getCompareJobResultMetadataNotMatchCatalog
(
payload
)
{
return
GetJSON
(
"/datamodeler/easyDataModelModelCompareJobResult/getMetadataNotMatchCatalog"
,
payload
)
}
export
function
getCompareJobResultMetadataPartialMatchCatalog
(
payload
)
{
return
GetJSON
(
"/datamodeler/easyDataModelModelCompareJobResult/getMetadataPartialMatchCatalog"
,
payload
)
}
export
function
getCompareJobResultMetadataPerfectMatchCatalog
(
payload
)
{
return
GetJSON
(
"/datamodeler/easyDataModelModelCompareJobResult/getMetadataPerfectMatchCatalog"
,
payload
)
}
export
function
getCompareJobResultModelNotMatchCatalog
(
payload
)
{
return
GetJSON
(
"/datamodeler/easyDataModelModelCompareJobResult/getModelNotMatchCatalog"
,
payload
)
}
export
function
getCompareJobResultModelPartialMatchCatalog
(
payload
)
{
return
GetJSON
(
"/datamodeler/easyDataModelModelCompareJobResult/getModelPartialMatchCatalog"
,
payload
)
}
export
function
getCompareJobResultModelPerfectMatchCatalog
(
payload
)
{
return
GetJSON
(
"/datamodeler/easyDataModelModelCompareJobResult/getModelPerfectMatchCatalog"
,
payload
)
}
/*type config*/
/*type config*/
export
function
addDataTypeConfig
(
payload
)
{
export
function
addDataTypeConfig
(
payload
)
{
return
PostJSON
(
"/datamodeler/easyDataModelerColumnDataType/addDataTypeConfig"
,
payload
)
return
PostJSON
(
"/datamodeler/easyDataModelerColumnDataType/addDataTypeConfig"
,
payload
)
...
...
src/view/Manage/ModelCompare/result-detail.jsx
View file @
3ec8faa5
import
React
from
'react'
import
React
from
'react'
import
{
Modal
,
Tabs
,
Button
,
Tooltip
,
Typography
,
Row
,
Col
,
Descriptions
}
from
'antd'
import
{
Modal
,
Tabs
,
Button
,
Tooltip
,
Typography
,
Row
,
Col
,
Descriptions
,
TreeSelect
,
Space
}
from
'antd'
import
{
dispatch
}
from
'../../../model'
import
{
dispatch
}
from
'../../../model'
import
Table
from
'../../../util/Component/Table'
import
Table
from
'../../../util/Component/Table'
import
{
defaultPage
}
from
'../../../util/hooks/page'
import
{
defaultPage
}
from
'../../../util/hooks/page'
import
{
generateUUID
,
paginate
,
showMessage
}
from
'../../../util'
import
{
generateUUID
,
inputWidth
,
paginate
,
showMessage
}
from
'../../../util'
import
'./result-detail.less'
import
'./result-detail.less'
import
produce
from
'immer'
const
FC
=
(
props
)
=>
{
const
FC
=
(
props
)
=>
{
const
{
visible
,
item
,
onCancel
}
=
props
const
{
visible
,
item
,
onCancel
}
=
props
...
@@ -100,11 +101,18 @@ const PerfectMatch = ({ item }) => {
...
@@ -100,11 +101,18 @@ const PerfectMatch = ({ item }) => {
const [args, setArgs] = React.useState({
const [args, setArgs] = React.useState({
page: defaultPage.pageNum,
page: defaultPage.pageNum,
size: defaultPage.pageSize,
size: defaultPage.pageSize,
metadataPath: undefined,
modelPath: undefined,
})
})
const [loading, setLoading] = React.useState(false)
const [loading, setLoading] = React.useState(false)
const [data, setData] = React.useState()
const [data, setData] = React.useState()
const [total, setTotal] = React.useState(0)
const [selectedRows, setSelectedRows] = React.useState()
const [selectedRows, setSelectedRows] = React.useState()
const [rightRow, setRightRow] = React.useState()
const [rightRow, setRightRow] = React.useState()
const [loadingMetadataCatalog, setLoadingMetadataCatalog] = React.useState(false)
const [metadataCatalog, setMetadataCatalog] = React.useState()
const [loadingModelCatalog, setLoadingModelCatalog] = React.useState(false)
const [modelCatalog, setModelCatalog] = React.useState()
const [modal, contextHolder] = Modal.useModal()
const [modal, contextHolder] = Modal.useModal()
...
@@ -116,15 +124,16 @@ const PerfectMatch = ({ item }) => {
...
@@ -116,15 +124,16 @@ const PerfectMatch = ({ item }) => {
React.useEffect(() => {
React.useEffect(() => {
if (item) {
if (item) {
getList()
getMetadataCatalog()
getModelCatalog()
}
}
}, [item])
}, [item])
const tableData = React.useMemo
(() => {
React.useEffect
(() => {
let newTableData = [...data??[]]
if (item) {
getList()
return paginate(newTableData, args.page, args.size)
}
}, [
data,
args])
}, [args])
const cols = [
const cols = [
{
{
...
@@ -194,11 +203,16 @@ const PerfectMatch = ({ item }) => {
...
@@ -194,11 +203,16 @@ const PerfectMatch = ({ item }) => {
dispatch({
dispatch({
type: 'datamodel.getCompareJobResultPerfectMatchList',
type: 'datamodel.getCompareJobResultPerfectMatchList',
payload: {
payload: {
resultId: item?.id
resultId: item?.id,
metadataPath: args.metadataPath,
modelPath: args.modelPath,
pageNo: args.page,
pageSize: args.size,
},
},
callback: data => {
callback: data => {
setLoading(false)
setLoading(false)
setData(data)
setData(data?.content)
setTotal(data?.totalElements)
},
},
error: () => {
error: () => {
setLoading(false)
setLoading(false)
...
@@ -206,6 +220,40 @@ const PerfectMatch = ({ item }) => {
...
@@ -206,6 +220,40 @@ const PerfectMatch = ({ item }) => {
})
})
}
}
const getMetadataCatalog = () => {
setLoadingMetadataCatalog(true)
dispatch({
type: 'datamodel.getCompareJobResultMetadataPerfectMatchCatalog',
payload: {
resultId: item?.id
},
callback: data => {
setLoadingMetadataCatalog(false)
setMetadataCatalog(data)
},
error: () => {
setLoadingMetadataCatalog(false)
}
})
}
const getModelCatalog = () => {
setLoadingModelCatalog(true)
dispatch({
type: 'datamodel.getCompareJobResultModelPerfectMatchCatalog',
payload: {
resultId: item?.id
},
callback: data => {
setLoadingModelCatalog(false)
setModelCatalog(data)
},
error: () => {
setLoadingModelCatalog(false)
}
})
}
const onDeployClick = () => {
const onDeployClick = () => {
modal.confirm({
modal.confirm({
title:'提示',
title:'提示',
...
@@ -253,24 +301,40 @@ const PerfectMatch = ({ item }) => {
...
@@ -253,24 +301,40 @@ const PerfectMatch = ({ item }) => {
return (
return (
<div>
<div>
<div>
<div
className='flex mb-3' style={{ justifyContent: 'space-between', alignItems: 'center' }}
>
<Tooltip title={(selectedRows??[]).length===0?'请选择模型':''}>
<Tooltip title={(selectedRows??[]).length===0?'请选择模型':''}>
<Button onClick={onDeployClick} disabled={(selectedRows??[]).length===0}>确定上线</Button>
<Button onClick={onDeployClick} disabled={(selectedRows??[]).length===0}>确定上线</Button>
</Tooltip>
</Tooltip>
<Space>
<Catalog
placeholder='请选择元数据目录'
loading={loadingMetadataCatalog} data={metadataCatalog} value={args.metadataPath}
onChange={(val) => {
setArgsByParams({ metadataPath: val, metadataPage: 1 })
}}
/>
<Catalog
placeholder='请选择模型目录'
loading={loadingModelCatalog} data={modelCatalog} value={args.modelPath}
onChange={(val) => {
setArgsByParams({ modelPath: val, modelPage: 1 })
}}
/>
</Space>
</div>
</div>
<div
className='pt-3'
>
<div>
<Table
<Table
extraColWidth={32}
extraColWidth={32}
loading={loading}
loading={loading}
columns={cols??[]}
columns={cols??[]}
dataSource={
tableD
ata??[]}
dataSource={
d
ata??[]}
rowSelection={{
rowSelection={{
selectedRowKeys: (selectedRows??[]).map(item => item.id),
selectedRowKeys: (selectedRows??[]).map(item => item.id),
onChange: (selectedRowKeys, selectedRows) => {
onChange: (selectedRowKeys, selectedRows) => {
setSelectedRows(selectedRows)
setSelectedRows(selectedRows)
},
},
}}
}}
pageNum={args.page} pageSize={args.size} total={
(data??[]).length
}
pageNum={args.page} pageSize={args.size} total={
total
}
onPaginate={(page, size) => {
onPaginate={(page, size) => {
setArgsByParams({ page, size })
setArgsByParams({ page, size })
}}
}}
...
@@ -292,11 +356,18 @@ const PartialMatch = ({ item }) => {
...
@@ -292,11 +356,18 @@ const PartialMatch = ({ item }) => {
const [args, setArgs] = React.useState({
const [args, setArgs] = React.useState({
page: defaultPage.pageNum,
page: defaultPage.pageNum,
size: defaultPage.pageSize,
size: defaultPage.pageSize,
metadataPath: undefined,
modelPath: undefined,
})
})
const [loading, setLoading] = React.useState(false)
const [loading, setLoading] = React.useState(false)
const [data, setData] = React.useState()
const [data, setData] = React.useState()
const [total, setTotal] = React.useState(0)
const [selectedRows, setSelectedRows] = React.useState()
const [selectedRows, setSelectedRows] = React.useState()
const [rightRow, setRightRow] = React.useState()
const [rightRow, setRightRow] = React.useState()
const [loadingMetadataCatalog, setLoadingMetadataCatalog] = React.useState(false)
const [metadataCatalog, setMetadataCatalog] = React.useState()
const [loadingModelCatalog, setLoadingModelCatalog] = React.useState(false)
const [modelCatalog, setModelCatalog] = React.useState()
const [modal, contextHolder] = Modal.useModal()
const [modal, contextHolder] = Modal.useModal()
...
@@ -308,15 +379,16 @@ const PartialMatch = ({ item }) => {
...
@@ -308,15 +379,16 @@ const PartialMatch = ({ item }) => {
React.useEffect(() => {
React.useEffect(() => {
if (item) {
if (item) {
getList()
getMetadataCatalog()
getModelCatalog()
}
}
}, [item])
}, [item])
const tableData = React.useMemo
(() => {
React.useEffect
(() => {
let newTableData = [...data??[]]
if (item) {
getList()
return paginate(newTableData, args.page, args.size)
}
}, [
data,
args])
}, [args])
const cols = [
const cols = [
{
{
...
@@ -407,11 +479,16 @@ const PartialMatch = ({ item }) => {
...
@@ -407,11 +479,16 @@ const PartialMatch = ({ item }) => {
dispatch({
dispatch({
type: 'datamodel.getCompareJobResultPartialMatchList',
type: 'datamodel.getCompareJobResultPartialMatchList',
payload: {
payload: {
resultId: item?.id
resultId: item?.id,
metadataPath: args.metadataPath,
modelPath: args.modelPath,
pageNo: args.page,
pageSize: args.size,
},
},
callback: data => {
callback: data => {
setLoading(false)
setLoading(false)
setData(data)
setData(data?.content)
setTotal(data?.totalElements)
},
},
error: () => {
error: () => {
setLoading(false)
setLoading(false)
...
@@ -419,6 +496,40 @@ const PartialMatch = ({ item }) => {
...
@@ -419,6 +496,40 @@ const PartialMatch = ({ item }) => {
})
})
}
}
const getMetadataCatalog = () => {
setLoadingMetadataCatalog(true)
dispatch({
type: 'datamodel.getCompareJobResultMetadataPartialMatchCatalog',
payload: {
resultId: item?.id
},
callback: data => {
setLoadingMetadataCatalog(false)
setMetadataCatalog(data)
},
error: () => {
setLoadingMetadataCatalog(false)
}
})
}
const getModelCatalog = () => {
setLoadingModelCatalog(true)
dispatch({
type: 'datamodel.getCompareJobResultModelPartialMatchCatalog',
payload: {
resultId: item?.id
},
callback: data => {
setLoadingModelCatalog(false)
setModelCatalog(data)
},
error: () => {
setLoadingModelCatalog(false)
}
})
}
const onDeployClick = () => {
const onDeployClick = () => {
modal.confirm({
modal.confirm({
title:'提示',
title:'提示',
...
@@ -466,24 +577,40 @@ const PartialMatch = ({ item }) => {
...
@@ -466,24 +577,40 @@ const PartialMatch = ({ item }) => {
return (
return (
<div>
<div>
<div>
<div
className='flex mb-3' style={{ justifyContent: 'space-between', alignItems: 'center' }}
>
<Tooltip title={(selectedRows??[]).length===0?'请选择模型':''}>
<Tooltip title={(selectedRows??[]).length===0?'请选择模型':''}>
<Button onClick={onDeployClick} disabled={(selectedRows??[]).length===0}>确定上线</Button>
<Button onClick={onDeployClick} disabled={(selectedRows??[]).length===0}>确定上线</Button>
</Tooltip>
</Tooltip>
<Space>
<Catalog
placeholder='请选择元数据目录'
loading={loadingMetadataCatalog} data={metadataCatalog} value={args.metadataPath}
onChange={(val) => {
setArgsByParams({ metadataPath: val, metadataPage: 1 })
}}
/>
<Catalog
placeholder='请选择模型目录'
loading={loadingModelCatalog} data={modelCatalog} value={args.modelPath}
onChange={(val) => {
setArgsByParams({ modelPath: val, modelPage: 1 })
}}
/>
</Space>
</div>
</div>
<div
className='pt-3'
>
<div>
<Table
<Table
extraColWidth={32}
extraColWidth={32}
loading={loading}
loading={loading}
columns={cols??[]}
columns={cols??[]}
dataSource={
tableD
ata??[]}
dataSource={
d
ata??[]}
rowSelection={{
rowSelection={{
selectedRowKeys: (selectedRows??[]).map(item => item.id),
selectedRowKeys: (selectedRows??[]).map(item => item.id),
onChange: (selectedRowKeys, selectedRows) => {
onChange: (selectedRowKeys, selectedRows) => {
setSelectedRows(selectedRows)
setSelectedRows(selectedRows)
},
},
}}
}}
pageNum={args.page} pageSize={args.size} total={
(data??[]).length
}
pageNum={args.page} pageSize={args.size} total={
total
}
onPaginate={(page, size) => {
onPaginate={(page, size) => {
setArgsByParams({ page, size })
setArgsByParams({ page, size })
}}
}}
...
@@ -506,21 +633,36 @@ const NotMatch = ({ item }) => {
...
@@ -506,21 +633,36 @@ const NotMatch = ({ item }) => {
const [args, setArgs] = React.useState({
const [args, setArgs] = React.useState({
metadataPage: defaultPage.pageNum,
metadataPage: defaultPage.pageNum,
metadataSize: defaultPage.pageSize,
metadataSize: defaultPage.pageSize,
metadataPath: undefined,
modelPage: defaultPage.pageNum,
modelPage: defaultPage.pageNum,
modelSize: defaultPage.pageSize,
modelSize: defaultPage.pageSize,
modelPath: undefined,
})
})
const [loadingMetadata, setLoadingMetadata] = React.useState(false)
const [loadingMetadata, setLoadingMetadata] = React.useState(false)
const [metadatas, setMetadatas] = React.useState()
const [metadatas, setMetadatas] = React.useState()
const [metadataTotal, setMetadataTotal] = React.useState(0)
const [loadingModel, setLoadingModel] = React.useState(false)
const [loadingModel, setLoadingModel] = React.useState(false)
const [models, setModels] = React.useState()
const [models, setModels] = React.useState()
const [modelTotal, setModelTotal] = React.useState(0)
const [loadingMetadataCatalog, setLoadingMetadataCatalog] = React.useState(false)
const [metadataCatalog, setMetadataCatalog] = React.useState()
const [loadingModelCatalog, setLoadingModelCatalog] = React.useState(false)
const [modelCatalog, setModelCatalog] = React.useState()
React.useEffect(() => {
if (item) {
getMetadataCatalog()
getModelCatalog()
}
}, [item])
React.useEffect(() => {
React.useEffect(() => {
if (item) {
if (item) {
getMetadatas()
getMetadatas()
getModels()
getModels()
}
}
}, [
item
])
}, [
args
])
const setArgsByParams = React.useCallback((params) => {
const setArgsByParams = React.useCallback((params) => {
setArgs((prev) => {
setArgs((prev) => {
...
@@ -528,13 +670,6 @@ const NotMatch = ({ item }) => {
...
@@ -528,13 +670,6 @@ const NotMatch = ({ item }) => {
})
})
}, [])
}, [])
const [metadataTableData, modelTableData] = React.useMemo(() => {
let newMetadataTableData = [...metadatas??[]]
let newModelTableData = [...models??[]]
return [paginate(newMetadataTableData, args.metadataPage, args.metadataSize), paginate(newModelTableData, args.modelPage, args.modelSize)]
}, [metadatas, models, args])
const metadataCols = [
const metadataCols = [
{
{
title: '序号',
title: '序号',
...
@@ -608,11 +743,15 @@ const NotMatch = ({ item }) => {
...
@@ -608,11 +743,15 @@ const NotMatch = ({ item }) => {
dispatch({
dispatch({
type: 'datamodel.getCompareJobResultNotMatchMetadataList',
type: 'datamodel.getCompareJobResultNotMatchMetadataList',
payload: {
payload: {
resultId: item?.id
resultId: item?.id,
metadataPath: args.metadataPath,
pageNo: args.metadataPage,
pageSize: args.metadataSize,
},
},
callback: data => {
callback: data => {
setLoadingMetadata(false)
setLoadingMetadata(false)
setMetadatas(data)
setMetadatas(data?.content)
setMetadataTotal(data?.totalElements)
},
},
error: () => {
error: () => {
setLoadingMetadata(false)
setLoadingMetadata(false)
...
@@ -625,11 +764,15 @@ const NotMatch = ({ item }) => {
...
@@ -625,11 +764,15 @@ const NotMatch = ({ item }) => {
dispatch({
dispatch({
type: 'datamodel.getCompareJobResultNotMatchModelList',
type: 'datamodel.getCompareJobResultNotMatchModelList',
payload: {
payload: {
resultId: item?.id
resultId: item?.id,
modelPath: args.modelPath,
pageNo: args.modelPage,
pageSize: args.modelSize,
},
},
callback: data => {
callback: data => {
setLoadingModel(false)
setLoadingModel(false)
setModels(data)
setModels(data?.content)
setModelTotal(data?.totalElements)
},
},
error: () => {
error: () => {
setLoadingModel(false)
setLoadingModel(false)
...
@@ -637,16 +780,59 @@ const NotMatch = ({ item }) => {
...
@@ -637,16 +780,59 @@ const NotMatch = ({ item }) => {
})
})
}
}
const getMetadataCatalog = () => {
setLoadingMetadataCatalog(true)
dispatch({
type: 'datamodel.getCompareJobResultMetadataNotMatchCatalog',
payload: {
resultId: item?.id
},
callback: data => {
setLoadingMetadataCatalog(false)
setMetadataCatalog(data)
},
error: () => {
setLoadingMetadataCatalog(false)
}
})
}
const getModelCatalog = () => {
setLoadingModelCatalog(true)
dispatch({
type: 'datamodel.getCompareJobResultModelNotMatchCatalog',
payload: {
resultId: item?.id
},
callback: data => {
setLoadingModelCatalog(false)
setModelCatalog(data)
},
error: () => {
setLoadingModelCatalog(false)
}
})
}
return (
return (
<div style={{ overflow: 'hidden' }}>
<div style={{ overflow: 'hidden' }}>
<Row gutter={15}>
<Row gutter={15}>
<Col span={12}>
<Col span={12}>
<h4>未匹配元数据列表</h4>
<div className='flex mb-3' style={{ justifyContent: 'space-between', alignItems: 'center' }}>
<h4 style={{ marginBottom: 0 }}>未匹配元数据列表</h4>
<Catalog
placeholder='请选择元数据目录'
loading={loadingMetadataCatalog} data={metadataCatalog} value={args.metadataPath}
onChange={(val) => {
setArgsByParams({ metadataPath: val, metadataPage: 1 })
}}
/>
</div>
<Table
<Table
loading={loadingMetadata}
loading={loadingMetadata}
columns={metadataCols??[]}
columns={metadataCols??[]}
dataSource={metadata
TableData
??[]}
dataSource={metadata
s
??[]}
pageNum={args.metadataPage} pageSize={args.metadataSize} total={
(metadatas??[]).length
}
pageNum={args.metadataPage} pageSize={args.metadataSize} total={
metadataTotal
}
onPaginate={(page, size) => {
onPaginate={(page, size) => {
setArgsByParams({ metadataPage: page, metadataSize: size })
setArgsByParams({ metadataPage: page, metadataSize: size })
}}
}}
...
@@ -656,12 +842,21 @@ const NotMatch = ({ item }) => {
...
@@ -656,12 +842,21 @@ const NotMatch = ({ item }) => {
/>
/>
</Col>
</Col>
<Col span={12}>
<Col span={12}>
<h4>未匹配模型列表</h4>
<div className='flex mb-3' style={{ justifyContent: 'space-between', alignItems: 'center' }}>
<h4 style={{ marginBottom: 0 }}>未匹配模型列表</h4>
<Catalog
placeholder='请选择模型目录'
loading={loadingModelCatalog} data={modelCatalog} value={args.modelPath}
onChange={(val) => {
setArgsByParams({ modelPath: val, modelPage: 1 })
}}
/>
</div>
<Table
<Table
loading={loadingModel}
loading={loadingModel}
columns={modelCols??[]}
columns={modelCols??[]}
dataSource={model
TableData
??[]}
dataSource={model
s
??[]}
pageNum={args.modelPage} pageSize={args.modelSize} total={
(models??[]).length
}
pageNum={args.modelPage} pageSize={args.modelSize} total={
modelTotal
}
onPaginate={(page, size) => {
onPaginate={(page, size) => {
setArgsByParams({ modelPage: page, modelSize: size })
setArgsByParams({ modelPage: page, modelSize: size })
}}
}}
...
@@ -673,4 +868,57 @@ const NotMatch = ({ item }) => {
...
@@ -673,4 +868,57 @@ const NotMatch = ({ item }) => {
</Row>
</Row>
</div>
</div>
)
)
}
const Catalog = ({ value, onChange, data, loading, placeholder }) => {
const [expandedKeys, setExpandedKeys] = React.useState()
React.useEffect(() => {
if ((data?.children??[]).length>0) {
setExpandedKeys([data.children.path])
}
}, [data])
const treeData = React.useMemo(() => {
if (data && data.children) {
const newTreeData = produce(data.children, draft => {
const setNode = (g) => {
g.key = g.path
g.title = g.name
g.value = g.path
g.children?.forEach((child) => {
setNode(child)
})
}
draft.forEach((child) => {
setNode(child)
})
})
return newTreeData
}
return undefined
}, [data])
return (
<TreeSelect
showSearch allowClear
treeNodeFilterProp='title'
loading={loading}
value={value}
dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}
treeData={treeData}
treeExpandedKeys={expandedKeys}
onTreeExpand={(val) => {
setExpandedKeys(val)
}}
onChange={(val) => {
onChange?.(val)
}}
style={{ width: inputWidth }}
placeholder={placeholder??'请选择目录'}
/>
)
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment