forked from gzzfw/frontEnd/gzDyh

xusd
2024-09-16 a09205214e5cb6803563cb06c6d9f58d68916b73
gz-customerSystem/src/components/Layout/index.jsx
@@ -7,8 +7,8 @@
 * @Version: 1.0.0
 * @Description: 外层layout
 */
import React, { useState, useRef, useEffect } from 'react';
import { useLocation, Outlet, useNavigate } from 'react-router-dom';
import React, { useState, useRef, useEffect  } from 'react';
import { useLocation, Outlet, useNavigate,useSearchParams } from 'react-router-dom';
import './index.less';
import Header from './Header';
import Navigation from './Navigation';
@@ -19,6 +19,17 @@
function getRolePowerApi(roleId) {
   return $$.ax.request({ url: `ctRole/getById?id=${roleId}`, type: 'get', service: 'cust' });
}
//对接单点登录,获取token
function gridLogin(data) {
   return $$.ax.request({ url: `ctAccount/gridLogin`, type: 'post', service: 'cust', isGrid: true, data });
}
// 角色选择
function switchRoleApi(data) {
   return $$.ax.request({ url: 'ctAccount/switchRole', type: 'get', data, service: 'cust' });
}
const Layout = ({ isNotNav, headerUserChange }) => {
   const location = useLocation() || {};
@@ -40,6 +51,12 @@
   // 当前选中的角色 及其 权限
   const [roleActive, setRoleActive] = useState({ id: null, powerMap: {} });
   //网格跳转请求状态
   const [gridStatus, setGridStatus] = useState(false)
   const [searchParams] = useSearchParams();
   const [userData, setUserData] = useState({});
   // 切换头部menu
   function handleClickHeaderMenu(values) {
@@ -97,17 +114,55 @@
      }
   }
   //请求网格token
   const getGridToken = async (token) => {
      const res = await gridLogin({
         token
      })
      if (res.type) {
         $$.clearSessionStorage();
         $$.setSessionStorage('customerSystemToken', res.data?.token);
         $$.setLocal('customerSystemUser', res.data || {});
         console.log('getGridToken', res.data);
         setUserData(res.data || {})
         let ctUseroleList = res.data?.ctUseroleList || [];
         console.log(ctUseroleList);
         const roleId = ctUseroleList[0]?.roleId
         const roleName = ctUseroleList[0]?.roleName
         const roleCode = ctUseroleList[0]?.roleCode
         $$.setSessionStorage('role', { roleId: roleId, roleName: roleName });
         setRoleActive({ id: roleId, roleName: roleName, powerMap: {} });
         const result = await switchRoleApi({ roleCode: roleCode });
         if (result.type) {
            $$.setSessionStorage('customerSystemToken', result.data);
            setGridStatus(true)
         }
      }
   }
   // 初始化 格式化数据适应菜单栏
   useEffect(() => {
      let role = $$.getSessionStorage('role');
      if (role) {
         setRoleActive({ id: role.roleId, roleName: role.roleName, powerMap: {} });
         return;
      }
      let customerSystemUser = $$.getLocal('customerSystemUser');
      let ctUseroleList = customerSystemUser?.ctUseroleList || [];
      if (ctUseroleList[0]?.roleId) {
         setRoleActive({ id: ctUseroleList[0]?.roleId, roleName: ctUseroleList[0]?.roleName, powerMap: {} });
      //单点登录,网格传一个token在session,如果有就请求接口
      // const gridToken = $$.getSessionStorage('gridToken');
      const gridToken = searchParams.get('gridToken'); // 获取名为 'gridToken' 的参数
      console.log(gridToken,'gridToken')
      if (gridToken) {
         getGridToken(gridToken)
      } else {
         setGridStatus(true)
         let role = $$.getSessionStorage('role');
         if (role) {
            setRoleActive({ id: role.roleId, roleName: role.roleName, powerMap: {} });
            return;
         }
         let customerSystemUser = $$.getLocal('customerSystemUser');
         setUserData(customerSystemUser || {})
         let ctUseroleList = customerSystemUser?.ctUseroleList || [];
         if (ctUseroleList[0]?.roleId) {
            setRoleActive({ id: ctUseroleList[0]?.roleId, roleName: ctUseroleList[0]?.roleName, powerMap: {} });
         }
      }
   }, []);
@@ -117,7 +172,7 @@
      async function getRolePower(roleId, roleName) {
         global.setSpinning(true);
         const res = await getRolePowerApi(roleId);
         console.log(res,'res1111')
         console.log(res, 'res1111')
         global.setSpinning(false);
         if (res.type) {
            let resData = res.data?.roleTreeBOS || [];
@@ -132,14 +187,14 @@
               }
            });
            let powerMap = setPowerDataMap(power_data);
            function loop(data, arr) {
               data.forEach((x) => {
                  if (x.powerUrl && powerMap[x.powerUrl]?.show) {
                     arr.push(x.powerUrl);
                  }
                  if ( x.powerUrl && powerMap[x.powerUrl]?.update) {
                  if (x.powerUrl && powerMap[x.powerUrl]?.update) {
                     arr.push(x.powerUrl);
                     console.log(powerMap[x.powerUrl]?.update, 'res111111111');
                  }
@@ -162,7 +217,11 @@
         getRolePower(roleActive.id, roleActive.roleName);
      }
   }, [roleActive.id]);
   useEffect(() => {
      let customerSystemUser = $$.getLocal('customerSystemUser');
      setUserData(customerSystemUser || {});
     }, [headerUserChange]);
console.log(gridStatus);
   return (
      <>
         <Header
@@ -172,12 +231,13 @@
            handleClickMenu={handleClickHeaderMenu}
            headerUserChange={headerUserChange}
            handleChangeRole={handleChangeRole}
            userData={userData}
         />
         {isNotNav ? (
         {gridStatus && isNotNav ? (
            <main className="layout-main" id="layoutMain">
               <Outlet />
            </main>
         ) : (
         ) : gridStatus ? (
            <main className="layout-main" id="layoutMain" ref={layoutRef}>
               <Navigation powerMap={roleActive.powerMap} roleActive={roleActive} sideMenu={sideMenu} />
               <main id="layoutChild" className="layout-child">
@@ -185,7 +245,8 @@
               </main>
               <SOP />
            </main>
         )}
         ) : <></>
         }
      </>
   );
};