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
7d920eea
Commit
7d920eea
authored
8 months ago
by
周宏民
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:弥勒集成登录 支持client
parent
c5efa399
Pipeline
#92457
waiting for manual action with stages
Changes
7
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
904 additions
and
62 deletions
+904
-62
actions.js
src/containers/App/store/actions.js
+10
-1
BasicLayout.js
src/layouts/BasicLayout.js
+5
-0
login.js
src/pages/bootpage/demonstration/components/login.js
+829
-37
data.json
src/pages/bootpage/template/project/mile/data.json
+4
-4
index.js
src/pages/bootpage/template/project/mile/index.js
+46
-10
index.less
src/pages/bootpage/template/project/mile/index.less
+8
-8
index.js
src/pages/integratedLogin/index.js
+2
-2
No files found.
src/containers/App/store/actions.js
View file @
7d920eea
...
...
@@ -188,8 +188,9 @@ export function updatePdCesiumView(data) {
export
function
logout
(
data
)
{
// eslint-disable-next-line no-undef
createStoreage
.
remove
(
'PANDA_STORE'
);
const
integrationClient
=
localStorage
.
getItem
(
'integrationClient'
);
if
(
window
.
globalConfig
)
{
Cookies
.
set
(
window
.
globalConfig
.
client
,
''
,
{
Cookies
.
set
(
integrationClient
||
window
.
globalConfig
.
client
,
''
,
{
path
:
'/'
,
});
window
.
globalConfig
.
token
=
null
;
...
...
@@ -198,6 +199,9 @@ export function logout(data) {
window
.
globalConfig
.
baseURI
=
window
.
location
.
origin
;
window
.
globalConfig
.
hasGateWay
=
false
;
window
.
globalConfig
.
userInfo
=
null
;
if
(
integrationClient
)
{
window
.
globalConfig
.
client
=
integrationClient
;
}
window
.
qiankunIsCache
=
null
;
window
.
qiankunStarted
=
false
;
// window.globalConfig.hasGateWay = ;
...
...
@@ -220,6 +224,11 @@ export function logout(data) {
Cookies
.
set
(
'singleToken'
,
''
,
{
path
:
'/'
,
});
// 如果有集成登录client,则 client 切换成集成登录
if
(
integrationClient
)
{
sessionStorage
.
setItem
(
'client'
,
integrationClient
);
}
localStorage
.
removeItem
(
'integrationClient'
);
localStorage
.
removeItem
(
'access_token'
);
localStorage
.
removeItem
(
'password_token'
);
localStorage
.
removeItem
(
'password_pwdRegex'
);
...
...
This diff is collapsed.
Click to expand it.
src/layouts/BasicLayout.js
View file @
7d920eea
...
...
@@ -326,6 +326,8 @@ const Layout = props => {
!
_
.
isNull
(
generateType
)
&&
!
_
.
isUndefined
(
generateType
)
&&
generateType
!==
'undefined'
?
`&generateType=
${
generateType
}
`
:
''
;
const
integrationClient
=
localStorage
.
getItem
(
'integrationClient'
);
if
(
integrationClient
)
client
=
integrationClient
if
(
!
isLogin
)
{
history
.
push
(
`/user/login?client=
${
client
}${
generateType
}
`
,
{
reload
:
true
});
clear
();
...
...
@@ -385,11 +387,14 @@ const Layout = props => {
const
GetIntegrationConfig
=
()
=>
{
if
(
first
)
{
const
integrationClient
=
localStorage
.
getItem
(
'integrationClient'
);
appService
.
GetIntegrationConfig
({
type
:
'集成登录'
,
userId
:
window
.
globalConfig
.
userInfo
?.
OID
??
null
,
isEnable
:
true
,
client
:
integrationClient
||
''
// 只有指定client才能获取集成登录信息
})
.
then
(
res
=>
{
setFirst
(
false
);
...
...
This diff is collapsed.
Click to expand it.
src/pages/bootpage/demonstration/components/login.js
View file @
7d920eea
...
...
@@ -4,6 +4,7 @@ import { log, params, encipher } from '@wisdom-utils/utils/lib/helpers';
import
{
message
}
from
'antd'
;
import
{
decode
,
encode
}
from
'js-base64'
;
import
Cookies
from
'js-cookie'
;
import
{
SlideVerify
}
from
'@wisdom-utils/components'
;
import
{
appService
,
noticeService
}
from
'@/api'
;
import
{
getUserInfo
,
getWebSiteConfig
}
from
'@/api/service/base'
;
import
{
SERVICE_APP_LOGIN_MODE
,
SERVICE_INTERFACE_SUCCESS_CODE
,
WX_REDIRECT_URI
}
from
'@/constants'
;
...
...
@@ -14,6 +15,7 @@ import {
DEFAULT_TCP_PORT
,
DEFAULT_PARSE_LEVEL
,
}
from
'@wisdom-utils/components/lib/AppLayout/notifier/constants'
;
import
{
guidePage
}
from
'@/pages/bootpage/template/constants'
;
// eslint-disable-next-line no-undef
const
Logger
=
logger
(
'login'
);
...
...
@@ -29,12 +31,308 @@ class Login {
this
.
globalConfig
=
getGlobalConfig
();
};
// 单点登录_xule_20231214
const
queryString
=
window
.
location
.
search
.
substring
(
1
);
const
params
=
queryString
.
split
(
'&'
);
const
paramsFind
=
params
&&
params
.
find
(
function
(
a
)
{
return
a
.
split
(
'='
)[
0
]
==
'uniwater_utoken'
;
});
this
.
uniwater_utoken
=
paramsFind
?.
split
(
'='
)[
1
]
??
''
;
// 单页面免登重定向地址
const
redirect
=
params
&&
params
.
find
(
function
(
a
)
{
return
a
.
split
(
'='
)[
0
]
===
'redirect'
;
});
if
(
this
.
uniwater_utoken
&&
!
redirect
)
{
this
.
getTokenForThird
();
}
this
.
createContext
=
props
.
createContext
;
this
.
history
=
props
.
history
;
this
.
callback
=
callback
;
this
.
integratedNum
=
0
;
this
.
hasTry
=
false
;
this
.
logout
=
props
.
logout
;
if
(
isInit
)
{
this
.
init
();
}
}
// 第三方单页面免登
getTokenThirdLogin
(
tk
)
{
const
self
=
this
;
self
.
globalConfig
.
token
=
tk
;
self
.
updateConfig
&&
self
.
updateConfig
(
self
.
globalConfig
);
}
// 单点登录接口_xule_20231214
getTokenForThird
()
{
const
self
=
this
;
appService
.
HDAuthLogin
({
token
:
self
.
uniwater_utoken
,
ignoreSite
:
true
,
})
.
then
(
res
=>
{
if
(
res
.
success
===
'OK'
)
{
const
tk
=
res
.
token
;
self
.
globalConfig
.
token
=
tk
;
const
param
=
{
subOID
:
'subOID'
,
site
:
this
.
getLocalSiteBytoken
(
tk
),
ignoreSite
:
true
,
};
if
(
window
.
location
?.
host
===
'panda-water.cn'
)
{
param
.
token
=
tk
;
}
else
{
param
.
identity
=
tk
;
}
getUserInfo
(
param
)
.
then
(
response
=>
{
try
{
if
(
response
&&
response
.
code
===
0
)
{
self
.
globalConfig
.
userInfo
=
window
?.
globalConfig
?.
transformUserInfo
?.(
response
.
data
)
??
{};
const
date
=
new
Date
();
date
.
setTime
(
date
.
getTime
()
+
24
*
60
*
60
*
1000
);
// date = date.toGMTString();
const
encodeSite
=
encode
(
encodeURIComponent
(
response
.
site
));
Cookies
.
set
(
'site'
,
encodeSite
,
{
expires
:
date
,
path
:
'/'
,
});
Cookies
.
set
(
'token'
,
tk
,
{
expires
:
date
,
path
:
'/'
,
});
self
.
isSignIn
=
true
;
self
.
updateConfig
&&
self
.
updateConfig
(
self
.
globalConfig
);
const
loginSite
=
{};
loginSite
[
tk
]
=
response
.
site
;
localStorage
.
setItem
(
'loginSite'
,
JSON
.
stringify
(
loginSite
));
self
.
writeLogs
();
self
.
getIndustry
(
false
,
tk
);
}
else
{
message
.
error
(
response
.
errMsg
);
if
(
self
.
goLogin
())
{
return
false
;
}
}
self
.
updateConfig
&&
self
.
updateConfig
(
self
.
globalConfig
);
}
catch
(
error
)
{
message
.
error
(
'登录失败'
);
if
(
self
.
goLogin
())
{
return
false
;
}
}
})
.
catch
(
error
=>
{
this
.
handleLoginError
();
Logger
.
log
(
'获取用户配置失败'
);
});
}
});
}
gzlogin
(
userPhone
)
{
this
.
login
(
userPhone
,
''
,
userPhone
,
false
,
SERVICE_APP_LOGIN_MODE
.
phone
);
}
gztransformLoginHander
(
response
,
isRememberPWD
,
pwd
)
{
const
self
=
this
;
// eslint-disable-next-line prettier/prettier
const
token
=
response
&&
(
response
.
token
?
response
.
token
:
response
.
access_token
!==
null
&&
response
.
user_token
!==
null
?
response
.
user_token
:
''
);
if
(
token
)
{
const
exp
=
86400000
;
self
.
globalConfig
.
token
=
token
;
if
(
response
.
access_token
!==
''
)
{
self
.
globalConfig
.
access_token
=
response
.
access_token
;
self
.
updateConfig
&&
self
.
updateConfig
(
self
.
globalConfig
);
let
rules
=
localStorage
.
getItem
(
'password_pwdRegex'
)
?
localStorage
.
getItem
(
'password_pwdRegex'
)
:
''
;
let
reg
;
try
{
reg
=
new
RegExp
(
rules
);
}
catch
(
error
)
{
rules
=
''
;
reg
=
new
RegExp
(
rules
);
}
let
check
=
false
;
if
(
rules
!==
''
)
check
=
!
reg
.
test
(
pwd
);
localStorage
.
setItem
(
'access_token'
,
response
.
access_token
?
response
.
access_token
:
''
);
if
(
check
)
{
localStorage
.
setItem
(
'password_token'
,
response
.
access_token
?
response
.
access_token
:
''
);
}
Cookies
.
set
(
'client'
,
self
.
globalConfig
.
client
,
{
expires
:
exp
/
(
24
*
60
*
60
*
1000
),
path
:
'/'
,
});
}
if
(
isRememberPWD
)
{
Cookies
.
set
(
'client'
,
self
.
globalConfig
.
client
,
{
expires
:
exp
/
(
24
*
60
*
60
*
1000
),
path
:
'/'
,
});
Cookies
.
set
(
'token'
,
token
,
{
expires
:
exp
/
(
24
*
60
*
60
*
1000
),
path
:
'/'
,
});
}
sessionStorage
.
setItem
(
'client'
,
self
.
globalConfig
.
client
);
self
.
isSignIn
=
true
;
self
.
updateConfig
&&
self
.
updateConfig
(
self
.
globalConfig
);
self
.
getUserInfoAndConfig
();
}
else
{
self
.
hasTry
=
true
;
self
.
events
.
emit
(
'loginError'
,
response
);
message
.
error
(
response
.
error
.
message
);
self
.
callback
&&
self
.
callback
(
false
);
}
}
// 获取手机号
getIpone
()
{
const
self
=
this
;
const
accessToken
=
params
.
getParams
(
'access_token'
);
return
appService
.
getUserMobile
({
// isTest: true,
access_token
:
accessToken
,
});
}
init
(
site
)
{
const
self
=
this
;
this
.
loginFailed
=
false
;
this
.
guid
=
Math
.
round
(
Math
.
random
()
*
10000
+
Date
.
now
()).
toString
(
16
);
this
.
redirect_state
=
Cookies
.
get
(
'redirect_state'
);
const
token
=
this
.
globalConfig
.
initToken
||
Cookies
.
get
(
'token'
)
||
params
.
getParams
(
'token'
)
||
this
.
globalConfig
.
token
||
null
;
const
noTokenSite
=
site
??
null
;
let
{
ddCode
}
=
this
.
globalConfig
;
let
{
loginName
}
=
this
.
globalConfig
;
let
{
password
}
=
this
.
globalConfig
;
loginName
=
params
.
getParams
(
'loginName'
)
?
params
.
getParams
(
'loginName'
)
:
loginName
;
const
homepage
=
params
.
getParams
(
'homepage'
);
const
generateType
=
params
.
getParams
(
'generateType'
);
const
authCode
=
params
.
getParams
(
'authCode'
);
if
(
homepage
)
{
this
.
globalConfig
.
homepage
=
homepage
;
// this.globalConfig.layout = 'blank';
}
if
(
generateType
)
{
this
.
globalConfig
.
generateType
=
generateType
;
}
self
.
updateConfig
&&
self
.
updateConfig
(
self
.
globalConfig
);
password
=
params
.
getParams
(
'password'
)
?
params
.
getParams
(
'password'
)
:
password
;
const
loginMode
=
Cookies
.
get
(
'loginMode'
)
||
null
;
if
(
loginMode
&&
loginMode
===
'iotWechat'
)
ddCode
=
null
;
// self.qrcodeLogin(self.globalConfig.qrcodeData.code);
if
(
token
)
{
if
(
loginMode
===
'qywx'
)
{
// 微信登录刷新退出登录
Cookies
.
set
(
'token'
,
''
,
{
path
:
'/'
,
});
const
client
=
this
?.
global
?.
client
||
sessionStorage
.
getItem
(
'client'
)
||
null
;
window
.
location
.
href
=
`
${
WX_REDIRECT_URI
}
?client=
${
client
}
`
;
return
;
}
self
.
getToweb
(
token
,
noTokenSite
);
// eslint-disable-next-line no-empty
}
else
if
(
ddCode
&&
loginMode
===
'dingding'
)
{
self
.
ddLoginIn
(
ddCode
);
}
else
if
(
ddCode
&&
loginMode
===
'qywx'
)
{
// 云平台和信息化都有企业微信,得区分(接口定义里面做了判断)
self
.
qywxLoginIn
(
ddCode
);
}
else
if
((
!!
loginName
&&
!!
password
)
||
!!
authCode
)
{
self
.
otherLoginIn
(
loginName
,
password
,
authCode
);
}
else
if
(
self
.
globalConfig
.
qrcodeData
&&
(
self
.
globalConfig
.
qrcodeData
.
state
&&
self
.
globalConfig
.
qrcodeData
.
state
===
this
.
redirect_state
)
&&
self
.
globalConfig
.
qrcodeData
.
code
!==
''
)
{
self
.
qrcodeLogin
(
self
.
globalConfig
.
qrcodeData
.
code
);
}
else
if
(
!!
self
.
globalConfig
.
isSingleLogin
&&
!!
self
.
globalConfig
.
singleLoginCode
)
{
//
}
else
if
(
window
.
globalConfig
.
subtitle
===
'广州节约用水管理系统'
// && this.props.location.pathname.indexOf('noscret') > -1
)
{
self
.
getIpone
().
then
(
v
=>
{
if
(
v
.
code
===
0
)
{
this
.
gzlogin
(
v
.
data
.
userMobile
||
v
.
data
.
loginName
);
}
else
{
this
.
goLogin
();
}
});
}
else
if
(
self
.
goLogin
())
{
return
false
;
}
}
getToweb
(
token
,
noTokenSite
)
{
this
.
globalConfig
.
token
=
token
;
const
self
=
this
;
// eslint-disable-next-line no-undef
const
param
=
{
subOID
:
'subOID'
,
site
:
noTokenSite
??
this
.
getLocalSiteBytoken
(
token
),
'request.preventCache'
:
Date
.
now
(),
ignoreSite
:
true
,
};
if
(
window
.
location
?.
host
===
'panda-water.cn'
)
{
param
.
token
=
this
.
globalConfig
.
token
;
}
else
{
param
.
identity
=
this
.
globalConfig
.
token
;
}
getUserInfo
(
param
)
.
then
(
response
=>
{
if
(
response
&&
response
.
code
===
0
)
{
self
.
isSignIn
=
true
;
self
.
globalConfig
.
userInfo
=
window
?.
globalConfig
?.
transformUserInfo
?.(
response
.
data
)
??
{};
self
.
updateConfig
&&
self
.
updateConfig
(
self
.
globalConfig
);
let
flag
=
true
;
const
loginMode
=
Cookies
.
get
(
'loginMode'
);
if
(
loginMode
===
'qywx'
)
{
flag
=
false
;
}
// flag 为true 时,不会进引导页或集成登录
self
.
getUserInfoAndConfig
(
null
,
flag
);
}
else
{
self
.
logout
&&
self
.
logout
();
if
(
params
.
getParams
(
'token'
))
{
// token免登录失败,回到登录页,防止reload造成死循环
window
.
location
.
href
=
`
${
window
.
location
.
origin
}
`
;
return
false
;
}
if
(
self
.
globalConfig
.
style
===
'ios'
&&
self
.
globalConfig
.
loginTemplate
===
'IOSCloud.html'
)
{
window
.
location
.
href
=
`
${
window
.
location
.
origin
}
`
;
return
false
;
}
window
.
location
.
reload
();
}
})
.
catch
(
error
=>
{
this
.
handleLoginError
();
Logger
.
log
(
'获取用户配置失败'
);
});
}
writeLogs
()
{
...
...
@@ -82,23 +380,23 @@ class Login {
}
});
}
// eslint-disable-next-line prettier/prettier
if
(
!
flag
&&
this
.
isSignIn
&&
this
.
globalConfig
.
userInfo
.
Industries
.
length
&&
this
.
globalConfig
.
userInfo
.
Industries
.
length
>
1
)
{
this
.
createContext
(
this
);
this
.
updateConfig
&&
this
.
updateConfig
(
this
.
globalConfig
);
this
.
history
.
push
(
'/industry'
);
return
false
;
}
// 跳转到集成登录引导页_xule_2023-08-28
if
(
!
flag
&&
this
.
isSignIn
&&
this
.
globalConfig
.
isIntegration
>=
1
&&
this
.
integratedNum
>=
2
)
{
this
.
history
.
push
(
'/industry'
);
return
false
;
if
(
!
flag
&&
this
.
isSignIn
&&
!
window
.
qiankunStarted
)
{
const
item
=
guidePage
.
find
(
g
=>
g
.
value
===
this
.
globalConfig
.
displayMode
);
// 到引导页
if
(
this
.
globalConfig
.
displayMode
!==
'default'
&&
item
)
{
this
.
createContext
(
this
);
this
.
updateConfig
&&
this
.
updateConfig
(
this
.
globalConfig
);
this
.
events
&&
this
.
events
.
emit
(
'loginIndustry'
);
return
false
;
}
// this.globalConfig.isIntegration 为系统配置表里 是否集成登录
// integratedNum 为当前站点配置的集成登录数量,
if
(
this
.
globalConfig
.
isIntegration
>=
1
&&
this
.
integratedNum
>=
2
)
{
this
.
events
&&
this
.
events
.
emit
(
'loginIndustry'
);
return
false
;
}
}
this
.
initGateWay
(
token
,
getIndustry
);
}
...
...
@@ -120,12 +418,11 @@ class Login {
},
time
);
}
initGateWay
(
token
,
getIndustry
,
failCallback
)
{
initGateWay
(
token
,
getIndustry
)
{
const
self
=
this
;
const
gateWayParam
=
{
_site
:
this
?.
globalConfig
?.
userInfo
?.
site
??
''
,
};
appService
.
getWateWayConfig
(
gateWayParam
)
.
then
(
res
=>
{
...
...
@@ -167,7 +464,7 @@ class Login {
})
.
then
(()
=>
{
// eslint-disable-next-line no-use-before-define
this
.
getWebConfig
(
token
,
getIndustry
,
failCallback
);
this
.
getWebConfig
(
token
,
getIndustry
);
})
.
catch
(
err
=>
{
self
.
updateConfig
(
self
.
globalConfig
);
...
...
@@ -180,11 +477,12 @@ class Login {
}
})
.
catch
(
err
=>
{
this
.
events
.
emit
(
'loginError'
,
'该站点无法访问,请联系管理人员'
);
// eslint-disable-next-line no-use-before-define
this
.
getWebConfig
(
token
,
getIndustry
);
});
}
getWebConfig
(
token
,
getIndustry
,
failCallback
)
{
getWebConfig
(
token
,
getIndustry
)
{
const
self
=
this
;
// eslint-disable-next-line no-undef
// 获取网站配置的同时,预先获取到mqtt配置,注册进子应用
...
...
@@ -346,7 +644,9 @@ class Login {
self.globalConfig.uiwidgets = [self.globalConfig.shareWidget];
self.globalConfig.widgets = [];
}
// this.events.removeAllListeners('loginSuccess')
// this.events.removeAllListeners('toggleIndustry')
// window.share.event = this.events;
if (
self.globalConfig.userInfo &&
self.globalConfig.userInfo.site &&
...
...
@@ -407,10 +707,13 @@ class Login {
headerPrimaryColor
:
mainConf
.
headerPrimaryColor
,
};
}
// if (mainConf.productType)
// self.globalConfig.productType = mainConf.productType;
}
this
.
isOpenYanshi
(
self
,
getIndustry
);
});
}
else
{
// loginSuccess
this
.
isOpenYanshi
(
self
,
getIndustry
);
}
});
...
...
@@ -419,13 +722,13 @@ class Login {
return
false
;
}
this
.
handleLoginError
();
this
.
events
.
emit
(
'loginError'
,
'获取网络配置失败'
);
// Logger.log(
'获取网络配置失败');
}
})
.
catch
(
error
=>
{
// Logger.log(error);
this
.
handleLoginError
();
this
.
events
.
emit
(
'loginError'
,
'获取网络配置失败'
);
// Logger.log(
'获取网络配置失败');
});
}
...
...
@@ -444,7 +747,6 @@ class Login {
self
.
getYanshiAuthority
(
self
,
getIndustry
);
})
.
catch
(
error
=>
{
this
.
events
.
emit
(
'loginError'
,
'服务请求异常'
);
this
.
handleLoginError
();
});
}
else
{
...
...
@@ -457,23 +759,23 @@ class Login {
}
finish
(
self
,
getIndustry
)
{
self
.
events
.
emit
(
'onendLoading'
);
setTimeout
(()
=>
{
window
.
finishRender
=
true
;
getIndustry
?
self
.
events
.
emit
(
'toggleIndustry'
)
:
self
.
events
.
emit
(
'loginSuccess'
);
window
.
share
.
event
=
self
.
events
;
self
.
callback
&&
self
.
callback
();
},
100
);
window
.
finishRender
=
true
;
getIndustry
?
self
.
events
.
emit
(
'toggleIndustry'
)
:
self
.
events
.
emit
(
'loginSuccess'
);
window
.
share
.
event
=
self
.
events
;
self
.
callback
&&
self
.
callback
();
}
getYanshiAuthority
(
self
,
getIndustry
)
{
// self.updateConfig && self.updateConfig(self.globalConfig);
if
(
self
.
globalConfig
.
widgets
.
length
===
0
)
{
message
.
error
({
duration
:
3
,
content
:
'当前账号未配置菜单'
,
});
self
.
events
.
emit
(
'loginError'
,
'当前账号未配置菜单'
);
self
.
handleLoginError
();
return
;
}
if
(
self
.
globalConfig
.
isOpenTransitionPage
)
{
appService
.
getTransitionPage
()
...
...
@@ -503,6 +805,7 @@ class Login {
if
(
transitionPage
.
content
.
length
>
0
)
{
self
.
globalConfig
.
transitionPage
=
transitionPage
;
self
.
updateConfig
&&
self
.
updateConfig
(
self
.
globalConfig
);
window
.
finishRender
=
true
;
self
.
events
.
emit
(
'loginHomePage'
);
window
.
share
.
event
=
self
.
events
;
return
self
.
callback
&&
self
.
callback
();
...
...
@@ -591,6 +894,10 @@ class Login {
this
.
globalConfig
.
mapsettings
.
basemaps
=
layer
.
basemaps
;
}
// this.updateConfig && this.updateConfig(Object.assign({}, this.globalConfig, {
// mapsettings: this.globalConfig.mapsettings
// }));
// console.log("mapsettings", this.globalConfig.mapsettings)
return
Promise
.
resolve
(
this
.
globalConfig
.
mapsettings
);
}
...
...
@@ -639,8 +946,254 @@ class Login {
return
s
;
}
// 企业微信登录
loginByWx
()
{
window
.
WwLogin
({
id
:
'wxlogin_container'
,
appid
:
'wxec56ca668e7f9155'
,
agentid
:
'1000083'
,
redirect_uri
:
encodeURIComponent
(
window
.
location
.
href
),
href
:
'https://mis.panda-water.cn/web4/styles/wx.css'
,
});
}
qywxLoginIn
(
code
)
{
// eslint-disable-next-line no-undef
const
self
=
this
;
appService
.
getInfo
({
code
,
cacheBust
:
true
,
})
.
then
(
response
=>
{
if
(
response
&&
response
.
getMe
&&
response
.
getMe
.
length
)
{
const
tk
=
response
.
getMe
[
0
].
Token
;
self
.
globalConfig
.
token
=
tk
;
Cookies
.
set
(
'token'
,
tk
);
let
url
=
window
.
location
.
href
;
// 获取当前页面的url
if
(
url
.
indexOf
(
'&code'
)
!==
-
1
)
{
// 判断是否存在参数
// eslint-disable-next-line no-useless-escape
url
=
url
.
replace
(
/
(\&
code|#
)[^
'"
]
*/
,
'&code=success'
);
// 去除参数
window
.
history
.
pushState
({},
0
,
url
);
}
self
.
isSignIn
=
true
;
self
.
getUserInfoAndConfig
();
}
else
{
self
.
handleLoginError
();
message
.
error
(
'登录失败,用户信息错误'
);
self
.
hasTry
=
true
;
// 已经输错过密码
}
});
}
loginByDD
()
{
const
gotoUrl
=
`https://oapi.dingtalk.com/connect/oauth2/sns_authorize?appid=dingoakne99srqra6hldv2&response_type=code&scope=snsapi_login&state=STATE&redirect_uri=
${
encodeURIComponent
(
window
.
location
.
href
,
)}
`
;
// eslint-disable-next-line no-undef
const
obj
=
DDLogin
({
id
:
'login_container'
,
goto
:
encodeURIComponent
(
gotoUrl
),
style
:
'border:none;background-color:#FFFFFF;'
,
width
:
'365'
,
height
:
'400'
,
});
const
handleMessage
=
function
(
event
)
{
const
{
origin
}
=
event
;
// Logger.log('origin', event.origin);
if
(
origin
===
'https://login.dingtalk.com'
)
{
// 判断是否来自ddLogin扫码事件。
const
loginTmpCode
=
event
.
data
;
const
redirectUrl
=
`https://oapi.dingtalk.com/connect/oauth2/sns_authorize?appid=dingoakne99srqra6hldv2&response_type=code&scope=snsapi_login&state=STATE&redirect_uri=
${
encodeURIComponent
(
window
.
location
.
href
,
)}
&loginTmpCode=
${
loginTmpCode
}
`
;
// 获取到loginTmpCode后就可以在这里构造跳转链接进行跳转了
window
.
location
.
href
=
redirectUrl
;
}
};
if
(
typeof
window
.
addEventListener
!==
'undefined'
)
{
window
.
addEventListener
(
'message'
,
handleMessage
,
false
);
}
else
if
(
typeof
window
.
attachEvent
!==
'undefined'
)
{
window
.
attachEvent
(
'onmessage'
,
handleMessage
);
}
}
ddLoginIn
(
code
)
{
// eslint-disable-next-line no-undef
const
self
=
this
;
appService
.
getOA
({
TmpAuthCode
:
code
,
cacheBust
:
true
,
})
.
then
(
response
=>
{
if
(
response
&&
response
.
getMe
&&
response
.
getMe
.
length
)
{
const
tk
=
response
.
getMe
[
0
].
token
;
self
.
globalConfig
.
token
=
tk
;
Cookies
.
set
(
'token'
,
tk
);
let
url
=
window
.
location
.
href
;
// 获取当前页面的url
if
(
url
.
indexOf
(
'&code'
)
!==
-
1
)
{
// 判断是否存在参数
// eslint-disable-next-line no-useless-escape
url
=
url
.
replace
(
/
(\&
code|#
)[^
'"
]
*/
,
''
);
// 去除参数
window
.
history
.
pushState
({},
0
,
url
);
}
self
.
isSignIn
=
true
;
self
.
getUserInfoAndConfig
();
}
else
{
self
.
handleLoginError
();
// msgUtils.fault("登录失败,请检查用户名或密码");
// msgUtils.fault("登录失败," + error.message);
self
.
hasTry
=
true
;
// 已经输错过密码
}
});
}
qrcodeLogin
(
code
)
{
const
self
=
this
;
// eslint-disable-next-line no-undef
appService
.
generatetokenByqrcode
({
f
:
'json'
,
expiration
:
self
.
globalConfig
.
expiration
||
43200000
,
referer
:
self
.
globalConfig
.
client
,
skipMenuTest
:
1
,
qrcode
:
code
,
cacheBust
:
true
,
})
.
then
(
response
=>
{
if
(
response
.
token
)
{
self
.
globalConfig
.
token
=
response
.
token
;
Cookies
.
set
(
'token'
,
response
.
token
);
self
.
updateConfig
&&
self
.
updateConfig
(
this
.
globalConfig
);
self
.
isSignIn
=
true
;
self
.
getUserInfoAndConfig
();
// Logger.log('===getUserInfoAndConfig===');
}
else
{
message
.
error
(
`登录失败,
${
response
.
message
}
`
);
self
.
events
.
emit
(
'loginError'
,
response
);
setTimeout
(()
=>
{
self
.
handleLoginError
(()
=>
{
window
.
location
.
href
=
WX_REDIRECT_URI
;
});
},
600
);
}
})
.
catch
(
error
=>
{
// eslint-disable-next-line no-undef
message
.
error
(
`登录失败,
${
error
.
message
}
`
);
// eslint-disable-next-line no-undef
self
.
events
.
emit
(
'loginError'
,
error
);
setTimeout
(()
=>
{
self
.
handleLoginError
(()
=>
{
window
.
location
.
href
=
WX_REDIRECT_URI
;
});
},
600
);
});
}
otherLoginIn
(
usr
,
pwd
,
code
)
{
// const uesrName = decode(usr.substring(0, usr.length - 3));
// const password = decode(pwd.substring(0, pwd.length - 3));
const
self
=
this
;
// eslint-disable-next-line no-undef
appService
.
generateToken
({
f
:
'json'
,
expiration
:
this
.
globalConfig
.
expiration
,
// token过期时间(单位:秒)
client
:
'referer'
,
username
:
usr
,
// password: params.getParams('generateType') ? pwd : sha1(pwd).toUpperCase(),
password
:
params
.
getParams
(
'generateType'
)
?
pwd
:
encipher
(
pwd
,
this
.
globalConfig
.
encrypt
).
toUpperCase
(),
referer
:
this
.
globalConfig
.
client
,
skipMenuTest
:
1
,
generateType
:
params
.
getParams
(
'generateType'
)
||
''
,
authCode
:
code
,
})
.
then
(
response
=>
{
// self.globalConfig.layout = 'blank';
if
(
response
&&
response
.
token
)
{
const
tk
=
response
.
token
;
self
.
globalConfig
.
token
=
tk
;
// eslint-disable-next-line no-undef,no-debugger
const
param
=
{
subOID
:
'subOID'
,
site
:
this
.
getLocalSiteBytoken
(
tk
),
ignoreSite
:
true
,
};
if
(
window
.
location
?.
host
===
'panda-water.cn'
)
{
param
.
token
=
tk
;
}
else
{
param
.
identity
=
tk
;
}
getUserInfo
(
param
,
// eslint-disable-next-line no-shadow
)
// eslint-disable-next-line no-shadow
.
then
(
response
=>
{
try
{
if
(
response
&&
response
.
code
===
0
)
{
self
.
globalConfig
.
userInfo
=
window
?.
globalConfig
?.
transformUserInfo
?.(
response
.
data
)
??
{};
const
date
=
new
Date
();
date
.
setTime
(
date
.
getTime
()
+
24
*
60
*
60
*
1000
);
// date = date.toGMTString();
const
encodeSite
=
encode
(
encodeURIComponent
(
response
.
site
));
Cookies
.
set
(
'site'
,
encodeSite
,
{
expires
:
date
,
path
:
'/'
,
});
Cookies
.
set
(
'token'
,
tk
,
{
expires
:
date
,
path
:
'/'
,
});
// self.globalConfig.Industry = industry;
self
.
isSignIn
=
true
;
self
.
updateConfig
&&
self
.
updateConfig
(
self
.
globalConfig
);
const
loginSite
=
{};
loginSite
[
tk
]
=
response
.
site
;
// Cookie.set()
localStorage
.
setItem
(
'loginSite'
,
JSON
.
stringify
(
loginSite
));
self
.
writeLogs
();
self
.
getIndustry
(
false
,
tk
);
}
else
{
message
.
error
(
response
.
errMsg
);
if
(
self
.
goLogin
())
{
return
false
;
}
// self.handleLoginError(failCallback);
}
self
.
updateConfig
&&
self
.
updateConfig
(
self
.
globalConfig
);
}
catch
(
error
)
{
message
.
error
(
'登录失败'
);
if
(
self
.
goLogin
())
{
return
false
;
}
// self.handleLoginError(failCallback);
}
})
.
catch
(
error
=>
{
this
.
handleLoginError
();
Logger
.
log
(
'获取用户配置失败'
);
});
}
else
{
self
.
handleLoginError
();
message
.
error
(
'登录失败'
);
this
.
hasTry
=
true
;
}
})
.
catch
(
error
=>
{
self
.
handleLoginError
();
message
.
error
(
'登录失败'
);
this
.
hasTry
=
true
;
});
}
getUserInfoAndConfig
(
failCallback
,
flag
,
industry
,
toSite
)
{
this
.
updateConfig
(
window
.
globalConfig
);
const
{
token
:
tk
}
=
this
.
globalConfig
;
const
token
=
tk
||
Cookies
.
get
(
'token'
);
const
site
=
Cookies
.
get
(
'site'
);
...
...
@@ -696,6 +1249,9 @@ class Login {
site
:
_industrySite
||
this
.
getLocalSiteBytoken
(
token
),
ignoreSite
:
true
,
'request.preventCache'
:
Date
.
now
(),
// 获取用户信息添加 client参数,集成登录数量integrated与client相关
client
:
self
?.
global
?.
client
||
sessionStorage
.
getItem
(
'client'
),
// self.globalConfig.userInfo.site ? self.globalConfig.userInfo.site: this.getLocalSiteBytoken(token),
// industrySite ? _industrySite : this.getLocalSiteBytoken(token),
};
...
...
@@ -732,14 +1288,12 @@ class Login {
return
false
;
}
self
.
handleLoginError
(
failCallback
);
this
.
events
.
emit
(
'loginError'
,
'获取账号信息异常'
);
}
self
.
updateConfig
&&
self
.
updateConfig
(
self
.
globalConfig
);
}
catch
(
error
)
{
if
(
self
.
goLogin
())
{
return
false
;
}
self
.
events
.
emit
(
'loginError'
,
'获取账号信息异常'
);
self
.
handleLoginError
(
failCallback
);
}
})
...
...
@@ -747,7 +1301,6 @@ class Login {
if
(
self
.
goLogin
())
{
return
false
;
}
self
.
events
.
emit
(
'loginError'
,
'获取账号信息异常'
);
self
.
handleLoginError
(
failCallback
);
});
}
else
{
...
...
@@ -762,6 +1315,245 @@ class Login {
}
}
}
transformLoginHander
(
response
,
isRememberPWD
,
pwd
)
{
const
self
=
this
;
const
token
=
response
&&
(
response
.
token
?
response
.
token
:
response
.
access_token
!==
null
&&
response
.
user_token
!==
null
?
response
.
user_token
:
''
);
if
(
token
)
{
const
exp
=
86400000
;
self
.
globalConfig
.
token
=
token
;
if
(
response
.
access_token
!==
''
)
{
self
.
globalConfig
.
access_token
=
response
.
access_token
;
self
.
updateConfig
&&
self
.
updateConfig
(
self
.
globalConfig
);
let
rules
=
localStorage
.
getItem
(
'password_pwdRegex'
)
?
localStorage
.
getItem
(
'password_pwdRegex'
)
:
''
;
let
reg
;
try
{
reg
=
new
RegExp
(
rules
);
}
catch
(
error
)
{
rules
=
''
;
reg
=
new
RegExp
(
rules
);
}
let
check
=
false
;
if
(
rules
!==
''
&&
pwd
)
check
=
!
reg
.
test
(
pwd
);
localStorage
.
setItem
(
'access_token'
,
response
.
access_token
?
response
.
access_token
:
''
);
if
(
check
)
{
localStorage
.
setItem
(
'password_token'
,
response
.
access_token
?
response
.
access_token
:
''
);
}
Cookies
.
set
(
'client'
,
self
.
globalConfig
.
client
,
{
expires
:
exp
/
(
24
*
60
*
60
*
1000
),
path
:
'/'
,
});
}
if
(
isRememberPWD
)
{
Cookies
.
set
(
'client'
,
self
.
globalConfig
.
client
,
{
expires
:
exp
/
(
24
*
60
*
60
*
1000
),
path
:
'/'
,
});
Cookies
.
set
(
'token'
,
token
,
{
expires
:
exp
/
(
24
*
60
*
60
*
1000
),
path
:
'/'
,
});
}
debugger
sessionStorage
.
setItem
(
'client'
,
self
.
globalConfig
.
client
);
self
.
isSignIn
=
true
;
self
.
updateConfig
&&
self
.
updateConfig
(
self
.
globalConfig
);
self
.
getUserInfoAndConfig
();
}
else
{
self
.
hasTry
=
true
;
self
.
events
.
emit
(
'loginError'
,
response
);
message
.
error
(
response
.
error
.
message
);
self
.
callback
&&
self
.
callback
(
false
);
}
}
login
(
usr
,
pwd
,
userPhone
,
isRememberPWD
,
mode
=
SERVICE_APP_LOGIN_MODE
.
password
)
{
this
.
globalConfig
=
getGlobalConfig
();
const
self
=
this
;
if
(
window
.
globalConfig
&&
window
.
globalConfig
.
hasGateWay
)
{
usr
=
userPhone
?
userPhone
:
usr
;
appService
.
authorizationToken
({
loginName
:
usr
,
// password: pwd ? (params.getParams('generateType') ? pwd : sha1(pwd).toUpperCase()) : '',
password
:
pwd
?
params
.
getParams
(
'generateType'
)
?
pwd
:
encipher
(
pwd
,
this
.
globalConfig
.
encrypt
).
toUpperCase
()
:
''
,
type
:
mode
,
generateType
:
params
.
getParams
(
'generateType'
)
||
''
,
})
.
then
(
res
=>
{
if
(
res
.
code
===
0
)
{
const
data
=
res
.
data
;
self
.
updateConfig
&&
self
.
updateConfig
(
Object
.
assign
({},
self
.
globalConfig
,
{
access_token
:
data
.
access_token
,
token
:
data
.
user_token
,
}),
);
if
(
res
.
msg
===
'密码过期'
)
{
localStorage
.
setItem
(
'password_needChange'
,
true
);
}
else
{
localStorage
.
removeItem
(
'password_needChange'
);
}
return
data
;
}
else
{
message
.
error
({
duration
:
3
,
content
:
`授权失败:
${
res
.
msg
}
`
,
});
self
.
hasTry
=
true
;
self
.
handleLoginError
();
self
.
events
.
emit
(
'loginError'
,
res
.
msg
);
return
Promise
.
reject
(
res
);
}
})
.
then
(
res
=>
{
self
.
transformLoginHander
(
res
,
isRememberPWD
,
pwd
);
});
}
else
{
appService
.
generateToken
({
f
:
'json'
,
expiration
:
this
.
globalConfig
.
expiration
,
// token过期时间(单位:秒)
client
:
'referer'
,
username
:
usr
,
// password: pwd ? (params.getParams('generateType') ? pwd : sha1(pwd).toUpperCase()) : '',
password
:
pwd
?
params
.
getParams
(
'generateType'
)
?
pwd
:
encipher
(
pwd
,
this
.
globalConfig
.
encrypt
).
toUpperCase
()
:
''
,
referer
:
this
.
globalConfig
.
client
,
skipMenuTest
:
1
,
userPhone
,
'request.preventCache'
:
Date
.
now
(),
ignoreSite
:
true
,
loginName
:
usr
,
generateType
:
params
.
getParams
(
'generateType'
)
||
''
,
})
.
then
(
response
=>
{
if
(
response
?.
msg
===
'密码过期'
)
{
localStorage
.
setItem
(
'password_needChange'
,
true
);
}
else
{
localStorage
.
removeItem
(
'password_needChange'
);
}
self
.
transformLoginHander
(
response
,
isRememberPWD
,
pwd
);
})
.
catch
(
error
=>
{
self
.
hasTry
=
true
;
self
.
handleLoginError
();
self
.
events
.
emit
(
'loginError'
,
error
.
message
);
message
.
error
(
'登录服务异常'
);
});
}
}
loginHandler
(
user
,
pwd
,
userPhone
,
isRememberPWD
,
ref
)
{
const
self
=
this
;
if
(
user
&&
pwd
)
{
if
(
self
.
loginFailed
&&
self
.
captchaObj
)
{
self
.
captchaObj
.
verify
();
}
else
if
(
self
.
hasTry
)
{
self
.
slideVerify
(
ref
,
()
=>
{
self
.
login
(
user
,
pwd
,
userPhone
,
isRememberPWD
);
});
}
else
{
self
.
login
(
user
,
pwd
,
userPhone
,
isRememberPWD
);
}
}
}
loginHandlerJiangXi
(
user
,
pwd
,
userPhone
,
isRememberPWD
,
ref
)
{
const
self
=
this
;
if
(
user
&&
pwd
)
{
if
(
self
.
loginFailed
&&
self
.
captchaObj
)
{
self
.
captchaObj
.
verify
();
}
else
if
(
self
.
hasTry
)
{
self
.
slideVerify
(
ref
,
()
=>
{
self
.
loginJiang
(
user
,
pwd
,
userPhone
,
isRememberPWD
);
});
}
else
{
self
.
loginJiang
(
user
,
pwd
,
userPhone
,
isRememberPWD
);
}
}
}
loginJiang
(
usr
,
pwd
,
userPhone
,
isRememberPWD
,
mode
=
SERVICE_APP_LOGIN_MODE
.
password
)
{
this
.
globalConfig
=
getGlobalConfig
();
const
self
=
this
;
appService
.
getJiangXiManage
({
username
:
usr
,
password
:
btoa
(
pwd
),
IsGateWay
:
window
.
globalConfig
.
hasGateWay
,
'request.preventCache'
:
Date
.
now
(),
})
.
then
(
response
=>
{
if
(
response
.
code
===
0
)
{
if
(
window
.
globalConfig
?.
hasGateWay
)
{
const
data
=
response
.
data
;
self
.
updateConfig
&&
self
.
updateConfig
(
Object
.
assign
({},
self
.
globalConfig
,
{
access_token
:
data
.
access_token
,
token
:
data
.
user_token
,
}),
);
self
.
transformLoginHander
(
response
.
data
,
isRememberPWD
,
pwd
);
}
else
{
self
.
transformLoginHander
({
token
:
response
.
data
.
user_token
},
isRememberPWD
,
pwd
);
}
}
else
{
self
.
hasTry
=
true
;
self
.
handleLoginError
();
self
.
events
.
emit
(
'loginError'
,
response
.
msg
);
message
.
error
(
response
.
msg
);
}
})
.
catch
(
error
=>
{
self
.
hasTry
=
true
;
self
.
handleLoginError
();
self
.
events
.
emit
(
'loginError'
,
error
.
message
);
message
.
error
(
'登录服务异常'
);
});
}
phoneLoginFormHandler
(
userPhone
,
captcha
)
{
this
.
login
(
''
,
''
,
userPhone
,
''
,
SERVICE_APP_LOGIN_MODE
.
phone
);
}
slideVerify
(
ref
,
onSuccess
,
onFail
,
onRefresh
)
{
this
.
events
.
emit
(
'loginVisible'
,
true
);
if
(
this
.
renderVerify
)
{
this
.
renderVerify
.
destroy
();
}
this
.
renderVerify
=
new
SlideVerify
();
this
.
renderVerify
.
render
({
container
:
ref
.
current
,
onSuccess
:
()
=>
{
onSuccess
&&
onSuccess
();
},
});
}
getLocalSites
()
{
const
localSite
=
localStorage
.
getItem
(
'loginSite'
);
let
value
=
{};
if
(
localSite
)
{
value
=
JSON
.
parse
(
localSite
);
}
return
value
;
}
}
export
default
Login
;
This diff is collapsed.
Click to expand it.
src/pages/bootpage/template/project/mile/data.json
View file @
7d920eea
...
...
@@ -33,28 +33,28 @@
"english"
:
"Monitoring Center"
,
"label"
:
""
,
"url"
:
""
,
"client"
:
""
"client"
:
"
scada
"
},
{
"name"
:
"控漏管控"
,
"english"
:
"Leakage control"
,
"label"
:
""
,
"url"
:
""
,
"client"
:
""
"client"
:
"
DMA
"
},
{
"name"
:
"业务中心"
,
"english"
:
"Business center"
,
"label"
:
""
,
"url"
:
""
,
"client"
:
""
"client"
:
"
business
"
},
{
"name"
:
"工单中心"
,
"english"
:
"Ticket center"
,
"label"
:
""
,
"url"
:
""
,
"client"
:
""
"client"
:
"
work
"
}
],
"标题"
:
"弥勒自来水公司信息化平台"
,
...
...
This diff is collapsed.
Click to expand it.
src/pages/bootpage/template/project/mile/index.js
View file @
7d920eea
...
...
@@ -36,15 +36,13 @@ const boxHeight = 930;
const
IntegrationMile
=
props
=>
{
const
[
ref
,
isFullscreen
,
handleFullScreen
,
handleExitFullScreen
]
=
useFullScreen
(
false
);
const
history
=
useHistory
();
const
globalClient
=
window
?.
globalConfig
?.
client
||
'city'
;
let
integrationClient
=
window
?.
globalConfig
?.
client
||
'city'
;
// 集成登录client
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
();
...
...
@@ -60,6 +58,8 @@ const IntegrationMile = props => {
scale
:
1
,
boxHeight
:
930
,
});
const
[
integrationData
,
setIntegrationData
]
=
useState
({});
const
[
linkUrl
,
setLinkUrl
]
=
useState
(
''
);
const
[
jumpLoading
,
setJumpLoading
]
=
useState
(
false
);
const
[
progressValue2
,
setProgressValue2
]
=
useState
(
0
);
...
...
@@ -103,6 +103,35 @@ const IntegrationMile = props => {
setConfigData
(
data
);
}
});
appService
.
GetIntegratedloginSetting
({
ignoreSite
:
true
,
})
.
then
(
res
=>
{
const
{
code
,
data
}
=
res
;
if
(
data
.
client
)
{
integrationClient
=
data
.
client
;
localStorage
.
setItem
(
'integrationClient'
,
data
.
client
);
if
(
integrationClient
)
{
if
(
!
data
.
client
)
return
;
appService
.
GetIntegrationConfig
({
type
:
'集成登录'
,
userId
:
window
.
globalConfig
.
userInfo
?.
OID
??
null
,
isEnable
:
true
,
client
:
data
.
client
||
''
,
})
.
then
(
res1
=>
{
const
list
=
res1
.
data
||
[];
const
obj
=
{};
list
.
forEach
(
d
=>
{
obj
[
d
.
name
]
=
true
;
});
setIntegrationData
(
obj
);
});
}
}
});
};
const
onResize
=
()
=>
{
if
(
ref
?.
current
)
{
...
...
@@ -193,6 +222,10 @@ const IntegrationMile = props => {
},
time
*
1000
);
};
const
onLink
=
(
item
,
loginA
)
=>
{
if
(
!
integrationData
[
item
.
name
])
{
message
.
warning
(
'当前账号没有权限,请联系管理人员配置'
);
return
;
}
const
{
url
,
client
}
=
item
;
if
(
!
url
&&
!
client
)
return
message
.
warning
(
'未配置功能路径'
);
if
(
url
)
{
...
...
@@ -222,7 +255,6 @@ const IntegrationMile = props => {
sessionStorage.setItem(currentProductNew, 0);
setMClient(client);
const config = props.global;
window.qiankunStarted = false;
if (client) {
config.client = client;
...
...
@@ -231,7 +263,7 @@ const IntegrationMile = props => {
const token = props.global?.token || Cookies.get('token');
if (!token) {
history.push(`
/
user
/
login
?
client
=
$
{
global
Client
}
`, { reload: true });
history.push(`
/
user
/
login
?
client
=
$
{
integration
Client
}
`, { reload: true });
clear();
props.logout();
} else {
...
...
@@ -280,6 +312,7 @@ const IntegrationMile = props => {
}
}
};
useEffect(() => {
getData();
window.addEventListener('resize', debounce(onResize, 300));
...
...
@@ -299,7 +332,7 @@ const IntegrationMile = props => {
timer4.current = null;
}
timer4.current = setTimeout(() => {
if ($('.CarouselRipples')) {
if ($('.CarouselRipples')
?.ripples
) {
$('.CarouselRipples').ripples({
resolution: 800,
dropRadius: 20, // px
...
...
@@ -400,17 +433,17 @@ const IntegrationMile = props => {
: null}
</div>
</div>
{
linkUrl &&
showBackBtn ? (
{showBackBtn ? (
<div
className={classNames(styles.iframeExit, 'animate__animated', 'animate__fadeIn')}
onClick={() =>
setLinkUrl(''
)}
onClick={() =>
props.logout(
)}
>
<div className={styles.iframeBackLeft}>
<img src={arrowLeftImg} alt="返回" />
</div>
<div className={styles.iframeExitIcon}>
<img src={backImg} alt="返回" />
返回
退出
</div>
</div>
) : null}
...
...
@@ -432,6 +465,9 @@ const mapDispatchToProps = dispatch => ({
updateCurrentIndex(index) {
dispatch(actionCreators.updateCurrentIndex(index));
},
logout() {
dispatch(actionCreators.logout());
},
});
export default connect(
mapStateToProps,
...
...
This diff is collapsed.
Click to expand it.
src/pages/bootpage/template/project/mile/index.less
View file @
7d920eea
...
...
@@ -8,12 +8,12 @@
.iframeExitIcon {
position: absolute;
top: 0;
lef
t: -45px;
righ
t: -45px;
display: flex;
height: 44px;
width: 44px;
background: rgba(28, 94, 180, 0.95);
border-radius:
0 7px 7px 0
;
border-radius:
7px 0px 0px 7px
;
flex-direction: column;
justify-content: space-around;
align-items: center;
...
...
@@ -30,11 +30,11 @@
.iframeExit:hover {
.iframeExitIcon {
lef
t: 0;
righ
t: 0;
}
.iframeBackLeft {
lef
t: -15px;
righ
t: -15px;
}
}
...
...
@@ -42,11 +42,11 @@
.iframeBackLeft {
position: absolute;
top: 0;
lef
t: 0;
righ
t: 0;
width: 14px;
height: 44px;
background: rgba(28, 94, 180, 0.95);
border-radius:
0 7px 7px 0
;
border-radius:
7px 0 0 7px
;
display: flex;
align-items: center;
justify-content: center;
...
...
@@ -62,8 +62,8 @@
width: 44px;
height: 44px;
position: absolute;
top:
4
px;
lef
t: 0;
top:
50
px;
righ
t: 0;
color: #FFF;
cursor: pointer;
user-select: none;
...
...
This diff is collapsed.
Click to expand it.
src/pages/integratedLogin/index.js
View file @
7d920eea
...
...
@@ -141,7 +141,7 @@ const IntegratedLogin = props => {
<
EditTwoTone
onClick
=
{()
=>
edit
(
record
)}
style
=
{{
fontSize
:
'16px'
}}
/
>
<
/Tooltip
>
{
!
record
.
isEnable
?
(
<
Tooltip
title
=
"
停
用"
>
<
Tooltip
title
=
"
点击启
用"
>
<
Popconfirm
placement
=
"left"
title
=
{
...
...
@@ -158,7 +158,7 @@ const IntegratedLogin = props => {
<
/Popconfirm
>
<
/Tooltip
>
)
:
(
<
Tooltip
title
=
"
启
用"
>
<
Tooltip
title
=
"
点击停
用"
>
<
Popconfirm
placement
=
"left"
title
=
{
...
...
This diff is collapsed.
Click to expand it.
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