好友与关系链
@@ -169,6 +199,7 @@ const imConfig = computed(() => {
historyRetentionDays: parsed.historyRetentionDays ?? 7,
conversationPullLimit: parsed.conversationPullLimit ?? 100,
multiClientConversationDeleteSync: parsed.multiClientConversationDeleteSync ?? false,
+ multiDeviceLoginMode: normalizeLoginMode(parsed.multiDeviceLoginMode),
}
} catch {
return defaultImConfig()
@@ -186,9 +217,20 @@ function defaultImConfig(): ImServiceConfig {
historyRetentionDays: 7,
conversationPullLimit: 100,
multiClientConversationDeleteSync: false,
+ multiDeviceLoginMode: 'MULTI_DEVICE_FREE',
}
}
+function normalizeLoginMode(
+ mode: ImServiceConfig['multiDeviceLoginMode'] | string | undefined,
+): ImServiceConfig['multiDeviceLoginMode'] {
+ const normalized = (mode ?? '').toString().trim().toUpperCase()
+ if (normalized === 'SAME_PLATFORM_ONE' || normalized === 'SINGLE_DEVICE' || normalized === 'MULTI_DEVICE_FREE') {
+ return normalized as ImServiceConfig['multiDeviceLoginMode']
+ }
+ return 'MULTI_DEVICE_FREE'
+}
+
function normalizeFriendRequestMode(
mode: ImServiceConfig['friendRequestMode'] | string | undefined,
allowFriendRequest: boolean | undefined,
@@ -252,6 +294,11 @@ onMounted(loadData)
.service-name { font-size: 15px; }
.service-config-list { display: flex; flex-direction: column; gap: 12px; }
.service-config-row { display: flex; justify-content: space-between; align-items: center; gap: 12px; font-size: 13px; color: #666; }
+.service-config-row--column { flex-direction: column; align-items: flex-start; }
.service-config-title { font-size: 13px; font-weight: 500; color: #303133; line-height: 1.4; }
.service-config-desc { margin-top: 4px; font-size: 12px; color: #909399; line-height: 1.4; }
+.login-mode-group { display: flex; flex-direction: column; gap: 12px; margin-top: 12px; }
+.login-mode-group :deep(.el-radio) { height: auto; align-items: flex-start; margin-right: 0; }
+.login-mode-group :deep(.el-radio__label) { white-space: normal; font-size: 13px; font-weight: 500; color: #303133; }
+.radio-desc { font-size: 12px; color: #909399; font-weight: 400; line-height: 1.5; margin-top: 2px; }
diff --git a/tenant-platform/src/views/push/PushConfigView.vue b/tenant-platform/src/views/push/PushConfigView.vue
index 9cb1c4e..5ca2626 100644
--- a/tenant-platform/src/views/push/PushConfigView.vue
+++ b/tenant-platform/src/views/push/PushConfigView.vue
@@ -34,6 +34,13 @@
厂商配置
通知通道
+
@@ -80,6 +87,13 @@
新增通道
业务分类路由
+
{{ row.type }}