Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
W
web-purchase
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张冬
web-purchase
Commits
a08cad81
Commit
a08cad81
authored
Sep 29, 2020
by
张冬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新
parent
7e8ce8d2
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
229 additions
and
810 deletions
+229
-810
bid.js
src/api/purchaser/bid.js
+7
-0
bid.js
src/api/supply/bid.js
+3
-2
noticeDetail.vue
src/components/detail/noticeDetail.vue
+66
-1
content.vue
...es/purchaser/bid/bidEvaluation/projectManager/content.vue
+1
-1
clear.vue
src/pages/purchaser/bid/bidEvaluation/review/clear.vue
+6
-2
review.vue
src/pages/purchaser/bid/bidEvaluation/review/review.vue
+52
-62
changeList.vue
src/pages/purchaser/bid/bidStage/changeList/changeList.vue
+1
-1
failList.vue
src/pages/purchaser/bid/bidStage/failList/failList.vue
+1
-1
tenderFeelist.vue
...es/purchaser/bid/bidStage/tenderFeelist/tenderFeelist.vue
+1
-1
see.vue
src/pages/purchaser/bid/bidSure/see.vue
+1
-1
SeetenderAnnouncement.vue
src/pages/purchaser/bid/reviewed/SeetenderAnnouncement.vue
+11
-75
workbench.vue
src/pages/purchaser/bid/workbench.vue
+2
-2
home.vue
src/pages/purchaser/home/home.vue
+3
-1
confirm.vue
...pply/bid/joinProject/bidStage/clearManagement/confirm.vue
+1
-0
fileDownload.vue
src/pages/supply/bid/joinProject/bidStage/fileDownload.vue
+6
-4
seePrice.vue
src/pages/supply/bid/joinProject/bidStage/seePrice.vue
+33
-288
candidateSee.vue
src/pages/supply/bid/joinProject/bidSure/candidateSee.vue
+0
-2
workbench.vue
src/pages/supply/bid/joinProject/workbench.vue
+3
-3
seeAnnouncement.vue
src/pages/supply/bid/signupOnline/seeAnnouncement.vue
+5
-125
seePrice.vue
src/pages/supply/bid/signupOnline/seePrice.vue
+26
-238
No files found.
src/api/purchaser/bid.js
View file @
a08cad81
...
@@ -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
)
{
...
...
src/api/supply/bid.js
View file @
a08cad81
...
@@ -69,10 +69,11 @@ export function bidBooklist(params) {
...
@@ -69,10 +69,11 @@ export function bidBooklist(params) {
})
})
}
}
// 检测是否能下载
// 检测是否能下载
export
function
downLoad
(
p
rojectId
)
{
export
function
downLoad
(
p
arams
)
{
return
request
({
return
request
({
url
:
`bidder-bidbook/bidBook/downLoad/
${
projectId
}
`
,
url
:
"bidder-bidbook/bidBook/downLoad"
,
method
:
'get'
,
method
:
'get'
,
params
:
params
})
})
}
}
//项目完整详情查看
//项目完整详情查看
...
...
src/components/detail/noticeDetail.vue
View file @
a08cad81
<
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
>
src/pages/purchaser/bid/bidEvaluation/projectManager/content.vue
View file @
a08cad81
...
@@ -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>
...
...
src/pages/purchaser/bid/bidEvaluation/review/clear.vue
View file @
a08cad81
...
@@ -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
()
{
...
...
src/pages/purchaser/bid/bidEvaluation/review/review.vue
View file @
a08cad81
...
@@ -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
.
f
orm
)
}
=
await
saveCompanyRank
(
this
.
rankF
orm
)
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
.
f
orm
)
}
=
await
saveCompanyEvaluate
(
this
.
evaluateF
orm
)
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
}
}
}
}
}
}
...
...
src/pages/purchaser/bid/bidStage/changeList/changeList.vue
View file @
a08cad81
...
@@ -31,7 +31,7 @@ export default {
...
@@ -31,7 +31,7 @@ export default {
pageObj
:
{
pageObj
:
{
size
:
10
,
size
:
10
,
currentPage
:
1
,
currentPage
:
1
,
t
ype
:
"CHANGE"
,
noticeT
ype
:
"CHANGE"
,
func
:
(
currentPage
)
=>
{
func
:
(
currentPage
)
=>
{
this
.
pageTurning
(
currentPage
)
this
.
pageTurning
(
currentPage
)
}
}
...
...
src/pages/purchaser/bid/bidStage/failList/failList.vue
View file @
a08cad81
...
@@ -28,7 +28,7 @@ export default {
...
@@ -28,7 +28,7 @@ export default {
pageObj
:
{
pageObj
:
{
size
:
10
,
size
:
10
,
currentPage
:
1
,
currentPage
:
1
,
t
ype
:
"ABORTIVE"
,
noticeT
ype
:
"ABORTIVE"
,
func
:
(
currentPage
)
=>
{
func
:
(
currentPage
)
=>
{
this
.
pageTurning
(
currentPage
)
this
.
pageTurning
(
currentPage
)
}
}
...
...
src/pages/purchaser/bid/bidStage/tenderFeelist/tenderFeelist.vue
View file @
a08cad81
...
@@ -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
)
{
...
...
src/pages/purchaser/bid/bidSure/see.vue
View file @
a08cad81
...
@@ -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>
...
...
src/pages/purchaser/bid/reviewed/SeetenderAnnouncement.vue
View file @
a08cad81
...
@@ -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
>
src/pages/purchaser/bid/workbench.vue
View file @
a08cad81
...
@@ -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
:
"评标查看"
,
...
...
src/pages/purchaser/home/home.vue
View file @
a08cad81
...
@@ -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
:
{
...
...
src/pages/supply/bid/joinProject/bidStage/clearManagement/confirm.vue
View file @
a08cad81
...
@@ -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
...
...
src/pages/supply/bid/joinProject/bidStage/fileDownload.vue
View file @
a08cad81
...
@@ -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
{
...
...
src/pages/supply/bid/joinProject/bidStage/seePrice.vue
View file @
a08cad81
<
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
>
src/pages/supply/bid/joinProject/bidSure/candidateSee.vue
View file @
a08cad81
...
@@ -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
{
...
...
src/pages/supply/bid/joinProject/workbench.vue
View file @
a08cad81
...
@@ -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/
signupOnlin
e/seePrice"
url
:
"/supply/bid/
joinProject/bidStag
e/seePrice"
},
},
{
{
label
:
"查看招标公告"
,
label
:
"查看招标公告"
,
...
@@ -124,7 +124,7 @@ export default {
...
@@ -124,7 +124,7 @@ export default {
},
},
{
{
label
:
"保证金缴纳管理"
,
label
:
"保证金缴纳管理"
,
url
:
"/supply/bid/joinProject/bidStage/bond
List
"
url
:
"/supply/bid/joinProject/bidStage/bond"
}]
}]
},
},
]
]
...
...
src/pages/supply/bid/signupOnline/seeAnnouncement.vue
View file @
a08cad81
...
@@ -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
}
}
...
...
src/pages/supply/bid/signupOnline/seePrice.vue
View file @
a08cad81
<
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
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment