Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
civil-front
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
civil
civil-front
Commits
6639902d
Commit
6639902d
authored
Jun 30, 2021
by
苏咏卓
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://139.159.239.83:9093/civil/civil-front
parents
65b62f2a
778f6e48
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
189 additions
and
111 deletions
+189
-111
src/assets/images/3d8ced92b374abc6d74a746df73082e.png
+0
-0
src/router/index.js
+1
-1
src/router/routers.js
+8
-0
src/views/home.vue
+8
-8
src/views/login.vue
+160
-100
src/views/unified/entrance.vue
+12
-2
No files found.
src/assets/images/3d8ced92b374abc6d74a746df73082e.png
0 → 100644
View file @
6639902d
1.09 MB
src/router/index.js
View file @
6639902d
...
...
@@ -9,7 +9,7 @@ import { filterAsyncRouter } from '@/store/modules/permission'
NProgress
.
configure
({
showSpinner
:
false
})
// NProgress Configuration
const
whiteList
=
[
'/login'
]
// no redirect whitelist
const
whiteList
=
[
'/
homes'
,
'/entrance'
,
'/
login'
]
// no redirect whitelist
router
.
beforeEach
((
to
,
from
,
next
)
=>
{
if
(
to
.
meta
.
title
)
{
...
...
src/router/routers.js
View file @
6639902d
...
...
@@ -10,6 +10,14 @@ export const constantRouterMap = [
component
:
(
resolve
)
=>
require
([
'@/views/login'
],
resolve
),
hidden
:
true
},
{
path
:
'/homes'
,
component
:
(
resolve
)
=>
require
([
'@/views/home'
],
resolve
),
hidden
:
true
},
{
path
:
'/entrance'
,
component
:
(
resolve
)
=>
require
([
'@/views/unified/entrance'
],
resolve
),
hidden
:
true
},
{
path
:
'/404'
,
component
:
(
resolve
)
=>
require
([
'@/views/features/404'
],
resolve
),
...
...
src/views/home.vue
View file @
6639902d
...
...
@@ -41,49 +41,49 @@ export default {
num
:
[
{
name
:
"人口专题"
,
path
:
"/
unifiedNanning/
entrance"
,
path
:
"/entrance"
,
TapId
:
"0"
,
icon
:
require
(
"@/assets/images/人员专题.png"
),
},
{
name
:
"机构专题"
,
path
:
"/
unifiedNanning/
entrance"
,
path
:
"/entrance"
,
TapId
:
"1"
,
icon
:
require
(
"@/assets/images/机构专题.png"
),
},
{
name
:
"婚姻"
,
path
:
"/
unifiedNanning/
entrance"
,
path
:
"/entrance"
,
TapId
:
"2"
,
icon
:
require
(
"@/assets/images/婚姻.png"
),
},
{
name
:
"社会救助"
,
path
:
"/
unifiedNanning/
entrance"
,
path
:
"/entrance"
,
TapId
:
"3"
,
icon
:
require
(
"@/assets/images/社会救助.png"
),
},
{
name
:
"两项补贴"
,
path
:
"/
unifiedNanning/
entrance"
,
path
:
"/entrance"
,
TapId
:
"7"
,
icon
:
require
(
"@/assets/images/两项补贴.png"
),
},
{
name
:
"儿童福利"
,
path
:
"/
unifiedNanning/
entrance"
,
path
:
"/entrance"
,
TapId
:
"4"
,
icon
:
require
(
"@/assets/images/儿童福利.png"
),
},
{
name
:
"社会组织"
,
path
:
"/
unifiedNanning/
entrance"
,
path
:
"/entrance"
,
TapId
:
"6"
,
icon
:
require
(
"@/assets/images/社会组织.png"
),
},
{
name
:
"殡葬"
,
path
:
"/
unifiedNanning/
entrance"
,
path
:
"/entrance"
,
TapId
:
"5"
,
icon
:
require
(
"@/assets/images/殡葬.png"
),
},
...
...
src/views/login.vue
View file @
6639902d
<
template
>
<div
class=
"login"
:style=
"'background-image:url('+ Background +');'"
>
<el-form
ref=
"loginForm"
:model=
"loginForm"
:rules=
"loginRules"
label-position=
"left"
label-width=
"0px"
class=
"login-form"
>
<h3
class=
"title"
>
民政数据分析系统
</h3>
<div
class=
"login"
:style=
"'background-image:url(' + Background + ');'"
>
<el-form
ref=
"loginForm"
:model=
"loginForm"
:rules=
"loginRules"
label-position=
"left"
label-width=
"0px"
class=
"login-form"
>
<h3
class=
"title"
>
民政数据分析系统
</h3>
<el-form-item
prop=
"username"
>
<el-input
v-model=
"loginForm.username"
type=
"text"
auto-complete=
"off"
placeholder=
"账号"
>
<svg-icon
slot=
"prefix"
icon-class=
"user"
class=
"el-input__icon input-icon"
/>
<el-input
v-model=
"loginForm.username"
type=
"text"
auto-complete=
"off"
placeholder=
"账号"
>
<svg-icon
slot=
"prefix"
icon-class=
"user"
class=
"el-input__icon input-icon"
/>
</el-input>
</el-form-item>
<el-form-item
prop=
"password"
>
<el-input
v-model=
"loginForm.password"
type=
"password"
auto-complete=
"off"
placeholder=
"密码"
@
keyup
.
enter
.
native=
"handleLogin"
>
<svg-icon
slot=
"prefix"
icon-class=
"password"
class=
"el-input__icon input-icon"
/>
<el-input
v-model=
"loginForm.password"
type=
"password"
auto-complete=
"off"
placeholder=
"密码"
@
keyup
.
enter
.
native=
"handleLogin"
>
<svg-icon
slot=
"prefix"
icon-class=
"password"
class=
"el-input__icon input-icon"
/>
</el-input>
</el-form-item>
<el-form-item
prop=
"code"
>
<el-input
v-model=
"loginForm.code"
auto-complete=
"off"
placeholder=
"验证码"
style=
"width: 63%"
@
keyup
.
enter
.
native=
"handleLogin"
>
<svg-icon
slot=
"prefix"
icon-class=
"validCode"
class=
"el-input__icon input-icon"
/>
<el-input
v-model=
"loginForm.code"
auto-complete=
"off"
placeholder=
"验证码"
style=
"width: 63%"
@
keyup
.
enter
.
native=
"handleLogin"
>
<svg-icon
slot=
"prefix"
icon-class=
"validCode"
class=
"el-input__icon input-icon"
/>
</el-input>
<div
class=
"login-code"
>
<img
:src=
"codeUrl"
@
click=
"getCode"
>
<img
:src=
"codeUrl"
@
click=
"getCode"
/
>
</div>
</el-form-item>
<el-checkbox
v-model=
"loginForm.rememberMe"
style=
"margin:
0 0 25px 0;
"
>
<el-checkbox
v-model=
"loginForm.rememberMe"
style=
"margin:
0 0 25px 0
"
>
记住我
</el-checkbox>
<el-form-item
style=
"width:100%;"
>
<el-button
:loading=
"loading"
size=
"medium"
type=
"primary"
style=
"width:100%;"
@
click
.
native
.
prevent=
"handleLogin"
>
<el-form-item
style=
"width: 100%"
>
<el-button
:loading=
"loading"
size=
"medium"
type=
"primary"
style=
"width: 100%"
@
click
.
native
.
prevent=
"handleLogin"
>
<span
v-if=
"!loading"
>
登 录
</span>
<span
v-else
>
登 录 中...
</span>
</el-button>
...
...
@@ -36,152 +76,170 @@
<div
v-if=
"$store.state.settings.showFooter"
id=
"el-login-footer"
>
<span
v-html=
"$store.state.settings.footerTxt"
/>
<span>
⋅
</span>
<a
href=
"https://beian.miit.gov.cn/#/Integrated/index"
target=
"_blank"
>
{{
$store
.
state
.
settings
.
caseNumber
}}
</a>
<a
href=
"https://beian.miit.gov.cn/#/Integrated/index"
target=
"_blank"
>
{{
$store
.
state
.
settings
.
caseNumber
}}
</a>
</div>
</div>
</
template
>
<
script
>
import
{
encrypt
}
from
'@/utils/rsaEncrypt'
import
Config
from
'@/settings'
import
{
getCodeImg
}
from
'@/api/login'
import
Cookies
from
'js-cookie'
import
qs
from
'qs'
import
Background
from
'@/assets/images/background.jpg'
import
{
encrypt
}
from
"@/utils/rsaEncrypt"
;
import
Config
from
"@/settings"
;
import
{
getCodeImg
}
from
"@/api/login"
;
import
Cookies
from
"js-cookie"
;
import
qs
from
"qs"
;
import
Background
from
"@/assets/images/background.jpg"
;
export
default
{
name
:
'Login'
,
name
:
"Login"
,
data
()
{
return
{
Background
:
Background
,
codeUrl
:
''
,
cookiePass
:
''
,
codeUrl
:
""
,
cookiePass
:
""
,
loginForm
:
{
username
:
'admin'
,
password
:
'123456'
,
username
:
"admin"
,
password
:
"123456"
,
rememberMe
:
false
,
code
:
''
,
uuid
:
''
code
:
""
,
uuid
:
""
,
},
loginRules
:
{
username
:
[{
required
:
true
,
trigger
:
'blur'
,
message
:
'用户名不能为空'
}],
password
:
[{
required
:
true
,
trigger
:
'blur'
,
message
:
'密码不能为空'
}],
code
:
[{
required
:
true
,
trigger
:
'change'
,
message
:
'验证码不能为空'
}]
username
:
[
{
required
:
true
,
trigger
:
"blur"
,
message
:
"用户名不能为空"
},
],
password
:
[
{
required
:
true
,
trigger
:
"blur"
,
message
:
"密码不能为空"
},
],
code
:
[
{
required
:
true
,
trigger
:
"change"
,
message
:
"验证码不能为空"
},
],
},
loading
:
false
,
redirect
:
undefined
}
redirect
:
undefined
,
}
;
},
watch
:
{
$route
:
{
handler
:
function
(
route
)
{
const
data
=
route
.
query
handler
:
function
(
route
)
{
const
data
=
route
.
query
;
if
(
data
&&
data
.
redirect
)
{
this
.
redirect
=
data
.
redirect
delete
data
.
redirect
if
(
JSON
.
stringify
(
data
)
!==
'{}'
)
{
this
.
redirect
=
this
.
redirect
+
'&'
+
qs
.
stringify
(
data
,
{
indices
:
false
})
this
.
redirect
=
data
.
redirect
;
delete
data
.
redirect
;
if
(
JSON
.
stringify
(
data
)
!==
"{}"
)
{
this
.
redirect
=
this
.
redirect
+
"&"
+
qs
.
stringify
(
data
,
{
indices
:
false
});
}
}
},
immediate
:
true
}
immediate
:
true
,
}
,
},
created
()
{
// 获取验证码
this
.
getCode
()
this
.
getCode
()
;
// 获取用户名密码等Cookie
this
.
getCookie
()
this
.
getCookie
()
;
// token 过期提示
this
.
point
()
this
.
point
()
;
},
methods
:
{
getCode
()
{
getCodeImg
().
then
(
res
=>
{
this
.
codeUrl
=
res
.
img
this
.
loginForm
.
uuid
=
res
.
uuid
})
getCodeImg
().
then
(
(
res
)
=>
{
this
.
codeUrl
=
res
.
img
;
this
.
loginForm
.
uuid
=
res
.
uuid
;
})
;
},
getCookie
()
{
const
username
=
Cookies
.
get
(
'username'
)
let
password
=
Cookies
.
get
(
'password'
)
const
rememberMe
=
Cookies
.
get
(
'rememberMe'
)
const
username
=
Cookies
.
get
(
"username"
);
let
password
=
Cookies
.
get
(
"password"
);
const
rememberMe
=
Cookies
.
get
(
"rememberMe"
);
// 保存cookie里面的加密后的密码
this
.
cookiePass
=
password
===
undefined
?
''
:
password
password
=
password
===
undefined
?
this
.
loginForm
.
password
:
password
this
.
cookiePass
=
password
===
undefined
?
""
:
password
;
password
=
password
===
undefined
?
this
.
loginForm
.
password
:
password
;
this
.
loginForm
=
{
username
:
username
===
undefined
?
this
.
loginForm
.
username
:
username
,
password
:
password
,
rememberMe
:
rememberMe
===
undefined
?
false
:
Boolean
(
rememberMe
),
code
:
''
}
code
:
""
,
}
;
},
handleLogin
()
{
this
.
$refs
.
loginForm
.
validate
(
valid
=>
{
this
.
$refs
.
loginForm
.
validate
(
(
valid
)
=>
{
const
user
=
{
username
:
this
.
loginForm
.
username
,
password
:
this
.
loginForm
.
password
,
rememberMe
:
this
.
loginForm
.
rememberMe
,
code
:
this
.
loginForm
.
code
,
uuid
:
this
.
loginForm
.
uuid
}
uuid
:
this
.
loginForm
.
uuid
,
}
;
if
(
user
.
password
!==
this
.
cookiePass
)
{
user
.
password
=
encrypt
(
user
.
password
)
user
.
password
=
encrypt
(
user
.
password
)
;
}
if
(
valid
)
{
this
.
loading
=
true
this
.
loading
=
true
;
if
(
user
.
rememberMe
)
{
Cookies
.
set
(
'username'
,
user
.
username
,
{
expires
:
Config
.
passCookieExpires
})
Cookies
.
set
(
'password'
,
user
.
password
,
{
expires
:
Config
.
passCookieExpires
})
Cookies
.
set
(
'rememberMe'
,
user
.
rememberMe
,
{
expires
:
Config
.
passCookieExpires
})
Cookies
.
set
(
"username"
,
user
.
username
,
{
expires
:
Config
.
passCookieExpires
,
});
Cookies
.
set
(
"password"
,
user
.
password
,
{
expires
:
Config
.
passCookieExpires
,
});
Cookies
.
set
(
"rememberMe"
,
user
.
rememberMe
,
{
expires
:
Config
.
passCookieExpires
,
});
}
else
{
Cookies
.
remove
(
'username'
)
Cookies
.
remove
(
'password'
)
Cookies
.
remove
(
'rememberMe'
)
Cookies
.
remove
(
"username"
);
Cookies
.
remove
(
"password"
);
Cookies
.
remove
(
"rememberMe"
);
}
this
.
$store
.
dispatch
(
'Login'
,
user
).
then
(()
=>
{
this
.
loading
=
false
this
.
$router
.
push
({
path
:
this
.
redirect
||
'/'
})
}).
catch
(()
=>
{
this
.
loading
=
false
this
.
getCode
()
this
.
$store
.
dispatch
(
"Login"
,
user
)
.
then
(()
=>
{
this
.
loading
=
false
;
this
.
$router
.
push
({
path
:
"/homes"
});
})
.
catch
(()
=>
{
this
.
loading
=
false
;
this
.
getCode
();
});
}
else
{
console
.
log
(
'error submit!!'
)
return
false
console
.
log
(
"error submit!!"
);
return
false
;
}
})
})
;
},
point
()
{
const
point
=
Cookies
.
get
(
'point'
)
!==
undefined
const
point
=
Cookies
.
get
(
"point"
)
!==
undefined
;
if
(
point
)
{
this
.
$notify
({
title
:
'提示'
,
message
:
'当前登录状态已过期,请重新登录!'
,
type
:
'warning'
,
duration
:
5000
})
Cookies
.
remove
(
'point'
)
}
title
:
"提示"
,
message
:
"当前登录状态已过期,请重新登录!"
,
type
:
"warning"
,
duration
:
5000
,
});
Cookies
.
remove
(
"point"
);
}
}
}
},
},
};
</
script
>
<
style
rel=
"stylesheet/scss"
lang=
"scss"
>
.login
{
.login
{
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
height
:
100%
;
background-size
:
cover
;
}
.title
{
}
.title
{
margin
:
0
auto
30px
auto
;
text-align
:
center
;
color
:
#707070
;
}
}
.login-form
{
.login-form
{
border-radius
:
6px
;
background
:
#ffffff
;
width
:
385px
;
...
...
@@ -192,23 +250,25 @@ export default {
height
:
38px
;
}
}
.input-icon
{
height
:
39px
;
width
:
14px
;
margin-left
:
2px
;
}
.input-icon
{
height
:
39px
;
width
:
14px
;
margin-left
:
2px
;
}
.login-tip
{
}
.login-tip
{
font-size
:
13px
;
text-align
:
center
;
color
:
#bfbfbf
;
}
.login-code
{
}
.login-code
{
width
:
33%
;
display
:
inline-block
;
height
:
38px
;
float
:
right
;
img
{
img
{
cursor
:
pointer
;
vertical-align
:
middle
}
vertical-align
:
middle
;
}
}
</
style
>
src/views/unified/entrance.vue
View file @
6639902d
<
template
>
<div
class=
"page"
>
<img
src=
"./../../assets/images/3d8ced92b374abc6d74a746df73082e.png"
alt=
""
class=
"background-image"
/>
<div
class=
"flex-container"
>
<img
src=
"./../../assets/images/标题左边素材.png"
alt=
""
class=
"about"
/>
<div
class=
"title-text"
>
...
...
@@ -129,7 +134,12 @@ export default {
</
script
>
<
style
lang=
"scss"
scoped
>
.background-image
{
width
:
100%
;
height
:
160vh
;
position
:
absolute
;
z-index
:
-1
;
}
.footerTxt
{
margin-top
:
20px
;
color
:
#fff
;
...
...
@@ -158,7 +168,7 @@ export default {
.page
{
width
:
100%
;
height
:
1120px
;
background-color
:
#0b0f4e
;
//
background-color
:
#0b0f4e
;
}
.top
{
...
...
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