Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
factory_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
1
Merge Requests
1
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
qinjianhui
factory_front
Commits
7d7aece4
Commit
7d7aece4
authored
Mar 04, 2024
by
qinjianhui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 登录页面开发
parent
266a6f4e
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
254 additions
and
0 deletions
+254
-0
src/views/Login.vue
+130
-0
src/views/Reset.vue
+124
-0
No files found.
src/views/Login.vue
0 → 100644
View file @
7d7aece4
<
template
>
<div
class=
"login-page"
>
<div
class=
"user-container"
>
<div
class=
"logo-container"
>
<img
src=
"../assets/images/logo.png"
alt=
"logo"
/>
<div
class=
"logo-title"
>
厂商登录
</div>
</div>
<div
class=
"form-container"
>
<el-form
:model=
"loginForm"
ref=
"loginFormRef"
:rules=
"rules"
size=
"large"
>
<el-form-item
prop=
"factoryNumber"
>
<el-input
placeholder=
"请输入共厂号"
v-model=
"loginForm.factoryNumber"
>
<template
#
prefix
>
<el-icon
class=
"el-input__icon"
><User
/></el-icon>
</
template
>
</el-input>
</el-form-item>
<el-form-item
prop=
"iphone"
>
<el-input
v-model=
"loginForm.iphone"
placeholder=
"请输入手机号"
>
<
template
#
prefix
>
<el-icon
class=
"el-input__icon"
><Iphone
/></el-icon>
</
template
>
</el-input>
</el-form-item>
<el-form-item
prop=
"password"
>
<el-input
v-model=
"loginForm.password"
placeholder=
"请输入密码"
>
<
template
#
prefix
>
<el-icon
class=
"el-input__icon"
><Lock
/></el-icon>
</
template
>
</el-input>
</el-form-item>
<el-form-item>
<el-button
style=
"width: 100%"
size=
"large"
type=
"primary"
@
click=
"handleLogin"
>
登录
</el-button
>
</el-form-item>
<el-form-item>
<div
style=
"width: 100%;text-align: right;"
>
<a
href=
"/user/reset"
style=
"text-decoration: none; color: #409eff;"
>
忘记密码
</a
>
</div>
</el-form-item>
</el-form>
</div>
</div>
<div
class=
"footer-container"
>
<span>
2024 @Copyright
</span>
</div>
</div>
</template>
<
script
setup
lang=
"ts"
>
import
{
User
,
Iphone
,
Lock
}
from
'@element-plus/icons-vue'
import
{
reactive
,
ref
}
from
'vue'
import
{
LoginReq
}
from
'@/types/api/auth'
import
type
{
FormInstance
,
FormRules
}
from
'element-plus'
const
loginFormRef
=
ref
<
FormInstance
>
()
const
loginForm
=
reactive
<
LoginReq
>
({
factoryNumber
:
''
,
iphone
:
''
,
password
:
''
,
})
const
rules
=
reactive
<
FormRules
<
LoginReq
>>
({
factoryNumber
:
[{
required
:
true
,
message
:
'请输入共厂号'
,
trigger
:
'blur'
}],
iphone
:
[{
required
:
true
,
message
:
'请输入手机号'
,
trigger
:
'blur'
}],
password
:
[{
required
:
true
,
message
:
'请输入密码'
,
trigger
:
'blur'
}],
})
const
handleLogin
=
async
()
=>
{
try
{
await
loginFormRef
.
value
?.
validate
()
}
catch
{
return
}
// 登录逻辑
}
</
script
>
<
style
lang=
"scss"
scoped
>
.login-page
{
height
:
100%
;
background-color
:
#f6f6f6
;
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
justify-content
:
center
;
}
.user-container
{
width
:
860px
;
height
:
600px
;
background-color
:
#fff
;
padding
:
20px
;
}
.footer-container
{
text-align
:
center
;
margin-top
:
60px
;
color
:
#777
;
}
.logo-container
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
}
.logo-title
{
font-size
:
30px
;
color
:
#777
;
}
.form-container
{
width
:
400px
;
margin
:
30px
auto
0
;
}
</
style
>
src/views/Reset.vue
0 → 100644
View file @
7d7aece4
<
template
>
<div
class=
"reset-page"
>
<div
class=
"user-container"
>
<div
class=
"logo-container"
>
<img
src=
"../assets/images/logo.png"
alt=
"logo"
/>
<div
class=
"logo-title"
>
找回密码
</div>
</div>
<div
class=
"form-container"
>
<el-form
:model=
"resetForm"
ref=
"resetFormRef"
:rules=
"rules"
size=
"large"
>
<el-form-item
prop=
"factoryNumber"
>
<el-input
placeholder=
"请输入共厂号"
v-model=
"resetForm.factoryNumber"
>
<template
#
prefix
>
<el-icon
class=
"el-input__icon"
><User
/></el-icon>
</
template
>
</el-input>
</el-form-item>
<el-form-item
prop=
"iphone"
>
<el-input
v-model=
"resetForm.iphone"
placeholder=
"请输入手机号"
>
<
template
#
prefix
>
<el-icon
class=
"el-input__icon"
><Iphone
/></el-icon>
</
template
>
</el-input>
</el-form-item>
<el-form-item
prop=
"captcha"
>
<div
style=
"width: 100%; display: flex"
>
<el-input
v-model=
"resetForm.captcha"
placeholder=
"请输入验证码"
>
</el-input>
<el-button
text
type=
"primary"
>
发送验证码
</el-button>
</div>
</el-form-item>
<el-form-item>
<el-button
style=
"width: 100%"
size=
"large"
type=
"primary"
@
click=
"handleReset"
>
下一步
</el-button
>
</el-form-item>
</el-form>
</div>
</div>
<div
class=
"footer-container"
>
<span>
2024 @Copyright
</span>
</div>
</div>
</template>
<
script
setup
lang=
"ts"
>
import
{
User
,
Iphone
}
from
'@element-plus/icons-vue'
import
{
reactive
,
ref
}
from
'vue'
import
type
{
FormInstance
,
FormRules
}
from
'element-plus'
const
resetFormRef
=
ref
<
FormInstance
>
()
interface
ResetForm
{
factoryNumber
:
string
iphone
:
string
captcha
:
string
}
const
resetForm
=
reactive
<
ResetForm
>
({
factoryNumber
:
''
,
iphone
:
''
,
captcha
:
''
,
})
const
rules
=
reactive
<
FormRules
<
ResetForm
>>
({
factoryNumber
:
[{
required
:
true
,
message
:
'请输入共厂号'
,
trigger
:
'blur'
}],
iphone
:
[{
required
:
true
,
message
:
'请输入手机号'
,
trigger
:
'blur'
}],
captcha
:
[{
required
:
true
,
message
:
'请输入验证码'
,
trigger
:
'blur'
}],
})
const
handleReset
=
async
()
=>
{
try
{
await
resetFormRef
.
value
?.
validate
()
}
catch
{
return
}
// 登录逻辑
}
</
script
>
<
style
lang=
"scss"
scoped
>
.reset-page
{
height
:
100%
;
background-color
:
#f6f6f6
;
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
justify-content
:
center
;
}
.user-container
{
width
:
860px
;
height
:
600px
;
background-color
:
#fff
;
padding
:
20px
;
}
.footer-container
{
text-align
:
center
;
margin-top
:
60px
;
color
:
#777
;
}
.logo-container
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
}
.logo-title
{
font-size
:
30px
;
color
:
#777
;
}
.form-container
{
width
:
400px
;
margin
:
30px
auto
0
;
}
</
style
>
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