diff --git a/apps/admin/app/dashboard/announcement/notice-form.tsx b/apps/admin/app/dashboard/announcement/notice-form.tsx index 8b8863b..9bdb7c7 100644 --- a/apps/admin/app/dashboard/announcement/notice-form.tsx +++ b/apps/admin/app/dashboard/announcement/notice-form.tsx @@ -15,7 +15,6 @@ import { SheetTrigger, } from '@shadcn/ui/sheet'; import { useTranslations } from 'next-intl'; -import { useTheme } from 'next-themes'; import { useEffect, useState } from 'react'; const formSchema = z.object({ @@ -39,7 +38,6 @@ export default function AnnouncementForm>({ title, }: AnnouncementFormProps) { const t = useTranslations('announcement'); - const { resolvedTheme } = useTheme(); const [open, setOpen] = useState(false); const form = useForm({ resolver: zodResolver(formSchema), diff --git a/apps/admin/app/dashboard/document/document-form.tsx b/apps/admin/app/dashboard/document/document-form.tsx index a57b5f0..dd563c5 100644 --- a/apps/admin/app/dashboard/document/document-form.tsx +++ b/apps/admin/app/dashboard/document/document-form.tsx @@ -16,7 +16,6 @@ import { SheetTrigger, } from '@shadcn/ui/sheet'; import { useTranslations } from 'next-intl'; -import { useTheme } from 'next-themes'; import { useEffect, useState } from 'react'; const formSchema = z.object({ @@ -41,7 +40,6 @@ export default function DocumentForm>({ title, }: DocumentFormProps) { const t = useTranslations('document'); - const { resolvedTheme } = useTheme(); const [open, setOpen] = useState(false); const form = useForm({ resolver: zodResolver(formSchema), diff --git a/apps/admin/app/dashboard/subscribe/subscribe-form.tsx b/apps/admin/app/dashboard/subscribe/subscribe-form.tsx index c76369a..3837645 100644 --- a/apps/admin/app/dashboard/subscribe/subscribe-form.tsx +++ b/apps/admin/app/dashboard/subscribe/subscribe-form.tsx @@ -32,7 +32,6 @@ import { } from '@shadcn/ui/sheet'; import { useQuery } from '@tanstack/react-query'; import { useTranslations } from 'next-intl'; -import { useTheme } from 'next-themes'; import { assign, shake } from 'radash'; import { useEffect, useState } from 'react'; @@ -53,6 +52,7 @@ const defaultValues = { discount: [], server_group: [], server: [], + unit_time: 'Month', }; export default function SubscribeForm>({ @@ -63,7 +63,6 @@ export default function SubscribeForm>({ title, }: SubscribeFormProps) { const t = useTranslations('subscribe'); - const { resolvedTheme } = useTheme(); const [open, setOpen] = useState(false); @@ -71,11 +70,12 @@ export default function SubscribeForm>({ name: z.string(), description: z.string().optional(), unit_price: z.number(), + unit_time: z.string().default('Month'), replacement: z.number().optional(), discount: z .array( z.object({ - months: z.number(), + quantity: z.number(), discount: z.number(), }), ) @@ -135,6 +135,7 @@ export default function SubscribeForm>({ }, }); + const unit_time = form.watch('unit_time'); return ( @@ -255,7 +256,7 @@ export default function SubscribeForm>({ name='unit_price' render={({ field }) => ( - {t('form.unit_price')} + {t('form.unitPrice')} >({ )} /> + ( + + {t('form.unitTime')} + + { + if (value) { + form.setValue(field.name, value); + } + }} + options={[ + { label: t('form.Year'), value: 'Year' }, + { label: t('form.Month'), value: 'Month' }, + { label: t('form.Day'), value: 'Day' }, + { label: t('form.Hour'), value: 'Hour' }, + { label: t('form.Minute'), value: 'Minute' }, + ]} + /> + + + + )} + /> >({ fields={[ { - name: 'months', + name: 'quantity', type: 'number', min: 1, - suffix: t('form.discountMonths'), + suffix: unit_time && t(`form.${unit_time}`), }, { name: 'discount', @@ -453,7 +482,7 @@ export default function SubscribeForm>({ return { ...data, price: evaluateWithPrecision( - `${unit_price} * ${data.months} * ${data.discount} / 100`, + `${unit_price} * ${data.quantity} * ${data.discount} / 100`, ), }; }, @@ -471,7 +500,7 @@ export default function SubscribeForm>({ return { ...data, discount: evaluateWithPrecision( - `${data.price} / ${data.months} / ${unit_price} * 100`, + `${data.price} / ${data.quantity} / ${unit_price} * 100`, ), }; }, diff --git a/apps/admin/locales/cs-CZ/subscribe.json b/apps/admin/locales/cs-CZ/subscribe.json index 4187649..e7400ba 100644 --- a/apps/admin/locales/cs-CZ/subscribe.json +++ b/apps/admin/locales/cs-CZ/subscribe.json @@ -13,6 +13,11 @@ "edit": "Upravit", "editSubscribe": "Upravit odběr", "form": { + "Day": "Den", + "Hour": "Hodina", + "Minute": "Minuta", + "Month": "Měsíc", + "Year": "Rok", "cancel": "Zrušit", "confirm": "Potvrdit", "description": "Popis", @@ -29,12 +34,14 @@ "quota": "Limit nákupu", "replacement": "Cena za reset (za každý)", "selectSubscribeGroup": "Vyberte prosím skupinu předplatného", + "selectUnitTime": "Vyberte jednotku času", "server": "Server", "serverGroup": "Skupina serverů", "speedLimit": "Omezení rychlosti (Mbps)", "subscribeGroup": "Skupina předplatného", "traffic": "Přenos dat", - "unit_price": "Cena za měsíc" + "unitPrice": "Jednotková cena", + "unitTime": "Jednotka času" }, "group": { "actions": "Akce", diff --git a/apps/admin/locales/de-DE/subscribe.json b/apps/admin/locales/de-DE/subscribe.json index a64b5f3..6f10738 100644 --- a/apps/admin/locales/de-DE/subscribe.json +++ b/apps/admin/locales/de-DE/subscribe.json @@ -13,6 +13,11 @@ "edit": "Bearbeiten", "editSubscribe": "Abonnement bearbeiten", "form": { + "Day": "Tag", + "Hour": "Stunde", + "Minute": "Minute", + "Month": "Monat", + "Year": "Jahr", "cancel": "Abbrechen", "confirm": "Bestätigen", "description": "Beschreibung", @@ -29,12 +34,14 @@ "quota": "Kaufbeschränkung", "replacement": "Ersatzpreis (pro Mal)", "selectSubscribeGroup": "Bitte Abonnementgruppe auswählen", + "selectUnitTime": "Bitte wählen Sie eine Zeiteinheit", "server": "Dienst", "serverGroup": "Dienstgruppe", "speedLimit": "Geschwindigkeitsbegrenzung (Mbps)", "subscribeGroup": "Abonnementgruppe", "traffic": "Datenvolumen", - "unit_price": "Monatspreis" + "unitPrice": "Einheitspreis", + "unitTime": "Zeiteinheit" }, "group": { "actions": "Aktionen", diff --git a/apps/admin/locales/en-US/subscribe.json b/apps/admin/locales/en-US/subscribe.json index 6a32821..864cff1 100644 --- a/apps/admin/locales/en-US/subscribe.json +++ b/apps/admin/locales/en-US/subscribe.json @@ -13,6 +13,11 @@ "edit": "Edit", "editSubscribe": "Edit Subscription", "form": { + "Day": "Day", + "Hour": "Hour", + "Minute": "Minute", + "Month": "Month", + "Year": "Year", "cancel": "Cancel", "confirm": "Confirm", "description": "Description", @@ -29,12 +34,14 @@ "quota": "Purchase Limit", "replacement": "Reset Price (per time)", "selectSubscribeGroup": "Select Subscription Group", + "selectUnitTime": "Please select a unit of time", "server": "Server", "serverGroup": "Server Group", "speedLimit": "Speed Limit (Mbps)", "subscribeGroup": "Subscription Group", "traffic": "Traffic", - "unit_price": "Monthly Price" + "unitPrice": "Unit Price", + "unitTime": "Unit Time" }, "group": { "actions": "Actions", diff --git a/apps/admin/locales/es-ES/subscribe.json b/apps/admin/locales/es-ES/subscribe.json index fbf98e1..3040664 100644 --- a/apps/admin/locales/es-ES/subscribe.json +++ b/apps/admin/locales/es-ES/subscribe.json @@ -13,6 +13,11 @@ "edit": "editar", "editSubscribe": "Editar suscripción", "form": { + "Day": "Día", + "Hour": "Hora", + "Minute": "Minuto", + "Month": "Mes", + "Year": "Año", "cancel": "Cancelar", "confirm": "Confirmar", "description": "Descripción", @@ -29,12 +34,14 @@ "quota": "Cantidad de compra limitada", "replacement": "Precio de reposición (cada vez)", "selectSubscribeGroup": "Por favor, seleccione un grupo de suscripción", + "selectUnitTime": "Por favor, seleccione la unidad de tiempo", "server": "Servidor", "serverGroup": "Grupo de servidores", "speedLimit": "Límite de velocidad (Mbps)", "subscribeGroup": "Grupo de suscripción", "traffic": "Tráfico", - "unit_price": "Precio mensual" + "unitPrice": "Precio unitario", + "unitTime": "Unidad de tiempo" }, "group": { "actions": "Acciones", diff --git a/apps/admin/locales/es-MX/subscribe.json b/apps/admin/locales/es-MX/subscribe.json index 42a03ba..7c8857b 100644 --- a/apps/admin/locales/es-MX/subscribe.json +++ b/apps/admin/locales/es-MX/subscribe.json @@ -13,6 +13,11 @@ "edit": "editar", "editSubscribe": "Editar suscripción", "form": { + "Day": "Día", + "Hour": "Hora", + "Minute": "Minuto", + "Month": "Mes", + "Year": "Año", "cancel": "Cancelar", "confirm": "Confirmar", "description": "Descripción", @@ -29,12 +34,14 @@ "quota": "Cantidad máxima de compra", "replacement": "Precio de reposición (cada vez)", "selectSubscribeGroup": "Por favor seleccione un grupo de suscripción", + "selectUnitTime": "Por favor seleccione la unidad de tiempo", "server": "Servidor", "serverGroup": "Grupo de servidores", "speedLimit": "Límite de velocidad (Mbps)", "subscribeGroup": "Grupo de suscripción", "traffic": "Tráfico", - "unit_price": "Precio mensual" + "unitPrice": "Precio unitario", + "unitTime": "Unidad de tiempo" }, "group": { "actions": "Acciones", diff --git a/apps/admin/locales/fi-FI/subscribe.json b/apps/admin/locales/fi-FI/subscribe.json index 06cfd2c..0400574 100644 --- a/apps/admin/locales/fi-FI/subscribe.json +++ b/apps/admin/locales/fi-FI/subscribe.json @@ -13,6 +13,11 @@ "edit": "muokkaa", "editSubscribe": "Muokkaa tilausta", "form": { + "Day": "Päivä", + "Hour": "Tunti", + "Minute": "Minuutti", + "Month": "Kuukausi", + "Year": "Vuosi", "cancel": "Peruuta", "confirm": "Vahvista", "description": "Kuvaus", @@ -29,12 +34,14 @@ "quota": "Ostorajoitus", "replacement": "Uudelleenhinnan asetus (kerta)", "selectSubscribeGroup": "Valitse tilausryhmä", + "selectUnitTime": "Valitse aikayksikkö", "server": "Palvelin", "serverGroup": "Palvelinryhmä", "speedLimit": "Nopeusrajoitus (Mbps)", "subscribeGroup": "Tilausryhmä", "traffic": "Liikenne", - "unit_price": "Kuukausihinta" + "unitPrice": "Yksikköhinta", + "unitTime": "Aikayksikkö" }, "group": { "actions": "Toiminnot", diff --git a/apps/admin/locales/fr-FR/subscribe.json b/apps/admin/locales/fr-FR/subscribe.json index 48adf43..81514b5 100644 --- a/apps/admin/locales/fr-FR/subscribe.json +++ b/apps/admin/locales/fr-FR/subscribe.json @@ -13,6 +13,11 @@ "edit": "Éditer", "editSubscribe": "Modifier l'abonnement", "form": { + "Day": "Jour", + "Hour": "Heure", + "Minute": "Minute", + "Month": "Mois", + "Year": "Année", "cancel": "Annuler", "confirm": "Confirmer", "description": "Description", @@ -29,12 +34,14 @@ "quota": "Quantité d'achat limitée", "replacement": "Prix de réinitialisation (par fois)", "selectSubscribeGroup": "Veuillez sélectionner un groupe d'abonnement", + "selectUnitTime": "Veuillez sélectionner l'unité de temps", "server": "Serveur", "serverGroup": "Groupe de serveurs", "speedLimit": "Limite de vitesse (Mbps)", "subscribeGroup": "Groupe d'abonnement", "traffic": "Trafic", - "unit_price": "Prix mensuel unitaire" + "unitPrice": "Prix unitaire", + "unitTime": "Unité de temps" }, "group": { "actions": "Actions", diff --git a/apps/admin/locales/hi-IN/subscribe.json b/apps/admin/locales/hi-IN/subscribe.json index 077ddf6..b8efe53 100644 --- a/apps/admin/locales/hi-IN/subscribe.json +++ b/apps/admin/locales/hi-IN/subscribe.json @@ -13,6 +13,11 @@ "edit": "संपादित करें", "editSubscribe": "संपादन सदस्यता", "form": { + "Day": "दिन", + "Hour": "घंटा", + "Minute": "मिनट", + "Month": "महीना", + "Year": "वर्ष", "cancel": "रद्द करें", "confirm": "पुष्टि करें", "description": "विवरण", @@ -29,12 +34,14 @@ "quota": "खरीद सीमा", "replacement": "पुनःस्थापना मूल्य (प्रति बार)", "selectSubscribeGroup": "कृपया सदस्यता समूह चुनें", + "selectUnitTime": "कृपया इकाई समय चुनें", "server": "सर्वर", "serverGroup": "सर्वर समूह", "speedLimit": "गति सीमा (Mbps)", "subscribeGroup": "सदस्यता समूह", "traffic": "ट्रैफिक", - "unit_price": "प्रति माह मूल्य" + "unitPrice": "इकाई मूल्य", + "unitTime": "इकाई समय" }, "group": { "actions": "क्रियाएँ", diff --git a/apps/admin/locales/hu-HU/subscribe.json b/apps/admin/locales/hu-HU/subscribe.json index 08e4f78..8ab15fd 100644 --- a/apps/admin/locales/hu-HU/subscribe.json +++ b/apps/admin/locales/hu-HU/subscribe.json @@ -13,6 +13,11 @@ "edit": "szerkesztés", "editSubscribe": "Előfizetés szerkesztése", "form": { + "Day": "Nap", + "Hour": "Óra", + "Minute": "Perc", + "Month": "Hónap", + "Year": "Év", "cancel": "Mégse", "confirm": "Megerősít", "description": "Leírás", @@ -29,12 +34,14 @@ "quota": "Vásárlási korlát", "replacement": "Csere ára (alkalmanként)", "selectSubscribeGroup": "Kérjük, válassza ki az előfizetési csoportot", + "selectUnitTime": "Kérjük, válassza ki az időegységet", "server": "Szolgáltatás", "serverGroup": "Szolgáltatáscsoport", "speedLimit": "Sebességkorlát (Mbps)", "subscribeGroup": "Előfizetési csoport", "traffic": "Forgalom", - "unit_price": "Havi ár" + "unitPrice": "Egységár", + "unitTime": "Időegység" }, "group": { "actions": "Műveletek", diff --git a/apps/admin/locales/ja-JP/subscribe.json b/apps/admin/locales/ja-JP/subscribe.json index 76e56c9..854afaf 100644 --- a/apps/admin/locales/ja-JP/subscribe.json +++ b/apps/admin/locales/ja-JP/subscribe.json @@ -13,6 +13,11 @@ "edit": "編集", "editSubscribe": "サブスクリプションを編集", "form": { + "Day": "日", + "Hour": "時", + "Minute": "分", + "Month": "月", + "Year": "年", "cancel": "キャンセル", "confirm": "確認", "description": "説明", @@ -29,12 +34,14 @@ "quota": "購入制限数", "replacement": "リセット価格(毎回)", "selectSubscribeGroup": "サブスクリプショングループを選択してください", + "selectUnitTime": "単位時間を選択してください", "server": "サーバー", "serverGroup": "サーバーグループ", "speedLimit": "速度制限(Mbps)", "subscribeGroup": "サブスクリプショングループ", "traffic": "トラフィック", - "unit_price": "月額価格" + "unitPrice": "単価", + "unitTime": "単位時間" }, "group": { "actions": "操作", diff --git a/apps/admin/locales/ko-KR/subscribe.json b/apps/admin/locales/ko-KR/subscribe.json index ef57ba9..bc20756 100644 --- a/apps/admin/locales/ko-KR/subscribe.json +++ b/apps/admin/locales/ko-KR/subscribe.json @@ -13,6 +13,11 @@ "edit": "편집", "editSubscribe": "구독 편집", "form": { + "Day": "일", + "Hour": "시", + "Minute": "분", + "Month": "월", + "Year": "년", "cancel": "취소", "confirm": "확인", "description": "설명", @@ -29,12 +34,14 @@ "quota": "구매 한도", "replacement": "재설정 가격 (매회)", "selectSubscribeGroup": "구독 그룹을 선택하세요", + "selectUnitTime": "단위 시간을 선택하세요", "server": "서버", "serverGroup": "서버 그룹", "speedLimit": "속도 제한 (Mbps)", "subscribeGroup": "구독 그룹", "traffic": "트래픽", - "unit_price": "월 단위 가격" + "unitPrice": "단가", + "unitTime": "단위 시간" }, "group": { "actions": "작업", diff --git a/apps/admin/locales/no-NO/subscribe.json b/apps/admin/locales/no-NO/subscribe.json index db87949..b46c056 100644 --- a/apps/admin/locales/no-NO/subscribe.json +++ b/apps/admin/locales/no-NO/subscribe.json @@ -13,6 +13,11 @@ "edit": "rediger", "editSubscribe": "Rediger abonnement", "form": { + "Day": "Dag", + "Hour": "Time", + "Minute": "Minutt", + "Month": "Måned", + "Year": "År", "cancel": "Avbryt", "confirm": "Bekreft", "description": "Beskrivelse", @@ -29,12 +34,14 @@ "quota": "Kjøpskvote", "replacement": "Erstatningspris (per gang)", "selectSubscribeGroup": "Vennligst velg abonnementsgruppe", + "selectUnitTime": "Vennligst velg enhetstid", "server": "Tjeneste", "serverGroup": "Tjenestegruppe", "speedLimit": "Hastighetsbegrensning (Mbps)", "subscribeGroup": "Abonnementsgruppe", "traffic": "Trafikk", - "unit_price": "Pris per måned" + "unitPrice": "Enhetspris", + "unitTime": "Enhetstid" }, "group": { "actions": "Handlinger", diff --git a/apps/admin/locales/pl-PL/subscribe.json b/apps/admin/locales/pl-PL/subscribe.json index 8c4233a..997fdb5 100644 --- a/apps/admin/locales/pl-PL/subscribe.json +++ b/apps/admin/locales/pl-PL/subscribe.json @@ -13,6 +13,11 @@ "edit": "edytuj", "editSubscribe": "Edytuj subskrypcję", "form": { + "Day": "Dzień", + "Hour": "Godzina", + "Minute": "Minuta", + "Month": "Miesiąc", + "Year": "Rok", "cancel": "Anuluj", "confirm": "Potwierdź", "description": "Opis", @@ -29,12 +34,14 @@ "quota": "Limit zakupu", "replacement": "Cena wymiany (za każdym razem)", "selectSubscribeGroup": "Wybierz grupę subskrypcji", + "selectUnitTime": "Proszę wybrać jednostkę czasu", "server": "Serwer", "serverGroup": "Grupa serwerów", "speedLimit": "Limit prędkości (Mbps)", "subscribeGroup": "Grupa subskrypcji", "traffic": "Ruch", - "unit_price": "Cena za miesiąc" + "unitPrice": "Cena jednostkowa", + "unitTime": "Jednostka czasu" }, "group": { "actions": "Działania", diff --git a/apps/admin/locales/pt-BR/subscribe.json b/apps/admin/locales/pt-BR/subscribe.json index 3b2b4fa..eac38a1 100644 --- a/apps/admin/locales/pt-BR/subscribe.json +++ b/apps/admin/locales/pt-BR/subscribe.json @@ -13,6 +13,11 @@ "edit": "editar", "editSubscribe": "Editar Assinatura", "form": { + "Day": "Dia", + "Hour": "Hora", + "Minute": "Minuto", + "Month": "Mês", + "Year": "Ano", "cancel": "Cancelar", "confirm": "Confirmar", "description": "Descrição", @@ -29,12 +34,14 @@ "quota": "Quantidade limitada", "replacement": "Preço de reposição (cada vez)", "selectSubscribeGroup": "Por favor, selecione o grupo de assinatura", + "selectUnitTime": "Por favor, selecione a unidade de tempo", "server": "Servidor", "serverGroup": "Grupo de servidores", "speedLimit": "Limite de velocidade (Mbps)", "subscribeGroup": "Grupo de assinatura", "traffic": "Tráfego", - "unit_price": "Preço mensal" + "unitPrice": "Preço unitário", + "unitTime": "Unidade de tempo" }, "group": { "actions": "Ações", diff --git a/apps/admin/locales/ro-RO/subscribe.json b/apps/admin/locales/ro-RO/subscribe.json index 5ef7236..a2181b3 100644 --- a/apps/admin/locales/ro-RO/subscribe.json +++ b/apps/admin/locales/ro-RO/subscribe.json @@ -13,6 +13,11 @@ "edit": "editează", "editSubscribe": "Editează abonamentul", "form": { + "Day": "Zi", + "Hour": "Oră", + "Minute": "Minut", + "Month": "Lună", + "Year": "An", "cancel": "Anulează", "confirm": "Confirmă", "description": "Descriere", @@ -29,12 +34,14 @@ "quota": "Limită de achiziție", "replacement": "Preț de înlocuire (per dată)", "selectSubscribeGroup": "Vă rugăm să selectați grupul de abonament", + "selectUnitTime": "Vă rugăm să selectați unitatea de timp", "server": "Server", "serverGroup": "Grup server", "speedLimit": "Limită de viteză (Mbps)", "subscribeGroup": "Grup de abonament", "traffic": "Trafic", - "unit_price": "Preț lunar unitar" + "unitPrice": "Preț unitar", + "unitTime": "Unitate de timp" }, "group": { "actions": "Acțiuni", diff --git a/apps/admin/locales/ru-RU/subscribe.json b/apps/admin/locales/ru-RU/subscribe.json index aae1941..43dd66a 100644 --- a/apps/admin/locales/ru-RU/subscribe.json +++ b/apps/admin/locales/ru-RU/subscribe.json @@ -13,6 +13,11 @@ "edit": "редактировать", "editSubscribe": "Редактировать подписку", "form": { + "Day": "День", + "Hour": "Час", + "Minute": "Минута", + "Month": "Месяц", + "Year": "Год", "cancel": "Отмена", "confirm": "Подтвердить", "description": "Описание", @@ -29,12 +34,14 @@ "quota": "Лимит покупки", "replacement": "Цена замены (за раз)", "selectSubscribeGroup": "Пожалуйста, выберите группу подписки", + "selectUnitTime": "Пожалуйста, выберите единицу времени", "server": "Сервер", "serverGroup": "Группа серверов", "speedLimit": "Ограничение скорости (Мбит/с)", "subscribeGroup": "Группа подписки", "traffic": "Трафик", - "unit_price": "Цена за месяц" + "unitPrice": "Цена за единицу", + "unitTime": "Единица времени" }, "group": { "actions": "Действия", diff --git a/apps/admin/locales/th-TH/subscribe.json b/apps/admin/locales/th-TH/subscribe.json index 225787d..3501fa4 100644 --- a/apps/admin/locales/th-TH/subscribe.json +++ b/apps/admin/locales/th-TH/subscribe.json @@ -13,6 +13,11 @@ "edit": "แก้ไข", "editSubscribe": "แก้ไขการสมัครสมาชิก", "form": { + "Day": "วัน", + "Hour": "ชั่วโมง", + "Minute": "นาที", + "Month": "เดือน", + "Year": "ปี", "cancel": "ยกเลิก", "confirm": "ยืนยัน", "description": "คำอธิบาย", @@ -29,12 +34,14 @@ "quota": "จำนวนจำกัดการซื้อ", "replacement": "ราคารีเซ็ต (ต่อครั้ง)", "selectSubscribeGroup": "กรุณาเลือกกลุ่มการสมัครสมาชิก", + "selectUnitTime": "กรุณาเลือกหน่วยเวลา", "server": "เซิร์ฟเวอร์", "serverGroup": "กลุ่มเซิร์ฟเวอร์", "speedLimit": "จำกัดความเร็ว (Mbps)", "subscribeGroup": "กลุ่มการสมัครสมาชิก", "traffic": "ปริมาณข้อมูล", - "unit_price": "ราคาต่อเดือน" + "unitPrice": "ราคาต่อหน่วย", + "unitTime": "หน่วยเวลา" }, "group": { "actions": "การดำเนินการ", diff --git a/apps/admin/locales/tr-TR/subscribe.json b/apps/admin/locales/tr-TR/subscribe.json index 322375a..c5592b4 100644 --- a/apps/admin/locales/tr-TR/subscribe.json +++ b/apps/admin/locales/tr-TR/subscribe.json @@ -13,6 +13,11 @@ "edit": "düzenle", "editSubscribe": "Aboneliği Düzenle", "form": { + "Day": "Gün", + "Hour": "Saat", + "Minute": "Dakika", + "Month": "Ay", + "Year": "Yıl", "cancel": "İptal", "confirm": "Onayla", "description": "Açıklama", @@ -29,12 +34,14 @@ "quota": "Satın Alma Limiti", "replacement": "Yenileme Ücreti (her seferinde)", "selectSubscribeGroup": "Abonelik Grubunu Seçiniz", + "selectUnitTime": "Lütfen birim zamanı seçin", "server": "Sunucu", "serverGroup": "Sunucu Grubu", "speedLimit": "Hız Sınırı (Mbps)", "subscribeGroup": "Abonelik Grubu", "traffic": "Trafik", - "unit_price": "Aylık Fiyat" + "unitPrice": "Birim fiyatı", + "unitTime": "Birim zamanı" }, "group": { "actions": "Eylemler", diff --git a/apps/admin/locales/uk-UA/subscribe.json b/apps/admin/locales/uk-UA/subscribe.json index b34ba06..e92fc94 100644 --- a/apps/admin/locales/uk-UA/subscribe.json +++ b/apps/admin/locales/uk-UA/subscribe.json @@ -13,6 +13,11 @@ "edit": "редагувати", "editSubscribe": "Редагувати підписку", "form": { + "Day": "День", + "Hour": "Година", + "Minute": "Хвилина", + "Month": "Місяць", + "Year": "Рік", "cancel": "Скасувати", "confirm": "Підтвердити", "description": "Опис", @@ -29,12 +34,14 @@ "quota": "Ліміт покупки", "replacement": "Ціна заміни (за раз)", "selectSubscribeGroup": "Будь ласка, виберіть групу підписки", + "selectUnitTime": "Будь ласка, виберіть одиницю часу", "server": "Сервер", "serverGroup": "Група серверів", "speedLimit": "Обмеження швидкості (Мбіт/с)", "subscribeGroup": "Група підписки", "traffic": "Трафік", - "unit_price": "Ціна за місяць" + "unitPrice": "Ціна за одиницю", + "unitTime": "Одиниця часу" }, "group": { "actions": "Дії", diff --git a/apps/admin/locales/vi-VN/subscribe.json b/apps/admin/locales/vi-VN/subscribe.json index 6a253cc..57ccf23 100644 --- a/apps/admin/locales/vi-VN/subscribe.json +++ b/apps/admin/locales/vi-VN/subscribe.json @@ -13,6 +13,11 @@ "edit": "Chỉnh sửa", "editSubscribe": "Chỉnh sửa đăng ký", "form": { + "Day": "Ngày", + "Hour": "Giờ", + "Minute": "Phút", + "Month": "Tháng", + "Year": "Năm", "cancel": "Hủy", "confirm": "Xác nhận", "description": "Mô tả", @@ -29,12 +34,14 @@ "quota": "Số lượng mua giới hạn", "replacement": "Giá thay thế (mỗi lần)", "selectSubscribeGroup": "Vui lòng chọn nhóm đăng ký", + "selectUnitTime": "Vui lòng chọn đơn vị thời gian", "server": "Dịch vụ", "serverGroup": "Nhóm dịch vụ", "speedLimit": "Giới hạn tốc độ (Mbps)", "subscribeGroup": "Nhóm đăng ký", "traffic": "Lưu lượng", - "unit_price": "Giá mỗi tháng" + "unitPrice": "Đơn giá", + "unitTime": "Đơn vị thời gian" }, "group": { "actions": "Hành động", diff --git a/apps/admin/locales/zh-CN/subscribe.json b/apps/admin/locales/zh-CN/subscribe.json index 33d5df8..0edc161 100644 --- a/apps/admin/locales/zh-CN/subscribe.json +++ b/apps/admin/locales/zh-CN/subscribe.json @@ -13,6 +13,11 @@ "edit": "编辑", "editSubscribe": "编辑订阅", "form": { + "Day": "天", + "Hour": "时", + "Minute": "分", + "Month": "月", + "Year": "年", "cancel": "取消", "confirm": "确认", "description": "描述", @@ -29,12 +34,14 @@ "quota": "限购数量", "replacement": "重置价格(每次)", "selectSubscribeGroup": "请选择订阅组", + "selectUnitTime": "请选择单位时间", "server": "服务", "serverGroup": "服务组", "speedLimit": "速度限制(Mbps)", "subscribeGroup": "订阅组", "traffic": "流量", - "unit_price": "单月价格" + "unitPrice": "单价", + "unitTime": "单位时间" }, "group": { "actions": "操作", diff --git a/apps/admin/locales/zh-HK/subscribe.json b/apps/admin/locales/zh-HK/subscribe.json index 7adb325..23d1c32 100644 --- a/apps/admin/locales/zh-HK/subscribe.json +++ b/apps/admin/locales/zh-HK/subscribe.json @@ -13,6 +13,11 @@ "edit": "編輯", "editSubscribe": "編輯訂閱", "form": { + "Day": "日", + "Hour": "小時", + "Minute": "分鐘", + "Month": "月", + "Year": "年", "cancel": "取消", "confirm": "確認", "description": "描述", @@ -29,12 +34,14 @@ "quota": "限購數量", "replacement": "重置價格(每次)", "selectSubscribeGroup": "請選擇訂閱組", + "selectUnitTime": "請選擇單位時間", "server": "服務", "serverGroup": "服務組", "speedLimit": "速度限制(Mbps)", "subscribeGroup": "訂閱組", "traffic": "流量", - "unit_price": "單月價格" + "unitPrice": "單價", + "unitTime": "單位時間" }, "group": { "actions": "操作", diff --git a/apps/admin/services/admin/index.ts b/apps/admin/services/admin/index.ts index 32cbdf0..944988e 100644 --- a/apps/admin/services/admin/index.ts +++ b/apps/admin/services/admin/index.ts @@ -1,5 +1,5 @@ // @ts-ignore - + // API 更新时间: // API 唯一标识: import * as announcement from './announcement'; diff --git a/apps/admin/services/admin/server.ts b/apps/admin/services/admin/server.ts index 9ec5a2a..a84e993 100644 --- a/apps/admin/services/admin/server.ts +++ b/apps/admin/services/admin/server.ts @@ -153,3 +153,15 @@ export async function getNodeList( ...(options || {}), }); } + +/** Node sort POST /v1/admin/server/sort */ +export async function nodeSort(body: API.NodeSortRequest, options?: { [key: string]: any }) { + return request('/v1/admin/server/sort', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/apps/admin/services/admin/subscribe.ts b/apps/admin/services/admin/subscribe.ts index 65e6b31..7ce66e5 100644 --- a/apps/admin/services/admin/subscribe.ts +++ b/apps/admin/services/admin/subscribe.ts @@ -165,3 +165,18 @@ export async function getSubscribeList( }, ); } + +/** Subscribe sort POST /v1/admin/subscribe/sort */ +export async function subscribeSort( + body: API.SubscribeSortRequest, + options?: { [key: string]: any }, +) { + return request('/v1/admin/subscribe/sort', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/apps/admin/services/admin/typings.d.ts b/apps/admin/services/admin/typings.d.ts index 1ec1abc..163e0b8 100644 --- a/apps/admin/services/admin/typings.d.ts +++ b/apps/admin/services/admin/typings.d.ts @@ -12,6 +12,7 @@ declare namespace API { title: string; content: string; enable: boolean; + type: number; created_at: number; updated_at: number; }; @@ -81,6 +82,7 @@ declare namespace API { type CreateAnnouncementRequest = { title: string; content: string; + type: number; }; type CreateApplicationRequest = { @@ -156,6 +158,7 @@ declare namespace API { name: string; description: string; unit_price: number; + unit_time: string; discount: SubscribeDiscount[]; replacement: number; inventory: number; @@ -504,6 +507,10 @@ declare namespace API { node_push_interval: number; }; + type NodeSortRequest = { + sort: SortItem[]; + }; + type NodeStatus = { online_users: OnlineUser[]; status: ServerStatus; @@ -630,6 +637,7 @@ declare namespace API { created_at: number; updated_at: number; status: NodeStatus; + sort: number; }; type ServerGroup = { @@ -682,6 +690,11 @@ declare namespace API { site_logo: string; }; + type SortItem = { + id: number; + sort: number; + }; + type StripeConfig = { public_key: string; secret_key: string; @@ -694,6 +707,7 @@ declare namespace API { name: string; description: string; unit_price: number; + unit_time: string; discount: SubscribeDiscount[]; replacement: number; inventory: number; @@ -718,7 +732,7 @@ declare namespace API { }; type SubscribeDiscount = { - months: number; + quantity: number; discount: number; }; @@ -730,6 +744,10 @@ declare namespace API { updated_at: number; }; + type SubscribeSortRequest = { + sort: SortItem[]; + }; + type SubscribeType = { subscribe_types: string[]; }; @@ -805,6 +823,7 @@ declare namespace API { title: string; content: string; enable: boolean; + type: number; }; type UpdateApplicationRequest = { @@ -903,6 +922,7 @@ declare namespace API { name: string; description: string; unit_price: number; + unit_time: string; discount: SubscribeDiscount[]; replacement: number; inventory: number; @@ -915,6 +935,7 @@ declare namespace API { server: number[]; show: boolean; sell: boolean; + sort: number; }; type UpdateTicketStatusRequest = { diff --git a/apps/admin/services/common/typings.d.ts b/apps/admin/services/common/typings.d.ts index be5713f..2bb8e0d 100644 --- a/apps/admin/services/common/typings.d.ts +++ b/apps/admin/services/common/typings.d.ts @@ -4,6 +4,7 @@ declare namespace API { title: string; content: string; enable: boolean; + type: number; created_at: number; updated_at: number; }; @@ -266,6 +267,7 @@ declare namespace API { created_at: number; updated_at: number; status: NodeStatus; + sort: number; }; type ServerGroup = { @@ -296,11 +298,17 @@ declare namespace API { site_logo: string; }; + type SortItem = { + id: number; + sort: number; + }; + type Subscribe = { id: number; name: string; description: string; unit_price: number; + unit_time: string; discount: SubscribeDiscount[]; replacement: number; inventory: number; @@ -325,7 +333,7 @@ declare namespace API { }; type SubscribeDiscount = { - months: number; + quantity: number; discount: number; }; diff --git a/apps/user/app/(main)/(user)/order/purchase.tsx b/apps/user/app/(main)/(user)/order/purchase.tsx index df75aeb..8919a97 100644 --- a/apps/user/app/(main)/(user)/order/purchase.tsx +++ b/apps/user/app/(main)/(user)/order/purchase.tsx @@ -112,27 +112,29 @@ export default function Purchase({ }} className='flex flex-wrap gap-0.5 *:w-20 md:gap-2' > -
- - -
+ {subscribe?.unit_time !== 'Minute' && ( +
+ + +
+ )} {subscribe?.discount?.map((item) => ( -
+