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
6b1656ac
Commit
6b1656ac
authored
Oct 26, 2020
by
张冬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
采购项目查看和编辑
parent
17a88754
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
489 additions
and
409 deletions
+489
-409
common.css
src/common/common.css
+3
-0
specialUpload.vue
src/components/Upload/specialUpload.vue
+181
-175
editProject.vue
src/pages/purchaser/bid/editProject/editProject.vue
+33
-2
fileUpload.vue
src/pages/purchaser/bid/editProject/fileUpload.vue
+3
-11
message.vue
src/pages/purchaser/bid/editProject/message.vue
+1
-16
timeSet.vue
src/pages/purchaser/bid/editProject/timeSet.vue
+0
-7
bidInvitation.vue
src/pages/purchaser/bid/reviewed/bidInvitation.vue
+46
-47
tenderAnnouncement.vue
src/pages/purchaser/bid/reviewed/tenderAnnouncement.vue
+179
-124
fileUpload.vue
src/pages/purchaser/bid/seeProject/fileUpload.vue
+37
-8
message.vue
src/pages/purchaser/bid/seeProject/message.vue
+4
-19
seeProject.vue
src/pages/purchaser/bid/seeProject/seeProject.vue
+2
-0
No files found.
src/common/common.css
View file @
6b1656ac
...
...
@@ -9,8 +9,11 @@ html {
}
a
{
color
:
#FF5203
!important
;
text-decoration
:
none
;
}
a
:hover
{
color
:
rgb
(
51
,
218
,
193
)
!important
}
button
{
border
:
none
...
...
src/components/Upload/specialUpload.vue
View file @
6b1656ac
<
template
>
<div
class=
"hello"
>
<div
style=
"width: 100%;"
>
<el-upload
:http-request=
"handleUpload"
:before-remove=
"beforeRemove"
:limit=
"limit"
:accept=
"accept"
:show-file-list=
"false"
:on-remove=
"handleRemove"
class=
"upload-demo"
action
multiple
>
<el-button
size=
"small"
type=
"primary"
>
点击上传
</el-button>
<div
slot=
"tip"
class=
"el-upload__tip"
>
{{
tip
}}
</div>
</el-upload>
<div
class=
"hello"
>
<div
style=
"width: 100%"
>
<el-upload
:http-request=
"handleUpload"
:before-remove=
"beforeRemove"
:limit=
"limit"
:accept=
"accept"
:show-file-list=
"false"
:on-remove=
"handleRemove"
class=
"upload-demo"
action
multiple
>
<el-button
size=
"small"
type=
"primary"
>
点击上传
</el-button>
<div
slot=
"tip"
class=
"el-upload__tip"
>
{{
tip
}}
</div>
</el-upload>
</div>
<div
style=
"width: 100%"
>
<dataTable
:table-data=
"fileList"
:columns=
"columns"
:is-pageobj=
"false"
>
<el-table-column
slot=
"operate"
label=
"文件大小"
align=
"center"
fixed=
"right"
width=
"300"
>
<template
slot-scope=
"scope"
>
<div>
{{
getMb
(
scope
.
row
.
size
)
}}
KB
</div>
</
template
>
</el-table-column>
<el-table-column
slot=
"operate"
label=
"价格"
align=
"center"
fixed=
"right"
width=
"300"
v-if=
"type == 0"
>
<
template
slot-scope=
"scope"
>
<el-radio-group
v-model=
"scope.row.free"
>
<el-radio
:label=
"true"
>
免费
</el-radio>
<el-radio
:label=
"false"
>
收费
</el-radio>
<el-input-number
v-model=
"scope.row.price"
v-show=
"scope.row.free == false"
:min=
"0"
:controls=
"false"
:precision=
"2"
placeholder=
"价格(元)"
></el-input-number>
</el-radio-group>
</
template
>
</el-table-column>
<el-table-column
slot=
"operate"
label=
"操作"
align=
"center"
fixed=
"right"
width=
"100"
>
<
template
slot-scope=
"scope"
>
<el-button
type=
"text"
size=
"small"
@
click=
"handleDelete(scope.$index)"
>
删除
</el-button>
</
template
>
</el-table-column>
</dataTable>
</div>
</div>
<div
style=
"width: 100%;"
>
<dataTable
:table-data=
"fileList"
:columns=
"columns"
:is-pageobj=
"false"
>
<el-table-column
slot=
"operate"
label=
"文件大小"
align=
"center"
fixed=
"right"
width=
"300"
>
<template
slot-scope=
"scope"
>
<div>
{{
getMb
(
scope
.
row
.
size
)
}}
KB
</div>
</
template
>
</el-table-column>
<el-table-column
slot=
"operate"
label=
"价格"
align=
"center"
fixed=
"right"
width=
"300"
v-if=
"type==0"
>
<
template
slot-scope=
"scope"
>
<el-radio-group
v-model=
"scope.row.free"
>
<el-radio
:label=
"true"
>
免费
</el-radio>
<el-radio
:label=
"false"
>
收费
</el-radio>
<el-input-number
v-model=
"scope.row.price"
v-show=
"scope.row.free==false"
:min=
"0"
:controls=
"false"
:precision=
"2"
placeholder=
"价格(元)"
></el-input-number>
</el-radio-group>
</
template
>
</el-table-column>
<el-table-column
slot=
"operate"
label=
"操作"
align=
"center"
fixed=
"right"
width=
"100"
>
<
template
slot-scope=
"scope"
>
<el-button
type=
"text"
size=
"small"
@
click=
"handleDelete(scope.$index)"
>
删除
</el-button>
</
template
>
</el-table-column>
</dataTable>
</div>
</div>
</template>
<
script
>
import
dataTable
from
'@components/nopageTable.vue'
import
{
put
,
getFileNameUUID
}
from
'@api/ali-oss'
import
{
getTime
,
getcurrentTime
}
from
'@utils/time'
import
dataTable
from
'@components/nopageTable.vue'
;
import
{
put
,
getFileNameUUID
}
from
'@api/ali-oss'
;
import
{
getTime
,
getcurrentTime
}
from
'@utils/time'
;
export
default
{
components
:
{
dataTable
},
props
:
{
type
:{
type
:
Number
,
default
:
0
},
accept
:
{
type
:
String
,
default
:
'.pdf,.jpg,.jpeg,.zip,.rar,.doc,.docx'
},
tip
:
{
type
:
String
,
default
:
'上传大小不能超过100M'
},
limit
:
{
type
:
Number
,
default
:
3
},
action
:
{
type
:
String
,
default
:
''
components
:
{
dataTable
},
headers
:
{
type
:
Object
,
default
:
()
=>
{}
props
:
{
type
:
{
type
:
Number
,
default
:
0
},
accept
:
{
type
:
String
,
default
:
'.pdf,.jpg,.jpeg,.zip,.rar,.doc,.docx'
},
tip
:
{
type
:
String
,
default
:
'上传大小不能超过100M'
},
limit
:
{
type
:
Number
,
default
:
3
},
action
:
{
type
:
String
,
default
:
''
},
headers
:
{
type
:
Object
,
default
:
()
=>
{}
},
name
:
{
type
:
String
,
default
:
''
},
listType
:
{
type
:
String
,
default
:
'text'
},
max
:
{
type
:
Number
,
default
:
99
},
fileList
:
{
type
:
Array
,
default
:
()
=>
[]
},
},
name
:
{
type
:
String
,
default
:
''
},
listType
:
{
type
:
String
,
default
:
'text'
},
max
:
{
type
:
Number
,
default
:
99
}
},
data
()
{
return
{
fileList
:
[],
tableData
:
[],
columns
:
[{
label
:
'文件名称'
,
prop
:
'name'
},
{
label
:
'上传时间'
,
prop
:
'time'
},
{
slot
:
'operate'
}
]
}
},
created
()
{
console
.
log
(
this
.
type
)
},
methods
:
{
getMb
(
size
){
let
sieze1
=
size
/
1024
let
integer
=
sieze1
.
toFixed
(
0
)
return
integer
},
emitInput
(
fileList
)
{
let
value
=
[]
for
(
let
i
=
0
;
i
<
fileList
.
length
;
i
++
)
{
let
message
=
{}
message
.
name
=
fileList
[
0
].
name
message
.
size
=
fileList
[
0
].
size
message
.
time
=
fileList
[
0
].
time
message
.
url
=
fileList
[
0
].
url
value
.
push
(
message
)
}
this
.
$emit
(
'input'
,
value
)
},
beforeUpload
(
file
)
{
const
max
=
this
.
max
const
isLt2M
=
file
.
size
/
1024
/
1024
<
max
if
(
!
isLt2M
)
{
this
.
$message
.
error
(
`上传附件大小不能超过
${
max
}
MB!`
)
}
return
isLt2M
},
handleRemove
(
file
,
fileList
,
index
)
{
console
.
log
(
fileList
)
this
.
$emit
(
'on-remove'
,
file
,
fileList
)
this
.
fileList
=
fileList
this
.
emitInput
(
fileList
)
},
// handleExceed(files, fileList) {
// this.$message.warning(`每次只能上传 ${this.limit} 个文件`)
// },
beforeRemove
(
file
,
fileList
)
{
return
this
.
$confirm
(
`确定移除
${
file
.
name
}
?`
)
data
()
{
return
{
tableData
:
[],
columns
:
[
{
label
:
'文件名称'
,
prop
:
'name'
},
{
label
:
'上传时间'
,
prop
:
'createTime'
},
{
slot
:
'operate'
}
]
};
},
/**
* 自定义上传方法
*/
handleUpload
(
option
)
{
const
max
=
this
.
max
const
isLt2M
=
option
.
file
.
size
/
1024
/
1024
<
max
if
(
isLt2M
)
{
// 生成的文件名称
let
objName
=
getFileNameUUID
()
// 调用 ali-oss 中的方法
console
.
log
(
option
)
put
(
`
${
objName
}${
option
.
file
.
name
}
`
,
option
.
file
).
then
(
res
=>
{
res
.
size
=
option
.
file
.
size
res
.
uploadTime
=
getcurrentTime
()
res
.
time
=
getTime
()
res
.
free
=
true
res
.
price
=
''
// /* res.fileName = res.name */
res
.
fileName
=
option
.
file
.
name
res
.
fileUrl
=
res
.
url
this
.
fileList
.
push
(
res
)
this
.
$emit
(
'input'
,
this
.
fileList
)
})
}
created
()
{
console
.
log
(
this
.
type
);
},
handleDelete
(
index
)
{
this
.
fileList
.
splice
(
index
,
1
)
this
.
$emit
(
'input'
,
this
.
fileList
)
methods
:
{
getMb
(
size
)
{
let
sieze1
=
size
/
1024
;
let
integer
=
sieze1
.
toFixed
(
0
);
return
integer
;
},
emitInput
(
fileList
)
{
let
value
=
[];
for
(
let
i
=
0
;
i
<
fileList
.
length
;
i
++
)
{
let
message
=
{};
message
.
name
=
fileList
[
0
].
name
;
message
.
size
=
fileList
[
0
].
size
;
message
.
createTime
=
fileList
[
0
].
time
;
message
.
url
=
fileList
[
0
].
url
;
value
.
push
(
message
);
}
this
.
$emit
(
'input'
,
value
);
},
beforeUpload
(
file
)
{
const
max
=
this
.
max
;
const
isLt2M
=
file
.
size
/
1024
/
1024
<
max
;
if
(
!
isLt2M
)
{
this
.
$message
.
error
(
`上传附件大小不能超过
${
max
}
MB!`
);
}
return
isLt2M
;
},
handleRemove
(
file
,
fileList
,
index
)
{
console
.
log
(
fileList
);
this
.
$emit
(
'on-remove'
,
file
,
fileList
);
this
.
fileList
=
fileList
;
this
.
emitInput
(
fileList
);
},
// handleExceed(files, fileList) {
// this.$message.warning(`每次只能上传 ${this.limit} 个文件`)
// },
beforeRemove
(
file
,
fileList
)
{
return
this
.
$confirm
(
`确定移除
${
file
.
name
}
?`
);
},
/**
* 自定义上传方法
*/
handleUpload
(
option
)
{
const
max
=
this
.
max
;
const
isLt2M
=
option
.
file
.
size
/
1024
/
1024
<
max
;
if
(
isLt2M
)
{
// 生成的文件名称
let
objName
=
getFileNameUUID
();
// 调用 ali-oss 中的方法
console
.
log
(
option
);
put
(
`
${
objName
}${
option
.
file
.
name
}
`
,
option
.
file
).
then
((
res
)
=>
{
res
.
size
=
option
.
file
.
size
;
res
.
uploadTime
=
getcurrentTime
();
res
.
time
=
getTime
();
res
.
free
=
true
;
res
.
price
=
''
;
// /* res.fileName = res.name */
res
.
fileName
=
option
.
file
.
name
;
res
.
fileUrl
=
res
.
url
;
this
.
fileList
.
push
(
res
);
this
.
$emit
(
'input'
,
this
.
fileList
);
});
}
},
handleDelete
(
index
)
{
this
.
fileList
.
splice
(
index
,
1
);
this
.
$emit
(
'input'
,
this
.
fileList
);
}
}
}
}
};
</
script
>
<!-- Add "scoped" attribute to limit CSS to this component only -->
...
...
src/pages/purchaser/bid/editProject/editProject.vue
View file @
6b1656ac
...
...
@@ -24,7 +24,7 @@
</div>
<!-- 招标文件上传 -->
<div
class=
"fileUpload"
>
<fileUpload
ref=
"fileUpload"
:
detail
=
"detail"
></fileUpload>
<fileUpload
ref=
"fileUpload"
:
ruleForm
=
"detail"
></fileUpload>
</div>
</div>
<div
class=
"centerButton"
>
...
...
@@ -34,6 +34,7 @@
</
template
>
<
script
>
import
{
editProject
}
from
'@api/purchaser/bid'
;
import
{
getTime1
}
from
'@utils/time'
;
import
{
projectdetail
}
from
'@api/supply/bid'
;
import
messaage
from
'./message.vue'
;
...
...
@@ -65,7 +66,19 @@ export default {
await
this
.
$refs
.
timeSet
.
next
();
await
this
.
$refs
.
fileUpload
.
next
();
console
.
log
(
'通过'
);
console
.
log
(
this
.
detail
);
const
{
msg
,
code
}
=
await
editProject
(
this
.
detail
);
if
(
code
==
200
)
{
this
.
$message
({
message
:
msg
,
type
:
'success'
,
duration
:
1500
});
setTimeout
(()
=>
{
this
.
$router
.
go
(
-
1
)
},
1500
);
}
else
{
this
.
$message
.
error
(
msg
);
}
},
// 获取详情
async
getenquiryProjectId
()
{
...
...
@@ -77,6 +90,24 @@ export default {
data
.
createTime
=
data
.
createTime
.
substring
(
0
,
10
);
data
.
bidBookInfoPO
=
data
.
bidBookInfoDO
;
data
.
earnestInfoPO
=
data
.
earnestInfoDO
;
let
userInfo
=
JSON
.
parse
(
localStorage
.
getItem
(
'userInfo'
));
data
.
purchaseAgent
=
userInfo
.
companyName
;
for
(
let
item
of
data
.
accessoryDOList
)
{
item
.
url
=
item
.
accessoryUrl
;
item
.
name
=
item
.
fileName
;
}
let
bidBookPO
=
[];
bidBookPO
.
push
(
data
.
bidBookPO
);
data
.
bidBookPO
=
bidBookPO
;
for
(
let
item
of
data
.
bidBookPO
)
{
item
.
url
=
item
.
fileUrl
;
item
.
name
=
item
.
fileName
;
}
for
(
let
item
of
data
.
bidBookAccessoryPOList
)
{
item
.
url
=
item
.
fileUrl
;
item
.
name
=
item
.
fileName
;
}
console
.
log
(
data
);
this
.
detail
=
data
;
}
}
...
...
src/pages/purchaser/bid/editProject/fileUpload.vue
View file @
6b1656ac
...
...
@@ -5,10 +5,10 @@
<div
class=
"details"
>
<el-form
ref=
"ruleForm"
:model=
"ruleForm"
:rules=
"rules"
label-width=
"100px"
class=
"demo-ruleForm"
>
<el-form-item
label=
"上传附件"
prop=
"file"
>
<upload
:limit=
"1"
accept=
".pdf"
tip=
"请上传一个招标文件(pdf),不要超过50M。"
:max=
"50"
@
input=
"getfile"
></upload>
<upload
:limit=
"1"
accept=
".pdf"
tip=
"请上传一个招标文件(pdf),不要超过50M。"
:max=
"50"
@
input=
"getfile"
:fileList=
"ruleForm.bidBookPO"
></upload>
</el-form-item>
<el-form-item
label=
"其他附件"
>
<upload
:limit=
"5"
tip=
"最多上传五个附件,单个不超过100M。"
:type=
"1"
:max=
"100"
@
input=
"getfile1"
>
</upload>
<upload
:limit=
"5"
tip=
"最多上传五个附件,单个不超过100M。"
:type=
"1"
:max=
"100"
@
input=
"getfile1"
:fileList=
"ruleForm.bidBookAccessoryPOList"
>
</upload>
</el-form-item>
</el-form>
</div>
...
...
@@ -24,7 +24,7 @@ export default {
upload
},
props
:
{
all
Form
:
{
rule
Form
:
{
type
:
Object
,
default
()
{
return
{};
...
...
@@ -41,11 +41,6 @@ export default {
}
};
return
{
ruleForm
:
{
bidBookPO
:
[],
bidBookAccessoryPOList
:
[]
},
fileList
:
[],
rules
:
{
file
:
[
{
...
...
@@ -64,9 +59,6 @@ export default {
getfile1
(
val
)
{
this
.
ruleForm
.
bidBookAccessoryPOList
=
val
;
},
async
next
()
{
const
valid
=
await
this
.
$refs
[
'ruleForm'
].
validate
();
}
}
};
</
script
>
...
...
src/pages/purchaser/bid/editProject/message.vue
View file @
6b1656ac
...
...
@@ -197,7 +197,7 @@
</el-input>
</el-form-item>
<el-form-item
label=
"附件:"
prop=
"file"
>
<upload
:tip=
"tip"
:limit=
"20"
:max=
"25"
accept=
".PDF,.JPG,.JPEG,.ZIP,.RAR"
@
input=
"getfile"
></upload>
<upload
:tip=
"tip"
:limit=
"20"
:max=
"25"
accept=
".PDF,.JPG,.JPEG,.ZIP,.RAR"
@
input=
"getfile"
:fileList=
"ruleForm.accessoryDOList"
></upload>
</el-form-item>
</el-form>
</div>
...
...
@@ -509,21 +509,6 @@ export default {
computed
:
{},
created
()
{
// 默认操作
let
userInfo
=
JSON
.
parse
(
localStorage
.
getItem
(
'userInfo'
));
this
.
ruleForm
.
purchaseAgent
=
userInfo
.
companyName
;
let
phone
=
userInfo
.
phone
;
this
.
ruleForm
.
projectManager
=
userInfo
.
userId
;
this
.
ruleForm
.
contactsWay
=
phone
;
this
.
bidBookInfoPO
.
phone
=
phone
;
this
.
earnestInfoPO
.
phone
=
phone
;
this
.
ruleForm
.
contacts
=
userInfo
.
name
;
this
.
pageObj
.
companyId
=
localStorage
.
getItem
(
'companyId'
);
this
.
bidBookInfoPO
.
account
=
userInfo
.
bankAccount
;
this
.
bidBookInfoPO
.
bank
=
userInfo
.
bankName
;
this
.
bidBookInfoPO
.
accountName
=
userInfo
.
bankAccountName
;
this
.
earnestInfoPO
.
account
=
userInfo
.
bankAccount
;
this
.
earnestInfoPO
.
bank
=
userInfo
.
bankName
;
this
.
earnestInfoPO
.
userName
=
userInfo
.
bankAccountName
;
this
.
userList
();
this
.
industryList
();
this
.
projectClassifyList
();
...
...
src/pages/purchaser/bid/editProject/timeSet.vue
View file @
6b1656ac
...
...
@@ -108,13 +108,6 @@ export default {
}
};
return
{
ruleForm
:
{
releaseTime
:
''
,
startTime
:
''
,
endTime
:
''
,
answerQuestionEndTime
:
''
,
openBidStartTime
:
''
},
rules
:
{
releaseTime
:
[
{
...
...
src/pages/purchaser/bid/reviewed/bidInvitation.vue
View file @
6b1656ac
...
...
@@ -2,11 +2,11 @@
<div>
<div
class=
"content-head"
>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<h3>
{{
type
==
1
?
"编辑"
:
"发布"
}}
投标邀请书
</h3>
<h5>
{{
type
==
1
?
"编辑"
:
"发布"
}}
投标邀请书
</h5>
<div
v-if=
"type == 1"
class=
"abs"
>
<h3>
发布
投标邀请书
</h3>
<h5>
发布
投标邀请书
</h5>
<
!--
<
div
v-if=
"type == 1"
class=
"abs"
>
<div>
拒绝原因:
{{
ruleForm
.
reason
}}
</div>
</div>
</div>
-->
</div>
<div
class=
"content"
>
<div
class=
"describe"
>
投标邀请书
</div>
...
...
@@ -27,8 +27,7 @@
</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>
<el-button
type=
"primary"
@
click=
"submit"
>
提交审核
</el-button>
</div>
</div>
</
template
>
...
...
@@ -78,11 +77,11 @@ export default {
};
},
created
()
{
let
type
=
this
.
$route
.
query
.
type
;
this
.
type
=
type
;
if
(
type
==
1
)
{
this
.
getbiddingProjectId
();
}
//
let type = this.$route.query.type;
//
this.type = type;
//
if (type == 1) {
//
this.getbiddingProjectId();
//
}
},
methods
:
{
cancel
()
{
...
...
@@ -94,17 +93,17 @@ export default {
}
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 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
;
...
...
@@ -128,31 +127,31 @@ export default {
}
},
//提交表单
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
);
}
}
//
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);
//
}
//
}
}
};
</
script
>
...
...
src/pages/purchaser/bid/reviewed/tenderAnnouncement.vue
View file @
6b1656ac
<
template
>
<div>
<div
class=
"content-head"
>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<h3>
发布招标公告
</h3>
<h5>
发布招标公告
</h5>
<div>
<div
class=
"content-head"
>
<dataBreadcrumb
:breads=
"breads"
></dataBreadcrumb>
<h3>
{{
type
==
1
?
'编辑'
:
'发布'
}}
招标公告
</h3>
<h5>
{{
type
==
1
?
'编辑'
:
'发布'
}}
招标公告
</h5>
<div
v-if=
"type == 1"
class=
"abs"
>
<div>
拒绝原因:
{{
ruleForm
.
reason
}}
</div>
</div>
</div>
<div
class=
"content"
>
<div
class=
"describe"
>
招标公告
</div>
<div
class=
"form"
>
<el-form
ref=
"ruleForm"
:model=
"ruleForm"
:rules=
"rules"
label-width=
"100px"
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"
:fileList=
"ruleForm.accessoryPOList"
></singleUpload>
</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-form>
</div>
</div>
<div
class=
"bottomButton"
>
<el-button
@
click=
"back"
>
取消
</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=
"100px"
class=
"demo-ruleForm"
>
<el-form-item
label=
"公告标题"
prop=
"title"
><strong></strong>
<el-input
v-model
.
trim=
"ruleForm.title"
maxlength=
"30"
></el-input>
</el-form-item>
<el-form-item
label=
"上传附件"
><strong></strong>
<singleUpload
tip=
"支持扩展名:.rar .zip .doc .docx .pdf .jpg..."
@
input=
"getfile"
></singleUpload>
</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-form>
</div>
</div>
<div
class=
"bottomButton"
>
<el-button
@
click=
"back"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"submit"
>
提交审核
</el-button>
</div>
</div>
</
template
>
<
script
>
import
{
bidMessage
}
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
{
biddingProjectId
,
projectDetail
}
from
'@api/common/list'
;
import
{
bidMessage
,
editBidding
}
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'
;
export
default
{
components
:
{
dataBreadcrumb
,
singleUpload
,
quillEditor
},
data
()
{
// 检测文件是否上传
let
checkupload
=
(
rule
,
value
,
callback
)
=>
{
if
(
this
.
justimg
.
length
===
0
)
{
callback
(
new
Error
(
'请上传正面照片'
))
}
else
{
callback
()
}
}
return
{
accessoryPOList
:
[],
editorOption
:
{},
breads
:
[
'招标管理'
,
'招标项目管理'
,
'工作台'
],
ruleForm
:
{
title
:
''
,
content
:
''
},
rules
:
{
title
:
[{
required
:
true
,
message
:
'请填写'
,
trigger
:
'blue'
}],
content
:
[{
required
:
true
,
message
:
'请填写'
,
trigger
:
'blue'
}]
}
}
},
methods
:
{
back
(){
this
.
$router
.
go
(
-
1
)
}
,
cancel
()
{
this
.
$router
.
go
(
-
1
)
components
:
{
dataBreadcrumb
,
singleUpload
,
quillEditor
},
data
()
{
// 检测文件是否上传
let
checkupload
=
(
rule
,
value
,
callback
)
=>
{
if
(
this
.
justimg
.
length
===
0
)
{
callback
(
new
Error
(
'请上传正面照片'
));
}
else
{
callback
();
}
};
return
{
accessoryPOList
:
[],
editorOption
:
{},
breads
:
[
'招标管理'
,
'招标项目管理'
,
'工作台'
],
ruleForm
:
{
title
:
''
,
content
:
''
},
rules
:
{
title
:
[
{
required
:
true
,
message
:
'请填写'
,
trigger
:
'blue'
}
]
,
content
:
[
{
required
:
true
,
message
:
'请填写'
,
trigger
:
'blue'
}
]
},
projectCode
:
''
,
projectName
:
''
,
type
:
''
};
},
getfile
(
val
)
{
for
(
let
item
of
val
)
{
item
.
accessoryUrl
=
item
.
fileUrl
}
this
.
accessoryPOList
=
val
created
()
{
let
type
=
this
.
$route
.
query
.
type
;
this
.
type
=
type
;
if
(
type
==
1
)
{
this
.
getbiddingProjectId
();
}
this
.
projectCode
=
localStorage
.
getItem
(
'projectCode'
);
this
.
projectName
=
localStorage
.
getItem
(
'projectName'
);
},
//提交表单
async
submit
()
{
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
bidMessage
(
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
)
}
methods
:
{
back
()
{
this
.
$router
.
go
(
-
1
);
},
cancel
()
{
this
.
$router
.
go
(
-
1
);
},
getfile
(
val
)
{
for
(
let
item
of
val
)
{
item
.
accessoryUrl
=
item
.
fileUrl
;
}
this
.
accessoryPOList
=
val
;
},
// 获取详情
async
getbiddingProjectId
()
{
let
projectId
=
localStorage
.
getItem
(
'projectId'
);
const
{
data
,
code
,
msg
}
=
await
biddingProjectId
(
projectId
);
if
(
code
==
200
)
{
data
.
accessoryPOList
=
data
.
accessoryVOList
;
for
(
let
item
of
data
.
accessoryPOList
)
{
item
.
name
=
item
.
fileName
;
item
.
url
=
item
.
accessoryUrl
;
}
this
.
ruleForm
=
data
;
}
},
//提交表单
async
submit
()
{
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
bidMessage
(
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
);
}
},
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
;
}
.bottomButton
{
margin-top
:
20px
;
}
.form
{
padding-bottom
:
80px
;
}
.ql-editor
{
height
:
400px
;
}
.bottomButton
{
margin-top
:
20px
;
}
.form
{
padding-bottom
:
80px
;
}
</
style
>
src/pages/purchaser/bid/seeProject/fileUpload.vue
View file @
6b1656ac
...
...
@@ -5,10 +5,27 @@
<div
class=
"details"
>
<el-form
ref=
"ruleForm"
:model=
"ruleForm"
:rules=
"rules"
label-width=
"100px"
class=
"demo-ruleForm"
>
<el-form-item
label=
"上传附件"
prop=
"file"
>
<upload
:limit=
"1"
accept=
".pdf"
tip=
"请上传一个招标文件(pdf),不要超过50M。"
:max=
"50"
@
input=
"getfile"
></upload>
<dataTable
:table-data=
"ruleForm.bidBookDO"
:columns=
"columns"
:is-pageobj=
"false"
>
<el-table-column
slot=
"operate"
label=
"文件大小"
align=
"center"
fixed=
"right"
width=
"300"
>
<template
slot-scope=
"scope"
>
<div>
{{
getMb
(
scope
.
row
.
size
)
}}
KB
</div>
</
template
>
</el-table-column>
<el-table-column
slot=
"operate"
label=
"价格"
align=
"center"
fixed=
"right"
width=
"300"
>
<
template
slot-scope=
"scope"
>
<div>
{{
scope
.
row
.
free
?
scope
.
row
.
free
:
'无'
}}
</div>
</
template
>
</el-table-column>
</dataTable>
</el-form-item>
<el-form-item
label=
"其他附件"
>
<upload
:limit=
"5"
tip=
"最多上传五个附件,单个不超过100M。"
:type=
"1"
:max=
"100"
@
input=
"getfile1"
>
</upload>
<el-form-item
label=
"其他附件"
>
<dataTable
:table-data=
"ruleForm.bidBookAccessoryDO"
:columns=
"columns"
:is-pageobj=
"false"
>
<el-table-column
slot=
"operate"
label=
"文件大小"
align=
"center"
fixed=
"right"
width=
"300"
>
<
template
slot-scope=
"scope"
>
<div>
{{
getMb
(
scope
.
row
.
size
)
}}
KB
</div>
</
template
>
</el-table-column>
</dataTable>
</el-form-item>
</el-form>
</div>
...
...
@@ -17,11 +34,12 @@
</template>
<
script
>
import
{
creatProject
}
from
'@api/purchaser/bid'
;
import
dataTable
from
'@components/nopageTable.vue'
import
upload
from
'@components/Upload/specialUpload.vue'
;
export
default
{
components
:
{
upload
upload
,
dataTable
},
props
:
{
allForm
:
{
...
...
@@ -41,6 +59,20 @@ export default {
}
};
return
{
columns
:
[
{
label
:
'文件名称'
,
prop
:
'name'
},
{
label
:
'上传时间'
,
prop
:
'time'
},
{
slot
:
'operate'
}
],
ruleForm
:
{
bidBookPO
:
[],
bidBookAccessoryPOList
:
[]
...
...
@@ -64,9 +96,6 @@ export default {
getfile1
(
val
)
{
this
.
ruleForm
.
bidBookAccessoryPOList
=
val
;
},
async
next
()
{
const
valid
=
await
this
.
$refs
[
'ruleForm'
].
validate
();
}
}
};
</
script
>
...
...
src/pages/purchaser/bid/seeProject/message.vue
View file @
6b1656ac
...
...
@@ -195,11 +195,12 @@
</el-input>
</el-form-item>
<el-form-item
label=
"附件:"
prop=
"file"
>
<ul>
<li>
<a
href=
""
>
</a>
<ul
v-if=
'ruleForm.accessoryDOList!==undefined && ruleForm.accessoryDOList.length>0'
>
<li
v-for=
"(item,i) in ruleForm.accessoryDOList"
:key=
"i"
>
<a
:href=
"item.accessoryUrl"
>
{{
item
.
fileName
}}
</a>
</li>
</ul>
<div
v-else
>
无
</div>
</el-form-item>
</el-form>
</div>
...
...
@@ -517,22 +518,6 @@ export default {
// },
computed
:
{},
created
()
{
// 默认操作
// let userInfo = JSON.parse(localStorage.getItem('userInfo'));
// this.ruleForm.purchaseAgent = userInfo.companyName;
// let phone = userInfo.phone;
// this.ruleForm.projectManager = userInfo.userId;
// this.ruleForm.contactsWay = phone;
// this.bidBookInfoPO.phone = phone;
// this.earnestInfoPO.phone = phone;
// this.ruleForm.contacts = userInfo.name;
// this.pageObj.companyId = localStorage.getItem('companyId');
// this.bidBookInfoPO.account = userInfo.bankAccount;
// this.bidBookInfoPO.bank = userInfo.bankName;
// this.bidBookInfoPO.accountName = userInfo.bankAccountName;
// this.earnestInfoPO.account = userInfo.bankAccount;
// this.earnestInfoPO.bank = userInfo.bankName;
// this.earnestInfoPO.userName = userInfo.bankAccountName;
this
.
userList
();
this
.
industryList
();
this
.
projectClassifyList
();
...
...
src/pages/purchaser/bid/seeProject/seeProject.vue
View file @
6b1656ac
...
...
@@ -73,6 +73,8 @@ export default {
data
.
createTime
=
data
.
createTime
.
substring
(
0
,
10
);
data
.
bidBookInfoPO
=
data
.
bidBookInfoDO
data
.
earnestInfoPO
=
data
.
earnestInfoDO
let
userInfo
=
JSON
.
parse
(
localStorage
.
getItem
(
"userInfo"
))
data
.
purchaseAgent
=
userInfo
.
companyName
this
.
detail
=
data
;
}
}
...
...
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