Browse Source

feat: team admin can pay billing (#2240)

Joel 1 year ago
parent
commit
2fc0dcc10a

+ 4 - 4
web/app/components/billing/billing-page/index.tsx

@@ -11,23 +11,23 @@ import { useProviderContext } from '@/context/provider-context'
 
 const Billing: FC = () => {
   const { t } = useTranslation()
-  const { isCurrentWorkspaceOwner } = useAppContext()
+  const { isCurrentWorkspaceManager } = useAppContext()
   const [billingUrl, setBillingUrl] = React.useState('')
   const { enableBilling } = useProviderContext()
 
   useEffect(() => {
-    if (!enableBilling || !isCurrentWorkspaceOwner)
+    if (!enableBilling || !isCurrentWorkspaceManager)
       return
     (async () => {
       const { url } = await fetchBillingUrl()
       setBillingUrl(url)
     })()
-  }, [isCurrentWorkspaceOwner])
+  }, [isCurrentWorkspaceManager])
 
   return (
     <div>
       <PlanComp loc={'billing-page'} />
-      {enableBilling && isCurrentWorkspaceOwner && billingUrl && (
+      {enableBilling && isCurrentWorkspaceManager && billingUrl && (
         <a className='mt-5 flex px-6 justify-between h-12 items-center bg-gray-50 rounded-xl cursor-pointer' href={billingUrl} target='_blank'>
           <div className='flex items-center'>
             <ReceiptList className='w-4 h-4 text-gray-700' />

+ 2 - 2
web/app/components/billing/pricing/index.tsx

@@ -20,8 +20,8 @@ const Pricing: FC<Props> = ({
 }) => {
   const { t } = useTranslation()
   const { plan } = useProviderContext()
-  const { isCurrentWorkspaceOwner } = useAppContext()
-  const canPay = isCurrentWorkspaceOwner
+  const { isCurrentWorkspaceManager } = useAppContext()
+  const canPay = isCurrentWorkspaceManager
   const [planRange, setPlanRange] = React.useState<PlanRange>(PlanRange.monthly)
 
   return createPortal(

+ 1 - 0
web/app/components/header/account-setting/model-provider-page/declarations.ts

@@ -132,6 +132,7 @@ export enum CurrentSystemQuotaTypeEnum {
 export enum QuotaUnitEnum {
   times = 'times',
   tokens = 'tokens',
+  credits = 'credits',
 }
 
 export type QuotaConfiguration = {

+ 3 - 0
web/app/components/header/account-setting/model-provider-page/provider-added-card/quota-panel.tsx

@@ -62,6 +62,9 @@ const QuotaPanel: FC<QuotaPanelProps> = ({
             {
               currentQuota?.quota_unit === QuotaUnitEnum.times && t('common.modelProvider.callTimes')
             }
+            {
+              currentQuota?.quota_unit === QuotaUnitEnum.credits && t('common.modelProvider.credits')
+            }
           </div>
         )
       }

+ 2 - 2
web/i18n/lang/billing.en.ts

@@ -20,7 +20,7 @@ const translation = {
     save: 'Save ',
     free: 'Free',
     currentPlan: 'Current Plan',
-    contractOwner: 'Contact your workspace owner',
+    contractOwner: 'Contact team manager',
     startForFree: 'Start for free',
     getStartedWith: 'Get started with ',
     contactSales: 'Contact Sales',
@@ -68,7 +68,7 @@ const translation = {
       tooltip: 'Manual editing and annotation of responses provides customizable high-quality question-answering abilities for apps. (Applicable only in chat apps)',
     },
     ragAPIRequestTooltip: 'Refers to the number of API calls invoking only the knowledge base processing capabilities of Dify.',
-    receiptInfo: 'Only team owner can subscribe and view billing information',
+    receiptInfo: 'Only team owner and team admin can subscribe and view billing information',
   },
   plans: {
     sandbox: {

+ 2 - 1
web/i18n/lang/billing.pt.ts

@@ -20,7 +20,7 @@ const translation = {
     save: 'Save ',
     free: 'Free',
     currentPlan: 'Current Plan',
-    contractOwner: 'Contact your workspace owner',
+    contractOwner: 'Contact team manager',
     startForFree: 'Start for free',
     getStartedWith: 'Get started with ',
     contactSales: 'Contact Sales',
@@ -68,6 +68,7 @@ const translation = {
       tooltip: 'Manual editing and annotation of responses provides customizable high-quality question-answering abilities for apps. (Applicable only in chat apps)',
     },
     ragAPIRequestTooltip: 'Refers to the number of API calls invoking only the knowledge base processing capabilities of Dify.',
+    receiptInfo: 'Somente proprietários e administradores de equipe podem se inscrever e visualizar informações de cobrança',
   },
   plans: {
     sandbox: {

+ 2 - 2
web/i18n/lang/billing.zh.ts

@@ -19,7 +19,7 @@ const translation = {
     year: '年',
     save: '节省',
     currentPlan: '当前计划',
-    contractOwner: '联系您的工作区所有者',
+    contractOwner: '联系团队管理员',
     free: '免费',
     startForFree: '免费开始',
     getStartedWith: '开始使用',
@@ -68,7 +68,7 @@ const translation = {
       tooltip: '标注回复功能通过人工编辑标注为应用提供了可定制的高质量问答回复能力',
     },
     ragAPIRequestTooltip: '指单独调用 Dify 知识库数据处理能力的 API。',
-    receiptInfo: '只有团队所有者才能订阅和查看账单信息',
+    receiptInfo: '只有团队所有者和团队管理员才能订阅和查看账单信息',
   },
   plans: {
     sandbox: {

+ 1 - 0
web/i18n/lang/common.en.ts

@@ -303,6 +303,7 @@ const translation = {
     model: 'Model',
     featureSupported: '{{feature}} supported',
     callTimes: 'Call times',
+    credits: 'Message Credits',
     buyQuota: 'Buy Quota',
     getFreeTokens: 'Get free Tokens',
     priorityUsing: 'Prioritize using',

+ 1 - 0
web/i18n/lang/common.zh.ts

@@ -303,6 +303,7 @@ const translation = {
     model: '模型',
     featureSupported: '支持 {{feature}} 功能',
     callTimes: '调用次数',
+    credits: '消息额度',
     buyQuota: '购买额度',
     getFreeTokens: '获得免费 Tokens',
     priorityUsing: '优先使用',