Sfoglia il codice sorgente

fix: 菜单初始化修改

100011797 3 anni fa
parent
commit
486c2beb23

+ 4 - 4
config/proxy.ts

@@ -15,10 +15,10 @@ export default {
       // target: 'http://120.79.18.123:8844/',
       // ws: 'ws://120.79.18.123:8844/',
       // 测试环境
-      target: 'http://120.77.179.54:8844/',
-      ws: 'ws://120.77.179.54:8844/',
-      // target: 'http://192.168.32.65:8848/',
-      // ws: 'ws://192.168.32.65:8848/',
+      // target: 'http://120.77.179.54:8844/',
+      // ws: 'ws://120.77.179.54:8844/',
+      target: 'http://192.168.32.65:8850/',
+      ws: 'ws://192.168.32.65:8850/',
       //v2环境
       // ws: 'ws://47.109.52.230:8844',
       // target: 'http://47.109.52.230:8844',

+ 18 - 22
src/pages/init-home/components/menu.tsx

@@ -1,7 +1,23 @@
 import { useEffect, useRef, useState, forwardRef, useImperativeHandle } from 'react';
 import BaseMenu from '@/pages/system/Menu/Setting/baseMenu';
 import { service } from '../index';
-
+/**
+ * 根据权限过滤菜单
+ */
+export const filterMenu = (permissions: string[], menus: any[]) => {
+  return menus.filter((item) => {
+    let isShow = false;
+    if (item.showPage && item.showPage.length) {
+      isShow = item.showPage.every((pItem: any) => {
+        return permissions.includes(pItem);
+      });
+    }
+    if (item.children) {
+      item.children = filterMenu(permissions, item.children);
+    }
+    return isShow || !!item.children?.length;
+  });
+};
 const Menu = forwardRef((props: { onChange?: (menu: any) => void }, ref) => {
   const [count, setCount] = useState(0);
   const menuRef = useRef<any[]>();
@@ -17,32 +33,12 @@ const Menu = forwardRef((props: { onChange?: (menu: any) => void }, ref) => {
   };
 
   /**
-   * 根据权限过滤菜单
-   */
-  const filterMenu = (permissions: string[], menus: any[]) => {
-    return menus.filter((item) => {
-      let isPermissions = true;
-      if (item.permissions && item.permissions.length) {
-        isPermissions = item.permissions.some((pItem: any) =>
-          permissions.includes(pItem.permission),
-        );
-      }
-
-      if (item.children) {
-        item.children = filterMenu(permissions, item.children);
-      }
-
-      return isPermissions || !!item.children?.length;
-    });
-  };
-
-  /**
    * 获取当前系统所有权限
    */
   const getSystemPermissions = async () => {
     const resp = await service.getSystemPermission();
     if (resp.status === 200) {
-      console.log(resp.result.map((item: any) => JSON.parse(item).id));
+      // console.log(resp.result.map((item: any) => JSON.parse(item).id));
       const newTree = filterMenu(
         resp.result.map((item: any) => JSON.parse(item).id),
         BaseMenu,

+ 18 - 11
src/pages/link/Type/Detail/index.tsx

@@ -82,20 +82,27 @@ const Save = observer(() => {
   const getResourcesClusters = () => {
     // eslint-disable-next-line @typescript-eslint/no-use-before-define
     const checked = form.getValuesIn('cluster')?.map((i: any) => i?.serverId) || [];
-    // cache resourcesCluster
-    if (Store.get('resources-cluster')?.length > 0) {
+    // eslint-disable-next-line @typescript-eslint/no-use-before-define
+    const share = form.getValuesIn('shareCluster');
+    if (share) {
       return new Promise((resolve) => {
-        resolve(Store.get('resources-cluster').filter((j: any) => !checked.includes(j.value)));
+        resolve([]);
       });
     } else {
-      return service.getResourceClusters().then((resp) => {
-        const _data = resp.result?.map((item: any) => ({
-          label: item.name,
-          value: item.id,
-        }));
-        Store.set('resources-cluster', _data);
-        return (_data || []).filter((j: any) => !checked.includes(j.value));
-      });
+      if (Store.get('resources-cluster')?.length > 0) {
+        return new Promise((resolve) => {
+          resolve(Store.get('resources-cluster').filter((j: any) => !checked.includes(j.value)));
+        });
+      } else {
+        return service.getResourceClusters().then((resp) => {
+          const _data = resp.result?.map((item: any) => ({
+            label: item.name,
+            value: item.id,
+          }));
+          Store.set('resources-cluster', _data);
+          return (_data || []).filter((j: any) => !checked.includes(j.value));
+        });
+      }
     }
   };
   const getCertificates = () =>

File diff suppressed because it is too large
+ 1840 - 0
src/pages/system/Menu/Setting/baseMenu-copy.ts


File diff suppressed because it is too large
+ 1677 - 368
src/pages/system/Menu/Setting/baseMenu.ts


+ 11 - 2
src/pages/system/Menu/Setting/index.tsx

@@ -17,6 +17,7 @@ import { observable } from '@formily/reactive';
 import { Observer, observer } from '@formily/react';
 import { service } from '../index';
 import type { TreeProps, DataNode } from 'antd/es/tree';
+import { filterMenu } from '@/pages/init-home/components/menu';
 
 type MenuSettingModelType = {
   menuData: any[];
@@ -30,7 +31,7 @@ export const MenuSettingModel = observable<MenuSettingModelType>({
 
 export default observer(() => {
   const { minHeight } = useDomFullHeight(`.menu-setting-warp`);
-  const [baseMenu, setBaseMenu] = useState<any[]>(BaseTreeData);
+  const [baseMenu, setBaseMenu] = useState<any[]>([]);
   const [loading, setLoading] = useState(false);
   const [visible, setVisible] = useState(false);
 
@@ -182,7 +183,15 @@ export default observer(() => {
 
   useEffect(() => {
     getSystemMenu();
-    setBaseMenu(BaseTreeData);
+    service.getSystemPermission().then((resp) => {
+      if (resp.status === 200) {
+        const newTree = filterMenu(
+          resp.result.map((item: any) => JSON.parse(item).id),
+          BaseTreeData,
+        );
+        setBaseMenu(newTree);
+      }
+    });
   }, []);
 
   const updateMenu = () => {

+ 5 - 0
src/pages/system/Menu/service.ts

@@ -30,6 +30,11 @@ class Service extends BaseService<MenuItem> {
 
   // 更新全部菜单
   updateMenus = (data: any) => request(`${this.uri}/_all`, { method: 'PATCH', data });
+
+  getSystemPermission = () =>
+    request(`${SystemConst.API_BASE}/system/resources/permission`, {
+      method: 'GET',
+    });
 }
 
 export default Service;

+ 1 - 1
src/utils/menu/index.ts

@@ -211,7 +211,7 @@ export const handleRoutes = (routes?: MenuItem[], isCommunity?: boolean, level =
         }
 
         // eslint-disable-next-line @typescript-eslint/no-unused-vars
-        if (item.children) {
+        if (item.children && item.children.length) {
           const children = handleRoutes(item.children, isCommunity, level + 1);
           item.children = children;
           item.isShow = !!children.filter((i) => i.isShow).length;