替换Domain详情页的中文文本为英文
This commit is contained in:
parent
2881c0529e
commit
88b278499b
@ -6,7 +6,7 @@
|
|||||||
<div class="flex gap-2">
|
<div class="flex gap-2">
|
||||||
<TextInput
|
<TextInput
|
||||||
v-model="searchQuery"
|
v-model="searchQuery"
|
||||||
placeholder="搜索所有者姓名、单位名称..."
|
:placeholder="$t('Search owner name, company name...')"
|
||||||
class="flex-1"
|
class="flex-1"
|
||||||
>
|
>
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
@ -17,9 +17,9 @@
|
|||||||
v-model="selectedStatus"
|
v-model="selectedStatus"
|
||||||
class="rounded-lg border border-gray-300 px-3 py-2 text-sm focus:border-blue-500 focus:ring-1 focus:ring-blue-500"
|
class="rounded-lg border border-gray-300 px-3 py-2 text-sm focus:border-blue-500 focus:ring-1 focus:ring-blue-500"
|
||||||
>
|
>
|
||||||
<option value="">全部状态</option>
|
<option value="">{{ $t('All Status') }}</option>
|
||||||
<option value="1">已实名认证</option>
|
<option value="1">{{ $t('Real-name Verified') }}</option>
|
||||||
<option value="0">未实名认证</option>
|
<option value="0">{{ $t('Not Real-name Verified') }}</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -28,7 +28,7 @@
|
|||||||
@click="createDomainOwner"
|
@click="createDomainOwner"
|
||||||
variant="solid"
|
variant="solid"
|
||||||
iconLeft="plus"
|
iconLeft="plus"
|
||||||
label="新建所有者模板"
|
:label="$t('Create Owner Template')"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -37,16 +37,16 @@
|
|||||||
<div class="rounded-lg border border-gray-200 bg-white my-4">
|
<div class="rounded-lg border border-gray-200 bg-white my-4">
|
||||||
<!-- 表头 -->
|
<!-- 表头 -->
|
||||||
<div class="grid grid-cols-12 gap-4 border-b border-gray-200 bg-gray-50 px-6 py-3 text-sm font-medium text-gray-700">
|
<div class="grid grid-cols-12 gap-4 border-b border-gray-200 bg-gray-50 px-6 py-3 text-sm font-medium text-gray-700">
|
||||||
<div class="col-span-4">所有者名称</div>
|
<div class="col-span-4">{{ $t('Owner Name') }}</div>
|
||||||
<div class="col-span-3">实名状态</div>
|
<div class="col-span-3">{{ $t('Real-name Status') }}</div>
|
||||||
<div class="col-span-3">联系信息</div>
|
<div class="col-span-3">{{ $t('Contact Information') }}</div>
|
||||||
<div class="col-span-2">操作</div>
|
<div class="col-span-2">{{ $t('Actions') }}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 加载状态 -->
|
<!-- 加载状态 -->
|
||||||
<div v-if="isLoading" class="flex items-center justify-center py-12">
|
<div v-if="isLoading" class="flex items-center justify-center py-12">
|
||||||
<Loader2Icon class="h-6 w-6 animate-spin text-gray-400" />
|
<Loader2Icon class="h-6 w-6 animate-spin text-gray-400" />
|
||||||
<span class="ml-2 text-gray-600">加载中...</span>
|
<span class="ml-2 text-gray-600">{{ $t('Loading...') }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 错误状态 -->
|
<!-- 错误状态 -->
|
||||||
@ -58,8 +58,8 @@
|
|||||||
<!-- 空状态 -->
|
<!-- 空状态 -->
|
||||||
<div v-else-if="filteredOwners.length === 0" class="flex flex-col items-center justify-center py-12 text-gray-500">
|
<div v-else-if="filteredOwners.length === 0" class="flex flex-col items-center justify-center py-12 text-gray-500">
|
||||||
<UsersIcon class="mb-4 h-12 w-12 text-gray-300" />
|
<UsersIcon class="mb-4 h-12 w-12 text-gray-300" />
|
||||||
<p class="text-lg font-medium">暂无所有者模板</p>
|
<p class="text-lg font-medium">{{ $t('No owner templates yet') }}</p>
|
||||||
<p class="text-sm">点击上方按钮创建第一个模板</p>
|
<p class="text-sm">{{ $t('Click the button above to create your first template') }}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 数据列表 -->
|
<!-- 数据列表 -->
|
||||||
@ -93,7 +93,7 @@
|
|||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="sm"
|
size="sm"
|
||||||
class="text-blue-600 hover:text-blue-700"
|
class="text-blue-600 hover:text-blue-700"
|
||||||
title="查看详情"
|
:title="$t('View Details')"
|
||||||
>
|
>
|
||||||
<EyeIcon class="h-4 w-4" />
|
<EyeIcon class="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
@ -102,7 +102,7 @@
|
|||||||
variant="ghost"
|
variant="ghost"
|
||||||
size="sm"
|
size="sm"
|
||||||
class="text-gray-600 hover:text-gray-700"
|
class="text-gray-600 hover:text-gray-700"
|
||||||
title="编辑"
|
:title="$t('Edit')"
|
||||||
>
|
>
|
||||||
<EditIcon class="h-4 w-4" />
|
<EditIcon class="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
@ -116,7 +116,7 @@
|
|||||||
? 'text-gray-400 cursor-not-allowed'
|
? 'text-gray-400 cursor-not-allowed'
|
||||||
: 'text-red-600 hover:text-red-700'
|
: 'text-red-600 hover:text-red-700'
|
||||||
]"
|
]"
|
||||||
:title="isTemplateUsed(owner) ? '该模板已关联域名,无法删除' : '删除'"
|
:title="isTemplateUsed(owner) ? $t('This template is associated with domains and cannot be deleted') : $t('Delete')"
|
||||||
>
|
>
|
||||||
<Trash2Icon class="h-4 w-4" />
|
<Trash2Icon class="h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
@ -128,9 +128,9 @@
|
|||||||
<!-- 分页 -->
|
<!-- 分页 -->
|
||||||
<div v-if="pagination.total > pagination.limit" class="flex flex-col items-center space-y-4">
|
<div v-if="pagination.total > pagination.limit" class="flex flex-col items-center space-y-4">
|
||||||
<div class="text-sm text-gray-700">
|
<div class="text-sm text-gray-700">
|
||||||
显示第 {{ (pagination.pageno - 1) * pagination.limit + 1 }} -
|
{{ $t('Showing') }} {{ (pagination.pageno - 1) * pagination.limit + 1 }} -
|
||||||
{{ Math.min(pagination.pageno * pagination.limit, pagination.total) }} 条,
|
{{ Math.min(pagination.pageno * pagination.limit, pagination.total) }} {{ $t('of') }}
|
||||||
共 {{ pagination.total }} 条记录
|
{{ pagination.total }} {{ $t('records') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center space-x-2">
|
<div class="flex items-center space-x-2">
|
||||||
<Button
|
<Button
|
||||||
@ -185,7 +185,7 @@
|
|||||||
<!-- 标题栏 -->
|
<!-- 标题栏 -->
|
||||||
<div class="p-4 border-b border-gray-200 bg-white rounded-t-lg flex-shrink-0">
|
<div class="p-4 border-b border-gray-200 bg-white rounded-t-lg flex-shrink-0">
|
||||||
<div class="flex items-center justify-between">
|
<div class="flex items-center justify-between">
|
||||||
<h3 class="text-lg font-medium text-gray-900">所有者详细信息</h3>
|
<h3 class="text-lg font-medium text-gray-900">{{ $t('Owner Details') }}</h3>
|
||||||
<button
|
<button
|
||||||
@click="closeDetailDialog"
|
@click="closeDetailDialog"
|
||||||
class="text-gray-400 hover:text-gray-600 transition-colors duration-200"
|
class="text-gray-400 hover:text-gray-600 transition-colors duration-200"
|
||||||
@ -202,22 +202,22 @@
|
|||||||
<div class="space-y-6">
|
<div class="space-y-6">
|
||||||
<!-- 基本信息 -->
|
<!-- 基本信息 -->
|
||||||
<div>
|
<div>
|
||||||
<h4 class="text-base font-medium text-gray-900 mb-4">基本信息</h4>
|
<h4 class="text-base font-medium text-gray-900 mb-4">{{ $t('Basic Information') }}</h4>
|
||||||
<div class="grid grid-cols-2 gap-4">
|
<div class="grid grid-cols-2 gap-4">
|
||||||
<div>
|
<div>
|
||||||
<label class="block text-sm font-medium text-gray-700">所有者类型</label>
|
<label class="block text-sm font-medium text-gray-700">{{ $t('Owner Type') }}</label>
|
||||||
<p class="mt-1 text-sm text-gray-900">{{ getOwnerTypeText(selectedOwner.c_regtype) }}</p>
|
<p class="mt-1 text-sm text-gray-900">{{ getOwnerTypeText(selectedOwner.c_regtype) }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label class="block text-sm font-medium text-gray-700">实名认证状态</label>
|
<label class="block text-sm font-medium text-gray-700">{{ $t('Real-name Status') }}</label>
|
||||||
<p class="mt-1 text-sm text-gray-900">{{ getRealNameStatusText(selectedOwner.r_status) }}</p>
|
<p class="mt-1 text-sm text-gray-900">{{ getRealNameStatusText(selectedOwner.r_status) }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="selectedOwner.c_regtype === 'E'">
|
<div v-if="selectedOwner.c_regtype === 'E'">
|
||||||
<label class="block text-sm font-medium text-gray-700">单位名称</label>
|
<label class="block text-sm font-medium text-gray-700">{{ $t('Company Name') }}</label>
|
||||||
<p class="mt-1 text-sm text-gray-900">{{ selectedOwner.c_org_m || '-' }}</p>
|
<p class="mt-1 text-sm text-gray-900">{{ selectedOwner.c_org_m || '-' }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label class="block text-sm font-medium text-gray-700">姓名</label>
|
<label class="block text-sm font-medium text-gray-700">{{ $t('Name') }}</label>
|
||||||
<p class="mt-1 text-sm text-gray-900">{{ getDisplayName(selectedOwner) }}</p>
|
<p class="mt-1 text-sm text-gray-900">{{ getDisplayName(selectedOwner) }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -225,26 +225,26 @@
|
|||||||
|
|
||||||
<!-- 联系信息 -->
|
<!-- 联系信息 -->
|
||||||
<div>
|
<div>
|
||||||
<h4 class="text-base font-medium text-gray-900 mb-4">联系信息</h4>
|
<h4 class="text-base font-medium text-gray-900 mb-4">{{ $t('Contact Information') }}</h4>
|
||||||
<div class="grid grid-cols-2 gap-4">
|
<div class="grid grid-cols-2 gap-4">
|
||||||
<div>
|
<div>
|
||||||
<label class="block text-sm font-medium text-gray-700">电子邮箱</label>
|
<label class="block text-sm font-medium text-gray-700">{{ $t('Email') }}</label>
|
||||||
<p class="mt-1 text-sm text-gray-900">{{ selectedOwner.c_em || '-' }}</p>
|
<p class="mt-1 text-sm text-gray-900">{{ selectedOwner.c_em || '-' }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label class="block text-sm font-medium text-gray-700">手机号码</label>
|
<label class="block text-sm font-medium text-gray-700">{{ $t('Phone Number') }}</label>
|
||||||
<p class="mt-1 text-sm text-gray-900">{{ selectedOwner.c_ph || '-' }}</p>
|
<p class="mt-1 text-sm text-gray-900">{{ selectedOwner.c_ph || '-' }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label class="block text-sm font-medium text-gray-700">省份</label>
|
<label class="block text-sm font-medium text-gray-700">{{ $t('Province') }}</label>
|
||||||
<p class="mt-1 text-sm text-gray-900">{{ selectedOwner.c_st_m || '-' }}</p>
|
<p class="mt-1 text-sm text-gray-900">{{ selectedOwner.c_st_m || '-' }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label class="block text-sm font-medium text-gray-700">城市</label>
|
<label class="block text-sm font-medium text-gray-700">{{ $t('City') }}</label>
|
||||||
<p class="mt-1 text-sm text-gray-900">{{ selectedOwner.c_ct_m || '-' }}</p>
|
<p class="mt-1 text-sm text-gray-900">{{ selectedOwner.c_ct_m || '-' }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-span-2">
|
<div class="col-span-2">
|
||||||
<label class="block text-sm font-medium text-gray-700">通讯地址</label>
|
<label class="block text-sm font-medium text-gray-700">{{ $t('Address') }}</label>
|
||||||
<p class="mt-1 text-sm text-gray-900">{{ selectedOwner.c_adr_m || '-' }}</p>
|
<p class="mt-1 text-sm text-gray-900">{{ selectedOwner.c_adr_m || '-' }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -252,14 +252,14 @@
|
|||||||
|
|
||||||
<!-- 证件信息 -->
|
<!-- 证件信息 -->
|
||||||
<div>
|
<div>
|
||||||
<h4 class="text-base font-medium text-gray-900 mb-4">证件信息</h4>
|
<h4 class="text-base font-medium text-gray-900 mb-4">{{ $t('ID Information') }}</h4>
|
||||||
<div class="grid grid-cols-2 gap-4">
|
<div class="grid grid-cols-2 gap-4">
|
||||||
<div>
|
<div>
|
||||||
<label class="block text-sm font-medium text-gray-700">证件类型</label>
|
<label class="block text-sm font-medium text-gray-700">{{ $t('ID Type') }}</label>
|
||||||
<p class="mt-1 text-sm text-gray-900">{{ getCertificateTypeName(selectedOwner.c_idtype_gswl) }}</p>
|
<p class="mt-1 text-sm text-gray-900">{{ getCertificateTypeName(selectedOwner.c_idtype_gswl) }}</p>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label class="block text-sm font-medium text-gray-700">证件号码</label>
|
<label class="block text-sm font-medium text-gray-700">{{ $t('ID Number') }}</label>
|
||||||
<p class="mt-1 text-sm text-gray-900">{{ selectedOwner.c_idnum_gswl || '-' }}</p>
|
<p class="mt-1 text-sm text-gray-900">{{ selectedOwner.c_idnum_gswl || '-' }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -274,13 +274,13 @@
|
|||||||
@click="closeDetailDialog"
|
@click="closeDetailDialog"
|
||||||
variant="outline"
|
variant="outline"
|
||||||
>
|
>
|
||||||
关闭
|
{{ $t('Close') }}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
@click="editOwner(selectedOwner)"
|
@click="editOwner(selectedOwner)"
|
||||||
variant="solid"
|
variant="solid"
|
||||||
>
|
>
|
||||||
编辑
|
{{ $t('Edit') }}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -293,7 +293,7 @@
|
|||||||
<!-- 标题栏 -->
|
<!-- 标题栏 -->
|
||||||
<div class="p-4 border-b border-gray-200 bg-white rounded-t-lg flex-shrink-0">
|
<div class="p-4 border-b border-gray-200 bg-white rounded-t-lg flex-shrink-0">
|
||||||
<div class="flex items-center justify-between">
|
<div class="flex items-center justify-between">
|
||||||
<h3 class="text-lg font-medium text-gray-900">编辑域名所有者</h3>
|
<h3 class="text-lg font-medium text-gray-900">{{ $t('Edit Domain Owner') }}</h3>
|
||||||
<button
|
<button
|
||||||
@click="closeEditDialog"
|
@click="closeEditDialog"
|
||||||
class="text-gray-400 hover:text-gray-600 transition-colors duration-200"
|
class="text-gray-400 hover:text-gray-600 transition-colors duration-200"
|
||||||
@ -310,7 +310,7 @@
|
|||||||
<form @submit.prevent="handleEditSubmit" class="space-y-6">
|
<form @submit.prevent="handleEditSubmit" class="space-y-6">
|
||||||
<!-- 所有者类型 -->
|
<!-- 所有者类型 -->
|
||||||
<div>
|
<div>
|
||||||
<label class="block text-sm font-medium text-gray-700 mb-2">所有者类型</label>
|
<label class="block text-sm font-medium text-gray-700 mb-2">{{ $t('Owner Type') }}</label>
|
||||||
<div class="flex gap-4">
|
<div class="flex gap-4">
|
||||||
<label class="flex items-center">
|
<label class="flex items-center">
|
||||||
<input
|
<input
|
||||||
@ -319,7 +319,7 @@
|
|||||||
value="I"
|
value="I"
|
||||||
class="mr-2"
|
class="mr-2"
|
||||||
>
|
>
|
||||||
<span class="text-sm">个人</span>
|
<span class="text-sm">{{ $t('Individual') }}</span>
|
||||||
</label>
|
</label>
|
||||||
<label class="flex items-center">
|
<label class="flex items-center">
|
||||||
<input
|
<input
|
||||||
@ -328,7 +328,7 @@
|
|||||||
value="E"
|
value="E"
|
||||||
class="mr-2"
|
class="mr-2"
|
||||||
>
|
>
|
||||||
<span class="text-sm">企业/组织</span>
|
<span class="text-sm">{{ $t('Enterprise/Organization') }}</span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -337,33 +337,33 @@
|
|||||||
<div class="space-y-4">
|
<div class="space-y-4">
|
||||||
<!-- 单位名称(企业时显示) -->
|
<!-- 单位名称(企业时显示) -->
|
||||||
<div v-if="editFormData.c_regtype === 'E'" class="w-full">
|
<div v-if="editFormData.c_regtype === 'E'" class="w-full">
|
||||||
<label class="block text-sm font-medium text-gray-700 mb-2">所有者单位名称</label>
|
<label class="block text-sm font-medium text-gray-700 mb-2">{{ $t('Owner Company Name') }}</label>
|
||||||
<input
|
<input
|
||||||
v-model="editFormData.c_org_m"
|
v-model="editFormData.c_org_m"
|
||||||
type="text"
|
type="text"
|
||||||
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
||||||
placeholder="请输入单位名称"
|
:placeholder="$t('Please enter company name')"
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 姓名部分 -->
|
<!-- 姓名部分 -->
|
||||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||||
<div>
|
<div>
|
||||||
<label class="block text-sm font-medium text-gray-700 mb-2">姓</label>
|
<label class="block text-sm font-medium text-gray-700 mb-2">{{ $t('Last Name') }}</label>
|
||||||
<input
|
<input
|
||||||
v-model="editFormData.c_ln_m"
|
v-model="editFormData.c_ln_m"
|
||||||
type="text"
|
type="text"
|
||||||
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
||||||
placeholder="请输入姓"
|
:placeholder="$t('Please enter last name')"
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label class="block text-sm font-medium text-gray-700 mb-2">名</label>
|
<label class="block text-sm font-medium text-gray-700 mb-2">{{ $t('First Name') }}</label>
|
||||||
<input
|
<input
|
||||||
v-model="editFormData.c_fn_m"
|
v-model="editFormData.c_fn_m"
|
||||||
type="text"
|
type="text"
|
||||||
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
||||||
placeholder="请输入名"
|
:placeholder="$t('Please enter first name')"
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -371,21 +371,21 @@
|
|||||||
<!-- 联系信息 -->
|
<!-- 联系信息 -->
|
||||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||||
<div>
|
<div>
|
||||||
<label class="block text-sm font-medium text-gray-700 mb-2">电子邮箱</label>
|
<label class="block text-sm font-medium text-gray-700 mb-2">{{ $t('Email') }}</label>
|
||||||
<input
|
<input
|
||||||
v-model="editFormData.c_em"
|
v-model="editFormData.c_em"
|
||||||
type="email"
|
type="email"
|
||||||
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
||||||
placeholder="请输入电子邮箱"
|
:placeholder="$t('Please enter email')"
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label class="block text-sm font-medium text-gray-700 mb-2">手机号码</label>
|
<label class="block text-sm font-medium text-gray-700 mb-2">{{ $t('Phone Number') }}</label>
|
||||||
<input
|
<input
|
||||||
v-model="editFormData.c_ph"
|
v-model="editFormData.c_ph"
|
||||||
type="tel"
|
type="tel"
|
||||||
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
||||||
placeholder="请输入手机号码"
|
:placeholder="$t('Please enter phone number')"
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -393,41 +393,41 @@
|
|||||||
<!-- 地址信息 -->
|
<!-- 地址信息 -->
|
||||||
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
|
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
|
||||||
<div>
|
<div>
|
||||||
<label class="block text-sm font-medium text-gray-700 mb-2">省份</label>
|
<label class="block text-sm font-medium text-gray-700 mb-2">{{ $t('Province') }}</label>
|
||||||
<input
|
<input
|
||||||
v-model="editFormData.c_st_m"
|
v-model="editFormData.c_st_m"
|
||||||
type="text"
|
type="text"
|
||||||
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
||||||
placeholder="请输入省份"
|
:placeholder="$t('Please enter province')"
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label class="block text-sm font-medium text-gray-700 mb-2">城市</label>
|
<label class="block text-sm font-medium text-gray-700 mb-2">{{ $t('City') }}</label>
|
||||||
<input
|
<input
|
||||||
v-model="editFormData.c_ct_m"
|
v-model="editFormData.c_ct_m"
|
||||||
type="text"
|
type="text"
|
||||||
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
||||||
placeholder="请输入城市"
|
:placeholder="$t('Please enter city')"
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label class="block text-sm font-medium text-gray-700 mb-2">邮编</label>
|
<label class="block text-sm font-medium text-gray-700 mb-2">{{ $t('Postal Code') }}</label>
|
||||||
<input
|
<input
|
||||||
v-model="editFormData.c_pc"
|
v-model="editFormData.c_pc"
|
||||||
type="text"
|
type="text"
|
||||||
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
||||||
placeholder="请输入邮编"
|
:placeholder="$t('Please enter postal code')"
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<label class="block text-sm font-medium text-gray-700 mb-2">通讯地址</label>
|
<label class="block text-sm font-medium text-gray-700 mb-2">{{ $t('Address') }}</label>
|
||||||
<input
|
<input
|
||||||
v-model="editFormData.c_adr_m"
|
v-model="editFormData.c_adr_m"
|
||||||
type="text"
|
type="text"
|
||||||
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
class="w-full border rounded-lg px-3 py-2 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
||||||
placeholder="请输入通讯地址"
|
:placeholder="$t('Please enter address')"
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -441,14 +441,14 @@
|
|||||||
@click="closeEditDialog"
|
@click="closeEditDialog"
|
||||||
variant="outline"
|
variant="outline"
|
||||||
>
|
>
|
||||||
取消
|
{{ $t('Cancel') }}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
@click="handleEditSubmit"
|
@click="handleEditSubmit"
|
||||||
:loading="editLoading"
|
:loading="editLoading"
|
||||||
variant="solid"
|
variant="solid"
|
||||||
>
|
>
|
||||||
保存
|
{{ $t('Save') }}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -559,29 +559,29 @@ export default {
|
|||||||
// 获取实名认证状态文本
|
// 获取实名认证状态文本
|
||||||
getRealNameStatusText(status) {
|
getRealNameStatusText(status) {
|
||||||
if (!status || status === '') {
|
if (!status || status === '') {
|
||||||
return '未实名认证';
|
return this.$t('Not Real-name Verified');
|
||||||
}
|
}
|
||||||
// 根据r_status字段判断实名认证状态
|
// 根据r_status字段判断实名认证状态
|
||||||
// 0: 未实名, 1: 实名成功, 2: 实名中, 3: 实名失败, 4: 认证过期, 5: 待审核
|
// 0: 未实名, 1: 实名成功, 2: 实名中, 3: 实名失败, 4: 认证过期, 5: 待审核
|
||||||
const statusMap = {
|
const statusMap = {
|
||||||
'0': '未实名认证',
|
'0': this.$t('Not Real-name Verified'),
|
||||||
'1': '已实名认证',
|
'1': this.$t('Real-name Verified'),
|
||||||
'2': '实名认证中',
|
'2': this.$t('Real-name Verification in Progress'),
|
||||||
'3': '实名认证失败',
|
'3': this.$t('Real-name Verification Failed'),
|
||||||
'4': '实名认证过期',
|
'4': this.$t('Real-name Verification Expired'),
|
||||||
'5': '待审核'
|
'5': this.$t('Pending Review')
|
||||||
};
|
};
|
||||||
return statusMap[status] || '未实名认证';
|
return statusMap[status] || this.$t('Not Real-name Verified');
|
||||||
},
|
},
|
||||||
|
|
||||||
// 获取所有者类型文本
|
// 获取所有者类型文本
|
||||||
getOwnerTypeText(type) {
|
getOwnerTypeText(type) {
|
||||||
if (!type || type === '') return '未知';
|
if (!type || type === '') return this.$t('Unknown');
|
||||||
const typeMap = {
|
const typeMap = {
|
||||||
'I': '个人',
|
'I': this.$t('Individual'),
|
||||||
'E': '企业/组织'
|
'E': this.$t('Enterprise/Organization')
|
||||||
};
|
};
|
||||||
return typeMap[type] || '未知';
|
return typeMap[type] || this.$t('Unknown');
|
||||||
},
|
},
|
||||||
|
|
||||||
// 获取地址信息
|
// 获取地址信息
|
||||||
@ -597,25 +597,25 @@ export default {
|
|||||||
getCertificateTypeName(type) {
|
getCertificateTypeName(type) {
|
||||||
const typeMap = {
|
const typeMap = {
|
||||||
// 字符串格式映射
|
// 字符串格式映射
|
||||||
'SFZ': '身份证',
|
'SFZ': this.$t('ID Card'),
|
||||||
'HZ': '护照',
|
'HZ': this.$t('Passport'),
|
||||||
'GAJMTX': '港澳居民来往内地通行证',
|
'GAJMTX': this.$t('Mainland Travel Permit for Hong Kong and Macao Residents'),
|
||||||
'TWJMTX': '台湾居民来往大陆通行证',
|
'TWJMTX': this.$t('Mainland Travel Permit for Taiwan Residents'),
|
||||||
'WJLSFZ': '外国人永久居留身份证',
|
'WJLSFZ': this.$t('Permanent Residence ID Card for Foreigners'),
|
||||||
'GAJZZ': '港澳台居民居住证',
|
'GAJZZ': this.$t('Residence Permit for Hong Kong, Macao and Taiwan Residents'),
|
||||||
'ORG': '组织机构代码证',
|
'ORG': this.$t('Organization Code Certificate'),
|
||||||
'YYZZ': '工商营业执照',
|
'YYZZ': this.$t('Business License'),
|
||||||
'TYDM': '统一社会信用代码',
|
'TYDM': this.$t('Unified Social Credit Code'),
|
||||||
// 数字格式映射
|
// 数字格式映射
|
||||||
'1': '身份证',
|
'1': this.$t('ID Card'),
|
||||||
'5': '护照',
|
'5': this.$t('Passport'),
|
||||||
'6': '港澳居民来往内地通行证',
|
'6': this.$t('Mainland Travel Permit for Hong Kong and Macao Residents'),
|
||||||
'11': '台湾居民来往大陆通行证',
|
'11': this.$t('Mainland Travel Permit for Taiwan Residents'),
|
||||||
'12': '外国人永久居留身份证',
|
'12': this.$t('Permanent Residence ID Card for Foreigners'),
|
||||||
'30': '港澳台居民居住证',
|
'30': this.$t('Residence Permit for Hong Kong, Macao and Taiwan Residents'),
|
||||||
'2': '组织机构代码证',
|
'2': this.$t('Organization Code Certificate'),
|
||||||
'3': '工商营业执照',
|
'3': this.$t('Business License'),
|
||||||
'4': '统一社会信用代码'
|
'4': this.$t('Unified Social Credit Code')
|
||||||
};
|
};
|
||||||
return typeMap[type] || type || '-';
|
return typeMap[type] || type || '-';
|
||||||
},
|
},
|
||||||
|
|||||||
@ -6,32 +6,32 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="flex gap-2">
|
<div class="flex gap-2">
|
||||||
<Button
|
<Button
|
||||||
@click="refreshRecords"
|
@click="refreshRecords"
|
||||||
:loading="$resources.dnsRecords.loading"
|
:loading="$resources.dnsRecords.loading"
|
||||||
variant="outline"
|
variant="outline"
|
||||||
size="sm"
|
size="sm"
|
||||||
>
|
>
|
||||||
<RefreshCwIcon class="h-4 w-4 mr-1" />
|
<RefreshCwIcon class="h-4 w-4 mr-1" />
|
||||||
刷新
|
{{ $t('Refresh') }}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
v-if="selectedRecords.length > 0"
|
v-if="selectedRecords.length > 0"
|
||||||
@click="batchDeleteRecords"
|
@click="batchDeleteRecords"
|
||||||
variant="outline"
|
variant="outline"
|
||||||
size="sm"
|
size="sm"
|
||||||
class="text-red-600 hover:text-red-700"
|
class="text-red-600 hover:text-red-700"
|
||||||
>
|
>
|
||||||
<Trash2Icon class="h-4 w-4 mr-1" />
|
<Trash2Icon class="h-4 w-4 mr-1" />
|
||||||
删除选中 ({{ selectedRecords.length }})
|
{{ $t('Delete Selected') }} ({{ selectedRecords.length }})
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
@click="addNewRow"
|
@click="addNewRow"
|
||||||
variant="solid"
|
variant="solid"
|
||||||
size="sm"
|
size="sm"
|
||||||
>
|
>
|
||||||
<PlusIcon class="h-4 w-4 mr-1" />
|
<PlusIcon class="h-4 w-4 mr-1" />
|
||||||
添加记录
|
{{ $t('Add Record') }}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -39,7 +39,7 @@
|
|||||||
<div v-if="$resources.dnsRecords.loading" class="flex items-center justify-center py-12">
|
<div v-if="$resources.dnsRecords.loading" class="flex items-center justify-center py-12">
|
||||||
<div class="flex items-center space-x-2">
|
<div class="flex items-center space-x-2">
|
||||||
<Loader2Icon class="h-5 w-5 animate-spin text-gray-500" />
|
<Loader2Icon class="h-5 w-5 animate-spin text-gray-500" />
|
||||||
<span class="text-gray-500">正在加载DNS记录...</span>
|
<span class="text-gray-500">{{ $t('Loading DNS records...') }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -48,7 +48,7 @@
|
|||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<AlertCircleIcon class="h-5 w-5 text-red-400 mr-2" />
|
<AlertCircleIcon class="h-5 w-5 text-red-400 mr-2" />
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-sm font-medium text-red-800">加载失败</h3>
|
<h3 class="text-sm font-medium text-red-800">{{ $t('Load failed') }}</h3>
|
||||||
<p class="text-sm text-red-700 mt-1">{{ $resources.dnsRecords.error }}</p>
|
<p class="text-sm text-red-700 mt-1">{{ $resources.dnsRecords.error }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -70,31 +70,31 @@
|
|||||||
/>
|
/>
|
||||||
</th>
|
</th>
|
||||||
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
||||||
编号
|
{{ $t('Number') }}
|
||||||
</th>
|
</th>
|
||||||
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
||||||
主机名 *
|
{{ $t('Hostname') }} *
|
||||||
</th>
|
</th>
|
||||||
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
||||||
类型 *
|
{{ $t('Type') }} *
|
||||||
</th>
|
</th>
|
||||||
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
||||||
线路
|
{{ $t('Line') }}
|
||||||
</th>
|
</th>
|
||||||
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
||||||
对应值 *
|
{{ $t('Value') }} *
|
||||||
</th>
|
</th>
|
||||||
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
||||||
TTL
|
{{ $t('TTL') }}
|
||||||
</th>
|
</th>
|
||||||
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
||||||
优先级
|
{{ $t('Priority') }}
|
||||||
</th>
|
</th>
|
||||||
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
||||||
状态
|
{{ $t('Status') }}
|
||||||
</th>
|
</th>
|
||||||
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
<th class="px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">
|
||||||
操作
|
{{ $t('Actions') }}
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
@ -121,7 +121,7 @@
|
|||||||
type="text"
|
type="text"
|
||||||
class="w-24 px-2 py-1 text-sm border border-gray-300 rounded focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
class="w-24 px-2 py-1 text-sm border border-gray-300 rounded focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
||||||
:class="{ 'bg-gray-100 text-gray-500 cursor-not-allowed': !record.isNew }"
|
:class="{ 'bg-gray-100 text-gray-500 cursor-not-allowed': !record.isNew }"
|
||||||
placeholder="主机名"
|
:placeholder="$t('Hostname')"
|
||||||
:disabled="!record.isNew"
|
:disabled="!record.isNew"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@ -160,7 +160,7 @@
|
|||||||
'bg-orange-100 text-orange-800': record.type === 'SRV',
|
'bg-orange-100 text-orange-800': record.type === 'SRV',
|
||||||
'bg-gray-100 text-gray-800': !record.type
|
'bg-gray-100 text-gray-800': !record.type
|
||||||
}">
|
}">
|
||||||
{{ record.type || '未知' }}
|
{{ record.type || $t('Unknown') }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
@ -171,12 +171,12 @@
|
|||||||
v-model="record.line"
|
v-model="record.line"
|
||||||
class="w-20 px-2 py-1 text-sm border border-gray-300 rounded focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
class="w-20 px-2 py-1 text-sm border border-gray-300 rounded focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
||||||
>
|
>
|
||||||
<option value="">默认</option>
|
<option value="">{{ $t('Default') }}</option>
|
||||||
<option value="LTEL">电信</option>
|
<option value="LTEL">{{ $t('Telecom') }}</option>
|
||||||
<option value="LCNC">联通</option>
|
<option value="LCNC">{{ $t('Unicom') }}</option>
|
||||||
<option value="LMOB">移动</option>
|
<option value="LMOB">{{ $t('Mobile') }}</option>
|
||||||
<option value="LEDU">教育网</option>
|
<option value="LEDU">{{ $t('Education Network') }}</option>
|
||||||
<option value="LSEO">搜索引擎</option>
|
<option value="LSEO">{{ $t('Search Engine') }}</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="text-sm text-gray-500">
|
<div v-else class="text-sm text-gray-500">
|
||||||
@ -190,7 +190,7 @@
|
|||||||
v-model="record.value"
|
v-model="record.value"
|
||||||
type="text"
|
type="text"
|
||||||
class="w-32 px-2 py-1 text-sm border border-gray-300 rounded focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
class="w-32 px-2 py-1 text-sm border border-gray-300 rounded focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
|
||||||
placeholder="记录值"
|
:placeholder="$t('Record Value')"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="text-sm text-gray-900 max-w-xs truncate" :title="record.value">
|
<div v-else class="text-sm text-gray-900 max-w-xs truncate" :title="record.value">
|
||||||
@ -229,7 +229,7 @@
|
|||||||
</td>
|
</td>
|
||||||
<td class="px-4 py-4 whitespace-nowrap text-sm">
|
<td class="px-4 py-4 whitespace-nowrap text-sm">
|
||||||
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-800">
|
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-800">
|
||||||
正常
|
{{ $t('Normal') }}
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<td class="px-4 py-4 whitespace-nowrap text-sm">
|
<td class="px-4 py-4 whitespace-nowrap text-sm">
|
||||||
@ -241,7 +241,7 @@
|
|||||||
size="sm"
|
size="sm"
|
||||||
class="text-blue-600 hover:text-blue-700"
|
class="text-blue-600 hover:text-blue-700"
|
||||||
>
|
>
|
||||||
编辑
|
{{ $t('Edit') }}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
v-if="record.editing"
|
v-if="record.editing"
|
||||||
@ -250,7 +250,7 @@
|
|||||||
size="sm"
|
size="sm"
|
||||||
class="text-green-600 hover:text-green-700"
|
class="text-green-600 hover:text-green-700"
|
||||||
>
|
>
|
||||||
保存
|
{{ $t('Save') }}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
v-if="record.editing"
|
v-if="record.editing"
|
||||||
@ -259,7 +259,7 @@
|
|||||||
size="sm"
|
size="sm"
|
||||||
class="text-gray-600 hover:text-gray-700"
|
class="text-gray-600 hover:text-gray-700"
|
||||||
>
|
>
|
||||||
取消
|
{{ $t('Cancel') }}
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
v-if="!record.editing && !record.isNew"
|
v-if="!record.editing && !record.isNew"
|
||||||
@ -268,7 +268,7 @@
|
|||||||
size="sm"
|
size="sm"
|
||||||
class="text-red-600 hover:text-red-700"
|
class="text-red-600 hover:text-red-700"
|
||||||
>
|
>
|
||||||
删除
|
{{ $t('Delete') }}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
@ -280,9 +280,9 @@
|
|||||||
<!-- 分页 -->
|
<!-- 分页 -->
|
||||||
<div v-if="pagination.total > pagination.limit" class="flex flex-col items-center space-y-4">
|
<div v-if="pagination.total > pagination.limit" class="flex flex-col items-center space-y-4">
|
||||||
<div class="text-sm text-gray-700">
|
<div class="text-sm text-gray-700">
|
||||||
显示第 {{ (pagination.pageno - 1) * pagination.limit + 1 }} -
|
{{ $t('Showing') }} {{ (pagination.pageno - 1) * pagination.limit + 1 }} -
|
||||||
{{ Math.min(pagination.pageno * pagination.limit, pagination.total) }} 条,
|
{{ Math.min(pagination.pageno * pagination.limit, pagination.total) }} {{ $t('of') }}
|
||||||
共 {{ pagination.total }} 条记录
|
{{ pagination.total }} {{ $t('records') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center space-x-2">
|
<div class="flex items-center space-x-2">
|
||||||
<Button
|
<Button
|
||||||
@ -326,12 +326,12 @@
|
|||||||
<!-- 空状态 -->
|
<!-- 空状态 -->
|
||||||
<div v-else-if="!$resources.dnsRecords.loading && !$resources.dnsRecords.error && dnsRecords.length === 0" class="text-center py-12">
|
<div v-else-if="!$resources.dnsRecords.loading && !$resources.dnsRecords.error && dnsRecords.length === 0" class="text-center py-12">
|
||||||
<GlobeIcon class="mx-auto h-12 w-12 text-gray-400" />
|
<GlobeIcon class="mx-auto h-12 w-12 text-gray-400" />
|
||||||
<h3 class="mt-2 text-sm font-medium text-gray-900">暂无DNS记录</h3>
|
<h3 class="mt-2 text-sm font-medium text-gray-900">{{ $t('No DNS records yet') }}</h3>
|
||||||
<p class="mt-1 text-sm text-gray-500">开始添加您的第一个DNS解析记录</p>
|
<p class="mt-1 text-sm text-gray-500">{{ $t('Start adding your first DNS record') }}</p>
|
||||||
<div class="mt-6">
|
<div class="mt-6">
|
||||||
<Button @click="addNewRow" variant="solid">
|
<Button @click="addNewRow" variant="solid">
|
||||||
<PlusIcon class="h-4 w-4 mr-1" />
|
<PlusIcon class="h-4 w-4 mr-1" />
|
||||||
添加记录
|
{{ $t('Add Record') }}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -450,12 +450,12 @@ export default {
|
|||||||
// 获取线路显示名称
|
// 获取线路显示名称
|
||||||
getLineDisplayName(line) {
|
getLineDisplayName(line) {
|
||||||
const lineMap = {
|
const lineMap = {
|
||||||
'LTEL': '电信',
|
'LTEL': this.$t('Telecom'),
|
||||||
'LCNC': '联通',
|
'LCNC': this.$t('Unicom'),
|
||||||
'LMOB': '移动',
|
'LMOB': this.$t('Mobile'),
|
||||||
'LEDU': '教育网',
|
'LEDU': this.$t('Education Network'),
|
||||||
'LSEO': '搜索引擎',
|
'LSEO': this.$t('Search Engine'),
|
||||||
'': '默认'
|
'': this.$t('Default')
|
||||||
};
|
};
|
||||||
return lineMap[line] || line;
|
return lineMap[line] || line;
|
||||||
},
|
},
|
||||||
|
|||||||
@ -19,7 +19,7 @@
|
|||||||
<svg class="mr-2 h-4 w-4 text-green-600" fill="currentColor" viewBox="0 0 20 20">
|
<svg class="mr-2 h-4 w-4 text-green-600" fill="currentColor" viewBox="0 0 20 20">
|
||||||
<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"></path>
|
<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"></path>
|
||||||
</svg>
|
</svg>
|
||||||
实名认证
|
{{ $t('Real-name Verified') }}
|
||||||
</div>
|
</div>
|
||||||
<button
|
<button
|
||||||
@click="showRealNameInfo"
|
@click="showRealNameInfo"
|
||||||
@ -28,7 +28,7 @@
|
|||||||
<svg class="mr-1.5 h-4 w-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
<svg class="mr-1.5 h-4 w-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
|
||||||
</svg>
|
</svg>
|
||||||
查看认证信息
|
{{ $t('View Verification Information') }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="flex items-center space-x-3">
|
<div v-else class="flex items-center space-x-3">
|
||||||
@ -36,13 +36,13 @@
|
|||||||
<svg class="mr-2 h-4 w-4 text-amber-600" fill="currentColor" viewBox="0 0 20 20">
|
<svg class="mr-2 h-4 w-4 text-amber-600" fill="currentColor" viewBox="0 0 20 20">
|
||||||
<path fill-rule="evenodd" d="M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z" clip-rule="evenodd"></path>
|
<path fill-rule="evenodd" d="M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z" clip-rule="evenodd"></path>
|
||||||
</svg>
|
</svg>
|
||||||
待实名认证
|
{{ $t('Pending Real-name Verification') }}
|
||||||
</div>
|
</div>
|
||||||
<button
|
<button
|
||||||
@click="showUploadRealName"
|
@click="showUploadRealName"
|
||||||
class="inline-flex items-center px-3 py-1.5 text-sm font-medium text-white bg-gradient-to-r from-blue-600 to-blue-700 hover:from-blue-700 hover:to-blue-800 rounded-lg transition-all duration-200 shadow-sm hover:shadow-md"
|
class="inline-flex items-center px-3 py-1.5 text-sm font-medium text-white bg-gradient-to-r from-blue-600 to-blue-700 hover:from-blue-700 hover:to-blue-800 rounded-lg transition-all duration-200 shadow-sm hover:shadow-md"
|
||||||
>
|
>
|
||||||
上传实名资料
|
{{ $t('Upload Real-name Documents') }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -51,7 +51,7 @@
|
|||||||
|
|
||||||
<div v-if="$domain.pg.end_date" class="mt-2 inline-flex items-center rounded-full bg-amber-50 px-4 py-2 text-sm font-medium text-amber-800">
|
<div v-if="$domain.pg.end_date" class="mt-2 inline-flex items-center rounded-full bg-amber-50 px-4 py-2 text-sm font-medium text-amber-800">
|
||||||
<ClockIcon class="mr-1.5 h-4 w-4 text-amber-500" />
|
<ClockIcon class="mr-1.5 h-4 w-4 text-amber-500" />
|
||||||
到期时间:{{ $format.date($domain.pg.end_date) }}
|
{{ $t('Expiration Date') }}: {{ $format.date($domain.pg.end_date) }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex gap-2">
|
<div class="flex gap-2">
|
||||||
@ -60,7 +60,7 @@
|
|||||||
:loading="$domain.renew?.loading"
|
:loading="$domain.renew?.loading"
|
||||||
class="px-5 !bg-[#1fc76f] !hover:bg-[#1bb85f] !text-white"
|
class="px-5 !bg-[#1fc76f] !hover:bg-[#1bb85f] !text-white"
|
||||||
>
|
>
|
||||||
续费
|
{{ $t('Renew') }}
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -70,7 +70,7 @@
|
|||||||
<!-- 域名信息 -->
|
<!-- 域名信息 -->
|
||||||
<div class="rounded-md border">
|
<div class="rounded-md border">
|
||||||
<div class="h-12 border-b px-5 py-4">
|
<div class="h-12 border-b px-5 py-4">
|
||||||
<h2 class="text-lg font-medium text-gray-900">域名信息</h2>
|
<h2 class="text-lg font-medium text-gray-900">{{ $t('Domain Information') }}</h2>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div
|
<div
|
||||||
@ -78,7 +78,7 @@
|
|||||||
:key="info.label"
|
:key="info.label"
|
||||||
class="flex items-center px-5 py-3 last:pb-5 even:bg-gray-50/70"
|
class="flex items-center px-5 py-3 last:pb-5 even:bg-gray-50/70"
|
||||||
>
|
>
|
||||||
<div class="w-1/3 text-base text-gray-600">{{ info.label }}</div>
|
<div class="w-1/3 text-base text-gray-600">{{ $t(info.label) }}</div>
|
||||||
<div
|
<div
|
||||||
class="flex w-2/3 items-center space-x-2 text-base text-gray-900"
|
class="flex w-2/3 items-center space-x-2 text-base text-gray-900"
|
||||||
>
|
>
|
||||||
@ -106,7 +106,7 @@
|
|||||||
<!-- 操作 -->
|
<!-- 操作 -->
|
||||||
<div class="rounded-md border">
|
<div class="rounded-md border">
|
||||||
<div class="h-12 border-b px-5 py-4">
|
<div class="h-12 border-b px-5 py-4">
|
||||||
<h2 class="text-lg font-medium text-gray-900">操作</h2>
|
<h2 class="text-lg font-medium text-gray-900">{{ $t('Actions') }}</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="p-5">
|
<div class="p-5">
|
||||||
<div class="flex flex-wrap gap-2">
|
<div class="flex flex-wrap gap-2">
|
||||||
@ -116,7 +116,7 @@
|
|||||||
variant="outline"
|
variant="outline"
|
||||||
class="bg-gray-100 text-gray-700 hover:bg-gray-200"
|
class="bg-gray-100 text-gray-700 hover:bg-gray-200"
|
||||||
>
|
>
|
||||||
修改DNS服务器
|
{{ $t('Modify DNS Servers') }}
|
||||||
</Button>
|
</Button>
|
||||||
<!-- <Button
|
<!-- <Button
|
||||||
@click="toggleAutoRenew"
|
@click="toggleAutoRenew"
|
||||||
@ -133,32 +133,32 @@
|
|||||||
<!-- DNS服务器信息 -->
|
<!-- DNS服务器信息 -->
|
||||||
<div class="rounded-md border">
|
<div class="rounded-md border">
|
||||||
<div class="h-12 border-b px-5 py-4">
|
<div class="h-12 border-b px-5 py-4">
|
||||||
<h2 class="text-lg font-medium text-gray-900">DNS服务器</h2>
|
<h2 class="text-lg font-medium text-gray-900">{{ $t('DNS Servers') }}</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="p-5">
|
<div class="p-5">
|
||||||
<div class="space-y-3">
|
<div class="space-y-3">
|
||||||
<div class="flex justify-between">
|
<div class="flex justify-between">
|
||||||
<span class="text-gray-600">主DNS:</span>
|
<span class="text-gray-600">{{ $t('Primary DNS') }}:</span>
|
||||||
<span class="font-mono text-gray-900">{{ $domain.pg.dns_host1 }}</span>
|
<span class="font-mono text-gray-900">{{ $domain.pg.dns_host1 }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex justify-between">
|
<div class="flex justify-between">
|
||||||
<span class="text-gray-600">辅DNS:</span>
|
<span class="text-gray-600">{{ $t('Secondary DNS') }}:</span>
|
||||||
<span class="font-mono text-gray-900">{{ $domain.pg.dns_host2 }}</span>
|
<span class="font-mono text-gray-900">{{ $domain.pg.dns_host2 }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex justify-between">
|
<div class="flex justify-between">
|
||||||
<span class="text-gray-600">DNS3:</span>
|
<span class="text-gray-600">{{ $t('DNS3') }}:</span>
|
||||||
<span class="font-mono text-gray-900">{{ $domain.pg.dns_host3 }}</span>
|
<span class="font-mono text-gray-900">{{ $domain.pg.dns_host3 }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex justify-between">
|
<div class="flex justify-between">
|
||||||
<span class="text-gray-600">DNS4:</span>
|
<span class="text-gray-600">{{ $t('DNS4') }}:</span>
|
||||||
<span class="font-mono text-gray-900">{{ $domain.pg.dns_host4 }}</span>
|
<span class="font-mono text-gray-900">{{ $domain.pg.dns_host4 }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex justify-between">
|
<div class="flex justify-between">
|
||||||
<span class="text-gray-600">DNS5:</span>
|
<span class="text-gray-600">{{ $t('DNS5') }}:</span>
|
||||||
<span class="font-mono text-gray-900">{{ $domain.pg.dns_host5 }}</span>
|
<span class="font-mono text-gray-900">{{ $domain.pg.dns_host5 }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex justify-between">
|
<div class="flex justify-between">
|
||||||
<span class="text-gray-600">DNS6:</span>
|
<span class="text-gray-600">{{ $t('DNS6') }}:</span>
|
||||||
<span class="font-mono text-gray-900">{{ $domain.pg.dns_host6 }}</span>
|
<span class="font-mono text-gray-900">{{ $domain.pg.dns_host6 }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -202,12 +202,12 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
getStatusText(status) {
|
getStatusText(status) {
|
||||||
const statusMap = {
|
const statusMap = {
|
||||||
'ok': '正常',
|
'ok': this.$t('Normal'),
|
||||||
'clienthold': '锁定',
|
'clienthold': this.$t('Locked'),
|
||||||
'clientupdateprohibited': '更新锁定',
|
'clientupdateprohibited': this.$t('Update Locked'),
|
||||||
'clienttransferprohibited': '转移锁定',
|
'clienttransferprohibited': this.$t('Transfer Locked'),
|
||||||
'clientdeleteprohibited': '删除锁定',
|
'clientdeleteprohibited': this.$t('Delete Locked'),
|
||||||
'clientrenewprohibited': '续费锁定'
|
'clientrenewprohibited': this.$t('Renew Locked')
|
||||||
};
|
};
|
||||||
return statusMap[status] || status;
|
return statusMap[status] || status;
|
||||||
},
|
},
|
||||||
@ -472,19 +472,19 @@ export default {
|
|||||||
domainInformation() {
|
domainInformation() {
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
label: '状态',
|
label: 'Status',
|
||||||
value: this.getStatusText(this.$domain.pg?.status),
|
value: this.getStatusText(this.$domain.pg?.status),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '域名',
|
label: 'Domain',
|
||||||
value: this.$domain.pg?.domain,
|
value: this.$domain.pg?.domain,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '注册时间',
|
label: 'Registration Date',
|
||||||
value: this.$domain.pg?.registration_date,
|
value: this.$domain.pg?.registration_date,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '所有者',
|
label: 'Owner',
|
||||||
value: this.getOwnerDisplayName(),
|
value: this.getOwnerDisplayName(),
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|||||||
@ -302,7 +302,115 @@ Signature,签名,
|
|||||||
Sites,网站,
|
Sites,网站,
|
||||||
Search,搜索,
|
Search,搜索,
|
||||||
Search Sites,搜索站点,
|
Search Sites,搜索站点,
|
||||||
|
Search owner name, company name...,搜索所有者姓名、单位名称...,搜索所有者姓名、单位名称...,
|
||||||
Site Update,站点更新,
|
Site Update,站点更新,
|
||||||
|
Refresh,刷新,
|
||||||
|
Delete Selected,删除选中,
|
||||||
|
Add Record,添加记录,
|
||||||
|
Loading DNS records...,正在加载DNS记录...,
|
||||||
|
Load failed,加载失败,
|
||||||
|
Number,编号,
|
||||||
|
Hostname,主机名,
|
||||||
|
Type,类型,
|
||||||
|
Line,线路,
|
||||||
|
Value,对应值,
|
||||||
|
TTL,TTL,
|
||||||
|
Priority,优先级,
|
||||||
|
Status,状态,
|
||||||
|
Actions,操作,
|
||||||
|
Unknown,未知,
|
||||||
|
Record Value,记录值,
|
||||||
|
Normal,正常,
|
||||||
|
Edit,编辑,
|
||||||
|
Save,保存,
|
||||||
|
Cancel,取消,
|
||||||
|
Delete,删除,
|
||||||
|
Showing,显示,
|
||||||
|
of,的,
|
||||||
|
records,条记录,
|
||||||
|
No DNS records yet,暂无DNS记录,
|
||||||
|
Start adding your first DNS record,开始添加您的第一个DNS解析记录,
|
||||||
|
Telecom,电信,
|
||||||
|
Unicom,联通,
|
||||||
|
Mobile,移动,
|
||||||
|
Education Network,教育网,
|
||||||
|
Search Engine,搜索引擎,
|
||||||
|
Default,默认,
|
||||||
|
All Status,全部状态,
|
||||||
|
Real-name Verified,实名认证,
|
||||||
|
View Verification Information,查看认证信息,
|
||||||
|
Pending Real-name Verification,待实名认证,
|
||||||
|
Upload Real-name Documents,上传实名资料,
|
||||||
|
Expiration Date,到期时间,
|
||||||
|
Renew,续费,
|
||||||
|
Domain Information,域名信息,
|
||||||
|
Status,状态,
|
||||||
|
Domain,域名,
|
||||||
|
Registration Date,注册时间,
|
||||||
|
Owner,所有者,
|
||||||
|
Actions,操作,
|
||||||
|
Modify DNS Servers,修改DNS服务器,
|
||||||
|
DNS Servers,DNS服务器,
|
||||||
|
Primary DNS,主DNS,
|
||||||
|
Secondary DNS,辅DNS,
|
||||||
|
DNS3,DNS3,
|
||||||
|
DNS4,DNS4,
|
||||||
|
DNS5,DNS5,
|
||||||
|
DNS6,DNS6,
|
||||||
|
Normal,正常,
|
||||||
|
Locked,锁定,
|
||||||
|
Update Locked,更新锁定,
|
||||||
|
Transfer Locked,转移锁定,
|
||||||
|
Delete Locked,删除锁定,
|
||||||
|
Renew Locked,续费锁定,
|
||||||
|
Not Real-name Verified,未实名认证,
|
||||||
|
Create Owner Template,新建所有者模板,
|
||||||
|
Owner Name,所有者名称,
|
||||||
|
Real-name Status,实名状态,
|
||||||
|
Contact Information,联系信息,
|
||||||
|
View Details,查看详情,
|
||||||
|
This template is associated with domains and cannot be deleted,该模板已关联域名,无法删除,
|
||||||
|
Owner Details,所有者详细信息,
|
||||||
|
Basic Information,基本信息,
|
||||||
|
Owner Type,所有者类型,
|
||||||
|
Company Name,单位名称,
|
||||||
|
Email,电子邮箱,
|
||||||
|
Phone Number,手机号码,
|
||||||
|
Province,省份,
|
||||||
|
City,城市,
|
||||||
|
ID Information,证件信息,
|
||||||
|
ID Type,证件类型,
|
||||||
|
ID Number,证件号码,
|
||||||
|
Close,关闭,
|
||||||
|
Edit Domain Owner,编辑域名所有者,
|
||||||
|
Individual,个人,
|
||||||
|
Enterprise/Organization,企业/组织,
|
||||||
|
Owner Company Name,所有者单位名称,
|
||||||
|
Please enter company name,请输入单位名称,
|
||||||
|
Last Name,姓,
|
||||||
|
First Name,名,
|
||||||
|
Please enter last name,请输入姓,
|
||||||
|
Please enter first name,请输入名,
|
||||||
|
Please enter email,请输入电子邮箱,
|
||||||
|
Please enter phone number,请输入手机号码,
|
||||||
|
Please enter province,请输入省份,
|
||||||
|
Please enter city,请输入城市,
|
||||||
|
Postal Code,邮编,
|
||||||
|
Please enter postal code,请输入邮编,
|
||||||
|
Please enter address,请输入通讯地址,
|
||||||
|
Real-name Verification in Progress,实名认证中,
|
||||||
|
Real-name Verification Failed,实名认证失败,
|
||||||
|
Real-name Verification Expired,实名认证过期,
|
||||||
|
Pending Review,待审核,
|
||||||
|
ID Card,身份证,
|
||||||
|
Passport,护照,
|
||||||
|
Mainland Travel Permit for Hong Kong and Macao Residents,港澳居民来往内地通行证,
|
||||||
|
Mainland Travel Permit for Taiwan Residents,台湾居民来往大陆通行证,
|
||||||
|
Permanent Residence ID Card for Foreigners,外国人永久居留身份证,
|
||||||
|
Residence Permit for Hong Kong, Macao and Taiwan Residents,港澳台居民居住证,
|
||||||
|
Organization Code Certificate,组织机构代码证,
|
||||||
|
Business License,工商营业执照,
|
||||||
|
Unified Social Credit Code,统一社会信用代码,
|
||||||
Site update started,站点更新已启动,
|
Site update started,站点更新已启动,
|
||||||
Size,尺寸,
|
Size,尺寸,
|
||||||
Servers,服务器,
|
Servers,服务器,
|
||||||
|
|||||||
|
Can't render this file because it has a wrong number of fields in line 305.
|
Loading…
x
Reference in New Issue
Block a user