diff --git a/fund-admin/src/api/menu.js b/fund-admin/src/api/menu.js
new file mode 100644
index 0000000..f9cfcfa
--- /dev/null
+++ b/fund-admin/src/api/menu.js
@@ -0,0 +1,47 @@
+import request from './request'
+
+export const getMenuTree = (params) => {
+ return request({
+ url: '/sys/api/v1/menu/tree',
+ method: 'get',
+ params
+ })
+}
+
+export const getMenuList = (params) => {
+ return request({
+ url: '/sys/api/v1/menu/list',
+ method: 'get',
+ params
+ })
+}
+
+export const getMenuDetail = (menuId) => {
+ return request({
+ url: `/sys/api/v1/menu/${menuId}`,
+ method: 'get'
+ })
+}
+
+export const createMenu = (data) => {
+ return request({
+ url: '/sys/api/v1/menu',
+ method: 'post',
+ data
+ })
+}
+
+export const updateMenu = (menuId, data) => {
+ return request({
+ url: `/sys/api/v1/menu/${menuId}`,
+ method: 'put',
+ data
+ })
+}
+
+export const deleteMenu = (menuId) => {
+ return request({
+ url: `/sys/api/v1/menu/${menuId}`,
+ method: 'delete'
+ })
+}
diff --git a/fund-admin/src/api/role.js b/fund-admin/src/api/role.js
new file mode 100644
index 0000000..3bb9b25
--- /dev/null
+++ b/fund-admin/src/api/role.js
@@ -0,0 +1,54 @@
+import request from './request'
+
+export const getRoleList = (params) => {
+ return request({
+ url: '/sys/api/v1/role/list',
+ method: 'get',
+ params
+ })
+}
+
+export const getRoleDetail = (roleId) => {
+ return request({
+ url: `/sys/api/v1/role/${roleId}`,
+ method: 'get'
+ })
+}
+
+export const createRole = (data) => {
+ return request({
+ url: '/sys/api/v1/role',
+ method: 'post',
+ data
+ })
+}
+
+export const updateRole = (roleId, data) => {
+ return request({
+ url: `/sys/api/v1/role/${roleId}`,
+ method: 'put',
+ data
+ })
+}
+
+export const deleteRole = (roleId) => {
+ return request({
+ url: `/sys/api/v1/role/${roleId}`,
+ method: 'delete'
+ })
+}
+
+export const getRoleMenuIds = (roleId) => {
+ return request({
+ url: `/sys/api/v1/role/${roleId}/menus`,
+ method: 'get'
+ })
+}
+
+export const assignRoleMenus = (roleId, menuIds) => {
+ return request({
+ url: `/sys/api/v1/role/${roleId}/menus`,
+ method: 'post',
+ data: { menuIds }
+ })
+}
diff --git a/fund-admin/src/views/customer/contact.vue b/fund-admin/src/views/customer/contact.vue
index af3361f..d6f06ae 100644
--- a/fund-admin/src/views/customer/contact.vue
+++ b/fund-admin/src/views/customer/contact.vue
@@ -4,14 +4,323 @@
联系人管理页面 - 开发中
+ + +菜单管理页面 - 开发中
+ + +