f
This commit is contained in:
BIN
src/assets/images/reporthead/daiqian-banner.png
Normal file
BIN
src/assets/images/reporthead/daiqian-banner.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 745 KiB |
BIN
src/assets/images/reporthead/old/daiqian-banner.png
Normal file
BIN
src/assets/images/reporthead/old/daiqian-banner.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 MiB |
BIN
src/assets/images/reporthead/old/person-banner.png
Normal file
BIN
src/assets/images/reporthead/old/person-banner.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 MiB |
BIN
src/assets/images/reporthead/person-banner.png
Normal file
BIN
src/assets/images/reporthead/person-banner.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 803 KiB |
@@ -1,12 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="header-section">
|
<div class="header-section" :style="bannerStyle">
|
||||||
<div class="header-left">
|
<div class="header-left">
|
||||||
<h1>海宇个人风险报告</h1>
|
<h1>海宇个人风险报告</h1>
|
||||||
<p>多维度大数据风险分析</p>
|
<p>多维度大数据风险分析</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="header-middle">
|
|
||||||
<div class="shield-icon">🛡️</div>
|
|
||||||
</div>
|
|
||||||
<div class="header-right">
|
<div class="header-right">
|
||||||
<div>报告编号: {{ reportNo }}</div>
|
<div>报告编号: {{ reportNo }}</div>
|
||||||
<div>生成时间: {{ displayTime }}</div>
|
<div>生成时间: {{ displayTime }}</div>
|
||||||
@@ -17,11 +14,16 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { computed } from 'vue';
|
import { computed } from 'vue';
|
||||||
|
import personBanner from '@/assets/images/reporthead/person-banner.png';
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
reportTime: { type: String, default: '' },
|
reportTime: { type: String, default: '' },
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const bannerStyle = computed(() => ({
|
||||||
|
backgroundImage: `url(${personBanner})`,
|
||||||
|
}));
|
||||||
|
|
||||||
const reportNo = computed(() => {
|
const reportNo = computed(() => {
|
||||||
const d = new Date();
|
const d = new Date();
|
||||||
return `RPT${d.getFullYear()}${String(d.getMonth() + 1).padStart(2, '0')}${String(d.getDate()).padStart(2, '0')}001`;
|
return `RPT${d.getFullYear()}${String(d.getMonth() + 1).padStart(2, '0')}${String(d.getDate()).padStart(2, '0')}001`;
|
||||||
@@ -51,10 +53,24 @@ function formatDateTime(date) {
|
|||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.header-section {
|
.header-section {
|
||||||
|
position: relative;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
margin-bottom: 30px;
|
margin-bottom: 30px;
|
||||||
|
padding: 28px 32px;
|
||||||
|
border-radius: 12px;
|
||||||
|
overflow: hidden;
|
||||||
|
aspect-ratio: 8 / 1;
|
||||||
|
background-size: cover;
|
||||||
|
background-position: center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-left,
|
||||||
|
.header-right {
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.header-left h1 {
|
.header-left h1 {
|
||||||
@@ -62,46 +78,32 @@ function formatDateTime(date) {
|
|||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
color: #1a202c;
|
color: #1a202c;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
text-shadow: 0 1px 2px rgba(255, 255, 255, 0.6);
|
||||||
}
|
}
|
||||||
|
|
||||||
.header-left p {
|
.header-left p {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
color: #4a5568;
|
color: #2d3748;
|
||||||
margin: 8px 0 0;
|
margin: 8px 0 0;
|
||||||
}
|
text-shadow: 0 1px 2px rgba(255, 255, 255, 0.6);
|
||||||
|
|
||||||
.header-middle {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.shield-icon {
|
|
||||||
width: 120px;
|
|
||||||
height: 120px;
|
|
||||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
||||||
clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
color: white;
|
|
||||||
font-size: 48px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.header-right {
|
.header-right {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
color: #4a5568;
|
color: #2d3748;
|
||||||
line-height: 1.8;
|
line-height: 1.8;
|
||||||
|
text-shadow: 0 1px 2px rgba(255, 255, 255, 0.6);
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
.header-section {
|
.header-section {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
|
justify-content: center;
|
||||||
gap: 16px;
|
gap: 16px;
|
||||||
}
|
padding: 24px 20px;
|
||||||
|
aspect-ratio: 6 / 1;
|
||||||
.header-middle {
|
|
||||||
align-self: center;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.header-right {
|
.header-right {
|
||||||
|
|||||||
108
src/ui/DWBG9FB3/components/ReportHeaderSection.vue
Normal file
108
src/ui/DWBG9FB3/components/ReportHeaderSection.vue
Normal file
@@ -0,0 +1,108 @@
|
|||||||
|
<template>
|
||||||
|
<div class="header-section" :style="bannerStyle">
|
||||||
|
<div class="header-left">
|
||||||
|
<h1>海宇贷前风险档案</h1>
|
||||||
|
<p>多维度大数据风险分析</p>
|
||||||
|
</div>
|
||||||
|
<div class="header-right">
|
||||||
|
<div>报告输出时间: {{ displayTime }}</div>
|
||||||
|
<div>报告版本: V1.0</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { computed } from 'vue';
|
||||||
|
import personBanner from '@/assets/images/reporthead/daiqian-banner.png';
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
reportTime: { type: String, default: '' },
|
||||||
|
});
|
||||||
|
|
||||||
|
const bannerStyle = computed(() => ({
|
||||||
|
backgroundImage: `url(${personBanner})`,
|
||||||
|
}));
|
||||||
|
|
||||||
|
const displayTime = computed(() => {
|
||||||
|
if (!props.reportTime) {
|
||||||
|
return formatDateTime(new Date());
|
||||||
|
}
|
||||||
|
const parsed = new Date(props.reportTime);
|
||||||
|
if (!Number.isNaN(parsed.getTime())) {
|
||||||
|
return formatDateTime(parsed);
|
||||||
|
}
|
||||||
|
return props.reportTime;
|
||||||
|
});
|
||||||
|
|
||||||
|
function formatDateTime(date) {
|
||||||
|
const y = date.getFullYear();
|
||||||
|
const m = String(date.getMonth() + 1).padStart(2, '0');
|
||||||
|
const d = String(date.getDate()).padStart(2, '0');
|
||||||
|
const h = String(date.getHours()).padStart(2, '0');
|
||||||
|
const min = String(date.getMinutes()).padStart(2, '0');
|
||||||
|
const s = String(date.getSeconds()).padStart(2, '0');
|
||||||
|
return `${y}-${m}-${d} ${h}:${min}:${s}`;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.header-section {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
padding: 28px 32px;
|
||||||
|
border-radius: 12px;
|
||||||
|
overflow: hidden;
|
||||||
|
aspect-ratio: 8 / 1;
|
||||||
|
background-size: cover;
|
||||||
|
background-position: center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-left,
|
||||||
|
.header-right {
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-left h1 {
|
||||||
|
font-size: 32px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: #1a202c;
|
||||||
|
margin: 0;
|
||||||
|
text-shadow: 0 1px 2px rgba(255, 255, 255, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-left p {
|
||||||
|
font-size: 16px;
|
||||||
|
color: #2d3748;
|
||||||
|
margin: 8px 0 0;
|
||||||
|
text-shadow: 0 1px 2px rgba(255, 255, 255, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-right {
|
||||||
|
text-align: right;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #2d3748;
|
||||||
|
line-height: 1.8;
|
||||||
|
text-shadow: 0 1px 2px rgba(255, 255, 255, 0.6);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.header-section {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
justify-content: center;
|
||||||
|
gap: 16px;
|
||||||
|
padding: 24px 20px;
|
||||||
|
aspect-ratio: 6 / 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-right {
|
||||||
|
text-align: left;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -1,10 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="gamma-report">
|
<div class="gamma-report">
|
||||||
<div ref="reportRef" class="gamma-container">
|
<div ref="reportRef" class="gamma-container">
|
||||||
<div class="report-header">
|
<ReportHeaderSection :report-time="reportTime" />
|
||||||
<div class="report-title">海宇贷前风险档案</div>
|
|
||||||
<div class="report-time">报告输出时间: {{ reportTime }}</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<RiskAssessmentSection
|
<RiskAssessmentSection
|
||||||
:risk-level="root.riskLevel"
|
:risk-level="root.riskLevel"
|
||||||
@@ -49,6 +46,7 @@ import OverdueSurveySection from './components/OverdueSurveySection.vue';
|
|||||||
import CreditPanoramaSection from './components/CreditPanoramaSection.vue';
|
import CreditPanoramaSection from './components/CreditPanoramaSection.vue';
|
||||||
import LoanIntentSection from './components/LoanIntentSection.vue';
|
import LoanIntentSection from './components/LoanIntentSection.vue';
|
||||||
import JudicialCaseSection from './components/JudicialCaseSection.vue';
|
import JudicialCaseSection from './components/JudicialCaseSection.vue';
|
||||||
|
import ReportHeaderSection from './components/ReportHeaderSection.vue';
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
data: { type: Object, default: () => ({}) },
|
data: { type: Object, default: () => ({}) },
|
||||||
@@ -75,28 +73,6 @@ const reportTime = computed(
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.report-header {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
margin-bottom: 24px;
|
|
||||||
background: #fff;
|
|
||||||
border-radius: 12px;
|
|
||||||
padding: 24px;
|
|
||||||
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.05);
|
|
||||||
}
|
|
||||||
|
|
||||||
.report-title {
|
|
||||||
font-size: 24px;
|
|
||||||
font-weight: 600;
|
|
||||||
color: #8b4513;
|
|
||||||
}
|
|
||||||
|
|
||||||
.report-time {
|
|
||||||
font-size: 14px;
|
|
||||||
color: #666;
|
|
||||||
}
|
|
||||||
|
|
||||||
.report-toolbar {
|
.report-toolbar {
|
||||||
max-width: 1200px;
|
max-width: 1200px;
|
||||||
margin: 0 auto 16px;
|
margin: 0 auto 16px;
|
||||||
@@ -145,7 +121,7 @@ const reportTime = computed(
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
.report-header {
|
.report-toolbar {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
|
|||||||
Reference in New Issue
Block a user