Merge pull request '删除了验证码组件并且复写了一些UI,修改了页脚' (#3) from lq/Glass-ERP-Vue:test into test
Reviewed-on: http://82.157.76.162:3000/Big-Data-Lab/Glass-ERP-Vue/pulls/3
This commit is contained in:
commit
24828eba08
Binary file not shown.
After Width: | Height: | Size: 1.1 MiB |
|
@ -1,28 +1,32 @@
|
||||||
<template>
|
<template>
|
||||||
<div id="userLayout" :class="['user-layout-wrapper', device]">
|
<div id="userLayout" :class="['user-layout-wrapper', device]">
|
||||||
|
<div class="backImg"></div>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="top">
|
<div class="top">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<a href="/">
|
<a href="/">
|
||||||
<img src="~@/assets/logo.svg" class="logo" alt="logo">
|
<img src="~@/assets/logo.svg" class="logo" alt="logo" />
|
||||||
<span class="title">计科院ERP系统</span>
|
<span class="title">计科院ERP系统</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="desc">
|
<div class="desc">
|
||||||
计科院ERP系统是由人工智能大数据实验室设计的系统
|
欢迎您登录
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<route-view></route-view>
|
<div class="border">
|
||||||
|
<route-view></route-view>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
<div class="links">
|
<div class="links">
|
||||||
<a href="http://doc.jeecg.com" target="_blank">帮助</a>
|
<a href="http://www.baidu.com" target="_blank">帮助</a>
|
||||||
<a href="https://github.com/zhangdaiscott/jeecg-boot" target="_blank">隐私</a>
|
<a href="https://www.bing.com" target="_blank">隐私</a>
|
||||||
<a href="https://github.com/zhangdaiscott/jeecg-boot/blob/master/LICENSE" target="_blank">条款</a>
|
<a href="https://www.baidu.com" target="_blank">条款</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="copyright">
|
<div class="copyright">
|
||||||
Copyright © 2019 <a href="http://www.jeecg.com" target="_blank">JEECG开源社区</a> 出品
|
Copyright © <a href="http://www.baidu.com" target="_blank">哈尔滨师范大学人工智能大数据实验室</a> All
|
||||||
|
right reserved
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -30,121 +34,146 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import RouteView from "@/components/layouts/RouteView"
|
import RouteView from '@/components/layouts/RouteView'
|
||||||
import { mixinDevice } from '@/utils/mixin.js'
|
import { mixinDevice } from '@/utils/mixin.js'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "UserLayout",
|
name: 'UserLayout',
|
||||||
components: { RouteView },
|
components: { RouteView },
|
||||||
mixins: [mixinDevice],
|
mixins: [mixinDevice],
|
||||||
data () {
|
data() {
|
||||||
return {}
|
return {}
|
||||||
},
|
},
|
||||||
mounted () {
|
mounted() {
|
||||||
document.body.classList.add('userLayout')
|
document.body.classList.add('userLayout')
|
||||||
},
|
},
|
||||||
beforeDestroy () {
|
beforeDestroy() {
|
||||||
document.body.classList.remove('userLayout')
|
document.body.classList.remove('userLayout')
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
#userLayout.user-layout-wrapper {
|
#userLayout.user-layout-wrapper {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
&.mobile {
|
.border {
|
||||||
.container {
|
display: block;
|
||||||
.main {
|
width: 50%;
|
||||||
max-width: 368px;
|
margin: 20px auto;
|
||||||
width: 98%;
|
padding: 25px;
|
||||||
}
|
background: #ffffff;
|
||||||
}
|
color: black;
|
||||||
}
|
border-radius: 15px;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.backImg {
|
||||||
|
width: 100%;
|
||||||
|
min-height: 100%;
|
||||||
|
background: #f0f2f5 url(~@/assets/background.jpg) no-repeat 50%;
|
||||||
|
background-size: 100%;
|
||||||
|
padding: 110px 0 144px;
|
||||||
|
position: absolute;
|
||||||
|
background-size: cover;
|
||||||
|
left: 0%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.mobile {
|
||||||
.container {
|
.container {
|
||||||
width: 100%;
|
|
||||||
min-height: 100%;
|
|
||||||
background: #f0f2f5 url(~@/assets/background.svg) no-repeat 50%;
|
|
||||||
background-size: 100%;
|
|
||||||
padding: 110px 0 144px;
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
a {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.top {
|
|
||||||
text-align: center;
|
|
||||||
|
|
||||||
.header {
|
|
||||||
height: 44px;
|
|
||||||
line-height: 44px;
|
|
||||||
|
|
||||||
.badge {
|
|
||||||
position: absolute;
|
|
||||||
display: inline-block;
|
|
||||||
line-height: 1;
|
|
||||||
vertical-align: middle;
|
|
||||||
margin-left: -12px;
|
|
||||||
margin-top: -10px;
|
|
||||||
opacity: 0.8;
|
|
||||||
}
|
|
||||||
|
|
||||||
.logo {
|
|
||||||
height: 44px;
|
|
||||||
vertical-align: top;
|
|
||||||
margin-right: 16px;
|
|
||||||
border-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title {
|
|
||||||
font-size: 33px;
|
|
||||||
color: rgba(0, 0, 0, .85);
|
|
||||||
font-family: "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
|
||||||
font-weight: 600;
|
|
||||||
position: relative;
|
|
||||||
top: 2px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.desc {
|
|
||||||
font-size: 14px;
|
|
||||||
color: rgba(0, 0, 0, 0.45);
|
|
||||||
margin-top: 12px;
|
|
||||||
margin-bottom: 40px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.main {
|
.main {
|
||||||
min-width: 260px;
|
max-width: 368px;
|
||||||
width: 368px;
|
width: 98%;
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer {
|
|
||||||
position: absolute;
|
|
||||||
width: 100%;
|
|
||||||
bottom: 0;
|
|
||||||
padding: 0 16px;
|
|
||||||
margin: 48px 0 24px;
|
|
||||||
text-align: center;
|
|
||||||
|
|
||||||
.links {
|
|
||||||
margin-bottom: 8px;
|
|
||||||
font-size: 14px;
|
|
||||||
a {
|
|
||||||
color: rgba(0, 0, 0, 0.45);
|
|
||||||
transition: all 0.3s;
|
|
||||||
&:not(:last-child) {
|
|
||||||
margin-right: 40px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.copyright {
|
|
||||||
color: rgba(0, 0, 0, 0.45);
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
|
||||||
|
.container {
|
||||||
|
width: 900px;
|
||||||
|
background-size: cover;
|
||||||
|
min-height: 100%;
|
||||||
|
padding: 110px 0 144px;
|
||||||
|
position: absolute;
|
||||||
|
background-size: cover;
|
||||||
|
right: 0%;
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.top {
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
.header {
|
||||||
|
height: 44px;
|
||||||
|
line-height: 44px;
|
||||||
|
|
||||||
|
.badge {
|
||||||
|
position: absolute;
|
||||||
|
display: inline-block;
|
||||||
|
line-height: 1;
|
||||||
|
vertical-align: middle;
|
||||||
|
margin-left: -12px;
|
||||||
|
margin-top: -10px;
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
height: 44px;
|
||||||
|
vertical-align: top;
|
||||||
|
margin-right: 16px;
|
||||||
|
border-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
font-size: 33px;
|
||||||
|
color: white;
|
||||||
|
font-family: 'Chinese Quote', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB',
|
||||||
|
'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
|
||||||
|
'Segoe UI Symbol';
|
||||||
|
font-weight: 600;
|
||||||
|
position: relative;
|
||||||
|
top: 2px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.desc {
|
||||||
|
font-size: 30px;
|
||||||
|
color: white;
|
||||||
|
margin-top: 15px;
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.main {
|
||||||
|
min-width: 260px;
|
||||||
|
width: 368px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer {
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
bottom: 0;
|
||||||
|
padding: 0 16px;
|
||||||
|
margin: 48px 0 24px;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
.links {
|
||||||
|
margin-bottom: 8px;
|
||||||
|
font-size: 14px;
|
||||||
|
a {
|
||||||
|
color: white;
|
||||||
|
transition: all 0.3s;
|
||||||
|
&:not(:last-child) {
|
||||||
|
margin-right: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.copyright {
|
||||||
|
color: white;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
|
@ -3,49 +3,49 @@
|
||||||
<div class="links">
|
<div class="links">
|
||||||
<a href="http://www.jeecg.com" target="_blank">JEECG 首页</a>
|
<a href="http://www.jeecg.com" target="_blank">JEECG 首页</a>
|
||||||
<a href="https://github.com/zhangdaiscott/jeecg-boot" target="_blank">
|
<a href="https://github.com/zhangdaiscott/jeecg-boot" target="_blank">
|
||||||
<a-icon type="github"/>
|
<a-icon type="github" />
|
||||||
</a>
|
</a>
|
||||||
<a href="https://ant.design/">Ant Design</a>
|
<a href="https://ant.design/">Ant Design</a>
|
||||||
<a href="https://vuecomponent.github.io/ant-design-vue/docs/vue/introduce-cn/">Vue Antd</a>
|
<a href="https://vuecomponent.github.io/ant-design-vue/docs/vue/introduce-cn/">Vue Antd</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="copyright">
|
<div class="copyright">
|
||||||
Copyright
|
Copyright
|
||||||
<a-icon type="copyright"/>
|
<a-icon type="copyright" />
|
||||||
2019 <span>JEECG开源社区 出品</span>
|
2023 <span> 哈尔滨师范大学人工智能大数据实验室 出品</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
name: "LayoutFooter"
|
name: 'LayoutFooter'
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
.footer {
|
.footer {
|
||||||
padding: 0 16px;
|
padding: 0 16px;
|
||||||
margin: 48px 0 24px;
|
margin: 48px 0 24px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
||||||
.links {
|
.links {
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: rgba(0, 0, 0, .45);
|
color: rgba(0, 0, 0, 0.45);
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: rgba(0, 0, 0, .65);
|
color: rgba(0, 0, 0, 0.65);
|
||||||
}
|
}
|
||||||
|
|
||||||
&:not(:last-child) {
|
&:not(:last-child) {
|
||||||
margin-right: 40px;
|
margin-right: 40px;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.copyright {
|
|
||||||
color: rgba(0, 0, 0, .45);
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
</style>
|
.copyright {
|
||||||
|
color: rgba(230, 228, 235, 0.45);
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
|
@ -1,160 +1,147 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<a-form-model ref="form" :model="model" :rules="validatorRules">
|
<a-form-model ref="form" :model="model" :rules="validatorRules">
|
||||||
<a-form-model-item required prop="username">
|
<a-form-model-item required prop="username">
|
||||||
<a-input v-model="model.username" size="large" placeholder="请输入帐户名 / admin">
|
<a-input v-model="model.username" size="large" placeholder="请输入帐户名 / admin">
|
||||||
<a-icon slot="prefix" type="user" :style="{ color: 'rgba(0,0,0,.25)' }"/>
|
<a-icon slot="prefix" type="user" :style="{ color: 'rgba(0,0,0,.25)' }" />
|
||||||
</a-input>
|
</a-input>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
<a-form-model-item required prop="password">
|
<a-form-model-item required prop="password">
|
||||||
<a-input v-model="model.password" size="large" type="password" autocomplete="false" placeholder="请输入密码 / 123456">
|
<a-input
|
||||||
<a-icon slot="prefix" type="lock" :style="{ color: 'rgba(0,0,0,.25)' }"/>
|
v-model="model.password"
|
||||||
</a-input>
|
size="large"
|
||||||
</a-form-model-item>
|
type="password"
|
||||||
|
autocomplete="false"
|
||||||
<a-row :gutter="0">
|
placeholder="请输入密码 / 123456"
|
||||||
<a-col :span="16">
|
>
|
||||||
<a-form-model-item required prop="inputCode">
|
<a-icon slot="prefix" type="lock" :style="{ color: 'rgba(0,0,0,.25)' }" />
|
||||||
<a-input v-model="model.inputCode" size="large" type="text" placeholder="请输入验证码">
|
</a-input>
|
||||||
<a-icon slot="prefix" type="smile" :style="{ color: 'rgba(0,0,0,.25)' }"/>
|
</a-form-model-item>
|
||||||
</a-input>
|
</a-form-model>
|
||||||
</a-form-model-item>
|
</div>
|
||||||
</a-col>
|
|
||||||
<a-col :span="8" style="text-align: right">
|
|
||||||
<img v-if="requestCodeSuccess" style="margin-top: 2px;" :src="randCodeImage" @click="handleChangeCheckCode"/>
|
|
||||||
<img v-else style="margin-top: 2px;" src="../../assets/checkcode.png" @click="handleChangeCheckCode"/>
|
|
||||||
</a-col>
|
|
||||||
</a-row>
|
|
||||||
</a-form-model>
|
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getAction } from '@/api/manage'
|
import { getAction } from '@/api/manage'
|
||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
import { mapActions } from 'vuex'
|
import { mapActions } from 'vuex'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'LoginAccount',
|
name: 'LoginAccount',
|
||||||
data(){
|
data() {
|
||||||
return {
|
return {
|
||||||
requestCodeSuccess: false,
|
requestCodeSuccess: false,
|
||||||
randCodeImage: '',
|
randCodeImage: '',
|
||||||
currdatetime: '',
|
currdatetime: '',
|
||||||
loginType: 0,
|
loginType: 0,
|
||||||
model:{
|
model: {
|
||||||
username: 'admin',
|
username: 'admin',
|
||||||
password: '123456',
|
password: '123456'
|
||||||
inputCode: ''
|
},
|
||||||
},
|
validatorRules: {
|
||||||
validatorRules:{
|
username: [{ required: true, message: '请输入用户名!' }, { validator: this.handleUsernameOrEmail }],
|
||||||
username: [
|
password: [
|
||||||
{ required: true, message: '请输入用户名!' },
|
{
|
||||||
{ validator: this.handleUsernameOrEmail }
|
required: true,
|
||||||
],
|
message: '请输入密码!',
|
||||||
password: [{
|
validator: 'click'
|
||||||
required: true, message: '请输入密码!', validator: 'click'
|
}
|
||||||
}],
|
]
|
||||||
inputCode: [{
|
}
|
||||||
required: true, message: '请输入验证码!'
|
}
|
||||||
}]
|
},
|
||||||
}
|
created() {
|
||||||
|
this.handleChangeCheckCode()
|
||||||
}
|
},
|
||||||
},
|
methods: {
|
||||||
created() {
|
...mapActions(['Login']),
|
||||||
this.handleChangeCheckCode();
|
/**刷新验证码*/
|
||||||
},
|
handleChangeCheckCode() {
|
||||||
methods:{
|
this.currdatetime = new Date().getTime()
|
||||||
...mapActions(['Login']),
|
getAction(`/sys/randomImage/${this.currdatetime}`)
|
||||||
/**刷新验证码*/
|
.then(res => {
|
||||||
handleChangeCheckCode(){
|
if (res.success) {
|
||||||
this.currdatetime = new Date().getTime();
|
this.randCodeImage = res.result
|
||||||
this.model.inputCode = ''
|
this.requestCodeSuccess = true
|
||||||
getAction(`/sys/randomImage/${this.currdatetime}`).then(res=>{
|
} else {
|
||||||
if(res.success){
|
this.$message.error(res.message)
|
||||||
this.randCodeImage = res.result
|
this.requestCodeSuccess = false
|
||||||
this.requestCodeSuccess=true
|
|
||||||
}else{
|
|
||||||
this.$message.error(res.message)
|
|
||||||
this.requestCodeSuccess=false
|
|
||||||
}
|
}
|
||||||
}).catch(()=>{
|
|
||||||
this.requestCodeSuccess=false
|
|
||||||
})
|
})
|
||||||
},
|
.catch(() => {
|
||||||
// 判断登录类型
|
this.requestCodeSuccess = false
|
||||||
handleUsernameOrEmail (rule, value, callback) {
|
})
|
||||||
const regex = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
|
},
|
||||||
if (regex.test(value)) {
|
// 判断登录类型
|
||||||
this.loginType = 0
|
handleUsernameOrEmail(rule, value, callback) {
|
||||||
} else {
|
const regex = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/
|
||||||
this.loginType = 1
|
if (regex.test(value)) {
|
||||||
}
|
this.loginType = 0
|
||||||
callback()
|
} else {
|
||||||
},
|
this.loginType = 1
|
||||||
/**
|
}
|
||||||
* 验证字段
|
callback()
|
||||||
* @param arr
|
},
|
||||||
* @param callback
|
/**
|
||||||
*/
|
* 验证字段
|
||||||
validateFields(arr, callback){
|
* @param arr
|
||||||
let promiseArray = []
|
* @param callback
|
||||||
for(let item of arr){
|
*/
|
||||||
let p = new Promise((resolve, reject) => {
|
validateFields(arr, callback) {
|
||||||
this.$refs['form'].validateField(item, (err)=>{
|
let promiseArray = []
|
||||||
if(!err){
|
for (let item of arr) {
|
||||||
resolve();
|
let p = new Promise((resolve, reject) => {
|
||||||
}else{
|
this.$refs['form'].validateField(item, err => {
|
||||||
reject(err);
|
if (!err) {
|
||||||
}
|
resolve()
|
||||||
})
|
} else {
|
||||||
});
|
reject(err)
|
||||||
promiseArray.push(p)
|
}
|
||||||
}
|
})
|
||||||
Promise.all(promiseArray).then(()=>{
|
})
|
||||||
|
promiseArray.push(p)
|
||||||
|
}
|
||||||
|
Promise.all(promiseArray)
|
||||||
|
.then(() => {
|
||||||
callback()
|
callback()
|
||||||
}).catch(err=>{
|
})
|
||||||
|
.catch(err => {
|
||||||
callback(err)
|
callback(err)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
acceptUsername(username){
|
acceptUsername(username) {
|
||||||
this.model['username'] = username
|
this.model['username'] = username
|
||||||
},
|
},
|
||||||
//账号密码登录
|
//账号密码登录
|
||||||
handleLogin(rememberMe){
|
handleLogin(rememberMe) {
|
||||||
this.validateFields([ 'username', 'password', 'inputCode' ], (err)=>{
|
this.validateFields(['username', 'password'], err => {
|
||||||
if(!err){
|
if (!err) {
|
||||||
let loginParams = {
|
let loginParams = {
|
||||||
username: this.model.username,
|
username: this.model.username,
|
||||||
password: this.model.password,
|
password: this.model.password,
|
||||||
captcha: this.model.inputCode,
|
checkKey: this.currdatetime,
|
||||||
checkKey: this.currdatetime,
|
remember_me: rememberMe
|
||||||
remember_me: rememberMe,
|
}
|
||||||
}
|
console.log('登录参数', loginParams)
|
||||||
console.log("登录参数", loginParams)
|
this.Login(loginParams)
|
||||||
this.Login(loginParams).then((res) => {
|
.then(res => {
|
||||||
this.$emit('success', res.result)
|
this.$emit('success', res.result)
|
||||||
}).catch((err) => {
|
})
|
||||||
|
.catch(err => {
|
||||||
//update-begin-author: taoyan date:20220425 for: 登录页面,当输入验证码错误时,验证码图片要刷新一下,而不是保持旧的验证码图片不变 #41
|
//update-begin-author: taoyan date:20220425 for: 登录页面,当输入验证码错误时,验证码图片要刷新一下,而不是保持旧的验证码图片不变 #41
|
||||||
if(err && err.code===412){
|
if (err && err.code === 412) {
|
||||||
this.handleChangeCheckCode();
|
this.handleChangeCheckCode()
|
||||||
}
|
}
|
||||||
//update-end-author: taoyan date:20220425 for: 登录页面,当输入验证码错误时,验证码图片要刷新一下,而不是保持旧的验证码图片不变 #41
|
//update-end-author: taoyan date:20220425 for: 登录页面,当输入验证码错误时,验证码图片要刷新一下,而不是保持旧的验证码图片不变 #41
|
||||||
this.$emit('fail', err)
|
this.$emit('fail', err)
|
||||||
});
|
})
|
||||||
}else{
|
} else {
|
||||||
this.$emit('validateFail')
|
this.$emit('validateFail')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped></style>
|
||||||
|
|
||||||
</style>
|
|
||||||
|
|
Loading…
Reference in New Issue