2025-07-30 09:13:52 +08:00
|
|
|
|
<template>
|
|
|
|
|
<GiPageLayout>
|
|
|
|
|
<div class="my-insurance-container">
|
|
|
|
|
<!-- 页面标题 -->
|
|
|
|
|
<div class="page-header">
|
|
|
|
|
<h2 class="page-title">我的保险信息</h2>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- 保险信息表格 -->
|
|
|
|
|
<a-card class="insurance-table-card" :bordered="false">
|
2025-08-04 17:10:11 +08:00
|
|
|
|
<a-table
|
|
|
|
|
:columns="insuranceColumns"
|
2025-07-30 09:13:52 +08:00
|
|
|
|
:data="insuranceData"
|
|
|
|
|
:pagination="false"
|
|
|
|
|
row-key="id"
|
|
|
|
|
>
|
|
|
|
|
<template #type="{ record }">
|
2025-08-04 17:10:11 +08:00
|
|
|
|
<a-tag
|
2025-07-30 09:13:52 +08:00
|
|
|
|
:color="record.type === '医疗保险' ? 'blue' : record.type === '意外险' ? 'green' : 'orange'"
|
|
|
|
|
>
|
|
|
|
|
{{ record.type }}
|
|
|
|
|
</a-tag>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<template #status="{ record }">
|
2025-08-04 17:10:11 +08:00
|
|
|
|
<a-tag
|
2025-07-30 09:13:52 +08:00
|
|
|
|
:color="record.status === '有效' ? 'green' : 'red'"
|
|
|
|
|
>
|
|
|
|
|
{{ record.status }}
|
|
|
|
|
</a-tag>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<template #action="{ record }">
|
2025-08-04 17:10:11 +08:00
|
|
|
|
<a-button
|
|
|
|
|
type="primary"
|
|
|
|
|
size="small"
|
2025-07-30 09:13:52 +08:00
|
|
|
|
@click="handleViewDetails(record)"
|
|
|
|
|
>
|
|
|
|
|
查看详情
|
|
|
|
|
</a-button>
|
|
|
|
|
</template>
|
|
|
|
|
</a-table>
|
|
|
|
|
</a-card>
|
|
|
|
|
|
|
|
|
|
<!-- 查看详情弹窗 -->
|
|
|
|
|
<a-modal
|
|
|
|
|
v-model:visible="detailModalVisible"
|
|
|
|
|
title="保险详情"
|
|
|
|
|
width="800px"
|
|
|
|
|
>
|
2025-08-04 17:10:11 +08:00
|
|
|
|
<div class="detail-content" v-if="selectedRecord">
|
2025-07-30 09:13:52 +08:00
|
|
|
|
<div class="detail-item">
|
|
|
|
|
<span class="detail-label">保险公司:</span>
|
|
|
|
|
<span class="detail-value">{{ selectedRecord.company }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="detail-item">
|
|
|
|
|
<span class="detail-label">保险类型:</span>
|
|
|
|
|
<span class="detail-value">{{ selectedRecord.type }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="detail-item">
|
|
|
|
|
<span class="detail-label">保单号:</span>
|
|
|
|
|
<span class="detail-value">{{ selectedRecord.policyNo }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="detail-item">
|
|
|
|
|
<span class="detail-label">生效日期:</span>
|
|
|
|
|
<span class="detail-value">{{ selectedRecord.startDate }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="detail-item">
|
|
|
|
|
<span class="detail-label">到期日期:</span>
|
|
|
|
|
<span class="detail-value">{{ selectedRecord.endDate }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="detail-item">
|
|
|
|
|
<span class="detail-label">状态:</span>
|
|
|
|
|
<span class="detail-value">{{ selectedRecord.status }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="detail-item">
|
|
|
|
|
<span class="detail-label">保险金额:</span>
|
|
|
|
|
<span class="detail-value">{{ selectedRecord.amount }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="detail-item">
|
|
|
|
|
<span class="detail-label">保险范围:</span>
|
|
|
|
|
<span class="detail-value">{{ selectedRecord.coverage }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="detail-item">
|
|
|
|
|
<span class="detail-label">受益人:</span>
|
|
|
|
|
<span class="detail-value">{{ selectedRecord.beneficiary }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="detail-item">
|
|
|
|
|
<span class="detail-label">备注:</span>
|
|
|
|
|
<span class="detail-value">{{ selectedRecord.remark }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</a-modal>
|
|
|
|
|
</div>
|
|
|
|
|
</GiPageLayout>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
|
|
import { ref } from 'vue'
|
|
|
|
|
|
|
|
|
|
// 保险信息表格列配置
|
|
|
|
|
const insuranceColumns = [
|
|
|
|
|
{ title: '保险公司', dataIndex: 'company', width: 150 },
|
|
|
|
|
{ title: '保险类型', dataIndex: 'type', slotName: 'type', width: 120 },
|
|
|
|
|
{ title: '保单号', dataIndex: 'policyNo', width: 150 },
|
|
|
|
|
{ title: '生效日期', dataIndex: 'startDate', width: 120 },
|
|
|
|
|
{ title: '到期日期', dataIndex: 'endDate', width: 120 },
|
|
|
|
|
{ title: '状态', dataIndex: 'status', slotName: 'status', width: 100 },
|
2025-08-04 17:10:11 +08:00
|
|
|
|
{ title: '操作', slotName: 'action', width: 120 }
|
2025-07-30 09:13:52 +08:00
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
// 保险信息数据
|
|
|
|
|
const insuranceData = ref([
|
|
|
|
|
{
|
|
|
|
|
id: 1,
|
|
|
|
|
company: '中国人寿',
|
|
|
|
|
type: '医疗保险',
|
|
|
|
|
policyNo: 'CL12345678',
|
|
|
|
|
startDate: '2023-01-01',
|
|
|
|
|
endDate: '2023-12-31',
|
|
|
|
|
status: '有效',
|
|
|
|
|
amount: '50万元',
|
|
|
|
|
coverage: '住院医疗、门诊医疗、重大疾病',
|
|
|
|
|
beneficiary: '法定继承人',
|
2025-08-04 17:10:11 +08:00
|
|
|
|
remark: '企业统一购买,覆盖基本医疗保险'
|
2025-07-30 09:13:52 +08:00
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 2,
|
|
|
|
|
company: '平安保险',
|
|
|
|
|
type: '意外险',
|
|
|
|
|
policyNo: 'PA87654321',
|
|
|
|
|
startDate: '2023-01-01',
|
|
|
|
|
endDate: '2023-12-31',
|
|
|
|
|
status: '有效',
|
|
|
|
|
amount: '100万元',
|
|
|
|
|
coverage: '意外伤害、意外医疗、交通意外',
|
|
|
|
|
beneficiary: '法定继承人',
|
2025-08-04 17:10:11 +08:00
|
|
|
|
remark: '个人购买,工作期间意外保障'
|
2025-07-30 09:13:52 +08:00
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 3,
|
|
|
|
|
company: '泰康保险',
|
|
|
|
|
type: '养老保险',
|
|
|
|
|
policyNo: 'TK33445566',
|
|
|
|
|
startDate: '2022-01-01',
|
|
|
|
|
endDate: '2042-12-31',
|
|
|
|
|
status: '有效',
|
|
|
|
|
amount: '200万元',
|
|
|
|
|
coverage: '养老金、年金给付',
|
|
|
|
|
beneficiary: '法定继承人',
|
2025-08-04 17:10:11 +08:00
|
|
|
|
remark: '企业年金计划,长期养老保障'
|
|
|
|
|
}
|
2025-07-30 09:13:52 +08:00
|
|
|
|
])
|
|
|
|
|
|
|
|
|
|
// 弹窗状态
|
|
|
|
|
const detailModalVisible = ref(false)
|
|
|
|
|
const selectedRecord = ref<any>(null)
|
|
|
|
|
|
|
|
|
|
// 查看详情
|
|
|
|
|
const handleViewDetails = (record: any) => {
|
|
|
|
|
selectedRecord.value = record
|
|
|
|
|
detailModalVisible.value = true
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style scoped>
|
|
|
|
|
.my-insurance-container {
|
|
|
|
|
padding: 20px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.page-header {
|
|
|
|
|
margin-bottom: 20px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.page-title {
|
|
|
|
|
font-size: 24px;
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
color: #1d2129;
|
|
|
|
|
margin: 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.insurance-table-card {
|
|
|
|
|
background: white;
|
|
|
|
|
border-radius: 8px;
|
|
|
|
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.detail-content {
|
|
|
|
|
padding: 20px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.detail-item {
|
|
|
|
|
display: flex;
|
|
|
|
|
margin-bottom: 16px;
|
|
|
|
|
align-items: flex-start;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.detail-label {
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
width: 120px;
|
|
|
|
|
flex-shrink: 0;
|
|
|
|
|
color: #1d2129;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.detail-value {
|
|
|
|
|
color: #4e5969;
|
|
|
|
|
word-break: break-word;
|
|
|
|
|
}
|
2025-08-04 17:10:11 +08:00
|
|
|
|
</style>
|