feat(push): Token 复制按钮 + romVersion 显示

- PushManagementView: 系统版本列新增 romVersion 子行显示(灰色小字)
- Token 预览列新增"复制"按钮,点击后调管理端接口获取完整 token 并复制到剪贴板
- DeviceInfo 接口添加 romVersion 字段
- pushAdminApi 新增 getDeviceToken 方法

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
这个提交包含在:
XuqmGroup 2026-06-26 12:25:08 +08:00
父节点 b94883d6e0
当前提交 6f89da4362
共有 2 个文件被更改,包括 34 次插入2 次删除

查看文件

@ -9,6 +9,7 @@ export interface DeviceInfo {
brand: string | null brand: string | null
model: string | null model: string | null
osVersion: string | null osVersion: string | null
romVersion: string | null
appVersion: string | null appVersion: string | null
receivePush: boolean receivePush: boolean
lastLoginAt: string | null lastLoginAt: string | null
@ -95,4 +96,10 @@ export const pushAdminApi = {
'/push/admin/operation-logs', { params: { appKey, page, size } }, '/push/admin/operation-logs', { params: { appKey, page, size } },
) )
}, },
getDeviceToken(appKey: string, deviceId: string) {
return client.get<{ data: { token: string } }>(`/push/admin/devices/${deviceId}/token`, {
params: { appKey },
})
},
} }

查看文件

@ -74,9 +74,23 @@
<el-table-column label="平台" prop="platform" width="90" /> <el-table-column label="平台" prop="platform" width="90" />
<el-table-column label="品牌" prop="brand" width="80" /> <el-table-column label="品牌" prop="brand" width="80" />
<el-table-column label="型号" prop="model" min-width="110" /> <el-table-column label="型号" prop="model" min-width="110" />
<el-table-column label="系统版本" prop="osVersion" width="100" /> <el-table-column label="系统版本" min-width="120">
<template #default="{ row }">
<div>{{ row.osVersion || '-' }}</div>
<div v-if="row.romVersion" style="font-size:11px;color:#909399">{{ row.romVersion }}</div>
</template>
</el-table-column>
<el-table-column label="App 版本" prop="appVersion" width="90" /> <el-table-column label="App 版本" prop="appVersion" width="90" />
<el-table-column label="Token 预览" prop="tokenPreview" min-width="140" /> <el-table-column label="Token 预览" min-width="140">
<template #default="{ row }">
<el-space>
<span>{{ row.tokenPreview }}</span>
<el-tooltip content="复制完整 Token" placement="top">
<el-button link size="small" @click="copyToken(row)">复制</el-button>
</el-tooltip>
</el-space>
</template>
</el-table-column>
<el-table-column label="接收推送" width="90" align="center"> <el-table-column label="接收推送" width="90" align="center">
<template #default="{ row }"> <template #default="{ row }">
<el-tag :type="row.receivePush ? 'success' : 'danger'" size="small"> <el-tag :type="row.receivePush ? 'success' : 'danger'" size="small">
@ -290,6 +304,17 @@ async function sendTestPush() {
} }
} }
async function copyToken(row: { id: string; tokenPreview: string }) {
try {
const res = await pushAdminApi.getDeviceToken(appKey.value, row.id)
await navigator.clipboard.writeText(res.data.data.token)
ElMessage.success('Token 已复制')
} catch {
await navigator.clipboard.writeText(row.tokenPreview)
ElMessage.info('已复制 Token 预览')
}
}
async function loadLogs() { async function loadLogs() {
const uid = logsUserId.value.trim() const uid = logsUserId.value.trim()
if (!uid) return if (!uid) return