招标解析

This commit is contained in:
cwchen 2025-11-26 11:25:21 +08:00
parent 1905783af6
commit 3dc9edac42
2 changed files with 74 additions and 34 deletions

View File

@ -8,8 +8,14 @@
<el-card class="analysis-detail-card"> <el-card class="analysis-detail-card">
<template slot="header"> <template slot="header">
<div class="card-header"> <div class="card-header">
<img src="@/assets/enterpriseLibrary/basic-info.png" alt="项目信息"> <div class="card-header-left">
<h3>项目信息</h3> <img src="@/assets/enterpriseLibrary/basic-info.png" alt="项目信息">
<h3>项目信息</h3>
</div>
<el-button type="text" v-hasPermi="['enterpriseLibrary:analysis:edit']" class="edit-btn"
@click="handleEditProject">
编辑
</el-button>
</div> </div>
</template> </template>
<div class="analysis-detail-content"> <div class="analysis-detail-content">
@ -86,8 +92,12 @@
</TableModel> </TableModel>
</div> </div>
</div> </div>
<!-- 标段编辑弹窗 -->
<BidForm v-if="showBidForm" :width="600" :rowData="rowData" :title="title" <BidForm v-if="showBidForm" :width="600" :rowData="rowData" :title="title"
@closeDialog="showBidForm = false" @handleQuery="handleQuery" /> @closeDialog="showBidForm = false" @handleQuery="handleQuery" />
<!-- 项目信息编辑弹窗 -->
<ProForm v-if="showProForm" :width="600" :rowData="rowData" :title="title"
@closeDialog="showProForm = false" @handleProQuery="handleProQuery" />
</div> </div>
</template> </template>
@ -97,12 +107,14 @@ import { getProDetailAPI,getBidListAPI } from '@/api/analysis/analysis'
import { formLabel, detailColumnsList } from '../config' import { formLabel, detailColumnsList } from '../config'
import TableModel from '@/components/TableModel2' import TableModel from '@/components/TableModel2'
import BidForm from './BidForm.vue' import BidForm from './BidForm.vue'
import ProForm from './ProForm.vue'
export default { export default {
name: 'AnalysisDetail', name: 'AnalysisDetail',
components: { components: {
TableModel, TableModel,
BidForm BidForm,
ProForm
}, },
data() { data() {
return { return {
@ -115,6 +127,7 @@ export default {
proId: decryptWithSM4(this.$route.query.proId), proId: decryptWithSM4(this.$route.query.proId),
}, },
showBidForm: false, showBidForm: false,
showProForm: false,
title: '', title: '',
rowData: {}, rowData: {},
} }
@ -142,16 +155,29 @@ export default {
const obj = { path: "/analysis" } const obj = { path: "/analysis" }
this.$tab.closeOpenPage(obj) this.$tab.closeOpenPage(obj)
}, },
// //
handleUpdate(data) { handleUpdate(data) {
this.title = '编辑' this.title = '编辑'
this.rowData = data this.rowData = data
this.showBidForm = true this.showBidForm = true
}, },
/* 搜索操作 */ /* 搜索操作 */
handleQuery() { handleQuery() {
this.rowData = {}
this.$refs.detailTableRef.getTableList() this.$refs.detailTableRef.getTableList()
}, },
/* 更新项目信息 */
handleProQuery(data){
this.rowData = {}
this.detailData = data
},
/* 编辑项目信息 */
handleEditProject() {
this.title = '编辑'
this.rowData = this.detailData
this.showProForm = true
},
} }
} }
</script> </script>
@ -240,8 +266,15 @@ export default {
.card-header { .card-header {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between;
gap: 8px; gap: 8px;
.card-header-left {
display: flex;
align-items: center;
gap: 8px;
}
.header-icon { .header-icon {
font-size: 20px; font-size: 20px;
color: #409EFF; color: #409EFF;
@ -253,6 +286,17 @@ export default {
font-weight: 600; font-weight: 600;
color: #303133; color: #303133;
} }
.edit-btn {
color: #409EFF;
font-size: 14px;
font-weight: 500;
padding: 0;
&:hover {
color: #66b1ff;
}
}
} }
.analysis-detail-content { .analysis-detail-content {

View File

@ -9,8 +9,8 @@
maxlength="64"></el-input> maxlength="64"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="项目编号" prop="项目编号"> <el-form-item label="项目编号" prop="项目编号">
<el-input v-model.trim="form.项目编号" placeholder="请输入项目编号" clearable show-word-limit <el-input v-model.trim="form.proCode" placeholder="请输入项目编号" clearable show-word-limit
maxlength="64"></el-input> maxlength="32"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="招标人" prop="tenderer"> <el-form-item label="招标人" prop="tenderer">
<el-input v-model.trim="form.tenderer" placeholder="请输入招标人" clearable show-word-limit <el-input v-model.trim="form.tenderer" placeholder="请输入招标人" clearable show-word-limit
@ -20,8 +20,8 @@
<el-input v-model.trim="form.agency" placeholder="请输入代理机构" clearable show-word-limit <el-input v-model.trim="form.agency" placeholder="请输入代理机构" clearable show-word-limit
maxlength="64"></el-input> maxlength="64"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="开标时间" prop="bidOpeningTime"> <el-form-item label="开标时间" prop="bidOpeningTime" >
<el-date-picker v-model="form.bidOpeningTime" type="datetime" placeholder="请选择开标时间" value-format="yyyy-MM-dd HH:mm:ss" clearable></el-date-picker> <el-date-picker class="form-item" v-model="form.bidOpeningTime" type="date" placeholder="请选择开标时间" value-format="yyyy-MM-dd HH:mm:ss" clearable></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="开标方式" prop="bidOpeningMethod"> <el-form-item label="开标方式" prop="bidOpeningMethod">
<el-input v-model.trim="form.bidOpeningMethod" placeholder="请输入开标方式" clearable show-word-limit <el-input v-model.trim="form.bidOpeningMethod" placeholder="请输入开标方式" clearable show-word-limit
@ -29,7 +29,7 @@
</el-form-item> </el-form-item>
<el-form-item label="项目简介" prop="proIntroduction"> <el-form-item label="项目简介" prop="proIntroduction">
<el-input type="textarea" v-model.trim="form.proIntroduction" placeholder="请输入项目简介" clearable show-word-limit <el-input type="textarea" v-model.trim="form.proIntroduction" placeholder="请输入项目简介" clearable show-word-limit
:autosize="{ minRows: 3, maxRows: 5 }" maxlength="128"></el-input> :autosize="{ minRows: 5, maxRows: 8 }" maxlength="512"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -42,7 +42,7 @@
</template> </template>
<script> <script>
import _ from 'lodash' import _ from 'lodash'
import { editBidDataAPI } from '@/api/analysis/analysis' import { editProDataAPI } from '@/api/analysis/analysis'
export default { export default {
name: 'ProForm', name: 'ProForm',
props: ['width', 'rowData', 'title'], props: ['width', 'rowData', 'title'],
@ -61,7 +61,7 @@ export default {
trigger: 'blur', trigger: 'blur',
}, },
], ],
项目编号: [ proCode: [
{ {
required: true, required: true,
message: '请输入项目编号', message: '请输入项目编号',
@ -117,16 +117,14 @@ export default {
console.log(this.rowData); console.log(this.rowData);
this.form = { this.form = {
bidId: this.rowData.bidId || null, proId: this.rowData.proId || null,
markName: this.rowData.markName || '', proName: this.rowData.proName || '',
unit: this.rowData.unit || '', proCode: this.rowData.proCode || '',
bidNumber: this.rowData.bidNumber || '', tenderer: this.rowData.tenderer || '',
bidName: this.rowData.bidName || '', agency: this.rowData.agency || '',
maximumBidLimit: this.rowData.maximumBidLimit || '', bidOpeningTime: this.rowData.bidOpeningTime || '',
safetyConstFee: this.rowData.safetyConstFee || '', bidOpeningMethod: this.rowData.bidOpeningMethod || '',
bidBond: this.rowData.bidBond || '', proIntroduction: this.rowData.proIntroduction || '',
biddingStage: this.rowData.biddingStage || '',
duration: this.rowData.duration || '',
} }
}, },
@ -143,23 +141,22 @@ export default {
/**重置表单*/ /**重置表单*/
reset() { reset() {
this.form = { this.form = {
bidId: null, proId: null,
markName: '', proName: '',
unit: '', proCode: '',
bidNumber: '', tenderer: '',
bidName: '', agency: '',
maximumBidLimit: '', bidOpeningTime: '',
safetyConstFee: '', bidOpeningMethod: '',
bidBond: '', proIntroduction: '',
biddingStage: '',
duration: '',
} }
this.resetForm('ruleForm') this.resetForm('ruleForm')
}, },
handleReuslt(res) { handleReuslt(res) {
this.$modal.msgSuccess(res.msg) this.$modal.msgSuccess(res.msg)
const newData = {...this.form};
this.$emit('handleProQuery',newData)
this.reset() this.reset()
this.$emit('handleQuery')
this.handleClose() this.handleClose()
}, },
validate(formName) { validate(formName) {
@ -177,7 +174,6 @@ export default {
async submitForm(formName) { async submitForm(formName) {
try { try {
const data = await this.validate(formName) const data = await this.validate(formName)
console.log(data);
// //
let formData = { let formData = {
@ -210,7 +206,7 @@ export default {
async saveData(formData) { async saveData(formData) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
// //
editBidDataAPI(formData) editProDataAPI(formData)
.then((res) => { .then((res) => {
resolve(res) resolve(res)
}) })