Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
admin
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
b2dd1708
authored
Sep 10, 2024
by
scholar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
实现注册功能
parent
2205526a
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
74 additions
and
55 deletions
+74
-55
src/api/login/index.ts
+1
-2
src/views/Login/components/RegisterForm.vue
+73
-53
No files found.
src/api/login/index.ts
View file @
b2dd1708
import
request
from
'@/config/axios'
import
request
from
'@/config/axios'
import
{
getRefreshToken
}
from
'@/utils/auth'
import
{
getRefreshToken
}
from
'@/utils/auth'
import
type
{
RegisterVO
,
UserLoginVO
}
from
'./types'
import
type
{
RegisterVO
,
UserLoginVO
}
from
'./types'
export
interface
SmsCodeVO
{
export
interface
SmsCodeVO
{
mobile
:
string
mobile
:
string
...
@@ -19,7 +19,6 @@ export const login = (data: UserLoginVO) => {
...
@@ -19,7 +19,6 @@ export const login = (data: UserLoginVO) => {
// 注册
// 注册
export
const
register
=
(
data
:
RegisterVO
)
=>
{
export
const
register
=
(
data
:
RegisterVO
)
=>
{
console
.
log
(
"data: RegisterVO========="
,
data
)
return
request
.
post
({
url
:
'/system/auth/register'
,
data
})
return
request
.
post
({
url
:
'/system/auth/register'
,
data
})
}
}
...
...
src/views/Login/components/RegisterForm.vue
View file @
b2dd1708
...
@@ -38,6 +38,16 @@
...
@@ -38,6 +38,16 @@
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"24"
style=
"padding-right: 10px; padding-left: 10px"
>
<el-col
:span=
"24"
style=
"padding-right: 10px; padding-left: 10px"
>
<el-form-item
prop=
"username"
>
<el-input
v-model=
"registerData.registerForm.nickname"
placeholder=
"昵称"
size=
"large"
:prefix-icon=
"iconAvatar"
/>
</el-form-item>
</el-col>
<el-col
:span=
"24"
style=
"padding-right: 10px; padding-left: 10px"
>
<el-form-item
prop=
"password"
>
<el-form-item
prop=
"password"
>
<el-input
<el-input
v-model=
"registerData.registerForm.password"
v-model=
"registerData.registerForm.password"
...
@@ -86,7 +96,7 @@
...
@@ -86,7 +96,7 @@
</el-form>
</el-form>
</
template
>
</
template
>
<
script
lang=
"ts"
setup
>
<
script
lang=
"ts"
setup
>
import
{
ElLoading
,
ElMessageBox
}
from
'element-plus'
import
{
ElLoading
}
from
'element-plus'
import
LoginFormTitle
from
'./LoginFormTitle.vue'
import
LoginFormTitle
from
'./LoginFormTitle.vue'
import
type
{
RouteLocationNormalizedLoaded
}
from
'vue-router'
import
type
{
RouteLocationNormalizedLoaded
}
from
'vue-router'
import
{
useIcon
}
from
'@/hooks/web/useIcon'
import
{
useIcon
}
from
'@/hooks/web/useIcon'
...
@@ -110,35 +120,37 @@ const loginLoading = ref(false)
...
@@ -110,35 +120,37 @@ const loginLoading = ref(false)
const
verify
=
ref
()
const
verify
=
ref
()
const
captchaType
=
ref
(
'blockPuzzle'
)
// blockPuzzle 滑块 clickWord 点击文字
const
captchaType
=
ref
(
'blockPuzzle'
)
// blockPuzzle 滑块 clickWord 点击文字
const
getShow
=
computed
(()
=>
unref
(
getLoginState
)
===
LoginStateEnum
.
REGISTER
)
const
getShow
=
computed
(()
=>
unref
(
getLoginState
)
===
LoginStateEnum
.
REGISTER
)
const
equalToPassword
=
(
rule
,
value
,
callback
)
=>
{
const
equalToPassword
=
(
rule
,
value
,
callback
)
=>
{
if
(
registerData
.
registerForm
.
password
!==
value
)
{
if
(
registerData
.
registerForm
.
password
!==
value
)
{
callback
(
new
Error
(
"两次输入的密码不一致"
));
callback
(
new
Error
(
'两次输入的密码不一致'
))
}
else
{
}
else
{
callback
()
;
callback
()
}
}
}
;
}
const
registerRules
=
{
const
registerRules
=
{
tenantName
:
[
tenantName
:
[
{
required
:
true
,
trigger
:
"blur"
,
message
:
"请输入您所属的租户"
},
{
required
:
true
,
trigger
:
'blur'
,
message
:
'请输入您所属的租户'
},
{
min
:
2
,
max
:
20
,
message
:
"租户账号长度必须介于 2 和 20 之间"
,
trigger
:
"blur"
}
{
min
:
2
,
max
:
20
,
message
:
'租户账号长度必须介于 2 和 20 之间'
,
trigger
:
'blur'
}
],
],
username
:
[
username
:
[
{
required
:
true
,
trigger
:
"blur"
,
message
:
"请输入您的账号"
},
{
required
:
true
,
trigger
:
'blur'
,
message
:
'请输入您的账号'
},
{
min
:
2
,
max
:
20
,
message
:
"用户账号长度必须介于 2 和 20 之间"
,
trigger
:
"blur"
}
{
min
:
4
,
max
:
30
,
message
:
'用户账号长度必须介于 4 和 30 之间'
,
trigger
:
'blur'
}
],
nickname
:
[
{
required
:
true
,
trigger
:
'blur'
,
message
:
'请输入您的昵称'
},
{
min
:
0
,
max
:
30
,
message
:
'昵称长度必须介于 0 和 30 之间'
,
trigger
:
'blur'
}
],
],
password
:
[
password
:
[
{
required
:
true
,
trigger
:
"blur"
,
message
:
"请输入您的密码"
},
{
required
:
true
,
trigger
:
'blur'
,
message
:
'请输入您的密码'
},
{
min
:
5
,
max
:
20
,
message
:
"用户密码长度必须介于 5 和 20 之间"
,
trigger
:
"blur"
},
{
min
:
5
,
max
:
20
,
message
:
'用户密码长度必须介于 5 和 20 之间'
,
trigger
:
'blur'
},
{
pattern
:
/^
[^
<>"'|
\\]
+$/
,
message
:
"不能包含非法字符:
<
>
\
" ' \\\ |"
,
trigger
:
"blur"
}
{
pattern
:
/^
[^
<>"'|
\\]
+$/
,
message
:
'不能包含非法字符:
<
>
"
\
' \\\ |'
,
trigger
:
'blur'
}
],
],
confirmPassword
:
[
confirmPassword
:
[
{
required
:
true
,
trigger
:
"blur"
,
message
:
"请再次输入您的密码"
},
{
required
:
true
,
trigger
:
'blur'
,
message
:
'请再次输入您的密码'
},
{
required
:
true
,
validator
:
equalToPassword
,
trigger
:
"blur"
}
{
required
:
true
,
validator
:
equalToPassword
,
trigger
:
'blur'
}
]
]
}
}
...
@@ -148,59 +160,67 @@ const registerData = reactive({
...
@@ -148,59 +160,67 @@ const registerData = reactive({
tenantEnable
:
import
.
meta
.
env
.
VITE_APP_TENANT_ENABLE
,
tenantEnable
:
import
.
meta
.
env
.
VITE_APP_TENANT_ENABLE
,
registerForm
:
{
registerForm
:
{
tenantName
:
''
,
tenantName
:
''
,
nickname
:
"芋艿"
,
nickname
:
''
,
tenantId
:
0
,
tenantId
:
0
,
username
:
''
,
username
:
''
,
password
:
''
,
password
:
''
,
confirmPassword
:
""
,
confirmPassword
:
''
,
captchaVerification
:
''
captchaVerification
:
''
}
}
})
})
async
function
handleRegister
()
{
async
function
handleRegister
(
params
)
{
loading
.
value
=
true
loading
.
value
=
true
await
getTenantId
()
try
{
registerData
.
registerForm
.
tenantId
=
authUtil
.
getTenantId
()
if
(
registerData
.
tenantEnable
)
{
await
getTenantId
()
registerData
.
registerForm
.
tenantId
=
authUtil
.
getTenantId
()
}
if
(
registerData
.
captchaEnable
)
{
registerData
.
registerForm
.
captchaVerification
=
params
.
captchaVerification
}
LoginApi
.
register
(
registerData
.
registerForm
).
then
(()
=>
{
console
.
log
(
const
username
=
registerData
.
registerForm
.
username
;
'registerData.registerForm.captchaVerification===='
,
ElMessageBox
.
alert
(
"
<
font
color
=
'green'
>
恭喜你,您的账号
" + username + "
注册成功!
<
/font>", "系统提示",
{
registerData
.
registerForm
.
captchaVerification
dangerouslyUseHTMLString
:
true
,
)
type
:
"success"
,
}).
then
(
async
()
=>
{
const
res
=
await
LoginApi
.
register
(
registerData
.
registerForm
)
const
res
=
await
LoginApi
.
login
(
registerData
.
registerForm
)
if
(
!
res
)
{
if
(
!
res
)
{
return
return
}
}
loading
.
value
=
ElLoading
.
service
({
loading
.
value
=
ElLoading
.
service
({
lock
:
true
,
lock
:
true
,
text
:
'正在加载系统中...'
,
text
:
'正在加载系统中...'
,
background
:
'rgba(0, 0, 0, 0.7)'
background
:
'rgba(0, 0, 0, 0.7)'
})
authUtil
.
removeLoginForm
()
authUtil
.
setToken
(
res
)
if
(
!
redirect
.
value
)
{
redirect
.
value
=
'/'
}
// 判断是否为SSO登录
if
(
redirect
.
value
.
indexOf
(
'sso'
)
!==
-
1
)
{
window
.
location
.
href
=
window
.
location
.
href
.
replace
(
'/login?redirect='
,
''
)
}
else
{
push
({
path
:
redirect
.
value
||
permissionStore
.
addRouters
[
0
].
path
})
}
loginLoading
.
value
=
false
loading
.
value
.
close
()
})
})
})
authUtil
.
removeLoginForm
()
authUtil
.
setToken
(
res
)
if
(
!
redirect
.
value
)
{
redirect
.
value
=
'/'
}
// 判断是否为SSO登录
if
(
redirect
.
value
.
indexOf
(
'sso'
)
!==
-
1
)
{
window
.
location
.
href
=
window
.
location
.
href
.
replace
(
'/login?redirect='
,
''
)
}
else
{
push
({
path
:
redirect
.
value
||
permissionStore
.
addRouters
[
0
].
path
})
}
}
finally
{
loginLoading
.
value
=
false
loading
.
value
.
close
()
}
}
}
// 获取验证码
// 获取验证码
const
getCode
=
async
()
=>
{
const
getCode
=
async
()
=>
{
// 情况一,未开启:则直接
登录
// 情况一,未开启:则直接
注册
if
(
registerData
.
captchaEnable
===
'false'
)
{
if
(
registerData
.
captchaEnable
===
'false'
)
{
await
handleRegister
()
await
handleRegister
(
{}
)
}
else
{
}
else
{
// 情况二,已开启:则展示验证码;只有完成验证码的情况,才进行
登录
// 情况二,已开启:则展示验证码;只有完成验证码的情况,才进行
注册
// 弹出验证码
// 弹出验证码
verify
.
value
.
show
()
verify
.
value
.
show
()
}
}
...
...
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