2026-03-04 10:31:59 +08:00
|
|
|
<template>
|
|
|
|
|
<div class="preliminary-check-container">
|
2026-03-19 10:35:40 +08:00
|
|
|
<div v-if="pageState === 'loading'" class="preliminary-check-state">
|
2026-03-19 10:39:24 +08:00
|
|
|
<div class="state-card">
|
|
|
|
|
<el-skeleton animated :rows="6" />
|
|
|
|
|
</div>
|
2026-03-19 10:35:40 +08:00
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div v-else-if="pageState === 'empty'" class="preliminary-check-state">
|
2026-03-19 10:39:24 +08:00
|
|
|
<div class="state-card">
|
|
|
|
|
<el-empty description="暂无结果总览数据" />
|
|
|
|
|
</div>
|
2026-03-19 10:35:40 +08:00
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div v-else class="preliminary-check-page">
|
2026-03-19 10:39:24 +08:00
|
|
|
<overview-stats :summary="currentData.summary" />
|
|
|
|
|
<risk-people-section :section-data="currentData.riskPeople" />
|
|
|
|
|
<risk-model-section :section-data="currentData.riskModels" />
|
|
|
|
|
<risk-detail-section :section-data="currentData.riskDetails" />
|
2026-03-04 10:31:59 +08:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
2026-03-19 10:39:24 +08:00
|
|
|
import { mockOverviewData, mockOverviewStateData } from "./preliminaryCheck.mock";
|
2026-03-19 10:36:45 +08:00
|
|
|
import OverviewStats from "./OverviewStats";
|
|
|
|
|
import RiskPeopleSection from "./RiskPeopleSection";
|
2026-03-19 10:37:53 +08:00
|
|
|
import RiskModelSection from "./RiskModelSection";
|
|
|
|
|
import RiskDetailSection from "./RiskDetailSection";
|
2026-03-19 10:35:40 +08:00
|
|
|
|
2026-03-04 10:31:59 +08:00
|
|
|
export default {
|
|
|
|
|
name: "PreliminaryCheck",
|
2026-03-19 10:35:40 +08:00
|
|
|
components: {
|
|
|
|
|
OverviewStats,
|
|
|
|
|
RiskPeopleSection,
|
|
|
|
|
RiskModelSection,
|
|
|
|
|
RiskDetailSection,
|
|
|
|
|
},
|
2026-03-04 10:31:59 +08:00
|
|
|
props: {
|
|
|
|
|
projectId: {
|
|
|
|
|
type: [String, Number],
|
|
|
|
|
default: null,
|
|
|
|
|
},
|
|
|
|
|
projectInfo: {
|
|
|
|
|
type: Object,
|
|
|
|
|
default: () => ({
|
|
|
|
|
projectName: "",
|
|
|
|
|
updateTime: "",
|
|
|
|
|
projectStatus: "0",
|
|
|
|
|
}),
|
|
|
|
|
},
|
|
|
|
|
},
|
2026-03-19 10:35:40 +08:00
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
pageState: "loaded",
|
|
|
|
|
mockData: mockOverviewData,
|
2026-03-19 10:39:24 +08:00
|
|
|
stateDataMap: mockOverviewStateData,
|
2026-03-19 10:35:40 +08:00
|
|
|
};
|
|
|
|
|
},
|
2026-03-19 10:39:24 +08:00
|
|
|
computed: {
|
|
|
|
|
currentData() {
|
|
|
|
|
return this.stateDataMap[this.pageState] || this.mockData;
|
|
|
|
|
},
|
|
|
|
|
},
|
2026-03-04 10:31:59 +08:00
|
|
|
};
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
.preliminary-check-container {
|
|
|
|
|
min-height: 400px;
|
2026-03-19 10:39:24 +08:00
|
|
|
padding: 16px 0 24px;
|
|
|
|
|
background: #f3f6fb;
|
2026-03-04 10:31:59 +08:00
|
|
|
}
|
|
|
|
|
|
2026-03-19 10:35:40 +08:00
|
|
|
.preliminary-check-state {
|
2026-03-19 10:39:24 +08:00
|
|
|
min-height: 400px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.state-card {
|
|
|
|
|
padding: 32px 24px;
|
|
|
|
|
border-radius: 16px;
|
2026-03-19 10:35:40 +08:00
|
|
|
background: #fff;
|
2026-03-19 10:39:24 +08:00
|
|
|
box-shadow: 0 8px 24px rgba(15, 23, 42, 0.06);
|
2026-03-19 10:35:40 +08:00
|
|
|
}
|
2026-03-04 10:31:59 +08:00
|
|
|
|
2026-03-19 10:35:40 +08:00
|
|
|
.preliminary-check-page {
|
|
|
|
|
min-height: 400px;
|
2026-03-04 10:31:59 +08:00
|
|
|
}
|
|
|
|
|
</style>
|