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
c62ee2f3
Commit
c62ee2f3
authored
Jan 08, 2020
by
蒋勇
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'bigdata' of gitlab.gongsibao.com:jiangyong/zhichan into bigdata
parents
8f75b169
b149d5b6
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
67 additions
and
851 deletions
+67
-851
bigdata/app/base/api/impl/auth/accessAuth.js
+45
-37
bigdata/app/base/db/cache.base.js
+16
-3
bigdata/app/base/system.js
+3
-0
bigdata/app/base/utils/businessManager/authUtils.js
+3
-2
igirl-web/app/front/entry/main.ejs
+0
-809
No files found.
bigdata/app/base/api/impl/auth/accessAuth.js
View file @
c62ee2f3
...
...
@@ -10,10 +10,10 @@ class AccessAuthAPI extends APIBase {
this
.
userSve
=
system
.
getObject
(
"service.auth.userSve"
);
}
/*查询注册用户的信息sys*/
async
queryRegUser
(
pobj
,
query
,
req
){
var
appid
=
req
.
app
.
id
;
var
userList
=
await
this
.
userSve
.
queryUsersByAppId
(
appid
);
return
system
.
getResult
(
userList
);
async
queryRegUser
(
pobj
,
query
,
req
)
{
var
appid
=
req
.
app
.
id
;
var
userList
=
await
this
.
userSve
.
queryUsersByAppId
(
appid
);
return
system
.
getResult
(
userList
);
}
/**
* 发送短信
...
...
@@ -43,6 +43,10 @@ class AccessAuthAPI extends APIBase {
if
(
tmplCode
&&
tmplCode
.
indexOf
(
"SMS_"
)
<
0
)
{
return
system
.
getResult
(
null
,
"模版编码有误"
);
}
var
tmpReslut
=
await
this
.
cacheManager
[
"VCodeCache"
].
getCache
(
appkey
+
"_"
+
mobile
);
if
(
tmpReslut
)
{
return
system
.
getResult
(
system
.
redoFail
,
"操作过于频繁,请勿重复获取"
);
}
var
vcodeResult
=
await
this
.
cacheManager
[
"VCodeCache"
].
cache
(
appkey
+
"_"
+
mobile
,
tmplCode
,
120
,
signName
);
return
system
.
getResult
(
vcodeResult
);
}
...
...
@@ -58,7 +62,11 @@ class AccessAuthAPI extends APIBase {
if
(
!
mobile
)
{
return
system
.
getResult
(
null
,
"电话号码不能为空."
);
}
var
vcodeResult
=
this
.
cacheManager
[
"VCodeCache"
].
cache
(
appkey
+
"_"
+
mobile
,
null
,
60
);
var
tmpReslut
=
await
this
.
cacheManager
[
"VCodeCache"
].
getCache
(
appkey
+
"_"
+
mobile
);
if
(
tmpReslut
)
{
return
system
.
getResult
(
system
.
redoFail
,
"操作过于频繁,请勿重复获取"
);
}
var
vcodeResult
=
this
.
cacheManager
[
"VCodeCache"
].
cache
(
appkey
+
"_"
+
mobile
,
null
,
120
);
return
system
.
getResult
(
vcodeResult
);
}
async
authAccessKey
(
pobj
,
query
,
req
)
{
...
...
@@ -178,7 +186,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 +195,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 +205,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 +221,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
();
...
...
@@ -234,23 +242,23 @@ class AccessAuthAPI extends APIBase {
return
system
.
getResult
(
null
,
"openid不能未空."
);
}
var
cacheCode
=
await
this
.
cacheManager
[
"VCodeCache"
].
cache
(
appkey
+
"_"
+
pobj
.
mobile
,
null
);
if
(
pobj
.
vcode
!=
cacheCode
.
vcode
)
{
if
(
!
cacheCode
||
pobj
.
vcode
!=
cacheCode
.
vcode
)
{
return
system
.
getResult
(
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
);
}
...
...
@@ -259,8 +267,8 @@ class AccessAuthAPI extends APIBase {
await
this
.
cacheManager
[
"OpenCodeCache"
].
cache
(
opencode
,
ruser
,
120
);
return
system
.
getResultSuccess
({
auth_url
:
authUrl
,
opencode
:
opencode
});
}
//wxbind
async
wxBindWithoutVCode
(
pobj
,
qobj
,
req
)
{
//wxbind
async
wxBindWithoutVCode
(
pobj
,
qobj
,
req
)
{
var
appkey
=
req
.
app
.
appkey
;
if
(
!
pobj
.
mobile
)
{
return
system
.
getResult
(
null
,
"电话号码不能未空."
);
...
...
@@ -272,17 +280,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 +313,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
}
...
...
@@ -338,9 +346,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
,
"电话号码不能未空."
);
}
...
...
@@ -351,19 +359,19 @@ class AccessAuthAPI extends APIBase {
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
);
if
(
!
cacheCode
||
pobj
.
vcode
!=
cacheCode
.
vcode
)
{
return
system
.
getResultFail
(
-
1
,
"验证码校验不成功,请重新获取验证码验证."
,
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
);
return
system
.
getResult
(
ruser
);
}
}
/**
* 按照账号和appid修改密码
*/
async
modiPasswordByUserName
(
pobj
,
qobj
,
req
){
var
appid
=
req
.
app
.
id
;
if
(
!
pobj
.
userName
)
{
async
modiPasswordByUserName
(
pobj
,
qobj
,
req
)
{
var
appid
=
req
.
app
.
id
;
if
(
!
pobj
.
userName
)
{
return
system
.
getResult
(
null
,
"账号不能未空."
);
}
if
(
!
pobj
.
newPwd
)
{
...
...
@@ -372,7 +380,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
);
}
/**
...
...
@@ -390,7 +398,7 @@ class AccessAuthAPI extends APIBase {
return
system
.
getResult
(
null
,
"验证码不能未空."
);
}
var
cacheCode
=
await
this
.
cacheManager
[
"VCodeCache"
].
cache
(
appkey
+
"_"
+
pobj
.
mobile
,
null
);
if
(
pobj
.
vcode
!=
cacheCode
.
vcode
)
{
if
(
!
cacheCode
||
pobj
.
vcode
!=
cacheCode
.
vcode
)
{
return
system
.
getResult
(
system
.
verifyVCodeFail
,
"验证码校验不成功,请重新获取验证码验证."
);
}
var
param
=
{
...
...
@@ -402,9 +410,9 @@ 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
);
}
...
...
@@ -716,7 +724,7 @@ class AccessAuthAPI extends APIBase {
methodName
:
"queryRegUser"
,
paramdescs
:
[
{
}
],
rtnTypeDesc
:
"返回应用的注册用户"
,
...
...
bigdata/app/base/db/cache.base.js
View file @
c62ee2f3
...
...
@@ -20,7 +20,7 @@ class CacheBase {
async
cache
(
inputkey
,
val
,
ex
,
...
items
)
{
const
cachekey
=
this
.
prefix
+
inputkey
;
var
cacheValue
=
await
this
.
redisClient
.
get
(
cachekey
);
if
(
!
cacheValue
||
cacheValue
==
"undefined"
||
cacheValue
==
"null"
||
this
.
isdebug
)
{
if
(
!
cacheValue
||
cacheValue
==
"undefined"
||
cacheValue
==
"null"
||
this
.
isdebug
)
{
var
objvalstr
=
await
this
.
buildCacheVal
(
cachekey
,
inputkey
,
val
,
ex
,
...
items
);
if
(
!
objvalstr
)
{
return
null
;
...
...
@@ -34,11 +34,24 @@ class CacheBase {
this
.
redisClient
.
sadd
(
this
.
cacheCacheKeyPrefix
,
[
cachekey
+
"|"
+
this
.
desc
]);
return
JSON
.
parse
(
objvalstr
);
}
else
{
this
.
redisClient
.
setWithEx
(
cachekey
,
cacheValue
,
ex
);
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/system.js
View file @
c62ee2f3
...
...
@@ -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 @
c62ee2f3
...
...
@@ -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错误."
);
}
...
...
igirl-web/app/front/entry/main.ejs
deleted
100644 → 0
View file @
8f75b169
<!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