Commit 15916b72 authored by 周宏民's avatar 周宏民

fix: 集成登录跳转前做菜单权限判断,获取子站优化

parent d6a25018
Pipeline #93634 waiting for manual action with stages
...@@ -14,6 +14,7 @@ import axios from 'axios'; ...@@ -14,6 +14,7 @@ import axios from 'axios';
import { defaultApp } from '@/micro'; import { defaultApp } from '@/micro';
import { useHistory } from '@wisdom-utils/runtime'; import { useHistory } from '@wisdom-utils/runtime';
import LoadPage from '@/components/LoadPage'; import LoadPage from '@/components/LoadPage';
import { getUserInfo, getWebSiteConfig } from '@/api/service/base';
import styles from './index.less'; import styles from './index.less';
const IntegratedSwitch = props => { const IntegratedSwitch = props => {
...@@ -74,29 +75,38 @@ const IntegratedSwitch = props => { ...@@ -74,29 +75,38 @@ const IntegratedSwitch = props => {
useEffect(() => { useEffect(() => {
// if (!window?.globalConfig?.userInfo?.OID || (!(window?.globalConfig?.isIntegration > 1) && window?.globalConfig?.Industry !== '集成登录')) return setDataList([]); // if (!window?.globalConfig?.userInfo?.OID || (!(window?.globalConfig?.isIntegration > 1) && window?.globalConfig?.Industry !== '集成登录')) return setDataList([]);
if (!window?.globalConfig?.userInfo?.OID || !(window?.globalConfig?.isIntegration >= 1)) return setDataList([]); if (!window?.globalConfig?.userInfo?.OID || !(window?.globalConfig?.isIntegration >= 1)) return setDataList([]);
appService let list = localStorage.getItem('integrationData'); //
.GetIntegrationConfig({ list = list ? JSON.parse(list) : [];
type: '集成登录', if (Array.isArray(list) && list?.length) {
userId: window?.globalConfig?.userInfo?.OID ?? null, setDataList(list || []);
isEnable: true, } else {
client: appService
localStorage.getItem('integrationClient') || sessionStorage.getItem('client') || props?.global?.client || '', .GetIntegrationConfig({
}) type: '集成登录',
.then(res => { userId: window?.globalConfig?.userInfo?.OID ?? null,
setDataList(res?.data || []); isEnable: true,
}) client:
.catch(err => { localStorage.getItem('integrationClient') ||
setDataList([]); sessionStorage.getItem('client') ||
}); props?.global?.client ||
'',
})
.then(res => {
setDataList(res?.data || []);
})
.catch(err => {
setDataList([]);
});
}
}, []); }, []);
// 子站跳转 // 子站跳转
// eslint-disable-next-line no-shadow // eslint-disable-next-line no-shadow
const handlePage = useCallback((item, loginAction) => { const handlePage = useCallback((item, loginAction) => {
setJumpLoading(true);
jumpProgressStart();
startTiming(5);
if (item.subType === '外链') { if (item.subType === '外链') {
setJumpLoading(true);
jumpProgressStart();
startTiming(5);
// 营收 // 营收
if (item.paramValue === 'ticket') { if (item.paramValue === 'ticket') {
// 获取临时token // 获取临时token
...@@ -129,35 +139,56 @@ const IntegratedSwitch = props => { ...@@ -129,35 +139,56 @@ const IntegratedSwitch = props => {
} }
} }
} else if (item.subType === '内链') { } else if (item.subType === '内链') {
if (window.qiankunIsCache) {
store.set('event:dropCache');
}
const cli = item.appKey; const cli = item.appKey;
Cookies.set('client', cli, { const token = props.global?.token || Cookies.get('token');
expires: 86400000 / (24 * 60 * 60 * 1000), getWebSiteConfig({
path: '/', identity: token,
}); client: cli,
sessionStorage.setItem('client', cli); }).then(res => {
const currentProduct = `__global__recent_productIndex__micro_${window.location.hostname}_${window.globalConfig if (!res?.data?.[0]?.widgets?.length) {
?.client ?? 'city'}`; message.error({
sessionStorage.removeItem(currentProduct); duration: 3,
const currentProductNew = `__global__recent_productIndex__micro_${window.location.hostname}_${cli || 'city'}`; content: '您没有该板块权限,请联系管理员',
sessionStorage.setItem(currentProductNew, 0); });
setClient(cli); return;
clientRef.current = cli; }
const config = props.global; setJumpLoading(true);
config.uiwidgets = []; jumpProgressStart();
config.widgets = []; startTiming(5);
config.allWidgets = []; if (window.qiankunIsCache) {
window.qiankunStarted = false; store.set('event:dropCache');
if (cli) { }
config.client = cli;
} Cookies.set('client', cli, {
expires: 86400000 / (24 * 60 * 60 * 1000),
path: '/',
});
sessionStorage.setItem('client', cli);
const currentProduct = `__global__recent_productIndex__micro_${window.location.hostname}_${window.globalConfig
?.client ?? 'city'}`;
sessionStorage.removeItem(currentProduct);
const currentProductNew = `__global__recent_productIndex__micro_${window.location.hostname}_${cli || 'city'}`;
sessionStorage.setItem(currentProductNew, 0);
// props.instance && props.instance.updateConfig(config); setClient(cli);
loginAction && loginAction.getUserInfoAndConfig('', true, item.type); clientRef.current = cli;
const config = props.global;
config.uiwidgets = [];
config.widgets = [];
config.allWidgets = [];
window.qiankunStarted = false;
if (cli) {
config.client = cli;
}
// props.instance && props.instance.updateConfig(config);
loginAction && loginAction.getUserInfoAndConfig('', true, item.type);
});
} else { } else {
setJumpLoading(true);
jumpProgressStart();
startTiming(5);
let { url } = item; let { url } = item;
if (url?.indexOf('{userId}') >= 0) { if (url?.indexOf('{userId}') >= 0) {
url = url.replace('{userId}', window.globalConfig?.userInfo?.OID); url = url.replace('{userId}', window.globalConfig?.userInfo?.OID);
...@@ -173,6 +204,9 @@ const IntegratedSwitch = props => { ...@@ -173,6 +204,9 @@ const IntegratedSwitch = props => {
} else { } else {
window.open(res.data?.data, '_blank'); window.open(res.data?.data, '_blank');
} }
} else {
setJumpLoading(false);
jumpProgressEnd();
} }
}); });
} }
...@@ -220,18 +254,21 @@ const IntegratedSwitch = props => { ...@@ -220,18 +254,21 @@ const IntegratedSwitch = props => {
</Tooltip> </Tooltip>
</div> </div>
</li> </li>
{dataList.map(item => ( {dataList.map(item => {
<li className={styles.switchPageLi} key={item.name} onClick={event => handlePage(item, loginAction)}> if (item.subType === '内链' && item.appKey === props?.global?.client) return null;
<div className={styles.switchPageList}> return (
<Tooltip placement="top" title={item.name}> <li className={styles.switchPageLi} key={item.name} onClick={event => handlePage(item, loginAction)}>
<img <div className={styles.switchPageList}>
src={`${window.location.origin}/${item.icon ? item.icon : 'center/images/科技风/二供.png'}`} <Tooltip placement="top" title={item.name}>
alt="" <img
/> src={`${window.location.origin}/${item.icon ? item.icon : 'center/images/科技风/二供.png'}`}
</Tooltip> alt=""
</div> />
</li> </Tooltip>
))} </div>
</li>
);
})}
</ul> </ul>
</div> </div>
) : null; ) : null;
......
...@@ -229,6 +229,7 @@ export function logout(data) { ...@@ -229,6 +229,7 @@ export function logout(data) {
sessionStorage.setItem('client', integrationClient); sessionStorage.setItem('client', integrationClient);
} }
localStorage.removeItem('integrationClient'); localStorage.removeItem('integrationClient');
localStorage.removeItem('integrationData');
localStorage.removeItem('access_token'); localStorage.removeItem('access_token');
localStorage.removeItem('password_token'); localStorage.removeItem('password_token');
localStorage.removeItem('password_pwdRegex'); localStorage.removeItem('password_pwdRegex');
......
This diff is collapsed.
...@@ -9,6 +9,7 @@ import { connect } from 'react-redux'; ...@@ -9,6 +9,7 @@ import { connect } from 'react-redux';
import { actionCreators } from '@/containers/App/store'; import { actionCreators } from '@/containers/App/store';
import axios from 'axios'; import axios from 'axios';
import { getImageUrl } from '@/utils/utils'; import { getImageUrl } from '@/utils/utils';
import { getUserInfo, getWebSiteConfig } from '@/api/service/base';
import { FullscreenExitOutlined, FullscreenOutlined } from '@ant-design/icons'; import { FullscreenExitOutlined, FullscreenOutlined } from '@ant-design/icons';
import { message, Button } from 'antd'; import { message, Button } from 'antd';
...@@ -100,7 +101,7 @@ const IntegrationNew = props => { ...@@ -100,7 +101,7 @@ const IntegrationNew = props => {
}) })
.then(res1 => { .then(res1 => {
const list = res1.data || []; const list = res1.data || [];
list.length && localStorage.setItem('integrationData', JSON.stringify(list));
setIntegrationData(list); setIntegrationData(list);
}); });
}; };
...@@ -175,11 +176,24 @@ const IntegrationNew = props => { ...@@ -175,11 +176,24 @@ const IntegrationNew = props => {
} }
}; };
const toClient = (item, loginA) => { const toClient = async (item, loginA) => {
const token = props.global?.token || Cookies.get('token');
const cli = item.appKey;
const res = await getWebSiteConfig({
identity: token,
client: cli,
});
if (!res?.data?.[0]?.widgets?.length) {
message.error({
duration: 3,
content: '您没有该板块权限,请联系管理员',
});
return;
}
if (window.qiankunIsCache) { if (window.qiankunIsCache) {
store.set('event:dropCache'); store.set('event:dropCache');
} }
const cli = item.appKey;
Cookies.set('client', cli, { Cookies.set('client', cli, {
expires: 86400000 / (24 * 60 * 60 * 1000), expires: 86400000 / (24 * 60 * 60 * 1000),
path: '/', path: '/',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment