diff --git a/frontend/src/i18n/locales/en.json b/frontend/src/i18n/locales/en.json index df39066..6c62443 100644 --- a/frontend/src/i18n/locales/en.json +++ b/frontend/src/i18n/locales/en.json @@ -57,6 +57,7 @@ "enterpriseLeads": "Enterprise Leads", "licenses": "License Management", "invoices": "Invoice Management", + "packages": "Package Management", "roles": "Roles & Permissions", "users": "System Users" }, @@ -80,6 +81,7 @@ "enterpriseLeads": "Enterprise Leads", "licenses": "License Management", "invoices": "Invoice Management", + "packages": "Package Management", "invoiceDetail": "Invoice Detail", "licenseList": "License List", "createLicense": "Create License", @@ -133,6 +135,61 @@ } }, + "packages": { + "title": "Package Management", + "table": { + "title": "Price Package Management", + "id": "Package ID", + "name": "Package Name", + "price": "Price", + "priceSymbol": "$", + "free": "Free", + "customPlan": "Custom Plan", + "cycle": "Cycle", + "createdAt": "Created At", + "updatedAt": "Updated At", + "status": "Status", + "actions": "Actions" + }, + "status": { + "enabled": "Enabled", + "disabled": "Disabled" + }, + "edit": { + "title": "Edit Package", + "name": "Package Name", + "type": "Package Type", + "types": { + "trial": "Trial Version", + "basic": "Basic", + "professional": "Professional", + "custom": "Custom" + }, + "price": "Price", + "cycle": "Cycle/Description", + "description": "Package Description", + "priceDescription": "Price Description", + "features": "Package Features", + "status": "Status", + "sort": "Display Order", + "remark": "Remark", + "save": "Save Changes", + "descPlaceholder": "Experience full features, suitable for new users to trial", + "priceDescPlaceholder": "e.g. Custom Plan / Pay as you go", + "remarkPlaceholder": "Please enter remark", + "featurePlaceholder": "Please enter feature content" + }, + "actions": { + "edit": "Edit" + }, + "messages": { + "fetchError": "Failed to fetch list", + "fetchDetailError": "Failed to fetch details", + "updateSuccess": "Updated successfully", + "updateError": "Failed to update" + } + }, + "invoices": { "title": "Invoice Management", "detailTitle": "Invoice Application Detail", diff --git a/frontend/src/i18n/locales/ja.json b/frontend/src/i18n/locales/ja.json index ec17915..d682592 100644 --- a/frontend/src/i18n/locales/ja.json +++ b/frontend/src/i18n/locales/ja.json @@ -57,6 +57,7 @@ "enterpriseLeads": "企業リード", "licenses": "ライセンス管理", "invoices": "発票管理", + "packages": "パッケージ管理", "roles": "ロールと権限", "users": "システムユーザー" }, @@ -80,6 +81,7 @@ "enterpriseLeads": "企業リード", "licenses": "ライセンス管理", "invoices": "発票管理", + "packages": "パッケージ管理", "invoiceDetail": "発票申請の詳細", "licenseList": "ライセンス一覧", "createLicense": "ライセンス作成", @@ -133,6 +135,61 @@ } }, + "packages": { + "title": "パッケージ管理", + "table": { + "title": "価格パッケージ管理", + "id": "パッケージID", + "name": "パッケージ名", + "price": "価格", + "priceSymbol": "¥", + "free": "無料", + "customPlan": "カスタムプラン", + "cycle": "期間", + "createdAt": "作成日時", + "updatedAt": "更新日時", + "status": "ステータス", + "actions": "操作" + }, + "status": { + "enabled": "有効", + "disabled": "無効" + }, + "edit": { + "title": "パッケージ編集", + "name": "パッケージ名", + "type": "パッケージタイプ", + "types": { + "trial": "試用版", + "basic": "ベーシック", + "professional": "プロフェッショナル", + "custom": "カスタム" + }, + "price": "価格", + "cycle": "期間/説明", + "description": "パッケージ説明", + "priceDescription": "価格説明", + "features": "パッケージ機能", + "status": "ステータス", + "sort": "表示順序", + "remark": "備考", + "save": "変更を保存", + "descPlaceholder": "全機能を体験、新ユーザー向け試用評価に最適", + "priceDescPlaceholder": "例:カスタムプラン / 需要に応じた価格設定", + "remarkPlaceholder": "備考を入力してください", + "featurePlaceholder": "機能内容を入力してください" + }, + "actions": { + "edit": "編集" + }, + "messages": { + "fetchError": "一覧の取得に失敗しました", + "fetchDetailError": "詳細の取得に失敗しました", + "updateSuccess": "更新しました", + "updateError": "更新に失敗しました" + } + }, + "invoices": { "title": "発票管理", "detailTitle": "発票申請の詳細", diff --git a/frontend/src/i18n/locales/zh.json b/frontend/src/i18n/locales/zh.json index 46fe18a..ded4df6 100644 --- a/frontend/src/i18n/locales/zh.json +++ b/frontend/src/i18n/locales/zh.json @@ -175,6 +175,7 @@ "id": "套餐ID", "name": "套餐名称", "price": "价格", + "priceSymbol": "¥", "free": "免费", "customPlan": "定制方案", "cycle": "周期", @@ -191,6 +192,12 @@ "title": "编辑套餐", "name": "套餐名称", "type": "套餐类型", + "types": { + "trial": "试用版", + "basic": "基础版", + "professional": "专业版", + "custom": "定制版" + }, "price": "价格", "cycle": "周期/描述", "description": "套餐描述", @@ -204,6 +211,15 @@ "priceDescPlaceholder": "例如:定制方案 / 按需定价", "remarkPlaceholder": "请输入备注", "featurePlaceholder": "请输入特性内容" + }, + "actions": { + "edit": "编辑" + }, + "messages": { + "fetchError": "获取列表失败", + "fetchDetailError": "获取详情失败", + "updateSuccess": "更新成功", + "updateError": "更新失败" } }, diff --git a/frontend/src/utils/breadcrumb.ts b/frontend/src/utils/breadcrumb.ts index c79981c..7677da0 100644 --- a/frontend/src/utils/breadcrumb.ts +++ b/frontend/src/utils/breadcrumb.ts @@ -26,6 +26,7 @@ const routeBreadcrumbKeys: Record = { '/licenses': ['licenses'], '/invoices': ['invoices'], '/invoices/detail': ['invoices', 'invoiceDetail'], + '/packages': ['packages'], '/roles': ['roles'], '/users': ['users'], '/login': ['login'] diff --git a/frontend/src/views/Packages/components/PackageEditDialog.vue b/frontend/src/views/Packages/components/PackageEditDialog.vue index a3740f6..77884c2 100644 --- a/frontend/src/views/Packages/components/PackageEditDialog.vue +++ b/frontend/src/views/Packages/components/PackageEditDialog.vue @@ -9,10 +9,10 @@ - - - - + + + + diff --git a/frontend/src/views/Packages/index.vue b/frontend/src/views/Packages/index.vue index d568851..7ff1aac 100644 --- a/frontend/src/views/Packages/index.vue +++ b/frontend/src/views/Packages/index.vue @@ -39,7 +39,7 @@ {{ t('packages.table.free') }} @@ -57,7 +57,7 @@ @@ -116,7 +116,7 @@ const fetchData = async () => { } } catch (error: any) { console.error('Fetch packages error:', error) - ElMessage.error(error.backendMessage || t('enterpriseLeads.messages.fetchError')) + ElMessage.error(error.backendMessage || t('packages.messages.fetchError')) } finally { loading.value = false } @@ -155,7 +155,7 @@ const handleEdit = async (row: any) => { } } catch (error: any) { console.error('Fetch package detail error:', error) - ElMessage.error(error.backendMessage || t('enterpriseLeads.messages.fetchDetailError')) + ElMessage.error(error.backendMessage || t('packages.messages.fetchDetailError')) } finally { loading.value = false } @@ -170,12 +170,12 @@ const handleUpdate = async (updatedData: any) => { } const res = await updatePackage(id, data) if (res.code === '000000') { - ElMessage.success(t('enterpriseLeads.messages.updateSuccess')) + ElMessage.success(t('packages.messages.updateSuccess')) fetchData() } } catch (error: any) { console.error('Update package error:', error) - ElMessage.error(error.backendMessage || t('enterpriseLeads.messages.updateError')) + ElMessage.error(error.backendMessage || t('packages.messages.updateError')) } }