181 lines
7.3 KiB
Vue
181 lines
7.3 KiB
Vue
|
|
<template>
|
|||
|
|
<div class="card" style="padding-left: 0; padding-right: 0; padding-bottom: 24px;">
|
|||
|
|
<div class="flex flex-col gap-y-2">
|
|||
|
|
<!-- 报告信息 -->
|
|||
|
|
<div class="flex items-center justify-between py-2">
|
|||
|
|
<LTitle title="报告信息"></LTitle>
|
|||
|
|
<!-- 分享按钮 -->
|
|||
|
|
<ShareReportButton v-if="!isShare" :order-id="orderId" :order-no="orderNo" :is-example="!orderId"
|
|||
|
|
class="mr-4" />
|
|||
|
|
</div>
|
|||
|
|
<div class="flex flex-col gap-2 my-2 mx-4">
|
|||
|
|
<div class="flex pb-2 pl-2">
|
|||
|
|
<span class="text-[#666666] w-[6em]">报告时间:</span>
|
|||
|
|
<span class="text-gray-600">{{
|
|||
|
|
reportDateTime ||
|
|||
|
|
"2025-01-01 12:00:00"
|
|||
|
|
}}</span>
|
|||
|
|
</div>
|
|||
|
|
<div class="flex pb-2 pl-2" v-if="!isEmpty">
|
|||
|
|
<span class="text-[#666666] w-[6em]">报告项目:</span>
|
|||
|
|
<span class="text-gray-600 font-bold">
|
|||
|
|
{{ reportName }}</span>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<!-- 报告对象 -->
|
|||
|
|
<template v-if="Object.keys(reportParams).length != 0">
|
|||
|
|
<LTitle title="报告对象"></LTitle>
|
|||
|
|
<div class="flex flex-col gap-2 my-2 mx-4">
|
|||
|
|
<!-- 姓名 -->
|
|||
|
|
<div class="flex pb-2 pl-2" v-if="reportParams?.name">
|
|||
|
|
<span class="text-[#666666] w-[6em]">姓名</span>
|
|||
|
|
<span class="text-gray-600">{{
|
|||
|
|
maskValue(
|
|||
|
|
"name",
|
|||
|
|
reportParams?.name
|
|||
|
|
)
|
|||
|
|
}}</span>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<!-- 身份证号 -->
|
|||
|
|
<div class="flex pb-2 pl-2" v-if="reportParams?.id_card">
|
|||
|
|
<span class="text-[#666666] w-[6em]">身份证号</span>
|
|||
|
|
<span class="text-gray-600">{{
|
|||
|
|
maskValue(
|
|||
|
|
"id_card",
|
|||
|
|
reportParams?.id_card
|
|||
|
|
)
|
|||
|
|
}}</span>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<!-- 手机号 -->
|
|||
|
|
<div class="flex pb-2 pl-2" v-if="reportParams?.mobile">
|
|||
|
|
<span class="text-[#666666] w-[6em]">手机号</span>
|
|||
|
|
<span class="text-gray-600">{{
|
|||
|
|
maskValue(
|
|||
|
|
"mobile",
|
|||
|
|
reportParams?.mobile
|
|||
|
|
)
|
|||
|
|
}}</span>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<!-- 验证卡片 -->
|
|||
|
|
<div class="flex flex-col gap-4 mt-4">
|
|||
|
|
<!-- 身份证检查结果 -->
|
|||
|
|
<div class="flex items-center px-4 py-3 flex-1 border border-[#EEEEEE] rounded-lg bg-[#F9F9F9]">
|
|||
|
|
<div class="w-11 h-11 flex items-center justify-center mr-4">
|
|||
|
|
<img src="@/assets/images/report/sfz.png" alt="身份证" class="w-10 h-10 object-contain" />
|
|||
|
|
</div>
|
|||
|
|
<div class="flex-1">
|
|||
|
|
<div class="font-bold text-gray-800 text-lg">
|
|||
|
|
身份证检查结果
|
|||
|
|
</div>
|
|||
|
|
<div class="text-sm text-[#999999]">
|
|||
|
|
身份证信息核验通过
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="w-11 h-11 flex items-center justify-center ml-4">
|
|||
|
|
<img src="@/assets/images/report/zq.png" alt="资金安全" class="w-10 h-10 object-contain" />
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
|
|||
|
|
<!-- 手机号检测结果 -->
|
|||
|
|
<!-- <div class="flex items-center px-4 py-3 flex-1 border border-[#EEEEEE] rounded-lg bg-[#F9F9F9]">
|
|||
|
|
<div class="w-11 h-11 flex items-center justify-center mr-4">
|
|||
|
|
<img src="@/assets/images/report/sjh.png" alt="手机号" class="w-10 h-10 object-contain" />
|
|||
|
|
</div>
|
|||
|
|
<div class="flex-1">
|
|||
|
|
<div class="font-bold text-gray-800 text-lg">
|
|||
|
|
手机号检测结果
|
|||
|
|
</div>
|
|||
|
|
<div class="text-sm text-[#999999]">
|
|||
|
|
被查询人姓名与运营商提供的一致
|
|||
|
|
</div>
|
|||
|
|
<div class="text-sm text-[#999999]">
|
|||
|
|
被查询人身份证与运营商提供的一致
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="w-11 h-11 flex items-center justify-center ml-4">
|
|||
|
|
<img src="@/assets/images/report/zq.png" alt="资金安全" class="w-10 h-10 object-contain" />
|
|||
|
|
</div>
|
|||
|
|
</div> -->
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</template>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
</template>
|
|||
|
|
|
|||
|
|
<script setup>
|
|||
|
|
import LTitle from './LTitle.vue'
|
|||
|
|
import ShareReportButton from './ShareReportButton.vue'
|
|||
|
|
|
|||
|
|
const props = defineProps({
|
|||
|
|
reportParams: {
|
|||
|
|
type: Object,
|
|||
|
|
required: true
|
|||
|
|
},
|
|||
|
|
reportDateTime: {
|
|||
|
|
type: [String, null],
|
|||
|
|
required: false,
|
|||
|
|
default: null
|
|||
|
|
},
|
|||
|
|
reportName: {
|
|||
|
|
type: String,
|
|||
|
|
required: true
|
|||
|
|
},
|
|||
|
|
isEmpty: {
|
|||
|
|
type: Boolean,
|
|||
|
|
required: true
|
|||
|
|
},
|
|||
|
|
isShare: {
|
|||
|
|
type: Boolean,
|
|||
|
|
required: false,
|
|||
|
|
default: false
|
|||
|
|
},
|
|||
|
|
orderId: {
|
|||
|
|
type: [String, Number],
|
|||
|
|
required: false,
|
|||
|
|
default: null
|
|||
|
|
},
|
|||
|
|
orderNo: {
|
|||
|
|
type: String,
|
|||
|
|
required: false,
|
|||
|
|
default: null
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
// 脱敏函数
|
|||
|
|
const maskValue = (type, value) => {
|
|||
|
|
if (!value) return value;
|
|||
|
|
if (type === "name") {
|
|||
|
|
// 姓名脱敏(保留首位)
|
|||
|
|
if (value.length === 1) {
|
|||
|
|
return "*"; // 只保留一个字,返回 "*"
|
|||
|
|
} else if (value.length === 2) {
|
|||
|
|
return value[0] + "*"; // 两个字,保留姓氏,第二个字用 "*" 替代
|
|||
|
|
} else {
|
|||
|
|
return (
|
|||
|
|
value[0] +
|
|||
|
|
"*".repeat(value.length - 2) +
|
|||
|
|
value[value.length - 1]
|
|||
|
|
); // 两个字以上,保留第一个和最后一个字,其余的用 "*" 替代
|
|||
|
|
}
|
|||
|
|
} else if (type === "id_card") {
|
|||
|
|
// 身份证号脱敏(保留前6位和最后4位)
|
|||
|
|
return value.replace(/^(.{6})(?:\d+)(.{4})$/, "$1****$2");
|
|||
|
|
} else if (type === "mobile") {
|
|||
|
|
if (value.length === 11) {
|
|||
|
|
return value.substring(0, 3) + "****" + value.substring(7);
|
|||
|
|
}
|
|||
|
|
return value; // 如果手机号不合法或长度不为 11 位,直接返回原手机号
|
|||
|
|
}
|
|||
|
|
return value;
|
|||
|
|
};
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style scoped>
|
|||
|
|
/* 组件样式已通过 Tailwind CSS 类实现 */
|
|||
|
|
</style>
|