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
c3742962
Commit
c3742962
authored
Sep 27, 2020
by
张冬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
对接联调
parent
fec5a998
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
1108 additions
and
556 deletions
+1108
-556
bid.js
src/api/supply/bid.js
+117
-0
Header.vue
src/components/common/Header.vue
+10
-2
Sidebar.vue
src/components/common/Sidebar.vue
+109
-105
bidOpenhal.vue
src/pages/purchaser/bid/bidOpen/bidOpenhal.vue
+1
-1
bidopenList.vue
...ages/supply/bid/joinProject/bidEvaluation/bidopenList.vue
+25
-10
evaluationList.vue
...s/supply/bid/joinProject/bidEvaluation/evaluationList.vue
+42
-34
reply.vue
src/pages/supply/bid/joinProject/bidEvaluation/reply.vue
+51
-65
see.vue
src/pages/supply/bid/joinProject/bidEvaluation/see.vue
+165
-0
bidOpenhal.vue
src/pages/supply/bid/joinProject/bidOpen/bidOpenhal.vue
+14
-5
bidSubmit.vue
src/pages/supply/bid/joinProject/bidSubmit/bidSubmit.vue
+172
-92
bidresultAdvice.vue
src/pages/supply/bid/joinProject/bidSure/bidresultAdvice.vue
+26
-7
bidwinAdvice.vue
src/pages/supply/bid/joinProject/bidSure/bidwinAdvice.vue
+20
-3
candidateSee.vue
src/pages/supply/bid/joinProject/bidSure/candidateSee.vue
+25
-7
contractManagement.vue
...ges/supply/bid/joinProject/bidSure/contractManagement.vue
+120
-107
noticeSee.vue
src/pages/supply/bid/joinProject/bidSure/noticeSee.vue
+22
-6
workbench.vue
src/pages/supply/bid/joinProject/workbench.vue
+12
-16
markBid.vue
src/pages/supply/markBid/markBid.vue
+166
-90
index.js
src/router/index.js
+5
-0
request.js
src/utils/request.js
+6
-6
No files found.
src/api/supply/bid.js
View file @
c3742962
...
...
@@ -157,3 +157,120 @@ export function changeNoticelist(projectId) {
method
:
'get'
,
})
}
// 2.2.2
// 投标文件列表(下拉框)
export
function
bidBooks
(
projectId
)
{
return
request
({
url
:
`tender/bidBook/list/
${
projectId
}
`
,
method
:
'get'
,
})
}
//递交投标文件
export
function
bidFile
(
data
)
{
return
request
({
url
:
"tender/upload/bidFile"
,
method
:
'post'
,
data
:
data
})
}
// 制作投标文件
export
function
makeFile
(
data
)
{
return
request
({
url
:
"tender/makeFile"
,
method
:
'post'
,
data
:
data
})
}
// 撤回投标文件
export
function
revocationBidbFile
(
bidFileId
)
{
return
request
({
url
:
`tender/revocation/bidbFile/
${
bidFileId
}
`
,
method
:
'put'
,
})
}
//2.2.3
// 2.2.4 评标
// 评标问题澄清列表
export
function
clarifyInquirylist
(
params
)
{
return
request
({
url
:
"bidder-evaluate/clarify-inquiry/list"
,
method
:
'get'
,
params
:
params
})
}
// 查看问题
export
function
question
(
questionId
)
{
return
request
({
url
:
`bidder-evaluate/question/detail/
${
questionId
}
`
,
method
:
'get'
,
})
}
// 回复问题
export
function
evaluateReply
(
data
)
{
return
request
({
url
:
"bidder-evaluate/reply"
,
method
:
'post'
,
data
:
data
})
}
// 查看回复
export
function
reply
(
replyId
)
{
return
request
({
url
:
`bidder-evaluate/reply/detail/
${
replyId
}
`
,
method
:
'get'
,
})
}
// 查看开标一览表
export
function
openInfolist
(
projectId
)
{
return
request
({
url
:
`open-bid/openInfo/
${
projectId
}
`
,
method
:
'get'
,
})
}
// 2.2.5 定标
// 查看招标结果通知书
export
function
bidResultBook
(
params
)
{
return
request
({
url
:
"bidder-decide/bidResultBook/detail"
,
method
:
'get'
,
params
:
params
})
}
// 查看合同
export
function
contractdetail
(
projectId
)
{
return
request
({
url
:
`bidder-decide/contract/detail/
${
projectId
}
`
,
method
:
'get'
,
})
}
// 中标候选人公示查看
export
function
publicitydetail
(
projectId
)
{
return
request
({
url
:
`bidder-decide/publicity/Detail/
${
projectId
}
`
,
method
:
'get'
,
})
}
// 中标通知书查看
export
function
winBookdetail
(
projectId
)
{
return
request
({
url
:
`bidder-decide/winBook/detail/
${
projectId
}
`
,
method
:
'get'
,
})
}
// 2.2.3 开标大厅
// 签到解密简略
export
function
openBidsign
(
projectId
)
{
return
request
({
url
:
`open-bid/sign/
${
projectId
}
`
,
method
:
'get'
,
})
}
src/components/common/Header.vue
View file @
c3742962
...
...
@@ -6,7 +6,7 @@
<i
v-if=
"!collapse"
class=
"el-icon-s-fold"
></i>
<i
v-else
class=
"el-icon-s-unfold"
></i>
</div>
<div
class=
"logo"
>
采购端
</div>
<div
class=
"logo"
>
{{
title
}}
</div>
<div
class=
"header-right"
>
<div
class=
"header-user-con"
>
<!-- -->
...
...
@@ -60,7 +60,8 @@ export default {
message
:
2
,
user
:
''
,
organname
:
''
,
companyName
:
""
companyName
:
""
,
title
:
""
};
},
computed
:
{
...
...
@@ -79,6 +80,13 @@ export default {
localStorage
.
setItem
(
"companyId"
,
data
.
companyId
)
let
userInfo
=
JSON
.
stringify
(
data
)
localStorage
.
setItem
(
"userInfo"
,
userInfo
)
let
type
=
data
.
type
;
if
(
type
==
1
){
this
.
title
=
"采购商"
}
else
{
this
.
title
=
"供应商"
}
bus
.
$emit
(
'usertype'
,
type
);
}
}
catch
(
e
)
{
console
.
log
(
e
)
...
...
src/components/common/Sidebar.vue
View file @
c3742962
...
...
@@ -55,7 +55,25 @@ export default {
data
()
{
return
{
collapse
:
false
,
items
:
[
items
:
""
};
},
computed
:
{
onRoutes
()
{
return
this
.
$route
.
path
.
replace
(
'/'
,
''
);
}
},
created
()
{
console
.
log
(
"侧边"
)
// 通过 Event Bus 进行组件间通信,来折叠侧边栏
bus
.
$on
(
'collapse'
,
msg
=>
{
this
.
collapse
=
msg
;
bus
.
$emit
(
'collapse-content'
,
msg
);
});
bus
.
$on
(
'usertype'
,
msg
=>
{
let
type
=
msg
;
if
(
type
==
1
){
this
.
items
=
[
{
icon
:
'el-icon-lx-home'
,
index
:
'/purchaser/Home'
,
...
...
@@ -142,111 +160,97 @@ export default {
},
]
}
],
//供应商
// items: [
// {
// icon: 'el-icon-lx-home',
// index: '/supply/Home',
// title: '首页'
// },
// {
// icon: 'el-icon-lx-home',
// index:"2",
// title: '招标管理',
// subs:[
// {
// icon: 'el-icon-lx-home',
// index: '/supply/bid/signupOnline',
// title: '在线报名',
// },
// {
// icon: 'el-icon-lx-home',
// index: '/supply/bid/joinProject/projectList',
// title: '我参与的项目',
// }
// ]
// },
// {
// icon: 'el-icon-lx-cascades',
// title: '应收账款买断管理',
// index:'3',
// subs:[
// {
// icon: 'el-icon-lx-home',
// index: '/supply/buyOut/buyoutList',
// title: '应收账款买断列表',
// }
// ]
// },
// {
// icon: 'el-icon-lx-copy',
// title: '组织管理',
// index:'5',
// subs:[
// {
// icon: 'el-icon-lx-home',
// index: '/supply/organization/informationSee',
// title: '单位信息',
// },
// {
// icon: 'el-icon-lx-home',
// index: '/supply/organization/memberManagement',
// title: '成员管理',
// },
// {
// icon: 'el-icon-lx-home',
// index: '/supply/organization/jurisdictionList',
// title: '角色管理',
// }
// ]
// },
// {
// icon: 'el-icon-lx-redpacket_fill',
// title: '系统管理',
// index:'6',
// subs:[
// {
// icon: 'el-icon-lx-home',
// index: '/supply/organization/jurisdictionList',
// title: 'CA绑定与解除',
// },
// {
// icon: 'el-icon-lx-home',
// index: '/supply/system/logList',
// title: '日志列表',
// },
// ]
// },
// {
// icon: 'el-icon-lx-cascades',
// title: '制作投标文件',
// index:'4',
// subs:[
// {
// icon: 'el-icon-lx-home',
// index: '/supply/markBid/markBid',
// title: '制作投标文件',
// }
// ]
// },
// ]
};
},
computed
:
{
onRoutes
()
{
return
this
.
$route
.
path
.
replace
(
'/'
,
''
);
}
},
created
()
{
// 通过 Event Bus 进行组件间通信,来折叠侧边栏
bus
.
$on
(
'collapse'
,
msg
=>
{
this
.
collapse
=
msg
;
bus
.
$emit
(
'collapse-content'
,
msg
);
]
}
else
{
this
.
items
=
[
{
icon
:
'el-icon-lx-home'
,
index
:
'/supply/Home'
,
title
:
'首页'
},
{
icon
:
'el-icon-lx-home'
,
index
:
"2"
,
title
:
'招标管理'
,
subs
:[
{
icon
:
'el-icon-lx-home'
,
index
:
'/supply/bid/signupOnline'
,
title
:
'在线报名'
,
},
{
icon
:
'el-icon-lx-home'
,
index
:
'/supply/bid/joinProject/projectList'
,
title
:
'我参与的项目'
,
}
]
},
{
icon
:
'el-icon-lx-cascades'
,
title
:
'应收账款买断管理'
,
index
:
'3'
,
subs
:[
{
icon
:
'el-icon-lx-home'
,
index
:
'/supply/buyOut/buyoutList'
,
title
:
'应收账款买断列表'
,
}
]
},
{
icon
:
'el-icon-lx-copy'
,
title
:
'组织管理'
,
index
:
'5'
,
subs
:[
{
icon
:
'el-icon-lx-home'
,
index
:
'/supply/organization/informationSee'
,
title
:
'单位信息'
,
},
{
icon
:
'el-icon-lx-home'
,
index
:
'/supply/organization/memberManagement'
,
title
:
'成员管理'
,
},
{
icon
:
'el-icon-lx-home'
,
index
:
'/supply/organization/jurisdictionList'
,
title
:
'角色管理'
,
}
]
},
{
icon
:
'el-icon-lx-redpacket_fill'
,
title
:
'系统管理'
,
index
:
'6'
,
subs
:[
{
icon
:
'el-icon-lx-home'
,
index
:
'/supply/organization/jurisdictionList'
,
title
:
'CA绑定与解除'
,
},
{
icon
:
'el-icon-lx-home'
,
index
:
'/supply/system/logList'
,
title
:
'日志列表'
,
},
]
},
{
icon
:
'el-icon-lx-cascades'
,
title
:
'制作投标文件'
,
index
:
'4'
,
subs
:[
{
icon
:
'el-icon-lx-home'
,
index
:
'/supply/markBid/markBid'
,
title
:
'制作投标文件'
,
}
]
},
]
}
});
},
methods
:
{
...
...
src/pages/purchaser/bid/bidOpen/bidOpenhal.vue
View file @
c3742962
...
...
@@ -501,7 +501,7 @@
createWebSocket
()
{
let
token
=
localStorage
.
getItem
(
"token"
)
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
this
.
websocket
=
new
WebSocket
(
'ws://192.168.3.35:8085/webSocket/'
+
projectId
+
"/"
+
token
)
this
.
websocket
=
new
WebSocket
(
'ws://192.168.3.35:8085/webSocket/'
+
projectId
)
// 连接成功时
this
.
websocket
.
onopen
=
()
=>
{}
this
.
websocket
.
onmessage
=
event
=>
{
...
...
src/pages/supply/bid/joinProject/bidEvaluation/bidopenList.vue
View file @
c3742962
...
...
@@ -13,11 +13,12 @@
</
template
>
<
script
>
import
{
openInfolist
}
from
'@api/supply/bid'
import
dataTable
from
'@components/nopageTable.vue'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
import
changeNav
from
'@components/changeNav.vue'
export
default
{
name
:
'bidingList'
,
components
:
{
dataTable
,
dataBreadcrumb
,
...
...
@@ -27,22 +28,18 @@ export default {
return
{
navs
:
[
'开标一览表查看'
],
breads
:
[
'投标管理 '
,
'我参加的项目'
,
'工作台'
],
tableData
:
[{
name
:
'A'
,
person
:
'100.00'
,
state
:
'是'
}],
tableData
:
[],
columns
:
[{
label
:
'投标人名称'
,
prop
:
'
n
ame'
prop
:
'
companyN
ame'
},
{
label
:
'投标报价(元)'
,
prop
:
'p
erson
'
prop
:
'p
rice
'
},
{
label
:
'是否签名'
,
prop
:
'
state
'
prop
:
'
isSign
'
}
]
// 操作列
}
...
...
@@ -50,7 +47,25 @@ export default {
methods
:
{
back
()
{
this
.
$router
.
go
(
-
1
)
}
},
async
getopenInfolist
()
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
data
,
code
}
=
await
openInfolist
(
projectId
)
for
(
let
item
of
data
){
if
(
item
.
isSign
){
item
.
isSign
=
"是"
}
else
{
item
.
isSign
=
"否"
}
}
this
.
tableData
=
data
}
},
created
()
{
this
.
getopenInfolist
()
}
}
</
script
>
...
...
src/pages/supply/bid/joinProject/bidEvaluation/evaluationList.vue
View file @
c3742962
...
...
@@ -3,10 +3,11 @@
<div
class=
"content"
>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<changeNav
:navs=
"navs"
></changeNav>
<dataTable
:table-data=
"tableData"
:columns=
"columns"
:checklist=
"checklist"
:is-index=
"true"
>
<dataTable
:table-data=
"tableData"
:columns=
"columns"
:is-index=
"true"
>
<el-table-column
slot=
"operate"
label=
"操作"
align=
"center"
fixed=
"right"
width=
"100"
>
<template
slot-scope=
"scope"
>
<el-button
type=
"text"
size=
"small"
@
click=
"examine(scope.row)"
>
审核
</el-button>
<el-button
type=
"text"
size=
"small"
@
click=
"see(scope.row)"
v-if=
"scope.row.replyId"
>
查看
</el-button>
<el-button
type=
"text"
size=
"small"
@
click=
"reply(scope.row.questionId)"
v-else
>
回复
</el-button>
</
template
>
</el-table-column>
</dataTable>
...
...
@@ -15,6 +16,7 @@
</template>
<
script
>
import
{
clarifyInquirylist
}
from
'@api/supply/bid'
import
dataTable
from
'@components/nopageTable.vue'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
import
changeNav
from
'@components/changeNav.vue'
...
...
@@ -27,25 +29,9 @@ export default {
},
data
()
{
return
{
checklist
:
[{
title
:
'状态'
,
type
:
'select'
,
selectlist
:
[{
value
:
'1'
,
label
:
'未回复'
},
{
value
:
'2'
,
label
:
'已回复'
}],
change
:
row
=>
''
}],
navs
:[
"评标问题澄清"
],
breads
:
[
'投标管理'
,
'我参与的项目'
,
'工作台 '
],
tableData
:
[{
title
:
'澄清问题1'
,
state
:
'未回复'
,
data
:
'2017-10-01 12:00'
,
data1
:
'2017-10-01 12:00'
}],
tableData
:
[],
columns
:
[{
label
:
'澄清标题'
,
prop
:
'title'
...
...
@@ -56,33 +42,55 @@ export default {
},
{
label
:
'发布时间'
,
prop
:
'
data
'
,
prop
:
'
createTime
'
,
sortable
:
true
},
{
label
:
'回复截止时间'
,
prop
:
'
data1
'
prop
:
'
cutOffTime
'
},
{
slot
:
'operate'
}
],
// 操作列
pageObj
:
{
size
:
10
,
total
:
1
,
currentPage
:
1
,
sizes
:
[
100
,
200
,
300
],
func
:
(
currentPage
)
=>
{
this
.
pageTurning
(
currentPage
)
}
}
}
},
methods
:
{
examine
()
{
this
.
$router
.
push
(
'/admin/bid/bidingDetail'
)
}
reply
(
questionId
)
{
this
.
$router
.
push
(
`/supply/bid/joinProject/bidEvaluation/reply?questionId=
${
questionId
}
`
)
},
see
(
row
){
this
.
$router
.
push
({
path
:
"/supply/bid/joinProject/bidEvaluation/see"
,
query
:{
questionId
:
row
.
questionId
,
replyId
:
row
.
replyId
}
})
},
async
getclarifyInquirylist
()
{
let
message
=
{}
message
.
companyId
=
localStorage
.
getItem
(
"companyId"
)
message
.
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
data
,
code
}
=
await
clarifyInquirylist
(
message
)
if
(
code
==
200
){
for
(
let
item
of
data
){
if
(
item
.
replyId
){
item
.
state
=
"已回复"
}
else
{
item
.
state
=
"未回复"
}
}
this
.
tableData
=
data
}
}
},
created
()
{
this
.
getclarifyInquirylist
();
}
}
</
script
>
...
...
src/pages/supply/bid/joinProject/bidEvaluation/reply.vue
View file @
c3742962
...
...
@@ -8,29 +8,30 @@
<div
class=
"content"
>
<div
class=
"describe"
>
澄清问题
</div>
<div
class=
"clear-message"
>
<div
class=
"flex
-between
clear-item"
>
<div>
<span>
*
</span>
澄清问题标题:
</div>
<div
class=
"flex clear-item"
>
<div>
澄清问题标题:
</div>
<div>
{{
detail
.
title
}}
</div>
</div>
<div
class=
"flex
-between
clear-item"
>
<div>
<span>
*
</span>
澄清问题内容:
</div>
<div
>
{{
detail
.
content
}}
</div>
<div
class=
"flex clear-item"
>
<div>
澄清问题内容:
</div>
<div
v-html=
"detail.content"
>
</div>
</div>
<div
class=
"flex
-between
"
>
<div>
<span>
*
</span>
澄清问题附件:
</div>
<div
class=
"flex"
>
<div>
澄清问题附件:
</div>
<ul>
<li>
<span>
111.pdf
</span>
<el-button>
下载
</el-button>
<span>
{{
detail
.
fileName
}}
</span>
<el-button
size=
"mini"
@
click=
"down(detail.fileUrl)"
>
下载
</el-button>
</li>
</ul>
</div>
</div>
<h3
class=
"title"
>
澄清
内容
</h3>
<h3
class=
"title"
>
澄清
问题回复
</h3>
<div
class=
"form"
>
<el-form
ref=
"ruleForm"
:model=
"ruleForm"
:rules=
"rules"
label-width=
"120px"
class=
"demo-ruleForm"
>
<el-form-item
label=
"回复内容"
prop=
"
title
"
>
<el-form-item
label=
"回复内容"
prop=
"
replyContent
"
>
<el-input
v-model=
"ruleForm.replyContent"
:rows=
"2"
style=
"width: 500px;"
placeholder=
"请输入"
...
...
@@ -52,8 +53,8 @@
<
script
>
import
{
clarifiesDetail
}
from
'@api/
purchaser
/bid'
question
,
evaluateReply
}
from
'@api/
supply
/bid'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
import
singleUpload
from
'@components/Upload/Upload.vue'
...
...
@@ -71,83 +72,67 @@ export default {
editorOption
:
{},
breads
:
[
'投标管理 '
,
'我参加的项目'
,
'工作台'
],
ruleForm
:
{
title
:
''
,
release
:
'捷安采官网招标投专区'
replyContent
:
''
,
},
rules
:
{
title
:
[{
replyContent
:
[{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blu
e
'
trigger
:
'blu
r
'
}],
release
:
[{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blue'
}],
content
:
[{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blue'
}]
}
}
},
created
()
{
this
.
id
=
this
.
$route
.
query
.
i
d
this
.
get
clarifiesDetail
()
this
.
questionId
=
this
.
$route
.
query
.
questionI
d
this
.
get
question
()
},
methods
:
{
down
(
url
){
window
.
open
(
url
)
},
getfile
(
val
)
{
for
(
let
item
of
val
)
{
item
.
accessoryUrl
=
item
.
fileUrl
}
this
.
accessoryPOList
=
val
this
.
ruleForm
.
filePOList
=
val
},
cancle
()
{
this
.
$router
.
go
(
-
1
)
},
async
get
clarifiesDetail
()
{
async
get
question
()
{
try
{
const
{
code
,
data
}
=
await
clarifiesDetail
(
this
.
i
d
)
}
=
await
question
(
this
.
questionI
d
)
if
(
code
===
200
)
{
this
.
detail
=
data
}
}
catch
(
err
)
{
console
.
log
(
err
)
}
}
}
,
//提交表单
// async submit() {
// let ruleForm = this.ruleForm
// ruleForm.questionId = this.id
// let accessoryPOList = this.accessoryPOList
// if (accessoryPOList.length > 0) {
// ruleForm.accessoryPOList = accessoryPOList
// }
// try {
// const valid = await this.$refs['ruleForm'].validate()
// if (valid) {
// const {
// code,
// msg
// } = await purchaseReply(this.ruleForm)
// if (code === 200) {
// this.$message({
// message: msg,
// type: 'success'
// })
// this.$router.go(-1)
// }
// }
// } catch (err) {
// console.log(err)
// }
// }
async
submit
()
{
try
{
const
valid
=
await
this
.
$refs
[
'ruleForm'
].
validate
()
if
(
valid
)
{
let
ruleForm
=
this
.
ruleForm
;
ruleForm
.
questionId
=
this
.
questionId
const
{
code
,
msg
}
=
await
evaluateReply
(
this
.
ruleForm
)
if
(
code
===
200
)
{
this
.
$message
({
message
:
msg
,
type
:
'success'
})
this
.
$router
.
go
(
-
1
)
}
}
}
catch
(
err
)
{
console
.
log
(
err
)
}
}
}
}
</
script
>
...
...
@@ -166,7 +151,6 @@ export default {
.clear-message
{
margin-left
:
70px
;
width
:
20%
}
.clear-message
>
div
>
span
{
...
...
@@ -182,7 +166,9 @@ export default {
.clear-item
>
div
:last-child
{
width
:
100px
}
.clear-item
>
div
:first-child
{
margin-right
:
20px
;
}
.clear-message
>
div
{
margin-bottom
:
50px
;
}
...
...
src/pages/supply/bid/joinProject/bidEvaluation/see.vue
0 → 100644
View file @
c3742962
<
template
>
<div>
<div
class=
"content-head"
>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<h3>
查看澄清问题
</h3>
<h5>
投标方回复招标方澄清问题
</h5>
</div>
<div
class=
"othercontent"
>
<div>
<div
class=
"describe"
>
澄清问题
</div>
<div
class=
"clear-message"
>
<div
class=
"flex clear-item"
>
<div>
澄清问题标题:
</div>
<div>
{{
questiondetail
.
title
}}
</div>
</div>
<div
class=
"flex clear-item"
>
<div>
澄清问题内容:
</div>
<div
v-html=
"questiondetail.content"
></div>
</div>
<div
class=
"flex"
>
<div>
澄清问题附件:
</div>
<ul>
<li>
<span>
{{
questiondetail
.
fileName
}}
</span>
<el-button
size=
"mini"
@
click=
"down(questiondetail.fileUrl)"
>
下载
</el-button>
</li>
</ul>
</div>
</div>
</div>
<div>
<h3
class=
"describe"
>
澄清问题回复
</h3>
<div
class=
"clear-message"
>
<div
class=
"flex clear-item"
>
<div>
回复内容:
</div>
<div>
{{
replydetail
.
replyContent
}}
</div>
</div>
<div
class=
"flex"
>
<div>
澄清问题附件:
</div>
<ul>
<li>
<span>
{{
replydetail
.
fileName
}}
</span>
<el-button
size=
"mini"
@
click=
"down(replydetail.fileUrl)"
>
下载
</el-button>
</li>
</ul>
</div>
</div>
<div
class=
"centerButton"
>
<el-button
@
click=
"cancle"
type=
"primary"
>
返回
</el-button>
</div>
</div>
</div>
</div>
</
template
>
<
script
>
import
{
question
,
reply
}
from
'@api/supply/bid'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
export
default
{
components
:
{
dataBreadcrumb
,
},
data
()
{
return
{
breads
:
[
'投标管理 '
,
'我参加的项目'
,
'工作台'
],
questiondetail
:
""
,
replyId
:
""
,
questionId
:
""
,
replydetail
:
""
}
},
created
()
{
this
.
questionId
=
this
.
$route
.
query
.
questionId
;
this
.
replyId
=
this
.
$route
.
query
.
replyId
;
this
.
getquestion
();
this
.
getreply
()
},
methods
:
{
down
(
url
)
{
window
.
open
(
url
)
},
getfile
(
val
)
{
this
.
ruleForm
.
filePOList
=
val
},
cancle
()
{
this
.
$router
.
go
(
-
1
)
},
//查看回复内容
async
getquestion
()
{
try
{
const
{
code
,
data
}
=
await
question
(
this
.
questionId
)
if
(
code
===
200
)
{
this
.
questiondetail
=
data
}
}
catch
(
err
)
{
console
.
log
(
err
)
}
},
// 查看问题
async
getreply
()
{
try
{
const
{
code
,
data
}
=
await
reply
(
this
.
replyId
)
if
(
code
===
200
)
{
this
.
replydetail
=
data
}
}
catch
(
err
)
{
console
.
log
(
err
)
}
},
}
}
</
script
>
<
style
scoped
>
.othercontent
>
div
{
background
:
#fff
;
margin-bottom
:
20px
;
padding-bottom
:
1px
;
}
.clear-message
{
margin-left
:
70px
;
}
.clear-message
>
div
>
span
{
color
:
#FF0000
;
margin-right
:
5px
;
}
.title
{
font-weight
:
600
;
margin
:
20px
0
20px
20px
}
/* .clear-item>div:last-child {
width: 100px
}
*/
.clear-item
>
div
:first-child
{
margin-right
:
20px
;
}
.clear-message
>
div
{
margin-bottom
:
50px
;
}
.clear-message
ul
>
li
>
span
{
margin-right
:
10px
;
}
</
style
>
src/pages/supply/bid/joinProject/bidOpen/bidOpenhal.vue
View file @
c3742962
...
...
@@ -4,7 +4,7 @@
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<div>
中国标准时间:
{{
currentTime
}}
</div>
<div
class=
"hal"
>
<h2
style=
"text-align: center;"
>
育才小学大楼翻新
项目开标大厅
</h2>
<h2
style=
"text-align: center;"
>
{{
projectName
}}
项目开标大厅
</h2>
<div
class=
"time-message flex-between"
>
<div
class=
"flex"
>
<p>
截标倒计时:
</p>
...
...
@@ -59,9 +59,11 @@
</
template
>
<
script
>
import
{
openBidsign
}
from
'@api/supply/bid'
import
{
getTime
}
from
'@utils/time'
openBidsign
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
import
timeDown
from
'@components/timeDown.vue'
import
dataTable
from
'@components/dataTable.vue'
...
...
@@ -73,6 +75,7 @@ export default {
},
data
()
{
return
{
projectName
:
""
,
pageObj
:
{
size
:
10
,
total
:
1000
,
...
...
@@ -157,6 +160,8 @@ export default {
let
currentTime
=
getTime
()
this
.
currentTime
=
currentTime
},
1000
)
this
.
projectName
=
localStorage
.
getItem
(
"projectName"
)
this
.
getopenBidsign
();
},
methods
:
{
// 计算分秒倒计时
...
...
@@ -177,10 +182,14 @@ export default {
// 截标时间到了
countDowmEnd
(
val
)
{
this
.
openbidButton
=
val
}
},
async
getopenBidsign
()
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
data
,
code
}
=
await
openBidsign
()
}
}
}
...
...
src/pages/supply/bid/joinProject/bidSubmit/bidSubmit.vue
View file @
c3742962
<
template
>
<div>
<div
class=
"content-head"
>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<h3>
递交投标文件
</h3>
<h5>
递交投标文件
</h5>
</div>
<div
class=
"othercontent"
>
<div>
<div
class=
"describe"
>
投标信息
</div>
<div
class=
"message"
>
<div>
<div>
项目编号:456784613
</div>
<div>
项目名称:测试6784613
</div>
</div>
<div>
<div>
投标状态:待递交投标文件
</div>
<div>
投标文件成功递交时间:1111
</div>
</div>
<div>
<div>
投标截止(开标)时间:2020-09-09 22:12:23
</div>
<div>
投标截止时间倒计时:6天 6小时 6分钟 6秒
</div>
</div>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"90px"
class=
"demo-ruleForm"
>
<div
class=
"flex-between"
>
<el-form-item
label=
"联系人姓名:"
prop=
"name"
>
<el-input
v-model=
"form.name"
></el-input>
</el-form-item>
<el-form-item
label=
"联系人手机:"
prop=
"name"
>
<el-input
v-model=
"form.name"
></el-input>
</el-form-item>
</div>
<div
class=
"flex-between"
>
<el-form-item
label=
"联系人电话:"
prop=
"name"
>
<el-input
v-model=
"form.name"
></el-input>
</el-form-item>
<el-form-item
label=
"联系人邮箱:"
prop=
"name"
>
<el-input
v-model=
"form.name"
></el-input>
</el-form-item>
</div>
</el-form>
</div>
</div>
<div>
<div
class=
"describe"
>
上传投标文件
</div>
<div
class=
"message"
style=
"padding:30px 0"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"100px"
class=
"demo-ruleForm"
>
<el-form-item
label=
"投标文件:"
prop=
"file"
>
<Upload
:limit=
"1"
tip=
"上传一份投标文件"
@
input=
"getfile"
></Upload>
</el-form-item>
</el-form>
</div>
</div>
<div
class=
"bottomButton"
>
<el-button>
取消
</el-button>
<el-button>
下载回执
</el-button>
<el-button
disabled
>
撤回投标文件
</el-button>
<el-button>
递交投标文件
</el-button>
</div>
</div>
</div>
<div>
<div
class=
"content-head"
>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<h3>
递交投标文件
</h3>
<h5>
递交投标文件
</h5>
</div>
<div
class=
"othercontent"
>
<div>
<div
class=
"describe"
>
投标信息
</div>
<div
class=
"message"
>
<div>
<div>
项目编号:
{{
projectName
}}
</div>
<div>
项目名称:
{{
projectCode
}}
</div>
</div>
<div>
<div
v-if=
"!state"
>
投标状态:待递交投标文件
</div>
<div
v-else
>
投标状态:投标文件递交成功
</div>
<div>
投标文件成功递交时间:
{{
submitTime
}}
</div>
</div>
<div>
<div>
投标截止(开标)时间:2020-09-09 22:12:23
</div>
<div>
投标截止时间倒计时:6天 6小时 6分钟 6秒
</div>
</div>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
class=
"demo-ruleForm"
>
<div
class=
"flex-between"
>
<el-form-item
label=
"联系人姓名:"
prop=
"bidderName"
>
<el-input
v-model=
"form.bidderName"
></el-input>
</el-form-item>
<el-form-item
label=
"联系人手机:"
prop=
"bidderPhone"
>
<el-input
v-model=
"form.bidderPhone"
></el-input>
</el-form-item>
</div>
<div>
<el-form-item
label=
"投标文件:"
prop=
"bidbookId"
>
<el-select
v-model=
"form.bidbookId"
placeholder=
"请选择"
>
<el-option
v-for=
"item in options"
:key=
"item.id"
:label=
"item.fileName"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
</div>
</el-form>
</div>
</div>
<!--
<div>
<div
class=
"describe"
>
上传投标文件
</div>
<div
class=
"message"
style=
"padding:30px 0"
>
</div>
</div>
-->
<div
class=
"bottomButton"
>
<el-button>
取消
</el-button>
<el-button>
下载回执
</el-button>
<el-button
:disabled=
"!state"
type=
"primary"
@
click=
"withdraw"
>
撤回投标文件
</el-button>
<el-button
:disabled=
"state"
type=
"primary"
@
click=
"submitData"
>
递交投标文件
</el-button>
</div>
</div>
</div>
</
template
>
<
script
>
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
import
Upload
from
'@components/Upload/Upload.vue'
export
default
{
components
:
{
dataBreadcrumb
,
Upload
},
data
()
{
return
{
breads
:
[
'投标管理'
,
'我参与的项目'
,
'工作台'
],
form
:
{
name
:
''
,
files
:
''
},
rules
:
{
date2
:
[{
type
:
'date'
,
required
:
true
,
message
:
'请选择时间'
,
trigger
:
'blue'
}]
}
}
},
methods
:
{
getfile
()
{
}
}
import
{
bidBooks
,
bidFile
,
revocationBidbFile
}
from
'@api/supply/bid'
import
{
getTime
}
from
'@utils/time'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
import
Upload
from
'@components/Upload/Upload.vue'
export
default
{
components
:
{
dataBreadcrumb
,
Upload
},
data
()
{
let
checkPhone
=
async
(
rule
,
value
,
callback
)
=>
{
if
(
!
value
)
{
return
callback
(
new
Error
(
'手机号不能为空'
));
}
else
{
const
reg
=
/^1
[
3|4|5|7|8
][
0-9
]\d{8}
$/
if
(
reg
.
test
(
value
))
{
callback
();
}
else
{
return
callback
(
new
Error
(
'请输入正确的手机号'
));
}
}
};
return
{
bidFileId
:
""
,
submitTime
:
"暂无"
,
state
:
false
,
options
:
[],
projectName
:
""
,
projectCode
:
""
,
breads
:
[
'投标管理'
,
'我参与的项目'
,
'工作台'
],
form
:
{
bidderName
:
''
,
bidderPhone
:
''
,
bidbookId
:
""
},
rules
:
{
bidderName
:
[{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}],
bidderPhone
:
[{
required
:
true
,
validator
:
checkPhone
,
trigger
:
'blur'
}],
bidbookId
:
[{
required
:
true
,
message
:
'请选择'
,
trigger
:
'change'
}],
}
}
},
methods
:
{
getfile
()
{
}
},
// 获取文件列表
async
getbidBooks
()
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
data
,
code
}
=
await
bidBooks
(
projectId
)
this
.
options
=
data
},
// 提交
async
submitData
()
{
try
{
const
valid
=
await
this
.
$refs
[
'form'
].
validate
()
if
(
valid
)
{
let
form
=
this
.
form
const
{
code
,
msg
}
=
await
bidFile
(
form
)
if
(
code
===
200
)
{
this
.
$message
.
success
(
msg
)
this
.
submitTime
=
getTime
()
this
.
state
=
true
this
.
bidFileId
=
form
.
bidbookId
;
this
.
getbidBooks
()
}
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
},
// 撤回
async
withdraw
(){
try
{
const
{
msg
,
code
}
=
await
revocationBidbFile
(
this
.
bidFileId
)
if
(
code
===
200
){
this
.
$message
.
success
(
msg
)
this
.
state
=
false
this
.
submitTime
=
"暂无"
this
.
getbidBooks
()
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
}
},
created
()
{
this
.
projectCode
=
localStorage
.
getItem
(
"projectCode"
)
this
.
projectName
=
localStorage
.
getItem
(
"projectName"
)
this
.
getbidBooks
()
}
}
</
script
>
...
...
@@ -101,10 +178,13 @@ export default {
background
:
#fff
;
margin-bottom
:
20px
;
}
.message
{
.message
{
width
:
60%
;
margin
:
0
auto
margin
:
0
auto
;
padding-bottom
:
30px
;
}
.message
>
div
{
display
:
flex
;
justify-content
:
space-between
;
...
...
src/pages/supply/bid/joinProject/bidSure/bidresultAdvice.vue
View file @
c3742962
...
...
@@ -5,8 +5,8 @@
<changeNav
:navs=
"navs"
></changeNav>
<div
class=
"message"
>
<div>
<div>
项目编号:456789567895678
</div>
<div>
项目名称:测试4567896789
</div>
<div>
项目编号:
{{
projectCode
}}
</div>
<div>
项目名称:
{{
projectName
}}
</div>
</div>
<div>
<div>
日期:2018-12-12
</div>
...
...
@@ -20,13 +20,14 @@
</div>
</div>
<div
class=
"centerButton"
>
<el-button>
返回
</el-button>
<el-button
@
click=
"back"
>
返回
</el-button>
</div>
</div>
</div>
</
template
>
<
script
>
import
{
bidResultBook
}
from
'@api/supply/bid'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
import
changeNav
from
'@components/changeNav.vue'
export
default
{
...
...
@@ -37,12 +38,30 @@ export default {
data
()
{
return
{
breads
:
[
'投标管理 '
,
'我参加的项目'
,
'工作台'
],
navs
:
[
'招标结果通知书'
]
navs
:
[
'招标结果通知书'
],
projectCode
:
""
,
projectName
:
""
}
},
methods
:
{
}
methods
:
{
back
(){
this
.
$router
.
go
(
-
1
)
},
async
getbidResultBook
()
{
let
message
=
{};
message
.
projectId
=
localStorage
.
getItem
(
"projectId"
)
message
.
companyId
=
localStorage
.
getItem
(
"companyId"
)
const
{
data
,
code
}
=
await
bidResultBook
(
message
)
}
},
created
()
{
this
.
projectCode
=
localStorage
.
getItem
(
"projectCode"
)
this
.
projectName
=
localStorage
.
getItem
(
"projectName"
)
this
.
getbidResultBook
()
}
}
</
script
>
...
...
src/pages/supply/bid/joinProject/bidSure/bidwinAdvice.vue
View file @
c3742962
...
...
@@ -24,13 +24,14 @@
<h3>
咨询电话:400-4567457
</h3>
<el-button
type=
"primary"
>
查看详情
</el-button>
</div>
<el-button>
返回
</el-button>
<el-button
@
click=
"back"
>
返回
</el-button>
</div>
</div>
</div>
</
template
>
<
script
>
import
{
winBookdetail
}
from
'@api/supply/bid'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
import
changeNav
from
'@components/changeNav.vue'
export
default
{
...
...
@@ -41,11 +42,27 @@ export default {
data
()
{
return
{
breads
:
[
'投标管理 '
,
'我参加的项目'
,
'工作台'
],
navs
:
[
'中标通知书'
]
navs
:
[
'中标通知书'
],
projectCode
:
""
,
projectName
:
""
}
},
methods
:
{
back
(){
this
.
$router
.
go
(
-
1
)
},
async
getwinBookdetail
()
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
data
,
code
}
=
await
winBookdetail
(
projectId
)
}
},
created
()
{
this
.
projectCode
=
localStorage
.
getItem
(
"projectCode"
)
this
.
projectName
=
localStorage
.
getItem
(
"projectName"
)
this
.
getwinBookdetail
()
}
}
...
...
src/pages/supply/bid/joinProject/bidSure/candidateSee.vue
View file @
c3742962
...
...
@@ -7,8 +7,8 @@
</div>
<div
class=
"content"
>
<div
class=
"flex-arround"
>
<div>
项目编号:
456789567895678
</div>
<div>
项目名称:
测试4567896789
</div>
<div>
项目编号:
{{
projectCode
}}
</div>
<div>
项目名称:
{{
projectName
}}
</div>
<div>
发布时间:2020-08-08 18:12
</div>
</div>
<h1>
一级标题
</h1>
...
...
@@ -17,27 +17,45 @@
</div>
<div
class=
"enclosure"
>
相关附件:34567890-678.pdf
</div>
<div
class=
"centerButton"
>
<el-button>
返回
</el-button>
<el-button
@
click=
"back"
>
返回
</el-button>
</div>
</div>
</div>
</
template
>
<
script
>
import
{
publicitydetail
}
from
'@api/supply/bid'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
export
default
{
components
:
{
dataBreadcrumb
dataBreadcrumb
,
projectName
,
projectCode
},
data
()
{
return
{
breads
:
[
'投标管理 '
,
'我参加的项目'
,
'工作台'
]
breads
:
[
'投标管理 '
,
'我参加的项目'
,
'工作台'
],
projectCode
:
""
,
projectName
:
""
}
},
methods
:
{
back
(){
this
.
$router
.
go
(
-
1
)
},
async
getpublicitydetail
()
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
data
,
code
}
=
await
publicitydetail
(
projectId
)
}
},
created
()
{
this
.
projectCode
=
localStorage
.
getItem
(
"projectCode"
)
this
.
projectName
=
localStorage
.
getItem
(
"projectName"
)
this
.
getpublicitydetail
()
}
}
</
script
>
...
...
src/pages/supply/bid/joinProject/bidSure/contractManagement.vue
View file @
c3742962
<
template
>
<div>
<div
class=
"content"
>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<changeNav
:navs=
"navs"
></changeNav>
<div
class=
"message"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"160px"
class=
"demo-ruleForm"
>
<div
class=
"flex-between"
>
<div>
项目编号:456789567895678
</div>
<div>
项目名称:测试4567896789
</div>
</div>
<div
class=
"flex-between"
>
<el-form-item
label=
"合同名称:"
prop=
"name"
>
<el-input
v-model=
"form.name"
placeholder=
"请输入"
></el-input>
</el-form-item>
<el-form-item
label=
"合同类型:"
prop=
"name"
>
<el-input
v-model=
"form.type"
placeholder=
"请输入"
></el-input>
</el-form-item>
</div>
<div
class=
"flex-between"
>
<el-form-item
label=
"工期:"
prop=
"name"
>
<el-input
v-model=
"form.name"
placeholder=
"请输入"
></el-input>
</el-form-item>
<el-form-item
label=
"总负责人名称:"
prop=
"name"
>
<el-input
v-model=
"form.type"
placeholder=
"请输入"
></el-input>
</el-form-item>
</div>
<div
class=
"flex-between"
>
<el-form-item
label=
"总负责人身份证号:"
prop=
"name"
>
<el-input
v-model=
"form.name"
placeholder=
"请输入"
></el-input>
</el-form-item>
<el-form-item
label=
"采购商名称:"
prop=
"name"
>
<el-input
v-model=
"form.type"
placeholder=
"请输入"
></el-input>
</el-form-item>
</div>
<div
class=
"flex-between"
>
<el-form-item
label=
"是否联合体投标:"
prop=
"name"
>
<el-radio
v-model=
"form.type"
label=
"1"
>
是
</el-radio>
<el-radio
v-model=
"form.type"
label=
"2"
>
否
</el-radio>
</el-form-item>
<el-form-item
label=
"合同总价(元):"
prop=
"name"
>
<el-input
v-model=
"form.type"
placeholder=
"请输入"
></el-input>
</el-form-item>
</div>
<div
class=
"flex-between"
>
<el-form-item
label=
"合同有效期起止日期:"
prop=
"data"
>
<el-date-picker
v-model=
"form.data"
type=
"datetimerange"
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"合同期限(天):"
prop=
"name"
>
<el-input
v-model=
"form.type"
placeholder=
"请输入"
></el-input>
</el-form-item>
</div>
<el-form-item
label=
"合同文件:"
prop=
"name"
>
<el-input
v-model=
"form.type"
placeholder=
"请输入"
></el-input>
</el-form-item>
<el-form-item
label=
"其它附件:"
prop=
"name"
>
<el-input
v-model=
"form.type"
placeholder=
"请输入"
></el-input>
</el-form-item>
<el-form-item
label=
"合同范围:"
prop=
"name"
>
<el-input
v-model=
"form.type"
:rows=
"4"
placeholder=
"请输入"
type=
"textarea"
></el-input>
</el-form-item>
</el-form>
</div>
<div
class=
"centerButton"
>
<el-button>
返回
</el-button>
<el-button
type=
"primary"
>
保存
</el-button>
</div>
</div>
</div>
<div>
<div
class=
"content"
>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<changeNav
:navs=
"navs"
></changeNav>
<div
class=
"message"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"160px"
class=
"demo-ruleForm"
>
<div
class=
"flex-between"
>
<div>
项目编号:456789567895678
</div>
<div>
项目名称:测试4567896789
</div>
</div>
<div
class=
"flex-between"
>
<el-form-item
label=
"合同名称:"
prop=
"name"
>
<el-input
v-model=
"form.name"
placeholder=
"请输入"
></el-input>
</el-form-item>
<el-form-item
label=
"合同类型:"
prop=
"name"
>
<el-input
v-model=
"form.type"
placeholder=
"请输入"
></el-input>
</el-form-item>
</div>
<div
class=
"flex-between"
>
<el-form-item
label=
"工期:"
prop=
"name"
>
<el-input
v-model=
"form.name"
placeholder=
"请输入"
></el-input>
</el-form-item>
<el-form-item
label=
"总负责人名称:"
prop=
"name"
>
<el-input
v-model=
"form.type"
placeholder=
"请输入"
></el-input>
</el-form-item>
</div>
<div
class=
"flex-between"
>
<el-form-item
label=
"总负责人身份证号:"
prop=
"name"
>
<el-input
v-model=
"form.name"
placeholder=
"请输入"
></el-input>
</el-form-item>
<el-form-item
label=
"采购商名称:"
prop=
"name"
>
<el-input
v-model=
"form.type"
placeholder=
"请输入"
></el-input>
</el-form-item>
</div>
<div
class=
"flex-between"
>
<el-form-item
label=
"是否联合体投标:"
prop=
"name"
>
<el-radio
v-model=
"form.type"
label=
"1"
>
是
</el-radio>
<el-radio
v-model=
"form.type"
label=
"2"
>
否
</el-radio>
</el-form-item>
<el-form-item
label=
"合同总价(元):"
prop=
"name"
>
<el-input
v-model=
"form.type"
placeholder=
"请输入"
></el-input>
</el-form-item>
</div>
<div
class=
"flex-between"
>
<el-form-item
label=
"合同有效期起止日期:"
prop=
"data"
>
<el-date-picker
v-model=
"form.data"
type=
"datetimerange"
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"合同期限(天):"
prop=
"name"
>
<el-input
v-model=
"form.type"
placeholder=
"请输入"
></el-input>
</el-form-item>
</div>
<el-form-item
label=
"合同文件:"
prop=
"name"
>
<el-input
v-model=
"form.type"
placeholder=
"请输入"
></el-input>
</el-form-item>
<el-form-item
label=
"其它附件:"
prop=
"name"
>
<el-input
v-model=
"form.type"
placeholder=
"请输入"
></el-input>
</el-form-item>
<el-form-item
label=
"合同范围:"
prop=
"name"
>
<el-input
v-model=
"form.type"
:rows=
"4"
placeholder=
"请输入"
type=
"textarea"
></el-input>
</el-form-item>
</el-form>
</div>
<div
class=
"centerButton"
>
<el-button
@
click=
"back"
>
返回
</el-button>
<el-button
type=
"primary"
>
保存
</el-button>
</div>
</div>
</div>
</
template
>
<
script
>
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
import
changeNav
from
'@components/changeNav.vue'
export
default
{
components
:
{
dataBreadcrumb
,
changeNav
},
data
()
{
return
{
breads
:
[
'投标管理 '
,
'我参加的项目'
,
'工作台'
],
navs
:
[
'合同管理'
],
form
:
{
name
:
''
,
data
:
''
,
type
:
''
},
rules
:
{
name
:
[{
required
:
true
,
message
:
'请选择时间'
,
trigger
:
'blur'
}]
}
}
},
methods
:
{
import
{
contractdetail
}
from
'@api/supply/bid'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
import
changeNav
from
'@components/changeNav.vue'
export
default
{
components
:
{
dataBreadcrumb
,
changeNav
},
data
()
{
return
{
breads
:
[
'投标管理 '
,
'我参加的项目'
,
'工作台'
],
navs
:
[
'合同管理'
],
form
:
{
name
:
''
,
data
:
''
,
type
:
''
},
rules
:
{
name
:
[{
required
:
true
,
message
:
'请选择时间'
,
trigger
:
'blur'
}]
},
projectCode
:
""
,
projectName
:
""
}
},
methods
:
{
back
()
{
this
.
$router
.
go
(
-
1
)
},
async
getcontractdetaill
()
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
data
,
code
}
=
await
contractdetail
(
projectId
)
}
},
created
()
{
this
.
projectCode
=
localStorage
.
getItem
(
"projectCode"
);
this
.
projectName
=
localStorage
.
getItem
(
"projectName"
);
this
.
getcontractdetaill
()
}
}
}
}
</
script
>
<
style
scoped
>
.message
{
.message
{
width
:
60%
;
margin
:
0
auto
margin
:
0
auto
}
</
style
>
src/pages/supply/bid/joinProject/bidSure/noticeSee.vue
View file @
c3742962
...
...
@@ -7,8 +7,8 @@
</div>
<div
class=
"content"
>
<div
class=
"flex-arround"
>
<div>
项目编号:
456789567895678
</div>
<div>
项目名称:
测试4567896789
</div>
<div>
项目编号:
{{
projectCode
}}
</div>
<div>
项目名称:
{{
projectName
}}
</div>
<div>
发布时间:2020-08-08 18:12
</div>
</div>
<h1>
一级标题
</h1>
...
...
@@ -17,13 +17,14 @@
</div>
<div
class=
"enclosure"
>
相关附件:34567890-678.pdf
</div>
<div
class=
"centerButton"
>
<el-button>
返回
</el-button>
<el-button
@
click=
"back"
>
返回
</el-button>
</div>
</div>
</div>
</
template
>
<
script
>
import
{
winBookdetail
}
from
'@api/supply/bid'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
export
default
{
components
:
{
...
...
@@ -31,13 +32,28 @@ export default {
},
data
()
{
return
{
breads
:
[
'投标管理 '
,
'我参加的项目'
,
'工作台'
]
breads
:
[
'投标管理 '
,
'我参加的项目'
,
'工作台'
],
projectCode
:
""
,
projectName
:
""
}
},
methods
:
{
back
(){
this
.
$router
.
go
(
-
1
)
},
async
getwinBookdetail
()
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
data
,
code
}
=
await
winBookdetail
(
projectId
)
}
},
created
()
{
this
.
projectCode
=
localStorage
.
getItem
(
"projectCode"
)
this
.
projectName
=
localStorage
.
getItem
(
"projectName"
)
this
.
getwinBookdetail
()
}
}
</
script
>
...
...
src/pages/supply/bid/joinProject/workbench.vue
View file @
c3742962
...
...
@@ -90,45 +90,41 @@ export default {
title
:
'评标'
,
modulars
:
[{
label
:
"评标问题澄清"
,
url
:
"/supply/bid/
bidSure/see
"
url
:
"/supply/bid/
joinProject/bidEvaluation/evaluationList
"
}]
},
{
title
:
'定标'
,
modulars
:
[{
label
:
"
确定中标人
"
,
url
:
"/supply/bid/
bidSure/determin
e"
label
:
"
中标候选人公示查看
"
,
url
:
"/supply/bid/
joinProject/bidSure/candidateSe
e"
},
{
label
:
"
重新确定中标人
"
,
url
:
"/supply/bid/
bidSure/determin
e"
label
:
"
中标公告查看
"
,
url
:
"/supply/bid/
joinProject/bidSure/noticeSe
e"
},
{
label
:
"中标
候选人公示
"
,
url
:
"/supply/bid/
bidSure/publicity
"
label
:
"中标
通知书查看
"
,
url
:
"/supply/bid/
joinProject/bidSure/bidwinAdvice
"
},
{
label
:
"中标公告"
,
url
:
"/supply/bid/bidSure/notice"
},
{
label
:
"中标通知书处理"
,
url
:
"/supply/bid/bidSure/winBid/list"
label
:
"招标结果通知书查看"
,
url
:
"/supply/bid/joinProject/bidSure/bidresultAdvice"
},
{
label
:
"合同管理"
,
url
:
"/supply/bid/
bidSure/contrac
t"
url
:
"/supply/bid/
joinProject/bidSure/contractManagemen
t"
}]
},
{
title
:
'费用'
,
modulars
:
[{
label
:
"标书费缴纳管理"
,
url
:
"/supply/bid/
bidStage/tenderFeelist
"
url
:
"/supply/bid/
joinProject/bidStage/tenderFee
"
},
{
label
:
"保证金缴纳管理"
,
url
:
"/supply/bid/bidStage/bondList"
url
:
"/supply/bid/
joinProject/
bidStage/bondList"
}]
},
]
...
...
src/pages/supply/markBid/markBid.vue
View file @
c3742962
<
template
>
<div>
<div
class=
"content-head"
>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<h3>
制作投标文件
</h3>
<h5>
新建短信群发
</h5>
</div>
<div
class=
"othercontent"
>
<div
class=
"message"
>
<div>
<div
class=
"describe"
>
流程进度
</div>
<div
class=
"step"
>
<el-steps
:active=
"active"
finish-status=
"success"
>
<el-step
title=
"整本投标文件"
></el-step>
<el-step
title=
"开标一览表"
></el-step>
<el-step
title=
"附件"
></el-step>
</el-steps>
</div>
</div>
<div
v-show=
"active==0"
>
<div
class=
"describe"
>
整本投标文件
</div>
<div
class=
"flex-center content"
>
<Upload
:limit=
"1"
:max=
"200"
tip=
"请不要上传超过200M的PDF文件"
@
input=
"getfile"
></Upload>
</div>
</div>
<div
v-show=
"active==1"
>
<div
class=
"describe"
>
开标一览表
</div>
<div
class=
"flex-center content"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
class=
"demo-ruleForm"
>
<el-form-item
label=
"投标人名称:"
prop=
"name"
>
<el-input
v-model=
"form.name"
></el-input>
</el-form-item>
<el-form-item
label=
"投标报价(元):"
prop=
"name"
>
<el-input
v-model=
"form.name"
></el-input>
</el-form-item>
</el-form>
</div>
</div>
<div
v-show=
"active==2"
>
<div
class=
"describe"
>
其他文件
</div>
<div
class=
"flex-center content"
>
<div
style=
"margin-bottom: 30px;"
>
上传附件:
</div>
<Upload
:limit=
"5"
:max=
"100"
tip=
"支持上传5个文件,每个文件不能超过100M。"
@
input=
"getfile"
></Upload>
</div>
</div>
<div
class=
"bottomButton"
>
<el-button
style=
"margin-top: 12px;"
@
click=
"next"
>
下一步
</el-button>
</div>
</div>
</div>
</div>
<div>
<div
class=
"content-head"
>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<h3>
制作投标文件
</h3>
<h5>
新建短信群发
</h5>
</div>
<div
class=
"othercontent"
>
<div
class=
"message"
>
<div>
<div
class=
"describe"
>
流程进度
</div>
<div
class=
"step"
>
<el-steps
:active=
"active"
finish-status=
"success"
>
<el-step
title=
"整本投标文件"
></el-step>
<el-step
title=
"开标一览表"
></el-step>
<el-step
title=
"附件"
></el-step>
</el-steps>
</div>
</div>
<div
v-show=
"active==0"
>
<div
class=
"describe"
>
整本投标文件
</div>
<div
class=
"flex-center content"
>
<Upload
:limit=
"1"
:max=
"200"
tip=
"请不要上传超过200M的PDF文件"
accept=
".pdf"
@
input=
"getfile"
></Upload>
</div>
</div>
<div
v-show=
"active==1"
>
<div
class=
"describe"
>
开标一览表
</div>
<div
class=
"flex-center content"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"150px"
class=
"demo-ruleForm"
>
<el-form-item
label=
"投标人名称:"
>
<div>
{{
companyName
}}
</div>
</el-form-item>
<el-form-item
label=
"投标报价(元):"
prop=
"price"
>
<el-input-number
v-model=
"form.price"
:min=
"0"
:controls=
"false"
:precision=
"2"
placeholder=
"输入"
></el-input-number>
</el-form-item>
</el-form>
</div>
</div>
<div
v-show=
"active==2"
>
<div
class=
"describe"
>
其他文件
</div>
<div
class=
"flex-center content"
>
<div
style=
"margin-bottom: 30px;"
>
上传附件:
</div>
<Upload
:limit=
"5"
:max=
"100"
tip=
"支持上传5个文件,每个文件不能超过100M。"
@
input=
"getfile1"
></Upload>
</div>
</div>
<div
class=
"bottomButton"
v-if=
"active==0"
>
<el-button
style=
"margin-top: 12px;"
@
click=
"back"
>
取消
</el-button>
<el-button
style=
"margin-top: 12px;"
@
click=
"next"
type=
"primary"
>
下一步
</el-button>
</div>
<div
class=
"bottomButton"
v-else-if=
"active==1"
>
<el-button
style=
"margin-top: 12px;"
@
click=
"prev"
>
上一步
</el-button>
<el-button
style=
"margin-top: 12px;"
@
click=
"next"
type=
"primary"
>
下一步
</el-button>
</div>
<div
class=
"bottomButton"
v-else=
"active==0"
>
<el-button
style=
"margin-top: 12px;"
@
click=
"prev"
>
上一步
</el-button>
<el-button
style=
"margin-top: 12px;"
@
click=
"next"
type=
"primary"
>
生成投标文件
</el-button>
</div>
</div>
</div>
</div>
</
template
>
<
script
>
import
Upload
from
'@components/Upload/Upload.vue'
export
default
{
components
:
{
Upload
},
data
()
{
return
{
form
:
{
name
:
''
},
rules
:
{
date2
:
[{
type
:
'date'
,
required
:
true
,
message
:
'请选择时间'
,
trigger
:
'blur'
}]
},
active
:
0
,
breads
:
[
'投标管理'
,
'我参与的项目'
,
'工作台'
]
}
},
methods
:
{
next
()
{
if
(
this
.
active
++
>
2
)
this
.
active
=
0
}
}
import
{
makeFile
}
from
'@api/supply/bid'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
import
Upload
from
'@components/Upload/Upload.vue'
export
default
{
components
:
{
Upload
,
dataBreadcrumb
},
data
()
{
return
{
bidFile
:
[],
companyName
:
""
,
form
:
{
fileList
:
[],
price
:
""
,
bidFileName
:
""
,
bidFileUrl
:
""
},
rules
:
{
price
:
[{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}]
},
active
:
0
,
breads
:
[
'投标管理'
,
'我参与的项目'
,
'工作台'
]
}
},
methods
:
{
async
next
()
{
try
{
let
active
=
this
.
active
;
if
(
active
==
0
)
{
if
(
this
.
bidFile
.
length
>
0
)
{
this
.
form
.
bidFileName
=
this
.
bidFile
[
0
].
fileName
this
.
form
.
bidFileUrl
=
this
.
bidFile
[
0
].
fileUrl
this
.
active
++
}
else
{
this
.
$message
.
error
(
"请上传投标文件"
)
}
}
else
if
(
active
==
1
)
{
const
valid
=
await
this
.
$refs
[
'form'
].
validate
()
if
(
valid
)
{
this
.
active
++
}
}
else
{
try
{
let
form
=
this
.
form
;
form
.
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
msg
,
code
}
=
await
makeFile
(
form
)
if
(
code
==
200
)
{
this
.
$message
({
message
:
msg
,
type
:
'success'
,
duration
:
1500
})
setTimeout
(()
=>
{
this
.
$router
.
go
(
-
1
)
},
1500
)
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
}
},
prev
(){
this
.
active
--
},
back
(){
this
.
$router
.
go
(
-
1
)
},
// 主要文件
getfile
(
val
)
{
this
.
bidFile
=
val
},
//附件
getfile1
(
val
)
{
this
.
form
.
fileList
=
val
},
},
created
()
{
this
.
companyName
=
JSON
.
parse
(
localStorage
.
getItem
(
"userInfo"
)).
companyName
}
}
</
script
>
<
style
scoped
>
.content
{
padding
:
50px
0
.content
{
padding
:
50px
0
}
.message
>
div
{
background
:
#fff
;
margin-bottom
:
20px
;
}
.step
{
margin
:
0
auto
;
width
:
60%
;
padding
:
50px
0
}
.message
>
div
{
background
:
#fff
;
margin-bottom
:
20px
;
}
.step
{
margin
:
0
auto
;
width
:
60%
;
padding
:
50px
0
}
</
style
>
src/router/index.js
View file @
c3742962
...
...
@@ -695,6 +695,11 @@ export default new Router({
show
:
true
,
component
:
()
=>
import
(
'../pages/supply/bid/joinProject/bidEvaluation/reply.vue'
)
},
{
path
:
'/supply/bid/joinProject/bidEvaluation/see'
,
show
:
true
,
component
:
()
=>
import
(
'../pages/supply/bid/joinProject/bidEvaluation/see.vue'
)
},
{
path
:
'/supply/bid/joinProject/bidEvaluation/bidopenList'
,
show
:
true
,
...
...
src/utils/request.js
View file @
c3742962
...
...
@@ -5,8 +5,8 @@ import { Message, MessageBox } from 'element-ui'
// 创建axios实例
const
service
=
axios
.
create
({
//
baseURL: 'http://192.168.200.201:8082/apis',
baseURL
:
'http://192.168.3.35:8085/apis'
,
baseURL
:
'http://192.168.200.201:8082/apis'
,
//
baseURL: 'http://192.168.3.35:8085/apis',
timeout
:
35000
// 请求超时时间
})
...
...
@@ -37,15 +37,15 @@ service.interceptors.response.use(
}
},
error
=>
{
console
.
log
(
error
.
response
.
status
)
if
(
error
.
response
.
status
==
401
){
Message
.
error
(
"登陆失效,请重新登录!"
)
localStorage
.
removeItem
(
'token'
);
setTimeout
(
function
()
{
//
location.href = 'http://192.168.200.201:8081/login/user/';
location
.
href
=
'http://localhost:3000/login/user/'
;
location
.
href
=
'http://192.168.200.201:8081/login/user/'
;
//
location.href = 'http://localhost:3000/login/user/';
},
2000
);
}
}
)
1111
)
export
default
service
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