| | |
| | | * @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'; |
| | |
| | | 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() || {}; |
| | |
| | | |
| | | // 当前选中的角色 及其 权限 |
| | | const [roleActive, setRoleActive] = useState({ id: null, powerMap: {} }); |
| | | |
| | | //网格跳转请求状态 |
| | | const [gridStatus, setGridStatus] = useState(false) |
| | | const [searchParams] = useSearchParams(); |
| | | |
| | | |
| | | // 切换头部menu |
| | | function handleClickHeaderMenu(values) { |
| | |
| | | } |
| | | } |
| | | |
| | | //请求网格token |
| | | const getGridToken = async (token) => { |
| | | const res = await gridLogin({ |
| | | token |
| | | }) |
| | | if (res.type) { |
| | | $$.clearSessionStorage(); |
| | | $$.setSessionStorage('customerSystemToken', res.data?.token); |
| | | $$.setLocal('customerSystemUser', 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'); |
| | | let ctUseroleList = customerSystemUser?.ctUseroleList || []; |
| | | if (ctUseroleList[0]?.roleId) { |
| | | setRoleActive({ id: ctUseroleList[0]?.roleId, roleName: ctUseroleList[0]?.roleName, powerMap: {} }); |
| | | } |
| | | } |
| | | }, []); |
| | | |
| | |
| | | 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 || []; |
| | |
| | | } |
| | | }); |
| | | 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'); |
| | | } |
| | |
| | | getRolePower(roleActive.id, roleActive.roleName); |
| | | } |
| | | }, [roleActive.id]); |
| | | |
| | | console.log(gridStatus); |
| | | return ( |
| | | <> |
| | | <Header |
| | |
| | | headerUserChange={headerUserChange} |
| | | handleChangeRole={handleChangeRole} |
| | | /> |
| | | {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"> |
| | |
| | | </main> |
| | | <SOP /> |
| | | </main> |
| | | )} |
| | | ) : <></> |
| | | } |
| | | </> |
| | | ); |
| | | }; |