招标解析

This commit is contained in:
cwchen 2025-11-27 13:53:06 +08:00
parent 7a212705c1
commit 2a288052a4
2 changed files with 215 additions and 181 deletions

View File

@ -4,189 +4,194 @@
<!-- 头部导航 -->
<AnalysisHeader @back="handleBack" />
<!-- 一级标签页 - 占满整行 -->
<div class="main-tabs-container">
<el-tabs v-model="activeMainTab" @tab-click="handleMainTabClick" class="main-tabs">
<el-tab-pane
v-for="tab in mainTabs"
:key="tab.name"
:label="tab.label"
:name="tab.name"
/>
</el-tabs>
</div>
<!-- 主内容区域 - 左右各占50% -->
<div class="main-content">
<!-- 左侧解析结果面板包含二级tab和内容 -->
<div class="left-panel">
<AnalysisResultPanel ref="resultPanel" :main-tabs="mainTabs" :default-main-tab="activeMainTab"
:default-sub-tab="defaultSubTab" @main-tab-change="handleMainTabChange"
@sub-tab-change="handleSubTabChange" :hide-main-tabs="true" :key="activeMainTab">
<!-- 项目信息 - 招标人 -->
<template #project-tenderer>
<div class="content-section">
<div class="section-title">招标人信息</div>
<div class="section-content">{{ analysisData.tenderer || '--' }}</div>
</div>
</template>
<!-- 项目信息 - 基础信息 -->
<template #project-basic>
<div class="content-section">
<div class="section-title">基础信息</div>
<div class="section-content">{{ analysisData.basicInfo || '--' }}</div>
</div>
</template>
<!-- 项目信息 - 代理机构 -->
<template #project-agency>
<div class="content-section">
<div class="section-title">代理机构</div>
<div class="section-content">{{ analysisData.agency || '--' }}</div>
</div>
</template>
<!-- 项目信息 - 关键时间 -->
<template #project-keyTime>
<div class="content-section">
<div class="section-title">关键时间</div>
<div class="section-content">{{ analysisData.keyTime || '--' }}</div>
</div>
</template>
<!-- 项目信息 - 联合体要求 -->
<template #project-consortium>
<div class="content-section">
<div class="section-title">联合体要求</div>
<div class="section-content">{{ analysisData.consortium || '--' }}</div>
</div>
</template>
<!-- 项目信息 - 分包要求 -->
<template #project-subcontract>
<div class="content-section">
<div class="section-title">分包要求</div>
<div class="section-content">{{ analysisData.subcontract || '--' }}</div>
</div>
</template>
<!-- 项目信息 - 最高限价 -->
<template #project-maxPrice>
<div class="content-section">
<div class="section-title">最高限价</div>
<div class="section-content">{{ analysisData.maxPrice || '--' }}</div>
</div>
</template>
<!-- 项目信息 - 响应和偏差 -->
<template #project-response>
<div class="content-section">
<div class="section-title">响应和偏差要求</div>
<div class="section-content">{{ analysisData.response || '招标文件无此内容' }}</div>
</div>
<div class="content-section">
<div class="section-title">澄清要求</div>
<div class="section-content">{{ analysisData.clarification || '--' }}</div>
</div>
</template>
<!-- 标段信息 -->
<template #bid>
<div class="content-section">
<div class="section-title">标段信息</div>
<div class="section-content">{{ analysisData.bidInfo || '--' }}</div>
</div>
</template>
<!-- 保证金 - 投标保证金 -->
<template #deposit-bidDeposit>
<div class="content-section">
<div class="section-title">投标保证金金额</div>
<div class="section-content">{{ analysisData.bidDepositAmount || '--' }}</div>
</div>
<div class="content-section">
<div class="section-title">投标保证金形式</div>
<div class="section-content">{{ analysisData.bidDepositForm || '--' }}</div>
</div>
<div class="content-section">
<div class="section-title">投标保证金提交期限</div>
<div class="section-content">{{ analysisData.bidDepositSubmitDeadline || '--' }}</div>
</div>
<div class="content-section">
<div class="section-title">投标保证金退还期限</div>
<div class="section-content">{{ analysisData.bidDepositRefundDeadline || '--' }}</div>
</div>
</template>
<!-- 保证金 - 履约保证金 -->
<template #deposit-performanceDeposit>
<div class="content-section">
<div class="section-title">履约保证金</div>
<div class="section-content">{{ analysisData.performanceDeposit || '--' }}</div>
</div>
</template>
<!-- 其他标签页内容 -->
<template #qualification>
<div class="content-section">
<div class="section-title">资格要求</div>
<div class="section-content">{{ analysisData.qualification || '--' }}</div>
</div>
</template>
<template #performance>
<div class="content-section">
<div class="section-title">业绩要求</div>
<div class="section-content">{{ analysisData.performance || '--' }}</div>
</div>
</template>
<template #finance>
<div class="content-section">
<div class="section-title">财务要求</div>
<div class="section-content">{{ analysisData.finance || '--' }}</div>
</div>
</template>
<template #personnel>
<div class="content-section">
<div class="section-title">人员要求</div>
<div class="section-content">{{ analysisData.personnel || '--' }}</div>
</div>
</template>
<template #evaluation>
<div class="content-section">
<div class="section-title">开评定标要求</div>
<div class="section-content">{{ analysisData.evaluation || '--' }}</div>
</div>
</template>
<template #rejection>
<div class="content-section">
<div class="section-title">废标项</div>
<div class="section-content">{{ analysisData.rejection || '--' }}</div>
</div>
</template>
<template #document>
<div class="content-section">
<div class="section-title">投标文件要求</div>
<div class="section-content">{{ analysisData.document || '--' }}</div>
</div>
</template>
</AnalysisResultPanel>
<el-card>
<!-- 解析结果标题 -->
<div class="result-header">
<img src="@/assets/enterpriseLibrary/basic-info.png" alt="基本信息">
<h3>解析结果</h3>
</div>
<!-- 右侧文档预览面板 -->
<div class="right-panel">
<DocumentPreviewPanel :tender-document-url="tenderDocumentUrl"
:tender-document-title="tenderDocumentTitle" :tender-document-key="tenderDocumentKey"
:bid-document-url="bidDocumentUrl" :bid-document-title="bidDocumentTitle"
:bid-document-key="bidDocumentKey" @document-switch="handleDocumentSwitch" @search="handleSearch" />
<!-- 一级标签页 - 占满整行 -->
<div class="main-tabs-container">
<el-tabs v-model="activeMainTab" @tab-click="handleMainTabClick" class="main-tabs">
<el-tab-pane v-for="tab in mainTabs" :key="tab.name" :label="tab.label" :name="tab.name" />
</el-tabs>
</div>
</div>
<!-- 主内容区域 - 左右各占50% -->
<div class="main-content">
<!-- 左侧解析结果面板包含二级tab和内容 -->
<div class="left-panel">
<AnalysisResultPanel ref="resultPanel" :main-tabs="mainTabs" :default-main-tab="activeMainTab"
:default-sub-tab="defaultSubTab" @main-tab-change="handleMainTabChange"
@sub-tab-change="handleSubTabChange" :hide-main-tabs="true" :hide-header="true"
:key="activeMainTab">
<!-- 项目信息 - 招标人 -->
<template #project-tenderer>
<div class="content-section">
<div class="section-title">招标人信息</div>
<div class="section-content">{{ analysisData.tenderer || '--' }}</div>
</div>
</template>
<!-- 项目信息 - 基础信息 -->
<template #project-basic>
<div class="content-section">
<div class="section-title">基础信息</div>
<div class="section-content">{{ analysisData.basicInfo || '--' }}</div>
</div>
</template>
<!-- 项目信息 - 代理机构 -->
<template #project-agency>
<div class="content-section">
<div class="section-title">代理机构</div>
<div class="section-content">{{ analysisData.agency || '--' }}</div>
</div>
</template>
<!-- 项目信息 - 关键时间 -->
<template #project-keyTime>
<div class="content-section">
<div class="section-title">关键时间</div>
<div class="section-content">{{ analysisData.keyTime || '--' }}</div>
</div>
</template>
<!-- 项目信息 - 联合体要求 -->
<template #project-consortium>
<div class="content-section">
<div class="section-title">联合体要求</div>
<div class="section-content">{{ analysisData.consortium || '--' }}</div>
</div>
</template>
<!-- 项目信息 - 分包要求 -->
<template #project-subcontract>
<div class="content-section">
<div class="section-title">分包要求</div>
<div class="section-content">{{ analysisData.subcontract || '--' }}</div>
</div>
</template>
<!-- 项目信息 - 最高限价 -->
<template #project-maxPrice>
<div class="content-section">
<div class="section-title">最高限价</div>
<div class="section-content">{{ analysisData.maxPrice || '--' }}</div>
</div>
</template>
<!-- 项目信息 - 响应和偏差 -->
<template #project-response>
<div class="content-section">
<div class="section-title">响应和偏差要求</div>
<div class="section-content">{{ analysisData.response || '招标文件无此内容' }}</div>
</div>
<div class="content-section">
<div class="section-title">澄清要求</div>
<div class="section-content">{{ analysisData.clarification || '--' }}</div>
</div>
</template>
<!-- 标段信息 -->
<template #bid>
<div class="content-section">
<div class="section-title">标段信息</div>
<div class="section-content">{{ analysisData.bidInfo || '--' }}</div>
</div>
</template>
<!-- 保证金 - 投标保证金 -->
<template #deposit-bidDeposit>
<div class="content-section">
<div class="section-title">投标保证金金额</div>
<div class="section-content">{{ analysisData.bidDepositAmount || '--' }}</div>
</div>
<div class="content-section">
<div class="section-title">投标保证金形式</div>
<div class="section-content">{{ analysisData.bidDepositForm || '--' }}</div>
</div>
<div class="content-section">
<div class="section-title">投标保证金提交期限</div>
<div class="section-content">{{ analysisData.bidDepositSubmitDeadline || '--' }}</div>
</div>
<div class="content-section">
<div class="section-title">投标保证金退还期限</div>
<div class="section-content">{{ analysisData.bidDepositRefundDeadline || '--' }}</div>
</div>
</template>
<!-- 保证金 - 履约保证金 -->
<template #deposit-performanceDeposit>
<div class="content-section">
<div class="section-title">履约保证金</div>
<div class="section-content">{{ analysisData.performanceDeposit || '--' }}</div>
</div>
</template>
<!-- 其他标签页内容 -->
<template #qualification>
<div class="content-section">
<div class="section-title">资格要求</div>
<div class="section-content">{{ analysisData.qualification || '--' }}</div>
</div>
</template>
<template #performance>
<div class="content-section">
<div class="section-title">业绩要求</div>
<div class="section-content">{{ analysisData.performance || '--' }}</div>
</div>
</template>
<template #finance>
<div class="content-section">
<div class="section-title">财务要求</div>
<div class="section-content">{{ analysisData.finance || '--' }}</div>
</div>
</template>
<template #personnel>
<div class="content-section">
<div class="section-title">人员要求</div>
<div class="section-content">{{ analysisData.personnel || '--' }}</div>
</div>
</template>
<template #evaluation>
<div class="content-section">
<div class="section-title">开评定标要求</div>
<div class="section-content">{{ analysisData.evaluation || '--' }}</div>
</div>
</template>
<template #rejection>
<div class="content-section">
<div class="section-title">废标项</div>
<div class="section-content">{{ analysisData.rejection || '--' }}</div>
</div>
</template>
<template #document>
<div class="content-section">
<div class="section-title">投标文件要求</div>
<div class="section-content">{{ analysisData.document || '--' }}</div>
</div>
</template>
</AnalysisResultPanel>
</div>
<!-- 右侧文档预览面板 -->
<div class="right-panel">
<DocumentPreviewPanel :tender-document-url="tenderDocumentUrl"
:tender-document-title="tenderDocumentTitle" :tender-document-key="tenderDocumentKey"
:bid-document-url="bidDocumentUrl" :bid-document-title="bidDocumentTitle"
:bid-document-key="bidDocumentKey" @document-switch="handleDocumentSwitch"
@search="handleSearch" />
</div>
</div>
</el-card>
</div>
</template>
@ -368,6 +373,30 @@ export default {
background: linear-gradient(180deg, #F1F6FF 0%, #E5EFFF 100%);
overflow: hidden;
//
.result-header {
flex-shrink: 0;
padding: 16px 20px;
border-bottom: 1px solid #EBEEF5;
background: #FFFFFF;
display: flex;
align-items: center;
gap: 8px;
img {
width: 34px;
height: 34px;
object-fit: contain;
}
h3 {
margin: 0;
font-size: 18px;
font-weight: 600;
color: #303133;
}
}
// -
.main-tabs-container {
flex-shrink: 0;

View File

@ -1,7 +1,7 @@
<!-- 解析结果面板 -->
<template>
<div class="analysis-result-panel">
<div class="panel-header">
<div class="panel-header" v-if="!hideHeader">
<h3>解析结果</h3>
</div>
<div class="panel-content">
@ -143,6 +143,11 @@ export default {
hideMainTabs: {
type: Boolean,
default: false
},
//
hideHeader: {
type: Boolean,
default: false
}
},
data() {