Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
CivWeb
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ReactWeb5
CivWeb
Commits
06123bde
Commit
06123bde
authored
Aug 28, 2024
by
周宏民
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pref: 弥勒集成登录支持client
parent
fc04c78b
Pipeline
#92150
waiting for manual action with stages
Changes
4
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
164 additions
and
21 deletions
+164
-21
login.js
src/pages/bootpage/demonstration/components/login.js
+1
-1
data.json
src/pages/bootpage/template/project/mile/data.json
+16
-8
index.js
src/pages/bootpage/template/project/mile/index.js
+144
-12
index.less
src/pages/bootpage/template/project/mile/index.less
+3
-0
No files found.
src/pages/bootpage/demonstration/components/login.js
View file @
06123bde
...
...
@@ -467,7 +467,7 @@ class Login {
}
getYanshiAuthority
(
self
,
getIndustry
)
{
self
.
updateConfig
&&
self
.
updateConfig
(
self
.
globalConfig
);
//
self.updateConfig && self.updateConfig(self.globalConfig);
if
(
self
.
globalConfig
.
widgets
.
length
===
0
)
{
self
.
events
.
emit
(
'loginError'
,
'当前账号未配置菜单'
);
self
.
handleLoginError
();
...
...
src/pages/bootpage/template/project/mile/data.json
View file @
06123bde
...
...
@@ -4,49 +4,57 @@
"name"
:
"领导驾驶舱"
,
"english"
:
"Leadership cockpit"
,
"label"
:
""
,
"url"
:
""
"url"
:
""
,
"client"
:
"BI"
},
{
"name"
:
"营业收费"
,
"english"
:
"Operating fees"
,
"label"
:
""
,
"url"
:
""
"url"
:
""
,
"client"
:
""
},
{
"name"
:
"OA办公"
,
"english"
:
"OA office"
,
"label"
:
""
,
"url"
:
""
"url"
:
""
,
"client"
:
"water"
},
{
"name"
:
"资产管理"
,
"english"
:
"Asset management"
,
"label"
:
""
,
"url"
:
""
"url"
:
""
,
"client"
:
"property"
},
{
"name"
:
"在线监测"
,
"english"
:
"Monitoring Center"
,
"label"
:
""
,
"url"
:
""
"url"
:
""
,
"client"
:
""
},
{
"name"
:
"控漏管控"
,
"english"
:
"Leakage control"
,
"label"
:
""
,
"url"
:
""
"url"
:
""
,
"client"
:
""
},
{
"name"
:
"业务中心"
,
"english"
:
"Business center"
,
"label"
:
""
,
"url"
:
""
"url"
:
""
,
"client"
:
""
},
{
"name"
:
"工单中心"
,
"english"
:
"Ticket center"
,
"label"
:
""
,
"url"
:
""
"url"
:
""
,
"client"
:
""
}
],
"标题"
:
"弥勒自来水公司信息化平台"
,
...
...
src/pages/bootpage/template/project/mile/index.js
View file @
06123bde
...
...
@@ -4,6 +4,11 @@
* @Date: 2024-08-26 18:34:42
*/
import
{
appService
}
from
'@/api'
;
import
{
connect
}
from
'react-redux'
;
import
{
actionCreators
}
from
'@/containers/App/store'
;
import
{
getUserInfo
,
getWebSiteConfig
}
from
'@/api/service/base'
;
import
{
log
,
params
,
encipher
}
from
'@wisdom-utils/utils/lib/helpers'
;
import
{
FullscreenExitOutlined
,
FullscreenOutlined
}
from
'@ant-design/icons'
;
import
{
message
,
Button
}
from
'antd'
;
import
classNames
from
'classnames'
;
...
...
@@ -13,8 +18,13 @@ import backImg from '@/assets/images/demonstration/返回.png';
import
arrowLeftImg
from
'@/assets/images/demonstration/左箭头.png'
;
import
LoadPage
from
'@/components/LoadPage'
;
import
$
from
'jquery'
;
import
{
connect
}
from
'react-redux'
;
import
{
SERVICE_INTERFACE_SUCCESS_CODE
}
from
'@/constants'
;
import
{
useHistory
,
useAliveController
}
from
'@wisdom-utils/runtime'
;
import
{
store
}
from
'@wisdom-utils/utils'
;
import
Cookies
from
'js-cookie'
;
import
LoginAction
from
'@/pages/bootpage/demonstration/components/login'
;
import
{
defaultApp
}
from
'@/micro'
;
import
useFullScreen
from
'../../demonstration/components/useFullScreen'
;
import
defaultConfig
from
'./data.json'
;
import
styles
from
'./index.less'
;
...
...
@@ -25,10 +35,19 @@ const boxHeight = 930;
const
IntegrationMile
=
props
=>
{
const
[
ref
,
isFullscreen
,
handleFullScreen
,
handleExitFullScreen
]
=
useFullScreen
(
false
);
const
history
=
useHistory
();
const
globalClient
=
window
?.
globalConfig
?.
client
||
'city'
;
const
timer2
=
useRef
(
null
);
const
timer3
=
useRef
(
null
);
const
timer4
=
useRef
(
null
);
const
progressRef2
=
useRef
(
0
);
const
[
loginAction
,
setAction
]
=
useState
(()
=>
new
LoginAction
(
props
));
const
[
dataList
,
setDataList
]
=
useState
([]);
// 集成登录详情
const
[
currentType
,
setCurrentType
]
=
useState
(
''
);
const
[
mClient
,
setMClient
]
=
useState
(
''
);
const
{
clear
}
=
useAliveController
();
// 退出
const
exit
=
()
=>
{
if
(
isFullscreen
)
{
...
...
@@ -173,17 +192,93 @@ const IntegrationMile = props => {
timer2
.
current
=
null
;
},
time
*
1000
);
};
const
onLink
=
url
=>
{
if
(
!
url
)
return
message
.
warning
(
'未配置功能路径'
);
setJumpLoading
(
true
);
jumpProgressStart
();
const
onLink
=
(
item
,
loginA
)
=>
{
const
{
url
,
client
}
=
item
;
if
(
!
url
&&
!
client
)
return
message
.
warning
(
'未配置功能路径'
);
if
(
url
)
{
setJumpLoading
(
true
);
jumpProgressStart
();
setLinkUrl
(
url
);
let
time
=
15
;
if
(
!
url
.
includes
(
'user/noscret'
))
{
time
=
4
;
}
startTiming
(
time
);
}
if
(
client
)
{
if
(
window
.
qiankunIsCache
)
{
store
.
set
(
'event:dropCache'
);
}
Cookies
.
set
(
'client'
,
client
,
{
expires
:
86400000
/
(
24
*
60
*
60
*
1000
),
path
:
'/'
,
});
sessionStorage
.
setItem
(
'client'
,
client
);
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
}
_$
{
client
||
'city'
}
`;
sessionStorage.setItem(currentProductNew, 0);
setMClient(client);
const config = props.global;
setLinkUrl
(
url
);
let
time
=
15
;
if
(
!
url
.
includes
(
'user/noscret'
))
{
time
=
4
;
window.qiankunStarted = false;
if (client) {
config.client = client;
}
const token = props.global?.token || Cookies.get('token');
if (!token) {
history.push(`
/
user
/
login
?
client
=
$
{
globalClient
}
`, { reload: true });
clear();
props.logout();
} else {
setJumpLoading(true);
jumpProgressStart();
startTiming(15);
getWebSiteConfig({
identity: token,
client,
})
.then(res => {
const data = res.data?.[0] || {};
config.uiwidgets = data.uiwidgets || [];
config.widgets = data.widgets || [];
config.allWidgets = data.widgets || [];
const homeType = config.productType || 'civweb4';
const homepage = params.getParams('homepage')
? params.getParams('homepage')
: homeType && data.homepage
? `
$
{
homeType
}
/${params.getParams
(
'homepage'
)
|| data.homepage}
`
:
''
;
config
.
homepage
=
homepage
;
config
.
hideFeedback
=
data
.
afterSales
&&
typeof
data
.
afterSales
===
'string'
?
data
.
afterSales
.
split
(
','
).
includes
(
`
${
props
.
global
?.
userInfo
?.
OID
}
`)
: false;
config.IsOpenTransitionPage = data.IsOpenTransitionPage || false;
config.openAnnouncement = data.openAnnouncement;
config.announcementContent = data.announcementContent;
if (!config.widgets.length) {
message.error({
duration: 3,
content: '当前账号未配置菜单',
});
setJumpLoading(false);
jumpProgressEnd();
return;
}
loginAction.updateConfig && loginAction.updateConfig(config);
loginAction && loginAction.getIndustry(true, token);
})
.catch(err => {
setJumpLoading(false);
jumpProgressEnd();
});
}
}
startTiming
(
time
);
};
useEffect(() => {
getData();
...
...
@@ -221,6 +316,29 @@ const IntegrationMile = props => {
}
};
}, [linkUrl]);
useEffect(() => {
const handleToggleIndustry = event => {
setJumpLoading(false);
jumpProgressEnd();
props.updateCurrentIndex && props.updateCurrentIndex(0);
props.history.push(`
/
?
client
=
$
{
mClient
||
props
.
global
.
client
}
`);
defaultApp();
};
const handleError = () => {
setJumpLoading(false);
jumpProgressEnd();
};
loginAction.events.on('loginSuccess', handleToggleIndustry);
loginAction.events.on('loginError', handleError);
return () => {
loginAction && loginAction.events && loginAction.events.removeListener('loginSuccess', handleToggleIndustry);
loginAction && loginAction.events && loginAction.events.removeListener('loginError', handleError);
};
}, [loginAction.events, props, mClient]);
return (
<div className={classNames(styles.integrationMile, 'integrationMile')} ref={ref}>
{jumpLoading ? (
...
...
@@ -269,7 +387,7 @@ const IntegrationMile = props => {
{configData?.listData
? configData?.listData.map(item => (
<div
onClick
=
{()
=>
onLink
(
item
.
url
)}
onClick={() => onLink(item
, loginAction
)}
className={styles.IY_item}
key={item.name}
type={item.name}
...
...
@@ -304,4 +422,18 @@ const IntegrationMile = props => {
const mapStateToProps = state => ({
global: state.getIn(['global', 'globalConfig']),
});
export
default
connect
(
mapStateToProps
)(
IntegrationMile
);
const mapDispatchToProps = dispatch => ({
updateConfig(config) {
dispatch(actionCreators.getConfig(config));
},
createContext(data) {
dispatch(actionCreators.createContext(data));
},
updateCurrentIndex(index) {
dispatch(actionCreators.updateCurrentIndex(index));
},
});
export default connect(
mapStateToProps,
mapDispatchToProps,
)(IntegrationMile);
src/pages/bootpage/template/project/mile/index.less
View file @
06123bde
...
...
@@ -105,6 +105,9 @@
.integrationMile_icon {
margin-right: 20px;
img{
max-height: 60px;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment