已认证页面

This commit is contained in:
qiuyuan 2026-01-04 11:23:11 +08:00
parent 9e1d8dfa37
commit 8551a4cf09
2 changed files with 456 additions and 0 deletions

BIN
src/assets/renzheng.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 KiB

View File

@ -0,0 +1,456 @@
<template>
<div class="real-name-auth">
<!-- 页面标题 -->
<div class="page-title-area">
<h2 class="page-title">实名认证</h2>
<p class="page-description">
Fast亼算云严格遵守国家相关个人信息隐私保护规定并不存储使用您的个人信息
<a href="#" class="protocol-link">查看实名认证协议</a>
</p>
</div>
<!-- 认证信息卡片 -->
<div class="auth-card">
<div class="card-content">
<!-- 左侧信息区 -->
<div class="info-left">
<!-- 卡片标题 -->
<div class="card-title">
<div class="auth-status">
<span class="status-dot"></span>
<span class="status-text">已认证</span>
</div>
<h3 class="auth-type">个人认证</h3>
</div>
<!-- 信息网格 -->
<div class="info-grid">
<div class="info-item">
<div class="info-label">认证类型</div>
<div class="info-value">个人认证</div>
</div>
<div class="info-item">
<div class="info-label">认证时间</div>
<div class="info-value">2025-11-18</div>
</div>
<div class="info-item">
<div class="info-label">证件类型</div>
<div class="info-value">身份证</div>
</div>
<div class="info-item">
<div class="info-label">身份证号</div>
<div class="info-value">
<span>150************859</span>
<a-button type="link" size="small" @click="handleCopy">复制</a-button>
</div>
</div>
<div class="info-item">
<div class="info-label">认证人</div>
<div class="info-value">*</div>
</div>
</div>
</div>
<!-- 右侧图片区 -->
<div class="image-right">
<img src="../../../../assets/renzheng.png" alt="认证" class="auth-image" />
</div>
</div>
<!-- 操作区域 -->
<div class="card-actions">
<a-button type="primary" size="large" @click="handleChangeAuth">
变更为企业认证
</a-button>
</div>
</div>
<!-- 分割线 -->
<div class="divider"></div>
<!-- 变更记录 -->
<div class="record-section">
<div class="section-header">
<h3 class="section-title">变更记录</h3>
<!-- <div class="section-actions">
<a-button type="link" size="small" @click="handleExport">导出记录</a-button>
</div> -->
</div>
<a-table :columns="columns" :data-source="dataSource" :pagination="false" :bordered="true"
class="change-record-table">
<template #empty>
<div class="empty-state">
<div class="empty-icon">📄</div>
<p class="empty-text">暂无变更记录</p>
</div>
</template>
<template #status="{ text }">
<span :class="['status-tag', getStatusClass(text)]">
{{ text }}
</span>
</template>
</a-table>
</div>
</div>
</template>
<script setup>
import { ref } from 'vue';
import { Button as AButton, Table as ATable, message } from 'ant-design-vue';
//
const columns = [
{
title: '变更类型',
dataIndex: 'type',
key: 'type',
width: 120,
},
{
title: '变更时间',
dataIndex: 'time',
key: 'time',
width: 160,
},
{
title: '变更状态',
dataIndex: 'status',
key: 'status',
width: 100,
slots: { customRender: 'status' },
},
{
title: '操作人',
dataIndex: 'operator',
key: 'operator',
width: 100,
},
{
title: '备注',
dataIndex: 'remark',
key: 'remark',
ellipsis: true,
},
];
//
const dataSource = ref([
{
key: '1',
type: '个人认证',
time: '2025-11-18 14:30:25',
status: '成功',
operator: '系统',
remark: '首次实名认证',
},
]);
const getStatusClass = (status) => {
const statusMap = {
'成功': 'status-success',
'失败': 'status-failed',
'处理中': 'status-processing',
};
return statusMap[status] || '';
};
const handleCopy = () => {
message.success('身份证号已复制');
};
const handleChangeAuth = () => {
message.info('跳转至企业认证页面');
};
const handleExport = () => {
message.info('导出变更记录');
};
</script>
<style scoped>
.real-name-auth {
padding: 24px;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
background-color: #fafafa;
min-height: 100vh;
}
/* 页面标题区域 */
.page-title-area {
margin-bottom: 32px;
}
.page-title {
margin: 0 0 12px;
font-size: 20px;
font-weight: 500;
color: #262626;
}
.page-description {
margin: 0;
color: #8c8c8c;
font-size: 14px;
line-height: 1.5;
}
.protocol-link {
color: #1890ff;
text-decoration: none;
}
.protocol-link:hover {
text-decoration: underline;
}
/* 认证卡片 */
.auth-card {
background: white;
border-radius: 8px;
padding: 24px;
margin-bottom: 24px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
border: 1px solid #f0f0f0;
}
/* 卡片内容区域 - 左右布局 */
.card-content {
display: flex;
gap: 40px;
margin-bottom: 24px;
}
/* 左侧信息区 */
.info-left {
flex: 1;
}
.card-title {
margin-bottom: 24px;
padding-bottom: 16px;
border-bottom: 1px solid #f0f0f0;
}
.auth-status {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 4px 8px;
background: #f6ffed;
border-radius: 4px;
margin-bottom: 12px;
}
.status-dot {
width: 6px;
height: 6px;
background: #52c41a;
border-radius: 50%;
}
.status-text {
color: #52c41a;
font-size: 12px;
font-weight: 500;
}
.auth-type {
margin: 0;
font-size: 16px;
font-weight: 500;
color: #262626;
}
/* 信息网格 */
.info-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 20px;
}
.info-item {
display: flex;
flex-direction: column;
}
.info-label {
color: #595959cf;
font-size: 14px;
margin-bottom: 6px;
font-weight: 400;
}
.info-value {
color: #262626;
font-size: 14px;
font-weight: 500;
display: flex;
align-items: center;
gap: 8px;
}
/* 右侧图片区 */
.image-right {
display: flex;
align-items: center;
justify-content: center;
width: 150px;
margin-top: 60px;
}
.auth-image {
width: 120px;
height: 120px;
object-fit: contain;
opacity: 0.9;
}
/* 操作按钮 */
.card-actions {
padding-top: 16px;
border-top: 1px solid #f0f0f0;
width: 200px;
}
.card-actions .ant-btn {
width: 100%;
height: 40px;
font-size: 14px;
}
/* 分割线 */
.divider {
height: 1px;
background: #f0f0f0;
margin: 32px 0;
}
/* 变更记录区域 */
.record-section {
background: white;
border-radius: 8px;
padding: 24px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
border: 1px solid #f0f0f0;
}
.section-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20px;
}
.section-title {
margin: 0;
font-size: 16px;
font-weight: 500;
color: #262626;
}
.section-actions .ant-btn-link {
color: #1890ff;
font-size: 13px;
}
/* 表格样式 */
.change-record-table {
width: 100%;
}
.change-record-table :deep(.ant-table-thead > tr > th) {
background: #fafafa;
color: #595959;
font-weight: 500;
border-bottom: 1px solid #f0f0f0;
padding: 12px 16px;
font-size: 13px;
}
.change-record-table :deep(.ant-table-tbody > tr > td) {
padding: 12px 16px;
font-size: 13px;
color: #262626;
border-bottom: 1px solid #f0f0f0;
}
.change-record-table :deep(.ant-table-tbody > tr:hover > td) {
background: #fafafa;
}
/* 状态标签 */
.status-tag {
display: inline-block;
padding: 2px 8px;
border-radius: 2px;
font-size: 12px;
font-weight: 400;
}
.status-success {
background: #f6ffed;
color: #52c41a;
}
.status-failed {
background: #fff2f0;
color: #ff4d4f;
}
.status-processing {
background: #e6f7ff;
color: #1890ff;
}
/* 空状态 */
.empty-state {
padding: 48px 0;
text-align: center;
}
.empty-icon {
font-size: 24px;
margin-bottom: 12px;
opacity: 0.3;
}
.empty-text {
color: #bfbfbf;
font-size: 14px;
margin: 0;
}
/* 响应式 */
@media (max-width: 768px) {
.real-name-auth {
padding: 16px;
}
.card-content {
flex-direction: column;
gap: 24px;
}
.info-grid {
grid-template-columns: 1fr;
gap: 16px;
}
.image-right {
width: 100%;
order: -1;
}
.auth-image {
width: 100px;
height: 100px;
}
.auth-card,
.record-section {
padding: 16px;
}
}
</style>