main #2

Merged
jingrow merged 250 commits from main into v1 2026-01-13 22:45:50 +08:00
Showing only changes of commit aad3101d8f - Show all commits

View File

@ -1,5 +1,5 @@
<template>
<Dialog v-bind="$attrs" :options="{ title: '实名认证信息', size: '3xl' }" v-model="show">
<Dialog v-bind="$attrs" :options="{ title: 'jingrow.cn实名认证信息', size: '2xl' }" v-model="show">
<template #body>
<div v-if="loading" class="flex justify-center items-center py-12">
<div class="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600"></div>
@ -14,164 +14,92 @@
</div>
<div v-else-if="realNameData" class="space-y-6">
<!-- 认证状态 -->
<div class="bg-gradient-to-r from-green-50 to-emerald-50 rounded-xl p-6 border border-green-200">
<div class="flex items-center">
<div class="flex-shrink-0">
<CheckCircleIcon class="h-8 w-8 text-green-500" />
</div>
<div class="ml-4">
<h3 class="text-lg font-medium text-green-900">认证已通过</h3>
<p class="text-sm text-green-700">该域名已完成实名认证</p>
</div>
</div>
</div>
<!-- 基本信息 -->
<div class="bg-white rounded-xl border border-gray-200 shadow-sm">
<!-- 域名基本信息 -->
<div class="bg-white rounded-lg ">
<div class="px-6 py-4 border-b border-gray-100">
<h3 class="text-lg font-semibold text-gray-900 flex items-center">
<FileTextIcon class="h-5 w-5 mr-2 text-blue-600" />
域名基本信息
</h3>
<h3 class="text-lg font-semibold text-gray-900">域名基本信息</h3>
</div>
<div class="p-6">
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="space-y-4">
<div>
<dt class="text-sm font-medium text-gray-600">域名</dt>
<dd class="mt-1 text-sm text-gray-900">{{ realNameData.domain || '未填写' }}</dd>
</div>
<div>
<dt class="text-sm font-medium text-gray-600">注册时间</dt>
<dd class="mt-1 text-sm text-gray-900">{{ formatDateTime(realNameData.regdate) || '未填写' }}</dd>
</div>
<div>
<dt class="text-sm font-medium text-gray-600">到期时间</dt>
<dd class="mt-1 text-sm text-gray-900">{{ formatDateTime(realNameData.rexpiredate) || '未填写' }}</dd>
</div>
<div>
<dt class="text-sm font-medium text-gray-600">域名状态</dt>
<dd class="mt-1 text-sm text-gray-900">{{ getDomainStatusText(realNameData.status) || '未填写' }}</dd>
</div>
</div>
<div class="space-y-4">
<div>
<dt class="text-sm font-medium text-gray-600">实名状态</dt>
<dd class="mt-1 text-sm text-gray-900">{{ getRealNameStatusText(realNameData.real_name_status?.r_status) || '未填写' }}</dd>
</div>
<div>
<dt class="text-sm font-medium text-gray-600">注册类型</dt>
<dd class="mt-1 text-sm text-gray-900">{{ getRegTypeText(realNameData.c_regtype) || '未填写' }}</dd>
</div>
<div>
<dt class="text-sm font-medium text-gray-600">模板ID</dt>
<dd class="mt-1 text-sm text-gray-900">{{ realNameData.c_sysid || '未填写' }}</dd>
</div>
</div>
<div class="p-6 space-y-4">
<div class="flex justify-between items-center">
<span class="text-gray-600">域名</span>
<span class="font-medium text-gray-900">{{ realNameData.domain }}</span>
</div>
</div>
</div>
<!-- 所有者信息 -->
<div class="bg-white rounded-xl border border-gray-200 shadow-sm">
<div class="px-6 py-4 border-b border-gray-100">
<h3 class="text-lg font-semibold text-gray-900 flex items-center">
<UserIcon class="h-5 w-5 mr-2 text-blue-600" />
所有者信息
</h3>
</div>
<div class="p-6">
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="space-y-4">
<div>
<dt class="text-sm font-medium text-gray-600">中文姓名</dt>
<dd class="mt-1 text-sm text-gray-900">{{ getFullChineseName() || '未填写' }}</dd>
</div>
<div v-if="realNameData.owner?.dom_org_m">
<dt class="text-sm font-medium text-gray-600">中文单位</dt>
<dd class="mt-1 text-sm text-gray-900">{{ realNameData.owner.dom_org_m || '未填写' }}</dd>
</div>
<div>
<dt class="text-sm font-medium text-gray-600">邮箱</dt>
<dd class="mt-1 text-sm text-gray-900">{{ realNameData.owner?.dom_em || '未填写' }}</dd>
</div>
</div>
<div class="space-y-4">
<div>
<dt class="text-sm font-medium text-gray-600">电话</dt>
<dd class="mt-1 text-sm text-gray-900">{{ realNameData.owner?.dom_ph || '未填写' }}</dd>
</div>
<div>
<dt class="text-sm font-medium text-gray-600">传真</dt>
<dd class="mt-1 text-sm text-gray-900">{{ realNameData.owner?.dom_fax || '未填写' }}</dd>
</div>
<div>
<dt class="text-sm font-medium text-gray-600">国家/地区</dt>
<dd class="mt-1 text-sm text-gray-900">{{ realNameData.owner?.dom_co || '未填写' }}</dd>
</div>
<div>
<dt class="text-sm font-medium text-gray-600">省份</dt>
<dd class="mt-1 text-sm text-gray-900">{{ realNameData.owner?.dom_st_m || '未填写' }}</dd>
</div>
<div>
<dt class="text-sm font-medium text-gray-600">城市</dt>
<dd class="mt-1 text-sm text-gray-900">{{ realNameData.owner?.dom_ct_m || '未填写' }}</dd>
</div>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600">注册时间</span>
<span class="font-medium text-gray-900">{{ formatDateTime(realNameData.regdate) }}</span>
</div>
<div class="mt-4">
<div>
<dt class="text-sm font-medium text-gray-600">地址</dt>
<dd class="mt-1 text-sm text-gray-900">{{ realNameData.owner?.dom_adr_m || '未填写' }}</dd>
</div>
<div>
<dt class="text-sm font-medium text-gray-600">邮编</dt>
<dd class="mt-1 text-sm text-gray-900">{{ realNameData.owner?.dom_pc || '未填写' }}</dd>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600">到期时间</span>
<span class="font-medium text-gray-900">{{ formatDateTime(realNameData.rexpiredate) }}</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600">域名状态</span>
<span class="font-medium text-green-600">{{ getDomainStatusText(realNameData.status) }}</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600">实名状态</span>
<span class="font-medium text-green-600">{{ getRealNameStatusText(realNameData.real_name_status?.r_status) }}</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600">域名所有者</span>
<span class="font-medium text-gray-900">{{ realNameData.owner?.dom_org_m || '未填写' }}</span>
</div>
</div>
</div>
<!-- 实名证件信息 -->
<div v-if="realNameData.orgfile" class="bg-white rounded-xl border border-gray-200 shadow-sm">
<div class="bg-white rounded-lg ">
<div class="px-6 py-4 border-b border-gray-100">
<h3 class="text-lg font-semibold text-gray-900 flex items-center">
<FileTextIcon class="h-5 w-5 mr-2 text-blue-600" />
实名证件信息
</h3>
<h3 class="text-lg font-semibold text-gray-900">实名证件信息</h3>
</div>
<div class="p-6">
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="space-y-4">
<div>
<dt class="text-sm font-medium text-gray-600">实名证件类型</dt>
<dd class="mt-1 text-sm text-gray-900">{{ getDocumentTypeText(realNameData.orgfile.f_type) || '未填写' }}</dd>
</div>
<div>
<dt class="text-sm font-medium text-gray-600">实名证件号码</dt>
<dd class="mt-1 text-sm text-gray-900">{{ realNameData.orgfile.f_code || '未填写' }}</dd>
</div>
</div>
<div class="space-y-4">
<div>
<dt class="text-sm font-medium text-gray-600">证件上传时间</dt>
<dd class="mt-1 text-sm text-gray-900">{{ formatDateTime(realNameData.orgfile.f_date) || '未填写' }}</dd>
</div>
<div>
<dt class="text-sm font-medium text-gray-600">证件ID</dt>
<dd class="mt-1 text-sm text-gray-900">{{ realNameData.orgfile.f_sysid || '未填写' }}</dd>
</div>
<div class="p-6 space-y-4">
<div class="flex justify-between items-center">
<span class="text-gray-600">实名证件类型</span>
<span class="font-medium text-gray-900">{{ getDocumentTypeText(realNameData.orgfile?.f_type) }}</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600">实名证件号码</span>
<div class="flex items-center space-x-2">
<span class="font-medium text-gray-900">{{ realNameData.orgfile?.f_code || '未填写' }}</span>
<button class="text-blue-600 hover:text-blue-800">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path>
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"></path>
</svg>
</button>
</div>
</div>
</div>
</div>
<!-- 联系信息 -->
<div class="bg-white rounded-lg ">
<div class="px-6 py-4 border-b border-gray-100">
<h3 class="text-lg font-semibold text-gray-900">联系信息</h3>
</div>
<div class="p-6 space-y-4">
<div class="flex justify-between items-center">
<span class="text-gray-600">联系电话</span>
<span class="font-medium text-gray-900">{{ realNameData.owner?.dom_ph || '未填写' }}</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600">所有者邮箱</span>
<span class="font-medium text-gray-900">{{ realNameData.owner?.dom_em || '未填写' }}</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600">所属区域</span>
<span class="font-medium text-gray-900">{{ getFullAddress() }}</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600">通讯地址</span>
<span class="font-medium text-gray-900">{{ realNameData.owner?.dom_adr_m || '未填写' }}</span>
</div>
<div class="flex justify-between items-center">
<span class="text-gray-600">邮编</span>
<span class="font-medium text-gray-900">{{ realNameData.owner?.dom_pc || '未填写' }}</span>
</div>
</div>
</div>
</div>
</template>
</Dialog>
@ -179,10 +107,7 @@
<script>
import { Dialog, createResource } from 'jingrow-ui';
import CheckCircleIcon from '~icons/lucide/check-circle';
import AlertTriangleIcon from '~icons/lucide/alert-triangle';
import FileTextIcon from '~icons/lucide/file-text';
import UserIcon from '~icons/lucide/user';
@ -192,10 +117,7 @@ export default {
name: 'JsiteDomainRealNameInfoDialog',
components: {
Dialog,
CheckCircleIcon,
AlertTriangleIcon,
FileTextIcon,
UserIcon
AlertTriangleIcon
},
props: {
domain: String,
@ -305,18 +227,13 @@ export default {
};
return typeMap[type] || type || '未知';
},
getRegTypeText(regType) {
const typeMap = {
'I': '个人',
'E': '企业'
};
return typeMap[regType] || regType || '未知';
},
getFullChineseName() {
getFullAddress() {
if (!this.realNameData?.owner) return '未填写';
const lastName = this.realNameData.owner.dom_ln_m || '';
const firstName = this.realNameData.owner.dom_fn_m || '';
return lastName + firstName || '未填写';
const province = this.realNameData.owner.dom_st_m || '';
const city = this.realNameData.owner.dom_ct_m || '';
const district = this.realNameData.owner.dom_district_m || '';
const parts = [province, city, district].filter(Boolean);
return parts.length > 0 ? parts.join('') : '未填写';
}
},