Commit a08cad81 authored by 张冬's avatar 张冬

更新

parent 7e8ce8d2
...@@ -312,6 +312,13 @@ export function companyRank(projectId) { ...@@ -312,6 +312,13 @@ export function companyRank(projectId) {
}) })
} }
// 专家评审里的评审信息和排名信息
export function bidderlist(projectId) {
return request({
url: `tender-evaluate/bidder/list/${projectId}`,
method: 'get'
})
}
// 保存投标公司评审信息 // 保存投标公司评审信息
export function saveCompanyEvaluate(data) { export function saveCompanyEvaluate(data) {
......
...@@ -69,10 +69,11 @@ export function bidBooklist(params) { ...@@ -69,10 +69,11 @@ export function bidBooklist(params) {
}) })
} }
// 检测是否能下载 // 检测是否能下载
export function downLoad(projectId) { export function downLoad(params) {
return request({ return request({
url: `bidder-bidbook/bidBook/downLoad/${projectId}`, url:"bidder-bidbook/bidBook/downLoad",
method: 'get', method: 'get',
params:params
}) })
} }
//项目完整详情查看 //项目完整详情查看
......
<template> <template>
<div class="noticeDetail">
<div class="info_mes">
<p>
项目名称:{{projectName}}
</p>
<p>
项目 项目编号:{{projectCode}}
</p>
<p >
发布日期:{{detail.createTime}}
</p>
</div>
<h1>{{detail.title}}</h1>
<div v-html="detail.content"></div>
<div class="content_list">
<div class="flex-item">
<div>附件下载:</div>
<ul>
<li v-for="item in detail.accessoryVOList" :key="item.id">
<a :href="item.accessoryUrl">{{item.fileName}}</a>
</li>
</ul>
</div>
</div>
</div>
</template> </template>
<script> <script>
import {
biddingProjectId
} from '@api/common/list'
export default {
data() {
return {
projectName: "",
projectCode: "",
detail: ""
}
},
methods: {
// 获取详情
async getbiddingProjectId() {
let projectId = localStorage.getItem("projectId")
const {
data,
code
} = await biddingProjectId(projectId)
this.detail = data
},
},
created() {
this.projectName = localStorage.getItem("projectName")
this.projectCode = localStorage.getItem("projectCode")
this.getbiddingProjectId()
}
}
</script> </script>
<style> <style scoped>
.info_mes {
margin-bottom: 40px;
display: flex;
justify-content: space-between;
}
.noticeDetail h1 {
text-align: center;
margin-bottom: 30px;
}
.content_list{
margin-top:30px
}
</style> </style>
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div class="content"> <div class="content">
<dataBreadcrumb :breads="breads"></dataBreadcrumb> <dataBreadcrumb :breads="breads"></dataBreadcrumb>
<div class="message"> <div class="message">
<div class="flex-between" style="width: 50%;"> <div class="flex-between" >
<div>招标文件:<span @click="download(bidDetail.fileUrl)">{{bidDetail.fileName}}</span></div> <div>招标文件:<span @click="download(bidDetail.fileUrl)">{{bidDetail.fileName}}</span></div>
<div>开标信息:<span>开标一览表</span></div> <div>开标信息:<span>开标一览表</span></div>
</div> </div>
......
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
<dataBreadcrumb :breads="breads"></dataBreadcrumb> <dataBreadcrumb :breads="breads"></dataBreadcrumb>
<changeNav :navs="navs"></changeNav> <changeNav :navs="navs"></changeNav>
<div class="flex-between" style="width: 80%;margin:30px auto 20px"> <div class="flex-between" style="width: 80%;margin:30px auto 20px">
<div>项目编号:ZBXM456785678678</div> <div>项目编号:{{projectCode}}</div>
<div>项目名称:大楼外墙翻新</div> <div>项目名称:{{projectName}}</div>
</div> </div>
<dataTable :table-data="tableData" :columns="columns" :is-index="true"> <dataTable :table-data="tableData" :columns="columns" :is-index="true">
<el-table-column slot="operate" label="操作" align="center" fixed="right" width="100"> <el-table-column slot="operate" label="操作" align="center" fixed="right" width="100">
...@@ -36,6 +36,8 @@ export default { ...@@ -36,6 +36,8 @@ export default {
}, },
data() { data() {
return { return {
projectCode:"",
projectName:"",
projectId:"", projectId:"",
navs: ['澄清质疑'], navs: ['澄清质疑'],
breads: ['招标管理', '招标项目管理', '工作台'], breads: ['招标管理', '招标项目管理', '工作台'],
...@@ -69,6 +71,8 @@ export default { ...@@ -69,6 +71,8 @@ export default {
}, },
created() { created() {
this.getClarifyinquiryList(); this.getClarifyinquiryList();
this.projectCode=localStorage.getItem("projectCode")
this.projectName=localStorage.getItem("projectName")
}, },
methods: { methods: {
back() { back() {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div class="content"> <div class="content">
<dataBreadcrumb :breads="breads"></dataBreadcrumb> <dataBreadcrumb :breads="breads"></dataBreadcrumb>
<div class="message"> <div class="message">
<div class="flex-between" style="width: 50%;"> <div class="flex-between" >
<div>招标文件:<span @click="download(bidDetail.fileUrl)">{{bidDetail.fileName}}</span></div> <div>招标文件:<span @click="download(bidDetail.fileUrl)">{{bidDetail.fileName}}</span></div>
<div>开标信息:<span>开标一览表</span></div> <div>开标信息:<span>开标一览表</span></div>
</div> </div>
...@@ -33,31 +33,31 @@ ...@@ -33,31 +33,31 @@
<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">澄清质询查看</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.qualification">通过</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.conformity">通过</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.bidRejection">通过</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">通过</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>
<el-table-column slot="operate" label="操作" align="center" fixed="right"> <el-table-column slot="operate" label="操作" align="center" fixed="right">
...@@ -77,7 +77,16 @@ ...@@ -77,7 +77,16 @@
<div v-else></div> <div v-else></div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column slot="operate" label="排名" align="center" fixed="right">
<template slot-scope="scope">
<div v-if="scope.row.commercialGrade">{{scope.$index+1}}</div>
</template>
</el-table-column>
<el-table-column slot="operate" label="最终得分" align="center" fixed="right">
<template slot-scope="scope">
<div v-if="scope.row.commercialGrade">{{(scope.row.commercialGrade+scope.row.skillGrade+scope.row.priceGrade)}}</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">
<el-button type="text" size="small" @click="Edit(scope.row,scope.$index)">编辑</el-button> <el-button type="text" size="small" @click="Edit(scope.row,scope.$index)">编辑</el-button>
...@@ -97,7 +106,7 @@ ...@@ -97,7 +106,7 @@
</div> </div>
<!-- 编辑评审信息--> <!-- 编辑评审信息-->
<el-dialog :visible.sync="isEvaluate" title="编辑"> <el-dialog :visible.sync="isEvaluate" title="编辑">
<el-form :model="evaluateForm"> <el-form :model="evaluateForm" label-width="100px">
<el-form-item label="资格审查"> <el-form-item label="资格审查">
<el-radio v-model="evaluateForm.qualification" :label="true">通过</el-radio> <el-radio v-model="evaluateForm.qualification" :label="true">通过</el-radio>
<el-radio v-model="evaluateForm.qualification" :label="false">未通过</el-radio> <el-radio v-model="evaluateForm.qualification" :label="false">未通过</el-radio>
...@@ -121,22 +130,20 @@ ...@@ -121,22 +130,20 @@
</div> </div>
</el-dialog> </el-dialog>
<!-- 编辑公司排名--> <!-- 编辑公司排名-->
<el-dialog title="编辑" :visible.sync="isRank"> <el-dialog title="编辑" :visible.sync="isRank" width="40%">
<el-form :model="rankForm"> <el-form :model="rankForm">
<el-form-item label="投标价">
<el-input v-model.trim="rankForm.price" maxlength="30"></el-input>
</el-form-item>
<el-form-item label="商务评分"> <el-form-item label="商务评分">
<el-input v-model.trim="rankForm.commercialGrade" maxlength="30"></el-input> <el-input-number v-model="rankForm.commercialGrade" :min="0" :controls="false" :precision="2" placeholder="输入"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="技术评分"> <el-form-item label="技术评分">
<el-input v-model.trim="rankForm.skillGrade" maxlength="30"></el-input> <el-input-number v-model="rankForm.skillGrade" :min="0" :controls="false" :precision="2" placeholder="输入"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="价格评分"> <el-form-item label="价格评分">
<el-input v-model.trim="rankForm.priceGrade" maxlength="30"></el-input> <el-input-number v-model="rankForm.priceGrade" :min="0" :controls="false" :precision="2" placeholder="输入"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="评标价 "> <el-form-item label="评标价 ">
<el-input v-model.trim="rankForm.evaluationPrice" maxlength="30"></el-input> <el-input-number v-model="rankForm.evaluationPrice" :min="0" :controls="false" :precision="2" placeholder="输入"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="是否中标候选人"> <el-form-item label="是否中标候选人">
<el-radio v-model="rankForm.winPerson" :label="true"></el-radio> <el-radio v-model="rankForm.winPerson" :label="true"></el-radio>
...@@ -153,8 +160,7 @@ ...@@ -153,8 +160,7 @@
<script> <script>
import { import {
companyRank, bidderlist,
CompanyEvaluatec,
saveCompanyEvaluate, saveCompanyEvaluate,
saveCompanyRank, saveCompanyRank,
bidBookDownload, bidBookDownload,
...@@ -216,14 +222,6 @@ ...@@ -216,14 +222,6 @@
label: '评标价(元)', label: '评标价(元)',
prop: 'evaluationPrice' prop: 'evaluationPrice'
}, },
{
label: '排名',
prop: 'rank'
},
{
label: '最终得分',
prop: 'finalScore'
},
{ {
slot: 'operate' slot: 'operate'
} }
...@@ -250,14 +248,24 @@ ...@@ -250,14 +248,24 @@
] // 操作列 ] // 操作列
} }
}, },
created() { created() {
this.getcompanyRank()
this.getCompanyEvaluatec()
this.getbidFilelist(); this.getbidFilelist();
this.getchangeNoticelist(); this.getchangeNoticelist();
this.getbidBookDownload(); this.getbidBookDownload();
this.getbidderlist()
}, },
methods: { methods: {
jump() {
this.$router.push("/purchaser/bid/bidEvaluation/review/clear")
},
compare(property) {
return function(a, b) {
var value1 = a[property];
var value2 = b[property];
return value1 - value2;
}
},
getfile(val) { getfile(val) {
this.file = val this.file = val
}, },
...@@ -333,7 +341,7 @@ ...@@ -333,7 +341,7 @@
Edit(row, index) { Edit(row, index) {
this.rankForm = Object.assign({}, row) this.rankForm = Object.assign({}, row)
this.isRank = true, this.isRank = true,
this.RankIdx = index this.RankIdx = index
}, },
// 提交排名信息 // 提交排名信息
...@@ -342,16 +350,18 @@ ...@@ -342,16 +350,18 @@
const { const {
code, code,
msg msg
} = await saveCompanyRank(this.form) } = await saveCompanyRank(this.rankForm)
if (code === 200) { if (code === 200) {
this.$message.success(msg) this.$message.success(msg)
this.isRank = false this.isRank = false
this.$set(this.rank, this.rankIdx, this.rankForm) this.$set(this.rank, this.RankIdx, this.rankForm)
this.rank.sort(this.compare('finalScore'))
} }
} catch (e) { } catch (e) {
console.log(e) console.log(e)
} }
}, },
//评审信息编辑 //评审信息编辑
handleEdit(row, index) { handleEdit(row, index) {
this.evaluateForm = Object.assign({}, row) this.evaluateForm = Object.assign({}, row)
...@@ -364,7 +374,7 @@ ...@@ -364,7 +374,7 @@
const { const {
code, code,
msg msg
} = await saveCompanyEvaluate(this.form) } = await saveCompanyEvaluate(this.evaluateForm)
if (code === 200) { if (code === 200) {
this.$message.success(msg) this.$message.success(msg)
this.isEvaluate = false this.isEvaluate = false
...@@ -374,36 +384,16 @@ ...@@ -374,36 +384,16 @@
console.log(e) console.log(e)
} }
}, },
// 查投标公司评审信息
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) {
this.rank = data
} async getbidderlist() {
} catch (e) { let projectId = localStorage.getItem("projectId");
console.log(e) const {
} data,
code
} = await bidderlist(projectId)
this.review = data
this.rank = data
} }
} }
} }
......
...@@ -31,7 +31,7 @@ export default { ...@@ -31,7 +31,7 @@ export default {
pageObj: { pageObj: {
size: 10, size: 10,
currentPage: 1, currentPage: 1,
type:"CHANGE", noticeType:"CHANGE",
func: (currentPage) => { func: (currentPage) => {
this.pageTurning(currentPage) this.pageTurning(currentPage)
} }
......
...@@ -28,7 +28,7 @@ export default { ...@@ -28,7 +28,7 @@ export default {
pageObj: { pageObj: {
size: 10, size: 10,
currentPage: 1, currentPage: 1,
type:"ABORTIVE", noticeType:"ABORTIVE",
func: (currentPage) => { func: (currentPage) => {
this.pageTurning(currentPage) this.pageTurning(currentPage)
} }
......
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
} }
}, },
created() { created() {
this.pageObj.projectId = 2 this.pageObj.projectId = localStorage.getItem("projectId")
}, },
methods: { methods: {
handleExamine(feeId) { handleExamine(feeId) {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div class="content"> <div class="content">
<dataBreadcrumb :breads="breads"></dataBreadcrumb> <dataBreadcrumb :breads="breads"></dataBreadcrumb>
<div class="message"> <div class="message">
<div class="flex-between" style="width: 50%;"> <div class="flex-between" >
<div>招标文件:<span @click="download(bidDetail.fileUrl)">{{bidDetail.fileName}}</span></div> <div>招标文件:<span @click="download(bidDetail.fileUrl)">{{bidDetail.fileName}}</span></div>
<div>开标信息:<span>开标一览表</span></div> <div>开标信息:<span>开标一览表</span></div>
</div> </div>
......
...@@ -5,24 +5,7 @@ ...@@ -5,24 +5,7 @@
<dataBreadcrumb :breads="breads"></dataBreadcrumb> <dataBreadcrumb :breads="breads"></dataBreadcrumb>
</div> </div>
<div class="info_box"> <div class="info_box">
<div class="info_mes"> <noticeDetail></noticeDetail>
<p class="left_mes">
项目名称:{{projectName}}项目 项目编号:{{projectCode}}
</p>
<p class="right_mes">
发布日期:{{detail.createTime}}
</p>
</div>
<h1>清河县京九线以东天然气供气工程招标公告</h1>
<div class="content_list">
<div class="flex">
<div>附件下载:</div>
<ul>
<li>111.pdf</li>
</ul>
</div>
</div>
<el-row> <el-row>
<el-button @click="back">返回</el-button> <el-button @click="back">返回</el-button>
</el-row> </el-row>
...@@ -30,43 +13,26 @@ ...@@ -30,43 +13,26 @@
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { import noticeDetail from '@components/detail/noticeDetail.vue'
biddingProjectId
} from '@api/common/list'
import dataBreadcrumb from '@components/dataBreadcrumb.vue' import dataBreadcrumb from '@components/dataBreadcrumb.vue'
export default { export default {
components: { components: {
dataBreadcrumb dataBreadcrumb,
noticeDetail
}, },
data() { data() {
return { return {
breads: ['投标管理', '我参与的项目', '查看投标邀请书'], breads: ['投标管理', '我参与的项目', '查看投标邀请书'],
projectName:"",
projectCode:"",
detail:""
} }
}, },
methods: { methods: {
back() { back() {
this.$router.go(-1) this.$router.go(-1)
}, },
// 获取详情
async getbiddingProjectId() {
let projectId = localStorage.getItem("projectId")
const {
data,
code
} = await biddingProjectId(projectId)
this.detail = data
},
}, },
created() {
this.projectName=localStorage.getItem("projectName")
this.projectCode=localStorage.getItem("projectCode")
this.getbiddingProjectId()
}
} }
</script> </script>
...@@ -85,38 +51,7 @@ export default { ...@@ -85,38 +51,7 @@ export default {
background: #fff; background: #fff;
} }
.title_info {
margin-top: 20px;
margin-left: 40px;
margin-bottom: 50px;
}
.info_mes {
margin-bottom: 40px;
display: flex;
justify-content: center;
}
.info_mes p {
display: inline-block;
}
.info_mes .left_mes {
margin-right: 200px;
font-size:16px ;
}
.right_mes{
font-size:16px ;
}
h1 {
display: flex;
justify-content: center;
}
.content_list { .content_list {
margin-left: 100px;
margin-right: 100px;
margin-top: 50px; margin-top: 50px;
} }
...@@ -131,13 +66,14 @@ export default { ...@@ -131,13 +66,14 @@ export default {
margin-bottom: 10px; margin-bottom: 10px;
} }
.message>p{
font-weight: bold;
}
.el-row { .el-row {
display: flex; display: flex;
justify-content: center; justify-content: center;
margin-top: 50px; margin-top: 50px;
}
.message>p{
font-weight: bold;
} }
</style> </style>
...@@ -99,11 +99,11 @@ export default { ...@@ -99,11 +99,11 @@ export default {
modulars: [ modulars: [
{ {
label:"专家评审", label:"专家评审",
url:"/purchaser/bid/bidEvaluation/projectManager/content" url:"/purchaser/bid/bidEvaluation/review/review"
}, },
{ {
label:"项目经理", label:"项目经理",
url:"/purchaser/bid/bidEvaluation/review/review" url:"/purchaser/bid/bidEvaluation/projectManager/content"
}, },
{ {
label:"评标查看", label:"评标查看",
......
...@@ -145,7 +145,9 @@ export default { ...@@ -145,7 +145,9 @@ export default {
}, },
created(){ created(){
let token=getSearchString("token"); let token=getSearchString("token");
localStorage.setItem("token",token) if(token!=="undefined"){
localStorage.setItem("token",token)
}
this.gethome() this.gethome()
}, },
methods: { methods: {
......
...@@ -58,6 +58,7 @@ export default { ...@@ -58,6 +58,7 @@ export default {
data.accessoryUrl=file[0].fileUrl data.accessoryUrl=file[0].fileUrl
data.fileName=file[0].fileName data.fileName=file[0].fileName
data.noticeId=this.noticeId data.noticeId=this.noticeId
data.companyId=localStorage.getItem("companyId")
const { const {
msg, msg,
code code
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
<el-table-column slot="operate" label="操作" fixed="right" width="100"> <el-table-column slot="operate" label="操作" fixed="right" width="100">
<template slot-scope = "scope"> <template slot-scope = "scope">
<el-button type="text" align="center" v-if="scope.row.operation=='无权限'">无权限</el-button> <el-button type="text" align="center" v-if="scope.row.operation=='无权限'">无权限</el-button>
<el-button type="text" align="center" @click="isDown(scope.row.fileUrl)" v-else>下载</el-button> <el-button type="text" align="center" @click="isDown(scope.row.fileUrl,scope.row.id)" v-else>下载</el-button>
</template> </template>
</el-table-column> </el-table-column>
</dataTable> </dataTable>
...@@ -69,13 +69,15 @@ export default { ...@@ -69,13 +69,15 @@ export default {
}, },
methods:{ methods:{
// 检测是否能下载 // 检测是否能下载
async isDown(url){ async isDown(url,id){
try { try {
let projectId=localStorage.getItem("projectId") let data={}
data.bidBookId=id
data.projectId=localStorage.getItem("projectId")
const { const {
msg, msg,
code code
} = await downLoad(projectId) } = await downLoad(data)
if (code === 200) { if (code === 200) {
window.open(url) window.open(url)
}else{ }else{
......
<template> <template>
<div > <div>
<div class="content-head"> <div class="content-head">
<breadCrumb :breads = "breads"></breadCrumb> <breadCrumb :breads="breads"></breadCrumb>
<h3>查看询价公告</h3> <h3>查看询价公告</h3>
<h5>查看询价公告</h5> <h5>查看询价公告</h5>
</div> </div>
<div class="home"> <div class="content">
<h1>苍南县公安局关于督查视频服务器5台在线询价公告</h1> <priceDetail></priceDetail>
<div class="flex-center"> <div class="centerButton">
<h6 style="margin-right:60px;margin-top:30px">询价所在地:苍南县</h6> <el-button type="primary" @click="back">返回</el-button>
<h6 style="margin-buttom:60px;margin-top:30px">日期:2020-08-03</h6> </div>
</div> </div>
<div class="form"> </div>
<h3 style="margin-buttom:30px">基本信息</h3>
<table border="0" width="100%" height="120px"> </div>
<tr>
<td>询价单编号</td>
<td>32020080349638311</td>
<td>采购记录</td>
<td>服务器*</td>
<td>项目优先级</td>
<td>非紧急</td>
</tr>
<tr>
<td>报价开始时间</td>
<td>2020-08-03 10:28:39</td>
<td>报价截止时间</td>
<td>2020-08-06 15:00:00</td>
<td>采购单位</td>
<td>苍南县公安局</td>
</tr>
<tr>
<td>采购单位联系人</td>
<td>王荔荣</td>
<td>联系方式</td>
<td>13706628929</td>
<td>传真号码</td>
<td>0577-68710076</td>
</tr>
</table>
<div class="appendix ">
<div>预算金额(元)</div>
<div>435000.00</div>
</div>
<div class="appendix ">
<div>成交规则及确认方式</div>
<div>自动成交</div>
</div>
<h3 >供应商要求 </h3>
<div class="appendix ">
<div>供应商规模要求</div>
<div>阿里巴巴</div>
</div>
<div class="appendix ">
<div>供应商资格要求</div>
<div>自动成交</div>
</div>
<div class="appendix ">
<div>供应商区域范围要求</div>
<div>浙江省</div>
</div>
<h3>询价商品清单</h3>
<dataTable :table-data="tabledata" :columns = "columns"></dataTable>
<div class="appendix list pos">
<div >附件</div>
<div>IMG_0208.jpg</div><!-- 此处放文件 -->
</div>
<h3>商务要求</h3>
<div class="appendix bus-require pos">
<div class="flex-center">
<p>商务要求</p>
</div>
<div>1、 本次招标内容为开平碉楼与村落保护规划服务(具体详见技术要求)。投标人不得将本项目中的内容拆散来投标。 2、 投标人资格要求: (1)投标人应当是具有文物保护工程勘探设计甲级资质的法人,其中其业务范围必须包含文物保护规划编制; (2)投标人应当具有世界文化遗产保护规划设计的工作经验。 3、 投标人应当在投标文件中详细列出并提供相关证明文件证明本项目的管理负责人和技术负责人的学历、职称、从事相关工作的时间,承担过类似项目名称、责任内容、完成日期以及其它业绩证明材料。 4、 投标人应当具有完整的质量保证体系。 5、 投标人应当在投标文件中提供具有文物保护工程勘探设计资格证明等文件。</div>
</div>
<div class="button">
<el-button type="primary" @click="back">返回</el-button>
</div>
</div>
</div>
</div>
</template> </template>
<script> <script>
import dataTable from '@components/nopageTable.vue' import priceDetail from '@components/detail/priceDetail.vue'
import breadCrumb from '@components/dataBreadcrumb.vue' import breadCrumb from '@components/dataBreadcrumb.vue'
export default { export default {
components: { components: {
dataTable, priceDetail,
breadCrumb breadCrumb
}, },
data() { data() {
return { return {
dialogFormVisible: false, breads: ['招标管理 ', '招标项目管理', '工作台'],
breads: ['投标管理 ', '在线报名', '询价公告'], }
tabledata: [{ },
name: '大白菜', methods: {
acount: '100', Prev() {
unit: '斤', this.$router.push('/supply/Join_items/work_place/all_content')
brand: '天然', }
size: '周杰伦', },
price: '100', }
remarks: '无',
quote: '100.00'
},
{
name: '大白菜',
acount: '100',
unit: '斤',
brand: '天然',
size: '周杰伦',
price: '100',
remarks: '无',
quote: '100.00'
}, {
name: '大白菜',
acount: '100',
unit: '斤',
brand: '天然',
size: '周杰伦',
price: '100',
remarks: '无',
quote: '100.00'
}, {
name: '大白菜',
acount: '100',
unit: '斤',
brand: '天然',
size: '周杰伦',
price: '100',
remarks: '无',
quote: '100.00'
}, {
name: '大白菜',
acount: '100',
unit: '斤',
brand: '天然',
size: '周杰伦',
price: '100',
remarks: '无',
quote: '100.00'
}],
columns: [{
label: '标的名称',
prop: 'name'
},
{
label: '数量',
prop: 'acount'
}, {
label: '计量单位',
prop: 'unit'
}, {
label: '品牌',
prop: 'brand'
}, {
label: '规格型号',
prop: 'size'
}, {
label: '标杆价',
prop: 'price'
}, {
label: '备注',
prop: 'remarks'
}, {
label: '我的报价(元)',
prop: 'quote'
}]
}
},
methods: {
Prev() {
this.$router.push('/supply/Join_items/work_place/all_content')
}
}
}
</script> </script>
<style scoped> <style scoped>
.Tips{
color:#409EFF
}
.notice>h4{
font-size: 16px;
font-weight: bold;
margin-right: 30px;
}
.notice{
margin:20px 0;
border-bottom: 1px solid #ccc;
}
h2{
/* margin-top:; */
margin-bottom:10px;
}
h6{
margin-bottom:10px;
}
.home{
padding:30px;
background: #fff;
box-sizing: border-box;
/* margin-left:20px; */
}
h1{
display: flex;
justify-content: center;
}
.form{
padding:20px;
box-sizing: border-box;
}
.form h3{
margin-top:20px;
margin-bottom:20px;
font-weight: bold;
}
/* table>tr{
text-align: center;
} */
table{
border-collapse: collapse;
}
table>tr>td{
font-size: 16px;
border: 1px solid #ccc;
padding-left: 10px;
}
table>tr>td:nth-child(odd){
background: #F0F0F0
}
.right-s{
padding-right:200px;
}
.appendix{
display: flex;
border: 1px solid #ccc;
}
.appendix>div:first-child{
width:159px;
border-right: 1px solid #ccc;
box-sizing: border-box;
padding-left: 10px;
}
.appendix>div:last-child{
padding-left: 10px;
}
.appendix>div:nth-child(odd){
background: #F0F0F0
}
.appendix>div{
font-size:16px;
line-height: 40px;
}
.list>:first-child{
height:120px;
line-height: 120px;
}
.list{
margin-top: 20px;
}
.bus-require>div:first-child{
width:400px;
}
.bus-require>div:last-child{
font-size: 10px;
}
.pos>div:first-child{
display: flex;
justify-content: center;
}
.last-pos{
margin-left:40px;
margin-top:20px;
}
.last-pos>div:first-child{
width:65px;
}
input{
width:100%;
height:70px;
}
.button{
width:100px;
margin:50px auto
}
.home>h1{
font-weight: bold;
}
</style> </style>
...@@ -29,8 +29,6 @@ import dataBreadcrumb from '@components/dataBreadcrumb.vue' ...@@ -29,8 +29,6 @@ import dataBreadcrumb from '@components/dataBreadcrumb.vue'
export default { export default {
components: { components: {
dataBreadcrumb, dataBreadcrumb,
projectName,
projectCode
}, },
data() { data() {
return { return {
......
...@@ -48,12 +48,12 @@ export default { ...@@ -48,12 +48,12 @@ export default {
title: '招标', title: '招标',
modulars:[ modulars:[
{ {
label:"查看询价公告", label:"项目信息",
url:"/supply/bid/joinProject/bidStage/projectInformation" url:"/supply/bid/joinProject/bidStage/projectInformation"
}, },
{ {
label:"查看询价公告", label:"查看询价公告",
url:"/supply/bid/signupOnline/seePrice" url:"/supply/bid/joinProject/bidStage/seePrice"
}, },
{ {
label:"查看招标公告", label:"查看招标公告",
...@@ -124,7 +124,7 @@ export default { ...@@ -124,7 +124,7 @@ export default {
}, },
{ {
label:"保证金缴纳管理", label:"保证金缴纳管理",
url:"/supply/bid/joinProject/bidStage/bondList" url:"/supply/bid/joinProject/bidStage/bond"
}] }]
}, },
] ]
......
...@@ -5,126 +5,7 @@ ...@@ -5,126 +5,7 @@
<dataBreadcrumb :breads="breads"></dataBreadcrumb> <dataBreadcrumb :breads="breads"></dataBreadcrumb>
</div> </div>
<div class="info_box"> <div class="info_box">
<div class="info_mes">
<p class="left_mes">
项目名称:建设路北伸(丰南界-南湖大道)项目 项目编号:I1301000075023964001
</p>
<p class="right_mes">
发布日期:2020年07月30日
</p>
</div>
<h1>清河县京九线以东天然气供气工程招标公告</h1>
<div class="content_list">
<div>
<h3 style="border-bottom:1px solid #CCC">
1.招标列表
</h3>
<p>
本招标项目 清河县京九线以东天然气供气工程 (项目名称)已由 清河县行政审批局 (项目审批、核准或备案机关名称)以 清批核〔2020〕003号 (批文名称及编号)批准建设,招标人(项目业主)为 清河县盛焰天然气有限公司
,建设资金来自 自筹资金 (资金来源),项目出资比例为 100% 。项目已具备招标条件,现对该项目的施工进行公开招标
</p>
</div>
<div>
<h3 style="border-bottom:1px solid #CCC">
2.项目概况与招标范围
</h3>
<p>
2.1项目概况:2.1建设地点:油坊镇政府东侧-唐唐口村段,距道路边沿西侧、北侧3米;村道(张广庄-李庄)双城集村至前苑村,距道路边沿东侧4.5米:大许村西,道路边沿东侧3米(过村路段道路边沿1.5米,加装保护),大许村北-李家井,距道路边沿北侧、西侧3米,前屯-连冢寺,距道路边沿西侧3米;连冢寺村-710乡道,距道路边沿北侧6.5米;710乡(连冢寺西侧桥-张豆坞村北)距道路边沿东侧4米;连冢寺-常庄科距道路边沿北侧4米。2.2建设规模:清河县京九线以东天然气供气工程,铺设管道总长18.085㎞,具体详见审定施工图纸及工程量清单所列全部工程内容。2.3合同估算价:1353947.57元2.4质量标准:竣工验收达到合格标准2.5计划工期:60日历天。2.6标段划分:
1个标段。
2.2招标范围:经勘查现场,本工程未开工建设。本次招标范围为审定施工图纸及工程量清单所列全部工程内容。
(说明本次招标项目的建设地点、规模、合同估算价、计划工期、招标范围、标段划分(如果有)等)。
</p>
</div>
<div>
<h3 style="border-bottom:1px solid #CCC">
3.投标人资格要求
</h3>
<p>
3.1 本次招标对投标人的资格要求如下:
3.1.1资质要求:1.投标人必须具有独立的法人资格。2.本次招标要求投标人须具备建设行政主管部门核发的市政公用工程施工总承包贰级及以上资质,具备特种设备安装改造维修许可证(压力管道,GB1),同时具备有效的安全生产许可证,并在人员、设备、资金等方面具有相应的施工能力。其中投标人拟派项目经理须具备市政公用工程专业贰级(含以上级)注册建造师执业资格,具备有效的安全生产考核合格证书(B
类),且未担任其他在施建设工程的项目经理。3.在河北省住房和城乡建设厅网站www.hebjs.gov.cn进冀建筑企业基础信息查询该企业进冀信息。4.投标单位没有违章查处和限制投标的情形,近一年无不良记录,评标时由评标专家对投标企业是否有不良记录上网查询:(1)信用中国(投标人在信用中国中的不良记录有明确的处罚结果,依据结果执行;投标企业在信用中国中为失信被执行人不得参与投标);(2)河北省住房和城乡建设厅(黑名单)http://zfcxjst.hebei.gov.cn/。提供《建筑材料采购使用承诺书》;5.与招标人存在利害关系可能影响招标公正性的投标人,不得投标。6.本次招标不接受联合体投标。
,其中,投标人拟派项目经理须具备 市政公用工程 专业 贰级(含以上级) 级注册建造师执业资格,具备有效的安全生产考核合格证书,且未担任其他在施建设工程项目的项目经理。
3.2 本次招标 不接受 (接受或不接受)联合体投标。
3.3 各投标人均可就本招标项目上述标段中的 1 (具体数量)个标段投标,但最多允许中标 1 (具体数量)个标段(适用于分标段的招标项目)。
</p>
</div>
<div>
<h3 style="border-bottom:1px solid #CCC">
4.投标报名
</h3>
<p>
凡有意参加投标者,请于 2020-07-30 00:00 至 2020-08-05 23:59 (法定公休日、法定节假日除外),登录 惠招标(http://www.hbidding.com)
(电子招标投标交易平台名称)报名。
</p>
</div>
<div>
<h3 style="border-bottom:1px solid #CCC">
5.招标文件的获取
</h3>
<p>
5.1 凡通过上述报名者,请于 2020-07-30 00:00 至 2020-08-05 23:59 (法定公休日、法定节假日除外),登录 惠招标(http://www.hbidding.com)
(电子招标投标交易平台名称)下载电子招标文件。
5.2 招标文件每套售价 0 元,售后不退。图纸押金 0 元,在退还图纸时退还(不计利息)。
</p>
</div>
<div>
<h3 style="border-bottom:1px solid #CCC">
6. 投标文件的递交
</h3>
<p>
6.1 投标文件递交的截止时间(投标截止时间,下同)为 2020-08-21 14:30 ,投标人应在截止时间前通过 惠招标平台 (电子招标投标交易平台)递交电子投标文件。
6.2 逾期送达的投标文件,电子招标投标交易平台将予以拒收。
</p>
</div>
<div>
<h3 style="border-bottom:1px solid #CCC">
7. 发布公告的媒介
</h3>
<p>
本次招标公告同时在 河北省招标投标公共服务平台、清河县公共资源交易中心网、惠招标电子招投标交易平台 (发布公告的媒介名称)上发布。
</p>
</div>
<div>
<h3 style="border-bottom:1px solid #CCC">
8. 联系方式
</h3>
<div class="flex message">
<p style="margin-right: 200px;">
招标人: 清河县盛焰天然气有限公司 <br>
地址: 清河县 <br>
邮编: 050000 <br>
联系人: 许剑英 <br>
电话: 13231980428 <br>
传真: / <br>
电子邮件: / <br>
网址: / <br>
开户银行: // <br>
帐号: / <br>
</p>
<p>
招标代理机构: 河北磊砺工程管理咨询有限公司 <br>
地址: 河北省邢台市桥东区新华南路328号7A13号 <br>
邮编: 054000 <br>
联系人: 杨现生 <br>
电话: 18617655375 <br>
传真: / <br>
电子邮件: 349933856@qq.com <br>
网址: / <br>
开户银行: 中国建设银行股份有限公司邢台新兴东大街支行 <br>
帐号: 13050165550800000847 <br>
</p>
</div>
</div>
</div>
<el-row> <el-row>
<el-button> <el-button>
<a href="/Online_registration">返回</a> <a href="/Online_registration">返回</a>
...@@ -154,16 +35,15 @@ export default { ...@@ -154,16 +35,15 @@ export default {
this.id=this.$route.query.id this.id=this.$route.query.id
}, },
methods:{ methods:{
signup(){ back() {
let id=this.id this.$router.go(-1)
this.$router.push(`/supply/bid/signupOnline/SignUp?id=${id}`) },
},
async getBiddingDetail() { async getBiddingDetail() {
try { try {
const { const {
data, data,
code code
} = await biddingDetail(1) } = await biddingDetail(id)
if (code === 200) { if (code === 200) {
this.tableData = data this.tableData = data
} }
......
<template> <template>
<div> <div class="content">
<div class="home"> <breadCrumb :breads="breads"></breadCrumb>
<breadCrumb :breads="breads"></breadCrumb> <priceDetail></priceDetail>
<h1>苍南县公安局关于督查视频服务器5台在线询价公告</h1> <div class="notice flex">
<div class="flex-center"> <h4>招标公告</h4>
<h6 style="margin-right:60px;margin-top:30px">询价所在地:苍南县</h6> <p>只有报价后才能参与投标报名</p>
<h6 style="margin-buttom:60px;margin-top:30px">日期:2020-08-03</h6> </div>
</div> <div class="Tips">
<div class="form"> 图使馆招标公告(2020-07-30)
<h3 style="margin-buttom:30px">基本信息</h3>
<table border="0" width="100%" height="120px">
<tr>
<td>询价单编号</td>
<td>32020080349638311</td>
<td>采购记录</td>
<td>服务器*</td>
<td>项目优先级</td>
<td>非紧急</td>
</tr>
<tr>
<td>报价开始时间</td>
<td>2020-08-03 10:28:39</td>
<td>报价截止时间</td>
<td>2020-08-06 15:00:00</td>
<td>采购单位</td>
<td>苍南县公安局</td>
</tr>
<tr>
<td>采购单位联系人</td>
<td>王荔荣</td>
<td>联系方式</td>
<td>13706628929</td>
<td>传真号码</td>
<td>0577-68710076</td>
</tr>
</table>
<div class="appendix ">
<div>预算金额(元)</div>
<div>435000.00</div>
</div>
<div class="appendix ">
<div>成交规则及确认方式</div>
<div>自动成交</div>
</div>
<h3>供应商要求 </h3>
<div class="appendix ">
<div>供应商规模要求</div>
<div>阿里巴巴</div>
</div>
<div class="appendix ">
<div>供应商资格要求</div>
<div>自动成交</div>
</div>
<div class="appendix ">
<div>供应商区域范围要求</div>
<div>浙江省</div>
</div>
<h3>询价商品清单</h3>
<dataTable :table-data="tabledata" :columns="columns"></dataTable>
<div class="appendix list pos">
<div>附件</div>
<div>IMG_0208.jpg</div><!-- 此处放文件 -->
</div>
<h3>商务要求</h3>
<div class="appendix bus-require pos">
<div class="flex-center">
<p>商务要求</p>
</div>
<div>1、 本次招标内容为开平碉楼与村落保护规划服务(具体详见技术要求)。投标人不得将本项目中的内容拆散来投标。 2、 投标人资格要求: (1)投标人应当是具有文物保护工程勘探设计甲级资质的法人,其中其业务范围必须包含文物保护规划编制; (2)投标人应当具有世界文化遗产保护规划设计的工作经验。 3、 投标人应当在投标文件中详细列出并提供相关证明文件证明本项目的管理负责人和技术负责人的学历、职称、从事相关工作的时间,承担过类似项目名称、责任内容、完成日期以及其它业绩证明材料。 4、 投标人应当具有完整的质量保证体系。 5、 投标人应当在投标文件中提供具有文物保护工程勘探设计资格证明等文件。</div>
</div>
<div class="notice flex">
<h4>招标公告</h4>
<p>只有报价后才能参与投标报名</p>
</div>
<div class="Tips">
图使馆招标公告(2020-07-30)
</div>
<div class="centerButton">
<el-button type="primary" @click="dialogFormVisible = true">我要报价</el-button>
<el-button type="primary" @click="see">查看报价供应商情况</el-button>
</div>
</div>
</div> </div>
<div class="centerButton">
<el-button type="primary" @click="dialogFormVisible = true">我要报价</el-button>
<el-button type="primary" @click="see">查看报价供应商情况</el-button>
</div>
<!-- 报价弹窗 --> <!-- 报价弹窗 -->
<el-dialog :visible.sync="dialogFormVisible" title="报价" width="60%"> <el-dialog :visible.sync="dialogFormVisible" title="报价" width="60%">
<dataTable :table-data="commoditylist" :columns="commoditycolumns"> <dataTable :table-data="commoditylist" :columns="commoditycolumns">
...@@ -114,16 +46,18 @@ ...@@ -114,16 +46,18 @@
offerBidderlist, offerBidderlist,
offerPrice offerPrice
} from '@api/supply/bid' } from '@api/supply/bid'
import priceDetail from '@components/detail/priceDetail.vue'
import dataTable from '@components/nopageTable.vue' import dataTable from '@components/nopageTable.vue'
import breadCrumb from '@components/dataBreadcrumb.vue' import breadCrumb from '@components/dataBreadcrumb.vue'
export default { export default {
components: { components: {
dataTable, dataTable,
breadCrumb breadCrumb,
priceDetail
}, },
data() { data() {
return { return {
offerBidderlist:[], offerBidderlist: [],
offerBidder: false, offerBidder: false,
columns: [], columns: [],
tabledata: [], tabledata: [],
...@@ -168,7 +102,7 @@ ...@@ -168,7 +102,7 @@
} }
}, },
methods: { methods: {
see(){ see() {
this.offerBidder = true this.offerBidder = true
this.getofferBidderlist() this.getofferBidderlist()
}, },
...@@ -176,20 +110,7 @@ ...@@ -176,20 +110,7 @@
Prev() { Prev() {
this.$router.push('/supply/Join_items/work_place/all_content') this.$router.push('/supply/Join_items/work_place/all_content')
}, },
async getNoticeEnquiry() {
try {
let projectId = localStorage.getItem("projectId")
const {
data,
code
} = await noticeEnquiry(projectId)
if (code === 200) {
this.tableData = data
}
} catch (e) {
console.log(e)
}
},
// 查看询价公告里的商品报价列表 // 查看询价公告里的商品报价列表
async getcommoditylist() { async getcommoditylist() {
let projectId = localStorage.getItem("projectId") let projectId = localStorage.getItem("projectId")
...@@ -223,13 +144,13 @@ ...@@ -223,13 +144,13 @@
}) })
message.commodityList = commodityList message.commodityList = commodityList
const { const {
msg, msg,
code code
} = await offerPrice(message) } = await offerPrice(message)
if(code==200){ if (code == 200) {
this.$message.success(msg) this.$message.success(msg)
this.dialogFormVisible=false this.dialogFormVisible = false
}else{ } else {
this.$message.error(msg) this.$message.error(msg)
} }
} catch (e) { } catch (e) {
...@@ -238,144 +159,11 @@ ...@@ -238,144 +159,11 @@
} }
}, },
created() { created() {
this.getNoticeEnquiry();
this.getcommoditylist(); this.getcommoditylist();
} }
} }
</script> </script>
<style scoped> <style scoped>
.Tips {
color: #409EFF
}
.notice>h4 {
font-size: 16px;
font-weight: bold;
margin-right: 30px;
}
.notice {
margin: 20px 0;
border-bottom: 1px solid #ccc;
}
h2 {
/* margin-top:; */
margin-bottom: 10px;
}
h6 {
margin-bottom: 10px;
}
.home {
padding: 30px;
background: #fff;
box-sizing: border-box;
/* margin-left:20px; */
}
h1 {
display: flex;
justify-content: center;
}
.form {
padding: 20px;
box-sizing: border-box;
}
.form h3 {
margin-top: 20px;
margin-bottom: 20px;
font-weight: bold;
}
/* table>tr{
text-align: center;
} */
table {
border-collapse: collapse;
}
table>tr>td {
font-size: 16px;
border: 1px solid #ccc;
padding-left: 10px;
}
table>tr>td:nth-child(odd) {
background: #F0F0F0
}
.right-s {
padding-right: 200px;
}
.appendix {
display: flex;
border: 1px solid #ccc;
}
.appendix>div:first-child {
width: 159px;
border-right: 1px solid #ccc;
box-sizing: border-box;
padding-left: 10px;
}
.appendix>div:last-child {
padding-left: 10px;
}
.appendix>div:nth-child(odd) {
background: #F0F0F0
}
.appendix>div {
font-size: 16px;
line-height: 40px;
}
.list>:first-child {
height: 120px;
line-height: 120px;
}
.list {
margin-top: 20px;
}
.bus-require>div:first-child {
width: 400px;
}
.bus-require>div:last-child {
font-size: 10px;
}
.pos>div:first-child {
display: flex;
justify-content: center;
}
.last-pos {
margin-left: 40px;
margin-top: 20px;
}
.last-pos>div:first-child {
width: 65px;
}
input {
width: 100%;
height: 70px;
}
</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