Browse Source

登录页验证码

milestone-20260128-日常优化1.0
ZhangYong 1 month ago
parent
commit
e328ae72ce
  1. BIN
      src/assets/images/loadingFaild.png
  2. 67
      src/views/login.vue

BIN
src/assets/images/loadingFaild.png

After

Width: 200  |  Height: 200  |  Size: 10 KiB

67
src/views/login.vue

@ -34,7 +34,24 @@ function getMachineId() {
} }
} }
const form = ref({account: null, password: '', token: '', machineId: machineId1.value})
const form = ref({account: null, password: '', token: '', machineId: machineId1.value, code: '', uuid: ''})
const captchaUrl = ref('')
//
const getCaptcha = async () => {
try {
const res = await request({
url: '/admin/captchaImage',
method: 'get'
})
if (res.code === 200) {
captchaUrl.value = "data:image/gif;base64," + res.img
form.value.uuid = res.uuid
}
} catch (error) {
console.error('获取验证码失败', error)
}
}
const adminRoleId = ref(null) const adminRoleId = ref(null)
@ -64,7 +81,7 @@ const login = async function () {
// //
adminStore.setAdminData(result.data) adminStore.setAdminData(result.data)
// 使 adminRoleId // 使 adminRoleId
adminRoleId.value = result.data.roleId adminRoleId.value = result.data.roleId
@ -97,13 +114,16 @@ const login = async function () {
} else { } else {
form.value.password = '' form.value.password = ''
form.value.account = '' form.value.account = ''
form.value.code = ''
ElMessage.error(result.msg) ElMessage.error(result.msg)
loading.value = false //loading loading.value = false //loading
getCaptcha()
} }
} catch (error) { } catch (error) {
console.log('请求失败', error) console.log('请求失败', error)
ElMessage.error('登录失败,请检查账号密码') ElMessage.error('登录失败,请检查账号密码')
loading.value = false // loading loading.value = false // loading
getCaptcha()
} }
} }
// //
@ -161,13 +181,15 @@ const selectMarket = async function () {
onMounted(() => { onMounted(() => {
getMachineId() getMachineId()
getCaptcha()
}) })
</script> </script>
<template> <template>
<el-row class="login-page"> <el-row class="login-page">
<img :span="12" src="../assets/background.jpg" alt="logo" class="bg" fit="fit"/>
<el-col :span="12" class="bg-container">
<img src="../assets/background.jpg" alt="logo" class="bg" fit="fit"/>
</el-col>
<el-col :span="6" :offset="3" class="form"> <el-col :span="6" :offset="3" class="form">
<!-- 登录表单 --> <!-- 登录表单 -->
<el-form :model="form" size="large" autocomplete="off"> <el-form :model="form" size="large" autocomplete="off">
@ -185,7 +207,20 @@ onMounted(() => {
required required
/> />
</el-form-item> </el-form-item>
<el-form-item class="flex"></el-form-item>
<el-form-item prop="code" required>
<el-row :gutter="20" style="width: 100%">
<el-col :span="16">
<el-input v-model="form.code" placeholder="请输入验证码" @keyup.enter="login"></el-input>
</el-col>
<el-col :span="8" style="display: flex; align-items: center; justify-content: center;">
<img v-if="captchaUrl" :src="captchaUrl" @click="getCaptcha" style="width: 100%; height: 40px; cursor: pointer; border-radius: 4px;" alt="验证码" title="点击刷新验证码" />
<div v-else class="failed">
<img src="@/assets/images/loadingFaild.png" @click="getCaptcha">
<text>点击刷新二维码</text>
</div>
</el-col>
</el-row>
</el-form-item>
<!-- 登录按钮 --> <!-- 登录按钮 -->
<el-form-item> <el-form-item>
<button type="button" class="button" @click="login()"> <button type="button" class="button" @click="login()">
@ -205,7 +240,7 @@ onMounted(() => {
.bg { .bg {
border-radius: 0 20px 20px 0; border-radius: 0 20px 20px 0;
height: 110vh; height: 110vh;
width: 50%;
width: 100%;
object-fit: cover; object-fit: cover;
} }
@ -228,14 +263,26 @@ onMounted(() => {
.button { .button {
width: 100%; width: 100%;
margin-top: 20px;
} }
.flex {
width: 100%;
.failed{
display: flex;
flex-direction: column;
align-items: center;
img{
height: 20px;
}
text{
color: #666666;
font-size: 10px;
white-space: nowrap;
height: 20px;
display: flex; display: flex;
justify-content: space-between;
align-items: center;
} }
} }
}
/* From Uiverse.io by kamehame-ha */ /* From Uiverse.io by kamehame-ha */
.button { .button {

Loading…
Cancel
Save