Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Z
zhichan
Overview
Overview
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
蒋勇
zhichan
Commits
68980b8d
Commit
68980b8d
authored
Feb 05, 2020
by
蒋勇
Browse files
Options
Browse Files
Download
Plain Diff
d
parents
a4642df5
5315b103
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
197 additions
and
885 deletions
+197
-885
bigdata/app/base/api/api.base.js
+3
-2
bigdata/app/base/api/impl/auth/accessAuth.js
+92
-39
bigdata/app/base/api/impl/meta/baseComp.js
+10
-3
bigdata/app/base/db/cache.base.js
+14
-2
bigdata/app/base/db/cache/vcodeCache.js
+18
-12
bigdata/app/base/system.js
+3
-0
bigdata/app/base/utils/businessManager/authUtils.js
+3
-2
bigdata/app/base/utils/execClient.js
+1
-1
bigdata/app/base/utils/smsClient.js
+39
-14
bigdata/app/config/localsettings.js
+5
-0
bigdata/app/front/vues/pages/comorgs/comorgs.js
+8
-0
bigdata/app/front/vues/pages/companyinfo/companyinfo.js
+1
-1
igirl-web/app/front/entry/main.ejs
+0
-809
No files found.
bigdata/app/base/api/api.base.js
View file @
68980b8d
...
...
@@ -26,7 +26,8 @@ class APIBase extends DocBase {
"auth.getAccessKey"
,
"meta.getBaseComp"
,
"meta.doc"
,
"meta.clearAllCache"
"meta.clearAllCache"
,
"meta.upline"
,
];
var
x
=
lst
.
indexOf
(
fullname
);
return
x
>=
0
;
...
...
@@ -55,7 +56,7 @@ class APIBase extends DocBase {
//检查访问token
var
isPassResult
=
await
this
.
checkAcck
(
gname
,
methodname
,
pobj
,
query
,
req
);
if
(
!
isPassResult
.
ispass
)
{
var
tmpResult
=
system
.
getResultFail
(
system
.
tokenFail
,
"访问token失效,请重新获取"
);
var
tmpResult
=
system
.
getResultFail
(
system
.
tokenFail
,
"访问token失效,请重新获取
!
"
);
tmpResult
.
requestId
=
""
;
return
tmpResult
;
}
...
...
bigdata/app/base/api/impl/auth/accessAuth.js
View file @
68980b8d
...
...
@@ -8,14 +8,50 @@ class AccessAuthAPI extends APIBase {
this
.
apitradeSvr
=
system
.
getObject
(
"service.common.apitradeSve"
);
this
.
authUtils
=
system
.
getObject
(
"util.businessManager.authUtils"
);
this
.
userSve
=
system
.
getObject
(
"service.auth.userSve"
);
this
.
vCodeExTime
=
120
;
//验证码缓存秒数
}
/*查询注册用户的信息sys*/
async
queryRegUser
(
pobj
,
query
,
req
){
var
appid
=
req
.
app
.
id
;
var
userList
=
await
this
.
userSve
.
queryUsersByAppId
(
appid
);
async
queryRegUser
(
pobj
,
query
,
req
)
{
var
appid
=
req
.
app
.
id
;
var
userList
=
await
this
.
userSve
.
queryUsersByAppId
(
appid
);
return
system
.
getResult
(
userList
);
}
/**
* 发送短信---用于有自己的key 和 密钥
* @param {*} pobj {mobile为要发送的手机号,tmplCode为发送短信编码,需在阿里开通,signName为短信头描述信息}
* @param {*} query
* @param {*} req
*/
async
fetchOtherVCode
(
pobj
,
query
,
req
)
{
var
appkey
=
req
.
app
.
appkey
;
if
(
!
pobj
.
mobile
)
{
return
system
.
getResult
(
null
,
"电话号码不能为空."
);
}
if
(
!
pobj
.
tmplCode
)
{
return
system
.
getResult
(
null
,
"模版编码不能为空."
);
}
if
(
!
pobj
.
signName
)
{
return
system
.
getResult
(
null
,
"短信签名不能为空."
);
}
if
(
pobj
.
tmplCode
&&
pobj
.
tmplCode
.
indexOf
(
"SMS_"
)
<
0
)
{
return
system
.
getResult
(
null
,
"模版编码有误"
);
}
if
(
!
pobj
.
accessKeyId
)
{
return
system
.
getResult
(
null
,
"模版accessKeyId不能为空."
);
}
if
(
!
pobj
.
accessKeySecret
)
{
return
system
.
getResult
(
null
,
"模版accessKeySecret不能为空."
);
}
var
cacheKeyStr
=
appkey
+
"_"
+
pobj
.
mobile
;
var
tmpReslut
=
await
this
.
cacheManager
[
"VCodeCache"
].
getCache
(
cacheKeyStr
);
if
(
tmpReslut
)
{
return
system
.
getResultFail
(
system
.
redoFail
,
"操作过于频繁,请勿重复获取"
,
system
.
redoFail
);
}
pobj
.
reqType
=
"otherVcode"
;
var
vcodeResult
=
await
this
.
cacheManager
[
"VCodeCache"
].
cache
(
cacheKeyStr
,
pobj
,
this
.
vCodeExTime
,
null
);
return
system
.
getResult
(
vcodeResult
);
}
/**
* 发送短信
* @param {*} pobj {mobile为要发送的手机号,tmplCode为发送短信编码,需在阿里开通,signName为短信头描述信息}
* @param {*} query
...
...
@@ -43,7 +79,13 @@ class AccessAuthAPI extends APIBase {
if
(
tmplCode
&&
tmplCode
.
indexOf
(
"SMS_"
)
<
0
)
{
return
system
.
getResult
(
null
,
"模版编码有误"
);
}
var
vcodeResult
=
await
this
.
cacheManager
[
"VCodeCache"
].
cache
(
appkey
+
"_"
+
mobile
,
tmplCode
,
120
,
signName
);
var
cacheKeyStr
=
appkey
+
"_"
+
pobj
.
mobile
;
var
tmpReslut
=
await
this
.
cacheManager
[
"VCodeCache"
].
getCache
(
cacheKeyStr
);
if
(
tmpReslut
)
{
return
system
.
getResultFail
(
system
.
redoFail
,
"操作过于频繁,请勿重复获取"
,
system
.
redoFail
);
}
pobj
.
reqType
=
"defaultOtherVcode"
;
var
vcodeResult
=
await
this
.
cacheManager
[
"VCodeCache"
].
cache
(
cacheKeyStr
,
pobj
,
this
.
vCodeExTime
,
null
);
return
system
.
getResult
(
vcodeResult
);
}
/**
...
...
@@ -58,13 +100,19 @@ class AccessAuthAPI extends APIBase {
if
(
!
mobile
)
{
return
system
.
getResult
(
null
,
"电话号码不能为空."
);
}
var
vcodeResult
=
this
.
cacheManager
[
"VCodeCache"
].
cache
(
appkey
+
"_"
+
mobile
,
null
,
60
);
var
cacheKeyStr
=
appkey
+
"_"
+
pobj
.
mobile
;
var
tmpReslut
=
await
this
.
cacheManager
[
"VCodeCache"
].
getCache
(
cacheKeyStr
);
if
(
tmpReslut
)
{
return
system
.
getResultFail
(
system
.
redoFail
,
"操作过于频繁,请勿重复获取"
,
system
.
redoFail
);
}
pobj
.
reqType
=
"defaultVcode"
;
var
vcodeResult
=
this
.
cacheManager
[
"VCodeCache"
].
cache
(
cacheKeyStr
,
pobj
,
this
.
vCodeExTime
,
null
);
return
system
.
getResult
(
vcodeResult
);
}
async
authAccessKey
(
pobj
,
query
,
req
)
{
var
acckapp
=
await
this
.
cacheManager
[
"ApiAccessKeyCache"
].
cache
(
pobj
.
checkAccessKey
);
if
(
!
acckapp
)
{
return
system
.
getResultFail
(
system
.
tokenFail
,
"访问token失效,请重新获取"
);
return
system
.
getResultFail
(
system
.
tokenFail
,
"访问token失效,请重新获取
!!
"
);
}
return
system
.
getResultSuccess
({
isaccess
:
true
,
app
:
acckapp
});
}
...
...
@@ -178,7 +226,7 @@ class AccessAuthAPI extends APIBase {
}
var
ruser
=
await
this
.
userSve
.
getUserByUserMobile
(
param
);
if
(
!
ruser
)
{
return
system
.
getResult
(
null
,
"查无此用户"
);
return
system
.
getResult
(
null
,
"查无此用户"
);
}
var
opencode
=
super
.
getUUID
();
var
authUrl
=
req
.
app
.
authUrl
+
"?opencode="
+
opencode
;
...
...
@@ -187,8 +235,8 @@ class AccessAuthAPI extends APIBase {
}
//根据openid查询是否与用户绑定
async
checkWxBind
(
p
,
q
,
req
)
{
var
openid
=
p
.
openid
;
async
checkWxBind
(
p
,
q
,
req
)
{
var
openid
=
p
.
openid
;
if
(
!
openid
)
{
return
system
.
getResult
(
null
,
"openid不能为空"
);
}
...
...
@@ -197,14 +245,14 @@ class AccessAuthAPI extends APIBase {
openid
:
openid
,
}
var
ruser
=
await
this
.
userSve
.
checkWxBind
(
param
);
if
(
!
ruser
)
{
if
(
!
ruser
)
{
return
system
.
getResult
(
null
,
"用户未绑定微信"
);
}
return
system
.
getResult
(
ruser
);
}
//根据openid登录
async
loginByOpenId
(
p
,
q
,
req
)
{
var
openid
=
p
.
openid
;
async
loginByOpenId
(
p
,
q
,
req
)
{
var
openid
=
p
.
openid
;
if
(
!
openid
)
{
return
system
.
getResult
(
null
,
"openid不能为空"
);
}
...
...
@@ -213,7 +261,7 @@ class AccessAuthAPI extends APIBase {
openid
:
openid
,
}
var
ruser
=
await
this
.
userSve
.
checkWxBind
(
param
);
if
(
!
ruser
)
{
if
(
!
ruser
)
{
return
system
.
getResult
(
null
,
"用户未绑定微信"
);
}
var
opencode
=
super
.
getUUID
();
...
...
@@ -233,24 +281,25 @@ class AccessAuthAPI extends APIBase {
if
(
!
pobj
.
openid
)
{
return
system
.
getResult
(
null
,
"openid不能未空."
);
}
var
cacheCode
=
await
this
.
cacheManager
[
"VCodeCache"
].
cache
(
appkey
+
"_"
+
pobj
.
mobile
,
null
);
if
(
pobj
.
vcode
!=
cacheCode
.
vcode
)
{
return
system
.
getResult
(
system
.
verifyVCodeFail
,
"验证码校验不成功,请重新获取验证码验证."
);
var
cacheKeyStr
=
appkey
+
"_"
+
pobj
.
mobile
;
var
cacheCode
=
await
this
.
cacheManager
[
"VCodeCache"
].
getCache
(
cacheKeyStr
);
if
(
!
cacheCode
||
pobj
.
vcode
!=
cacheCode
.
vcode
)
{
return
system
.
getResultFail
(
system
.
verifyVCodeFail
,
"验证码校验不成功,请重新获取验证码验证."
,
system
.
verifyVCodeFail
);
}
var
param
=
{
app_id
:
req
.
app
.
id
,
mobile
:
pobj
.
mobile
,
openid
:
pobj
.
openid
openid
:
pobj
.
openid
}
var
ruser
=
await
this
.
userSve
.
wxBind
(
param
);
if
(
!
ruser
)
{
param
=
{
app_id
:
req
.
app
.
id
,
userName
:
pobj
.
mobile
,
nickName
:
pobj
.
mobile
,
nickName
:
pobj
.
mobile
,
mobile
:
pobj
.
mobile
,
password
:
pobj
.
mobile
,
wxopenid
:
pobj
.
openid
wxopenid
:
pobj
.
openid
}
ruser
=
await
this
.
userSve
.
register
(
param
);
}
...
...
@@ -272,17 +321,17 @@ class AccessAuthAPI extends APIBase {
var
param
=
{
app_id
:
req
.
app
.
id
,
mobile
:
pobj
.
mobile
,
openid
:
pobj
.
openid
openid
:
pobj
.
openid
}
var
ruser
=
await
this
.
userSve
.
wxBind
(
param
);
if
(
!
ruser
)
{
param
=
{
app_id
:
req
.
app
.
id
,
userName
:
pobj
.
mobile
,
nickName
:
pobj
.
mobile
,
nickName
:
pobj
.
mobile
,
mobile
:
pobj
.
mobile
,
password
:
pobj
.
mobile
,
wxopenid
:
pobj
.
openid
wxopenid
:
pobj
.
openid
}
ruser
=
await
this
.
userSve
.
register
(
param
);
}
...
...
@@ -305,7 +354,7 @@ class AccessAuthAPI extends APIBase {
param
=
{
app_id
:
req
.
app
.
id
,
userName
:
pobj
.
mobile
,
nickName
:
pobj
.
mobile
,
nickName
:
pobj
.
mobile
,
mobile
:
pobj
.
mobile
,
password
:
pobj
.
mobile
}
...
...
@@ -383,9 +432,9 @@ class AccessAuthAPI extends APIBase {
/**
* 按照手机号和验证码修改密码
*/
async
modiPasswordByMobile
(
pobj
,
qobj
,
req
){
var
appid
=
req
.
app
.
id
;
var
appkey
=
req
.
app
.
appkey
;
async
modiPasswordByMobile
(
pobj
,
qobj
,
req
)
{
var
appid
=
req
.
app
.
id
;
var
appkey
=
req
.
app
.
appkey
;
if
(
!
pobj
.
mobile
)
{
return
system
.
getResult
(
null
,
"电话号码不能未空."
);
}
...
...
@@ -395,19 +444,21 @@ class AccessAuthAPI extends APIBase {
if
(
!
pobj
.
newPwd
)
{
return
system
.
getResult
(
null
,
"新密码不能未空."
);
}
var
cacheCode
=
await
this
.
cacheManager
[
"VCodeCache"
].
cache
(
appkey
+
"_"
+
pobj
.
mobile
,
null
);
if
(
pobj
.
vcode
!=
cacheCode
.
vcode
)
{
return
system
.
getResultFail
(
-
1
,
"验证码校验不成功,请重新获取验证码验证."
,
system
.
verifyVCodeFail
);
var
cacheKeyStr
=
appkey
+
"_"
+
pobj
.
mobile
;
var
cacheCode
=
await
this
.
cacheManager
[
"VCodeCache"
].
getCache
(
cacheKeyStr
);
if
(
!
cacheCode
||
pobj
.
vcode
!=
cacheCode
.
vcode
)
{
return
system
.
getResultFail
(
-
1
,
"验证码校验不成功,请重新获取验证码验证."
+
pobj
.
vcode
+
"--"
+
cacheCode
.
vcode
,
system
.
verifyVCodeFail
);
}
//按照appid和电话查询出要修改的用户
var
ruser
=
await
this
.
userSve
.
modiPasswordByMobile
(
appid
,
pobj
.
mobile
,
pobj
.
newPwd
);
var
ruser
=
await
this
.
userSve
.
modiPasswordByMobile
(
appid
,
pobj
.
mobile
,
pobj
.
newPwd
);
this
.
cacheManager
[
"VCodeCache"
].
invalidate
(
cacheKeyStr
);
//清除验证码缓存
return
system
.
getResult
(
ruser
);
}
/**
* 按照账号和appid修改密码
*/
async
modiPasswordByUserName
(
pobj
,
qobj
,
req
){
var
appid
=
req
.
app
.
id
;
async
modiPasswordByUserName
(
pobj
,
qobj
,
req
)
{
var
appid
=
req
.
app
.
id
;
if
(
!
pobj
.
userName
)
{
return
system
.
getResult
(
null
,
"账号不能未空."
);
}
...
...
@@ -417,7 +468,7 @@ class AccessAuthAPI extends APIBase {
// if (!pobj.oldPwd) {
// return system.getResult(null, "旧密码不能未空.");
// }
var
ruser
=
await
this
.
userSve
.
modiPasswordByUserName
(
appid
,
pobj
.
userName
,
pobj
.
newPwd
,
pobj
.
oldPwd
);
var
ruser
=
await
this
.
userSve
.
modiPasswordByUserName
(
appid
,
pobj
.
userName
,
pobj
.
newPwd
,
pobj
.
oldPwd
);
return
system
.
getResult
(
ruser
);
}
/**
...
...
@@ -434,9 +485,10 @@ class AccessAuthAPI extends APIBase {
if
(
!
pobj
.
vcode
)
{
return
system
.
getResult
(
null
,
"验证码不能未空."
);
}
var
cacheCode
=
await
this
.
cacheManager
[
"VCodeCache"
].
cache
(
appkey
+
"_"
+
pobj
.
mobile
,
null
);
if
(
pobj
.
vcode
!=
cacheCode
.
vcode
)
{
return
system
.
getResult
(
system
.
verifyVCodeFail
,
"验证码校验不成功,请重新获取验证码验证."
);
var
cacheKeyStr
=
appkey
+
"_"
+
pobj
.
mobile
;
var
cacheCode
=
await
this
.
cacheManager
[
"VCodeCache"
].
getCache
(
cacheKeyStr
);
if
(
!
cacheCode
||
pobj
.
vcode
!=
cacheCode
.
vcode
)
{
return
system
.
getResultFail
(
system
.
verifyVCodeFail
,
"验证码校验不成功,请重新获取验证码验证."
,
system
.
verifyVCodeFail
);
}
var
param
=
{
app_id
:
req
.
app
.
id
,
...
...
@@ -447,15 +499,16 @@ class AccessAuthAPI extends APIBase {
param
=
{
app_id
:
req
.
app
.
id
,
userName
:
pobj
.
mobile
,
nickName
:
pobj
.
mobile
,
nickName
:
pobj
.
mobile
,
mobile
:
pobj
.
mobile
,
password
:
pobj
.
mobile
password
:
pobj
.
password
||
pobj
.
mobile
}
ruser
=
await
this
.
userSve
.
register
(
param
);
}
var
opencode
=
super
.
getUUID
();
var
authUrl
=
req
.
app
.
authUrl
+
"?opencode="
+
opencode
;
await
this
.
cacheManager
[
"OpenCodeCache"
].
cache
(
opencode
,
ruser
,
120
);
this
.
cacheManager
[
"VCodeCache"
].
invalidate
(
cacheKeyStr
);
//清除验证码缓存
return
system
.
getResultSuccess
({
auth_url
:
authUrl
,
opencode
:
opencode
});
}
...
...
@@ -473,7 +526,7 @@ class AccessAuthAPI extends APIBase {
}
var
cacheuser
=
await
this
.
userSve
.
authByCode
(
pobj
.
opencode
);
if
(
!
cacheuser
)
{
return
system
.
getResult
(
system
.
verifyOpencodeFail
,
"opencode存储的值已经失效,请重新获取用户的opencode."
);
return
system
.
getResult
Fail
(
system
.
verifyOpencodeFail
,
"opencode存储的值已经失效,请重新获取用户的opencode."
,
system
.
verifyOpencodeFail
);
}
return
system
.
getResultSuccess
(
cacheuser
);
}
...
...
bigdata/app/base/api/impl/meta/baseComp.js
View file @
68980b8d
...
...
@@ -8,12 +8,19 @@ class BaseCompAPI extends APIBase {
super
();
this
.
cachsearchesSve
=
system
.
getObject
(
"service.common.cachsearchesSve"
);
}
async
upline
(
pobj
,
gobj
,
req
){
console
.
log
(
"......................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>..."
);
console
.
log
(
JSON
.
stringify
(
pobj
));
console
.
log
(
"......................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>..."
);
return
system
.
getResult
(
pobj
);
}
async
clearAllCache
(
pobj
,
gobj
,
req
)
{
return
await
this
.
cachsearchesSve
.
clearAllCache
(
pobj
);
}
async
getBaseComp
()
{
if
(
cacheBaseComp
)
{
return
cacheBaseComp
;
return
system
.
getResult
(
cacheBaseComp
)
;
}
var
vuePath
=
settings
.
basepath
+
"/app/front/vues/base"
;
var
baseComps
=
[];
...
...
@@ -30,8 +37,8 @@ class BaseCompAPI extends APIBase {
baseComps
.
push
(
comp
);
});
}
// cacheBaseComp = escape(JSON.stringify(baseComps))
;
return
system
.
getResult
(
{
basecom
:
baseComps
}
);
cacheBaseComp
=
{
basecom
:
baseComps
}
;
return
system
.
getResult
(
cacheBaseComp
);
}
exam
()
{
...
...
bigdata/app/base/db/cache.base.js
View file @
68980b8d
...
...
@@ -37,8 +37,20 @@ class CacheBase {
return
JSON
.
parse
(
cacheValue
);
}
}
async
invalidate
(
inputkey
){
const
cachekey
=
this
.
prefix
+
inputkey
;
async
getCache
(
inputkey
,
ex
)
{
const
cachekey
=
this
.
prefix
+
inputkey
;
var
cacheValue
=
await
this
.
redisClient
.
get
(
cachekey
);
if
(
!
cacheValue
||
cacheValue
==
"undefined"
||
cacheValue
==
"null"
)
{
return
null
;
}
else
{
if
(
ex
)
{
this
.
redisClient
.
set
(
cachekey
,
cacheValue
,
ex
);
}
return
JSON
.
parse
(
cacheValue
);
}
}
async
invalidate
(
inputkey
)
{
const
cachekey
=
this
.
prefix
+
inputkey
;
this
.
redisClient
.
delete
(
cachekey
);
return
0
;
}
...
...
bigdata/app/base/db/cache/vcodeCache.js
View file @
68980b8d
...
...
@@ -14,21 +14,27 @@ class VCodeCache extends CacheBase {
return
"缓存给手机发送的验证码60妙"
;
}
prefix
()
{
return
"g_vcode_"
return
"g_vcode
:appkey
_"
}
async
buildCacheVal
(
cachekey
,
inputkey
,
val
,
ex
,
...
items
)
{
//inputkey采用appkey_mobile的形式
var
mobile
=
inputkey
.
split
(
"_"
)[
1
];
var
tmplCode
=
val
;
var
signName
=
items
?
items
[
0
]
:
""
;
//【XXX】您的验证码是:602639(5分钟内有效),工作人员不会索取,请勿泄露。-------描述在模板中配置
var
pobj
=
val
;
var
vcode
=
await
this
.
smsUtil
.
getUidStr
(
6
,
10
);
// var content=tmpl.replace(/\|vcode\|/g,vcode);
//this.smsUtil.sendMsg(mobile,content);
if
(
!
tmplCode
&&
!
signName
)
{
this
.
smsUtil
.
sendMsg
(
mobile
,
vcode
);
}
//tmplCode为发送短信编码,需在阿里开通,signName为短信头描述信息,二者没有传递则用默认的发送验证码
else
{
this
.
smsUtil
.
aliSendMsg
(
mobile
,
tmplCode
,
signName
,
JSON
.
stringify
({
code
:
vcode
}));
if
(
pobj
&&
pobj
.
reqType
)
{
switch
(
pobj
.
reqType
)
{
case
"defaultVcode"
:
this
.
smsUtil
.
sendMsg
(
pobj
.
mobile
,
vcode
);
break
;
case
"defaultOtherVcode"
:
this
.
smsUtil
.
aliSendMsg
(
pobj
.
mobile
,
pobj
.
tmplCode
,
pobj
.
signName
,
JSON
.
stringify
({
code
:
vcode
}));
break
;
case
"otherVcode"
:
this
.
smsUtil
.
aliOtherSendMsg
(
pobj
.
mobile
,
pobj
.
accessKeyId
,
pobj
.
accessKeySecret
,
pobj
.
tmplCode
,
pobj
.
signName
,
JSON
.
stringify
({
code
:
vcode
}));
break
;
default
:
break
;
}
}
return
JSON
.
stringify
({
vcode
:
vcode
});
}
...
...
bigdata/app/base/system.js
View file @
68980b8d
...
...
@@ -174,6 +174,9 @@ System.userNameLoginFail = 2020;
System
.
verifyVCodeFail
=
2030
;
//opencode存储的值已经失效
System
.
verifyOpencodeFail
=
2040
;
//重复操作
System
.
redoFail
=
2050
;
module
.
exports
=
System
;
// rc=System.getObject("tool.restClient");
...
...
bigdata/app/base/utils/businessManager/authUtils.js
View file @
68980b8d
...
...
@@ -3,6 +3,7 @@ const uuidv4 = require('uuid/v4');
class
AuthUtils
{
constructor
()
{
this
.
cacheManager
=
system
.
getObject
(
"db.common.cacheManager"
);
this
.
exTime
=
5
*
3600
;
//缓存过期时间,5小时
}
getUUID
()
{
var
uuid
=
uuidv4
();
...
...
@@ -16,11 +17,11 @@ class AuthUtils {
*/
async
getTokenInfo
(
appkey
,
secret
)
{
var
rtnKey
=
this
.
getUUID
();
var
cacheAccessKey
=
await
this
.
cacheManager
[
"ApiAccessKeyC
lientCache"
].
cache
(
appkey
,
rtnKey
,
3600
);
var
cacheAccessKey
=
await
this
.
cacheManager
[
"ApiAccessKeyC
ache"
].
cache
(
appkey
,
rtnKey
,
this
.
exTime
);
if
(
cacheAccessKey
)
{
rtnKey
=
cacheAccessKey
.
accessKey
;
}
//获取之前的token值
var
appData
=
await
this
.
cacheManager
[
"ApiAccessKeyCache"
].
cache
(
rtnKey
,
secret
,
3600
,
appkey
);
var
appData
=
await
this
.
cacheManager
[
"ApiAccessKeyCache"
].
cache
(
rtnKey
,
secret
,
this
.
exTime
,
appkey
);
if
(
!
appData
)
{
return
system
.
getResultFail
(
system
.
getAppInfoFail
,
"key或secret错误."
);
}
...
...
bigdata/app/base/utils/execClient.js
View file @
68980b8d
...
...
@@ -4,7 +4,7 @@ const exec = util.promisify(require('child_process').exec);
class
ExecClient
{
constructor
()
{
this
.
cmdPostPattern
=
"curl -k -H 'Content-type: application/json' -d '{data}' {url}"
;
this
.
cmdPostPattern
=
"curl -
-user admines:adminGSBes. -
k -H 'Content-type: application/json' -d '{data}' {url}"
;
this
.
cmdGetPattern
=
"curl -G -X GET '{url}'"
;
}
...
...
bigdata/app/base/utils/smsClient.js
View file @
68980b8d
const
system
=
require
(
"../system"
);
const
system
=
require
(
"../system"
);
const
Core
=
require
(
'@alicloud/pop-core'
);
class
SmsClient
{
constructor
()
{
this
.
smsTeml
=
"http://123.57.156.109:4103/api/Send"
;
this
.
restClient
=
system
.
getObject
(
"util.restClient"
);
this
.
aliclient
=
new
Core
({
class
SmsClient
{
constructor
()
{
this
.
smsTeml
=
"http://123.57.156.109:4103/api/Send"
;
this
.
restClient
=
system
.
getObject
(
"util.restClient"
);
this
.
aliclient
=
new
Core
({
accessKeyId
:
'LTAI4FtNp3wcqFzaADvo1WtZ'
,
accessKeySecret
:
'VBKn1Anx4UmMF0LKNz7PVaCFG1phcg'
,
endpoint
:
'https://dysmsapi.aliyuncs.com'
,
...
...
@@ -13,7 +13,7 @@ class SmsClient{
}
async
aliSendMsg
(
to
,
tmplcode
,
signName
,
jsonContent
)
{
async
aliSendMsg
(
to
,
tmplcode
,
signName
,
jsonContent
)
{
var
params
=
{
"RegionId"
:
"default"
,
"PhoneNumbers"
:
to
,
...
...
@@ -31,13 +31,38 @@ class SmsClient{
})
}
async
sendMsg
(
to
,
content
){
var
txtObj
=
{
"appId"
:
8
,
"mobilePhone"
:
to
,
"content"
:
content
async
aliOtherSendMsg
(
to
,
accessKeyId
,
accessKeySecret
,
tmplcode
,
signName
,
jsonContent
)
{
var
params
=
{
"RegionId"
:
"default"
,
"PhoneNumbers"
:
to
,
"SignName"
:
signName
,
"TemplateCode"
:
tmplcode
,
"TemplateParam"
:
jsonContent
};
var
requestOption
=
{
method
:
'POST'
};
var
otherAliclient
=
new
Core
({
accessKeyId
:
accessKeyId
,
accessKeySecret
:
accessKeySecret
,
endpoint
:
'https://dysmsapi.aliyuncs.com'
,
apiVersion
:
'2017-05-25'
});
otherAliclient
.
request
(
'SendSms'
,
params
,
requestOption
).
then
((
result
)
=>
{
console
.
log
(
JSON
.
stringify
(
result
));
},
(
ex
)
=>
{
console
.
log
(
ex
);
});
}
async
sendMsg
(
to
,
content
)
{
var
txtObj
=
{
"appId"
:
8
,
"mobilePhone"
:
to
,
"content"
:
content
}
return
this
.
restClient
.
execPost
(
txtObj
,
this
.
smsTeml
);
return
this
.
restClient
.
execPost
(
txtObj
,
this
.
smsTeml
);
}
async
getUidStr
(
len
,
radix
)
{
var
chars
=
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
.
split
(
''
);
...
...
@@ -60,7 +85,7 @@ class SmsClient{
}
}
module
.
exports
=
SmsClient
;
module
.
exports
=
SmsClient
;
// var sms=new SmsClient();
// sms.aliSendMsg("13381139519","SMS_173946419","iboss",JSON.stringify({code:"hello"}));
bigdata/app/config/localsettings.js
View file @
68980b8d
...
...
@@ -10,8 +10,13 @@ var settings = {
user
:
"root"
,
password
:
"123456"
,
config
:
{
<<<<<<<
HEAD
host
:
'192.168.4.119'
,
port
:
3306
,
=======
host
:
'43.247.184.35'
,
port
:
8899
,
>>>>>>>
5315
b1038a0ea78ef8d6584e1c774432afe365d1
dialect
:
'mysql'
,
operatorsAliases
:
false
,
pool
:
{
...
...
bigdata/app/front/vues/pages/comorgs/comorgs.js
View file @
68980b8d
...
...
@@ -14,6 +14,7 @@
refwhereorg
:{
isPosition
:
true
},
crow
:
null
,
selCompanyKey
:
null
,
selComid
:
null
,
}
},
mounted
:
function
(){
...
...
@@ -23,6 +24,8 @@
created
:
function
(){
var
cmpid
=
this
.
$router
.
history
.
current
.
query
.
compid
;
this
.
selCompanyKey
=
cmpid
;
var
cmpid2
=
this
.
$router
.
history
.
current
.
query
.
comidnum
;
this
.
selComid
=
cmpid2
;
},
methods
:{
beforesave
(
model
){
...
...
@@ -127,6 +130,7 @@
this
.
formatroles
([
orgroot
.
data
]);
expandkeys
.
push
(
orgroot
.
data
.
id
);
this
.
$refs
.
userGrid
.
linkInInitQuery
(
"opath"
,
"/"
);
this
.
$refs
.
userGrid
.
linkInInitQuery
(
"owner_id"
,
this
.
selComid
);
return
resolve
([
orgroot
.
data
]);
}
else
{
console
.
log
(
node
.
level
,
node
.
id
);
...
...
@@ -190,6 +194,9 @@
},
onsel
(
node
,
data
){
this
.
$refs
.
userGrid
.
linkInInitQuery
(
"opath"
,
data
.
orgpath
);
this
.
$refs
.
userGrid
.
linkInInitQuery
(
"owner_id"
,
this
.
selComid
);
this
.
currentPath
=
data
.
orgpath
;
this
.
$refs
.
orgtree
.
isEdit
=
false
;
},
...
...
@@ -279,6 +286,7 @@
this
.
orgidchageto
=
null
;
this
.
crow
=
null
;
this
.
$refs
.
userGrid
.
linkInInitQuery
(
"opath"
,
this
.
currentPath
);
this
.
$refs
.
userGrid
.
linkInInitQuery
(
"owner_id"
,
this
.
selComid
);
}
}
},
...
...
bigdata/app/front/vues/pages/companyinfo/companyinfo.js
View file @
68980b8d
...
...
@@ -46,7 +46,7 @@
this
.
$router
.
push
({
path
:
"/comapps"
,
query
:{
"compid"
:
row
.
companykey
}});
}
if
(
key
==
"comorgs"
){
this
.
$router
.
push
({
path
:
"/comorgs"
,
query
:{
"compid"
:
row
.
companykey
}});
this
.
$router
.
push
({
path
:
"/comorgs"
,
query
:{
"compid"
:
row
.
companykey
,
"comidnum"
:
row
.
id
}});
}
},
onColFormater
(
row
,
column
,
cellvalue
,
index
){
...
...
igirl-web/app/front/entry/main.ejs
deleted
100644 → 0
View file @
a4642df5
<!DOCTYPE html>
<html
lang=
"zh-CN"
>
<head>
<meta
charset=
"utf-8"
>
<meta
name=
"keywords"
content=
"知产建站,<%=company.sitename%>,商标建站,专利建站,软著建站,财税建站"
>
<meta
name=
"baidu-site-verification"
content=
"lATAxZAm8y"
/>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=0.8, maximum-scale=0.8, user-scalable=1"
>
<title
id=
"idtitle"
><
%=
company
.
sitename
%
></title>
<link
rel=
"stylesheet"
href=
"/css/loaders.css"
>
<link
rel=
"stylesheet"
href=
"/css/ele/index_2.5.4.css"
>
<link
rel=
"stylesheet"
href=
"/css/main.css"
>
<link
rel=
"stylesheet"
href=
"/css/pagecom.css"
>
<link
rel=
"stylesheet"
href=
"/css/igirl.css"
>
<link
rel=
"stylesheet"
href=
"/css/fontawesome/css/font-awesome.min.css"
>
<link
rel=
"stylesheet"
href=
"/css/fontawesome/css/toolicon-style.css"
>
<link
rel=
"stylesheet"
href=
"/css/fontface-timely.css"
>
<link
rel=
"stylesheet"
href=
"/css/cropper.css"
>
<!-- <script src="/js/vue/browser.min.js"></script> -->
<!-- <script src="/js/vue/polyfill.min.js"></script> -->
<script
src=
"/js/vue/vue.min_2.6.10.js"
></script>
<script
src=
"/js/vue/vue-router.min.js"
></script>
<script
src=
"/js/vue/vuex.min.js"
></script>
<script
src=
"/js/ele/index_2.5.4.js"
></script>
<script
src=
"/js/vue/axios.min.js"
></script>
<script>
//缓存当前域名对应的公司信息,公司、页脚、银行账号---全局变量
var
companyinfo
=
JSON
.
parse
(
decodeURIComponent
(
'<%=companyinfo%>'
));
//缓存当前的基础组件列表
var
basecomp
=
JSON
.
parse
(
unescape
(
'<%=basecom%>'
));
// 缓存当前的路由路径,
var
routePath
=
JSON
.
parse
(
unescape
(
'<%=routePath%>'
));
//缓存当前的产品
var
productLst
=
JSON
.
parse
(
unescape
(
'<%=productLst%>'
));
//缓存当前的产品
var
global_rsconfig
=
JSON
.
parse
(
unescape
(
'<%=rsconfig%>'
));
//缓存当前的轮播
var
loopplays
=
JSON
.
parse
(
unescape
(
'<%=loopplays%>'
));
// footerinfo:footerinfo,
// bankAccount:bankAccount}
</script>
<style>
body
{
padding
:
0px
;
margin
:
0px
;
background
:
white
;
}
.loading
{
position
:
fixed
;
top
:
0px
;
left
:
0px
;
width
:
100%
;
height
:
100%
;
background-color
:
#080534
;
z-index
:
9999
;
}
.loading-img
{
box-sizing
:
border-box
;
display
:
flex
;
flex
:
0
1
auto
;
flex-direction
:
column
;
flex-grow
:
1
;
flex-shrink
:
0
;
flex-basis
:
25%
;
max-width
:
25%
;
height
:
200px
;
align-items
:
center
;
justify-content
:
center
;
perspective
:
500px
;
position
:
absolute
;
top
:
0
;
left
:
0
;
right
:
0
;
bottom
:
0
;
margin
:
auto
;
}
.app-main
{
position
:
absolute
;
width
:
100%
;
height
:
100%
;
margin
:
0px
;
padding
:
0px
;
overflow-y
:
auto
;
overflow-x
:
hidden
;
background-color
:
#ffffff
}
.app-header
{
height
:
60px
;
width
:
100%
;
left
:
0px
;
top
:
0px
;
}
.headtransparent
{
background-color
:
transparent
!important
;
position
:
absolute
;
left
:
0px
;
top
:
0px
;
z-index
:
9999
;
}
.menutransparent
{
/* position: absolute; */
/* z-index:9999 */
position
:
relative
;
/* z-index:9000; */
}
.app-stage
{
position
:
relative
;
width
:
100%
;
}
.app-stage
.el-tabs
{
width
:
100%
;
height
:
100%
;
}
.app-footer
{
background-color
:
#31373b
;
width
:
100%
;
color
:
#eee
;
font-size
:
12px
;
height
:
310px
;
padding-top
:
40px
;
border-bottom
:
none
;
box-sizing
:
border-box
;
overflow
:
hidden
;
}
.app-footer1
{
width
:
100%
;
color
:
#eee
;
font-size
:
12px
;
border-bottom
:
none
;
box-sizing
:
border-box
;
overflow
:
hidden
;
visibility
:
visible
;
height
:
46px
;
background
:
rgb
(
35
,
41
,
64
);
margin-top
:
60px
;
display
:
block
;
}
.app-footer-left
{
float
:
left
;
width
:
35%
;
}
.app-footer-right
{
float
:
right
;
width
:
56%
;
display
:
flex
;
}
.app-footer-right
>
.app-footer-right-item
{
flex
:
2
;
}
.app-footer-right-item
>
.itemtext
{
color
:
#f5f5f5
;
font-size
:
16px
;
line-height
:
48px
;
font-family
:
CTCuHeiSJ
;
font-weight
:
400
;
}
.app-footer-bottom
{
margin-top
:
20px
;
width
:
100%
;
text-align
:
center
;
font-size
:
12px
;
font-family
:
MicrosoftYaHei
;
font-weight
:
400
;
color
:
rgba
(
200
,
200
,
200
,
1
);
line-height
:
48px
;
letter-spacing
:
1px
;
}
.app-footer-bottom1
{
width
:
100%
;
text-align
:
center
;
font-size
:
12px
;
font-family
:
MicrosoftYaHei
;
font-weight
:
400
;
color
:
rgba
(
200
,
200
,
200
,
1
);
line-height
:
48px
;
letter-spacing
:
1px
;
}
.app-footer-shu
{
float
:
left
;
width
:
1px
;
height
:
164px
;
background
:
rgba
(
146
,
146
,
146
,
1
);
}
.app-header
.el-button
{
color
:
white
}
#pane-home
{
padding
:
0px
;
margin
:
-18px
;
}
.el-tabs--border-card
>
.el-tabs__content
{
/* height: 100%; */
}
/* tab的自定义定位类 */
.spechorizotal
{}
.home-search-pos
{
width
:
820px
;
height
:
74px
;
margin
:
0
auto
;
border-radius
:
8px
;
background
:
hsla
(
0
,
0%
,
100%
,
.2
);
}
.home-search-pos
.el-input__inner
{
line-height
:
54px
;
height
:
54px
;
}
.home-search-pos
.el-input-group__append
{
background
:
#108EE9
;
border
:
1px
solid
#108EE9
;
color
:
white
;
}
.el-tabs--border-card
>
.el-tabs__header
{
border-bottom
:
none
;
}
.el-tabs--border-card
{
border
:
none
;
box-shadow
:
none
!important
;
}
.el-tab-pane
{
height
:
100%
;
border-top
:
none
;
}
.el-tabs__content
{
padding
:
0px
;
/* background-color: #EFF0F7; */
}
.el-loading-mask
{
background-color
:
transparent
;
}
.el-card__header
{
padding
:
0px
;
}
.pcpagetitle
{
font-size
:
23px
;
font-style
:
weight
;
padding-top
:
30px
;
text-align
:
center
}
.productList
:hover
{
-webkit-box-shadow
:
0
0
10px
rgba
(
0
,
204
,
92
,
0.5
);
-moz-box-shadow
:
0
0
10px
rgba
(
0
,
204
,
204
,
.5
);
box-shadow
:
0
0
10px
rgba
(
0
,
204
,
204
,
.5
);
}
#leftmenudiv
.spechorizotal
.nav_color
{
color
:
black
;
}
.roleview-title
{
color
:
#666
;
}
.bytmmonittab
{}
.bycdirectsearch
{}
#header_row
{
border-bottom
:
none
;
padding
:
0px
;
}
.braMenu
{
z-index
:
2
;
transition
:
all
.28s
ease-out
;
/* margin-top:0px;
border:none;
height:100%;
background-color: #F9F9F9 */
}
.braMenuContent
{
width
:
180px
;
height
:
100%
;
transition
:
all
.28s
ease-out
;
border-radius
:
0
;
background-color
:
#535680
;
/* margin:15px;margin-top:2px;width: 200px */
}
.qiantai
{
width
:
1200px
;
margin
:
0
auto
;
background-color
:
transparent
;
}
.houtai
{
background-color
:
#383A52
;
}
.selectsubsystem
{
width
:
180px
;
height
:
79px
;
color
:
#fff
;
padding
:
20px
;
box-sizing
:
border-box
;
background
:
rgba
(
83
,
86
,
128
,
1
);
cursor
:
pointer
;
}
.selectsubsystem
>
span
{
display
:
inline-block
;
width
:
100%
;
height
:
100%
;
line-height
:
46px
;
background
:
#313356
;
text-align
:
center
;
font-size
:
16px
;
color
:
#dbd8be
;
}
.leftmenu
.el-submenu__title
:hover
{
background-color
:
#37AAFF
!important
;
color
:
#fff
!important
;
}
.leftmenu
.el-menu-item
:hover
{
background-color
:
#37AAFF
!important
;
color
:
#fff
!important
;
}
.el-popper-hover
{
background
:
#333333
;
border
:
none
;
width
:
167px
;
height
:
167px
;
display
:
flex
;
}
/* xinban header */
#app-header
{
width
:
100%
;
height
:
46px
;
line-height
:
46px
;
background
:
rgba
(
15
,
13
,
35
,
1
);
font-size
:
14px
;
font-family
:
Microsoft
YaHei
;
font-weight
:
400
;
color
:
rgba
(
255
,
255
,
255
,
1
);
}
.header-main
{
width
:
1200px
;
height
:
100%
;
margin
:
0
auto
;
}
.header-main-houtai
{
width
:
100%
;
height
:
100%
;
padding
:
0px
15px
;
box-sizing
:
border-box
;
}
.header-main-title
{
float
:
left
;
cursor
:
pointer
;
}
.header-main-title1
{
float
:
left
;
width
:
68px
;
cursor
:
pointer
;
background
:
rgba
(
26
,
45
,
78
,
1
);
text-align
:
center
;
}
.header-main-right
{
float
:
right
;
position
:
relative
;
}
.header-main-right
::before
{
content
:
''
;
position
:
absolute
;
left
:
0px
;
top
:
13px
;
width
:
1px
;
height
:
12px
;
background
:
rgba
(
221
,
221
,
221
,
1
);
opacity
:
0.25
;
}
.header-main-right
>
span
{
padding-right
:
15px
;
cursor
:
pointer
;
}
.header-main-right
>
img
{
width
:
18px
;
height
:
18px
;
vertical-align
:
middle
;
margin-bottom
:
2px
;
margin-left
:
15px
;
}
.header-main-tool
{
float
:
right
;
cursor
:
pointer
;
color
:
#fff
;
}
.header-main-tool
>
span
{
padding
:
0px
5px
;
}
.header-main-tool
>
i
{
color
:
#fff
;
margin-right
:
10px
;
}
.el-popover
{
left
:
396px
!important
;
background
:
rgba
(
26
,
45
,
78
,
1
)
!important
;
border
:
1px
solid
#1A2D4E
!important
;
}
.el-popper
[
x-placement
^=
bottom
]
.popper__arrow
::after
{
border
:
none
!important
;
border-bottom-color
:
rgba
(
26
,
45
,
78
,
1
)
!important
;
}
.el-popper
[
x-placement
^=
bottom
]
.popper__arrow
{
border
:
none
!important
;
border-bottom-color
:
rgba
(
26
,
45
,
78
,
1
)
!important
;
}
.popover-title
{
font-size
:
12px
;
font-family
:
PingFangSC-Medium
,
PingFang
SC
;
font-weight
:
500
;
color
:
rgba
(
255
,
255
,
255
,
1
);
}
.popover-list
{
margin-top
:
20px
;
font-size
:
12px
;
font-family
:
PingFangSC-Regular
,
PingFang
SC
;
font-weight
:
400
;
color
:
rgba
(
175
,
190
,
215
,
1
);
line-height
:
17px
;
}
.popover-list
>
div
{
display
:
inline-block
;
border-left
:
3px
solid
#128EE9
;
padding-left
:
10px
;
line-height
:
12px
;
margin-right
:
17px
;
}
.popover-list
>
span
{
cursor
:
pointer
;
}
.popover-list
>
span
:hover
{
color
:
#128EE9
;
}
</style>
</head>
<body
ondragstart=
"return false"
>
<div
id=
"app"
v-loading=
"loading"
class=
"app-main"
style=
"visibility: hidden"
@
mouseover=
"hidePanel($event)"
>
<div
id=
"app-header"
>
<div
:class=
"isfront ? 'header-main' : 'header-main-houtai'"
>
<div
class=
"header-main-title"
@
click=
"backhome"
>
智能化知识产权服务平台
</div>
<div
class=
"header-main-title1"
style=
"margin-left:11px;"
v-if=
"companyinfo.company.siteTheme == 'policy'"
>
<el-popover
placement=
"bottom-start"
width=
"511"
trigger=
"hover"
>
<div>
<div
class=
"popover-title"
>
全部省份
</div>
<div
class=
"popover-list"
v-for=
"(item,key) in areaArr"
:key=
"key"
>
<div>
{{item.name}}
</div>
<span
v-for=
"(list,index) in item.lists"
@
click=
"areachoice(list)"
>
{{list}}
</span>
</div>
<div
style=
"height:10px;"
></div>
</div>
<span
slot=
"reference"
><i
class=
"el-icon-location-outline"
style=
"margin-right:8px;"
></i>
{{areaName}}
</span>
</el-popover>
</div>
<div
v-if=
"!currentUser"
class=
"header-main-login header-main-right"
>
<span
@
click=
"onselect('login')"
>
登录
</span>
<span
@
click=
"onselect('register')"
>
免费注册
</span>
</div>
<div
v-else
class=
"header-main-right"
>
<el-dropdown
style=
"float: right;"
@
command=
"backstageHandleCommand"
>
<div
class=
"header-main-right"
style=
"color: #fff;"
>
<img
src=
"/imgs/normal/backstage.png"
alt=
""
>
<span>
{{ currentUser.nickName }}
</span><i
class=
"el-icon-caret-bottom"
></i></div>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
command=
"管理后台"
>
管理后台
</el-dropdown-item>
<el-dropdown-item
command=
"退出"
>
退出
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<!-- <span @click="goadmin">管理后台</span>
<span @click="onselect('exit')">退出</span> -->
</div>
<div
class=
"header-main-right"
><img
src=
"/imgs/normal/icon-public.png"
alt=
""
>
<span>
公众号
</span></div>
<div
class=
"header-main-right"
><img
src=
"/imgs/normal/icon-phone.png"
alt=
""
>
<span>
APP
</span></div>
<div
style=
"float: left;margin-left: 135px;"
v-if=
"companyinfo.company.siteTheme == 'policy'"
>
<el-dropdown
style=
"float: left;"
@
command=
"handleCommand"
>
<div
class=
"header-main-tool"
@
click=
"onselect('policybigdata')"
><span>
政策大数据
</span></div>
</el-dropdown>
<el-dropdown
style=
"float: left;"
@
command=
"handleCommand"
>
<div
class=
"header-main-tool"
@
click=
"onselect('declare')"
><span>
政策资讯
</span><i
class=
"el-icon-caret-bottom"
></i></div>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
v-for=
"item in titles"
:command=
"item.title"
>
{{item.name}}
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
<div
style=
"float: right;"
v-else
>
<el-dropdown
style=
"float: right;"
@
command=
"handleCommand"
>
<div
class=
"header-main-tool"
><span>
智能工具
</span><i
class=
"el-icon-caret-bottom"
></i></div>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
v-for=
"item in rsData"
:command=
"item"
v-if=
"mnufunc(item.codePath)"
>
{{item.label}}
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</div>
</div>
<!-- 第一版 -->
<div
class=
"popups clearfix"
>
<div
class=
"popups-zhanwei"
></div>
<div
class=
"popups-kailong"
>
<span></span>
</div>
<div
class=
"popups-left"
>
<div
v-for=
"(item,key) in popupsData"
:class=
"pDataKey == key ? 'popups-left-item-cla' : 'popups-left-item'"
@
mouseenter=
"popupsList(item,key)"
>
<span>
{{item.itemTypeName}}
</span>
</div>
</div>
<div
class=
"popups-right"
>
<div
v-for=
"list in popupsDataList"
class=
"popups-right-item"
>
<div
class=
"popups-right-title"
>
{{list.serviceSmallClassTypeName}}
</div>
<div
class=
"clearfix"
>
<div
class=
"popups-right-it"
v-for=
"it in list.productList"
@
click=
"goServiceDetails(it)"
>
{{it.name}}
</div>
</div>
</div>
</div>
</div>
<!-- 第二版 -->
<!-- <div class="popups-two" v-if="isdefault && isfront && popupsType">
<div class="popups-two-main" @mouseleave="popupsLeave">
<div class="popups-two-main-left">
<div v-for="(item,key) in popupsData" v-if="key < 6" :style="popupslineHeight" :class="pTowDataKey == key ? 'popups-two-left-item-cla' : 'popups-two-left-item'" @mouseenter="popupsList(item,key)" >
<span class="popups-two-left-item-span" :style="pTowDataKey == key ? 'border-bottom: none;' : ''">
{{item.itemTypeName}} <i class="el-icon-arrow-right" style="float: right;margin-top: 22px;"></i>
</span>
</div>
</div>
<div class="popups-two-right" v-if="pTowDataKey != null">
<div v-for="list in popupsDataList">
<div class="clearfix" style="padding-top: 18px;padding-bottom: 4px;border-bottom:1px solid rgba(225,225,225,1);">
<div class="popups-tow-right-title">{{list.serviceSmallClassTypeName}}<i class="el-icon-arrow-right" style="float: right;margin-top:3px;color: #1a1a1a;"></i></div>
<div class="popups-tow-right-lists">
<div class="popups-tow-right-it" v-for="it in list.productList" @click="goServiceDetails(it)">
{{it.name}}
</div>
</div>
</div>
</div>
</div>
</div>
</div> -->
<!-- 结束 -->
<div
id=
"stage"
class=
"app-stage"
style=
"padding: 0px;"
>
<div
v-if=
"isfront && stageType"
id=
"#serviceemp"
style=
"padding-top: 3px;text-align:center;font-size: 20px;position: fixed;right:10px;bottom:160px;z-index:10001;width:60px;height:180px;"
>
<a
:href=
"serviceqq"
target=
"_blank"
@
mouseenter=
"leyuhover"
>
<!-- <i style="color:white;" class="el-icon-service"></i> -->
<img
v-if=
"isleyu"
style=
"width:28px;height:40px;vertical-align: top;box-sizing:border-box;padding:10px 5px;background:#333333;"
src=
"/imgs/kefu.png"
alt=
""
>
<img
v-else
style=
"width:28px;height:40px;vertical-align: top;box-sizing: border-box;padding:10px 5px;background:#2F95FC;"
src=
"/imgs/kefu.png"
alt=
""
>
</a>
<div
@
mouseenter=
"phonehover"
@
mouseleave=
"phoneleave"
style=
"cursor:pointer"
>
<div
style=
"font-size:12px;background:#333333;color:#fff;line-height:38px;width:130px;height:38px; position: absolute;right:50px;top:45px;"
v-if=
"showPhoneNum"
>
<div
style=
"border:4px solid rgba(0,0,0,0); border-left: 4px solid #333333;position: absolute;top:17px;right:-8px;"
>
</div>
电话:{{servicetel}}
</div>
<!-- <i style="color:white;" class="el-icon-phone-outline"></i> -->
<img
v-if=
"isphone"
style=
"width:28px;height:40px;vertical-align: top;box-sizing:border-box;padding:10px 5px;background:#2F95FC;"
src=
"/imgs/dianh.png"
alt=
""
>
<img
v-else
style=
"width:28px;height:40px;vertical-align: top;box-sizing:border-box;padding:10px 5px;background:#333333;"
src=
"/imgs/dianh.png"
alt=
""
>
</div>
<div
@
mouseenter=
"rwmhover"
@
mouseleave=
"rwmover"
style=
"cursor:pointer"
>
<div
class=
'el-popper-hover'
style=
"position: absolute;right:50px;top:50px;"
v-if=
"showWxrm"
>
<div
style=
"border:4px solid rgba(0,0,0,0); border-left: 4px solid #333333;position: absolute;top:50px;right:-8px;"
>
</div>
<img
style=
"width:100%;height:100%;background: #333333;margin: auto;"
:src=
"footerInfo?footerInfo.wxQrCodeUrl:''"
alt=
""
>
</div>
<img
v-if=
"iswx"
slot=
"reference"
style=
"width:28px;height:40px;vertical-align: top;box-sizing:border-box;padding:10px 5px;background:#2F95FC;"
src=
"/imgs/erweima.png"
alt=
""
>
<img
v-else
slot=
"reference"
style=
"width:28px;height:40px;vertical-align: top;box-sizing:border-box;padding:10px 5px;background:#333333;"
src=
"/imgs/erweima.png"
alt=
""
>
</div>
<div
@
mouseenter=
"tophover"
style=
"cursor:pointer"
@
click=
"$('#app').scrollTop(0);"
>
<img
v-if=
"istop"
style=
"width:28px;height:40px;vertical-align: top;box-sizing:border-box;padding:10px 5px;background:#2F95FC;"
src=
"/imgs/wangs.png"
alt=
""
>
<img
v-else
style=
"width:28px;height:40px;vertical-align: top;box-sizing:border-box;padding:10px 5px;background:#333333;"
src=
"/imgs/wangs.png"
alt=
""
>
</div>
</div>
<div
style=
"clear:both"
></div>
<div
style=
"min-width: 800px;height:auto;display:flex;"
>
<div
id=
"leftmenudiv"
class=
"braMenu"
v-if=
"isShowMenu && currentUser"
>
<!-- <el-select style="margin-left:15px;width: 89%;margin-top:20px;margin-right:15px" placeholder="请输入功能关键字搜索"></el-select> -->
<gsb-leftmenu
class=
"braMenuContent"
bkcolor=
"white"
ref=
"leftmenu"
key=
"leftmenu"
formatprop=
"formatItem"
@
menuselect=
"onMenuSelect"
>
</gsb-leftmenu>
</div>
<div
style=
"width:calc(100% - 180px);flex-grow:5;border:none;"
>
<el-tabs
class=
"maintab"
style=
"margin-top:0px"
v-model=
"editableTabsValue2"
type=
"border-card"
style=
"border-top:none"
@
tab-remove=
"removetab"
@
tab-click=
"tabclick"
edit
closable
>
<el-tab-pane
v-for=
"(item, index) in editableTabs2"
:key=
"item.name"
:name=
"item.name"
>
<span
slot=
"label"
><i
class=
"el-icon-date"
></i>
{{ item.title}}
</span>
<transition
name=
"slide-fade"
>
<div
class=
"loading"
v-if=
"loadingHome"
>
<div
class=
"loading-img"
>
<div
class=
"loader-inner ball-pulse-rise"
>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
</div>
<router-view
:name=
"item.name"
:key=
"item.name"
>
</router-view>
</transition>
</el-tabs>
</div>
</div>
</div>
<!-- <div id="footer" class="app-footer" style="visibility: hidden;display: none;">
<div style="width:1200px;margin: 0 auto;overflow: hidden;">
<div class="app-footer-left">
<img :src="footerInfo?footerInfo.picUrl:''" alt="">
<div class="companyname"><%=company.name%></div>
<div class="other">地址:<%=footerinfo.address%></div>
</div>
<div class="app-footer-shu"></div>
<div class="app-footer-right">
<div class="app-footer-right-item">
<div class="itemtext">联系我们</div>
<div class="other">
客服电话:<%=footerinfo.serviceTel?footerinfo.serviceTel:"4006-798-999"%>
</div>
<div class="other">
商务合作:<%=footerinfo.cooperationTel?footerinfo.cooperationTel:"4006-798-999"%>
</div>
<div class="other"
v-if="currentCompany && currentCompany.id==1 && !currentUser"
@click="siteapply">站点申请</div>
</div>
<div class="app-footer-right-item">
<div class="itemtext">友情链接</div>
<div class="other" style="cursor:pointer"
@click="window.open('http://www.sipo.gov.cn')">国家知识产权局</div>
<div class="other" style="cursor:pointer"
@click="window.open('http://sbj.cnipa.gov.cn')">国家商标局</div>
<div class="other" style="cursor:pointer"
@click="window.open('http://www.ncac.gov.cn')">国家版权局</div>
<div class="other" style="cursor:pointer"
@click="window.open('http://www.sipo.gov.cn/xglj/201310/t20131025_870731.html')">
地方知识产权局</div>
</div>
<div class="app-footer-right-item" style="flex: 1;">
<div class="itemtext">客服二维码</div>
<img style="width: 80px" src="<%=footerinfo.wxQrCodeUrl%>" alt="">
</div>
</div> -->
<!-- <div style="float:right">
<el-row class="companyname">{{footerInfo?footerInfo.companyName:"创知厚德(北京)科技有限公司"}}</el-row>
<el-row class="other">
<el-col :span="5">客服电话:{{footerInfo?footerInfo.serviceTel:"4006-798-999"}}</el-col>
<el-col :span="5">商务合作:{{footerInfo?footerInfo.cooperationTel:"4006-798-999"}}</el-col>
</el-row>
<el-row class="other">地址:{{footerInfo?footerInfo.address:"北京市朝阳区朝来高科技产业园10号楼102号"}}</el-row>
<el-row class="other" style="margin-top:10px;">
<el-col :span="5" class="aboutus"><div @click="aboutus">关于我们</div></el-col>
<el-col :span="5" class="aboutus" v-if="currentCompany && currentCompany.id==1 && !currentUser"><div @click="siteapply">站点申请</div></el-col>
</el-row>
</div> -->
<!-- </div>
<div class="app-footer-bottom">
{{footerInfo?footerInfo.icpNum+footerInfo.icpCard:"Copyright © 2017-2018 gongsibao All Rights Reserved 版权所有:汉唐信通(北京)科技有限公司 京ICP证150505号 京ICP备14043829号-2"}}
</div>
</div> -->
<div
id=
"footer"
class=
"app-footer1"
style=
"visibility: hidden;display: none;"
>
<div
class=
"app-footer-bottom1"
>
{{footerInfo?footerInfo.icpNum+footerInfo.icpCard:"Copyright 2017-2019 gongsibao All Rights Reserved 版权所有:北京创知厚德科技有限公司 京ICP备14043829号-2京ICP证150505号"}}
</div>
</div>
</div>
<script
src=
"/js/vue/jquery.min.js"
></script>
<script
src=
"/js/cropper/index.js"
></script>
<script
src=
"/js/vue/base64.js"
></script>
<script
src=
"/js/htmleditor/htmleditor.js"
></script>
<script
src=
"/js/htmleditor/htmleditorreg.js"
></script>
<script
src=
"/js/index.js"
></script>
<script
src=
"/js/echarts/echarts.min.js"
></script>
<script
src=
"/js/echarts/echarts-wordcloud.min.js"
></script>
<script
src=
"/js/echarts/echarts-wordcloud.js"
></script>
<script>
var
_hmt
=
_hmt
||
[];
(
function
()
{
var
hm
=
document
.
createElement
(
"script"
);
hm
.
src
=
"https://hm.baidu.com/hm.js?c9f6643866bd94d26ff54175fd18d60f"
;
var
s
=
document
.
getElementsByTagName
(
"script"
)[
0
];
s
.
parentNode
.
insertBefore
(
hm
,
s
);
})();
(
function
()
{
var
bp
=
document
.
createElement
(
'script'
);
var
curProtocol
=
window
.
location
.
protocol
.
split
(
':'
)[
0
];
if
(
curProtocol
===
'https'
)
{
bp
.
src
=
'https://zz.bdstatic.com/linksubmit/push.js'
;
}
else
{
bp
.
src
=
'http://push.zhanzhang.baidu.com/push.js'
;
}
var
s
=
document
.
getElementsByTagName
(
"script"
)[
0
];
s
.
parentNode
.
insertBefore
(
bp
,
s
);
})();
</script>
</body>
</html>
\ No newline at end of file
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