Commit 96b199b3 authored by 张冬's avatar 张冬

招标公告编辑

parent 8a41f77b
...@@ -43,9 +43,9 @@ export default { ...@@ -43,9 +43,9 @@ export default {
async getbiddingProjectId() { async getbiddingProjectId() {
let projectId = localStorage.getItem('projectId'); let projectId = localStorage.getItem('projectId');
const { data, code,msg } = await biddingProjectId(projectId); const { data, code,msg } = await biddingProjectId(projectId);
this.$emit("getmsg",code)
if (code == 200) { if (code == 200) {
this.detail = data; this.detail = data;
this.$emit("getstate",data.auditStatus)
} else if (code == 500) { } else if (code == 500) {
this.state = false; this.state = false;
this.msg = msg; this.msg = msg;
......
<template>
<div>
<div class="content-head">
<dataBreadcrumb :breads="breads"></dataBreadcrumb>
<h3>编辑招标公告</h3>
<h5>编辑招标公告</h5>
</div>
<div class="content">
<div class="describe">招标公告</div>
<div class="form">
<el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-width="100px" class="demo-ruleForm">
<el-form-item label="公告标题" prop="title"
><strong></strong>
<el-input v-model.trim="ruleForm.title" maxlength="30"></el-input>
</el-form-item>
<el-form-item label="上传附件"
><strong></strong>
<singleUpload tip="支持扩展名:.rar .zip .doc .docx .pdf .jpg..." @input="getfile" :fileList="ruleForm.accessoryVOList"></singleUpload>
</el-form-item>
<el-form-item label="公告内容" prop="content">
<quill-editor ref="text" v-model="ruleForm.content" :options="editorOption" class="myQuillEditor" />
</el-form-item>
</el-form>
</div>
</div>
<div class="bottomButton">
<el-button @click="back">取消</el-button>
<el-button type="primary" @click="submit">编辑</el-button>
</div>
</div>
</template>
<script>
import { editBidding} from '@api/purchaser/bid';
import { biddingProjectId } from '@api/common/list';
import { quillEditor } from 'vue-quill-editor';
import 'quill/dist/quill.core.css';
import 'quill/dist/quill.snow.css';
import 'quill/dist/quill.bubble.css';
import dataBreadcrumb from '@components/dataBreadcrumb.vue';
import singleUpload from '@components/Upload/Upload.vue';
export default {
components: {
dataBreadcrumb,
singleUpload,
quillEditor
},
data() {
// 检测文件是否上传
let checkupload = (rule, value, callback) => {
if (this.justimg.length === 0) {
callback(new Error('请上传正面照片'));
} else {
callback();
}
};
return {
accessoryPOList: [],
editorOption: {},
breads: ['招标管理', '招标项目管理', '工作台'],
ruleForm: {
title: '',
content: ''
},
rules: {
title: [
{
required: true,
message: '请填写',
trigger: 'blue'
}
],
content: [
{
required: true,
message: '请填写',
trigger: 'blue'
}
]
}
};
},
created() {
this.getbiddingProjectId();
},
methods: {
back() {
this.$router.go(-1);
},
cancel() {
this.$router.go(-1);
},
getfile(val) {
for (let item of val) {
item.accessoryUrl = item.fileUrl;
}
this.accessoryPOList = val;
},
//提交表单
async submit() {
let ruleForm = this.ruleForm;
ruleForm.projectId = localStorage.getItem('projectId');
ruleForm.accessoryPOList = this.accessoryPOList;
try {
const valid = await this.$refs['ruleForm'].validate();
if (valid) {
const { code, msg } = await editBidding(this.ruleForm);
if (code === 200) {
this.$message({
message: msg,
type: 'success',
duration: 1500
});
setTimeout(() => {
this.$router.go(-1);
}, 1500);
} else if (code == 500) {
this.$message.error(msg);
}
}
} catch (err) {
console.log(err);
}
},
// 获取详情
async getbiddingProjectId() {
let projectId = localStorage.getItem('projectId');
const { data, code, msg } = await biddingProjectId(projectId);
if (code == 200) {
for(let item of data.accessoryVOList){
item.url=item.accessoryUrl
item.name=item.fileName
}
this.ruleForm= data;
}
}
}
};
</script>
<style scoped>
.ql-editor {
height: 400px;
}
.bottomButton {
margin-top: 20px;
}
.form {
padding-bottom: 80px;
}
</style>
\ No newline at end of file
...@@ -3,15 +3,19 @@ ...@@ -3,15 +3,19 @@
<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="download(bidDetail.fileUrl)">{{bidDetail.fileName}}</span></div> <div>
招标文件:<span @click="download(bidDetail.fileUrl)">{{ bidDetail.fileName }}</span>
</div>
<div>开标信息:<span @click="changeOpen">开标一览表</span></div> <div>开标信息:<span @click="changeOpen">开标一览表</span></div>
</div> </div>
<div class="flex upload"> <div class="flex upload">
<div>变更信息:</div> <div>变更信息:</div>
<ul class="title flex" > <ul class="title flex">
<li v-for="(item,index) in changeList" :key="index"> <li v-for="(item, index) in changeList" :key="index">
<router-link :to="{path: '/purchaser/bid/bidStage/changeList/see', query: {id: item.noticeId }}">{{item.title}}</router-link> <router-link :to="{ path: '/purchaser/bid/bidStage/changeList/see', query: { id: item.noticeId } }">{{
item.title
}}</router-link>
</li> </li>
</ul> </ul>
</div> </div>
...@@ -22,42 +26,44 @@ ...@@ -22,42 +26,44 @@
<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 class="flex file"> <div class="flex file">
<div @click="down(scope.row.fileUrl)">{{scope.row.fileName}}</div> <div @click="down(scope.row.fileUrl)">{{ scope.row.fileName }}</div>
<div v-for="(file,index) in scope.row.fileList" :key="index" @click="down(file.fileUrl)">{{ file.fileName }}</div> <div v-for="(file, index) in scope.row.fileList" :key="index" @click="down(file.fileUrl)">
{{ file.fileName }}
</div>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
</dataTable> </dataTable>
</div> </div>
<!-- 评审信息 --> <!-- 评审信息 -->
<div style="margin-top:100px"> <div style="margin-top: 100px">
<div class="flex-between"> <div class="flex-between">
<h5>评审信息</h5> <h5>评审信息</h5>
<el-button type="primary" size="small" @click='jump'>澄清质询查看</el-button> <el-button type="primary" size="small" @click="jump">澄清质询查看</el-button>
</div> </div>
<dataTable :table-data="review" :columns="reviewTitle" :is-index="true"> <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.qualifi==0">通过</div> <div v-if="scope.row.qualification">通过</div>
<div v-else>未通过</div> <div v-if="!scope.row.qualification">未通过</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.accord==0">通过</div> <div v-if="scope.row.conformity">通过</div>
<div v-else>未通过</div> <div v-if="!scope.row.conformity">未通过</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.fail==0">通过</div> <div v-if="scope.row.bidRejection">通过</div>
<div v-else>未通过</div> <div v-if="!scope.row.bidRejection">未通过</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==0">通过</div> <div v-if="scope.row.conclusion">通过</div>
<div v-else>未通过</div> <div v-if="!scope.row.conclusion">未通过</div>
</template> </template>
</el-table-column> </el-table-column>
</dataTable> </dataTable>
...@@ -66,9 +72,15 @@ ...@@ -66,9 +72,15 @@
<div> <div>
<h5>排名信息</h5> <h5>排名信息</h5>
<dataTable :table-data="rank" :columns="rankTitle" :is-index="true"> <dataTable :table-data="rank" :columns="rankTitle" :is-index="true">
<el-table-column slot="operate" label="是否中标候选人" align="center" fixed="right">
<template slot-scope="scope">
<div v-if="scope.row.winPerson"></div>
<div v-if="!scope.row.winPerson"></div>
</template>
</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>{{scope.$index+1}}</div> <div>{{ scope.$index + 1 }}</div>
</template> </template>
</el-table-column> </el-table-column>
</dataTable> </dataTable>
...@@ -77,8 +89,8 @@ ...@@ -77,8 +89,8 @@
<div class="flex"> <div class="flex">
<div>评标附件:</div> <div>评标附件:</div>
<ul class="upload"> <ul class="upload">
<li class="flex" v-for="(item,index) in downloadList" :key="index"> <li class="flex" v-for="(item, index) in downloadList" :key="index">
<div>{{item.fileName}}</div> <div>{{ item.fileName }}</div>
<button @click="down(item.fileUrl)">下载</button> <button @click="down(item.fileUrl)">下载</button>
</li> </li>
</ul> </ul>
...@@ -91,8 +103,7 @@ ...@@ -91,8 +103,7 @@
</div> </div>
<!-- 开标一览表 --> <!-- 开标一览表 -->
<el-dialog title="开标一览表" :visible.sync="isOpenInfo"> <el-dialog title="开标一览表" :visible.sync="isOpenInfo">
<dataTable :tableData="tableData" :columns="nopagecolumns" :margin-top="0" :margin-bottom="0"> <dataTable :tableData="tableData" :columns="nopagecolumns" :margin-top="0" :margin-bottom="0"> </dataTable>
</dataTable>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button @click="isOpenInfo = false">取 消</el-button> <el-button @click="isOpenInfo = false">取 消</el-button>
</div> </div>
...@@ -102,7 +113,7 @@ ...@@ -102,7 +113,7 @@
</template> </template>
<script> <script>
import { import {
bidend, bidend,
CompanyEvaluatec, CompanyEvaluatec,
companyRank, companyRank,
...@@ -111,19 +122,20 @@ ...@@ -111,19 +122,20 @@
bidFilelist, bidFilelist,
accessorydownload, accessorydownload,
openInfo openInfo
} from '@api/purchaser/bid' } from '@api/purchaser/bid';
import dataTable from '@components/nopageTable.vue' import dataTable from '@components/nopageTable.vue';
import dataBreadcrumb from '@components/dataBreadcrumb.vue' import dataBreadcrumb from '@components/dataBreadcrumb.vue';
export default { export default {
components: { components: {
dataTable, dataTable,
dataBreadcrumb dataBreadcrumb
}, },
data() { data() {
return { return {
isOpenInfo:false, isOpenInfo: false,
tableData:[], tableData: [],
nopagecolumns: [{ nopagecolumns: [
{
label: '投标人名称', label: '投标人名称',
prop: 'companyName' prop: 'companyName'
}, },
...@@ -133,13 +145,14 @@ ...@@ -133,13 +145,14 @@
}, },
{ {
label: '是否签名', label: '是否签名',
prop: 'isSign', prop: 'isSign'
}, }
], // ], //
downloadList: [], downloadList: [],
changeList: [], changeList: [],
bidDetail: "", bidDetail: '',
rankTitle: [{ rankTitle: [
{
label: '投标人名称', label: '投标人名称',
prop: 'companyName' prop: 'companyName'
}, },
...@@ -172,7 +185,8 @@ ...@@ -172,7 +185,8 @@
} }
], ],
rank: [], rank: [],
bidTitle: [{ bidTitle: [
{
label: '投标人', label: '投标人',
prop: 'companyName' prop: 'companyName'
}, },
...@@ -183,85 +197,74 @@ ...@@ -183,85 +197,74 @@
bids: [], bids: [],
breads: ['招标管理', '招标项目管理', '工作台'], breads: ['招标管理', '招标项目管理', '工作台'],
review: [], review: [],
reviewTitle: [{ reviewTitle: [
{
label: '投标人名称', label: '投标人名称',
prop: 'companyName' prop: 'companyName'
}, },
{ {
slot: 'operate' slot: 'operate'
} }
], // 操作列 ] // 操作列
} };
}, },
methods: { methods: {
changeOpen(){ changeOpen() {
this.isOpenInfo=true; this.isOpenInfo = true;
this.getopenInfo() ; this.getopenInfo();
}, },
// 开标一览表 // 开标一览表
async getopenInfo() { async getopenInfo() {
try { try {
let projectId = localStorage.getItem("projectId") let projectId = localStorage.getItem('projectId');
const { const { data, code } = await openInfo(projectId);
data,
code
} = await openInfo(projectId)
if (code == 200) { if (code == 200) {
for (let item of data) { for (let item of data) {
if (item.isSign) { if (item.isSign) {
item.isSign = "是" item.isSign = '是';
} else { } else {
item.isSign = "否" item.isSign = '否';
} }
} }
this.tableData = data this.tableData = data;
} }
} catch (e) { } catch (e) {
console.log(e) console.log(e);
} }
}, },
down(url) { down(url) {
window.open(url) window.open(url);
}, },
jump() { jump() {
this.$router.push('/purchaser/bid/bidEvaluation/review/clear') this.$router.push('/purchaser/bid/bidEvaluation/review/clear');
}, },
compare(property) { compare(property) {
return function(a, b) { return function (a, b) {
var value1 = a[property]; var value1 = a[property];
var value2 = b[property]; var value2 = b[property];
return value2 - value1; return value2 - value1;
} };
}, },
// 查看评标附件 // 查看评标附件
async getaccessorydownload() { async getaccessorydownload() {
let projectId = localStorage.getItem("projectId"); let projectId = localStorage.getItem('projectId');
const { const { data, code } = await accessorydownload(projectId);
data,
code
} = await accessorydownload(projectId)
if (code === 200) { if (code === 200) {
this.downloadList = data this.downloadList = data;
} }
}, },
// 查看投标文件 // 查看投标文件
async getbidFilelist() { async getbidFilelist() {
let projectId = localStorage.getItem("projectId"); let projectId = localStorage.getItem('projectId');
const { const { data, code } = await bidFilelist(projectId);
data,
code
} = await bidFilelist(projectId)
if (code === 200) { if (code === 200) {
this.bids = data this.bids = data;
} }
}, },
// 查看变更信息 // 查看变更信息
async getchangeNoticelist() { async getchangeNoticelist() {
let projectId = localStorage.getItem("projectId"); let projectId = localStorage.getItem('projectId');
const { const { data, code } = await changeNoticelist(projectId);
data,
code
} = await changeNoticelist(projectId)
if (code === 200) { if (code === 200) {
this.changeList = data; this.changeList = data;
} }
...@@ -269,49 +272,39 @@ ...@@ -269,49 +272,39 @@
// 查投标公司评审信息 // 查投标公司评审信息
async getCompanyEvaluatec() { async getCompanyEvaluatec() {
try { try {
let projectId = localStorage.getItem("projectId"); let projectId = localStorage.getItem('projectId');
const { const { data, code } = await CompanyEvaluatec(projectId);
data,
code
} = await CompanyEvaluatec(projectId)
if (code === 200) { if (code === 200) {
this.review = data;
this.review = data
} }
} catch (e) { } catch (e) {
console.log(e) console.log(e);
} }
}, },
// 查看投标公司排名信息 // 查看投标公司排名信息
async getcompanyRank() { async getcompanyRank() {
try { try {
let projectId = localStorage.getItem("projectId"); let projectId = localStorage.getItem('projectId');
const { const { data, code } = await companyRank(projectId);
data,
code
} = await companyRank(projectId)
if (code === 200) { if (code === 200) {
console.log(data, "..............."); console.log(data, '...............');
let data1 = data.sort(this.compare('finalScore')) let data1 = data.sort(this.compare('finalScore'));
this.rank = data1 this.rank = data1;
} }
} catch (e) { } catch (e) {
console.log(e) console.log(e);
} }
}, },
async getbidBookDownload() { async getbidBookDownload() {
try { try {
let projectId = localStorage.getItem("projectId") let projectId = localStorage.getItem('projectId');
const { const { data, code } = await bidBookDownload(projectId);
data,
code
} = await bidBookDownload(projectId)
if (code === 200) { if (code === 200) {
this.bidDetail = data this.bidDetail = data;
} }
} catch (e) { } catch (e) {
console.log(e) console.log(e);
} }
}, },
async end() { async end() {
...@@ -320,91 +313,87 @@ ...@@ -320,91 +313,87 @@
type: 'warning' type: 'warning'
}) })
.then(async () => { .then(async () => {
let projectId = localStorage.getItem("projectId") let projectId = localStorage.getItem('projectId');
const { const { msg, code } = await bidend(projectId);
msg,
code
} = await bidend(projectId)
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);
} else { } else {
this.$message.error(msg) this.$message.error(msg);
} }
}) })
.catch(() => {}) .catch(() => {});
}, },
back() { back() {
this.$router.go(-1) this.$router.go(-1);
}, },
examine() { examine() {
this.$router.push('/admin/bid/bidingDetail') this.$router.push('/admin/bid/bidingDetail');
}, },
fail() { fail() {
this.$router.push('/purchaser/bid/bidEvaluation/projectManager/fail') this.$router.push('/purchaser/bid/bidEvaluation/projectManager/fail');
} }
}, },
created() { created() {
this.getaccessorydownload(); this.getaccessorydownload();
this.getbidFilelist(); this.getbidFilelist();
this.getchangeNoticelist(); this.getchangeNoticelist();
this.getcompanyRank() this.getcompanyRank();
this.getCompanyEvaluatec() this.getCompanyEvaluatec();
this.getbidBookDownload(); this.getbidBookDownload();
},
} }
};
</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 { .message {
margin-left: 50px; margin-left: 50px;
margin-bottom: 50px; margin-bottom: 50px;
}
} .message span {
color: #113dee;
.message span { }
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>
...@@ -44,26 +44,26 @@ ...@@ -44,26 +44,26 @@
<dataTable :table-data="review" :columns="reviewTitle" :is-index="true"> <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.qualification == true">通过</div> <div v-if="scope.row.qualification">通过</div>
<div v-if="scope.row.qualification == false">未通过</div> <div v-if="!scope.row.qualification">未通过</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.conformity == true">通过</div> <div v-if="scope.row.conformity">通过</div>
<div v-if="scope.row.conformity == false">未通过</div> <div v-if="!scope.row.conformity">未通过</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.bidRejection">通过</div>
<div v-if="scope.row.bidRejection == false">未通过</div> <div v-if="!scope.row.bidRejection">未通过</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.conclusion">通过</div>
<div v-if="scope.row.conclusion == false">未通过</div> <div v-if="!scope.row.conclusion">未通过</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">
...@@ -79,8 +79,8 @@ ...@@ -79,8 +79,8 @@
<dataTable :table-data="rank" :columns="rankTitle" :is-index="true"> <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.winPerson == 'true'"></div> <div v-if="scope.row.winPerson"></div>
<div v-if="scope.row.winPerson == 'false'"></div> <div v-if="!scope.row.winPerson"></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">
...@@ -175,8 +175,8 @@ ...@@ -175,8 +175,8 @@
></el-input-number> ></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="是否中标候选人" prop="winPerson"> <el-form-item label="是否中标候选人" prop="winPerson">
<el-radio v-model="rankForm.winPerson" label="true"></el-radio> <el-radio v-model="rankForm.winPerson" :label="true"></el-radio>
<el-radio v-model="rankForm.winPerson" label="false"></el-radio> <el-radio v-model="rankForm.winPerson" :label="false"></el-radio>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
...@@ -596,13 +596,13 @@ export default { ...@@ -596,13 +596,13 @@ export default {
let projectId = localStorage.getItem('projectId'); let projectId = localStorage.getItem('projectId');
const { data, code } = await companyRank(projectId); const { data, code } = await companyRank(projectId);
if (code === 200) { if (code === 200) {
for(let item of data){ // for(let item of data){
if(item.winPerson){ // if(item.winPerson){
item.winPerson="true" // item.winPerson="true"
}else{ // }else{
item.winPerson="false" // item.winPerson="false"
} // }
} // }
let data1 = data.sort(this.compare('finalScore')); let data1 = data.sort(this.compare('finalScore'));
this.rank = data1; this.rank = data1;
} }
......
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
} from '@api/purchaser/bid' } from '@api/purchaser/bid'
import dataBreadcrumb from '@components/dataBreadcrumb.vue' import dataBreadcrumb from '@components/dataBreadcrumb.vue'
import dataTable from '@components/dataTable.vue' import dataTable from '@components/dataTable.vue'
import singleUpload from '@components/Upload/singleUpload.vue' import singleUpload from '@components/Upload/Upload.vue'
export default { export default {
name: 'bidingList', name: 'bidingList',
components: { components: {
...@@ -132,9 +132,7 @@ ...@@ -132,9 +132,7 @@
<style scoped> <style scoped>
.message {
/* width:60%; */
}
.message>div { .message>div {
margin-bottom: 30px; margin-bottom: 30px;
......
...@@ -84,12 +84,8 @@ export default { ...@@ -84,12 +84,8 @@ export default {
} = await resultBookList(projectId) } = await resultBookList(projectId)
if (code === 200) { if (code === 200) {
for (let item of data) { for (let item of data) {
if (item.status == 0) { if (item.status == 1) {
item.state = "未审核" item.state = "已发送"
} else if (item.status == 1) {
item.state = "通过审核"
} else if (item.status == 2) {
item.state = "未通过审核"
} else if (item.status == -1) { } else if (item.status == -1) {
item.state = "暂存本地" item.state = "暂存本地"
} }
......
...@@ -150,6 +150,8 @@ ...@@ -150,6 +150,8 @@
setTimeout(() => { setTimeout(() => {
this.$router.go(-1) this.$router.go(-1)
}, 1500) }, 1500)
}else{
this.$message.error(msg);
} }
} catch (e) { } catch (e) {
console.log(e) console.log(e)
......
...@@ -71,22 +71,32 @@ ...@@ -71,22 +71,32 @@
<!-- 排名信息 --> <!-- 排名信息 -->
<div> <div>
<h5>排名信息</h5> <h5>排名信息</h5>
<dataTable :table-data="rank" :columns="rankTitle" :is-pageobj="false" :is-index="true"> </dataTable> <dataTable :table-data="rank" :columns="rankTitle" :is-pageobj="false" :is-index="true">
<el-table-column slot="operate" label="是否中标候选人" align="center" fixed="right">
<template slot-scope="scope">
<div v-if="scope.row.winPerson"></div>
<div v-if="!scope.row.winPerson"></div>
</template>
</el-table-column>
<el-table-column slot="operate" label="排名" align="center" fixed="right">
<template slot-scope="scope">
<div v-if="scope.row.finalScore">{{ scope.$index + 1 }}</div>
</template>
</el-table-column>
</dataTable>
</div> </div>
<div class="flex"> <div class="flex">
<div>评标附件:</div> <div>评标附件:</div>
<ul class="upload"> <ul class="upload">
<li class="flex"> <li class="flex" v-for="(item, index) in downloadList" :key="index">
<div>评价附件.pdf</div> <div>{{ item.fileName }}</div>
<button>下载</button> <button @click="down(item.fileUrl)">下载</button>
</li> </li>
</ul> </ul>
</div> </div>
<!-- <div class="button"> <div class="centerButton">
<el-button @click="back">返回</el-button> <el-button @click="back">返回</el-button>
<el-button @click="fail">流标</el-button> </div>
<el-button type="primary">评标结束</el-button>
</div> -->
</div> </div>
<!-- 开标一览表 --> <!-- 开标一览表 -->
<el-dialog title="开标一览表" :visible.sync="isOpenInfo"> <el-dialog title="开标一览表" :visible.sync="isOpenInfo">
...@@ -96,15 +106,19 @@ ...@@ -96,15 +106,19 @@
</div> </div>
</el-dialog> </el-dialog>
</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>
</template> </template>
<script> <script>
import { companyRank, CompanyEvaluatec, bidBookDownload, openInfo ,accessorydownload,bidFilelist,changeNoticelist} from '@api/purchaser/bid'; import {
companyRank,
CompanyEvaluatec,
bidBookDownload,
openInfo,
accessorydownload,
bidFilelist,
changeNoticelist
} from '@api/purchaser/bid';
import dataTable from '@components/nopageTable.vue'; import dataTable from '@components/nopageTable.vue';
import dataBreadcrumb from '@components/dataBreadcrumb.vue'; import dataBreadcrumb from '@components/dataBreadcrumb.vue';
export default { export default {
...@@ -114,6 +128,7 @@ export default { ...@@ -114,6 +128,7 @@ export default {
}, },
data() { data() {
return { return {
changeList: [],
isOpenInfo: false, isOpenInfo: false,
tableData: [], tableData: [],
nopagecolumns: [ nopagecolumns: [
...@@ -157,10 +172,6 @@ export default { ...@@ -157,10 +172,6 @@ export default {
label: '评标价(元)', label: '评标价(元)',
prop: 'evaluationPrice' prop: 'evaluationPrice'
}, },
{
label: '排名',
prop: 'rank'
},
{ {
label: '最终得分', label: '最终得分',
prop: 'finalScore' prop: 'finalScore'
...@@ -173,7 +184,7 @@ export default { ...@@ -173,7 +184,7 @@ export default {
bidTitle: [ bidTitle: [
{ {
label: '投标人', label: '投标人',
prop: 'name' prop: 'companyName'
}, },
{ {
slot: 'operate' slot: 'operate'
...@@ -202,8 +213,14 @@ export default { ...@@ -202,8 +213,14 @@ export default {
this.getcompanyRank(); this.getcompanyRank();
this.getCompanyEvaluatec(); this.getCompanyEvaluatec();
this.getbidBookDownload(); this.getbidBookDownload();
this.getchangeNoticelist();
this.getaccessorydownload();
this.getbidFilelist()
}, },
methods: { methods: {
down(url) {
window.open(url);
},
back() { back() {
this.$router.go(-1); this.$router.go(-1);
}, },
...@@ -290,52 +307,42 @@ export default { ...@@ -290,52 +307,42 @@ export default {
}, },
// 查看评标附件 // 查看评标附件
async getaccessorydownload() { async getaccessorydownload() {
let projectId = localStorage.getItem("projectId"); let projectId = localStorage.getItem('projectId');
const { const { data, code } = await accessorydownload(projectId);
data,
code
} = await accessorydownload(projectId)
if (code === 200) { if (code === 200) {
this.downloadList = data this.downloadList = data;
} }
}, },
// 查看投标文件 // 查看投标文件
async getbidFilelist() { async getbidFilelist() {
let projectId = localStorage.getItem("projectId"); let projectId = localStorage.getItem('projectId');
const { const { data, code } = await bidFilelist(projectId);
data,
code
} = await bidFilelist(projectId)
if (code === 200) { if (code === 200) {
this.bids = data this.bids = data;
} }
}, },
// 查看变更信息 // 查看变更信息
async getchangeNoticelist() { async getchangeNoticelist() {
let projectId = localStorage.getItem("projectId"); let projectId = localStorage.getItem('projectId');
const { const { data, code } = await changeNoticelist(projectId);
data,
code
} = await changeNoticelist(projectId)
if (code === 200) { if (code === 200) {
this.changeList = data; this.changeList = data;
} }
}, }
// //
} }
}; };
</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 { .message {
margin-left: 50px; margin-left: 50px;
......
...@@ -85,12 +85,8 @@ ...@@ -85,12 +85,8 @@
} = await sentBookList(projectId) } = await sentBookList(projectId)
if (code === 200) { if (code === 200) {
for (let item of data) { for (let item of data) {
if (item.status == 0) { if (item.status == 1) {
item.state = "未审核" item.state = "已发送"
} else if (item.status == 1) {
item.state = "通过审核"
} else if (item.status == 2) {
item.state = "未通过审核"
} else if (item.status == -1) { } else if (item.status == -1) {
item.state = "暂存本地" item.state = "暂存本地"
} }
......
<template> <template>
<div class="info"> <div class="info">
<div class="content"> <div class="content">
<editTenderAnnouncement v-if="auditStatus == 2"></editTenderAnnouncement>
<div v-if="auditStatus == 0||auditStatus == 1">
<div class="title_info"> <div class="title_info">
<dataBreadcrumb :breads="breads"></dataBreadcrumb> <dataBreadcrumb :breads="breads"></dataBreadcrumb>
</div> </div>
<div class="info_box"> <div class="info_box">
<noticeDetail></noticeDetail> <noticeDetail @getstate="getstate"></noticeDetail>
<el-row> <el-row>
<el-button @click="back">返回</el-button> <el-button @click="back">返回</el-button>
</el-row> </el-row>
</div> </div>
</div> </div>
</div> </div>
</div>
</template> </template>
<script> <script>
import noticeDetail from '@components/detail/noticeDetail.vue' import noticeDetail from '@components/detail/noticeDetail.vue';
import dataBreadcrumb from '@components/dataBreadcrumb.vue' import editTenderAnnouncement from '@components/edit/editTenderAnnouncement.vue';
import dataBreadcrumb from '@components/dataBreadcrumb.vue';
export default { export default {
components: { components: {
dataBreadcrumb, dataBreadcrumb,
noticeDetail noticeDetail,
editTenderAnnouncement
}, },
data() { data() {
return { return {
breads: ['投标管理', '在线报名', '招标公告'], breads: ['投标管理', '在线报名', '招标公告'],
auditStatus: ''
} };
}, },
methods: { methods: {
back() { getstate(val) {
this.$router.go(-1) this.auditStatus = val;
}, },
back() {
}, this.$router.go(-1);
} }
}
};
</script> </script>
<style scoped> <style scoped>
.info { .info {
box-sizing: border-box; box-sizing: border-box;
padding: 30px; padding: 30px;
background: rgb(240, 242, 245); background: rgb(240, 242, 245);
width: 100%; width: 100%;
} }
.info>.info_prev { .info > .info_prev {
box-sizing: border-box; box-sizing: border-box;
padding-left: 30px; padding-left: 30px;
padding-top: 30px; padding-top: 30px;
background: #fff; background: #fff;
} }
.content_list { .content_list {
margin-top: 50px; margin-top: 50px;
} }
.content_list h3 { .content_list h3 {
margin-top: 30px; margin-top: 30px;
font-weight: bold; font-weight: bold;
padding-bottom: 10px; padding-bottom: 10px;
} }
.content_list p { .content_list p {
margin-top: 10px; margin-top: 10px;
margin-bottom: 10px; margin-bottom: 10px;
} }
.message>p{ .message > p {
font-weight: bold; font-weight: bold;
} }
.el-row { .el-row {
display: flex; display: flex;
justify-content: center; justify-content: center;
margin-top: 50px; margin-top: 50px;
}
}
</style> </style>
...@@ -24,8 +24,8 @@ ...@@ -24,8 +24,8 @@
<el-button type="text" size="small" v-else disabled>合同查看</el-button> <el-button type="text" size="small" v-else disabled>合同查看</el-button>
</div> </div>
<div> <div>
<el-button type="text" size="small" @click="voucherSign(scope.row.projectId)" v-if="scope.row.voucherOperation==1">确认凭证</el-button> <el-button type="text" size="small" @click="voucherSign(scope.row)" v-if="scope.row.voucherOperation==1">确认凭证</el-button>
<el-button type="text" size="small" @click="voucherSee(scope.row.projectId)" v-else-if="scope.row.voucherOperation==2">查看凭证</el-button> <el-button type="text" size="small" @click="voucherSee(scope.row)" v-else-if="scope.row.voucherOperation==2">查看凭证</el-button>
<el-button type="text" size="small" v-else disabled>查看凭证</el-button> <el-button type="text" size="small" v-else disabled>查看凭证</el-button>
</div> </div>
</div> </div>
...@@ -103,10 +103,10 @@ ...@@ -103,10 +103,10 @@
}) })
}, },
voucherSee(id) { voucherSee(id) {
this.$router.push(`/purchaser/buyOut/voucherSee?id=${id}`) this.$router.push(`/purchaser/buyOut/voucherSee?projectId=${row.projectId}&companyId=${row.bidCompanyId}`)
}, },
voucherSign(id) { voucherSign(row) {
this.$router.push(`/purchaser/buyOut/voucherSign?id=${id}`) this.$router.push(`/purchaser/buyOut/voucherSign?projectId=${row.projectId}&companyId=${row.bidCompanyId}`)
}, },
async getDropList() { async getDropList() {
const { const {
......
...@@ -31,7 +31,8 @@ export default { ...@@ -31,7 +31,8 @@ export default {
data() { data() {
return { return {
breads: ['应收账款买断管理', '应收账款买断列表'], breads: ['应收账款买断管理', '应收账款买断列表'],
id: '', projectId: '',
companyId: '',
imgList:[], imgList:[],
srcList:[] srcList:[]
}; };
...@@ -43,8 +44,8 @@ export default { ...@@ -43,8 +44,8 @@ export default {
// 查看详情 // 查看详情
async getevidenceDetail() { async getevidenceDetail() {
let message = {}; let message = {};
message.projectId = this.id; message.projectId = this.projectId
message.companyId = localStorage.getItem('companyId'); message.companyId = this.companyId
const { data, code, msg } = await evidenceDetail(message); const { data, code, msg } = await evidenceDetail(message);
if (code == 200) { if (code == 200) {
this.imgList = data; this.imgList = data;
...@@ -57,7 +58,8 @@ export default { ...@@ -57,7 +58,8 @@ export default {
} }
}, },
created() { created() {
this.id = this.$route.query.id; this.projectId = this.$route.query.projectId;
this.companyId = this.$route.query.companyId;
this.getevidenceDetail(); this.getevidenceDetail();
} }
}; };
......
...@@ -6,22 +6,11 @@ ...@@ -6,22 +6,11 @@
<h5>确认应收账款等凭证</h5> <h5>确认应收账款等凭证</h5>
</div> </div>
<div class="content"> <div class="content">
<div class="flex-item"> <div class="flex" style="margin-top: 50px">
<div>下载合同:</div>
<ul>
<li class="flex-item">
<div>{{detail.fileName}}f</div>
<!-- <el-button size="mini">下载</el-button> -->
<a :href="detail.fileUrl">下载</a>
</li>
</ul>
</div>
<div class="flex" style="margin-top: 50px;">
<div>查看图片:</div> <div>查看图片:</div>
<div class="img-list flex"> <div class="img-list flex">
<div v-for="(item,index) in imgList" :key="index"> <div v-for="(item, index) in imgList" :key="index">
<el-image :src="item" :preview-src-list="srcList" style="width: 100px; height: 100px"> <el-image :src="item" :preview-src-list="srcList" style="width: 100px; height: 100px"> </el-image>
</el-image>
</div> </div>
</div> </div>
</div> </div>
...@@ -34,97 +23,88 @@ ...@@ -34,97 +23,88 @@
</template> </template>
<script> <script>
import { import { confirmvoucher, evidenceDetail } from '@api/purchaser/buyOut';
confirmvoucher, import dataBreadcrumb from '@components/dataBreadcrumb.vue';
evidenceDetail export default {
} from '@api/purchaser/buyOut'
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
export default {
components: { components: {
dataBreadcrumb dataBreadcrumb
}, },
data() { data() {
return { return {
imgList: ['https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg',
'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg'
],
breads: ['应收账款买断管理', '应收账款买断列表'], breads: ['应收账款买断管理', '应收账款买断列表'],
srcList: [ projectId: '',
'https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg', companyId: '',
'https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg' imgList: [],
], srcList: []
id:"", };
detail:""
}
}, },
created() { created() {
this.getevidenceDetail() this.getevidenceDetail();
}, },
methods: { methods: {
back() { back() {
this.$router.go(-1) this.$router.go(-1);
}, },
// 查看详情 // 查看详情
async getevidenceDetail() { async getevidenceDetail() {
let message={} let message = {};
message.projectId = this.id message.projectId = this.projectId;
message.companyId =localStorage.getItem("companyId") message.companyId = this.companyId;
const { const { data, code } = await evidenceDetail(message);
data,
code
} = await evidenceDetail(message)
if (code == 200) { if (code == 200) {
this.detail = data this.imgList = data;
for (let item of data) {
this.srcList.push(item.fileUrl);
}
} else {
this.$message.error(msg);
} }
}, },
// 提出 // 提出
async submitData() { async submitData() {
try { try {
let projectId = this.id let projectId = this.projectId;
const { const { msg, code } = await confirmvoucher(projectId);
msg,
code
} = await confirmvoucher(projectId)
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);
} else {
}else{ this.$message.error(msg);
this.$message.error(msg)
} }
} catch (e) { } catch (e) {
console.log(e) console.log(e);
}
} }
},
}, },
created() { created() {
this.id=this.$route.query.id this.projectId = this.$route.query.projectId;
this.companyId = this.$route.query.companyId;
this.getevidenceDetail(); this.getevidenceDetail();
} }
} };
</script> </script>
<style scoped> <style scoped>
.img-list { .img-list {
flex-wrap: wrap; flex-wrap: wrap;
} }
.img-list>div { .img-list > div {
margin-right: 20px; margin-right: 20px;
} }
ul>li>div { ul > li > div {
margin-right: 10px; margin-right: 10px;
} }
.backButton { .backButton {
width: 200px; width: 200px;
margin: 200px auto 30px; margin: 200px auto 30px;
} }
</style> </style>
...@@ -7,24 +7,23 @@ ...@@ -7,24 +7,23 @@
</div> </div>
<div class="content"> <div class="content">
<div class="flex-arround"> <div class="flex-arround">
<div>项目编号:{{projectCode}}</div> <div>项目编号:{{ projectCode }}</div>
<div>项目名称:{{projectName}}</div> <div>项目名称:{{ projectName }}</div>
<div v-if="state">发布时间:{{detail.createTime}}</div> <div v-if="state">发布时间:{{ detail.createTime }}</div>
</div> </div>
<div class='detail1' v-if="state"> <div class="detail1" v-if="state">
<div v-html="detail.content"></div> <div v-html="detail.content"></div>
<div class="enclosure" v-if="detail.accessoryDOList"> <div class="enclosure flex-item">
<ul> <div style="margin-right: 30px">相关附件</div>
<li v-for="(item,i) in detail.accessoryDOList" :key="i"> <ul v-if="detail.accessoryDOList.length>0">
<a href="item.accessoryUrl">item.fileName</a> <li v-for="(item, i) in detail.accessoryDOList" :key="i">
<a href="item.accessoryUrl">{{ item.fileName }}</a>
</li> </li>
</ul> </ul>
<div v-else></div>
</div> </div>
<div class="enclosure">相关附件:空</div>
</div>
<div v-else class="detail1">
未找到该公告详情!
</div> </div>
<div v-else class="detail1">未找到该公告详情!</div>
<div class="centerButton"> <div class="centerButton">
<el-button @click="back">返回</el-button> <el-button @click="back">返回</el-button>
</div> </div>
...@@ -33,74 +32,69 @@ ...@@ -33,74 +32,69 @@
</template> </template>
<script> <script>
import { import { noticeWin } from '@api/supply/bid';
noticeWin import dataBreadcrumb from '@components/dataBreadcrumb.vue';
} from '@api/supply/bid' export default {
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
export default {
components: { components: {
dataBreadcrumb dataBreadcrumb
}, },
data() { data() {
return { return {
breads: ['投标管理 ', '我参加的项目', '工作台'], breads: ['投标管理 ', '我参加的项目', '工作台'],
projectCode: "", projectCode: '',
projectName: "", projectName: '',
state: true, state: true,
detail: "" detail: ''
} };
}, },
methods: { methods: {
back() { back() {
this.$router.go(-1) this.$router.go(-1);
}, },
async getnoticeWin() { async getnoticeWin() {
try { try {
let projectId = localStorage.getItem("projectId") let projectId = localStorage.getItem('projectId');
const { const { data, code } = await noticeWin(projectId);
data,
code
} = await noticeWin(projectId)
if (code == 200) { if (code == 200) {
console.log(data) console.log(data);
this.detail = data this.detail = data;
} else { } else {
this.state = false this.state = false;
} }
} catch (err) { } catch (err) {
console.log(err) console.log(err);
} }
} }
}, },
created() { created() {
this.projectCode = localStorage.getItem("projectCode") this.projectCode = localStorage.getItem('projectCode');
this.projectName = localStorage.getItem("projectName") this.projectName = localStorage.getItem('projectName');
this.getnoticeWin() this.getnoticeWin();
}
} }
};
</script> </script>
<style scoped> <style scoped>
.detail1 { .detail1 {
background: #fff; background: #fff;
margin-top: 30px; margin-top: 30px;
} }
.content>h1 { .content > h1 {
text-align: center; text-align: center;
margin-top: 20px; margin-top: 20px;
margin-bottom: 40px; margin-bottom: 40px;
font-weight: bold; font-weight: bold;
} }
.content>.img { .content > .img {
width: 600px; width: 600px;
margin: 0 auto margin: 0 auto;
} }
.enclosure { .enclosure {
margin: 50px 0; margin: 50px 0;
} }
</style> </style>
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