Commit c3742962 authored by 张冬's avatar 张冬

对接联调

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