4 changed files with 122 additions and 2 deletions
@ -0,0 +1,39 @@ |
|||||
|
'use strict'; |
||||
|
|
||||
|
function searchMeta(opts) { |
||||
|
return async function (ctx, next) { |
||||
|
let errMsg = { message: '搜索元数据失败' } |
||||
|
try { |
||||
|
const models = ctx.fs.dc.models; |
||||
|
const { keywords } = ctx.query; |
||||
|
const where = {}; |
||||
|
|
||||
|
if (keywords) { |
||||
|
where['$or'] = [{ name: { $iLike: `%${keywords}%` } } |
||||
|
] |
||||
|
} |
||||
|
const findObj = { |
||||
|
include: [ |
||||
|
{ |
||||
|
model: models.TagDatabase, |
||||
|
include: [{ |
||||
|
model: models.Tag, |
||||
|
}] |
||||
|
}], |
||||
|
where: where |
||||
|
} |
||||
|
|
||||
|
const rslt = await models.MetadataDatabase.findAndCountAll(findObj); |
||||
|
ctx.status = 200; |
||||
|
ctx.body = rslt; |
||||
|
} catch (error) { |
||||
|
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); |
||||
|
ctx.status = 400; |
||||
|
ctx.body = errMsg |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
module.exports = { |
||||
|
searchMeta |
||||
|
} |
@ -0,0 +1,9 @@ |
|||||
|
'use strict'; |
||||
|
|
||||
|
const search = require('../../controllers/metadataSearch/index'); |
||||
|
|
||||
|
module.exports = function (app, router, opts, AuthCode) { |
||||
|
//获取适配器列表
|
||||
|
app.fs.api.logAttr['GET/meta/data/search'] = { content: '获取适配器列表', visible: true }; |
||||
|
router.get('/meta/data/search', search.searchMeta(opts)); |
||||
|
}; |
@ -1,7 +1,50 @@ |
|||||
import React, { useEffect, useState } from 'react' |
import React, { useEffect, useState } from 'react' |
||||
|
import { Input } from 'antd' |
||||
|
import { InsertRowBelowOutlined, DatabaseOutlined, FileOutlined, PullRequestOutlined } from '@ant-design/icons'; |
||||
|
import './style.less'; |
||||
|
function Retrieval(props) { |
||||
|
const renderMetaData = (type) => { |
||||
|
switch (type) { |
||||
|
case '库': |
||||
|
return <div className='result-row'> |
||||
|
<div className='column1'> |
||||
|
<InsertRowBelowOutlined /> 代码:T29E_34AC 名称:政务信息变更 类型:库表/表(Table) 路径:/demoABI/govern_metadata/ 标签:XX |
||||
|
</div> |
||||
|
<div className='column2'>相关操作:<a>定位</a></div> |
||||
|
</div> |
||||
|
case '表': |
||||
|
return <div className='result-row'> |
||||
|
<div className='column1'> |
||||
|
<DatabaseOutlined /> 代码:init_metadata 名称:政务大数据平台 类型:库表/库(Schema) 路径:/demoABI 标签:XX |
||||
|
</div> |
||||
|
<div className='column2'>相关操作:<a>定位</a><a>下载</a></div> |
||||
|
</div> |
||||
|
case '文件': |
||||
|
return <div className='result-row'> |
||||
|
<div className='column1'> |
||||
|
<FileOutlined /> 名称:政务大数据平台 类型:文件(File) 路径:/demoABI 标签:XX |
||||
|
</div> |
||||
|
<div className='column2'>相关操作:<a>定位</a><a>下载</a></div> |
||||
|
</div> |
||||
|
case '接口': |
||||
|
return <div className='result-row'> |
||||
|
<div className='column1'> |
||||
|
<PullRequestOutlined /> 名称:政务大数据平台 类型:接口(Api) 路径:/demoABII 标签:XX |
||||
|
</div> |
||||
|
<div className='column2'>相关操作:<a>定位</a></div> |
||||
|
</div> |
||||
|
default: |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
|
||||
function Retrieval (props) { |
return <> |
||||
return <>数据资源检索</> |
<Input.Search style={{ width: '30%', marginLeft: 10, marginBottom: 30 }} /> |
||||
|
{renderMetaData('库')} |
||||
|
{renderMetaData('表')} |
||||
|
{renderMetaData('文件')} |
||||
|
{renderMetaData('接口')} |
||||
|
</> |
||||
} |
} |
||||
|
|
||||
export default Retrieval |
export default Retrieval |
@ -0,0 +1,29 @@ |
|||||
|
.result-row { |
||||
|
display: flex; |
||||
|
border-bottom: 1px solid #E8E8E8; |
||||
|
width: 90%; |
||||
|
padding: 10px; |
||||
|
margin-bottom: 15px; |
||||
|
font-size: 15px; |
||||
|
|
||||
|
.column1 { |
||||
|
display: flex; |
||||
|
|
||||
|
.anticon { |
||||
|
font-size: 26px; |
||||
|
margin-right: 20px; |
||||
|
} |
||||
|
|
||||
|
width: calc(100% - 180px); |
||||
|
} |
||||
|
|
||||
|
.column2 { |
||||
|
width: 180px; |
||||
|
display: flex; |
||||
|
justify-content: flex-start; |
||||
|
|
||||
|
a { |
||||
|
margin-right: 8px; |
||||
|
} |
||||
|
} |
||||
|
} |
Loading…
Reference in new issue