招标解析

This commit is contained in:
cwchen 2025-11-05 17:18:34 +08:00
parent 772f589465
commit 2f1aa8380d
4 changed files with 260 additions and 4 deletions

View File

@ -527,6 +527,20 @@ export const dynamicRoutes = [
} }
] ]
}, },
{
path: '/analysisBid',
component: Layout,
hidden: true,
permissions: ['enterpriseLibrary:analysis:detail'],
children: [
{
path: 'index',
component: () => import('@/views/analysis/components/AnalysisBidIndex'),
name: 'AnalysisBidIndex',
meta: { title: '标段信息', activeMenu: '/analysis', noCache: true }
}
]
},
] ]
// 防止连续点击多次路由报错 // 防止连续点击多次路由报错

View File

@ -0,0 +1,189 @@
<template>
<!-- 招标解析标段 -->
<el-card class="analysis-container">
<div class="back-container">
<el-button type="default" size="small" @click="handleBack" class="back-btn">
返回
</el-button>
</div>
<div class="table-container">
<TableModel
:formLabel="bidFormLabel"
:showOperation="true"
:showRightTools="false"
ref="analysisTableRef"
:columnsList="bidListColumnsList"
:request-api="listAPI"
:sendParams="sendParams"
:handleColWidth="200"
>
<template slot="tableTitle">
<h3>数据列表</h3>
</template>
<template slot="handle" slot-scope="{ data }">
<el-button type="text" v-hasPermi="['enterpriseLibrary:analysis:detail']" class="action-btn"
@click="handleBidDetail(data)">
标段解析
</el-button>
<el-button type="text" v-hasPermi="['enterpriseLibrary:analysis:detail']" class="action-btn"
@click="handleDetail(data)">
查看
</el-button>
</template>
</TableModel>
</div>
</el-card>
</template>
<script>
import TableModel from '@/components/TableModel2'
import { bidListColumnsList, bidFormLabel } from '../config'
import { encryptWithSM4 } from '@/utils/sm'
import { listAPI, delDataAPI } from '@/api/analysis/analysis'
export default {
name: 'AnalysisBidIndex',
components: {
TableModel,
},
data() {
return {
bidFormLabel,
bidListColumnsList,
listAPI,
sendParams: {
enterpriseId: 2
},
}
},
created() {
},
methods: {
/** 新增按钮操作 */
handleAdd() {
this.title = "新建项目";
this.showAnalysisForm = true;
},
/** 修改操作 */
handleUpdate(row) {
this.title = "修改项目";
this.isAdd = 'edit';
this.row = row;
this.isflag = true;
},
/* 查看操作 */
handleDetail(row) {
this.$router.push({
name: 'AnalysisDetail',
query: {
proId: encryptWithSM4('2')
}
})
},
/** 标段解析操作 */
handleBidDetail(row) {
this.$router.push({
name: 'AnalysisBidDetail',
query: {
proId: encryptWithSM4('2')
}
})
},
/** 查看标段操作 */
handleBidListDetail(row) {
this.$router.push({
name: 'AnalysisBidIndex',
query: {
proId: encryptWithSM4('2')
}
})
},
/* 搜索操作 */
handleQuery() {
this.$refs.analysisTableRef.getTableList()
},
//
handleBack() {
const obj = {
path: "/analysis",
}
this.$tab.closeOpenPage(obj)
},
},
}
</script>
<style scoped lang="scss">
.analysis-container {
height: calc(100vh - 84px);
overflow: hidden;
background: linear-gradient(180deg, #F1F6FF 20%, #E5EFFF 100%);
}
::v-deep .table-card {
height: calc(100vh - 230px) !important;
}
.add-btn {
width: 121px;
height: 36px;
background: #1F72EA;
box-shadow: 0px 4px 8px 0px rgba(51, 135, 255, 0.5);
border-radius: 4px 4px 4px 4px;
color: #fff;
border: none;
font-size: 14px;
transition: all 0.3s;
&:hover {
background: #4A8BFF;
box-shadow: 0px 6px 12px 0px rgba(51, 135, 255, 0.6);
}
}
.action-btn {
margin-right: 8px;
&:last-child {
margin-right: 0;
}
}
.back-container {
display: flex;
justify-content: flex-end;
align-items: center;
margin-bottom: 20px;
padding: 0 20px;
.back-btn {
width: 98px;
height: 36px;
background: #FFFFFF;
box-shadow: 0px 4px 8px 0px rgba(76, 76, 76, 0.2);
border-radius: 4px;
border: none;
color: #666;
font-size: 14px;
transition: all 0.3s ease;
&:hover {
background: #f5f5f5;
color: #409EFF;
box-shadow: 0px 6px 12px 0px rgba(76, 76, 76, 0.3);
}
}
}
.table-container{
::v-deep .el-card.table-card.is-always-shadow{
height: calc(100vh - 285px) !important;
}
}
</style>

View File

@ -25,6 +25,37 @@ export const formLabel = [
}, },
] ]
export const bidFormLabel = [
{
isShow: false, // 是否展示label
f_type: 'ipt',
f_label: '标的名称',
f_model: 'proName',
f_max: 32,
f_width: '250px',
},
{
isShow: false, // 是否展示label
f_type: 'ipt',
f_label: '标段名称',
f_model: 'personName',
f_max: 32,
f_width: '250px',
},
{
isShow: false, // 是否展示label
f_type: 'sel',
f_label: '解析状态',
f_model: 'analysisStatus',
f_selList: [
{ label: '解析中', value: 0 },
{ label: '解析成功', value: 1 },
{ label: '解析失败', value: 2 },
],
f_width: '250px',
},
]
export const columnsList = [ export const columnsList = [
{ t_props: 'toolName', t_label: '模板名称' }, { t_props: 'toolName', t_label: '模板名称' },
{ t_props: 'model', t_label: '项目名称' }, { t_props: 'model', t_label: '项目名称' },
@ -48,3 +79,16 @@ export const detailColumnsList = [
{ t_props: 'mainFunction', t_label: '工期' }, { t_props: 'mainFunction', t_label: '工期' },
{ t_props: 'mainFunction', t_label: '招标阶段' }, { t_props: 'mainFunction', t_label: '招标阶段' },
] ]
export const bidListColumnsList = [
{ t_props: 'toolName', t_label: '标的名称' },
{ t_props: 'model', t_label: '单位' },
{ t_props: 'unit', t_label: '标段标号' },
{ t_props: 'technicalParameters', t_label: '标段名称' },
{ t_props: 'mainFunction', t_label: '最高投标限价(万元)' },
{ t_props: 'mainFunction', t_label: '安全文明施工费(万元)' },
{ t_props: 'mainFunction', t_label: '投标保证金(万元)' },
{ t_props: 'mainFunction', t_label: '工期' },
{ t_props: 'mainFunction', t_label: '招标阶段' },
{ t_props: 'mainFunction', t_label: '解析状态' }
]

View File

@ -29,8 +29,8 @@
@click="handleBidDetail(data)"> @click="handleBidDetail(data)">
标段解析 标段解析
</el-button> </el-button>
<el-button type="text" v-hasPermi="['enterpriseLibrary:tool:edit']" class="action-btn" <el-button type="text" v-hasPermi="['enterpriseLibrary:analysis:detail']" class="action-btn"
@click="handleUpdate(data)"> @click="handleBidDetail(data)">
查看标段 查看标段
</el-button> </el-button>
<el-button type="text" v-hasPermi="['enterpriseLibrary:tool:del']" class="action-btn" <el-button type="text" v-hasPermi="['enterpriseLibrary:tool:del']" class="action-btn"
@ -60,7 +60,7 @@ import { listAPI, delDataAPI } from '@/api/analysis/analysis'
import OnlyOfficeViewer from '@/views/common/OnlyOfficeViewer.vue' import OnlyOfficeViewer from '@/views/common/OnlyOfficeViewer.vue'
import AnalysisForm from './components/AnalysisForm.vue' import AnalysisForm from './components/AnalysisForm.vue'
export default { export default {
name: 'Tool', name: 'Analysis',
components: { components: {
TableModel, TableModel,
OnlyOfficeViewer, OnlyOfficeViewer,
@ -124,7 +124,16 @@ export default {
/** 标段解析操作 */ /** 标段解析操作 */
handleBidDetail(row) { handleBidDetail(row) {
this.$router.push({ this.$router.push({
name: 'AnalysisBidDetail', name: 'AnalysisBidIndex',
query: {
proId: encryptWithSM4('2')
}
})
},
/** 查看标段操作 */
handleBidDetail(row) {
this.$router.push({
name: 'AnalysisBidIndex',
query: { query: {
proId: encryptWithSM4('2') proId: encryptWithSM4('2')
} }