diff --git a/web/client/src/sections/metadataManagement/actions/example.js b/web/client/src/sections/metadataManagement/actions/example.js
new file mode 100644
index 0000000..6b3c25d
--- /dev/null
+++ b/web/client/src/sections/metadataManagement/actions/example.js
@@ -0,0 +1,15 @@
+'use strict';
+
+import { basicAction } from '@peace/utils'
+import { ApiTable } from '$utils'
+
+// export function getMembers(orgId) {
+// return dispatch => basicAction({
+// type: 'get',
+// dispatch: dispatch,
+// actionType: 'GET_MEMBERS',
+// url: `${ApiTable.getEnterprisesMembers.replace('{enterpriseId}', orgId)}`,
+// msg: { error: '获取用户列表失败' },
+// reducer: { name: 'members' }
+// });
+// }
diff --git a/web/client/src/sections/metadataManagement/actions/index.js b/web/client/src/sections/metadataManagement/actions/index.js
new file mode 100644
index 0000000..444af37
--- /dev/null
+++ b/web/client/src/sections/metadataManagement/actions/index.js
@@ -0,0 +1,7 @@
+'use strict';
+
+import * as example from './example'
+
+export default {
+ ...example,
+}
\ No newline at end of file
diff --git a/web/client/src/sections/metadataManagement/containers/businessMetadata.js b/web/client/src/sections/metadataManagement/containers/businessMetadata.js
new file mode 100644
index 0000000..e240f90
--- /dev/null
+++ b/web/client/src/sections/metadataManagement/containers/businessMetadata.js
@@ -0,0 +1,7 @@
+import React, { useEffect, useState } from 'react'
+
+function BusinessMetadata (props) {
+ return <>业务元数据管理>
+}
+
+export default BusinessMetadata
\ No newline at end of file
diff --git a/web/client/src/sections/metadataManagement/containers/index.js b/web/client/src/sections/metadataManagement/containers/index.js
new file mode 100644
index 0000000..4d4f80a
--- /dev/null
+++ b/web/client/src/sections/metadataManagement/containers/index.js
@@ -0,0 +1,9 @@
+'use strict';
+
+import LatestMetadata from './latestMetadata';
+import BusinessMetadata from './businessMetadata';
+import MetaModelManagement from './metaModelManagement';
+import TagManagement from './tagManagement';
+import MetadataDetails from './metadataDetails';
+
+export { LatestMetadata, BusinessMetadata, MetaModelManagement, TagManagement, MetadataDetails };
diff --git a/web/client/src/sections/metadataManagement/containers/latestMetadata.js b/web/client/src/sections/metadataManagement/containers/latestMetadata.js
new file mode 100644
index 0000000..ebdba2d
--- /dev/null
+++ b/web/client/src/sections/metadataManagement/containers/latestMetadata.js
@@ -0,0 +1,24 @@
+import React, { useEffect, useState } from 'react';
+import { connect } from 'react-redux';
+import { Button, } from 'antd'
+
+const LatestMetadata = (props) => {
+ const { user, dispatch, actions, history } = props;
+
+ useEffect(() => {
+ }, [])
+
+ return <>最新元数据
+
+ >
+}
+
+function mapStateToProps(state) {
+ const { global, auth } = state;
+ return {
+ clientHeight: global.clientHeight,
+ user: auth.user,
+ actions: global.actions,
+ };
+}
+export default connect(mapStateToProps)(LatestMetadata)
\ No newline at end of file
diff --git a/web/client/src/sections/metadataManagement/containers/metaModelManagement.js b/web/client/src/sections/metadataManagement/containers/metaModelManagement.js
new file mode 100644
index 0000000..85213aa
--- /dev/null
+++ b/web/client/src/sections/metadataManagement/containers/metaModelManagement.js
@@ -0,0 +1,7 @@
+import React, { useEffect, useState } from 'react'
+
+function MetaModelManagement (props) {
+ return <>模型管理>
+}
+
+export default MetaModelManagement
\ No newline at end of file
diff --git a/web/client/src/sections/metadataManagement/containers/metadataDetails.js b/web/client/src/sections/metadataManagement/containers/metadataDetails.js
new file mode 100644
index 0000000..74e2af6
--- /dev/null
+++ b/web/client/src/sections/metadataManagement/containers/metadataDetails.js
@@ -0,0 +1,7 @@
+import React, { useEffect, useState } from 'react'
+
+function MetadataDetails (props) {
+ return <>元数据详情>
+}
+
+export default MetadataDetails
\ No newline at end of file
diff --git a/web/client/src/sections/metadataManagement/containers/tagManagement.js b/web/client/src/sections/metadataManagement/containers/tagManagement.js
new file mode 100644
index 0000000..277791c
--- /dev/null
+++ b/web/client/src/sections/metadataManagement/containers/tagManagement.js
@@ -0,0 +1,7 @@
+import React, { useEffect, useState } from 'react'
+
+function TagManagement (props) {
+ return <>标签管理>
+}
+
+export default TagManagement
\ No newline at end of file
diff --git a/web/client/src/sections/metadataManagement/index.js b/web/client/src/sections/metadataManagement/index.js
new file mode 100644
index 0000000..52d218b
--- /dev/null
+++ b/web/client/src/sections/metadataManagement/index.js
@@ -0,0 +1,15 @@
+'use strict';
+
+import reducers from './reducers';
+import routes from './routes';
+import actions from './actions';
+import { getNavItem } from './nav-item';
+
+export default {
+ key: 'metadataManagement',
+ name: '元数据管理',
+ reducers: reducers,
+ routes: routes,
+ actions: actions,
+ getNavItem: getNavItem
+};
\ No newline at end of file
diff --git a/web/client/src/sections/metadataManagement/nav-item.js b/web/client/src/sections/metadataManagement/nav-item.js
new file mode 100644
index 0000000..8f9133a
--- /dev/null
+++ b/web/client/src/sections/metadataManagement/nav-item.js
@@ -0,0 +1,24 @@
+import React from 'react';
+import { Link } from 'react-router-dom';
+import { Menu } from 'antd';
+import { SettingOutlined } from '@ant-design/icons';
+const SubMenu = Menu.SubMenu;
+
+export function getNavItem() {
+ return (
+