Parcourir la source

feat: display next quota reset time in subscription card (#4181)

Show the next quota reset time for active subscriptions in the "My Subscriptions"
section when a reset period is configured (next_reset_time > 0). Hidden when
the subscription plan has no quota reset configured.
MS il y a 3 semaines
Parent
commit
2bedd31b42

+ 8 - 0
web/src/components/topup/SubscriptionPlansCard.jsx

@@ -442,6 +442,14 @@ const SubscriptionPlansCard = ({
                             (subscription?.end_time || 0) * 1000,
                             (subscription?.end_time || 0) * 1000,
                           ).toLocaleString()}
                           ).toLocaleString()}
                         </div>
                         </div>
+                        {isActive && subscription?.next_reset_time > 0 && (
+                          <div className='text-xs text-gray-500 mb-2'>
+                            {t('下一次重置')}:{' '}
+                            {new Date(
+                              subscription.next_reset_time * 1000,
+                            ).toLocaleString()}
+                          </div>
+                        )}
                         <div className='text-xs text-gray-500 mb-2'>
                         <div className='text-xs text-gray-500 mb-2'>
                           {t('总额度')}:{' '}
                           {t('总额度')}:{' '}
                           {totalAmount > 0 ? (
                           {totalAmount > 0 ? (

+ 1 - 0
web/src/i18n/locales/en.json

@@ -440,6 +440,7 @@
     "余额充值管理": "Balance recharge management",
     "余额充值管理": "Balance recharge management",
     "作废": "Invalidate",
     "作废": "Invalidate",
     "作废于": "Invalidated at",
     "作废于": "Invalidated at",
+    "下一次重置": "Next reset",
     "作废后该订阅将立即失效,历史记录不受影响。是否继续?": "After invalidation, the subscription becomes invalid immediately. History is not affected. Continue?",
     "作废后该订阅将立即失效,历史记录不受影响。是否继续?": "After invalidation, the subscription becomes invalid immediately. History is not affected. Continue?",
     "作用域": "Scope",
     "作用域": "Scope",
     "作用域:包含分组": "Scope: Include Group",
     "作用域:包含分组": "Scope: Include Group",

+ 1 - 0
web/src/i18n/locales/fr.json

@@ -435,6 +435,7 @@
     "余额充值管理": "Recharge du solde",
     "余额充值管理": "Recharge du solde",
     "作废": "Invalider",
     "作废": "Invalider",
     "作废于": "Invalidé le",
     "作废于": "Invalidé le",
+    "下一次重置": "Prochaine réinitialisation",
     "作废后该订阅将立即失效,历史记录不受影响。是否继续?": "Après invalidation, l'abonnement devient immédiatement invalide. L'historique n'est pas affecté. Continuer ?",
     "作废后该订阅将立即失效,历史记录不受影响。是否继续?": "Après invalidation, l'abonnement devient immédiatement invalide. L'historique n'est pas affecté. Continuer ?",
     "作用域": "Portée",
     "作用域": "Portée",
     "作用域:包含分组": "Portée : inclure le groupe",
     "作用域:包含分组": "Portée : inclure le groupe",

+ 1 - 0
web/src/i18n/locales/ja.json

@@ -431,6 +431,7 @@
     "余额充值管理": "残高チャージ管理",
     "余额充值管理": "残高チャージ管理",
     "作废": "無効化",
     "作废": "無効化",
     "作废于": "無効化日",
     "作废于": "無効化日",
+    "下一次重置": "次回リセット",
     "作废后该订阅将立即失效,历史记录不受影响。是否继续?": "無効化するとこのサブスクリプションは直ちに失効します。履歴には影響しません。続行しますか?",
     "作废后该订阅将立即失效,历史记录不受影响。是否继续?": "無効化するとこのサブスクリプションは直ちに失効します。履歴には影響しません。続行しますか?",
     "作用域": "スコープ",
     "作用域": "スコープ",
     "作用域:包含分组": "スコープ:グループを含む",
     "作用域:包含分组": "スコープ:グループを含む",

+ 1 - 0
web/src/i18n/locales/ru.json

@@ -438,6 +438,7 @@
     "余额充值管理": "Управление пополнением баланса",
     "余额充值管理": "Управление пополнением баланса",
     "作废": "Аннулировать",
     "作废": "Аннулировать",
     "作废于": "Аннулировано",
     "作废于": "Аннулировано",
+    "下一次重置": "Следующий сброс",
     "作废后该订阅将立即失效,历史记录不受影响。是否继续?": "После аннулирования подписка сразу станет недействительной. История не изменится. Продолжить?",
     "作废后该订阅将立即失效,历史记录不受影响。是否继续?": "После аннулирования подписка сразу станет недействительной. История не изменится. Продолжить?",
     "作用域": "Область действия",
     "作用域": "Область действия",
     "作用域:包含分组": "Область действия: включить группу",
     "作用域:包含分组": "Область действия: включить группу",

+ 1 - 0
web/src/i18n/locales/vi.json

@@ -432,6 +432,7 @@
     "余额充值管理": "Quản lý nạp tiền số dư",
     "余额充值管理": "Quản lý nạp tiền số dư",
     "作废": "Vô hiệu",
     "作废": "Vô hiệu",
     "作废于": "Vô hiệu vào",
     "作废于": "Vô hiệu vào",
+    "下一次重置": "Đặt lại tiếp theo",
     "作废后该订阅将立即失效,历史记录不受影响。是否继续?": "Sau khi vô hiệu, đăng ký sẽ mất hiệu lực ngay. Lịch sử không bị ảnh hưởng. Tiếp tục?",
     "作废后该订阅将立即失效,历史记录不受影响。是否继续?": "Sau khi vô hiệu, đăng ký sẽ mất hiệu lực ngay. Lịch sử không bị ảnh hưởng. Tiếp tục?",
     "作用域": "Phạm vi",
     "作用域": "Phạm vi",
     "作用域:包含分组": "Phạm vi: Bao gồm nhóm",
     "作用域:包含分组": "Phạm vi: Bao gồm nhóm",

+ 1 - 0
web/src/i18n/locales/zh-CN.json

@@ -2797,6 +2797,7 @@
     "至": "至",
     "至": "至",
     "过期于": "过期于",
     "过期于": "过期于",
     "作废于": "作废于",
     "作废于": "作废于",
+    "下一次重置": "下一次重置",
     "购买套餐后即可享受模型权益": "购买套餐后即可享受模型权益",
     "购买套餐后即可享受模型权益": "购买套餐后即可享受模型权益",
     "限购": "限购",
     "限购": "限购",
     "推荐": "推荐",
     "推荐": "推荐",

+ 1 - 0
web/src/i18n/locales/zh-TW.json

@@ -379,6 +379,7 @@
     "余额充值管理": "餘額儲值管理",
     "余额充值管理": "餘額儲值管理",
     "作废": "作廢",
     "作废": "作廢",
     "作废于": "作廢於",
     "作废于": "作廢於",
+    "下一次重置": "下一次重置",
     "作废后该订阅将立即失效,历史记录不受影响。是否继续?": "作廢後該訂閱將立即失效,歷史記錄不受影響。是否繼續?",
     "作废后该订阅将立即失效,历史记录不受影响。是否继续?": "作廢後該訂閱將立即失效,歷史記錄不受影響。是否繼續?",
     "你似乎并没有修改什么": "你似乎並沒有修改什麼",
     "你似乎并没有修改什么": "你似乎並沒有修改什麼",
     "你可以在“自定义模型名称”处手动添加它们,然后点击填入后再提交,或者直接使用下方操作自动处理。": "你可以在「自訂模型名稱」處手動添加它們,然後點擊填入後再提交,或者直接使用下方操作自動處理。",
     "你可以在“自定义模型名称”处手动添加它们,然后点击填入后再提交,或者直接使用下方操作自动处理。": "你可以在「自訂模型名稱」處手動添加它們,然後點擊填入後再提交,或者直接使用下方操作自動處理。",