@@ -249,8 +270,8 @@ function canBeBanned(row) {
{{ avatarText(detail) }}
- {{ detail.nickname || '未设置昵称' }}
- {{ detail.uid }}
+ 昵称: {{ detail.nickname || '未设置昵称' }}
+ UID: {{ detail.uid }}
{{ statusMeta(detail.status).label }}
@@ -263,7 +284,10 @@ function canBeBanned(row) {
{{ detail.maskedTarget || '—' }}
- {{ detail.countryCode || '—' }} / {{ detail.regionCode || '—' }}
+ {{ countryText(detail.countryCode) }}
+
+ / {{ countryText(detail.regionCode) }}
+
{{ detail.language || '—' }}
{{ detail.timezone || '—' }}
@@ -273,7 +297,7 @@ function canBeBanned(row) {
{{
detail.lastLoginAt || '—'
}}
- {{ systemText(detail) }}
+ {{ platformText(detail) }}
{{ detail.vipLevel ? `等级 ${detail.vipLevel}` : '未开通(第二阶段)' }}
@@ -305,8 +329,8 @@ function canBeBanned(row) {
{{ row.finished ? '是' : '否' }}
-
- {{ systemText(row) }}
+
+ {{ platformText(row) }}
{{
diff --git a/src/views/userManagement/composables/useAppUsers.js b/src/views/userManagement/composables/useAppUsers.js
index 2d15ef5..8bda1d3 100644
--- a/src/views/userManagement/composables/useAppUsers.js
+++ b/src/views/userManagement/composables/useAppUsers.js
@@ -29,6 +29,69 @@ export const COUNTRY_OPTIONS = [
{ value: 'CN', label: '中国' }
]
+/** 国家码 → 中文名,与后端 CountryProfile 保持一致;未收录的仍显示原码 */
+const COUNTRY_TEXT = {
+ ID: '印度尼西亚',
+ MY: '马来西亚',
+ SG: '新加坡',
+ TH: '泰国',
+ VN: '越南',
+ PH: '菲律宾',
+ KH: '柬埔寨',
+ MM: '缅甸',
+ LA: '老挝',
+ BN: '文莱',
+ CN: '中国',
+ TW: '中国台湾',
+ HK: '中国香港',
+ MO: '中国澳门',
+ JP: '日本',
+ KR: '韩国',
+ IN: '印度',
+ PK: '巴基斯坦',
+ BD: '孟加拉国',
+ LK: '斯里兰卡',
+ NP: '尼泊尔',
+ US: '美国',
+ CA: '加拿大',
+ MX: '墨西哥',
+ BR: '巴西',
+ AR: '阿根廷',
+ CL: '智利',
+ CO: '哥伦比亚',
+ PE: '秘鲁',
+ VE: '委内瑞拉',
+ EC: '厄瓜多尔',
+ GT: '危地马拉',
+ DO: '多米尼加',
+ GB: '英国',
+ DE: '德国',
+ FR: '法国',
+ ES: '西班牙',
+ IT: '意大利',
+ NL: '荷兰',
+ PL: '波兰',
+ RU: '俄罗斯',
+ UA: '乌克兰',
+ TR: '土耳其',
+ SA: '沙特阿拉伯',
+ AE: '阿联酋',
+ IL: '以色列',
+ EG: '埃及',
+ NG: '尼日利亚',
+ ZA: '南非',
+ KE: '肯尼亚',
+ MA: '摩洛哥',
+ AU: '澳大利亚',
+ NZ: '新西兰'
+}
+
+/** 国家列统一展示中文名,无值时显示横线 */
+export function countryText(code) {
+ const value = (code || '').toUpperCase()
+ return COUNTRY_TEXT[value] || value || '—'
+}
+
export function statusMeta(status) {
return (
APP_USER_STATUS.find((item) => item.value === status) || { label: status || '-', tag: 'info' }
@@ -43,14 +106,6 @@ export function platformText(row) {
return PLATFORM_TEXT[platform] || platform || '—'
}
-/** 登录会话上的系统,例如 Android 16。没有记录时显示横线。 */
-export function systemText(row) {
- const name = PLATFORM_TEXT[row?.platform] || row?.platform || ''
- const version = row?.osVersion || ''
- const text = `${name} ${version}`.trim()
- return text || '—'
-}
-
/** 后端返回 ISO 时间串,统一格式化成后台可读的本地时间 */
export function formatDateTime(value) {
return value && dayjs(value).isValid() ? dayjs(value).format('YYYY-MM-DD HH:mm:ss') : '—'
@@ -72,6 +127,7 @@ export function useAppUsers() {
const keyword = ref('')
const statusFilter = ref(undefined)
const countryFilter = ref(undefined)
+ const platformFilter = ref(undefined)
const currentPage = ref(1)
const pageSize = ref(10)
@@ -94,7 +150,8 @@ export function useAppUsers() {
pageSize: pageSize.value,
keyword: keyword.value.trim() || undefined,
status: statusFilter.value,
- countryCode: countryFilter.value
+ countryCode: countryFilter.value,
+ platform: platformFilter.value || undefined
})
users.value = res.data?.list || []
total.value = res.data?.total || 0
@@ -112,6 +169,7 @@ export function useAppUsers() {
keyword.value = ''
statusFilter.value = undefined
countryFilter.value = undefined
+ platformFilter.value = undefined
queryUsers()
}
@@ -198,6 +256,7 @@ export function useAppUsers() {
keyword,
statusFilter,
countryFilter,
+ platformFilter,
currentPage,
pageSize,
detailVisible,