fix(push-config): 按平台过滤厂商凭据展示
切换平台时只展示对应平台的厂商: - Android:小米、华为、荣耀、OPPO、VIVO - iOS:APNs - HarmonyOS:鸿蒙 Push Kit Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
这个提交包含在:
父节点
43d6215e10
当前提交
43a4e29ae5
@ -36,7 +36,7 @@
|
|||||||
<el-card style="margin-bottom:16px">
|
<el-card style="margin-bottom:16px">
|
||||||
<template #header>厂商凭据</template>
|
<template #header>厂商凭据</template>
|
||||||
<div class="vendor-grid">
|
<div class="vendor-grid">
|
||||||
<el-card v-for="vendor in vendorDefs" :key="vendor.key" shadow="never" class="vendor-card">
|
<el-card v-for="vendor in filteredVendorDefs" :key="vendor.key" shadow="never" class="vendor-card">
|
||||||
<template #header>{{ vendor.label }}</template>
|
<template #header>{{ vendor.label }}</template>
|
||||||
<div class="vendor-hint">{{ vendor.hint }}</div>
|
<div class="vendor-hint">{{ vendor.hint }}</div>
|
||||||
<el-form :label-position="isMobile ? 'top' : 'right'" label-width="110px">
|
<el-form :label-position="isMobile ? 'top' : 'right'" label-width="110px">
|
||||||
@ -201,7 +201,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { onBeforeUnmount, onMounted, reactive, ref } from 'vue'
|
import { computed, onBeforeUnmount, onMounted, reactive, ref } from 'vue'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import { CopyDocument } from '@element-plus/icons-vue'
|
import { CopyDocument } from '@element-plus/icons-vue'
|
||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
@ -247,6 +247,7 @@ type VendorDef = {
|
|||||||
label: string
|
label: string
|
||||||
hint: string
|
hint: string
|
||||||
fields: FieldDef[]
|
fields: FieldDef[]
|
||||||
|
platforms: Array<'ANDROID' | 'IOS' | 'HARMONY'>
|
||||||
}
|
}
|
||||||
|
|
||||||
type PushConfigState = {
|
type PushConfigState = {
|
||||||
@ -317,6 +318,7 @@ const vendorDefs: VendorDef[] = [
|
|||||||
key: 'xiaomi',
|
key: 'xiaomi',
|
||||||
label: '小米 MiPush',
|
label: '小米 MiPush',
|
||||||
hint: '这里仅填写厂商凭据。Channel ID 放在 profiles 中按场景单独配置,支持后续补充或删除。',
|
hint: '这里仅填写厂商凭据。Channel ID 放在 profiles 中按场景单独配置,支持后续补充或删除。',
|
||||||
|
platforms: ['ANDROID'],
|
||||||
fields: [
|
fields: [
|
||||||
{ key: 'appId', label: 'AppId' },
|
{ key: 'appId', label: 'AppId' },
|
||||||
{ key: 'appKey', label: 'AppKey' },
|
{ key: 'appKey', label: 'AppKey' },
|
||||||
@ -327,6 +329,7 @@ const vendorDefs: VendorDef[] = [
|
|||||||
key: 'huawei',
|
key: 'huawei',
|
||||||
label: '华为 HMS',
|
label: '华为 HMS',
|
||||||
hint: '仅保留厂商账号信息。Category、Channel ID、重要性等由 profiles 负责。',
|
hint: '仅保留厂商账号信息。Category、Channel ID、重要性等由 profiles 负责。',
|
||||||
|
platforms: ['ANDROID'],
|
||||||
fields: [
|
fields: [
|
||||||
{ key: 'appId', label: 'AppId' },
|
{ key: 'appId', label: 'AppId' },
|
||||||
{ key: 'appSecret', label: 'AppSecret' },
|
{ key: 'appSecret', label: 'AppSecret' },
|
||||||
@ -336,6 +339,7 @@ const vendorDefs: VendorDef[] = [
|
|||||||
key: 'honor',
|
key: 'honor',
|
||||||
label: '荣耀 Push',
|
label: '荣耀 Push',
|
||||||
hint: '荣耀账号凭据。业务场景与展示策略在 profiles 中配置。',
|
hint: '荣耀账号凭据。业务场景与展示策略在 profiles 中配置。',
|
||||||
|
platforms: ['ANDROID'],
|
||||||
fields: [
|
fields: [
|
||||||
{ key: 'appId', label: 'AppId' },
|
{ key: 'appId', label: 'AppId' },
|
||||||
{ key: 'clientId', label: 'ClientId' },
|
{ key: 'clientId', label: 'ClientId' },
|
||||||
@ -346,6 +350,7 @@ const vendorDefs: VendorDef[] = [
|
|||||||
key: 'oppo',
|
key: 'oppo',
|
||||||
label: 'OPPO 推送',
|
label: 'OPPO 推送',
|
||||||
hint: '仅保留 AppKey / MasterSecret。通道配置与优先级在 profiles 中维护。',
|
hint: '仅保留 AppKey / MasterSecret。通道配置与优先级在 profiles 中维护。',
|
||||||
|
platforms: ['ANDROID'],
|
||||||
fields: [
|
fields: [
|
||||||
{ key: 'appId', label: 'AppId' },
|
{ key: 'appId', label: 'AppId' },
|
||||||
{ key: 'appKey', label: 'AppKey' },
|
{ key: 'appKey', label: 'AppKey' },
|
||||||
@ -356,6 +361,7 @@ const vendorDefs: VendorDef[] = [
|
|||||||
key: 'vivo',
|
key: 'vivo',
|
||||||
label: 'vivo 推送',
|
label: 'vivo 推送',
|
||||||
hint: '厂商凭据与业务分类分离。classification 由 profiles 的 Category 驱动。',
|
hint: '厂商凭据与业务分类分离。classification 由 profiles 的 Category 驱动。',
|
||||||
|
platforms: ['ANDROID'],
|
||||||
fields: [
|
fields: [
|
||||||
{ key: 'appId', label: 'AppId' },
|
{ key: 'appId', label: 'AppId' },
|
||||||
{ key: 'appKey', label: 'AppKey' },
|
{ key: 'appKey', label: 'AppKey' },
|
||||||
@ -366,6 +372,7 @@ const vendorDefs: VendorDef[] = [
|
|||||||
key: 'harmony',
|
key: 'harmony',
|
||||||
label: '鸿蒙 Push Kit',
|
label: '鸿蒙 Push Kit',
|
||||||
hint: '鸿蒙厂商凭据。需要的 Category / Channel ID 放到 profiles 中。',
|
hint: '鸿蒙厂商凭据。需要的 Category / Channel ID 放到 profiles 中。',
|
||||||
|
platforms: ['HARMONY'],
|
||||||
fields: [
|
fields: [
|
||||||
{ key: 'appId', label: 'AppId' },
|
{ key: 'appId', label: 'AppId' },
|
||||||
{ key: 'appSecret', label: 'AppSecret' },
|
{ key: 'appSecret', label: 'AppSecret' },
|
||||||
@ -375,6 +382,7 @@ const vendorDefs: VendorDef[] = [
|
|||||||
key: 'apns',
|
key: 'apns',
|
||||||
label: 'iOS APNs',
|
label: 'iOS APNs',
|
||||||
hint: 'Team ID / Key ID / Bundle ID / 私钥统一放这里。Badge、Thread ID、Interruption Level 放在 profiles 中。',
|
hint: 'Team ID / Key ID / Bundle ID / 私钥统一放这里。Badge、Thread ID、Interruption Level 放在 profiles 中。',
|
||||||
|
platforms: ['IOS'],
|
||||||
fields: [
|
fields: [
|
||||||
{ key: 'teamId', label: 'Team ID' },
|
{ key: 'teamId', label: 'Team ID' },
|
||||||
{ key: 'keyId', label: 'Key ID' },
|
{ key: 'keyId', label: 'Key ID' },
|
||||||
@ -385,6 +393,10 @@ const vendorDefs: VendorDef[] = [
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
const filteredVendorDefs = computed(() =>
|
||||||
|
vendorDefs.filter(v => v.platforms.includes(selectedPlatform.value)),
|
||||||
|
)
|
||||||
|
|
||||||
function updateViewport() {
|
function updateViewport() {
|
||||||
isMobile.value = window.innerWidth < 768
|
isMobile.value = window.innerWidth < 768
|
||||||
}
|
}
|
||||||
|
|||||||
正在加载...
在新工单中引用
屏蔽一个用户