Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
P
pica.cloud.web-education-admin
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
成员
成员
收起侧边栏
Close sidebar
动态
分支图
统计图
提交
打开侧边栏
com.pica.cloud.education.frontend
pica.cloud.web-education-admin
提交
1dd4084f
提交
1dd4084f
编写于
4月 18, 2019
作者:
Yuanzhao.dai
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
校验&联调
上级
66facfa2
变更
5
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
368 行增加
和
85 行删除
+368
-85
index.js
config/index.js
+7
-3
err-icon.svg
src/assets/image/err-icon.svg
+11
-0
mixins.js
src/utils/mixins.js
+34
-8
utils.js
src/utils/utils.js
+42
-25
login.vue
src/views/login.vue
+274
-49
未找到文件。
config/index.js
浏览文件 @
1dd4084f
...
...
@@ -33,9 +33,13 @@ module.exports = {
// }
// },
context
:
[
//代理路径
'/test'
/*'/test'*/
'/registers'
,
'/mobiles'
,
'/login'
],
proxypath
:
'http://localhost:9000'
,
//proxypath: 'http://localhost:9000',
proxypath
:
'https://dev-saas.yunqueyi.com/web/'
,
cssSourceMap
:
true
}
}
\ No newline at end of file
}
src/assets/image/err-icon.svg
0 → 100644
浏览文件 @
1dd4084f
<?xml version="1.0" encoding="UTF-8"?>
<svg
width=
"18px"
height=
"18px"
viewBox=
"0 0 18 18"
version=
"1.1"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
>
<!-- Generator: Sketch 53.2 (72643) - https://sketchapp.com -->
<title>
Shape
</title>
<desc>
Created with Sketch.
</desc>
<g
id=
"页面-1"
stroke=
"none"
stroke-width=
"1"
fill=
"none"
fill-rule=
"evenodd"
>
<g
id=
"切图"
transform=
"translate(-462.000000, -267.000000)"
fill=
"#FB5B52"
>
<path
d=
"M471,267 C466.028906,267 462,271.028906 462,276 C462,280.971094 466.028906,285 471,285 C475.971094,285 480,280.971094 480,276 C480,271.028906 475.971094,267 471,267 L471,267 Z M475.236328,279.362695 C475.457812,279.580664 475.461328,279.935742 475.245117,280.158984 L475.245117,280.158984 C475.027148,280.380469 474.67207,280.383984 474.448828,280.167773 L471,276.7875 L467.551172,280.166016 C467.329687,280.383984 466.972852,280.380469 466.754883,280.157227 L466.754883,280.157227 C466.536914,279.935742 466.54043,279.578906 466.763672,279.360937 L470.19668,276 L466.763672,272.637305 C466.542188,272.419336 466.538672,272.064258 466.754883,271.841016 L466.754883,271.841016 C466.972852,271.619531 467.32793,271.616016 467.551172,271.832227 L471,275.2125 L474.448828,271.833984 C474.670313,271.616016 475.027148,271.619531 475.245117,271.842773 L475.245117,271.842773 C475.463086,272.064258 475.45957,272.421094 475.236328,272.639063 L471.80332,276 L475.236328,279.362695 L475.236328,279.362695 Z"
id=
"Shape"
></path>
</g>
</g>
</svg>
\ No newline at end of file
src/utils/mixins.js
浏览文件 @
1dd4084f
...
...
@@ -153,18 +153,16 @@ module.exports = {
data
:
para
})
},
//
通用
saas-GET请求
saasGET
(
api
,
para
,
callback
,
str
)
{
// saas-GET请求
saasGET
(
api
,
para
)
{
// para.token = para.token || this.token || "343BCABC890349ACAF357FA79122F9FE"
let
url
=
api
+
this
.
getUrlPara
(
para
)
url
=
encodeURI
(
url
);
return
fetch
({
headers
:
{
sysCode
:
9
sysCode
:
9
,
},
url
:
getSaasDomain
(
url
)
,
url
:
api
,
method
:
'get'
,
data
:
para
params
:
para
})
},
...
...
@@ -188,7 +186,34 @@ module.exports = {
data
:
para
})
},
// 通用saas-POST请求
saasPOST
(
api
,
para
,
cType
)
{
// para.token = para.token || this.token || "343BCABC890349ACAF357FA79122F9FE"
let
header
=
{}
if
(
cType
)
{
header
[
'Content-Type'
]
=
cType
;
}
return
fetch
({
headers
:
{
sysCode
:
9
,
...
header
},
url
:
api
,
method
:
'post'
,
data
:
para
})
},
// 通用saas-PUT请求
saasPUT
(
api
,
para
)
{
return
fetch
({
headers
:
{
sysCode
:
9
,
},
url
:
api
,
method
:
'put'
,
data
:
para
})
},
// 从html参数
getUrlKey
(
name
)
{
if
(
decodeURIComponent
&&
location
.
href
)
{
...
...
@@ -197,6 +222,7 @@ module.exports = {
return
null
}
},
getUrlSearch
(
url
,
name
)
{
if
(
typeof
name
==
'undefined'
)
{
name
=
url
...
...
src/utils/utils.js
浏览文件 @
1dd4084f
...
...
@@ -271,23 +271,29 @@ const detectOS = () => {
// 获取用户浏览器信息
const
getBrowser
=
()
=>
{
// let OsObject = "未知";
// if (navigator.userAgent.indexOf("MSIE") > 0) {
// return "IE";
// }
// if (navigator.userAgent.indexOf("Firefox") > 0) {
// return "Firefox";
// }
// if (navigator.userAgent.indexOf("Chrome") > 0) {
// return "Chrome";
// }
// if (navigator.userAgent.indexOf("Safari") > 0) {
// return "Safari";
// }
// if (navigator.userAgent.indexOf("Gecko") > 0) {
// return "Gecko";
// }
return
navigator
.
userAgent
;
let
OsObject
=
"未知"
;
if
(
navigator
.
userAgent
.
indexOf
(
"MSIE"
)
>
0
&&
navigator
.
userAgent
.
indexOf
(
"compatible"
)
>
-
1
)
{
//<ie11
return
"IE"
;
}
if
(
navigator
.
userAgent
.
indexOf
(
"Trident"
)
>
0
&&
navigator
.
userAgent
.
indexOf
(
"rv:11.0"
)
>
-
1
)
{
//ie11
return
"IE"
;
}
if
(
navigator
.
userAgent
.
indexOf
(
"Firefox"
)
>
0
)
{
return
"Firefox"
;
}
if
(
navigator
.
userAgent
.
indexOf
(
"Chrome"
)
>
0
)
{
return
"Chrome"
;
}
if
(
navigator
.
userAgent
.
indexOf
(
"Safari"
)
>
0
)
{
return
"Safari"
;
}
if
(
navigator
.
userAgent
.
indexOf
(
"Gecko"
)
>
0
)
{
return
"Firefox"
;
}
if
(
navigator
.
userAgent
.
indexOf
(
"360"
)
>
0
)
{
return
"360"
;
}
return
OsObject
;
};
const
GetLocalIPAddress
=
()
=>
{
...
...
@@ -306,7 +312,7 @@ const GetLocalIPAddress = () => {
// 获取用户终端信息
const
getTerminalType
=
()
=>
{
let
brow
=
"
未知
"
;
let
brow
=
"
unknown
"
;
// alert(navigator.userAgent);
if
(
navigator
.
userAgent
.
indexOf
(
'iPad'
)
>
-
1
)
{
// alert("iPad");
...
...
@@ -315,25 +321,25 @@ const getTerminalType = () => {
if
(
navigator
.
userAgent
.
indexOf
(
'Android'
)
>
-
1
||
navigator
.
userAgent
.
indexOf
(
'Linux'
)
>
-
1
)
{
// alert("Android");
return
brow
=
"android
手机
"
;
return
brow
=
"android"
;
}
if
(
navigator
.
userAgent
.
indexOf
(
'iPhone'
)
>
-
1
// || navigator.userAgent.indexOf('Mac') > -1
)
{
// alert("iPhone");
return
brow
=
"iPhone
手机
"
;
return
brow
=
"iPhone"
;
}
if
(
navigator
.
userAgent
.
indexOf
(
'Trident'
)
>
-
1
)
{
// alert("Trident");
return
brow
=
"
电脑
"
;
return
brow
=
"
PC
"
;
}
if
(
navigator
.
userAgent
.
indexOf
(
'Presto'
)
>
-
1
)
{
// alert("Presto");
return
brow
=
"
电脑
"
;
return
brow
=
"
PC
"
;
}
if
(
navigator
.
userAgent
.
indexOf
(
'Chrome'
)
>
-
1
)
{
// alert("Chrome");
return
brow
=
"
电脑
"
;
return
brow
=
"
PC
"
;
}
if
(
navigator
.
userAgent
.
indexOf
(
'AppleWebKit'
)
>
-
1
)
{
// alert("AppleWebKit");
...
...
@@ -342,7 +348,7 @@ const getTerminalType = () => {
if
(
navigator
.
userAgent
.
indexOf
(
'Gecko'
)
>
-
1
&&
navigator
.
userAgent
.
indexOf
(
'KHTML'
)
==
-
1
)
{
// alert("Gecko");
return
brow
=
"
电脑
"
;
return
brow
=
"
PC
"
;
}
if
(
navigator
.
userAgent
.
indexOf
(
"Mac OS X"
)
>
-
1
)
{
// alert("ios");
...
...
@@ -350,7 +356,7 @@ const getTerminalType = () => {
}
if
(
navigator
.
userAgent
.
indexOf
(
'Safari'
)
==
-
1
)
{
// alert("Safari");
return
brow
=
"
电脑
"
;
return
brow
=
"
PC
"
;
}
return
brow
;
};
...
...
@@ -449,6 +455,17 @@ export const ssoLogin2 = () => { //单独部署不走saas端登录
initEnvironment
();
};
export
const
getDeviceInfo
=
()
=>
{
//系统信息,获取验证码时有用到
return
{
device_brand
:
localStorage
.
getItem
(
'terminalType'
),
device_type
:
1
,
system_level
:
localStorage
.
getItem
(
'OS'
),
device_ip
:
localStorage
.
getItem
(
'ipAddress'
),
browser_ver
:
localStorage
.
getItem
(
'browser'
)
}
};
//单点登录--end
//退出登录,跳转到登录页面
...
...
src/views/login.vue
浏览文件 @
1dd4084f
...
...
@@ -9,21 +9,23 @@
<p
class=
"title-input"
>
账号登录
</p>
<img
src=
"../assets/image/underline.svg"
alt=
""
>
</div>
<el-form
ref=
"loginForm"
:model=
"loginData"
>
<el-form-item
label=
""
>
<el-input
v-model=
"loginData.mobile"
placeholder=
"手机号"
maxlength=
"11"
>
<el-form
ref=
"loginForm"
:model=
"loginData"
>
<el-form-item
label=
""
prop=
"mobile"
>
<el-input
v-model=
"loginData.mobile"
placeholder=
"手机号"
maxlength=
"11"
:class=
"
{errColor: loginMobileErr}"
>
<i
slot=
"prefix"
class=
"el-input__icon my-icon mobile-icon"
></i>
</el-input>
<p
class=
"err-text"
v-show=
"loginMobileErr"
><img
src=
"../assets/image/err-icon.svg"
alt=
""
>
{{
loginMobileErrText
}}
</p>
</el-form-item>
<el-form-item
label=
""
>
<el-input
v-model=
"loginData.password"
placeholder=
"密码"
type=
"password"
v-if=
"!showPSW"
>
<el-form-item
label=
""
prop=
"password"
>
<el-input
v-model=
"loginData.password"
placeholder=
"密码"
type=
"password"
v-if=
"!showPSW"
:class=
"
{errColor: loginPWDErr}"
>
<i
slot=
"prefix"
class=
"el-input__icon my-icon password-icon"
></i>
<i
@
click=
"showPWSBtn"
slot=
"suffix"
class=
"el-input__icon my-icon open-eyes-icon"
></i>
</el-input>
<el-input
v-model=
"loginData.password"
placeholder=
"密码"
v-else
>
<el-input
v-model=
"loginData.password"
placeholder=
"密码"
v-else
:class=
"
{errColor: loginPWDErr}"
>
<i
slot=
"prefix"
class=
"el-input__icon my-icon password-icon"
></i>
<i
@
click=
"hidePWSBtn"
slot=
"suffix"
class=
"el-input__icon my-icon close-eyes-icon"
></i>
</el-input>
<p
class=
"err-text"
v-show=
"loginPWDErr"
><img
src=
"../assets/image/err-icon.svg"
alt=
""
>
{{
loginPWDErrText
}}
</p>
</el-form-item>
</el-form>
<div
class=
"button-div"
>
...
...
@@ -41,33 +43,36 @@
</div>
<el-form
ref=
"loginForm"
:model=
"resetPassword"
>
<el-form-item
label=
""
>
<el-input
v-model=
"resetPassword.mobile"
placeholder=
"手机号"
maxlength=
"11"
>
<el-input
v-model=
"resetPassword.mobile"
placeholder=
"手机号"
maxlength=
"11"
:class=
"
{errColor: resetMobileErr}"
>
<i
slot=
"prefix"
class=
"el-input__icon my-icon mobile-icon"
></i>
</el-input>
<p
class=
"err-text"
v-show=
"resetMobileErr"
><img
src=
"../assets/image/err-icon.svg"
alt=
""
>
{{
resetMobileErrText
}}
</p>
</el-form-item>
<el-form-item
label=
""
>
<el-input
v-model=
"resetPassword.authCode"
placeholder=
"短信验证码"
>
<el-input
v-model=
"resetPassword.authCode"
placeholder=
"短信验证码"
:class=
"
{errColor: resetCodeErr}"
>
<i
slot=
"prefix"
class=
"el-input__icon my-icon auth-code-icon"
></i>
<i
v-if=
"countDown == 0"
@
click=
"getAuthCode"
slot=
"suffix"
class=
"el-input__icon get-auth-code"
>
获取验证码
</i>
<i
v-else
slot=
"suffix"
class=
"el-input__icon get-auth-warning"
>
{{
countDown
}}
s后重发
</i>
</el-input>
<p
class=
"err-text"
v-show=
"resetCodeErr"
><img
src=
"../assets/image/err-icon.svg"
alt=
""
>
{{
resetCodeErrText
}}
</p>
</el-form-item>
<el-form-item
label=
""
>
<el-input
v-model=
"resetPassword.password"
placeholder=
"新密码"
type=
"password"
v-if=
"!showPSW"
>
<el-input
v-model=
"resetPassword.password"
placeholder=
"新密码"
type=
"password"
v-if=
"!showPSW"
:class=
"
{errColor: resetPWDErr}"
>
<i
slot=
"prefix"
class=
"el-input__icon my-icon password-icon"
></i>
<i
@
click=
"showPWSBtn"
slot=
"suffix"
class=
"el-input__icon my-icon open-eyes-icon"
></i>
</el-input>
<el-input
v-model=
"resetPassword.password"
placeholder=
"新密码"
v-else
>
<el-input
v-model=
"resetPassword.password"
placeholder=
"新密码"
v-else
:class=
"
{errColor: resetPWDErr}"
>
<i
slot=
"prefix"
class=
"el-input__icon my-icon password-icon"
></i>
<i
@
click=
"hidePWSBtn"
slot=
"suffix"
class=
"el-input__icon my-icon close-eyes-icon"
></i>
</el-input>
<p
class=
"err-text"
v-show=
"resetPWDErr"
><img
src=
"../assets/image/err-icon.svg"
alt=
""
>
{{
resetPWDErrText
}}
</p>
</el-form-item>
</el-form>
<div
class=
"button-div"
>
<!--
<div
class=
"forget-password"
>
<p>
忘记密码?
</p>
</div>
-->
<button>
重设密码
</button>
<button
@
click=
"resetPWD"
>
重设密码
</button>
<div
class=
"login-now"
>
<p
@
click=
"goToLogin"
>
立即登录
</p>
</div>
...
...
@@ -84,7 +89,7 @@
</
template
>
<
script
>
import
{
ssoLogin2
,
}
from
'@/utils/utils'
;
import
{
ssoLogin2
,
getDeviceInfo
}
from
'@/utils/utils'
;
import
md5
from
'js-md5'
;
export
default
{
...
...
@@ -97,13 +102,49 @@
showVRCode
:
false
,
showPSW
:
false
,
countDown
:
0
,
timer
:
null
timer
:
null
,
loginMobileErr
:
false
,
loginMobileErrText
:
''
,
loginPWDErr
:
false
,
loginPWDErrText
:
''
,
resetMobileErr
:
''
,
resetMobileErrText
:
''
,
resetCodeErr
:
''
,
resetCodeErrText
:
''
,
resetPWDErr
:
''
,
resetPWDErrText
:
''
}
},
created
()
{
ssoLogin2
()
//初始化登录信息
},
methods
:
{
checkPhone
(
val
)
{
if
(
!
(
/^1
[
345678
]\d{9}
$/
.
test
(
val
)))
{
return
false
;
}
else
{
return
true
;
}
},
checkPwdVal
(
val
)
{
if
(
!
/
(?=
.*
\d)
/
.
test
(
val
)){
return
false
}
if
(
!
/
(?=
.*
[
A-Za-z
])
/
.
test
(
val
)){
return
false
}
if
(
!
/
[
`~!@#$%^&*()=|{}_+':
]
/
.
test
(
val
)){
return
false
}
return
true
},
checkPassword
(
val
)
{
if
(
val
.
length
<
8
||
val
.
length
>
16
){
return
false
;
}
else
{
return
true
;
}
},
goToLogin
()
{
this
.
loginFlag
=
true
},
...
...
@@ -123,32 +164,193 @@
this
.
showPSW
=
false
},
getAuthCode
()
{
const
TIME_COUNT
=
60
;
if
(
!
this
.
timer
)
{
this
.
countDown
=
TIME_COUNT
;
this
.
timer
=
setInterval
(()
=>
{
if
(
this
.
countDown
>
0
&&
this
.
countDown
<=
TIME_COUNT
)
{
this
.
countDown
--
;
}
else
{
this
.
countDown
=
0
;
clearInterval
(
this
.
timer
);
this
.
timer
=
null
;
}
},
1000
)
if
(
!
this
.
resetPassword
.
mobile
)
{
this
.
resetMobileErr
=
true
;
this
.
resetMobileErrText
=
'请输入手机号'
;
return
;
}
else
if
(
!
this
.
checkPhone
(
this
.
resetPassword
.
mobile
))
{
this
.
resetMobileErr
=
true
;
this
.
resetMobileErrText
=
'请输入正确的手机号'
;
return
;
}
else
{
this
.
resetMobileErr
=
false
;
this
.
resetMobileErrText
=
''
;
}
let
params
=
{
receiver
:
this
.
resetPassword
.
mobile
,
token
:
localStorage
.
getItem
(
"token"
),
flag
:
2
,
//1表示注册 2表示忘记密码
gaoFlag
:
1
,
//1表示saas 2表示高血压项目
deviceInfo
:
getDeviceInfo
()
};
this
.
saasPOST
(
'/mobiles/sendCaptchaNew'
,
params
,
'application/x-www-form-urlencoded;charset=UTF-8'
).
then
(
data
=>
{
console
.
log
(
'返回结果'
,
data
)
if
(
data
.
mobileFlag
==
2
)
{
this
.
resetMobileErr
=
true
;
this
.
resetMobileErrText
=
'该手机号尚未注册!'
;
return
;
}
else
{
const
TIME_COUNT
=
60
;
if
(
!
this
.
timer
)
{
this
.
countDown
=
TIME_COUNT
;
this
.
timer
=
setInterval
(()
=>
{
if
(
this
.
countDown
>
0
&&
this
.
countDown
<=
TIME_COUNT
)
{
this
.
countDown
--
;
}
else
{
this
.
countDown
=
0
;
clearInterval
(
this
.
timer
);
this
.
timer
=
null
;
}
},
1000
)
}
}
}).
catch
(
err
=>
{
this
.
$message
({
message
:
'系统错误!'
,
type
:
'error'
});
})
},
login
()
{
if
(
!
this
.
loginData
.
mobile
)
{
this
.
loginMobileErr
=
true
;
this
.
loginMobileErrText
=
'请输入手机号'
;
}
else
if
(
!
this
.
checkPhone
(
this
.
loginData
.
mobile
))
{
this
.
loginMobileErr
=
true
;
this
.
loginMobileErrText
=
'请输入正确的手机号'
;
}
else
{
this
.
loginMobileErr
=
false
;
this
.
loginMobileErrText
=
''
;
}
if
(
!
this
.
loginData
.
password
)
{
this
.
loginPWDErr
=
true
;
this
.
loginPWDErrText
=
'请输入密码'
;
}
else
{
this
.
loginPWDErr
=
false
;
this
.
loginPWDErrText
=
''
;
}
if
(
!
this
.
loginData
.
mobile
||!
this
.
checkPhone
(
this
.
loginData
.
mobile
)
||!
this
.
loginData
.
password
)
{
return
;
}
let
params
=
{
mobile
:
this
.
loginData
.
mobile
,
OS
:
localStorage
.
getItem
(
"OS"
),
browser
:
localStorage
.
getItem
(
"browser"
),
terminalType
:
localStorage
.
getItem
(
"terminalType"
),
ipAddress
:
localStorage
.
getItem
(
"ipAddress"
),
password
:
md5
(
this
.
loginData
.
password
).
toUpperCase
()
password
:
md5
(
this
.
loginData
.
password
).
toUpperCase
(),
token
:
localStorage
.
getItem
(
"token"
),
}
console
.
log
(
'params'
,
params
)
this
.
saasGET
(
'
web/registers/saasLogin'
,
params
).
then
(({
data
})
=>
{
this
.
saasGET
(
'
/registers/saasLogin'
,
params
).
then
(
data
=>
{
console
.
log
(
'返回结果'
,
data
)
if
(
data
.
mobileFlag
==
1
)
{
/*this.$message({
message: '手机号或密码不正确!',
type: 'error'
});*/
this
.
loginPWDErr
=
true
;
this
.
loginPWDErrText
=
'手机号或密码不正确!'
;
return
;
}
if
(
data
.
isExist
==
2
)
{
/*this.$message({
message: '该手机号尚未注册!',
type: 'error'
});*/
this
.
loginMobileErr
=
true
;
this
.
loginMobileErrText
=
'该手机号尚未注册!'
;
return
;
}
localStorage
.
setItem
(
"token"
,
data
.
token
);
localStorage
.
setItem
(
'doctorId'
,
data
.
picapDoctor
.
id
);
localStorage
.
setItem
(
"mobilePhone"
,
params
.
mobile
);
localStorage
.
setItem
(
"pass"
,
params
.
password
);
sessionStorage
.
setItem
(
"mobile"
,
params
.
mobile
);
sessionStorage
.
setItem
(
"pass"
,
params
.
password
);
this
.
$router
.
push
(
'/'
);
}).
catch
(
err
=>
{
this
.
$message
({
message
:
'系统错误!'
,
type
:
'error'
});
})
},
resetPWD
()
{
if
(
!
this
.
resetPassword
.
mobile
)
{
this
.
resetMobileErr
=
true
;
this
.
resetMobileErrText
=
'请输入手机号'
;
}
else
if
(
!
this
.
checkPhone
(
this
.
resetPassword
.
mobile
))
{
this
.
resetMobileErr
=
true
;
this
.
resetMobileErrText
=
'请输入正确的手机号'
;
}
else
{
this
.
resetMobileErr
=
false
;
this
.
resetMobileErrText
=
''
;
}
if
(
!
this
.
resetPassword
.
authCode
)
{
this
.
resetCodeErr
=
true
;
this
.
resetCodeErrText
=
'请输入验证码'
;
}
else
{
this
.
resetCodeErr
=
false
;
this
.
resetCodeErrText
=
''
;
}
if
(
!
this
.
resetPassword
.
password
)
{
this
.
resetPWDErr
=
true
;
this
.
resetPWDErrText
=
'请输入密码'
;
}
else
if
(
!
this
.
checkPassword
(
this
.
resetPassword
.
password
))
{
this
.
resetPWDErr
=
true
;
this
.
resetPWDErrText
=
'请输入8-16位的密码'
;
}
else
if
(
!
this
.
checkPwdVal
(
this
.
resetPassword
.
password
))
{
this
.
resetPWDErr
=
true
;
this
.
resetPWDErrText
=
'密码须同时包含数字,字母和字符'
;
}
else
{
this
.
resetPWDErr
=
false
;
this
.
resetPWDErrText
=
''
;
}
if
(
!
this
.
resetPassword
.
mobile
||!
this
.
checkPhone
(
this
.
resetPassword
.
mobile
)
||!
this
.
resetPassword
.
authCode
||!
this
.
resetPassword
.
password
||!
this
.
checkPassword
(
this
.
resetPassword
.
password
)
||!
this
.
checkPwdVal
(
this
.
resetPassword
.
password
))
{
return
;
}
let
para
=
{
mobile
:
this
.
resetPassword
.
mobile
,
authCode
:
this
.
resetPassword
.
authCode
}
this
.
saasGET
(
'/mobiles/checkCaptcha'
,
para
).
then
(
data
=>
{
let
req
=
{
mobile
:
this
.
resetPassword
.
mobile
,
password
:
md5
(
this
.
resetPassword
.
authCode
).
toUpperCase
()
}
this
.
saasPUT
(
'/login/password'
,
req
).
then
(
data
=>
{
this
.
$message
({
message
:
'重设密码成功,请重新登录!'
,
type
:
'success'
});
setTimeout
(
function
()
{
window
.
location
.
reload
();
},
2000
)
}).
catch
(
err
=>
{
this
.
$message
({
message
:
'系统错误!'
,
type
:
'error'
});
})
}).
catch
(
err
=>
{
/*this.$message({
message: '验证码已过期或不存在!',
type: 'error'
});*/
this
.
resetCodeErr
=
true
;
this
.
resetCodeErrText
=
'验证码已过期或不存在'
;
return
;
})
}
}
...
...
@@ -156,29 +358,42 @@
</
script
>
<
style
lang=
"scss"
>
.my-icon
{
display
:
inline-block
;
height
:
20px
;
margin-top
:
9px
;
}
.mobile-icon
{
background
:
url("../assets/image/mobile.svg")
no-repeat
;
}
.password-icon
{
background
:
url("../assets/image/password.svg")
no-repeat
;
}
.auth-code-icon
{
background
:
url("../assets/image/auth-code.svg")
no-repeat
;
}
.open-eyes-icon
{
background
:
url("../assets/image/open-eyes.svg")
no-repeat
;
cursor
:
pointer
;
}
.close-eyes-icon
{
background
:
url("../assets/image/close-eyes.svg")
no-repeat
;
cursor
:
pointer
;
}
.login-other
{
.my-icon
{
display
:
inline-block
;
height
:
20px
;
margin-top
:
9px
;
}
.mobile-icon
{
background
:
url("../assets/image/mobile.svg")
no-repeat
;
}
.password-icon
{
background
:
url("../assets/image/password.svg")
no-repeat
;
}
.auth-code-icon
{
background
:
url("../assets/image/auth-code.svg")
no-repeat
;
}
.open-eyes-icon
{
background
:
url("../assets/image/open-eyes.svg")
no-repeat
;
cursor
:
pointer
;
}
.close-eyes-icon
{
background
:
url("../assets/image/close-eyes.svg")
no-repeat
;
cursor
:
pointer
;
}
.err-text
{
color
:
#FB5B52
;
height
:
20px
;
line-height
:
20px
;
margin-top
:
4px
;
img
{
width
:
14px
;
height
:
14px
;
margin-right
:
3px
;
vertical-align
:
middle
;
}
}
display
:
flex
;
height
:
100%
;
flex-direction
:
row
;
...
...
@@ -242,6 +457,7 @@
.el-form
{
.el-form-item
{
.el-form-item__content
{
position
:
relative
;
.el-input
{
.el-input__inner
{
border-radius
:
0
;
...
...
@@ -256,6 +472,15 @@
color
:
#666666
;
}
}
.err-text
{
position
:
absolute
;
}
.errColor
{
.el-input__inner
{
border-color
:
#FB5B52
;
}
}
}
}
...
...
写
预览
Markdown
格式
0%
请重试
or
附加一个文件
附加文件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录