【底座】修复锁屏密码输入错误时错误信息在锁屏背后展示的bug,改为错误信息在输入框底部展示

This commit is contained in:
xuyuxiang
2026-08-07 14:19:21 +08:00
parent 5caf9497cd
commit 3a3c476529
3 changed files with 29 additions and 15 deletions
+2 -2
View File
@@ -27,8 +27,8 @@ export default {
return request('lock', data)
},
// 解锁屏幕
userUnlock(data) {
return request('unlock', data)
userUnlock(data, options) {
return request('unlock', data, 'post', options)
},
// 修改自动锁屏时长
userUpdateAutoLockTime(data) {
@@ -16,12 +16,18 @@
:style="{ borderRadius: 0 }"
:status="inputStatus"
@keyup.enter="handleUnlock"
@change="inputStatus = ''"
@change="
() => {
inputStatus = ''
errorMessage = ''
}
"
>
<template #prefix>
<lock-outlined />
</template>
</a-input-password>
<div class="lock-screen-error-msg">{{ errorMessage }}</div>
<a-button
type="primary"
size="large"
@@ -59,20 +65,23 @@
const password = ref('')
const loading = ref(false)
const inputStatus = ref('')
const errorMessage = ref('')
// 锁屏界面是否可见,登录页不展示
const visible = computed(() => store.isLocked && route.path !== '/login')
// 解锁,失败提示由全局错误处理统一弹出
// 解锁
const handleUnlock = () => {
if (!password.value) {
inputStatus.value = 'error'
errorMessage.value = '请输入登录密码'
return
}
loading.value = true
inputStatus.value = ''
errorMessage.value = ''
userCenterApi
.userUnlock({ password: smCrypto.doSm2Encrypt(password.value) })
.userUnlock({ password: smCrypto.doSm2Encrypt(password.value) }, { skipErrorMessage: true })
.then(() => {
store.setIsLocked(false)
password.value = ''
@@ -80,8 +89,9 @@
useMenuStore().refreshApiMenu()
useDictStore().refreshDict()
})
.catch(() => {
.catch((err) => {
inputStatus.value = 'error'
errorMessage.value = err.msg || '解锁失败,请重试'
})
.finally(() => {
loading.value = false
@@ -105,6 +115,7 @@
} else {
password.value = ''
inputStatus.value = ''
errorMessage.value = ''
}
})
</script>
@@ -194,6 +205,14 @@
.lock-screen-logout-btn {
margin-top: 8px;
}
.lock-screen-error-msg {
color: #ff4d4f;
font-size: 14px;
min-height: 28px;
line-height: 28px;
text-align: left;
padding-left: 2px;
}
}
}
+4 -9
View File
@@ -95,16 +95,11 @@ service.interceptors.response.use(
return handleLocked(data)
}
if (code !== 200) {
const customErrorMessage = response.config.customErrorMessage
message.error(customErrorMessage || data.msg)
if (!response.config.skipErrorMessage) {
const customErrorMessage = response.config.customErrorMessage
message.error(customErrorMessage || data.msg)
}
return Promise.reject(data)
// 自定义错误提示,覆盖后端返回的message
// 使用示例:
// export function customerList (data) {
// return request('list', data, 'get', {
// customErrorMessage: '自定义错误消息提示'
// });
// }
} else {
// 统一成功提示(支持 skipSuccessMessage 跳过)
if (!response.config.skipSuccessMessage) {