fix: friendly Chinese error messages on login/register pages

Map backend English error details to user-facing Chinese text on all
3 frontends (uni-app, user-frontend, admin-frontend). Previously raw
English like 'Invalid credentials' was shown directly to users.
This commit is contained in:
TradeMate Dev
2026-05-30 09:06:01 +08:00
parent 3e39cf0170
commit 4122571f86
4 changed files with 15 additions and 7 deletions
+2 -1
View File
@@ -90,7 +90,8 @@ async function submit() {
localStorage.setItem('admin_user', JSON.stringify(res.user || {})) localStorage.setItem('admin_user', JSON.stringify(res.user || {}))
ElMessage.success('登录成功') ElMessage.success('登录成功')
} catch (e) { } catch (e) {
error.value = e?.detail || '登录失败' const map = { 'Invalid credentials': '用户名或密码错误' }
error.value = map[e?.detail] || e?.detail || '登录失败'
} finally { } finally {
loading.value = false loading.value = false
} }
+2 -1
View File
@@ -43,7 +43,8 @@ async function submit() {
const redirect = route.query.redirect || '/dashboard' const redirect = route.query.redirect || '/dashboard'
router.push(redirect) router.push(redirect)
} catch (e) { } catch (e) {
error.value = e?.detail || '登录失败' const map = { 'Invalid credentials': '用户名或密码错误' }
error.value = map[e?.detail] || e?.detail || '登录失败'
} finally { } finally {
loading.value = false loading.value = false
} }
+7 -3
View File
@@ -229,10 +229,14 @@ const handleSubmit = async () => {
} }
} catch (err) { } catch (err) {
console.error('登录失败', err) console.error('登录失败', err)
error.value = (err.errMsg || err.message || '操作失败,请重试') const msg = err.errMsg || err.message || err.detail || ''
if (err.statusCode === 401) { const map = {
error.value = '手机号或密码错误' 'Invalid credentials': '手机号或密码错误',
'Phone already registered': '该手机号已被注册',
'Invalid refresh token': '登录已过期,请重新登录',
'phone required': '请输入手机号',
} }
error.value = map[msg] || msg || '操作失败,请重试'
} finally { } finally {
loading.value = false loading.value = false
} }
+4 -2
View File
@@ -172,7 +172,8 @@ async function submit() {
const redirect = route.query.redirect || '/workspace' const redirect = route.query.redirect || '/workspace'
router.push(redirect) router.push(redirect)
} catch (e) { } catch (e) {
error.value = e?.detail || '登录失败' const map = { 'Invalid credentials': '手机号或密码错误', 'Invalid refresh token': '登录已过期,请重新登录', 'phone required': '请输入手机号' }
error.value = map[e?.detail] || e?.detail || '登录失败'
} finally { } finally {
loading.value = false loading.value = false
} }
@@ -191,7 +192,8 @@ async function register() {
regForm.phone = '' regForm.phone = ''
regForm.password = '' regForm.password = ''
} catch (e) { } catch (e) {
regError.value = e?.detail || '注册失败' const map = { 'Phone already registered': '该手机号已被注册', 'Invalid credentials': '手机号或密码错误' }
regError.value = map[e?.detail] || e?.detail || '注册失败'
} finally { } finally {
regLoading.value = false regLoading.value = false
} }