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
34a25056
Commit
34a25056
authored
Sep 23, 2020
by
张冬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
联调修改
parent
7355e38f
Show whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
1067 additions
and
374 deletions
+1067
-374
bid.js
src/api/purchaser/bid.js
+134
-10
buyOut.js
src/api/purchaser/buyOut.js
+9
-0
main.css
src/assets/css/main.css
+1
-0
common.css
src/common/common.css
+1
-1
Sidebar.vue
src/components/common/Sidebar.vue
+1
-1
dataTable.vue
src/components/dataTable.vue
+1
-0
timeDown.vue
src/components/timeDown.vue
+12
-7
content.vue
...es/purchaser/bid/bidEvaluation/projectManager/content.vue
+158
-75
fail.vue
...pages/purchaser/bid/bidEvaluation/projectManager/fail.vue
+30
-5
add.vue
src/pages/purchaser/bid/bidEvaluation/review/add.vue
+1
-1
clear.vue
src/pages/purchaser/bid/bidEvaluation/review/clear.vue
+1
-1
review.vue
src/pages/purchaser/bid/bidEvaluation/review/review.vue
+122
-52
bidOpenhal.vue
src/pages/purchaser/bid/bidOpen/bidOpenhal.vue
+349
-92
detail.vue
src/pages/purchaser/bid/bidStage/bondList/detail.vue
+9
-2
changeNotice.vue
src/pages/purchaser/bid/bidStage/changeList/changeNotice.vue
+8
-8
determine.vue
src/pages/purchaser/bid/bidSure/determine.vue
+52
-48
notice.vue
src/pages/purchaser/bid/bidSure/notice.vue
+37
-5
publicity.vue
src/pages/purchaser/bid/bidSure/publicity.vue
+50
-35
see.vue
src/pages/purchaser/bid/bidSure/see.vue
+25
-3
edit.vue
src/pages/purchaser/bid/bidSure/winBid/edit.vue
+18
-6
list.vue
src/pages/purchaser/bid/bidSure/winBid/list.vue
+3
-3
inquiryAnnouncement.vue
src/pages/purchaser/bid/reviewed/inquiryAnnouncement.vue
+0
-1
tenderAnnouncement.vue
src/pages/purchaser/bid/reviewed/tenderAnnouncement.vue
+2
-2
buyoutList.vue
src/pages/purchaser/buyOut/buyoutList.vue
+1
-1
contractSign.vue
src/pages/purchaser/buyOut/contractSign.vue
+34
-8
allSupplySee.vue
src/pages/purchaser/supply/allSupply/allSupplySee.vue
+6
-5
request.js
src/utils/request.js
+2
-2
No files found.
src/api/purchaser/bid.js
View file @
34a25056
...
...
@@ -180,16 +180,112 @@ export function noticeAbortive(id) {
// })
// }
// 2.1.4
//开标大厅
// 开标一览表
export
function
openInfo
(
projectId
)
{
return
request
({
url
:
`open-bid/openInfo/
${
projectId
}
`
,
method
:
'get'
,
})
}
//签到解密简略
export
function
signdetail
(
projectId
)
{
return
request
({
url
:
`/open-bid/sign/
${
projectId
}
`
,
method
:
'get'
,
})
}
// 开标按钮上三个信息(投标人数,缴纳保证金人数,签到人数)
export
function
startInfo
(
projectId
)
{
return
request
({
url
:
`open-bid/startInfo/
${
projectId
}
`
,
method
:
'get'
,
})
}
//获取开标大厅的时间信息
export
function
timeInfo
(
projectId
)
{
return
request
({
url
:
`open-bid/timeInfo/
${
projectId
}
`
,
method
:
'get'
,
})
}
// 立即开标
export
function
startbid
(
projectId
)
{
return
request
({
url
:
`open-bid/start/
${
projectId
}
`
,
method
:
'put'
,
})
}
// 流标
export
function
openbidFailed
(
data
)
{
return
request
({
url
:
"open-bid/bidFailed"
,
method
:
'post'
,
data
:
data
})
}
// 查看流标信息
export
function
bidFaileddetail
(
projectId
)
{
return
request
({
url
:
`open-bid/bidFailed/detail/
${
projectId
}
`
,
method
:
'get'
,
})
}
// 2.1.5
// 评标管理:变更公告列表
export
function
accessoryupload
(
data
)
{
return
request
({
url
:
"tender-evaluate/accessory/upload"
,
method
:
'post'
,
data
:
data
})
}
// 评标管理:变更公告列表
export
function
changeNoticelist
(
projectId
)
{
return
request
({
url
:
`tender-evaluate/changeNotice/list/
${
projectId
}
`
,
method
:
'get'
,
})
}
//投标文件
export
function
bidFilelist
(
projectId
)
{
return
request
({
url
:
`tender-evaluate/bidFile/list/
${
projectId
}
`
,
method
:
'get'
,
})
}
// 评标附件
export
function
accessorydownload
(
projectId
)
{
return
request
({
url
:
`tender-evaluate/accessory/download/
${
projectId
}
`
,
method
:
'get'
,
})
}
// 流标
export
function
bidFailed
(
data
)
{
return
request
({
url
:
"tender-evaluate/bidFailed"
,
method
:
'p
u
t'
,
method
:
'p
os
t'
,
data
:
data
})
}
//项目经理中的评标结算按钮
export
function
bidend
(
projectId
)
{
return
request
({
url
:
`/tender-evaluate/end/
${
projectId
}
`
,
method
:
'put'
,
})
}
// 查看投标公司评审信息
export
function
CompanyEvaluatec
(
projectId
)
{
...
...
@@ -325,6 +421,34 @@ export function bidsetting(data) {
data
:
data
})
}
//中标候选人公示提交
export
function
createcadidate
(
data
)
{
return
request
({
url
:
"/tender-notice/create-cadidate"
,
method
:
'post'
,
data
:
data
})
}
//中标公告提交
export
function
createwin
(
data
)
{
return
request
({
url
:
"tender-notice/create-win"
,
method
:
'post'
,
data
:
data
})
}
// 标书费提交
export
function
operationAduit
(
data
)
{
...
...
@@ -336,11 +460,12 @@ export function operationAduit(data) {
}
// 2.1.4
//开标大厅
// export function onlineCount() {
// return request({
// url: "/onlineCount",
// method: 'get',
// })
// }
\ No newline at end of file
// 招标文件下载
export
function
bidBookDownload
(
projectId
)
{
return
request
({
url
:
`tender-evaluate/bidBook-download/
${
projectId
}
`
,
method
:
'get'
,
})
}
src/api/purchaser/buyOut.js
View file @
34a25056
...
...
@@ -23,6 +23,15 @@ export function evidenceDetail(params) {
params
:
params
})
}
// 签署合同
export
function
signContract
(
projectId
)
{
return
request
({
url
:
`tender-payment/sign-contract/
${
projectId
}
`
,
method
:
'put'
,
})
}
src/assets/css/main.css
View file @
34a25056
...
...
@@ -22,6 +22,7 @@ a {
.content-box
{
min-width
:
1000px
;
position
:
absolute
;
left
:
250px
;
right
:
0
;
...
...
src/common/common.css
View file @
34a25056
...
...
@@ -201,7 +201,7 @@ img {
.tips
{
color
:
#FF0000
}
.el-input
{
.message
.el-input
{
width
:
250px
!important
;
...
...
src/components/common/Sidebar.vue
View file @
34a25056
...
...
@@ -81,7 +81,7 @@ export default {
{
icon
:
'el-icon-lx-home'
,
index
:
'/purchaser/buyOut/buyoutList'
,
title
:
'
平台交货
列表'
,
title
:
'
应收账款买断
列表'
,
}
]
},
...
...
src/components/dataTable.vue
View file @
34a25056
...
...
@@ -155,6 +155,7 @@ export default {
}
},
created
()
{
console
.
log
(
"分页"
)
if
(
this
.
checklist
.
length
>
0
)
{
const
obj
=
{}
this
.
checklist
.
forEach
((
item
)
=>
{
...
...
src/components/timeDown.vue
View file @
34a25056
...
...
@@ -6,12 +6,7 @@
<
script
>
export
default
{
props
:
{
remainTime
:
{
type
:
Number
,
default
:
1200000
}
},
props
:
[
"remainTime"
],
data
()
{
return
{
hour
:
''
,
...
...
@@ -31,7 +26,18 @@ export default {
return
this
.
formatNum
(
this
.
second
)
}
},
watch
:{
remainTime
(
newValue
,
oldValue
)
{
console
.
log
(
"监听"
)
this
.
checkTime
()
return
newValue
;
}
},
mounted
()
{
this
.
checkTime
()
},
methods
:
{
checkTime
(){
if
(
this
.
remainTime
>
0
)
{
this
.
hour
=
Math
.
floor
((
this
.
remainTime
/
3600
)
%
24
)
this
.
minute
=
Math
.
floor
((
this
.
remainTime
/
60
)
%
60
)
...
...
@@ -39,7 +45,6 @@ export default {
this
.
countDowm
()
}
},
methods
:
{
countDowm
()
{
var
self
=
this
clearInterval
(
this
.
promiseTimer
)
...
...
src/pages/purchaser/bid/bidEvaluation/projectManager/content.vue
View file @
34a25056
...
...
@@ -4,31 +4,27 @@
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<div
class=
"message"
>
<div
class=
"flex-between"
style=
"width: 50%;"
>
<div>
招标文件:
<span>
下载招标文件
</span></div>
<div>
招标文件:
<span
@
click=
"download(bidDetail.fileUrl)"
>
{{
bidDetail
.
fileName
}}
</span></div>
<div>
开标信息:
<span>
开标一览表
</span></div>
</div>
<div
class=
"flex upload"
>
<div>
变更信息:
</div>
<ul
class=
"title"
>
<li
class=
"flex"
>
<div>
公告标题.pdf
</div>
<button>
下载
</button>
</li>
<li
class=
"flex"
>
<div>
公告标题.pdf
</div>
<button>
下载
</button>
<li
class=
"flex"
v-for=
"(item,index) in changeList"
:key=
"index"
>
<router-link
:to=
"
{path: '/purchaser/bid/bidStage/changeList/see', query: {id: item.noticeId }}">
{{
item
.
title
}}
</router-link>
</li>
</ul>
</div>
<!-- 投标文件 -->
<div>
<div>
投标文件:
</div>
<dataTable
:table-data=
"bids"
:columns=
"bidTitle"
:is-pageobj=
"fals
e"
:is-index=
"true"
>
<dataTable
:table-data=
"bids"
:columns=
"bidTitl
e"
:is-index=
"true"
>
<el-table-column
slot=
"operate"
label=
"文件"
align=
"center"
fixed=
"right"
>
<template
slot-scope=
"scope"
>
<ul
class=
"flex file"
>
<li
v-for=
"(file,index) in scope.row.files"
:key=
"index"
>
{{
file
}}
下载
</li>
</ul>
<div
class=
"flex file"
>
<div
@
click=
"down(scope.row.fileUrl)"
>
{{
scope
.
row
.
fileName
}}
</div>
<div
v-for=
"(file,index) in scope.row.fileList"
:key=
"index"
@
click=
"down(file.fileUrl)"
>
{{
file
.
fileName
}}
</div>
</div>
</
template
>
</el-table-column>
</dataTable>
...
...
@@ -37,9 +33,9 @@
<div
style=
"margin-top:100px"
>
<div
class=
"flex-between"
>
<h5>
评审信息
</h5>
<el-button
type=
"primary"
size=
"small"
>
澄清质询查看
</el-button>
<el-button
type=
"primary"
size=
"small"
@
click=
'jump'
>
澄清质询查看
</el-button>
</div>
<dataTable
:table-data=
"review"
:columns=
"reviewTitle"
:is-pageobj=
"fals
e"
:is-index=
"true"
>
<dataTable
:table-data=
"review"
:columns=
"reviewTitl
e"
:is-index=
"true"
>
<el-table-column
slot=
"operate"
label=
"资格审查"
align=
"center"
fixed=
"right"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
"scope.row.qualifi==0"
>
通过
</div>
...
...
@@ -69,22 +65,23 @@
<!-- 排名信息 -->
<div>
<h5>
排名信息
</h5>
<dataTable
:table-data=
"rank"
:columns=
"rankTitle"
:is-pageobj=
"fals
e"
:is-index=
"true"
>
<dataTable
:table-data=
"rank"
:columns=
"rankTitl
e"
:is-index=
"true"
>
</dataTable>
</div>
<div
class=
"flex"
>
<div>
评标附件:
</div>
<ul
class=
"upload"
>
<li
class=
"fl
ex"
>
<div>
评价附件.pdf
</div>
<button
>
下载
</button>
<li
class=
"flex"
v-for=
"(item,index) in downloadList"
:key=
"ind
ex"
>
<div>
{{item.fileName}}
</div>
<button
@
click=
"down(item.fileUrl)"
>
下载
</button>
</li>
</ul>
</div>
<div
class=
"button"
>
<el-button
>
返回
</el-button>
<el-button
@
click=
"back"
>
返回
</el-button>
<el-button
@
click=
"fail"
>
流标
</el-button>
<el-button
type=
"primary
"
>
评标结束
</el-button>
<el-button
type=
"primary"
@
click=
"end
"
>
评标结束
</el-button>
</div>
</div>
</div>
...
...
@@ -92,34 +89,46 @@
</template>
<
script
>
import
dataTable
from
'@components/dataTable.vue'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
export
default
{
import
{
bidend
,
CompanyEvaluatec
,
companyRank
,
bidBookDownload
,
changeNoticelist
,
bidFilelist
,
accessorydownload
}
from
'@api/purchaser/bid'
import
dataTable
from
'@components/nopageTable.vue'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
export
default
{
components
:
{
dataTable
,
dataBreadcrumb
},
data
()
{
return
{
downloadList
:[],
changeList
:[],
bidDetail
:
""
,
rankTitle
:
[{
label
:
'投标人名称'
,
prop
:
'n
ame'
prop
:
'companyN
ame'
},
{
label
:
'投标价(元)'
,
prop
:
'bidP
rice'
prop
:
'p
rice'
},
{
label
:
'商务评分'
,
prop
:
'businessScor
e'
prop
:
'commercialGrad
e'
},
{
label
:
'技术评分'
,
prop
:
'technicalScor
e'
prop
:
'skillGrad
e'
},
{
label
:
'价格得
分'
,
prop
:
'priceScor
e'
label
:
'价格评
分'
,
prop
:
'priceGrad
e'
},
{
label
:
'评标价(元)'
,
...
...
@@ -132,81 +141,153 @@ export default {
{
label
:
'最终得分'
,
prop
:
'finalScore'
}
],
rank
:
[{
name
:
'上海腾讯'
,
bidPrice
:
'490000'
,
businessScore
:
'30'
,
technicalScore
:
'4.8'
,
priceScore
:
'18.8'
,
evaluationPrice
:
'490000'
,
rank
:
'1'
,
finalScore
:
'53.6'
},
{
slot
:
'operate'
}
],
rank
:
[],
bidTitle
:
[{
label
:
'投标人'
,
prop
:
'n
ame'
prop
:
'companyN
ame'
},
{
slot
:
'operate'
}
],
bids
:
[{
name
:
'上海致远有限公司'
,
files
:
[
'313121.zip'
,
'546465.zip'
]
}],
bids
:
[],
breads
:
[
'招标管理'
,
'招标项目管理'
,
'工作台'
],
review
:
[{
name
:
'上海腾讯'
,
qualifi
:
'1'
,
accord
:
'1'
,
fail
:
'1'
,
conclusion
:
'1'
},
{
name
:
'上海腾讯'
,
qualifi
:
'0'
,
accord
:
'0'
,
fail
:
'0'
,
conclusion
:
'0'
}
],
review
:
[],
reviewTitle
:
[{
label
:
'投标人名称'
,
prop
:
'n
ame'
prop
:
'companyN
ame'
},
{
slot
:
'operate'
}
],
// 操作列
}
},
methods
:
{
down
(
url
){
window
.
open
(
url
)
},
jump
()
{
this
.
$router
.
push
(
'/purchaser/bid/bidEvaluation/review/clear'
)
},
// 查看评标附件
async
getaccessorydownload
(){
let
projectId
=
localStorage
.
getItem
(
"projectId"
);
const
{
data
,
code
}
=
await
accessorydownload
(
projectId
)
if
(
code
===
200
){
this
.
downloadList
=
data
}
},
pageObj
:
{
size
:
10
,
total
:
1
,
currentPage
:
1
,
sizes
:
[
100
,
200
,
300
],
func
:
(
currentPage
)
=>
{
this
.
pageTurning
(
currentPage
)
// 查看投标文件
async
getbidFilelist
(){
let
projectId
=
localStorage
.
getItem
(
"projectId"
);
const
{
data
,
code
}
=
await
bidFilelist
(
projectId
)
if
(
code
===
200
){
this
.
bids
=
data
}
},
// 查看变更信息
async
getchangeNoticelist
(){
let
projectId
=
localStorage
.
getItem
(
"projectId"
);
const
{
data
,
code
}
=
await
changeNoticelist
(
projectId
)
if
(
code
===
200
){
this
.
changeList
=
data
;
}
},
// 查投标公司评审信息
async
getCompanyEvaluatec
()
{
try
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
);
const
{
data
,
code
}
=
await
CompanyEvaluatec
(
projectId
)
if
(
code
===
200
)
{
this
.
review
=
data
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
},
methods
:
{
// 查看投标公司排名信息
async
getcompanyRank
()
{
try
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
);
const
{
data
,
code
}
=
await
companyRank
(
projectId
)
if
(
code
===
200
)
{
this
.
rank
=
data
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
},
async
getbidBookDownload
()
{
try
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
data
,
code
}
=
await
bidBookDownload
(
projectId
)
if
(
code
===
200
)
{
this
.
bidDetail
=
data
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
},
async
end
()
{
// 二次确认
this
.
$confirm
(
'确定要流标吗?'
,
'提示'
,
{
type
:
'warning'
})
.
then
(
async
()
=>
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
msg
,
code
}
=
await
bidend
(
projectId
)
this
.
$message
({
message
:
msg
,
type
:
'success'
,
duration
:
1500
})
})
.
catch
(()
=>
{})
},
back
()
{
this
.
$router
.
go
(
-
1
)
},
examine
()
{
this
.
$router
.
push
(
'/admin/bid/bidingDetail'
)
},
fail
()
{
this
.
$router
.
push
(
'/purchaser/bid/bidEvaluation/projectManager/fail'
)
}
},
created
()
{
this
.
getaccessorydownload
();
this
.
getbidFilelist
();
this
.
getchangeNoticelist
();
this
.
getcompanyRank
()
this
.
getCompanyEvaluatec
()
this
.
getbidBookDownload
();
},
}
}
</
script
>
<
style
scoped
>
.file
>
li
{
.file
>
div
{
margin-right
:
10px
;
color
:
#113DEE
}
...
...
@@ -236,12 +317,14 @@ export default {
height
:
20px
;
margin-left
:
10px
;
}
h5
{
font-weight
:
bold
;
margin-bottom
:
20px
;
}
.button
{
width
:
280px
;
margin
:
80px
auto
30px
.button
{
width
:
280px
;
margin
:
80px
auto
30px
}
</
style
>
src/pages/purchaser/bid/bidEvaluation/projectManager/fail.vue
View file @
34a25056
...
...
@@ -13,11 +13,11 @@
</div>
<div
class=
"flex"
>
<div
class=
"adjustment"
>
评价报告
</div>
<Upload
:limit=
"1"
:max=
"100"
tip=
"最多上传一个文件,每个文件不超过100M。"
></Upload>
<Upload
:limit=
"1"
:max=
"100"
tip=
"最多上传一个文件,每个文件不超过100M。"
@
input=
"getfile"
></Upload>
</div>
<div
class=
"flex"
>
<div
class=
"adjustment "
>
评标报告扫描件
</div>
<Upload
:limit=
"1"
:max=
"100"
tip=
"最多上传5个文件,每个文件不超过100M。"
></Upload>
<Upload
:limit=
"1"
:max=
"100"
tip=
"最多上传5个文件,每个文件不超过100M。"
@
input=
"getfile1"
></Upload>
</div>
<div
class=
"flex-center"
style=
"margin:100px 0"
>
<el-button>
取消
</el-button>
...
...
@@ -40,17 +40,38 @@ export default {
},
data
()
{
return
{
breads
:
[
'招标管理'
,
'招标项目管理'
,
'工作台'
]
breads
:
[
'招标管理'
,
'招标项目管理'
,
'工作台'
],
file
:[],
file1
:[]
}
},
methods
:
{
//
getfile
(
val
){
this
.
file
=
val
},
getfile1
(
val
){
this
.
file1
=
val
},
// 提交
async
submitData
()
{
try
{
let
message
=
{}
let
filePOList
=
[];
let
file
=
this
.
file
;
let
file1
=
this
.
file1
;
for
(
let
item
of
file
){
item
.
type
=
1
};
for
(
let
item1
of
file1
){
item1
.
type
=
2
};
filePOList
=
file
.
concat
(
file1
)
message
.
filePOList
=
filePOList
;
message
.
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
data
,
code
code
,
msg
}
=
await
bidFailed
(
message
)
if
(
code
==
200
){
this
.
$message
({
...
...
@@ -80,4 +101,8 @@ export default {
.message
>
div
{
margin-bottom
:
20px
;
}
.adjustment
{
width
:
120px
;
text-align
:
center
;
}
</
style
>
src/pages/purchaser/bid/bidEvaluation/review/add.vue
View file @
34a25056
...
...
@@ -130,7 +130,7 @@
code
}
=
await
bidsupplyList
(
projectId
)
if
(
code
===
200
)
{
//
this.CompanyIds = data
this
.
CompanyIds
=
data
}
}
catch
(
e
)
{
console
.
log
(
e
)
...
...
src/pages/purchaser/bid/bidEvaluation/review/clear.vue
View file @
34a25056
...
...
@@ -94,7 +94,7 @@ export default {
}
},
back
(){
this
.
$route
.
go
(
-
1
)
this
.
$route
r
.
go
(
-
1
)
},
handleSee
(
row
){
let
id
=
row
.
pid
;
...
...
src/pages/purchaser/bid/bidEvaluation/review/review.vue
View file @
34a25056
...
...
@@ -4,19 +4,14 @@
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<div
class=
"message"
>
<div
class=
"flex-between"
style=
"width: 50%;"
>
<div>
招标文件:
<span>
下载招标文件
</span></div>
<div>
招标文件:
<span
@
click=
"download(bidDetail.fileUrl)"
>
{{
bidDetail
.
fileName
}}
</span></div>
<div>
开标信息:
<span>
开标一览表
</span></div>
</div>
<div
class=
"flex upload"
>
<div>
变更信息:
</div>
<ul
class=
"title"
>
<li
class=
"flex"
>
<div>
公告标题.pdf
</div>
<button>
下载
</button>
</li>
<li
class=
"flex"
>
<div>
公告标题.pdf
</div>
<button>
下载
</button>
<li
class=
"flex"
v-for=
"(item,index) in changeList"
:key=
"index"
>
<router-link
:to=
"
{path: '/purchaser/bid/bidStage/changeList/see', query: {id: item.noticeId }}">
{{
item
.
title
}}
</router-link>
</li>
</ul>
</div>
...
...
@@ -26,9 +21,10 @@
<dataTable
:table-data=
"bids"
:columns=
"bidTitle"
:is-index=
"true"
>
<el-table-column
slot=
"operate"
label=
"文件"
align=
"center"
fixed=
"right"
>
<template
slot-scope=
"scope"
>
<ul
class=
"flex file"
>
<li
v-for=
"(file,index) in scope.row.files"
:key=
"index"
>
{{
file
}}
下载
</li>
</ul>
<div
class=
"flex file"
>
<div
@
click=
"down(scope.row.fileUrl)"
>
{{
scope
.
row
.
fileName
}}
</div>
<div
v-for=
"(file,index) in scope.row.fileList"
:key=
"index"
@
click=
"down(file.fileUrl)"
>
{{
file
.
fileName
}}
</div>
</div>
</
template
>
</el-table-column>
</dataTable>
...
...
@@ -91,17 +87,11 @@
</div>
<div
class=
"flex"
>
<div>
评标附件:
</div>
<ul
class=
"upload"
>
<li
class=
"flex"
>
<div>
评价附件.pdf
</div>
<button>
下载
</button>
</li>
</ul>
<singleUpload
:limit=
"5"
:max=
"100"
tip=
"最多上传5份,每份不超过100M."
@
input=
"getfile"
></singleUpload>
</div>
<div
class=
"button"
>
<el-button>
返回
</el-button>
<el-button
@
click=
"fail"
>
流标
</el-button>
<el-button
type=
"primary"
>
评标结束
</el-button>
<el-button
@
click=
"back"
>
返回
</el-button>
<el-button
type=
"primary"
@
click=
"complete"
>
完成
</el-button>
</div>
</div>
</div>
...
...
@@ -133,22 +123,22 @@
<!-- 编辑公司排名-->
<el-dialog
title=
"编辑"
:visible
.
sync=
"isRank"
>
<el-form
:model=
"rankForm"
>
<el-form-item
label=
"投标价"
>
<el-input
v-model=
"rankForm.price"
></el-input>
<el-form-item
label=
"投标价"
>
<el-input
v-model=
"rankForm.price"
></el-input>
</el-form-item>
<el-form-item
label=
"商务评分"
>
<el-input
v-model=
"rankForm.commercialGrade"
></el-input>
<el-form-item
label=
"商务评分"
>
<el-input
v-model=
"rankForm.commercialGrade"
></el-input>
</el-form-item>
<el-form-item
label=
"技术评分"
>
<el-input
v-model=
"rankForm.skillGrade"
></el-input>
<el-form-item
label=
"技术评分"
>
<el-input
v-model=
"rankForm.skillGrade"
></el-input>
</el-form-item>
<el-form-item
label=
"价格评分"
>
<el-input
v-model=
"rankForm.priceGrade"
></el-input>
<el-input
v-model=
"rankForm.priceGrade"
></el-input>
</el-form-item>
<el-form-item
label=
"评标价 "
>
<el-input
v-model=
"rankForm.evaluationPrice"
></el-input>
<el-form-item
label=
"评标价 "
>
<el-input
v-model=
"rankForm.evaluationPrice"
></el-input>
</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=
"false"
>
否
</el-radio>
</el-form-item>
...
...
@@ -162,21 +152,32 @@
</template>
<
script
>
import
{
import
{
companyRank
,
CompanyEvaluatec
,
saveCompanyEvaluate
,
saveCompanyRank
}
from
'@api/purchaser/bid'
import
dataTable
from
'@components/nopageTable.vue'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
export
default
{
saveCompanyRank
,
bidBookDownload
,
changeNoticelist
,
bidFilelist
,
accessoryupload
}
from
'@api/purchaser/bid'
import
dataTable
from
'@components/nopageTable.vue'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
import
singleUpload
from
'@components/Upload/Upload.vue'
export
default
{
components
:
{
dataTable
,
dataBreadcrumb
dataBreadcrumb
,
singleUpload
},
data
()
{
return
{
file
:
[],
downloadList
:
[],
changeList
:
[],
bidDetail
:
""
,
evaluateForm
:
{
qualification
:
''
,
conformity
:
''
,
...
...
@@ -186,9 +187,9 @@ export default {
evaluateIdx
:
''
,
isEvaluate
:
false
,
rankForm
:
{
price
:
""
,
price
:
""
,
},
rankIdx
:
""
,
rankIdx
:
""
,
isRank
:
false
,
projectId
:
2
,
rankTitle
:
[{
...
...
@@ -230,16 +231,13 @@ export default {
rank
:
[],
bidTitle
:
[{
label
:
'投标人'
,
prop
:
'n
ame'
prop
:
'companyN
ame'
},
{
slot
:
'operate'
}
],
bids
:
[{
name
:
'上海致远有限公司'
,
files
:
[
'313121.zip'
,
'546465.zip'
]
}],
bids
:
[],
breads
:
[
'招标管理'
,
'招标项目管理'
,
'工作台'
],
review
:
[],
reviewTitle
:
[{
...
...
@@ -255,8 +253,82 @@ export default {
created
()
{
this
.
getcompanyRank
()
this
.
getCompanyEvaluatec
()
this
.
getbidFilelist
();
this
.
getchangeNoticelist
();
this
.
getbidBookDownload
();
},
methods
:
{
getfile
(
val
)
{
this
.
file
=
val
},
// 完成按钮
async
complete
()
{
try
{
let
message
=
{}
message
.
projectId
=
localStorage
.
getItem
(
"projectId"
)
message
.
fileList
=
this
.
file
const
{
msg
,
code
}
=
await
accessoryupload
(
message
)
if
(
code
===
200
)
{
this
.
$message
({
message
:
msg
,
type
:
'success'
,
duration
:
1500
})
setTimeout
(()
=>
{
this
.
$router
.
go
(
-
1
)
},
1500
)
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
},
back
()
{
this
.
$router
.
go
(
-
1
)
},
down
(
url
)
{
window
.
open
(
url
)
},
async
getbidBookDownload
()
{
try
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
data
,
code
}
=
await
bidBookDownload
(
projectId
)
if
(
code
===
200
)
{
this
.
bidDetail
=
data
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
},
// 查看投标文件
async
getbidFilelist
()
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
);
const
{
data
,
code
}
=
await
bidFilelist
(
projectId
)
if
(
code
===
200
)
{
this
.
bids
=
data
}
},
// 查看变更信息
async
getchangeNoticelist
()
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
);
const
{
data
,
code
}
=
await
changeNoticelist
(
projectId
)
if
(
code
===
200
)
{
this
.
changeList
=
data
;
}
},
// 排名信息编辑
Edit
(
row
,
index
)
{
this
.
rankForm
=
Object
.
assign
({},
row
)
...
...
@@ -268,7 +340,8 @@ export default {
async
editCompanyRank
()
{
try
{
const
{
code
,
msg
code
,
msg
}
=
await
saveCompanyRank
(
this
.
form
)
if
(
code
===
200
)
{
this
.
$message
.
success
(
msg
)
...
...
@@ -289,7 +362,8 @@ export default {
async
editCompanyEvaluate
()
{
try
{
const
{
code
,
msg
code
,
msg
}
=
await
saveCompanyEvaluate
(
this
.
form
)
if
(
code
===
200
)
{
this
.
$message
.
success
(
msg
)
...
...
@@ -300,10 +374,6 @@ export default {
console
.
log
(
e
)
}
},
fail
()
{
this
.
$router
.
push
(
'/purchaser/bid/bidEvaluation/projectManager/fail'
)
},
// 查投标公司评审信息
async
getCompanyEvaluatec
()
{
try
{
...
...
@@ -322,7 +392,7 @@ export default {
// 查看投标公司排名信息
async
getcompanyRank
()
{
try
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
);
let
projectId
=
localStorage
.
getItem
(
"projectId"
);
const
{
data
,
code
...
...
@@ -336,7 +406,7 @@ export default {
}
}
}
}
}
</
script
>
<
style
scoped
>
...
...
src/pages/purchaser/bid/bidOpen/bidOpenhal.vue
View file @
34a25056
...
...
@@ -8,19 +8,25 @@
<div
class=
"time-message flex-between"
>
<div
class=
"flex"
>
<p>
截标倒计时:
</p>
<timeDown
:remain-time=
"12"
@
countDowmEnd=
"countDowmEnd"
></timeDown>
<timeDown
:remain-time=
"remaintime"
@
countDowmEnd=
"remaintimeEnd"
></timeDown>
</div>
<div
class=
"flex"
v-show=
"decodeTime"
>
<p>
解密倒计时:
</p>
<timeDown
:remain-time=
"decodeTime"
@
countDowmEnd=
"decodeTimeEnd"
></timeDown>
</div>
<div
class=
"flex"
v-show=
"signatureTime"
>
<p>
签名倒计时:
</p>
<timeDown
:remain-time=
"signatureTime"
@
countDowmEnd=
"signatureTimeEnd"
></timeDown>
</div>
<div
v-if=
"minutes&&seconds"
>
解密倒计时:
{{
minutes
}}
分钟
{{
seconds
}}
秒
</div>
<div
v-if=
"minutes&&seconds"
>
签名倒计时:
{{
minutes
}}
分钟
{{
seconds
}}
秒
</div>
</div>
<div
class=
"flex"
>
<div
class=
"hal-left"
>
<div>
<h1>
签到
1
人
</h1>
<h1>
解密
1
人
</h1>
<h1>
签名
1
人
</h1>
<h1>
签到
{{
leftmessage
.
signIn
}}
人
</h1>
<h1>
解密
{{
leftmessage
.
decode
}}
人
</h1>
<h1>
签名
{{
leftmessage
.
signature
}}
人
</h1>
</div>
<div
>
签到解密签名情况>
</div>
<div
@
click=
"isMessge=true"
>
签到解密签名情况
</div>
</div>
<div
class=
"hal-center"
>
<ul>
...
...
@@ -30,17 +36,23 @@
</ul>
</div>
<div
class=
"hal-right"
>
<el-button>
在线对话
<i
class=
"el-icon-chat-dot-round"
></i></el-button>
<el-button
@
click=
isdialogue
>
在线对话
<i
class=
"el-icon-chat-dot-round"
></i></el-button>
<div
class=
"button-pos"
>
<el-button
v-if=
"openbidButton"
type=
"primary"
@
click=
"confirm"
>
立即开标
</el-button>
<el-button
v-else
type=
"info"
>
{{
buttonWords
}}
</el-button>
<el-button
v-if=
"openbidButton"
type=
"primary"
@
click=
"confirm"
style=
"margin-left: 10px;"
>
立即开标
</el-button>
<el-button
v-else
type=
"info"
style=
"margin-left: 10px;"
>
{{
buttonWords
}}
</el-button>
<el-button
v-if=
"endbidButton"
type=
"primary"
@
click=
"end"
style=
"margin-top: 10px;"
>
结束开标
</el-button>
</div>
</div>
<!-- 在线对话 -->
<div
class=
"dialogue"
style=
"margin-top: 30px;"
>
<div
class=
"dialogue"
style=
"margin-top: 30px;"
v-show=
"dialogue"
>
<ul
class=
"dialogueList"
>
<li
v-for=
"(item,index) in dialogueList"
:key=
"index"
>
<div
class=
"flex-item"
>
<div
v-if=
"myId==item.userId"
>
我
</div>
<div
v-else
>
{{
item
.
name
}}
</div>
<div>
(
{{
item
.
time
}}
)
</div>
</div>
<div>
{{
item
.
chatContent
}}
</div>
</li>
</ul>
<el-input
...
...
@@ -52,14 +64,14 @@
</el-input>
</div>
</div>
<!-- 最下面一栏 -->
<div
class=
"flex-between buttons"
>
<el-button>
流标
</el-button>
<el-button
@
click=
"isfailInfo=true"
v-if=
"isfail"
>
流标
</el-button>
<el-button
@
click=
"failDetail"
v-else
>
流标信息
</el-button>
<div>
<el-button
icon=
"el-icon-refresh"
>
刷新
</el-button>
<el-button>
下发开标一览表
</el-button>
<el-button>
查看开标一览表
</el-button>
<el-button
@
click=
"isopenInfo=true"
>
查看开标一览表
</el-button>
</div>
<el-button
@
click=
"back"
>
退出大厅
<i
class=
"el-icon-right"
></i></el-button>
</div>
...
...
@@ -67,11 +79,11 @@
<!--确认开标窗口 -->
<el-dialog
:visible
.
sync=
"isOpenbid"
title=
"确认开标"
width=
"35%"
>
<div
class=
"flex bid-message"
style=
"width: 70%;margin:0 auto"
>
<div>
项目编号:
345679825
</div>
<div>
项目名称:
测试456789
</div>
<div
style=
"margin-right:120px;"
>
投标 :
3
</div>
<div>
纳保证金人数:
3
</div>
<div>
签到人数:
3
</div>
<div>
项目编号:
{{
projectCode
}}
</div>
<div>
项目名称:
{{
projectName
}}
</div>
<div
style=
"margin-right:120px;"
>
投标 :
{{
startDetail
.
bidFileCount
}}
</div>
<div>
纳保证金人数:
{{
startDetail
.
earnestFeeCount
}}
</div>
<div>
签到人数:
{{
startDetail
.
signInCount
}}
</div>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"isOpenbid = false"
>
取消开标
</el-button>
...
...
@@ -79,12 +91,84 @@
</div>
</el-dialog>
<!-- 详细信息 -->
<el-dialog
:visible
.
sync=
"isMessge"
title=
"详细信息"
>
<dataTable
:table-data=
"tableData"
:columns=
"columns"
:page-obj=
"pageObj"
:margin-top=
"0"
:margin-bottom=
"0"
>
<el-dialog
:visible
.
sync=
"isMessge"
title=
"详细信息"
width=
"60%"
>
<dataTable
:columns=
"columns"
:page-obj=
"pageObj"
:margin-top=
"0"
:margin-bottom=
"0"
url=
"/open-bid/sign/detail"
>
<el-table-column
slot=
"operate"
label=
"是否买断账期"
align=
"center"
fixed=
"right"
>
<template
slot-scope=
"scope"
>
<div
v-if=
"scope.row.isPayment"
>
是
</div>
<div
v-else
>
否
</div>
</
template
>
</el-table-column>
<el-table-column
slot=
"operate"
label=
"是否递交投标文件"
align=
"center"
fixed=
"right"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
"scope.row.bidFileId"
>
是
</div>
<div
v-else
>
否
</div>
</
template
>
</el-table-column>
<el-table-column
slot=
"operate"
label=
"签到"
align=
"center"
fixed=
"right"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
"scope.row.signIn"
>
是
</div>
<div
v-else
>
否
</div>
</
template
>
</el-table-column>
<el-table-column
slot=
"operate"
label=
"解密"
align=
"center"
fixed=
"right"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
"scope.row.decode"
>
是
</div>
<div
v-else
>
否
</div>
</
template
>
</el-table-column>
<el-table-column
slot=
"operate"
label=
"签名"
align=
"center"
fixed=
"right"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
"scope.row.signature"
>
是
</div>
<div
v-else
>
否
</div>
</
template
>
</el-table-column>
</dataTable>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"isOpenbid = false"
>
取消开标
</el-button>
<el-button
type=
"primary"
@
click=
"openbid"
>
确定开标
</el-button>
<el-button
@
click=
"isMessge = false"
>
关闭
</el-button>
</div>
</el-dialog>
<!-- 开标一览表 -->
<el-dialog
:visible
.
sync=
"isopenInfo"
title=
"开标一览表"
>
<nopageTable
:tableData=
"tableData"
:columns=
"nopagecolumns"
:margin-top=
"0"
:margin-bottom=
"0"
>
</nopageTable>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"isopenInfo=false"
>
关闭
</el-button>
</div>
</el-dialog>
<!-- 流标框提交 -->
<el-dialog
:visible
.
sync=
"isfailInfo"
title=
"流标"
>
<el-form
:model=
"form"
:rules=
"rules"
ref=
"form"
label-width=
"100px"
>
<el-form-item
label=
"操作人"
>
<div>
{{userName}}
</div>
</el-form-item>
<el-form-item
label=
"流标原因"
prop=
"reason"
>
<el-input
v-model=
"form.reason"
></el-input>
</el-form-item>
<el-form-item
label=
"上传附件"
>
<singleUpload
:limit=
"1"
:max=
"10"
tip=
"支持上传1份附件,不差过10M."
@
input=
"getfile"
></singleUpload>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"isfailInfo = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"failbid"
>
确 定
</el-button>
</div>
</el-dialog>
<!-- 流标详情 -->
<el-dialog
:visible
.
sync=
"isfailDetail"
title=
"流标信息"
>
<el-form
:model=
"form"
:rules=
"rules"
ref=
"form"
label-width=
"100px"
>
<el-form-item
label=
"操作人"
>
<div>
{{userName}}
</div>
</el-form-item>
<el-form-item
label=
"流标原因"
prop=
"reason"
>
<div>
{{faildetail.reason}}
</div>
</el-form-item>
<el-form-item
label=
"上传附件"
v-if=
"faildetail.fileName"
>
<div
@
click=
"down(faildetail.fileUrl)"
>
{{faildetail.fileName}}
</div>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"isfailDetail= false"
>
取 消
</el-button>
</div>
</el-dialog>
</div>
...
...
@@ -95,63 +179,82 @@
import
{
getTime
}
from
'@utils/time'
import
{
timeInfo
,
startInfo
,
openInfo
,
signdetail
,
startbid
,
openbidFailed
,
bidFaileddetail
}
from
'@api/purchaser/bid'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
import
timeDown
from
'@components/timeDown.vue'
import
dataTable
from
'@components/dataTable.vue'
import
nopageTable
from
'@components/nopageTable.vue'
import
singleUpload
from
'@components/Upload/Upload.vue'
export
default
{
components
:
{
dataBreadcrumb
,
timeDown
,
dataTable
dataTable
,
nopageTable
,
singleUpload
},
data
()
{
return
{
faildetail
:
""
,
isfailDetail
:
false
,
projectCode
:
""
,
projectName
:
""
,
userName
:
""
,
isfail
:
true
,
rules
:
{
reason
:
[{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}]
},
form
:{
reason
:
''
,
filePOList
:[]
},
isfailInfo
:
false
,
endbidButton
:
false
,
tableData
:[],
isopenInfo
:
false
,
startDetail
:
""
,
dialogue
:
false
,
remaintime
:
""
,
storagedecodeTime
:
""
,
storagesignatureTime
:
""
,
decodeTime
:
""
,
signatureTime
:
""
,
isMessge
:
false
,
pageObj
:
{
size
:
10
,
total
:
1000
,
currentPage
:
1
,
func
:
(
currentPage
)
=>
{
this
.
pageTurning
(
currentPage
)
}
},
tableData
:
[{
name
:
'胡彦斌'
,
project
:
'胡彦斌'
,
data
:
'2017-10-01 12:00'
,
remark
:
'重新确定中标人'
},
{
name
:
'胡彦斌'
,
project
:
'胡彦斌'
,
data
:
'2017-10-01 12:00'
,
remark
:
'重新确定中标人'
},
{
name
:
'胡彦斌'
,
project
:
'胡彦斌'
,
data
:
'2017-10-01 12:00'
,
remark
:
'重新确定中标人'
},
{
name
:
'胡彦斌'
,
project
:
'胡彦斌'
,
data
:
'2017-10-01 12:00'
,
remark
:
'重新确定中标人'
}],
columns
:
[{
label
:
'中标供应商'
,
prop
:
'name'
nopagecolumns
:
[{
label
:
'投标人名称'
,
prop
:
'companyName'
},
{
label
:
'
中标项目
'
,
prop
:
'pr
oject
'
label
:
'
投标报价(元)
'
,
prop
:
'pr
ice
'
},
{
label
:
'中标时间'
,
prop
:
'data'
,
sortable
:
true
label
:
'是否签名'
,
prop
:
'isSign'
,
},
],
//
columns
:
[{
label
:
'投标人名称'
,
prop
:
'companyName'
},
{
label
:
'备注'
,
prop
:
'remark'
label
:
'联系人'
,
prop
:
'project'
},
{
label
:
'手机号'
,
prop
:
'phone'
},
{
slot
:
'operate'
...
...
@@ -167,13 +270,23 @@ export default {
breads
:
[
'招标管理'
,
'招标项目管理'
,
'工作台'
],
websock
:
null
,
content
:
""
,
dialogueList
:[]
dialogueList
:[],
myId
:
""
,
leftmessage
:
""
}
},
mounted
()
{
this
.
add
()
},
created
()
{
this
.
projectCode
=
localStorage
.
getItem
(
"projectCode"
)
this
.
projectName
=
localStorage
.
getItem
(
"projectName"
)
this
.
userName
=
JSON
.
parse
(
localStorage
.
getItem
(
"userInfo"
)).
name
this
.
gettimeInfo
();
this
.
getstartInfo
();
this
.
getopenInfo
();
this
.
getsigndetail
();
this
.
myId
=
JSON
.
parse
(
localStorage
.
getItem
(
"userInfo"
)).
userId
this
.
pageObj
.
companyId
=
localStorage
.
getItem
(
"companyId"
)
this
.
pageObj
.
projectId
=
localStorage
.
getItem
(
"projectId"
)
// 中国标准时间
let
currentTime
=
getTime
()
this
.
currentTime
=
currentTime
...
...
@@ -181,44 +294,182 @@ export default {
let
currentTime
=
getTime
()
this
.
currentTime
=
currentTime
},
1000
)
// websocket
this
.
createWebSocket
()
},
methods
:
{
end
(){
},
down
(
url
){
window
.
open
(
url
)
},
// 流标详情
async
failDetail
(){
this
.
isfailDetail
=
true
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
data
,
code
}
=
await
bidFaileddetail
(
projectId
)
if
(
code
==
200
){
this
.
faildetail
=
data
}
},
// 确定流标
async
failbid
(){
try
{
let
valid
=
await
this
.
$refs
[
'form'
].
validate
()
if
(
valid
)
{
let
form
=
this
.
form
;
form
.
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
code
,
msg
}
=
await
openbidFailed
(
form
)
if
(
code
===
200
)
{
this
.
$message
.
success
(
msg
)
this
.
isfailInfo
=
false
this
.
isfail
=
false
}
else
if
(
code
===
500
){
this
.
$message
.
error
(
msg
)
this
.
isfailInfo
=
false
this
.
isfail
=
false
}
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
},
isdialogue
(){
this
.
dialogue
=!
this
.
dialogue
},
getfile
(
val
){
this
.
form
.
filePOList
=
val
},
// 时间信息
async
gettimeInfo
()
{
try
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
data
,
code
}
=
await
timeInfo
(
projectId
)
let
remaintime
=
Number
(
data
.
remainTime
);
if
(
remaintime
<
0
){
this
.
openbidButton
=
true
}
else
{
this
.
remaintime
=
remaintime
}
this
.
storagedecodeTime
=
Number
(
data
.
decodeTime
)
this
.
storagesignatureTime
=
Number
(
data
.
signatureTime
)
}
catch
(
e
)
{
console
.
log
(
e
)
}
},
// 开标按钮上三个信息(投标人数,缴纳保证金人数,签到人数)
async
getstartInfo
()
{
try
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
data
,
code
}
=
await
startInfo
(
projectId
)
if
(
code
==
200
){
this
.
startDetail
=
data
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
},
//签到解密略简
async
getsigndetail
()
{
try
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
data
,
code
}
=
await
signdetail
(
projectId
)
if
(
code
==
200
){
this
.
leftmessage
=
data
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
},
// 开标一栏表
async
getopenInfo
()
{
try
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
data
,
code
}
=
await
openInfo
(
projectId
)
if
(
code
==
200
){
for
(
let
item
of
data
){
if
(
item
.
isSign
){
item
.
isSign
=
"是"
}
else
{
item
.
isSign
=
"否"
}
}
this
.
tableData
=
data
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
},
back
(){
this
.
$router
.
go
(
-
1
)
},
// 计算分秒倒计时
add
:
function
()
{
var
_this
=
this
var
time
=
window
.
setInterval
(
function
()
{
if
(
_this
.
seconds
===
0
&&
_this
.
minutes
!==
0
)
{
_this
.
seconds
=
59
_this
.
minutes
-=
1
}
else
if
(
_this
.
minutes
===
0
&&
_this
.
seconds
===
0
)
{
_this
.
seconds
=
0
window
.
clearInterval
(
time
)
}
else
{
_this
.
seconds
-=
1
}
},
1000
)
},
//
add: function() {
//
var _this = this
//
var time = window.setInterval(function() {
//
if (_this.seconds === 0 && _this.minutes !== 0) {
//
_this.seconds = 59
//
_this.minutes -= 1
//
} else if (_this.minutes === 0 && _this.seconds === 0) {
//
_this.seconds = 0
//
window.clearInterval(time)
//
} else {
//
_this.seconds -= 1
//
}
//
}, 1000)
//
},
// 截标时间到了
countDowm
End
(
val
)
{
remaintime
End
(
val
)
{
this
.
openbidButton
=
val
},
// 解密时间到了
decodeTimeEnd
(
val
)
{
},
// 签名时间到了
signatureTimeEnd
(
val
)
{
this
.
endbidButton
=
val
},
// 开标
openbid
()
{
async
openbid
()
{
try
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
code
}
=
await
startbid
(
projectId
)
if
(
code
==
200
){
this
.
isOpenbid
=
false
this
.
openbidButton
=
false
this
.
buttonWords
=
'停止开标'
this
.
minutes
=
'6'
this
.
seconds
=
'60'
this
.
decodeTime
=
this
.
storagedecodeTime
this
.
signatureTime
=
this
.
storagesignatureTime
this
.
$message
({
message
:
'开标成功'
,
type
:
'success'
})
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
},
// 开标提示
confirm
()
{
...
...
@@ -227,23 +478,27 @@ export default {
callback
:
action
=>
{
if
(
action
===
'confirm'
)
{
this
.
isOpenbid
=
true
}
}
})
},
// websocket
createWebSocket
()
{
// 注意这里的端口号是后端服务的端口号,后面的是后端正常请求的路径,ziyuan是我的项目名,最后面的是我放在cookie中的当前登陆用户
let
token
=
localStorage
.
getItem
(
"token"
)
this
.
websocket
=
new
WebSocket
(
'ws://192.168.3.35:8085/webSocket/'
+
token
)
// 连接成功时
this
.
websocket
.
onopen
=
()
=>
{
}
this
.
websocket
.
onmessage
=
event
=>
{
// 后端发送的消息在event.data中
console
.
log
(
event
.
data
)
this
.
halList
.
push
(
event
.
data
)
let
data
=
event
.
data
;
console
.
log
(
data
)
// let data=JSON.parse(event.data);
// if(data.type==1){
// this.content=""
// this.dialogueList.push(data)
// }
}
this
.
websocket
.
onclose
=
function
()
{
console
.
log
(
'关闭了'
)
...
...
@@ -260,12 +515,6 @@ export default {
send
(){
let
content
=
this
.
content
;
this
.
websocket
.
send
(
content
)
// this.content=""
// let message={}
// message.content=content
// message.time=getTime();
// message.name=JSON.parse(localStorage.getItem("userInfo")).name;
// this.dialogueList.push(message)
}
},
...
...
@@ -292,7 +541,7 @@ export default {
}
.hal-left
{
width
:
1
0%
;
width
:
1
50px
;
}
...
...
@@ -315,7 +564,7 @@ export default {
}
.hal-right
{
width
:
1
0%
;
width
:
1
50px
;
height
:
500px
;
}
...
...
@@ -363,4 +612,12 @@ export default {
margin-right
:
50px
;
margin-bottom
:
30px
;
}
.dialogue
>
.dialogueList
{
box-sizing
:
border-box
;
padding
:
20px
;
overflow
:
auto
}
.dialogueList
>
li
{
margin-bottom
:
20px
;
}
</
style
>
src/pages/purchaser/bid/bidStage/bondList/detail.vue
View file @
34a25056
...
...
@@ -169,8 +169,15 @@
code
,
msg
}
=
await
bidderEarnestpayment
(
message
)
if
(
code
===
2000
)
{
this
.
$success
.
success
(
msg
)
if
(
code
===
200
)
{
this
.
$message
({
message
:
msg
,
type
:
'success'
,
duration
:
1500
})
setTimeout
(()
=>
{
this
.
$router
.
go
(
-
1
)
},
1500
)
}
}
}
catch
(
e
)
{
...
...
src/pages/purchaser/bid/bidStage/changeList/changeNotice.vue
View file @
34a25056
...
...
@@ -111,14 +111,14 @@ export default {
msg
}
=
await
createChange
(
this
.
ruleForm
)
if
(
code
===
200
)
{
//
this.$message({
//
message: msg,
//
type: 'success',
//
duration:1500
//
})
//
setTimeout(()=>{
//
this.$router.go(-1)
//
},1500)
this
.
$message
({
message
:
msg
,
type
:
'success'
,
duration
:
1500
})
setTimeout
(()
=>
{
this
.
$router
.
go
(
-
1
)
},
1500
)
}
}
}
catch
(
err
)
{
...
...
src/pages/purchaser/bid/bidSure/determine.vue
View file @
34a25056
...
...
@@ -13,25 +13,17 @@
<div>
项目分类:货物
</div>
<div
class=
"flex"
>
<div
class=
"adjustment"
>
上传附件:
</div>
<singleUpload
tips=
"支持上传1个附件,不超过20M
"
></singleUpload>
<singleUpload
:limit=
"1"
tip=
"支持上传1个附件,不超过20M"
@
input=
"getfile
"
></singleUpload>
</div>
</div>
</div>
<div
class=
"form"
>
<h3>
确定中标人
</h3>
<dataTable
:table-data=
"tableData"
:columns=
"columns"
:is-pageobj=
"false"
:is-index=
"true"
>
<el-table-column
slot=
"operate"
label=
"是否中标"
align=
"center"
fixed=
"right"
width=
"200"
>
<template
slot-scope=
"scope"
>
<el-checkbox
v-model=
"scope.row.isBid"
@
change=
"check(scope.$index)"
></el-checkbox>
</
template
>
</el-table-column>
</dataTable>
<el-radio-group
v-model=
"companyId"
>
<el-radio
:label=
"item.companyId"
v-for=
"(item,index) in tableData"
:key=
"index"
>
{{
item
.
companyName
}}
</el-radio>
</el-radio-group>
<h3
style=
"margin-top:30px"
>
说明
</h3>
<el-input
:rows=
"3"
v-model=
"content"
type=
"textarea"
placeholder=
"请输入内容"
>
<el-input
:rows=
"3"
v-model=
"content"
type=
"textarea"
placeholder=
"请输入内容"
>
</el-input>
</div>
<div
class=
"button flex-center"
>
...
...
@@ -45,13 +37,16 @@
</
template
>
<
script
>
import
{
candidate
,
winnerSave
}
from
'@api/purchaser/bid'
import
{
candidate
,
winnerSave
}
from
'@api/purchaser/bid'
import
dataTable
from
'@components/nopageTable.vue'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
import
changeNav
from
'@components/changeNav.vue'
import
singleUpload
from
'@components/Upload/single
Upload.vue'
export
default
{
import
dataTable
from
'@components/nopageTable.vue'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
import
changeNav
from
'@components/changeNav.vue'
import
singleUpload
from
'@components/Upload/
Upload.vue'
export
default
{
components
:
{
dataBreadcrumb
,
changeNav
,
...
...
@@ -60,7 +55,9 @@ export default {
},
data
()
{
return
{
projectId
:
2
,
file
:
""
,
companyId
:
""
,
projectId
:
2
,
content
:
''
,
navs
:
[
'确认中标人'
],
breads
:
[
'招标管理'
,
'招标项目管理'
,
'工作台'
],
...
...
@@ -84,32 +81,35 @@ export default {
]
//
}
},
created
()
{
created
()
{
this
.
getcandidate
()
},
methods
:
{
back
(){
getfile
(
val
){
this
.
file
=
val
},
back
()
{
this
.
$router
.
go
(
-
1
)
},
examine
()
{
this
.
$router
.
push
(
'/admin/bid/bidingDetail'
)
},
check
(
index
)
{
check
(
index
)
{
console
.
log
(
index
);
},
// 获取中标人列表
async
getcandidate
()
{
try
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
);
let
projectId
=
localStorage
.
getItem
(
"projectId"
);
const
{
data
,
code
}
=
await
candidate
(
projectId
)
if
(
code
===
200
)
{
for
(
let
item
of
data
)
{
item
.
companyName
=
"杭州光海科技有限公司"
item
.
contacts
=
"松江"
item
.
phone
=
"77581633272"
if
(
code
===
200
)
{
for
(
let
item
of
data
)
{
item
.
companyName
=
"杭州光海科技有限公司"
item
.
contacts
=
"松江"
item
.
phone
=
"77581633272"
}
this
.
tableData
=
data
}
...
...
@@ -119,30 +119,32 @@ export default {
},
// 提交中标人
async
submitData
()
{
try
{
let
data
=
{};
data
.
projectId
=
localStorage
.
getItem
(
"projectId"
)
data
.
companyId
=
this
.
companyId
data
.
remark
=
this
.
remark
;
data
.
fileList
=
this
.
file
;
const
{
msg
,
code
}
=
await
winnerSave
(
data
)
if
(
code
===
200
)
{
this
.
$message
({
message
:
"提交完成"
,
type
:
'success'
,
duration
:
1500
duration
:
1500
})
setTimeout
(()
=>
{
setTimeout
(()
=>
{
this
.
$router
.
go
(
-
1
)
},
1500
)
// try {
// let data={}
// data.projectId=localStorage.getItem("projectId");
// const {
// msg,
// code
// } = await winnerSave()
// if (code === 200) {
// this.$message.success(msg);
// }
// } catch (e) {
// console.log(e)
// }
},
1500
)
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
}
}
}
}
</
script
>
<
style
scoped
>
...
...
@@ -153,11 +155,13 @@ export default {
.message
>
div
{
margin-bottom
:
20px
;
}
.form
>
h3
{
.form
>
h3
{
font-weight
:
bold
;
margin-bottom
:
30px
;
}
.button
{
.button
{
width
:
100%
;
height
:
50px
;
...
...
src/pages/purchaser/bid/bidSure/notice.vue
View file @
34a25056
...
...
@@ -38,16 +38,14 @@
<el-form-item
label=
"公告标题"
prop=
"title"
>
<el-input
v-model=
"ruleForm.title"
></el-input>
</el-form-item>
</el-form>
<el-form
ref=
"ruleForm"
:model=
"ruleForm"
:rules=
"rules"
label-width=
"100px"
class=
"demo-ruleForm"
>
<el-form-item
label=
"公告内容"
prop=
"content"
>
<quill-editor
ref=
"text"
v-model=
"
form.content"
:options=
"editorOption"
class=
"myQuillEditor"
/>
<quill-editor
ref=
"text"
v-model=
"
ruleForm.content"
:options=
"editorOption"
class=
"myQuillEditor"
/>
</el-form-item>
</el-form>
</div>
<div
class=
"button flex-center"
>
<div
class=
"b
ottomB
utton flex-center"
>
<el-button>
返回
</el-button>
<el-button
type=
"primary"
>
完成
</el-button>
<el-button
type=
"primary"
@
click=
"submitData"
>
提交审批
</el-button>
</div>
</div>
<el-dialog
:visible
.
sync=
"dialogFormVisible"
title=
"收货地址"
width=
"30%"
>
...
...
@@ -65,6 +63,9 @@
</template>
<
script
>
import
{
createwin
}
from
'@api/purchaser/bid'
import
{
quillEditor
}
from
'vue-quill-editor'
...
...
@@ -83,6 +84,8 @@
},
data
()
{
return
{
editorOption
:
{},
file
:
[],
ruleForm
:
{
title
:
''
,
content
:
''
...
...
@@ -125,9 +128,38 @@
}
},
methods
:
{
getfile
(
val
)
{
this
.
file
=
val
},
edit
(
row
)
{
this
.
dialogFormVisible
=
true
this
.
form
=
row
},
async
submitData
()
{
try
{
const
valid
=
await
this
.
$refs
[
'ruleForm'
].
validate
()
if
(
valid
)
{
let
ruleForm
=
this
.
ruleForm
;
ruleForm
.
projectId
=
localStorage
.
getItem
(
"projectId"
)
ruleForm
.
accessoryPOList
=
this
.
file
const
{
code
,
msg
}
=
await
createwin
(
ruleForm
)
if
(
code
===
200
)
{
this
.
$message
({
message
:
msg
,
type
:
'success'
,
duration
:
1500
})
setTimeout
(()
=>
{
this
.
$router
.
go
(
-
1
)
},
1500
)
}
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
}
}
...
...
src/pages/purchaser/bid/bidSure/publicity.vue
View file @
34a25056
...
...
@@ -3,7 +3,9 @@
<div
class=
"content-head"
>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<h3>
发布中标候选人公示
</h3>
<h5>
发布中标候选人公示
</h5>
</div>
<div
class=
"content"
>
<h5>
发布中标候选人公示
</h5>
</div>
<div
class=
"content"
>
<div
class=
"message"
>
<div
class=
"flex-between"
>
<div>
项目编号:3456789567222
</div>
...
...
@@ -12,60 +14,49 @@
<div
class=
"flex-between"
>
<div
class=
"flex"
>
<div
class=
"adjustment"
>
上传附件:
</div>
<singleUpload
tips=
"支持上传1个附件,不超过20M
"
></singleUpload>
<singleUpload
:limit=
"1"
tip=
"支持上传1个附件,不超过20M"
@
input=
"getfile"
:max=
"20
"
></singleUpload>
</div>
<div>
发布媒体:捷安采官网
</div>
</div>
<div
class=
"flex-item"
>
<div
style=
"width: 50px;"
>
备注:
</div>
<el-input
:rows=
"4"
v-model=
"remark"
type=
"remark
"
placeholder=
"请输入备注"
>
<el-input
:rows=
"4"
v-model=
"remark"
type=
"textarea
"
placeholder=
"请输入备注"
>
</el-input>
</div>
</div>
<div
class=
"form"
>
<h3
style=
"margin-top:30px"
>
中标候选人公示内容
</h3>
<el-form
ref=
"ruleForm"
:model=
"ruleForm"
:rules=
"rules"
label-width=
"100px"
class=
"demo-ruleForm"
>
<el-form-item
label=
"公告标题"
prop=
"title"
>
<el-input
v-model=
"ruleForm.title"
></el-input>
</el-form-item>
</el-form>
<el-form
ref=
"ruleForm"
:model=
"ruleForm"
:rules=
"rules"
label-width=
"100px"
class=
"demo-ruleForm"
>
<el-form-item
label=
"公告内容"
prop=
"content"
>
<quill-editor
ref=
"text"
v-model=
"form.content"
:options=
"editorOption"
class=
"myQuillEditor"
/>
<quill-editor
ref=
"text"
v-model=
"ruleForm.content"
:options=
"editorOption"
class=
"myQuillEditor"
/>
</el-form-item>
</el-form>
</div>
<div
class=
"bottomButton flex-center"
>
<el-button>
返回
</el-button>
<el-button
type=
"primary
"
>
提交审批
</el-button>
<el-button
type=
"primary"
@
click=
"submitData
"
>
提交审批
</el-button>
</div>
</div>
<el-dialog
:visible
.
sync=
"dialogFormVisible"
title=
"收货地址"
width=
"30%"
>
<el-form
:model=
"form"
>
<el-form-item
label-width=
"120px"
label=
"输入中标价"
>
<el-input
v-model=
"form.price"
type=
"number"
autocomplete=
"off"
></el-input>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"dialogFormVisible = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"dialogFormVisible = false"
>
确 定
</el-button>
</div>
</el-dialog>
</div>
</
template
>
<
script
>
import
{
import
{
createcadidate
}
from
'@api/purchaser/bid'
import
{
quillEditor
}
from
'vue-quill-editor'
import
'quill/dist/quill.core.css'
import
'quill/dist/quill.snow.css'
import
'quill/dist/quill.bubble.css'
import
dataTable
from
'@components/dataTable.vue'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
import
singleUpload
from
'@components/Upload/single
Upload.vue'
export
default
{
}
from
'vue-quill-editor'
import
'quill/dist/quill.core.css'
import
'quill/dist/quill.snow.css'
import
'quill/dist/quill.bubble.css'
import
dataTable
from
'@components/dataTable.vue'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
import
singleUpload
from
'@components/Upload/
Upload.vue'
export
default
{
components
:
{
dataTable
,
dataBreadcrumb
,
...
...
@@ -74,6 +65,8 @@ export default {
},
data
()
{
return
{
editorOption
:
{},
file
:
[],
ruleForm
:
{
title
:
''
,
content
:
''
...
...
@@ -93,21 +86,44 @@ export default {
form
:
{
price
:
''
},
dialogFormVisible
:
false
,
remark
:
''
,
breads
:
[
'招标管理'
,
'招标项目管理'
,
'工作台'
]
}
},
methods
:
{
edit
(
row
)
{
this
.
dialogFormVisible
=
true
this
.
form
=
row
getfile
(
val
)
{
this
.
file
=
val
},
async
submitData
()
{
try
{
const
valid
=
await
this
.
$refs
[
'ruleForm'
].
validate
()
if
(
valid
)
{
let
ruleForm
=
this
.
ruleForm
;
ruleForm
.
projectId
=
localStorage
.
getItem
(
"projectId"
)
ruleForm
.
accessoryPOList
=
this
.
file
const
{
code
,
msg
}
=
await
createcadidate
(
ruleForm
)
if
(
code
===
200
)
{
this
.
$message
({
message
:
msg
,
type
:
'success'
,
duration
:
1500
})
setTimeout
(()
=>
{
this
.
$router
.
go
(
-
1
)
},
1500
)
}
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
}
}
}
}
</
script
>
...
...
@@ -130,4 +146,3 @@ export default {
margin-top
:
50px
;
}
</
style
>
src/pages/purchaser/bid/bidSure/see.vue
View file @
34a25056
...
...
@@ -4,7 +4,7 @@
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<div
class=
"message"
>
<div
class=
"flex-between"
style=
"width: 50%;"
>
<div>
招标文件:
<span
>
下载招标文件
</span></div>
<div>
招标文件:
<span
@
click=
"download(bidDetail.fileUrl)"
>
{{
bidDetail
.
fileName
}}
</span></div>
<div>
开标信息:
<span>
开标一览表
</span></div>
</div>
<div
class=
"flex upload"
>
...
...
@@ -81,11 +81,11 @@
</li>
</ul>
</div>
<div
class=
"button"
>
<!--
<div class="button">
<el-button @click="back">返回</el-button>
<el-button @click="fail">流标</el-button>
<el-button type="primary">评标结束</el-button>
</div>
</div>
-->
</div>
</div>
</div>
...
...
@@ -95,6 +95,7 @@
import
{
companyRank
,
CompanyEvaluatec
,
bidBookDownload
}
from
'@api/purchaser/bid'
import
dataTable
from
'@components/nopageTable.vue'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
...
...
@@ -105,6 +106,7 @@ export default {
},
data
()
{
return
{
bidDetail
:
""
,
projectId
:
2
,
rankTitle
:
[{
label
:
'投标人名称'
,
...
...
@@ -170,8 +172,12 @@ export default {
created
()
{
this
.
getcompanyRank
()
this
.
getCompanyEvaluatec
()
this
.
getbidBookDownload
();
},
methods
:
{
download
(
url
){
window
.
open
(
url
)
},
back
(){
this
.
$router
.
go
(
-
1
)
},
...
...
@@ -214,7 +220,23 @@ export default {
}
catch
(
e
)
{
console
.
log
(
e
)
}
},
// 查看招标文件
async
getbidBookDownload
()
{
try
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
data
,
code
}
=
await
bidBookDownload
(
projectId
)
if
(
code
===
200
)
{
this
.
bidDetail
=
data
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
},
//
}
}
</
script
>
...
...
src/pages/purchaser/bid/bidSure/winBid/edit.vue
View file @
34a25056
...
...
@@ -15,10 +15,10 @@
<div>
日期:
{{
date
}}
</div>
<div>
中标金额:100.00元
</div>
</div>
<div
class=
"flex-between"
>
<div
class=
"flex"
>
<div>
<div
class=
"flex"
style=
"margin-bottom:50px"
>
<div
>
上传附件:
</div>
<singleUpload
:limit=
'1'
tip=
"支持上传一个pdf格式文件,大小不超过100M。"
accept=
'.pdf'
></singleUpload>
<singleUpload
:limit=
'1'
tip=
"支持上传一个pdf格式文件,大小不超过100M。"
accept=
'.pdf'
@
input=
"getfile"
></singleUpload>
</div>
<div>
<el-form
ref=
"ruleForm"
:model=
"ruleForm"
:rules=
"rules"
label-width=
"120px"
class=
"demo-ruleForm"
>
...
...
@@ -29,7 +29,7 @@
</div>
</div>
<div
class=
"flex-center button"
>
<el-button>
取消
</el-button>
<el-button
@
click=
"back"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"submitData"
>
保存
</el-button>
</div>
</div>
...
...
@@ -50,8 +50,9 @@ export default {
},
data
()
{
return
{
resultId
:
""
,
ruleForm
:
{
code
:
''
number
:
''
},
rules
:
{
number
:
[{
...
...
@@ -67,14 +68,25 @@ export default {
created
()
{
let
date
=
getTime
();
this
.
date
=
date
.
substring
(
0
,
9
)
this
.
resultId
=
this
.
$route
.
query
.
id
;
},
methods
:
{
back
(){
this
.
$router
.
go
(
-
1
)
},
getfile
(
val
){
this
.
ruleForm
.
fileList
=
val
},
//提交表单
async
submitData
()
{
try
{
const
valid
=
await
this
.
$refs
[
'ruleForm'
].
validate
()
if
(
valid
)
{
const
{
code
,
msg
}
=
await
editSentBook
();
let
ruleForm
=
this
.
ruleForm
;
ruleForm
.
resultId
=
this
.
resultId
ruleForm
.
projectId
=
localStorage
.
getItem
(
"projectId"
)
ruleForm
.
companyId
=
localStorage
.
getItem
(
"companyId"
)
const
{
code
,
msg
}
=
await
editSentBook
(
ruleForm
);
if
(
code
===
2000
)
{
this
.
$success
.
success
(
msg
)
}
...
...
src/pages/purchaser/bid/bidSure/winBid/list.vue
View file @
34a25056
...
...
@@ -12,7 +12,7 @@
</el-table-column>
<el-table-column
slot=
"operate"
label=
"操作"
align=
"center"
fixed=
"right"
width=
"150"
>
<
template
slot-scope=
"scope"
>
<el-button
type=
"text"
size=
"small"
@
click=
"edit(scope.row)"
>
通知书编辑
</el-button>
<el-button
type=
"text"
size=
"small"
@
click=
"edit(scope.row
.id
)"
>
通知书编辑
</el-button>
</
template
>
</el-table-column>
</dataTable>
...
...
@@ -66,8 +66,8 @@ export default {
this
.
getsentBookList
();
},
methods
:
{
edit
()
{
this
.
$router
.
push
(
'/purchaser/bid/bidSure/winBid/edit'
)
edit
(
id
)
{
this
.
$router
.
push
(
`/purchaser/bid/bidSure/winBid/edit?id=
${
id
}
`
)
},
back
()
{
this
.
$router
.
go
(
-
1
)
...
...
src/pages/purchaser/bid/reviewed/inquiryAnnouncement.vue
View file @
34a25056
...
...
@@ -33,7 +33,6 @@
<el-radio
:label=
"0"
>
普通
</el-radio>
<el-radio
:label=
"1"
>
紧急
</el-radio>
</el-radio-group>
</el-form-item>
</div>
<div
class=
"flex-between"
style=
"width:60%"
>
...
...
src/pages/purchaser/bid/reviewed/tenderAnnouncement.vue
View file @
34a25056
...
...
@@ -17,8 +17,8 @@
</el-form-item>
<el-form-item
label=
"公告内容"
prop=
"content"
>
<quill-editor
ref=
"text"
v-model=
"ruleForm.content"
:options=
"editorOption"
class=
"myQuillEditor"
/>
</el-form-item></el-for
m>
</el-form-ite
m>
</el-form>
</div>
</div>
<div
class=
"bottomButton"
>
...
...
src/pages/purchaser/buyOut/buyoutList.vue
View file @
34a25056
...
...
@@ -56,7 +56,7 @@
checklist
:
[{
title
:
'供应商'
,
type
:
'input'
,
model
:
'
tender
CompanyName'
model
:
'
bid
CompanyName'
},
{
title
:
'状态'
,
type
:
'select'
,
...
...
src/pages/purchaser/buyOut/contractSign.vue
View file @
34a25056
...
...
@@ -25,14 +25,14 @@
</div>
<div
class=
"bottomButton"
>
<el-button
@
click=
"back"
>
取消
</el-button>
<el-button
type=
"primary
"
>
提交
</el-button>
<el-button
type=
"primary"
@
click=
"submitData
"
>
提交
</el-button>
</div>
</div>
</
template
>
<
script
>
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
export
default
{
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
export
default
{
components
:
{
dataBreadcrumb
},
...
...
@@ -54,25 +54,51 @@ export default {
this
.
$message
.
success
(
'撤销成功'
)
})
.
catch
(()
=>
{})
},
async
submitData
()
{
try
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
msg
,
code
}
=
await
signContract
(
projectId
)
if
(
code
==
200
)
{
this
.
$message
({
message
:
msg
,
type
:
'success'
,
duration
:
1500
})
setTimeout
(()
=>
{
this
.
$router
.
go
(
-
1
)
},
1500
)
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
}
}
}
}
</
script
>
<
style
scoped
>
.contractContent
{
.contractContent
{
width
:
100%
;
height
:
500px
;
border
:
1px
solid
#000000
;
border
:
1px
solid
#000000
;
margin-top
:
30px
;
}
.button
{
.button
{
margin-top
:
30px
;
height
:
50px
;
width
:
100%
;
}
ul
>
li
>
div
{
ul
>
li
>
div
{
margin-right
:
10px
;
}
</
style
>
src/pages/purchaser/supply/allSupply/allSupplySee.vue
View file @
34a25056
...
...
@@ -33,10 +33,7 @@
<div>
单位所在地
</div>
<div>
{{
detail
.
location
}}
</div>
</li>
<li>
<div>
行业类型
</div>
<div>
{{
detail
.
businessScope
}}
</div>
</li>
<li>
<div>
注册资本(万元)
</div>
<div>
{{
detail
.
registeredCapital
}}
</div>
...
...
@@ -59,9 +56,13 @@
</li>
</ul>
<div
class=
"detail-item"
>
<div>
*
经营范围
</div>
<div>
经营范围
</div>
<div>
一般项目:技术服务,技术开发
</div>
</div>
<div
class=
"detail-item"
>
<div>
行业类型
</div>
<div>
{{
detail
.
businessScope
}}
</div>
</div>
</div>
<div
class=
"operation"
>
<el-button
@
click=
"back"
>
返回
</el-button>
...
...
src/utils/request.js
View file @
34a25056
...
...
@@ -37,12 +37,12 @@ service.interceptors.response.use(
}
},
error
=>
{
if
(
error
.
response
.
status
==
500
){
if
(
error
.
response
.
status
==
401
){
Message
.
error
(
"登陆失效,请重新登录!"
)
// localStorage.removeItem('token');
// setTimeout(function () {
// // location.href = 'http://192.168.200.201:8081/';
// location.href = 'http://localhost:3000/';
// location.href = 'http://localhost:3000/
login/user/
';
// }, 2000);
}
}
...
...
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