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
f35e9be1
Commit
f35e9be1
authored
Oct 23, 2020
by
张冬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
询价公告和招标公告编辑和发布合
parent
ea22c7eb
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
1419 additions
and
902 deletions
+1419
-902
bid.js
src/api/purchaser/bid.js
+8
-0
bid.js
src/api/supply/bid.js
+2
-2
dataTable.vue
src/components/dataTable.vue
+19
-15
editInquiryAnnouncement.vue
src/components/edit/editInquiryAnnouncement.vue
+1
-29
SeeinquiryAnnouncement.vue
src/pages/purchaser/bid/reviewed/SeeinquiryAnnouncement.vue
+27
-35
SeetenderAnnouncement.vue
src/pages/purchaser/bid/reviewed/SeetenderAnnouncement.vue
+8
-14
bidInvitation.vue
src/pages/purchaser/bid/reviewed/bidInvitation.vue
+152
-111
inquiryAnnouncement.vue
src/pages/purchaser/bid/reviewed/inquiryAnnouncement.vue
+493
-386
workbench.vue
src/pages/purchaser/bid/workbench.vue
+336
-141
informationSee.vue
src/pages/purchaser/organization/informationSee.vue
+6
-6
hallInformation.vue
.../supply/bid/joinProject/bidEvaluation/hallInformation.vue
+170
-0
detail.vue
src/pages/supply/bid/joinProject/bidStage/bond/detail.vue
+1
-1
detail.vue
...ages/supply/bid/joinProject/bidStage/tenderFee/detail.vue
+1
-1
bidwinAdvice.vue
src/pages/supply/bid/joinProject/bidSure/bidwinAdvice.vue
+111
-98
candidateSee.vue
src/pages/supply/bid/joinProject/bidSure/candidateSee.vue
+79
-63
index.js
src/router/index.js
+5
-0
No files found.
src/api/purchaser/bid.js
View file @
f35e9be1
...
...
@@ -564,6 +564,14 @@ export function createcadidate(data) {
data
:
data
})
}
//中标候选人公示编辑
export
function
editcadidate
(
data
)
{
return
request
({
url
:
"tender-notice/edit-cadidate"
,
method
:
'post'
,
data
:
data
})
}
//中标公告提交
export
function
createwin
(
data
)
{
...
...
src/api/supply/bid.js
View file @
f35e9be1
...
...
@@ -288,9 +288,9 @@ export function noticeWin(projectId) {
})
}
// 中标候选人公示查看
export
function
publicitydetail
(
projectId
)
{
export
function
cadidate
(
projectId
)
{
return
request
({
url
:
`
bidder-decide/publicity/Detail/
${
projectId
}
`
,
url
:
`
notice/cadidate?projectId=
${
projectId
}
`
,
method
:
'get'
,
})
}
...
...
src/components/dataTable.vue
View file @
f35e9be1
...
...
@@ -181,17 +181,18 @@ export default {
this
.
total
=
total
}
},
async
list
(
pageObj
)
{
let
url
=
this
.
url
const
{
code
,
data
}
=
await
getList
(
pageObj
,
url
)
if
(
code
===
200
)
{
for
(
let
item
of
data
){
item
.
createTime
=
getTime1
(
item
.
createTime
)
item
.
endTime
=
getTime1
(
item
.
endTime
)
}
this
.
tableData
=
data
}
},
// async list(pageObj) {
// let url = this.url
// const { code, data } = await getList(pageObj, url)
// if (code === 200) {
// for(let item of data){
// item.createTime=getTime1(item.createTime)
// item.endTime=getTime1(item.endTime)
// }
// this.tableData = data
// this.total = total
// }
// },
handleSizeChange
(
val
)
{
let
pageObj
=
this
.
pageObj
pageObj
.
size
=
val
...
...
@@ -206,10 +207,11 @@ export default {
},
// 查询
query
()
{
let
message
=
this
.
objInput
;
Object
.
assign
(
message
,
this
.
pageObj
)
console
.
log
(
message
)
this
.
list
(
message
)
let
message
=
this
.
objInput
;
this
.
pageObj
.
currentPage
=
1
Object
.
assign
(
message
,
this
.
pageObj
)
this
.
pageObj
=
message
this
.
getauditList
()
},
// check选择id
handleSelectionChange
(
val
)
{
...
...
@@ -218,6 +220,8 @@ export default {
// 重置
rest
(
data
)
{
this
.
$refs
[
data
].
resetFields
()
this
.
pageObj
.
currentPage
=
1
this
.
pageObj
.
size
=
10
this
.
getauditList
(
this
.
pageObj
);
},
handlerelease
()
{
...
...
src/components/edit/editInquiryAnnouncement.vue
View file @
f35e9be1
...
...
@@ -417,35 +417,7 @@ export default {
cancel
()
{
this
.
$router
.
go
(
-
1
);
},
//提交表单
async
submit
()
{
try
{
const
valid
=
await
this
.
$refs
[
'ruleForm'
].
validate
();
const
valid1
=
await
this
.
$refs
[
'ruleForm1'
].
validate
();
const
valid2
=
await
this
.
$refs
[
'ruleForm2'
].
validate
();
console
.
log
(
valid
);
if
(
valid
&&
valid1
&&
valid2
)
{
let
ruleForm
=
this
.
ruleForm
;
ruleForm
.
projectId
=
localStorage
.
getItem
(
'projectId'
);
console
.
log
(
'通过'
);
const
{
code
,
msg
}
=
await
editEnquiry
(
ruleForm
);
if
(
code
==
200
)
{
this
.
$message
({
message
:
msg
,
type
:
'success'
,
duration
:
1500
});
setTimeout
(()
=>
{
this
.
$router
.
go
(
-
1
);
},
1500
);
}
else
{
this
.
$message
.
error
(
msg
);
}
}
}
catch
(
err
)
{
console
.
log
(
err
);
}
},
// 获取列表
async
getcommoditylist
()
{
let
projectId
=
localStorage
.
getItem
(
'projectId'
);
...
...
src/pages/purchaser/bid/reviewed/SeeinquiryAnnouncement.vue
View file @
f35e9be1
<
template
>
<div>
<div
v-if=
"auditStatus == 0||auditStatus == 1"
>
<div
class=
"content-head"
>
<breadCrumb
:breads=
"breads"
></breadCrumb>
<h3>
查看询价公告
</h3>
<h5>
查看询价公告
</h5>
</div>
<div
class=
"content"
>
<priceDetail
@
getstate=
"getstate"
>
<slot>
<h3>
参与报价供应商情况
</h3>
<dataTable
:table-data=
"Bidderlist"
:columns=
"offerBiddercolumns"
:is-index=
"true"
>
<el-table-column
slot=
"operate"
label=
"操作"
align=
"center"
fixed=
"right"
width=
"200"
>
<template
slot-scope=
"scope"
>
<el-button
type=
"text"
size=
"small"
@
click=
"see(scope.row.companyId)"
>
查看报价明细
</el-button>
</
template
>
</el-table-column>
</dataTable>
</slot>
</priceDetail>
<div
class=
"centerButton"
>
<el-button
type=
"primary"
@
click=
"back"
>
返回
</el-button>
</div>
<div
class=
"content-head"
>
<breadCrumb
:breads=
"breads"
></breadCrumb>
<h3>
查看询价公告
</h3>
<h5>
查看询价公告
</h5>
</div>
<div
class=
"content"
>
<priceDetail>
<slot>
<h3>
参与报价供应商情况
</h3>
<dataTable
:table-data=
"Bidderlist"
:columns=
"offerBiddercolumns"
:is-index=
"true"
>
<el-table-column
slot=
"operate"
label=
"操作"
align=
"center"
fixed=
"right"
width=
"200"
>
<template
slot-scope=
"scope"
>
<el-button
type=
"text"
size=
"small"
@
click=
"see(scope.row.companyId)"
>
查看报价明细
</el-button>
</
template
>
</el-table-column>
</dataTable>
</slot>
</priceDetail>
<div
class=
"centerButton"
>
<el-button
type=
"primary"
@
click=
"back"
>
返回
</el-button>
</div>
<el-dialog
title=
"报价明细"
:visible
.
sync=
"dialogFormVisible"
>
<dataTable
:table-data=
"tableData"
:columns=
"columns"
></dataTable>
<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>
<editInquiryAnnouncement
v-if=
"auditStatus == 2"
></editInquiryAnnouncement>
<el-dialog
title=
"报价明细"
:visible
.
sync=
"dialogFormVisible"
>
<dataTable
:table-data=
"tableData"
:columns=
"columns"
></dataTable>
<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>
...
...
@@ -111,10 +107,6 @@ export default {
};
},
methods
:
{
getstate
(
val
)
{
this
.
auditStatus
=
val
;
console
.
log
(
val
)
},
back
()
{
this
.
$router
.
go
(
-
1
);
},
...
...
src/pages/purchaser/bid/reviewed/SeetenderAnnouncement.vue
View file @
f35e9be1
<
template
>
<div
class=
"info"
>
<div
class=
"content"
>
<editTenderAnnouncement
v-if=
"auditStatus == 2"
></editTenderAnnouncement>
<div
v-if=
"auditStatus == 0||auditStatus == 1"
>
<div
class=
"title_info"
>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
</div>
<div
class=
"info_box"
>
<noticeDetail
@
getstate=
"getstate"
></noticeDetail>
<el-row>
<el-button
@
click=
"back"
>
返回
</el-button>
</el-row>
</div>
<div
class=
"title_info"
>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
</div>
<div
class=
"info_box"
>
<noticeDetail
@
getstate=
"getstate"
></noticeDetail>
<el-row>
<el-button
@
click=
"back"
>
返回
</el-button>
</el-row>
</div>
</div>
</div>
...
...
@@ -33,9 +30,6 @@ export default {
};
},
methods
:
{
getstate
(
val
)
{
this
.
auditStatus
=
val
;
},
back
()
{
this
.
$router
.
go
(
-
1
);
}
...
...
src/pages/purchaser/bid/reviewed/bidInvitation.vue
View file @
f35e9be1
<
template
>
<div>
<div
class=
"content-head"
>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<h3>
发布投标邀请书
</h3>
<h5>
发布投标邀请书
</h5>
<div>
<div
class=
"content-head"
>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<h3>
发布投标邀请书
</h3>
<h5>
发布投标邀请书
</h5>
</div>
<div
class=
"content"
>
<div
class=
"describe"
>
投标邀请书
</div>
<div
class=
"form"
>
<el-form
ref=
"ruleForm"
:model=
"ruleForm"
:rules=
"rules"
label-width=
"120px"
class=
"demo-ruleForm"
>
<el-form-item
label=
"投标邀请书标题"
prop=
"title"
>
<el-input
v-model
.
trim=
"ruleForm.title"
maxlength=
"30"
></el-input>
</el-form-item>
<el-form-item
label=
"上传附件"
>
<singleUpload
tip=
"支持扩展名:.rar .zip .doc .docx .pdf .jpg..."
@
input=
"getfile"
></singleUpload>
</el-form-item>
<el-form-item
label=
"投标邀请书内容"
prop=
"content"
>
<!--
<el-button
style=
"margin-bottom: 30px;"
>
插入邀请投标单位名称
</el-button>
-->
<quill-editor
ref=
"text"
v-model=
"ruleForm.content"
:options=
"editorOption"
class=
"myQuillEditor"
/>
</el-form-item>
</el-form>
</div>
</div>
<div
class=
"bottomButton"
>
<el-button
@
click=
"cancel"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"submit1"
v-if=
"type == 1"
>
编辑
</el-button>
<el-button
type=
"primary"
@
click=
"submit"
v-else
>
提交审核
</el-button>
</div>
</div>
<div
class=
"content"
>
<div
class=
"describe"
>
投标邀请书
</div>
<div
class=
"form"
>
<el-form
ref=
"ruleForm"
:model=
"ruleForm"
:rules=
"rules"
label-width=
"120px"
class=
"demo-ruleForm"
>
<el-form-item
label=
"投标邀请书标题"
prop=
"title"
>
<el-input
v-model
.
trim=
"ruleForm.title"
maxlength=
"30"
></el-input>
</el-form-item>
<el-form-item
label=
"上传附件"
>
<singleUpload
tip=
"支持扩展名:.rar .zip .doc .docx .pdf .jpg..."
@
input=
"getfile"
></singleUpload>
</el-form-item>
<el-form-item
label=
"投标邀请书内容"
prop=
"content"
>
<!--
<el-button
style=
"margin-bottom: 30px;"
>
插入邀请投标单位名称
</el-button>
-->
<quill-editor
ref=
"text"
v-model=
"ruleForm.content"
:options=
"editorOption"
class=
"myQuillEditor"
/>
</el-form-item>
</el-form>
</div>
</div>
<div
class=
"bottomButton"
>
<el-button
@
click=
"cancel"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"submit"
>
提交审核
</el-button>
</div>
</div>
</
template
>
<
script
>
import
{
inviteMessage
}
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
{
biddingProjectId
}
from
'@api/common/list'
;
import
{
inviteMessage
}
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
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
import
singleUpload
from
'@components/Upload/Upload.vue'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
;
import
singleUpload
from
'@components/Upload/Upload.vue'
;
export
default
{
components
:
{
dataBreadcrumb
,
singleUpload
,
quillEditor
},
data
()
{
return
{
editorOption
:
{},
breads
:
[
'招标管理'
,
'招标项目管理'
,
'工作台'
],
ruleForm
:
{
title
:
''
,
content
:
''
},
rules
:
{
title
:
[{
required
:
true
,
message
:
'请填写'
,
trigger
:
'blur'
}],
content
:
[{
required
:
true
,
message
:
'请填写'
,
trigger
:
'blur'
}]
}
}
},
methods
:
{
cancel
()
{
this
.
$router
.
go
(
-
1
)
components
:
{
dataBreadcrumb
,
singleUpload
,
quillEditor
},
data
()
{
return
{
type
:
''
,
editorOption
:
{},
breads
:
[
'招标管理'
,
'招标项目管理'
,
'工作台'
],
ruleForm
:
{
title
:
''
,
content
:
''
,
accessoryPOList
:
[]
},
rules
:
{
title
:
[
{
required
:
true
,
message
:
'请填写'
,
trigger
:
'blur'
}
],
content
:
[
{
required
:
true
,
message
:
'请填写'
,
trigger
:
'blur'
}
]
}
};
},
getfile
(
val
)
{
console
.
log
(
val
)
for
(
let
item
of
val
)
{
i
tem
.
accessoryUrl
=
item
.
fileUrl
}
this
.
accessoryPOList
=
val
created
(
)
{
let
type
=
this
.
$route
.
query
.
type
;
this
.
type
=
type
;
i
f
(
type
==
1
)
{
this
.
getbiddingProjectId
();
}
},
//提交表单
async
submit
()
{
let
ruleForm
=
this
.
ruleForm
ruleForm
.
projectId
=
'1'
ruleForm
.
accessoryPOList
=
this
.
accessoryPOList
try
{
const
valid
=
await
this
.
$refs
[
'ruleForm'
].
validate
()
if
(
valid
)
{
const
{
code
,
msg
}
=
await
inviteMessage
(
this
.
ruleForm
)
if
(
code
===
200
)
{
this
.
$message
({
message
:
msg
,
type
:
'success'
})
this
.
$router
.
go
(
-
1
)
}
else
{
this
.
$message
.
error
(
msg
)
}
methods
:
{
cancel
()
{
this
.
$router
.
go
(
-
1
);
},
getfile
(
val
)
{
for
(
let
item
of
val
)
{
item
.
accessoryUrl
=
item
.
fileUrl
;
}
this
.
ruleForm
.
accessoryPOList
=
val
;
},
async
getbiddingProjectId
()
{
let
projectId
=
localStorage
.
getItem
(
'projectId'
);
const
{
data
,
code
,
msg
}
=
await
biddingProjectId
(
projectId
);
if
(
code
==
200
)
{
for
(
let
item
of
data
.
accessoryVOList
)
{
item
.
url
=
item
.
accessoryUrl
;
item
.
name
=
item
.
fileName
;
}
this
.
ruleForm
=
data
;
}
},
//提交表单
async
submit
()
{
let
ruleForm
=
this
.
ruleForm
;
ruleForm
.
projectId
=
localStorage
.
getItem
(
'projectId'
);
try
{
const
valid
=
await
this
.
$refs
[
'ruleForm'
].
validate
();
if
(
valid
)
{
const
{
code
,
msg
}
=
await
inviteMessage
(
this
.
ruleForm
);
if
(
code
===
200
)
{
this
.
$message
({
message
:
msg
,
type
:
'success'
});
this
.
$router
.
go
(
-
1
);
}
else
{
this
.
$message
.
error
(
msg
);
}
}
}
catch
(
err
)
{
console
.
log
(
err
);
}
},
//提交表单
async
submit1
()
{
let
ruleForm
=
this
.
ruleForm
;
ruleForm
.
projectId
=
localStorage
.
getItem
(
'projectId'
);
ruleForm
.
accessoryPOList
=
this
.
accessoryPOList
;
try
{
const
valid
=
await
this
.
$refs
[
'ruleForm'
].
validate
();
if
(
valid
)
{
const
{
code
,
msg
}
=
await
editBidding
(
this
.
ruleForm
);
if
(
code
===
200
)
{
this
.
$message
({
message
:
msg
,
type
:
'success'
,
duration
:
1500
});
setTimeout
(()
=>
{
this
.
$router
.
go
(
-
1
);
},
1500
);
}
else
if
(
code
==
500
)
{
this
.
$message
.
error
(
msg
);
}
}
}
catch
(
err
)
{
console
.
log
(
err
);
}
}
}
catch
(
err
)
{
console
.
log
(
err
)
}
}
}
}
};
</
script
>
<
style
scoped
>
.ql-editor
{
height
:
400px
;
}
.ql-editor
{
height
:
400px
;
}
.bottomButton
{
margin-top
:
20px
;
}
.bottomButton
{
margin-top
:
20px
;
}
.form
{
padding-bottom
:
80px
;
}
.form
{
padding-bottom
:
80px
;
}
</
style
>
src/pages/purchaser/bid/reviewed/inquiryAnnouncement.vue
View file @
f35e9be1
<
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=
"form"
>
<div
class=
"flex-between"
style=
"width:100%;margin-bottom: 20px;"
>
<div>
项目编号:
{{
projectCode
}}
</div>
<div>
项目名称:
{{
projectName
}}
</div>
</div>
<el-form
ref=
"ruleForm"
:model=
"ruleForm"
:rules=
"rules"
label-width=
"120px"
class=
"demo-ruleForm"
>
<el-form-item
label=
"询价公告名称"
prop=
"title"
>
<el-input
v-model
.
trim=
"ruleForm.title"
placeholder=
"请输入"
style=
"width: 50%;"
maxlength=
"30"
></el-input>
</el-form-item>
<el-form-item
label=
"询价所在地"
prop=
"address"
>
<citySelect
@
sendprovinceId=
"getprovinceId"
@
sendcityId=
"getcityId"
@
senddistrictId=
"getdistrictId"
></citySelect>
</el-form-item>
<el-form-item
label=
"项目优先级"
prop=
"priority"
>
<el-radio-group
v-model=
"ruleForm.priority"
>
<el-radio
:label=
"0"
>
普通
</el-radio>
<el-radio
:label=
"1"
>
紧急
</el-radio>
</el-radio-group>
</el-form-item>
<div
class=
"flex-between"
style=
"width:60%"
>
<el-form-item
label=
"询价单编号"
prop=
"inquiryCode"
>
<el-input
v-model
.
trim=
"ruleForm.inquiryCode"
onkeyup=
"value=value.replace(/[^\d]/g,'')"
placeholder=
"请输入"
maxlength=
"30"
style=
"width: 250px;"
></el-input>
</el-form-item>
<el-form-item
label=
"采购目录"
prop=
"purchaseCategory"
>
<el-input
v-model
.
trim=
"ruleForm.purchaseCategory"
placeholder=
"请输入"
maxlength=
"30"
style=
"width: 250px;"
></el-input>
</el-form-item>
<div>
<div
class=
"content-head"
>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<h3>
发布询价公告
</h3>
<h5>
发布询价公告
</h5>
</div>
<div
class=
"othercontent"
>
<!-- 基本信息 -->
<div>
<div
class=
"describe"
>
基本信息
</div>
<div
class=
"form"
>
<div
class=
"flex-between"
style=
"width: 100%; margin-bottom: 20px"
>
<div>
项目编号:
{{
projectCode
}}
</div>
<div>
项目名称:
{{
projectName
}}
</div>
</div>
<el-form
ref=
"ruleForm"
:model=
"ruleForm"
:rules=
"rules"
label-width=
"120px"
class=
"demo-ruleForm"
>
<el-form-item
label=
"询价公告名称"
prop=
"title"
>
<el-input
v-model
.
trim=
"ruleForm.title"
placeholder=
"请输入"
style=
"width: 50%"
maxlength=
"30"
></el-input>
</el-form-item>
<el-form-item
label=
"询价所在地"
prop=
"address"
>
<citySelect
@
sendprovinceId=
"getprovinceId"
@
sendcityId=
"getcityId"
@
senddistrictId=
"getdistrictId"
></citySelect>
</el-form-item>
<el-form-item
label=
"项目优先级"
prop=
"priority"
>
<el-radio-group
v-model=
"ruleForm.priority"
>
<el-radio
:label=
"0"
>
普通
</el-radio>
<el-radio
:label=
"1"
>
紧急
</el-radio>
</el-radio-group>
</el-form-item>
<div
class=
"flex-between"
style=
"width: 60%"
>
<el-form-item
label=
"询价单编号"
prop=
"inquiryCode"
>
<el-input
v-model
.
trim=
"ruleForm.inquiryCode"
onkeyup=
"value=value.replace(/[^\d]/g,'')"
placeholder=
"请输入"
maxlength=
"30"
style=
"width: 250px"
></el-input>
</el-form-item>
<el-form-item
label=
"采购目录"
prop=
"purchaseCategory"
>
<el-input
v-model
.
trim=
"ruleForm.purchaseCategory"
placeholder=
"请输入"
maxlength=
"30"
style=
"width: 250px"
></el-input>
</el-form-item>
</div>
<div
class=
"flex-between"
style=
"width: 60%"
>
<el-form-item
label=
"报价开始时间"
prop=
"startTime"
>
<el-date-picker
v-model=
"ruleForm.startTime"
type=
"datetime"
placeholder=
"选择日期时间"
disabled
style=
"width: 250px"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"报价结束时间"
prop=
"endTime"
>
<el-date-picker
v-model=
"ruleForm.endTime"
type=
"datetime"
placeholder=
"选择日期时间"
disabled
style=
"width: 250px"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"采购单位"
prop=
"purchaseAgent"
>
<el-input
v-model
.
trim=
"ruleForm.purchaseAgent"
disabled
style=
"width: 250px"
></el-input>
</el-form-item>
</div>
<div
class=
"flex-between"
style=
"width: 60%"
>
<el-form-item
label=
"采购单位联系人"
prop=
"contact"
>
<el-input
v-model
.
trim=
"ruleForm.contact"
disabled
style=
"width: 250px"
></el-input>
</el-form-item>
<el-form-item
label=
"联系方式"
prop=
"contactPhone"
>
<el-input
v-model
.
trim=
"ruleForm.contactPhone"
disabled
style=
"width: 250px"
></el-input>
</el-form-item>
<el-form-item
label=
"传真号码"
>
<el-input
v-model
.
trim=
"ruleForm.facsimile"
placeholder=
"请输入"
maxlength=
"30"
style=
"width: 250px"
></el-input>
</el-form-item>
</div>
<el-form-item
label=
"预算总额(元)"
prop=
"budget"
style=
"width: 20%"
>
<el-input-number
v-model=
"ruleForm.budget"
:min=
"0"
:controls=
"false"
:precision=
"2"
placeholder=
"请输入"
></el-input-number>
</el-form-item>
</el-form>
</div>
</div>
<div
class=
"flex-between"
style=
"width:60%"
>
<el-form-item
label=
"报价开始时间"
prop=
"startTime"
>
<el-date-picker
v-model=
"ruleForm.startTime"
type=
"datetime"
placeholder=
"选择日期时间"
disabled
style=
"width: 250px;"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"报价结束时间"
prop=
"endTime"
>
<el-date-picker
v-model=
"ruleForm.endTime"
type=
"datetime"
placeholder=
"选择日期时间"
disabled
style=
"width: 250px;"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"采购单位"
prop=
"purchaseAgent"
>
<el-input
v-model
.
trim=
"ruleForm.purchaseAgent"
disabled
style=
"width: 250px;"
></el-input>
</el-form-item>
<!-- 供应商要求 -->
<div>
<div
class=
"describe"
>
基本信息
</div>
<div
class=
"form"
>
<div
class=
"flex-between"
style=
"width: 100%; margin-bottom: 20px"
>
<div>
项目编号:
{{
projectCode
}}
</div>
<div>
项目名称:
{{
projectName
}}
</div>
</div>
<el-form
ref=
"ruleForm1"
:model=
"ruleForm"
:rules=
"rules"
label-width=
"150px"
class=
"demo-ruleForm"
>
<el-form-item
label=
"供应商规格要求"
prop=
"supplierScale"
>
<el-input
v-model
.
trim=
"ruleForm.supplierScale"
placeholder=
"请输入"
maxlength=
"30"
></el-input>
</el-form-item>
<el-form-item
label=
"供应商资格要求"
prop=
"supplierQualification"
>
<el-input
v-model
.
trim=
"ruleForm.supplierQualification"
placeholder=
"请输入"
maxlength=
"30"
></el-input>
</el-form-item>
<el-form-item
label=
"供应商区域范围要求"
prop=
"supplierRegion"
>
<el-input
v-model
.
trim=
"ruleForm.supplierRegion"
placeholder=
"请输入"
maxlength=
"30"
></el-input>
</el-form-item>
</el-form>
</div>
</div>
<div
class=
"flex-between"
style=
"width:60%"
>
<el-form-item
label=
"采购单位联系人"
prop=
"contact"
>
<el-input
v-model
.
trim=
"ruleForm.contact"
disabled
style=
"width: 250px;"
></el-input>
</el-form-item>
<el-form-item
label=
"联系方式"
prop=
"contactPhone"
>
<el-input
v-model
.
trim=
"ruleForm.contactPhone"
disabled
style=
"width: 250px;"
></el-input>
</el-form-item>
<el-form-item
label=
"传真号码"
>
<el-input
v-model
.
trim=
"ruleForm.facsimile"
placeholder=
"请输入"
maxlength=
"30"
style=
"width: 250px;"
></el-input>
</el-form-item>
<!-- 询价商品清单 -->
<div>
<div
class=
"describe"
>
询价商品清单
</div>
<div
class=
"form"
>
<dataTable
:table-data=
"tableData"
:columns=
"columns"
:is-pageobj=
"false"
></dataTable>
<div
class=
"flex"
style=
"margin-top: 20px"
>
<div
class=
"adjustment"
>
上传文件
</div>
<singleUpload
:limit=
"1"
tip=
"支持扩展名:.rar .zip .doc .docx .pdf .jpg..."
@
input=
"getfile"
></singleUpload>
</div>
</div>
</div>
<!-- 商务要求 -->
<div>
<div
class=
"describe"
>
商务要求
</div>
<div
class=
"form"
>
<el-form
ref=
"ruleForm2"
:model=
"ruleForm"
:rules=
"rules"
label-width=
"100px"
class=
"demo-ruleForm"
>
<el-form-item
label=
"商务要求"
prop=
"commercialRequirements"
>
<el-input
v-model
.
trim=
"ruleForm.commercialRequirements"
:rows=
"4"
style=
"width: 60%"
placeholder=
"请输入"
type=
"textarea"
maxlength=
"300"
></el-input>
</el-form-item>
</el-form>
</div>
</div>
<div
class=
"bottomButton"
>
<el-button
@
click=
"cancel"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"submit1"
v-if=
"type==1"
>
编辑
</el-button>
<el-button
type=
"primary"
@
click=
"submit"
v-else
>
提交审核
</el-button>
</div>
<el-form-item
label=
"预算总额(元)"
prop=
"budget"
style=
"width: 20%;"
>
<el-input-number
v-model=
"ruleForm.budget"
:min=
"0"
:controls=
"false"
:precision=
"2"
placeholder=
"请输入"
></el-input-number>
</el-form-item>
</el-form>
</div>
</div>
<!-- 供应商要求 -->
<div>
<div
class=
"describe"
>
基本信息
</div>
<div
class=
"form"
>
<div
class=
"flex-between"
style=
"width:100%;margin-bottom: 20px;"
>
<div>
项目编号:
{{
projectCode
}}
</div>
<div>
项目名称:
{{
projectName
}}
</div>
</div>
<el-form
ref=
"ruleForm1"
:model=
"ruleForm"
:rules=
"rules"
label-width=
"150px"
class=
"demo-ruleForm"
>
<el-form-item
label=
"供应商规格要求"
prop=
"supplierScale"
>
<el-input
v-model
.
trim=
"ruleForm.supplierScale"
placeholder=
"请输入"
maxlength=
"30"
></el-input>
</el-form-item>
<el-form-item
label=
"供应商资格要求"
prop=
"supplierQualification"
>
<el-input
v-model
.
trim=
"ruleForm.supplierQualification"
placeholder=
"请输入"
maxlength=
"30"
></el-input>
</el-form-item>
<el-form-item
label=
"供应商区域范围要求"
prop=
"supplierRegion"
>
<el-input
v-model
.
trim=
"ruleForm.supplierRegion"
placeholder=
"请输入"
maxlength=
"30"
></el-input>
</el-form-item>
</el-form>
</div>
</div>
<!-- 询价商品清单 -->
<div>
<div
class=
"describe"
>
询价商品清单
</div>
<div
class=
"form"
>
<dataTable
:table-data=
"tableData"
:columns=
"columns"
:is-pageobj=
"false"
></dataTable>
<div
class=
"flex"
style=
"margin-top: 20px;"
>
<div
class=
"adjustment"
>
上传文件
</div>
<singleUpload
:limit=
"1"
tip=
"支持扩展名:.rar .zip .doc .docx .pdf .jpg..."
@
input=
"getfile"
></singleUpload>
</div>
</div>
</div>
<!-- 商务要求 -->
<div>
<div
class=
"describe"
>
商务要求
</div>
<div
class=
"form"
>
<el-form
ref=
"ruleForm2"
:model=
"ruleForm"
:rules=
"rules"
label-width=
"100px"
class=
"demo-ruleForm"
>
<el-form-item
label=
"商务要求"
prop=
"commercialRequirements"
>
<el-input
v-model
.
trim=
"ruleForm.commercialRequirements"
:rows=
"4"
style=
"width: 60%;"
placeholder=
"请输入"
type=
"textarea"
maxlength=
"300"
></el-input>
</el-form-item>
</el-form>
</div>
</div>
<div
class=
"bottomButton"
>
<el-button
@
click=
"cancel"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"submit"
>
提交审核
</el-button>
</div>
</div>
</div>
</
template
>
<
script
>
import
{
generateNumber
}
from
'@/api/common/list'
import
dataTable
from
'@components/nopageTable.vue'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
import
citySelect
from
'@components/citySelect/citySelect.vue'
import
singleUpload
from
'@components/Upload/Upload.vue'
import
{
createEnquiry
}
from
'@api/purchaser/bid'
import
{
getTime
}
from
'@utils/time'
import
{
commoditylist
,
inqueryinfo
}
from
'@api/common/list'
import
{
generateNumber
,
enquiryProjectId
}
from
'@/api/common/list'
;
import
dataTable
from
'@components/nopageTable.vue'
;
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
;
import
citySelect
from
'@components/citySelect/citySelect.vue'
;
import
singleUpload
from
'@components/Upload/Upload.vue'
;
import
{
createEnquiry
}
from
'@api/purchaser/bid'
;
import
{
getTime
}
from
'@utils/time'
;
import
{
commoditylist
,
inqueryinfo
}
from
'@api/common/list'
;
export
default
{
components
:
{
dataTable
,
dataBreadcrumb
,
citySelect
,
singleUpload
},
data
()
{
// 测试省份
let
islocal
=
(
rule
,
value
,
callback
)
=>
{
if
(
!
this
.
ruleForm
.
provinceId
)
{
callback
(
new
Error
(
'请选择省份'
))
}
else
if
(
!
this
.
ruleForm
.
cityId
)
{
callback
(
new
Error
(
'请选择市'
))
}
else
if
(
!
this
.
ruleForm
.
districtId
)
{
callback
(
new
Error
(
'请选择区'
))
}
else
{
callback
()
}
}
let
checkfacsimile
=
async
(
rule
,
value
,
callback
)
=>
{
const
reg
=
/^
(?:\d{3,4}
-
)?\d{7,8}(?:
-
\d{1,6})?
$/
if
(
reg
.
test
(
value
))
{
callback
();
}
else
{
return
callback
(
new
Error
(
'请输入正确的传真号'
));
}
};
return
{
projectName
:
""
,
projectCode
:
""
,
breads
:
[
'招标管理'
,
' 招标项目管理'
,
'工作台'
],
tableData
:
[],
columns
:
[
{
label
:
'标的名称'
,
prop
:
'bidName'
},
{
label
:
'数量'
,
prop
:
'quantity'
},
{
label
:
'计量单位'
,
prop
:
'unit'
},
{
label
:
'品牌'
,
prop
:
'brand'
},
{
label
:
'规格型号'
,
prop
:
'specification'
},
{
label
:
'标杆价(元)'
,
prop
:
'price'
},
{
label
:
'备注'
,
prop
:
'remark'
},
],
ruleForm
:
{
title
:
''
,
projectId
:
''
,
cityId
:
''
,
districtId
:
''
,
inquiryCode
:
''
,
priority
:
''
,
startTime
:
''
,
endTime
:
''
,
purchaseAgent
:
'1'
,
contact
:
'1'
,
contactPhone
:
'1'
,
facsimile
:
''
,
budget
:
undefined
,
supplierScale
:
''
,
supplierQualification
:
''
,
supplierRegion
:
''
,
commercialRequirements
:
''
,
accessoryPOList
:[],
purchaseCategory
:
""
},
rules
:
{
address
:
[{
required
:
true
,
validator
:
islocal
,
trigger
:
'change'
}],
budget
:
[{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}],
title
:
[{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}],
inquiryCode
:
[{
required
:
true
,
message
:
'请输入请输入'
,
trigger
:
'blur'
}],
contact
:
[{
required
:
true
,
message
:
'请输入请输入'
,
trigger
:
'blur'
}],
contactPhone
:
[{
required
:
true
,
message
:
'请输入请输入'
,
trigger
:
'blur'
}],
startTime
:
[{
required
:
true
,
message
:
'请输入'
,
trigger
:
'change'
}],
endTime
:
[{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}],
purchaseAgent
:
[{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}],
facsimile
:
[{
required
:
true
,
validator
:
checkfacsimile
,
trigger
:
'blur'
}],
supplierScale
:
[{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}],
supplierQualification
:
[{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}],
supplierRegion
:
[{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}],
commercialRequirements
:
[{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}]
}
}
},
created
()
{
let
userInfo
=
JSON
.
parse
(
localStorage
.
getItem
(
"userInfo"
))
this
.
ruleForm
.
purchaseAgent
=
userInfo
.
companyName
this
.
ruleForm
.
contact
=
userInfo
.
name
this
.
ruleForm
.
contactPhone
=
userInfo
.
phone
let
data
=
getTime
();
this
.
ruleForm
.
startTime
=
data
;
this
.
projectCode
=
localStorage
.
getItem
(
"projectCode"
)
this
.
projectName
=
localStorage
.
getItem
(
"projectName"
)
this
.
getcommoditylist
()
this
.
getinqueryinfo
()
this
.
getGenerateNumber
()
},
methods
:
{
// 获取上传文件
getfile
(
val
)
{
},
getfile
(
val
)
{
for
(
let
item
of
val
)
{
item
.
accessoryUrl
=
item
.
fileUrl
}
this
.
ruleForm
.
accessoryPOList
=
val
},
// 获取编号
async
getGenerateNumber
()
{
const
{
data
}
=
await
generateNumber
(
3
)
this
.
ruleForm
.
inquiryCode
=
data
},
// 获取市ID
getprovinceId
(
val
)
{
this
.
ruleForm
.
provinceId
=
val
components
:
{
dataTable
,
dataBreadcrumb
,
citySelect
,
singleUpload
},
// 获取省ID
getcityId
(
val
)
{
this
.
ruleForm
.
cityId
=
val
},
// 获取城ID
getdistrictId
(
val
)
{
this
.
ruleForm
.
districtId
=
val
},
cancel
()
{
this
.
$router
.
go
(
-
1
)
data
()
{
// 测试省份
let
islocal
=
(
rule
,
value
,
callback
)
=>
{
if
(
!
this
.
ruleForm
.
provinceId
)
{
callback
(
new
Error
(
'请选择省份'
));
}
else
if
(
!
this
.
ruleForm
.
cityId
)
{
callback
(
new
Error
(
'请选择市'
));
}
else
if
(
!
this
.
ruleForm
.
districtId
)
{
callback
(
new
Error
(
'请选择区'
));
}
else
{
callback
();
}
};
let
checkfacsimile
=
async
(
rule
,
value
,
callback
)
=>
{
const
reg
=
/^
(?:\d{3,4}
-
)?\d{7,8}(?:
-
\d{1,6})?
$/
;
if
(
reg
.
test
(
value
))
{
callback
();
}
else
{
return
callback
(
new
Error
(
'请输入正确的传真号'
));
}
};
return
{
projectName
:
''
,
projectCode
:
''
,
breads
:
[
'招标管理'
,
' 招标项目管理'
,
'工作台'
],
tableData
:
[],
columns
:
[
{
label
:
'标的名称'
,
prop
:
'bidName'
},
{
label
:
'数量'
,
prop
:
'quantity'
},
{
label
:
'计量单位'
,
prop
:
'unit'
},
{
label
:
'品牌'
,
prop
:
'brand'
},
{
label
:
'规格型号'
,
prop
:
'specification'
},
{
label
:
'标杆价(元)'
,
prop
:
'price'
},
{
label
:
'备注'
,
prop
:
'remark'
}
],
ruleForm
:
{
title
:
''
,
projectId
:
''
,
cityId
:
''
,
districtId
:
''
,
inquiryCode
:
''
,
priority
:
''
,
startTime
:
''
,
endTime
:
''
,
purchaseAgent
:
'1'
,
contact
:
'1'
,
contactPhone
:
'1'
,
facsimile
:
''
,
budget
:
undefined
,
supplierScale
:
''
,
supplierQualification
:
''
,
supplierRegion
:
''
,
commercialRequirements
:
''
,
accessoryPOList
:
[],
purchaseCategory
:
''
},
rules
:
{
address
:
[
{
required
:
true
,
validator
:
islocal
,
trigger
:
'change'
}
],
budget
:
[
{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}
],
title
:
[
{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}
],
inquiryCode
:
[
{
required
:
true
,
message
:
'请输入请输入'
,
trigger
:
'blur'
}
],
contact
:
[
{
required
:
true
,
message
:
'请输入请输入'
,
trigger
:
'blur'
}
],
contactPhone
:
[
{
required
:
true
,
message
:
'请输入请输入'
,
trigger
:
'blur'
}
],
startTime
:
[
{
required
:
true
,
message
:
'请输入'
,
trigger
:
'change'
}
],
endTime
:
[
{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}
],
purchaseAgent
:
[
{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}
],
facsimile
:
[
{
required
:
true
,
validator
:
checkfacsimile
,
trigger
:
'blur'
}
],
supplierScale
:
[
{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}
],
supplierQualification
:
[
{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}
],
supplierRegion
:
[
{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}
],
commercialRequirements
:
[
{
required
:
true
,
message
:
'请输入'
,
trigger
:
'blur'
}
]
},
type
:
''
};
},
//提交表单
async
submit
()
{
try
{
const
valid
=
await
this
.
$refs
[
'ruleForm'
].
validate
()
const
valid1
=
await
this
.
$refs
[
'ruleForm1'
].
validate
()
const
valid2
=
await
this
.
$refs
[
'ruleForm2'
].
validate
()
console
.
log
(
valid
)
if
(
valid
&&
valid1
&&
valid2
)
{
let
ruleForm
=
this
.
ruleForm
;
ruleForm
.
projectId
=
localStorage
.
getItem
(
"projectId"
)
console
.
log
(
"通过"
)
const
{
code
,
msg
}
=
await
createEnquiry
(
ruleForm
)
if
(
code
==
200
)
{
this
.
$message
({
message
:
msg
,
type
:
'success'
,
duration
:
1500
})
setTimeout
(()
=>
{
this
.
$router
.
go
(
-
1
)
},
1500
)
}
else
{
this
.
$message
.
error
(
msg
)
}
created
()
{
let
type
=
this
.
$route
.
query
.
type
;
this
.
type
=
type
;
if
(
type
==
1
)
{
this
.
getenquiryProjectId
()
}
else
{
let
userInfo
=
JSON
.
parse
(
localStorage
.
getItem
(
'userInfo'
));
this
.
ruleForm
.
purchaseAgent
=
userInfo
.
companyName
;
this
.
ruleForm
.
contact
=
userInfo
.
name
;
this
.
ruleForm
.
contactPhone
=
userInfo
.
phone
;
this
.
ruleForm
.
startTime
=
getTime
();
}
}
catch
(
err
)
{
console
.
log
(
err
)
}
this
.
projectCode
=
localStorage
.
getItem
(
'projectCode'
);
this
.
projectName
=
localStorage
.
getItem
(
'projectName'
);
this
.
getcommoditylist
();
this
.
getinqueryinfo
();
this
.
getGenerateNumber
();
},
// 获取列表
async
getcommoditylist
()
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
data
,
code
}
=
await
commoditylist
(
projectId
)
this
.
tableData
=
data
},
// 获取招标截止时间
async
getinqueryinfo
()
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
data
,
code
}
=
await
inqueryinfo
(
projectId
)
this
.
ruleForm
.
endTime
=
data
.
endTime
;
},
}
}
methods
:
{
// 获取详情
async
getenquiryProjectId
()
{
let
projectId
=
localStorage
.
getItem
(
'projectId'
);
const
{
data
,
code
,
msg
}
=
await
enquiryProjectId
(
projectId
);
if
(
code
==
200
)
{
for
(
let
item
of
data
.
accessoryVOList
)
{
item
.
name
=
item
.
fileName
;
item
.
url
=
item
.
accessoryUrl
;
}
this
.
ruleForm
=
data
;
let
userInfo
=
JSON
.
parse
(
localStorage
.
getItem
(
'userInfo'
));
this
.
ruleForm
.
purchaseAgent
=
userInfo
.
companyName
;
this
.
ruleForm
.
contact
=
userInfo
.
name
;
this
.
ruleForm
.
contactPhone
=
userInfo
.
phone
;
this
.
ruleForm
.
startTime
=
getTime
();
}
},
// 获取上传文件
getfile
(
val
)
{
for
(
let
item
of
val
)
{
item
.
accessoryUrl
=
item
.
fileUrl
;
}
this
.
ruleForm
.
accessoryPOList
=
val
;
},
// 获取编号
async
getGenerateNumber
()
{
const
{
data
}
=
await
generateNumber
(
3
);
this
.
ruleForm
.
inquiryCode
=
data
;
},
// 获取市ID
getprovinceId
(
val
)
{
this
.
ruleForm
.
provinceId
=
val
;
},
// 获取省ID
getcityId
(
val
)
{
this
.
ruleForm
.
cityId
=
val
;
},
// 获取城ID
getdistrictId
(
val
)
{
this
.
ruleForm
.
districtId
=
val
;
},
cancel
()
{
this
.
$router
.
go
(
-
1
);
},
//提交表单
async
submit
()
{
try
{
const
valid
=
await
this
.
$refs
[
'ruleForm'
].
validate
();
const
valid1
=
await
this
.
$refs
[
'ruleForm1'
].
validate
();
const
valid2
=
await
this
.
$refs
[
'ruleForm2'
].
validate
();
console
.
log
(
valid
);
if
(
valid
&&
valid1
&&
valid2
)
{
let
ruleForm
=
this
.
ruleForm
;
ruleForm
.
projectId
=
localStorage
.
getItem
(
'projectId'
);
console
.
log
(
'通过'
);
const
{
code
,
msg
}
=
await
createEnquiry
(
ruleForm
);
if
(
code
==
200
)
{
this
.
$message
({
message
:
msg
,
type
:
'success'
,
duration
:
1500
});
setTimeout
(()
=>
{
this
.
$router
.
go
(
-
1
);
},
1500
);
}
else
{
this
.
$message
.
error
(
msg
);
}
}
}
catch
(
err
)
{
console
.
log
(
err
);
}
},
//提交表单
async
submit1
()
{
try
{
const
valid
=
await
this
.
$refs
[
'ruleForm'
].
validate
();
const
valid1
=
await
this
.
$refs
[
'ruleForm1'
].
validate
();
const
valid2
=
await
this
.
$refs
[
'ruleForm2'
].
validate
();
console
.
log
(
valid
);
if
(
valid
&&
valid1
&&
valid2
)
{
let
ruleForm
=
this
.
ruleForm
;
ruleForm
.
projectId
=
localStorage
.
getItem
(
'projectId'
);
console
.
log
(
'通过'
);
const
{
code
,
msg
}
=
await
editEnquiry
(
ruleForm
);
if
(
code
==
200
)
{
this
.
$message
({
message
:
msg
,
type
:
'success'
,
duration
:
1500
});
setTimeout
(()
=>
{
this
.
$router
.
go
(
-
1
);
},
1500
);
}
else
{
this
.
$message
.
error
(
msg
);
}
}
}
catch
(
err
)
{
console
.
log
(
err
);
}
},
// 获取列表
async
getcommoditylist
()
{
let
projectId
=
localStorage
.
getItem
(
'projectId'
);
const
{
data
,
code
}
=
await
commoditylist
(
projectId
);
this
.
tableData
=
data
;
},
// 获取招标截止时间
async
getinqueryinfo
()
{
let
projectId
=
localStorage
.
getItem
(
'projectId'
);
const
{
data
,
code
}
=
await
inqueryinfo
(
projectId
);
this
.
ruleForm
.
endTime
=
data
.
endTime
;
}
}
};
</
script
>
<
style
scoped
>
.othercontent
>
div
{
background
:
#FFFFFF
;
margin-bottom
:
20px
;
}
.othercontent
>
div
{
background
:
#ffffff
;
margin-bottom
:
20px
;
}
.form
{
padding
:
10px
20px
20px
20px
}
.form
{
padding
:
10px
20px
20px
20px
;
}
.adjustment
{
margin-top
:
5px
;
margin-right
:
10px
;
}
.adjustment
{
margin-top
:
5px
;
margin-right
:
10px
;
}
</
style
>
src/pages/purchaser/bid/workbench.vue
View file @
f35e9be1
<
template
>
<div>
<div
class=
"content"
>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<changeNav
:navs=
"navs"
></changeNav>
<h1>
项目状态:
{{
remark
}}
</h1>
<div
class=
"flex state"
>
<!--
<ul
class=
"flex-left"
>
<li
v-for=
"(item,
index) in states"
:key=
"index"
class=
"flex"
>
<div>
{{
item
.
title
}}
</div>
<ul
class=
"inside flex"
>
<li
v-for=
"(mods,
index) in item.modulars"
:key=
"index"
class=
"flex-center"
>
<div
class=
"active"
@
click=
"jump(mods.label,mods.url
)"
>
{{
mods
.
label
}}
</div>
</li>
</ul>
</li>
</ul>
--
>
<ul
class=
"flex"
>
<div>
<div
class=
"content"
>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<changeNav
:navs=
"navs"
></changeNav>
<h1>
项目状态:
{{
remark
}}
</h1>
<div
class=
"flex state"
>
<ul
class=
"flex-left"
>
<li
v-for=
"(item,
index) in states"
:key=
"index"
class=
"flex"
>
<div>
{{
item
.
title
}}
</div>
<ul
class=
"inside flex"
>
<li
v-for=
"(mods,
index) in item.modulars"
:key=
"index"
class=
"flex-center"
>
<div
:class=
"mods.bright ? 'active' : ''"
@
click=
"jump(mods
)"
>
{{
mods
.
label
}}
</div>
</li>
</ul>
</li>
</ul
>
<!--
<ul
class=
"flex"
>
<li
v-for=
"(item,index) in states"
:key=
"index"
>
<el-button
type=
"primary"
@
click=
"jump(item.button,item.uri)"
>
{{
item
.
button
}}
</el-button>
</li>
</ul>
</div>
<div
class=
"centerButton"
>
<el-button
type=
"primary"
@
click=
"back"
>
返回
</el-button>
</div>
</div>
</div>
</ul>
-->
</div>
<div
class=
"centerButton"
>
<el-button
type=
"primary"
@
click=
"back"
>
返回
</el-button>
</div>
</div>
</div>
</
template
>
<
script
>
import
{
projectEnd
}
from
'@api/common/list'
import
{
projectConsole
}
from
'@api/purchaser/bid'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
import
changeNav
from
'@components/changeNav.vue'
export
default
{
components
:
{
dataBreadcrumb
,
changeNav
},
data
()
{
return
{
states
:
[],
breads
:
[
'招标管理'
,
'招标项目管理 '
,
'工作台'
],
navs
:
[
'工作台'
],
remark
:
""
}
},
methods
:
{
back
()
{
this
.
$router
.
go
(
-
1
)
},
jump
(
label
,
url
)
{
if
(
label
==
"项目终止"
)
{
this
.
$confirm
(
'确定要终止吗?'
,
'提示'
,
{
type
:
'warning'
})
.
then
(
async
()
=>
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
msg
,
code
}
=
await
projectEnd
(
projectId
)
if
(
code
==
200
)
{
this
.
$message
({
message
:
msg
,
type
:
'success'
,
duration
:
1500
})
setTimeout
(()
=>
{
this
.
$router
.
go
(
-
1
)
},
1500
)
}
else
{
this
.
$message
.
error
(
msg
)
}
})
.
catch
(()
=>
{})
}
else
{
this
.
$router
.
push
(
url
)
}
},
async
getprojectConsole
()
{
try
{
let
message
=
{}
message
.
projectId
=
localStorage
.
getItem
(
"projectId"
)
message
.
type
=
1
const
{
data
,
msg
,
code
}
=
await
projectConsole
(
message
)
if
(
code
==
200
)
{
this
.
states
=
data
this
.
remark
=
data
[
0
].
remark
}
else
{
this
.
$message
.
error
(
msg
)
}
}
catch
(
e
)
{
console
.
log
(
e
)
}
}
},
created
()
{
this
.
getprojectConsole
()
}
}
import
{
projectEnd
}
from
'@api/common/list'
;
import
{
projectConsole
}
from
'@api/purchaser/bid'
;
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
;
import
changeNav
from
'@components/changeNav.vue'
;
export
default
{
components
:
{
dataBreadcrumb
,
changeNav
},
data
()
{
return
{
states
:
[
{
title
:
'公告'
,
modulars
:
[
{
id
:
1
,
label
:
'变更公告管理'
,
url
:
'/purchaser/bid/bidStage/changeList'
,
bright
:
false
},
{
id
:
2
,
label
:
'流标公告管理'
,
url
:
'/purchaser/bid/bidStage/failList'
,
bright
:
false
}
]
},
{
title
:
'招标'
,
modulars
:
[
{
id
:
3
,
label
:
'项目信息'
,
url
:
'/purchaser/bid/bidStage/projectInformation'
,
bright
:
false
},
{
id
:
4
,
label
:
'发布询价公告'
,
url
:
'/purchaser/bid/reviewed/inquiryAnnouncement'
,
bright
:
false
},
{
id
:
5
,
label
:
'发布招标公告'
,
url
:
'/purchaser/bid/reviewed/tenderAnnouncement'
,
bright
:
false
},
{
id
:
6
,
label
:
'投标邀请书'
,
url
:
'1'
,
bright
:
false
},
{
id
:
7
,
label
:
'招标文件澄清管理'
,
url
:
'/purchaser/bid/bidStage/clearManagement'
,
bright
:
false
}
]
},
{
title
:
'投标'
,
modulars
:
[
{
id
:
8
,
label
:
'投标信息查看'
,
url
:
'/purchaser/bid/bidStage/tenderInformationlist'
,
bright
:
false
}
]
},
{
title
:
'开标'
,
modulars
:
[
{
id
:
9
,
label
:
'开标设置'
,
url
:
'/purchaser/bid/bidStage/bidSet'
,
bright
:
false
},
{
id
:
10
,
label
:
'开标大厅'
,
url
:
'/purchaser/bid/bidOpen/bidOpenhal'
,
bright
:
false
},
{
id
:
11
,
label
:
'开标过程纪录查看'
,
url
:
'/purchaser/bid/bidEvaluation/hallInformation'
,
bright
:
false
}
]
},
{
title
:
'评标'
,
modulars
:
[
{
id
:
12
,
label
:
'评标管理'
,
url
:
'/purchaser/bid/bidEvaluation/projectManager/content'
,
bright
:
false
},
{
id
:
13
,
label
:
'开始评标'
,
url
:
'/purchaser/bid/bidEvaluation/review/review'
,
bright
:
false
}
]
},
{
title
:
'定标'
,
modulars
:
[
{
id
:
14
,
label
:
'中标候选人公示'
,
url
:
'/purchaser/bid/bidEvaluation/review/review'
,
bright
:
false
},
{
id
:
15
,
label
:
'确认中标人'
,
url
:
'/purchaser/bid/bidSure/determine'
,
bright
:
false
},
{
id
:
16
,
label
:
'中标公告'
,
url
:
'/purchaser/bid/bidSure/notice'
,
bright
:
false
},
{
id
:
17
,
label
:
'发布中标通知书'
,
url
:
'/purchaser/bid/bidSure/winBid/list'
,
bright
:
false
},
{
id
:
18
,
label
:
'发布招标结果通知书'
,
url
:
'/purchaser/bid/bidSure/bidResult/list'
,
bright
:
false
},
{
id
:
19
,
label
:
'合同管理'
,
url
:
'/purchaser/bid/bidSure/contract'
,
bright
:
false
}
]
},
{
title
:
'费用'
,
modulars
:
[
{
id
:
20
,
label
:
'标书费缴纳管理'
,
url
:
'/purchaser/bid/bidStage/tenderFeelist'
,
bright
:
false
},
{
id
:
21
,
label
:
'保证金缴纳管理'
,
url
:
'/purchaser/bid/bidStage/bondList'
,
bright
:
false
}
]
},
{
title
:
'功能'
,
modulars
:
[
{
id
:
22
,
label
:
'项目终止'
,
url
:
'1'
,
bright
:
false
}
]
}
],
breads
:
[
'招标管理'
,
'招标项目管理 '
,
'工作台'
],
navs
:
[
'工作台'
],
remark
:
''
,
buttonList
:
[]
};
},
methods
:
{
geturl
(
url
,
status
)
{
let
newUrl
=
''
;
if
(
status
==
0
)
{
newUrl
=
url
;
}
else
if
(
status
==
1
)
{
newUrl
=
`
${
url
}
?type=1`
;
//编辑
}
else
{
newUrl
=
`
${
url
}
?type=2`
;
//查看
}
return
newUrl
;
},
getlabel
(
label
,
status
)
{
console
.
log
(
label
,
status
);
let
newlabel
=
''
;
if
(
status
==
0
)
{
newlabel
=
label
;
}
else
if
(
status
==
1
)
{
newlabel
=
`编辑
${
label
}
`
;
}
else
{
newlabel
=
`查看
${
label
}
`
;
}
return
newlabel
;
},
back
()
{
this
.
$router
.
go
(
-
1
);
},
jump
(
mods
)
{
// if (mods.bright) {
if
(
mods
.
label
==
'项目终止'
)
{
this
.
$confirm
(
'确定要终止吗?'
,
'提示'
,
{
type
:
'warning'
})
.
then
(
async
()
=>
{
let
projectId
=
localStorage
.
getItem
(
'projectId'
);
const
{
msg
,
code
}
=
await
projectEnd
(
projectId
);
if
(
code
==
200
)
{
this
.
$message
({
message
:
msg
,
type
:
'success'
,
duration
:
1500
});
setTimeout
(()
=>
{
this
.
$router
.
go
(
-
1
);
},
1500
);
}
else
{
this
.
$message
.
error
(
msg
);
}
})
.
catch
(()
=>
{});
}
else
{
this
.
$router
.
push
(
mods
.
url
);
}
// }
},
async
getprojectConsole
()
{
try
{
let
message
=
{};
message
.
projectId
=
localStorage
.
getItem
(
'projectId'
);
message
.
type
=
1
;
const
{
data
,
msg
,
code
}
=
await
projectConsole
(
message
);
if
(
code
==
200
)
{
for
(
let
item
of
this
.
states
)
{
for
(
let
item1
of
item
.
modulars
)
{
for
(
let
item2
of
data
)
{
if
(
item1
.
id
==
item2
.
buttonId
)
{
item1
.
bright
=
true
;
item1
.
url
=
this
.
geturl
(
item1
.
url
,
item2
.
status
);
item1
.
label
=
this
.
getlabel
(
item1
.
label
,
item2
.
status
);
}
}
}
}
this
.
remark
=
data
[
0
].
remark
;
}
else
{
this
.
$message
.
error
(
msg
);
}
}
catch
(
e
)
{
console
.
log
(
e
);
}
}
},
created
()
{
this
.
getprojectConsole
();
}
};
</
script
>
<
style
scoped
>
.state
{
margin-top
:
30px
;
/* margin-left: 50px; */
}
.state
{
margin-top
:
30px
;
margin-left
:
50px
;
}
.state
>
ul
{
flex-wrap
:
wrap
;
}
.state
>
ul
{
flex-wrap
:
wrap
;
}
.state
>
ul
>
li
{
margin-right
:
50px
;
margin-bottom
:
50px
;
cursor
:
pointer
;
}
.state
>
ul
>
li
{
margin-right
:
50px
;
cursor
:
pointer
;
}
/* .flex-left>
li {
font-weight: bold;
font-size: 20px;
height: 5
0px;
line-height: 5
0px;
}
.flex-left
>
li
{
font-weight
:
bold
;
font-size
:
20px
;
height
:
7
0px
;
line-height
:
7
0px
;
}
.flex-left>li>
div {
margin-right: 50px;
padding-right: 30px;
border-right: 1px solid #000;
}
.flex-left
>
li
>
div
{
margin-right
:
50px
;
padding-right
:
30px
;
border-right
:
1px
solid
#000
;
}
.inside>li>
div {
padding: 0 10px;
background: #ccc;
color: #ffff;
font-size: 14px;
margin-right: 30px;
border-radius: 2px;
line-height: 30
px;
height: 30
px;
}
.inside>li>.active
{
background: #2288EE
} */
.inside
>
li
>
div
{
padding
:
0
10px
;
background
:
#ccc
;
color
:
#ffff
;
font-size
:
14px
;
margin-right
:
30px
;
border-radius
:
2px
;
line-height
:
35
px
;
height
:
35
px
;
}
.inside
>
li
>
.active
{
background
:
#ff5203
;
}
</
style
>
src/pages/purchaser/organization/informationSee.vue
View file @
f35e9be1
...
...
@@ -15,7 +15,7 @@
</li>
<li>
<div>
注册角色
</div>
<div>
11
</div>
<div>
{{
detail
.
type
==
"1"
?
"采购商"
:
"供应商"
}}
</div>
</li>
<li>
<div>
法人姓名
</div>
...
...
@@ -23,7 +23,7 @@
</li>
<li>
<div>
法人电话
</div>
<div>
11
</div>
<div>
{{
detail
.
legalPersonPhone
}}
</div>
</li>
<li>
<div>
统一社会信用代码
</div>
...
...
@@ -47,15 +47,15 @@
</li>
<li>
<div>
开户银行名称
</div>
<div>
222
</div>
<div>
{{
detail
.
bankName
}}
</div>
</li>
<li>
<li>
<div>
结算账户
</div>
<div>
222
</div>
<div>
{{
detail
.
bankAccount
}}
</div>
</li>
<li>
<div>
结算账户名
</div>
<div>
222
</div>
<div>
{{
detail
.
bankName
}}
</div>
</li>
<li>
<div>
注册资本(万元)
</div>
...
...
src/pages/supply/bid/joinProject/bidEvaluation/hallInformation.vue
0 → 100644
View file @
f35e9be1
<
template
>
<div>
<div
class=
"content"
>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<div
class=
"message"
>
<div
class=
"flex-between"
>
<div>
项目编号:
{{
projectCode
}}
</div>
<div>
项目名称:
{{
projectName
}}
</div>
</div>
<div>
<div>
开标一览表:
</div>
<dataTable
:tableData=
"tableData"
:columns=
"nopagecolumns"
:margin-top=
"0"
:margin-bottom=
"0"
>
</dataTable>
</div>
</div>
<changeNav
:navs=
"navs"
@
getIndex=
"getIndex"
></changeNav>
<!-- 开标大厅消息 -->
<div
v-show=
"changeIndex == 0"
>
<dataTable
:table-data=
"behaviorList"
:columns=
"behavior"
:is-pageobj=
"false"
:is-index=
"true"
>
<el-table-column
slot=
"operate"
label=
"消息内容"
align=
"center"
>
<template
slot-scope=
"scope"
>
<div
class=
"flex content"
>
<div>
{{
scope
.
row
.
time
}}
</div>
<div>
{{
scope
.
row
.
role
}}
</div>
<div>
{{
scope
.
row
.
name
}}
</div>
<div>
{{
scope
.
row
.
behavior
}}
</div>
</div>
</
template
>
</el-table-column>
</dataTable>
</div>
<!-- 对话消息 -->
<div
v-show=
"changeIndex == 1"
>
<dataTable
:table-data=
"chatList"
:columns=
"chat"
:is-pageobj=
"false"
:is-index=
"true"
>
</dataTable>
</div>
<div
class=
"centerButton"
>
<el-button
@
click=
"back"
>
返回
</el-button>
</div>
</div>
</div>
</template>
<
script
>
import
{
messageRecord
,
openInfo
}
from
'@api/purchaser/bid'
;
import
dataTable
from
'@components/nopageTable.vue'
;
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
;
import
changeNav
from
'@components/changeNav.vue'
;
export
default
{
components
:
{
dataTable
,
dataBreadcrumb
,
changeNav
},
data
()
{
return
{
nopagecolumns
:
[
{
label
:
'投标人名称'
,
prop
:
'companyName'
},
{
label
:
'投标报价(元)'
,
prop
:
'price'
},
{
label
:
'是否签名'
,
prop
:
'isSign'
}
],
//
changeIndex
:
'0'
,
navs
:
[
'开标大厅消息'
,
'对话消息'
],
breads
:
[
'招标管理'
,
'招标项目管理'
,
'工作台'
],
behaviorList
:
[],
behavior
:
[
{
slot
:
'operate'
}
],
// 操作列
chat
:
[
{
label
:
'发送人'
,
prop
:
'name'
},
{
label
:
'发送时间'
,
prop
:
'time'
},
{
label
:
'发送内容'
,
prop
:
'chatContent'
}
],
chatList
:
[],
pageObj
:
{
size
:
10
,
total
:
1
,
currentPage
:
1
,
sizes
:
[
100
,
200
,
300
],
func
:
(
currentPage
)
=>
{
this
.
pageTurning
(
currentPage
);
}
},
projectCode
:
''
,
projectName
:
''
,
tableData
:
[]
};
},
methods
:
{
back
()
{
this
.
$router
.
go
(
-
1
);
},
examine
()
{
this
.
$router
.
push
(
'/admin/bid/bidingDetail'
);
},
getIndex
(
val
)
{
this
.
changeIndex
=
val
;
},
async
getmessageRecord
()
{
let
projectId
=
localStorage
.
getItem
(
'projectId'
);
const
{
data
,
code
}
=
await
messageRecord
(
projectId
);
this
.
behaviorList
=
data
.
behaviorList
;
this
.
chatList
=
data
.
chatList
;
},
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
);
}
}
},
created
()
{
this
.
projectCode
=
localStorage
.
getItem
(
'projectCode'
);
this
.
projectName
=
localStorage
.
getItem
(
'projectName'
);
this
.
getmessageRecord
();
this
.
getopenInfo
();
}
};
</
script
>
<
style
scoped
>
.content
>
div
{
margin-right
:
10px
;
}
.upload
>
button
{
border
:
1px
solid
#000000
;
background
:
#fff
;
width
:
50px
;
height
:
20px
;
margin-left
:
10px
;
}
.message
>
div
{
margin-bottom
:
10px
;
}
.message
{
margin
:
30px
0
30px
50px
;
}
</
style
>
src/pages/supply/bid/joinProject/bidStage/bond/detail.vue
View file @
f35e9be1
...
...
@@ -140,7 +140,7 @@ export default {
};
return
{
isdisabled
:
true
,
title
:
'
参
看'
,
title
:
'
查
看'
,
state
:
''
,
breads
:
[
'招标管理'
,
'招标项目管理'
,
'工作台'
],
ruleForm
:
{},
...
...
src/pages/supply/bid/joinProject/bidStage/tenderFee/detail.vue
View file @
f35e9be1
...
...
@@ -172,7 +172,7 @@ export default {
};
return
{
isdisabled
:
true
,
title
:
'
参
看'
,
title
:
'
查
看'
,
state
:
''
,
breads
:
[
'招标管理'
,
'招标项目管理'
,
'工作台'
],
ruleForm
:
{},
...
...
src/pages/supply/bid/joinProject/bidSure/bidwinAdvice.vue
View file @
f35e9be1
<
template
>
<div>
<div
class=
"content"
>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<changeNav
:navs=
"navs"
></changeNav>
<div
class=
"message flex-colunm"
>
<div>
<div>
项目编号:
{{
projectCode
}}
</div>
<div>
项目名称:
{{
projectName
}}
</div>
<div>
<div
class=
"content"
>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<changeNav
:navs=
"navs"
></changeNav>
<div
class=
"message"
>
<div>
<div>
项目编号:
{{
projectCode
}}
</div>
<div>
项目名称:
{{
projectName
}}
</div>
</div>
<div>
<div>
日期:
{{
detail
.
winDate
}}
</div>
<div>
中标金额:
{{
detail
.
money
}}
元
</div>
</div>
<div>
<div
class=
"flex-item"
>
<div
style=
"margin-right: 20px"
>
附件:
</div>
<ul
v-if=
"detail.fileList"
>
<li
v-for=
"(item, i) in detail.fileList"
:key=
"i"
>
<a
:href=
"item.fileUrl"
>
{{
item
.
fileName
}}
</a>
</li>
</ul>
<div
v-else
>
无
</div>
</div>
<div>
中标通知书编号:
{{
detail
.
number
}}
</div>
</div>
<div
class=
"flex-colunm notice"
>
<h1>
您已中标,请及时与平台签署应收账款买断合同。
</h1>
<h3>
咨询电话:400-4567457
</h3>
<el-button
type=
"primary"
>
查看详情
</el-button>
</div>
<div
class=
"centerButton"
>
<el-button
@
click=
"back"
>
返回
</el-button>
</div>
</div>
</div>
<div>
<div>
日期:
{{
detail
.
winDate
}}
</div>
<div>
中标金额:
{{
detail
.
money
}}
元
</div>
</div>
<div>
<div
class=
"flex-item"
>
<div
style=
"margin-right: 20px;"
>
附件:中标通知书.pdf
</div>
<el-button
size=
"mini"
>
下载
</el-button>
</div>
<div>
中标通知书编号:
{{
detail
.
number
}}
</div>
</div>
<div
class=
"flex-colunm notice"
>
<h1>
您已中标,请及时与平台签署应收账款买断合同。
</h1>
<h3>
咨询电话:400-4567457
</h3>
<el-button
type=
"primary"
>
查看详情
</el-button>
</div>
<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'
import
{
winBookdetail
}
from
'@api/supply/bid'
;
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
;
import
changeNav
from
'@components/changeNav.vue'
;
export
default
{
components
:
{
dataBreadcrumb
,
changeNav
},
data
()
{
return
{
projectCode
:
""
,
projectName
:
""
,
breads
:
[
'投标管理 '
,
'我参加的项目'
,
'工作台'
],
navs
:
[
'中标通知书'
],
projectCode
:
""
,
projectName
:
""
,
detail
:
""
}
},
methods
:
{
back
(){
this
.
$router
.
go
(
-
1
)
components
:
{
dataBreadcrumb
,
changeNav
},
async
getwinBookdetail
()
{
let
projectId
=
localStorage
.
getItem
(
"projectId"
)
const
{
data
,
code
}
=
await
winBookdetail
(
projectId
)
if
(
code
==
200
){
this
.
detail
=
data
}
}
},
created
()
{
this
.
projectCode
=
localStorage
.
getItem
(
"projectCode"
)
this
.
projectName
=
localStorage
.
getItem
(
"projectName"
)
this
.
getwinBookdetail
()
}
}
data
()
{
return
{
projectCode
:
''
,
projectName
:
''
,
breads
:
[
'投标管理 '
,
'我参加的项目'
,
'工作台'
],
navs
:
[
'中标通知书'
],
projectCode
:
''
,
projectName
:
''
,
detail
:
''
};
},
methods
:
{
open
(
url
)
{
window
.
open
(
url
);
},
back
()
{
this
.
$router
.
go
(
-
1
);
},
async
getwinBookdetail
()
{
let
projectId
=
localStorage
.
getItem
(
'projectId'
);
const
{
data
,
code
}
=
await
winBookdetail
(
projectId
);
if
(
code
==
200
)
{
this
.
detail
=
data
;
}
}
},
created
()
{
this
.
projectCode
=
localStorage
.
getItem
(
'projectCode'
);
this
.
projectName
=
localStorage
.
getItem
(
'projectName'
);
this
.
getwinBookdetail
();
}
};
</
script
>
<
style
scoped
>
.content
>
h1
{
text-align
:
center
;
margin-top
:
20px
;
margin-bottom
:
40px
;
font-weight
:
bold
;
}
.content
>
.img
{
width
:
600px
;
margin
:
0
auto
}
.enclosure
{
margin
:
20px
0
;
}
.message
>
div
{
display
:
flex
;
margin-bottom
:
30px
;
}
.message
>
div
>
div
:first-child
{
margin-right
:
300px
;
}
.notice
{
width
:
80%
;
border
:
1px
solid
#000
}
.notice
{
margin-top
:
200px
;
margin-bottom
:
30px
;
padding
:
20px
0
;
}
.notice
>
h3
{
margin
:
20px
0
;
}
.content
>
h1
{
text-align
:
center
;
margin-top
:
20px
;
margin-bottom
:
40px
;
font-weight
:
bold
;
}
.content
>
.img
{
width
:
600px
;
margin
:
0
auto
;
}
.enclosure
{
margin
:
20px
0
;
}
.message
{
width
:
60%
;
margin
:
0
auto
;
}
.message
>
.centerButton
{
justify-content
:
center
;
}
.message
>
div
{
display
:
flex
;
justify-content
:
space-between
;
margin-bottom
:
30px
;
}
/* .message > div > div:first-child {
margin-right: 300px;
} */
.notice
{
width
:
80%
;
border
:
1px
solid
#000
;
}
.notice
{
margin
:
200px
auto
30px
;
padding
:
20px
0
;
}
.notice
>
h3
{
margin
:
20px
0
;
}
</
style
>
src/pages/supply/bid/joinProject/bidSure/candidateSee.vue
View file @
f35e9be1
<
template
>
<div>
<div
class=
"content-head"
>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<h3>
查看中标候选人公示
</h3>
<h5>
查看中标候选人公示
</h5>
<div>
<div
class=
"content-head"
>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<h3>
查看中标候选人公示
</h3>
<h5>
查看中标候选人公示
</h5>
</div>
<div
class=
"content"
>
<div
class=
"flex-arround"
style=
"margin-bottom:50px"
>
<div>
项目编号:
{{
projectCode
}}
</div>
<div>
项目名称:
{{
projectName
}}
</div>
<div>
发布时间:
{{
detail
.
createTime
}}
</div>
</div>
<div
v-if=
"state"
>
<div
v-html=
" detail.content "
></div>
<div
class=
"enclosure flex-item"
>
<div
style=
"margin-right: 30px"
>
相关附件
</div>
<div
v-if=
"detail.accessoryDOList"
>
<ul>
<li
v-for=
"(item, i) in detail.accessoryDOList"
:key=
"i"
>
<a
href=
"item.accessoryUrl"
>
{{
item
.
fileName
}}
</a>
</li>
</ul>
</div>
<div
v-else
>
空
</div>
</div>
</div>
<div
v-else
>
{{
msg
}}
</div>
<div
class=
"centerButton"
>
<el-button
@
click=
"back"
>
返回
</el-button>
</div>
</div>
</div>
<div
class=
"content"
>
<div
class=
"flex-arround"
>
<div>
项目编号:
{{
projectCode
}}
</div>
<div>
项目名称:
{{
projectName
}}
</div>
<div>
发布时间:2020-08-08 18:12
</div>
</div>
<h1>
一级标题
</h1>
<div
class=
"img"
>
<img
src=
"@static/images/content.png"
alt=
""
>
</div>
<div
class=
"enclosure"
>
相关附件:34567890-678.pdf
</div>
<div
class=
"centerButton"
>
<el-button
@
click=
"back"
>
返回
</el-button>
</div>
</div>
</div>
</
template
>
<
script
>
import
{
publicitydetail
}
from
'@api/supply/bid'
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
import
{
cadidate
}
from
'@api/supply/bid'
;
import
dataBreadcrumb
from
'@components/dataBreadcrumb.vue'
;
export
default
{
components
:
{
dataBreadcrumb
,
},
data
()
{
return
{
breads
:
[
'投标管理 '
,
'我参加的项目'
,
'工作台'
],
projectCode
:
""
,
projectName
:
""
components
:
{
dataBreadcrumb
},
data
()
{
return
{
breads
:
[
'投标管理 '
,
'我参加的项目'
,
'工作台'
],
projectCode
:
''
,
projectName
:
''
,
detail
:
''
,
msg
:
''
,
state
:
true
};
},
methods
:
{
back
()
{
this
.
$router
.
go
(
-
1
);
},
async
getcadidate
()
{
let
projectId
=
localStorage
.
getItem
(
'projectId'
);
const
{
data
,
code
,
msg
}
=
await
cadidate
(
projectId
);
if
(
code
==
200
)
{
this
.
detail
=
data
;
}
else
{
this
.
msg
=
msg
;
this
.
state
=
false
;
}
}
},
created
()
{
this
.
projectCode
=
localStorage
.
getItem
(
'projectCode'
);
this
.
projectName
=
localStorage
.
getItem
(
'projectName'
);
this
.
getcadidate
();
}
},
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
>
<
style
scoped
>
.content
>
h1
{
text-align
:
center
;
margin-top
:
20px
;
margin-bottom
:
40px
;
font-weight
:
bold
;
}
.content
>
.img
{
width
:
600px
;
margin
:
0
auto
}
.enclosure
{
margin
:
20px
0
;
}
.content
>
h1
{
text-align
:
center
;
margin-top
:
20px
;
margin-bottom
:
40px
;
font-weight
:
bold
;
}
.content
>
.img
{
width
:
600px
;
margin
:
0
auto
;
}
.enclosure
{
margin
:
20px
0
;
}
</
style
>
src/router/index.js
View file @
f35e9be1
...
...
@@ -721,6 +721,11 @@ export default new Router({
show
:
true
,
component
:
()
=>
import
(
'../pages/supply/bid/joinProject/bidEvaluation/evaluationList.vue'
)
},
{
path
:
'/supply/bid/joinProject/bidEvaluation/hallInformation'
,
show
:
true
,
component
:
()
=>
import
(
'../pages/supply/bid/joinProject/bidEvaluation/hallInformation.vue'
)
},
{
path
:
'/supply/bid/joinProject/bidEvaluation/reply'
,
show
:
true
,
...
...
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