Commit 0493286c authored by 张冬's avatar 张冬

专家评标问题解决

parent 3bb56ece
...@@ -363,24 +363,24 @@ export function bidFailed(data) { ...@@ -363,24 +363,24 @@ export function bidFailed(data) {
}) })
} }
// 编辑评标页面接口(专家)
// export function bidFailed(data) {
// return request({
// url: "tender-evaluate/editEvaluate", 三
// method: 'post',
// data:data
// })
// }
// // 保存编辑(专家)
// export function bidFailed(data) {
// return request({
// url: "tender-evaluate/saveEvaluate",
// method: 'post',
// data:data
// })
// }
// // 保存编辑(专家)
export function saveEvaluate(data) {
return request({
url: "tender-evaluate/saveEvaluate",
method: 'post',
data:data
})
}
//是否已经提交评分等等的状态
export function isEvaluate(projectId) {
return request({
url: `tender-evaluate/isEvaluate/${projectId}`,
method: 'get',
})
}
//项目经理中的评标结算按钮 //项目经理中的评标结算按钮
export function bidend(projectId) { export function bidend(projectId) {
return request({ return request({
......
<template> <template>
<div> <div>
<div class="content"> <div class="content">
<dataBreadcrumb :breads="breads"></dataBreadcrumb> <dataBreadcrumb :breads="breads"></dataBreadcrumb>
<div class="message"> <div class="message">
<div class="flex-between bond"> <div class="flex-between bond">
<div>招标文件:<span @click="down(bidDetail.fileUrl)">{{bidDetail.fileName}}</span></div> <div>
<div>开标信息:<span @click="changeOpen">开标一览表</span></div> 招标文件:<span @click="down(bidDetail.fileUrl)">{{ bidDetail.fileName }}</span>
</div> </div>
<div class="flex-item upload"> <div>开标信息:<span @click="changeOpen">开标一览表</span></div>
<div>变更信息:</div> </div>
<ul class="title flex"> <div class="flex-item upload">
<li v-for="(item,index) in changeList" :key="index"> <div>变更信息:</div>
<router-link :to="{path: '/purchaser/bid/bidStage/changeList/see', query: {id: item.noticeId }}">{{item.title}}</router-link> <ul class="title flex">
</li> <li v-for="(item, index) in changeList" :key="index">
</ul> <router-link :to="{ path: '/purchaser/bid/bidStage/changeList/see', query: { id: item.noticeId } }">{{
</div> item.title
<!-- 投标文件 --> }}</router-link>
<div> </li>
<div>投标文件:</div> </ul>
<dataTable :table-data="bids" :columns="bidTitle" :is-index="true"> </div>
<el-table-column slot="operate" label="文件" align="center" fixed="right"> <!-- 投标文件 -->
<template slot-scope="scope"> <div>
<div class="flex file"> <div>投标文件:</div>
<div @click="down(scope.row.fileUrl)">{{scope.row.fileName}}</div> <dataTable :table-data="bids" :columns="bidTitle" :is-index="true">
<div v-for="(file,index) in scope.row.fileList" :key="index" @click="down(file.fileUrl)">{{ file.fileName }}</div> <el-table-column slot="operate" label="文件" align="center" fixed="right">
</div> <template slot-scope="scope">
</template> <div class="flex file">
</el-table-column> <div @click="down(scope.row.fileUrl)">{{ scope.row.fileName }}</div>
</dataTable> <div v-for="(file, index) in scope.row.fileList" :key="index" @click="down(file.fileUrl)">
</div> {{ file.fileName }}
<!-- 评审信息 --> </div>
<div style="margin-top:100px"> </div>
<div class="flex-between"> </template>
<h5>评审信息</h5> </el-table-column>
<el-button type="primary" size="small" @click="jump">澄清质询管理</el-button> </dataTable>
</div> </div>
<dataTable :table-data="review" :columns="reviewTitle" :is-index="true"> <!-- 评审信息 -->
<el-table-column slot="operate" label="资格审查" align="center" fixed="right"> <div style="margin-top: 100px">
<template slot-scope="scope"> <div class="flex-between">
<div v-if="scope.row.qualification==true">通过</div> <h5>评审信息</h5>
<div v-if="scope.row.qualification==false">未通过</div> <el-button type="primary" size="small" @click="jump">澄清质询管理</el-button>
</template> </div>
</el-table-column> <dataTable :table-data="review" :columns="reviewTitle" :is-index="true">
<el-table-column slot="operate" label="符合性审查" align="center" fixed="right"> <el-table-column slot="operate" label="资格审查" align="center" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.conformity==true">通过</div> <div v-if="scope.row.qualification == true">通过</div>
<div v-if="scope.row.conformity==false">未通过</div> <div v-if="scope.row.qualification == false">未通过</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column slot="operate" label="手动废标" align="center" fixed="right"> <el-table-column slot="operate" label="符合性审查" align="center" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.bidRejection==true">通过</div> <div v-if="scope.row.conformity == true">通过</div>
<div v-if="scope.row.bidRejection==false">未通过</div> <div v-if="scope.row.conformity == false">未通过</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column slot="operate" label="结论" align="center" fixed="right"> <el-table-column slot="operate" label="手动废标" align="center" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.conclusion==true">通过</div> <div v-if="scope.row.bidRejection == true">通过</div>
<div v-if="scope.row.conclusion==false">未通过</div> <div v-if="scope.row.bidRejection == false">未通过</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column slot="operate" label="操作" align="center" fixed="right"> <el-table-column slot="operate" label="结论" align="center" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" @click="handleEdit(scope.row,scope.$index)">编辑</el-button> <div v-if="scope.row.conclusion == true">通过</div>
</template> <div v-if="scope.row.conclusion == false">未通过</div>
</el-table-column> </template>
</dataTable> </el-table-column>
</div> <el-table-column slot="operate" label="操作" align="center" fixed="right">
<!-- 排名信息 --> <template slot-scope="scope">
<div> <el-button type="text" size="small" @click="handleEdit(scope.row, scope.$index)">编辑</el-button>
<h5>排名信息</h5> </template>
<dataTable :table-data="rank" :columns="rankTitle" :is-index="true"> </el-table-column>
<el-table-column slot="operate" label="是否中标候选人" align="center" fixed="right"> </dataTable>
<template slot-scope="scope"> </div>
<div v-if="scope.row.winPerson=='true'"></div> <!-- 排名信息 -->
<div v-if="scope.row.winPerson=='false'"></div> <div>
</template> <h5>排名信息</h5>
</el-table-column> <dataTable :table-data="rank" :columns="rankTitle" :is-index="true">
<el-table-column slot="operate" label="排名" align="center" fixed="right"> <el-table-column slot="operate" label="是否中标候选人" align="center" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.finalScore">{{scope.$index+1}}</div> <div v-if="scope.row.winPerson == 'true'"></div>
</template> <div v-if="scope.row.winPerson == 'false'"></div>
</el-table-column> </template>
<el-table-column slot="operate" label="最终得分" align="center" fixed="right"> </el-table-column>
<template slot-scope="scope"> <el-table-column slot="operate" label="排名" align="center" fixed="right">
<div v-if="scope.row.finalScore">{{(scope.row.finalScore)}}</div> <template slot-scope="scope">
</template> <div v-if="scope.row.finalScore">{{ scope.$index + 1 }}</div>
</el-table-column> </template>
<el-table-column slot="operate" label="操作" align="center" fixed="right"> </el-table-column>
<template slot-scope="scope"> <el-table-column slot="operate" label="最终得分" align="center" fixed="right">
<el-button type="text" size="small" @click="Edit(scope.row,scope.$index)">编辑</el-button> <template slot-scope="scope">
</template> <div v-if="scope.row.finalScore">{{ scope.row.finalScore }}</div>
</el-table-column> </template>
</dataTable> </el-table-column>
</div> <el-table-column slot="operate" label="操作" align="center" fixed="right">
<div class="flex"> <template slot-scope="scope">
<div>评标附件:</div> <el-button type="text" size="small" @click="Edit(scope.row, scope.$index)">编辑</el-button>
<singleUpload :limit="5" :max="100" tip="最多上传5份,每份不超过100M." @input="getfile"></singleUpload> </template>
</div> </el-table-column>
<div class="button"> </dataTable>
<el-button @click="back">返回</el-button> </div>
<el-button type="primary" @click="complete">完成</el-button> <div class="flex">
</div> <div>评标附件:</div>
</div> <singleUpload :limit="5" :max="100" tip="最多上传5份,每份不超过100M." :fileList="fileList" @input="getfile"></singleUpload>
</div> </div>
<!-- 编辑评审信息--> <div class="button">
<el-dialog :visible.sync="isEvaluate" title="编辑"> <el-button @click="back">返回</el-button>
<el-form :model="evaluateForm" ref="evaluateForm" label-width="100px" :rules="rules"> <el-button type="primary" @click="complete">完成</el-button>
<el-form-item label="资格审查" prop="qualification"> </div>
<el-radio v-model="evaluateForm.qualification" :label="true">通过</el-radio> </div>
<el-radio v-model="evaluateForm.qualification" :label="false">未通过</el-radio> </div>
</el-form-item> <!-- 编辑评审信息-->
<el-form-item label="符合性审查" prop="conformity"> <el-dialog :visible.sync="isEvaluate" title="编辑">
<el-radio v-model="evaluateForm.conformity" :label="true">通过</el-radio> <el-form :model="evaluateForm" ref="evaluateForm" label-width="100px" :rules="rules">
<el-radio v-model="evaluateForm.conformity" :label="false">未通过</el-radio> <el-form-item label="资格审查" prop="qualification">
</el-form-item> <el-radio v-model="evaluateForm.qualification" :label="true">通过</el-radio>
<el-form-item label="手动废标" prop='bidRejection'> <el-radio v-model="evaluateForm.qualification" :label="false">未通过</el-radio>
<el-radio v-model="evaluateForm.bidRejection" :label="true">通过</el-radio> </el-form-item>
<el-radio v-model="evaluateForm.bidRejection" :label="false">未通过</el-radio> <el-form-item label="符合性审查" prop="conformity">
</el-form-item> <el-radio v-model="evaluateForm.conformity" :label="true">通过</el-radio>
<el-form-item label="结论" prop="conclusion"> <el-radio v-model="evaluateForm.conformity" :label="false">未通过</el-radio>
<el-radio v-model="evaluateForm.conclusion" :label="true">通过</el-radio> </el-form-item>
<el-radio v-model="evaluateForm.conclusion" :label="false">未通过</el-radio> <el-form-item label="手动废标" prop="bidRejection">
</el-form-item> <el-radio v-model="evaluateForm.bidRejection" :label="true">通过</el-radio>
</el-form> <el-radio v-model="evaluateForm.bidRejection" :label="false">未通过</el-radio>
<div slot="footer" class="dialog-footer"> </el-form-item>
<el-button @click="isEvaluate = false">取 消</el-button> <el-form-item label="结论" prop="conclusion">
<el-button type="primary" @click="editCompanyEvaluate">确 定</el-button> <el-radio v-model="evaluateForm.conclusion" :label="true">通过</el-radio>
</div> <el-radio v-model="evaluateForm.conclusion" :label="false">未通过</el-radio>
</el-dialog> </el-form-item>
<!-- 编辑公司排名--> </el-form>
<el-dialog title="编辑" :visible.sync="isRank" width="40%"> <div slot="footer" class="dialog-footer">
<el-form :model="rankForm" ref="rankForm" :rules="rules"> <el-button @click="isEvaluate = false">取 消</el-button>
<el-form-item label="商务评分" prop="commercialGrade"> <el-button type="primary" @click="editCompanyEvaluate">确 定</el-button>
<el-input-number v-model="rankForm.commercialGrade" :min="0" :controls="false" :precision="2" placeholder="请输入"></el-input-number> </div>
</el-form-item> </el-dialog>
<el-form-item label="技术评分" prop="skillGrade"> <!-- 编辑公司排名-->
<el-input-number v-model="rankForm.skillGrade" :min="0" :controls="false" :precision="2" placeholder="请输入"></el-input-number> <el-dialog title="编辑" :visible.sync="isRank" width="40%">
</el-form-item> <el-form :model="rankForm" ref="rankForm" :rules="rules">
<el-form-item label="价格评分" prop="priceGrade"> <el-form-item label="商务评分" prop="commercialGrade">
<el-input-number v-model="rankForm.priceGrade" :min="0" :controls="false" :precision="2" placeholder="请输入"></el-input-number> <el-input-number
v-model="rankForm.commercialGrade"
</el-form-item> :min="0"
<el-form-item label="评标价" prop="evaluationPrice"> :controls="false"
<el-input-number v-model="rankForm.evaluationPrice" :min="0" :controls="false" :precision="2" placeholder="请输入"></el-input-number> :precision="2"
</el-form-item> placeholder="请输入"
<el-form-item label="是否中标候选人" prop="winPerson"> ></el-input-number>
<el-radio v-model="rankForm.winPerson" label="true"></el-radio> </el-form-item>
<el-radio v-model="rankForm.winPerson" label="false"></el-radio> <el-form-item label="技术评分" prop="skillGrade">
</el-form-item> <el-input-number
</el-form> v-model="rankForm.skillGrade"
<div slot="footer" class="dialog-footer"> :min="0"
<el-button @click="isRank = false">取 消</el-button> :controls="false"
<el-button type="primary" @click="editCompanyRank">确 定</el-button> :precision="2"
</div> placeholder="请输入"
</el-dialog> ></el-input-number>
<!-- 开标一览表 --> </el-form-item>
<el-dialog title="开标一览表" :visible.sync="isOpenInfo"> <el-form-item label="价格评分" prop="priceGrade">
<dataTable :tableData="tableData" :columns="nopagecolumns" :margin-top="0" :margin-bottom="0"> <el-input-number
</dataTable> v-model="rankForm.priceGrade"
<div slot="footer" class="dialog-footer"> :min="0"
<el-button @click="isOpenInfo = false">取 消</el-button> :controls="false"
</div> :precision="2"
</el-dialog> placeholder="请输入"
</div> ></el-input-number>
</el-form-item>
<el-form-item label="评标价" prop="evaluationPrice">
<el-input-number
v-model="rankForm.evaluationPrice"
:min="0"
:controls="false"
:precision="2"
placeholder="请输入"
></el-input-number>
</el-form-item>
<el-form-item label="是否中标候选人" prop="winPerson">
<el-radio v-model="rankForm.winPerson" label="true"></el-radio>
<el-radio v-model="rankForm.winPerson" label="false"></el-radio>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="isRank = false">取 消</el-button>
<el-button type="primary" @click="editCompanyRank">确 定</el-button>
</div>
</el-dialog>
<!-- 开标一览表 -->
<el-dialog title="开标一览表" :visible.sync="isOpenInfo">
<dataTable :tableData="tableData" :columns="nopagecolumns" :margin-top="0" :margin-bottom="0"> </dataTable>
<div slot="footer" class="dialog-footer">
<el-button @click="isOpenInfo = false">取 消</el-button>
</div>
</el-dialog>
</div>
</template> </template>
<script> <script>
import { import {
bidderlist, bidderlist,
saveCompanyEvaluate, bidBookDownload,
saveCompanyRank, changeNoticelist,
bidBookDownload, bidFilelist,
changeNoticelist, openInfo,
bidFilelist, saveEvaluate,
accessoryupload, companyRank,
openInfo CompanyEvaluatec,
} from '@api/purchaser/bid' isEvaluate,
import dataTable from '@components/nopageTable.vue' accessorydownload
import dataBreadcrumb from '@components/dataBreadcrumb.vue' } from '@api/purchaser/bid';
import singleUpload from '@components/Upload/Upload.vue' import dataTable from '@components/nopageTable.vue';
export default { import dataBreadcrumb from '@components/dataBreadcrumb.vue';
components: { import singleUpload from '@components/Upload/Upload.vue';
dataTable, export default {
dataBreadcrumb, components: {
singleUpload dataTable,
}, dataBreadcrumb,
data() { singleUpload
return { },
isOpenInfo:false, data() {
tableData:[], return {
nopagecolumns: [{ fileList:[],
label: '投标人名称', isOpenInfo: false,
prop: 'companyName' tableData: [],
}, nopagecolumns: [
{ {
label: '投标报价(元)', label: '投标人名称',
prop: 'price' prop: 'companyName'
}, },
{ {
label: '是否签名', label: '投标报价(元)',
prop: 'isSign', prop: 'price'
}, },
], // {
rules: { label: '是否签名',
qualification: [{ prop: 'isSign'
required: true, }
message: '请选择', ], //
trigger: 'change' rules: {
}], qualification: [
conformity: [{ {
required: true, required: true,
message: '请选择', message: '请选择',
trigger: 'change' trigger: 'change'
}], }
bidRejection: [{ ],
required: true, conformity: [
message: '请选择', {
trigger: 'change' required: true,
}], message: '请选择',
conclusion: [{ trigger: 'change'
required: true, }
message: '请选择', ],
trigger: 'change' bidRejection: [
}], {
commercialGrade: [{ required: true,
required: true, message: '请选择',
message: '请输入', trigger: 'change'
trigger: 'blur' }
}], ],
skillGrade: [{ conclusion: [
required: true, {
message: '请输入', required: true,
trigger: 'blur' message: '请选择',
}], trigger: 'change'
priceGrade: [{ }
required: true, ],
message: '请输入', commercialGrade: [
trigger: 'blur' {
}], required: true,
evaluationPrice: [{ message: '请输入',
required: true, trigger: 'blur'
message: '请输入', }
trigger: 'blur' ],
}], skillGrade: [
winPerson: [{ {
required: true, required: true,
message: '请选择', message: '请输入',
trigger: 'change' trigger: 'blur'
}] }
}, ],
file: [], priceGrade: [
downloadList: [], {
changeList: [], required: true,
bidDetail: "", message: '请输入',
evaluateForm: { trigger: 'blur'
qualification: '', }
conformity: '', ],
bidRejection: '', evaluationPrice: [
conclusion: '' {
}, required: true,
evaluateIdx: '', message: '请输入',
isEvaluate: false, trigger: 'blur'
rankForm: { }
price: "", ],
}, winPerson: [
rankIdx: "", {
isRank: false, required: true,
projectId: 2, message: '请选择',
rankTitle: [{ trigger: 'change'
label: '投标人名称', }
prop: 'companyName' ]
}, },
{ file: [],
label: '投标价(元)', downloadList: [],
prop: 'price' changeList: [],
}, bidDetail: '',
{ evaluateForm: {
label: '商务评分', qualification: '',
prop: 'commercialGrade' conformity: '',
}, bidRejection: '',
{ conclusion: ''
label: '技术评分', },
prop: 'skillGrade' evaluateIdx: '',
}, isEvaluate: false,
{ rankForm: {
label: '价格评分', price: ''
prop: 'priceGrade' },
}, rankIdx: '',
{ isRank: false,
label: '评标价(元)', projectId: 2,
prop: 'evaluationPrice' rankTitle: [
}, {
{ label: '投标人名称',
slot: 'operate' prop: 'companyName'
} },
], {
rank: [], label: '投标价(元)',
bidTitle: [{ prop: 'price'
label: '投标人', },
prop: 'companyName' {
}, label: '商务评分',
{ prop: 'commercialGrade'
slot: 'operate' },
} {
], label: '技术评分',
bids: [], prop: 'skillGrade'
breads: ['招标管理', '招标项目管理', '工作台'], },
review: [], {
reviewTitle: [{ label: '价格评分',
label: '投标人名称', prop: 'priceGrade'
prop: 'companyName' },
}, {
{ label: '评标价(元)',
slot: 'operate' prop: 'evaluationPrice'
} },
] // 操作列 {
} slot: 'operate'
}, }
watch: { ],
rank: { rank: [],
handler(newVal, oldVal) { bidTitle: [
console.log('深度监听rank', newVal, oldVal) {
if (newVal !== oldVal) { label: '投标人',
console.log("改变") prop: 'companyName'
} },
}, {
deep: true slot: 'operate'
}, }
review: { ],
handler(newVal, oldVal) { bids: [],
console.log('深度监听review', newVal, oldVal) breads: ['招标管理', '招标项目管理', '工作台'],
if (newVal !== oldVal) { review: [],
console.log("改变") reviewTitle: [
} {
}, label: '投标人名称',
deep: true prop: 'companyName'
} },
}, {
created() { slot: 'operate'
this.getbidFilelist(); }
this.getchangeNoticelist(); ] // 操作列
this.getbidBookDownload(); };
this.getbidderlist() },
}, watch: {
methods: { rank: {
changeOpen(){ handler(newVal, oldVal) {
this.isOpenInfo=true; console.log('深度监听rank', newVal, oldVal);
this.getopenInfo() ; if (newVal !== oldVal) {
}, console.log('改变');
// 开标一览表 }
async getopenInfo() { },
try { deep: true
let projectId = localStorage.getItem("projectId") },
const { review: {
data, handler(newVal, oldVal) {
code console.log('深度监听review', newVal, oldVal);
} = await openInfo(projectId) if (newVal !== oldVal) {
if (code == 200) { console.log('改变');
for (let item of data) { }
if (item.isSign) { },
item.isSign = "是" deep: true
} else { }
item.isSign = "否" },
} created() {
} this.getbidFilelist();
this.tableData = data this.getchangeNoticelist();
} this.getbidBookDownload();
} catch (e) { this.getbidderlist();
console.log(e) this.getisEvaluate();
} },
}, methods: {
down(url) { changeOpen() {
window.open(url) this.isOpenInfo = true;
}, this.getopenInfo();
jump() { },
this.$router.push("/purchaser/bid/bidEvaluation/review/clear") // 开标一览表
}, async getopenInfo() {
compare(property) { try {
return function(a, b) { let projectId = localStorage.getItem('projectId');
var value1 = a[property]; const { data, code } = await openInfo(projectId);
var value2 = b[property]; if (code == 200) {
return value2 - value1; for (let item of data) {
} if (item.isSign) {
}, item.isSign = '是';
getfile(val) { } else {
this.file = val item.isSign = '否';
}, }
// 完成按钮 }
async complete() { this.tableData = data;
try { }
let message = {} } catch (e) {
message.projectId = localStorage.getItem("projectId") console.log(e);
message.fileList = this.file }
const { },
msg, down(url) {
code window.open(url);
} = await accessoryupload(message) },
if (code === 200) { jump() {
this.$message({ this.$router.push('/purchaser/bid/bidEvaluation/review/clear');
message: msg, },
type: 'success', compare(property) {
duration: 1500 return function (a, b) {
}) var value1 = a[property];
setTimeout(() => { var value2 = b[property];
this.$router.go(-1) return value2 - value1;
}, 1500) };
},
} else { getfile(val) {
this.$message.error(msg) this.file = val;
} },
} catch (e) { async getisEvaluate(){
console.log(e) let projectId = localStorage.getItem('projectId');
} const { data, code } = await isEvaluate(projectId);
}, if(data){
back() { this.getCompanyEvaluatec()
this.$router.go(-1) this.getcompanyRank()
}, this.getaccessorydownload()
download(url) { }
window.open(url) },
}, // 完成按钮
async getbidBookDownload() { async complete() {
try { try {
let projectId = localStorage.getItem("projectId") let message = {};
const { message.projectId = localStorage.getItem('projectId');
data, message.fileList = this.file;
code message.rankList = this.rank;
} = await bidBookDownload(projectId) message.judgeList = this.review;
if (code === 200) { const { msg, code } = await saveEvaluate(message);
this.bidDetail = data if (code === 200) {
} this.$message({
} catch (e) { message: msg,
console.log(e) type: 'success',
} duration: 1500
}, });
// 查看投标文件 setTimeout(() => {
async getbidFilelist() { this.$router.go(-1);
let projectId = localStorage.getItem("projectId"); }, 1500);
const { } else {
data, this.$message.error(msg);
code }
} = await bidFilelist(projectId) } catch (e) {
if (code === 200) { console.log(e);
this.bids = data }
} },
}, back() {
// 查看变更信息 this.$router.go(-1);
async getchangeNoticelist() { },
let projectId = localStorage.getItem("projectId"); download(url) {
const { window.open(url);
data, },
code async getbidBookDownload() {
} = await changeNoticelist(projectId) try {
if (code === 200) { let projectId = localStorage.getItem('projectId');
this.changeList = data; const { data, code } = await bidBookDownload(projectId);
} if (code === 200) {
}, this.bidDetail = data;
}
// 排名信息编辑 } catch (e) {
Edit(row, index) { console.log(e);
this.rankForm = Object.assign({}, row) }
this.isRank = true, },
this.RankIdx = index // 查看投标文件
}, async getbidFilelist() {
let projectId = localStorage.getItem('projectId');
// 提交排名信息 const { data, code } = await bidFilelist(projectId);
async editCompanyRank() { if (code === 200) {
try { this.bids = data;
const valid = await this.$refs['rankForm'].validate() }
if (valid) { },
const { // 查看变更信息
code, async getchangeNoticelist() {
msg let projectId = localStorage.getItem('projectId');
} = await saveCompanyRank(this.rankForm) const { data, code } = await changeNoticelist(projectId);
if (code === 200) { if (code === 200) {
this.$message.success(msg) this.changeList = data;
this.isRank = false }
this.rankForm.finalScore = this.rankForm.commercialGrade + this.rankForm.skillGrade + this.rankForm.priceGrade },
this.$set(this.rank, this.RankIdx, this.rankForm)
this.rank.sort(this.compare('finalScore'))
}
}
} catch (e) {
console.log(e)
}
},
//评审信息编辑 // 排名信息编辑
handleEdit(row, index) { Edit(row, index) {
this.evaluateForm = Object.assign({}, row) this.rankForm = Object.assign({}, row);
this.isEvaluate = true, (this.isRank = true), (this.RankIdx = index);
this.evaluateIdx = index },
},
// 提交评审信息
async editCompanyEvaluate() {
try {
const valid = await this.$refs['evaluateForm'].validate()
if (valid) {
const {
code,
msg
} = await saveCompanyEvaluate(this.evaluateForm)
if (code === 200) {
this.$message.success(msg)
this.isEvaluate = false
this.$set(this.review, this.evaluateIdx, this.evaluateForm)
}
}
} catch (e) {
console.log(e)
}
},
// 提交排名信息
async editCompanyRank() {
try {
const valid = await this.$refs['rankForm'].validate();
if (valid) {
// const {
// code,
// msg
// } = await saveCompanyRank(this.rankForm)
// if (code === 200) {
// this.$message.success(msg)
// this.isRank = false
// this.rankForm.finalScore = this.rankForm.commercialGrade + this.rankForm.skillGrade + this.rankForm.priceGrade
// this.$set(this.rank, this.RankIdx, this.rankForm)
// this.rank.sort(this.compare('finalScore'))
// }
this.isRank = false;
this.rankForm.finalScore = this.rankForm.commercialGrade + this.rankForm.skillGrade + this.rankForm.priceGrade;
this.$set(this.rank, this.RankIdx, this.rankForm);
this.rank.sort(this.compare('finalScore'));
}
} catch (e) {
console.log(e);
}
},
async getbidderlist() { //评审信息编辑
let projectId = localStorage.getItem("projectId"); handleEdit(row, index) {
const { this.evaluateForm = Object.assign({}, row);
data, (this.isEvaluate = true), (this.evaluateIdx = index);
code },
} = await bidderlist(projectId) // 提交评审信息
this.review = data async editCompanyEvaluate() {
this.rank = data try {
} const valid = await this.$refs['evaluateForm'].validate();
} if (valid) {
} // const { code, msg } = await saveCompanyEvaluate(this.evaluateForm);
// if (code === 200) {
// this.$message.success(msg);
// this.isEvaluate = false;
// this.$set(this.review, this.evaluateIdx, this.evaluateForm);
// }
this.isEvaluate = false;
this.$set(this.review, this.evaluateIdx, this.evaluateForm);
}
} catch (e) {
console.log(e);
}
},
//获取公司列表
async getbidderlist() {
let projectId = localStorage.getItem('projectId');
const { data, code } = await bidderlist(projectId);
this.review = data;
this.rank = data;
},
// 获取评标附件
async getaccessorydownload() {
let projectId = localStorage.getItem('projectId');
const { data, code } = await accessorydownload(projectId);
for(let item of data){
item.url=item.fileUrl
item.name=item.fileName
}
this.fileList=data
},
// 查投标公司评审信息
async getCompanyEvaluatec() {
try {
let projectId = localStorage.getItem('projectId');
const { data, code } = await CompanyEvaluatec(projectId);
if (code === 200) {
this.review = data;
}
} catch (e) {
console.log(e);
}
},
// 查看投标公司排名信息
async getcompanyRank() {
try {
let projectId = localStorage.getItem('projectId');
const { data, code } = await companyRank(projectId);
if (code === 200) {
for(let item of data){
if(item.winPerson){
item.winPerson="true"
}else{
item.winPerson="false"
}
}
let data1 = data.sort(this.compare('finalScore'));
this.rank = data1;
}
} catch (e) {
console.log(e);
}
}
}
};
</script> </script>
<style scoped> <style scoped>
.bond span{ .bond span {
cursor:pointer; cursor: pointer;
} }
.file>div { .file > div {
margin-right: 10px; margin-right: 10px;
color: #113DEE; color: #113dee;
cursor:pointer; cursor: pointer;
} }
.message {
margin-left: 50px;
margin-bottom: 50px;
} .message {
margin-left: 50px;
margin-bottom: 50px;
}
.message span { .message span {
color: #113DEE color: #113dee;
} }
.message>div { .message > div {
margin-bottom: 15px; margin-bottom: 15px;
} }
.title>li { .title > li {
margin-right: 15px;
margin-right: 15px; }
}
.upload button { .upload button {
border: 1px solid #000000; border: 1px solid #000000;
background: #fff; background: #fff;
width: 50px; width: 50px;
height: 20px; height: 20px;
margin-left: 10px; margin-left: 10px;
} }
h5 { h5 {
font-weight: bold; font-weight: bold;
margin-bottom: 20px; margin-bottom: 20px;
} }
.button { .button {
width: 280px; width: 280px;
margin: 80px auto 30px margin: 80px auto 30px;
} }
</style> </style>
<template> <template>
<div> <div>
<div class="content"> <div class="content">
<dataBreadcrumb :breads="breads"></dataBreadcrumb> <dataBreadcrumb :breads="breads"></dataBreadcrumb>
<div>招标文件澄清列表</div> <div>招标文件澄清列表</div>
<changeNav :navs="navs" @getIndex="getIndex"></changeNav> <changeNav :navs="navs" @getIndex="getIndex"></changeNav>
<div class="absolute"> <div class="absolute">
<el-button type="primary" @click="propose">提出澄清</el-button> <el-button type="primary" @click="propose">提出澄清</el-button>
</div> </div>
<div v-show="idx==0"> <div v-show="idx == 0">
<dataTable :columns="columns" :page-obj="pageObj" url="tender-clarifies/list"> <dataTable :columns="columns" :page-obj="pageObj" url="tender-clarifies/list">
<el-table-column slot="operate" label="操作" align="center" fixed="right" width="100"> <el-table-column slot="operate" label="操作" align="center" fixed="right" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.clarifiesType==0"> <div v-if="scope.row.clarifiesType == 0">
<el-button type="text" size="small" @click="handleSee(scope.row)">查看</el-button> <el-button type="text" size="small" @click="handleSee(scope.row)">查看</el-button>
</div> </div>
<div v-else> <div v-else>
<el-button v-if="scope.row.noticeId" type="text" size="small" @click="handleSee(scope.row)">查看</el-button> <el-button v-if="scope.row.noticeId" type="text" size="small" @click="handleSee(scope.row)">查看</el-button>
<el-button v-else type="text" size="small" @click="handleReply(scope.row)">回复</el-button> <el-button v-else type="text" size="small" @click="handleReply(scope.row)">回复</el-button>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
</dataTable> </dataTable>
</div> </div>
<div v-show="idx==1"> <div v-show="idx == 1">
<dataTable :columns="columns1" :page-obj="pageObj1" url="tender-clarifies/list"> <dataTable :columns="columns1" :page-obj="pageObj1" url="tender-clarifies/list">
<el-table-column slot="operate" label="操作" align="center" fixed="right" width="100"> <el-table-column slot="operate" label="操作" align="center" fixed="right" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.clarifiesType==0"> <div v-if="scope.row.clarifiesType == 0">
<el-button type="text" size="small" @click="handleSee(scope.row)">查看</el-button> <el-button type="text" size="small" @click="handleSee(scope.row)">查看</el-button>
</div> </div>
<div v-else> <div v-else>
<el-button v-if="scope.row.noticeId" type="text" size="small" @click="handleSee(scope.row)">查看</el-button> <el-button v-if="scope.row.noticeId" type="text" size="small" @click="handleSee(scope.row)">查看</el-button>
<el-button v-else type="text" size="small" @click="handleReply(scope.row)">回复</el-button> <el-button v-else type="text" size="small" @click="handleReply(scope.row)">回复</el-button>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
</dataTable> </dataTable>
</div> </div>
<div class="bottomButton">
<el-button @click="back">返回</el-button>
<el-button type="primary" v-if="ruleForm.auditStatus == 2" @click="submitData">提交</el-button>
</div>
</div>
</div> </div>
</div>
</template> </template>
<script> <script>
// import { getList } from '@api/common/list' // import { getList } from '@api/common/list'
import dataTable from '@components/dataTable.vue' import dataTable from '@components/dataTable.vue';
import changeNav from '@components/changeNav.vue' import changeNav from '@components/changeNav.vue';
import dataBreadcrumb from '@components/dataBreadcrumb.vue' import dataBreadcrumb from '@components/dataBreadcrumb.vue';
export default { export default {
components: { components: {
dataTable, dataTable,
changeNav, changeNav,
dataBreadcrumb dataBreadcrumb
},
data() {
return {
idx:0,
navs: ["问题列表","公告列表"],
breads: ['招标管理', '招标项目管理', '工作台'],
tableData: [],
columns: [{
label: '澄清问题标题',
prop: 'title'
},
{
label: '状态',
prop: 'operaion'
},
{
label: '提出时间',
prop: 'createTime',
sortable: true
},
{
label: '提出人',
prop: 'bidCompanyName'
},
{
slot: 'operate'
}
],
columns1: [{
label: '澄清问题标题',
prop: 'title'
},
{
label: '状态',
prop: 'operaion'
},
{
label: '提出时间',
prop: 'createTime',
sortable: true
},
{
label: '提出人',
prop: 'tenderCompanyName'
},
{
slot: 'operate'
}
],
pageObj: {
size: 10,
currentPage: 1,
type:1,
func: (currentPage) => {
this.pageTurning(currentPage)
}
},
pageObj1: {
size: 10,
currentPage: 1,
type:2,
func: (currentPage) => {
this.pageTurning(currentPage)
}
}
}
},
created() {
this.pageObj.projectId = localStorage.getItem("projectId")
this.pageObj.companyId = localStorage.getItem("companyId")
this.pageObj1.projectId = localStorage.getItem("projectId")
this.pageObj1.companyId = localStorage.getItem("companyId")
},
methods: {
getIndex(value){
this.idx=value
},
// 提出
propose(){
this.$router.push("/purchaser/bid/bidStage/clearManagement/propose")
},
// 查看
handleSee(row) {
this.$router.push({
path: '/purchaser/bid/bidStage/clearManagement/see',
query: {
questionId: row.questionId,
noticeId: row.noticeId
}
})
}, },
// 回复 data() {
handleReply(row) { return {
this.$router.push({ idx: 0,
path: '/purchaser/bid/bidStage/clearManagement/reply', navs: ['问题列表', '公告列表'],
query: { breads: ['招标管理', '招标项目管理', '工作台'],
questionId: row.questionId, tableData: [],
} columns: [
}) {
label: '澄清问题标题',
prop: 'title'
},
{
label: '状态',
prop: 'operaion'
},
{
label: '提出时间',
prop: 'createTime',
sortable: true
},
{
label: '提出人',
prop: 'bidCompanyName'
},
{
slot: 'operate'
}
],
columns1: [
{
label: '澄清问题标题',
prop: 'title'
},
{
label: '状态',
prop: 'operaion'
},
{
label: '提出时间',
prop: 'createTime',
sortable: true
},
{
label: '提出人',
prop: 'tenderCompanyName'
},
{
slot: 'operate'
}
],
pageObj: {
size: 10,
currentPage: 1,
type: 1,
func: (currentPage) => {
this.pageTurning(currentPage);
}
},
pageObj1: {
size: 10,
currentPage: 1,
type: 2,
func: (currentPage) => {
this.pageTurning(currentPage);
}
}
};
}, },
} created() {
} this.pageObj.projectId = localStorage.getItem('projectId');
this.pageObj.companyId = localStorage.getItem('companyId');
this.pageObj1.projectId = localStorage.getItem('projectId');
this.pageObj1.companyId = localStorage.getItem('companyId');
},
methods: {
back() {
this.$router.go(-1);
},
getIndex(value) {
this.idx = value;
},
// 提出
propose() {
this.$router.push('/purchaser/bid/bidStage/clearManagement/propose');
},
// 查看
handleSee(row) {
this.$router.push({
path: '/purchaser/bid/bidStage/clearManagement/see',
query: {
questionId: row.questionId,
noticeId: row.noticeId
}
});
},
// 回复
handleReply(row) {
this.$router.push({
path: '/purchaser/bid/bidStage/clearManagement/reply',
query: {
questionId: row.questionId
}
});
}
}
};
</script> </script>
<style scoped> <style scoped>
.absolute { .absolute {
position: absolute; position: absolute;
right: 50px; right: 50px;
top: 80px top: 80px;
} }
</style> </style>
...@@ -106,21 +106,20 @@ ...@@ -106,21 +106,20 @@
try { try {
const valid = await this.$refs['ruleForm'].validate() const valid = await this.$refs['ruleForm'].validate()
if (valid) { if (valid) {
console.log(ruleForm) const {
// const { code,
// code, msg
// msg } = await forwardClarify(this.ruleForm)
// } = await forwardClarify(this.ruleForm) if (code === 200) {
// if (code === 200) { this.$message({
// this.$message({ message: msg,
// message: msg, type: 'success',
// type: 'success', duration: 1500
// duration: 1500 })
// }) setTimeout(() => {
// setTimeout(() => { this.$router.go(-1)
// this.$router.go(-1) }, 1500)
// }, 1500) }
// }
} }
} catch (err) { } catch (err) {
console.log(err) console.log(err)
......
...@@ -18,7 +18,7 @@ export function getSearchString(key) { ...@@ -18,7 +18,7 @@ export function getSearchString(key) {
export function down(url) { export function down(url) {
window.open(url) window.open(url)
} }
// export let requestUrl = 'http://192.168.3.35:8085'; // export let requestUrl = 'http://192.168.3.35:8085';
export let requestUrl = 'http://60.205.251.80:8082'; export let requestUrl = 'http://60.205.251.80:8082';
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment