From aadc6a763a45f3b48b30da04f5b523899c9af3b1 Mon Sep 17 00:00:00 2001 From: Rose Ding Date: Wed, 18 Mar 2026 10:49:41 +0800 Subject: [PATCH] =?UTF-8?q?feat(subscriptions):=20=E8=AE=A2=E9=98=85?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E9=A1=B5=E9=9D=A2=E6=B7=BB=E5=8A=A0=E6=95=99?= =?UTF-8?q?=E7=A8=8B=E6=8C=87=E5=8D=97=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在订阅管理页面工具栏添加教程指南按钮(? 图标),点击弹出模态框, 引导管理员完成订阅功能的完整使用流程: - 步骤一:创建订阅分组(含跳转分组管理链接) - 步骤二:分配订阅给用户(搜索用户、选择分组、设置有效期) - 步骤三:管理已有订阅(调整/重置配额/撤销操作说明表格) - 底部提示:说明下拉列表为空时的解决方案 弹窗样式参照 BackupView 的 R2 Guide 模态框实现,保持 UI 一致性。 Co-Authored-By: Claude Opus 4.6 --- .../src/views/admin/SubscriptionsView.vue | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) diff --git a/frontend/src/views/admin/SubscriptionsView.vue b/frontend/src/views/admin/SubscriptionsView.vue index 97282594..493b8553 100644 --- a/frontend/src/views/admin/SubscriptionsView.vue +++ b/frontend/src/views/admin/SubscriptionsView.vue @@ -144,6 +144,13 @@ + + +

{{ t('admin.subscriptions.guide.title') }}

+

{{ t('admin.subscriptions.guide.subtitle') }}

+ + +
+

+ 1 + {{ t('admin.subscriptions.guide.step1.title') }} +

+
    +
  1. {{ t('admin.subscriptions.guide.step1.line1') }}
  2. +
  3. {{ t('admin.subscriptions.guide.step1.line2') }}
  4. +
  5. {{ t('admin.subscriptions.guide.step1.line3') }}
  6. +
+
+ + {{ t('admin.subscriptions.guide.step1.link') }} + + +
+
+ + +
+

+ 2 + {{ t('admin.subscriptions.guide.step2.title') }} +

+
    +
  1. {{ t('admin.subscriptions.guide.step2.line1') }}
  2. +
  3. {{ t('admin.subscriptions.guide.step2.line2') }}
  4. +
  5. {{ t('admin.subscriptions.guide.step2.line3') }}
  6. +
+
+ + +
+

+ 3 + {{ t('admin.subscriptions.guide.step3.title') }} +

+
+ + + + + + + +
{{ row.action }}{{ row.desc }}
+
+
+ + +
+ {{ t('admin.subscriptions.guide.tip') }} +
+ +
+ +
+ + + + @@ -674,6 +760,15 @@ interface GroupOption { rate: number } +// Guide modal state +const showGuideModal = ref(false) + +const guideActionRows = computed(() => [ + { action: t('admin.subscriptions.guide.actions.adjust'), desc: t('admin.subscriptions.guide.actions.adjustDesc') }, + { action: t('admin.subscriptions.guide.actions.resetQuota'), desc: t('admin.subscriptions.guide.actions.resetQuotaDesc') }, + { action: t('admin.subscriptions.guide.actions.revoke'), desc: t('admin.subscriptions.guide.actions.revokeDesc') } +]) + // User column display mode: 'email' or 'username' const userColumnMode = ref<'email' | 'username'>('email') const USER_COLUMN_MODE_KEY = 'subscription-user-column-mode'