From 5aa4a814ab8d4aa194a9683ebefaefdfc6d92c3a Mon Sep 17 00:00:00 2001 From: liuwh <964324856@qq.com> Date: Tue, 17 Sep 2024 17:18:05 +0800 Subject: [PATCH] Merge branch 'master' of http://120.79.193.119:9090/r/gzzfw/frontEnd/gzDyh into master --- gz-customerSystem/src/components/Layout/index.jsx | 99 ++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 80 insertions(+), 19 deletions(-) diff --git a/gz-customerSystem/src/components/Layout/index.jsx b/gz-customerSystem/src/components/Layout/index.jsx index 85e1209..1b04597 100644 --- a/gz-customerSystem/src/components/Layout/index.jsx +++ b/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> - )} + ) : <></> + } </> ); }; -- Gitblit v1.8.0