Commit 861ae640 authored by 张冬's avatar 张冬

编辑

parent a64b6047
...@@ -212,10 +212,11 @@ export function makeFile(data) { ...@@ -212,10 +212,11 @@ export function makeFile(data) {
}) })
} }
// 撤回投标文件 // 撤回投标文件
export function revocationBidbFile(bidFileId) { export function revocationBidbFile(params) {
return request({ return request({
url: `tender/revocation/bidbFile/${bidFileId}`, url: "tender/revocation/bidbFile",
method: 'put', method: 'put',
params:params
}) })
} }
......
...@@ -8,20 +8,20 @@ ...@@ -8,20 +8,20 @@
<div class="content"> <div class="content">
<div class="message"> <div class="message">
<div class="flex-between"> <div class="flex-between">
<div>项目编号:ZBXM3456789456789</div> <div>项目编号:{{projectCode}}</div>
<div>项目名称:大楼翻新</div> <div>项目名称:{{projectName}}</div>
</div> </div>
<div class="flex"> <div class="flex">
<div class="adjustment"> 评价报告</div> <div class="adjustment">评价报告</div>
<Upload :limit="1" :max="100" tip="最多上传一个文件,每个文件不超过100M。" @input="getfile"></Upload> <Upload :limit="1" :max="100" tip="最多上传一个文件,每个文件不超过100M。" @input="getfile"></Upload>
</div> </div>
<div class="flex"> <div class="flex">
<div class="adjustment ">评标报告扫描件</div> <div class="adjustment">评标报告扫描件</div>
<Upload :limit="1" :max="100" tip="最多上传5个文件,每个文件不超过100M。" @input="getfile1"></Upload> <Upload :limit="1" :max="100" tip="最多上传5个文件,每个文件不超过100M。" @input="getfile1"></Upload>
</div> </div>
<div class="flex-center" style="margin:100px 0"> <div class="flex-center" style="margin: 100px 0">
<el-button>取消</el-button> <el-button>取消</el-button>
<el-button type="primary" style="margin-left: 20px;" @click="submitData">提交</el-button> <el-button type="primary" style="margin-left: 20px" @click="submitData">提交</el-button>
</div> </div>
</div> </div>
</div> </div>
...@@ -29,10 +29,9 @@ ...@@ -29,10 +29,9 @@
</template> </template>
<script> <script>
import { bidFailed } from '@api/purchaser/bid';
import {bidFailed} from '@api/purchaser/bid' import dataBreadcrumb from '@components/dataBreadcrumb.vue';
import dataBreadcrumb from '@components/dataBreadcrumb.vue' import Upload from '@components/Upload/Upload.vue';
import Upload from '@components/Upload/Upload.vue'
export default { export default {
components: { components: {
dataBreadcrumb, dataBreadcrumb,
...@@ -41,67 +40,69 @@ export default { ...@@ -41,67 +40,69 @@ export default {
data() { data() {
return { return {
breads: ['招标管理', '招标项目管理', '工作台'], breads: ['招标管理', '招标项目管理', '工作台'],
file:[], file: [],
file1:[] file1: [],
} projectName: '',
projectCode: ''
};
},
created() {
this.projectCode = localStorage.getItem('projectCode');
this.projectName = localStorage.getItem('projectName');
}, },
methods: { methods: {
// //
getfile(val){ getfile(val) {
this.file=val this.file = val;
}, },
getfile1(val){ getfile1(val) {
this.file1=val this.file1 = val;
}, },
// 提交 // 提交
async submitData() { async submitData() {
try { try {
let message={} let message = {};
let filePOList=[]; let filePOList = [];
let file=this.file; let file = this.file;
let file1=this.file1; let file1 = this.file1;
for(let item of file){ for (let item of file) {
item.type=1 item.type = 1;
}; }
for(let item1 of file1){ for (let item1 of file1) {
item1.type=2 item1.type = 2;
}; }
filePOList=file.concat(file1) filePOList = file.concat(file1);
message.filePOList=filePOList; message.filePOList = filePOList;
message.projectId=localStorage.getItem("projectId") message.projectId = localStorage.getItem('projectId');
const { const { code, msg } = await bidFailed(message);
code, if (code == 200) {
msg
} = await bidFailed(message)
if(code==200){
this.$message({ this.$message({
message: msg, message: msg,
type: 'success', type: 'success',
duration:1500 duration: 1500
}) });
setTimeout(()=>{ setTimeout(() => {
this.$router.go(-1) this.$router.go(-1);
},1500) }, 1500);
} }
} catch (e) { } catch (e) {
console.log(e) console.log(e);
} }
} }
} }
};
}
</script> </script>
<style scoped> <style scoped>
.message{ .message {
width:50%; width: 50%;
margin:50px auto margin: 50px auto;
} }
.message>div{ .message > div {
margin-bottom: 20px; margin-bottom: 20px;
} }
.adjustment{ .adjustment {
width: 120px; width: 120px;
text-align: center; text-align: center;
} }
......
...@@ -651,6 +651,7 @@ ...@@ -651,6 +651,7 @@
// }) // })
// 监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常 // 监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常
window.onbeforeunload = function() { window.onbeforeunload = function() {
console.log("窗口关闭")
this.websocket.close() this.websocket.close()
} }
}, },
...@@ -660,22 +661,12 @@ ...@@ -660,22 +661,12 @@
this.websocket.send(content) this.websocket.send(content)
} }
}, },
// watch: {
// chatlog() {
// console.log("chatlog change");
// this.$nextTick(() => {
// var container = this.$el.querySelector("#chatContainer");
// console.log(container);
// container.scrollTop = container.scrollHeight;
// })
// // document.getElementById('chatContainer').scrollTop = document.getElementById('chatContainer').scrollHeight+150;
// }
// },
destroyed() { destroyed() {
//清除定时器 //清除定时器
clearInterval(this.timer); clearInterval(this.timer);
clearInterval(this.timer1); clearInterval(this.timer1);
console.log("定时器关闭")
this.websocket.close() this.websocket.close()
} }
} }
......
...@@ -38,6 +38,10 @@ export default { ...@@ -38,6 +38,10 @@ export default {
{ {
label: '单位名称', label: '单位名称',
prop: 'companyName' prop: 'companyName'
},
{
label: '联系人',
prop: 'contactsName'
}, },
{ {
label: '手机', label: '手机',
......
...@@ -11,15 +11,18 @@ ...@@ -11,15 +11,18 @@
</template> </template>
</el-table-column> </el-table-column>
</dataTable> </dataTable>
<div class="centerButton">
<el-button @click="back">返回</el-button>
</div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { clarifyInquirylist} from '@api/supply/bid' 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';
export default { export default {
name: 'bidingList', name: 'bidingList',
components: { components: {
...@@ -29,10 +32,11 @@ export default { ...@@ -29,10 +32,11 @@ export default {
}, },
data() { data() {
return { return {
navs:["评标问题澄清"], navs: ['评标问题澄清'],
breads: ['投标管理', '我参与的项目', '工作台 '], breads: ['投标管理', '我参与的项目', '工作台 '],
tableData: [], tableData: [],
columns: [{ columns: [
{
label: '澄清标题', label: '澄清标题',
prop: 'title' prop: 'title'
}, },
...@@ -52,49 +56,47 @@ export default { ...@@ -52,49 +56,47 @@ export default {
{ {
slot: 'operate' slot: 'operate'
} }
], // 操作列 ] // 操作列
};
}
}, },
methods: { methods: {
back() {
this.$router.go(-1);
},
reply(questionId) { reply(questionId) {
this.$router.push(`/supply/bid/joinProject/bidEvaluation/reply?questionId=${questionId}`) this.$router.push(`/supply/bid/joinProject/bidEvaluation/reply?questionId=${questionId}`);
}, },
see(row){ see(row) {
this.$router.push({ this.$router.push({
path:"/supply/bid/joinProject/bidEvaluation/see", path: '/supply/bid/joinProject/bidEvaluation/see',
query:{ query: {
questionId:row.questionId, questionId: row.questionId,
replyId:row.replyId replyId: row.replyId
} }
}) });
}, },
async getclarifyInquirylist() { async getclarifyInquirylist() {
let message={} let message = {};
message.companyId=localStorage.getItem("companyId") message.companyId = localStorage.getItem('companyId');
message.projectId=localStorage.getItem("projectId") message.projectId = localStorage.getItem('projectId');
const { const { data, code } = await clarifyInquirylist(message);
data, if (code == 200) {
code for (let item of data) {
} = await clarifyInquirylist(message) if (item.replyId) {
if(code==200){ item.state = '已回复';
for (let item of data){ } else {
if(item.replyId){ item.state = '未回复';
item.state="已回复"
}else{
item.state="未回复"
} }
} }
this.tableData=data this.tableData = data;
} }
} }
}, },
created() { created() {
this.getclarifyInquirylist(); this.getclarifyInquirylist();
} }
} };
</script> </script>
<style scoped> <style scoped>
</style> </style>
...@@ -279,46 +279,49 @@ export default { ...@@ -279,46 +279,49 @@ export default {
}, },
// websocket // websocket
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:${openUrl}/webSocket/${projectId}/${token}`); this.websocket = new WebSocket(`ws:${openUrl}/webSocket/${projectId}/${token}`)
// this.websocket = new WebSocket('ws://192.168.3.35:8085/webSocket/' + projectId + "/" + token)
// this.websocket = new WebSocket('ws://60.205.251.80:8085/webSocket/' + projectId +"/"+token )
// 连接成功时 // 连接成功时
this.websocket.onopen = () => {}; this.websocket.onopen = () => {}
this.websocket.onmessage = (event) => { this.websocket.onmessage = event => {
// 后端发送的消息在event.data中 // 后端发送的消息在event.data中
let data = JSON.parse(event.data); let data = JSON.parse(event.data);
console.log(data); console.log(data)
if (data.type == 1) { if (data.type == 1) {
if (data.userId == this.myId) { if(data.userId==this.myId){
data.mine = true; data.mine=true
} else { }else{
data.mine = false; data.mine=false
} }
const msgObj = { const msgObj = {
date: data.time, "date":data.time ,
text: { "text": {
text: data.chatContent "text": data.chatContent
}, },
mine: data.mine, "mine": data.mine,
name: data.name, "name": data.name,
img: 'http://hsz1997.oss-cn-beijing.aliyuncs.com/img/1603292025286_67c099c6tou.jpg' "img": "http://hsz1997.oss-cn-beijing.aliyuncs.com/img/1603292025286_67c099c6tou.jpg"
}; }
this.dialogueList.push(msgObj); this.dialogueList.push(msgObj)
} else { } else {
this.halList.push(data); this.halList.push(data)
}
}
this.websocket.onclose = function() {
console.log('关闭了')
} }
};
this.websocket.onclose = function () {
console.log('关闭了');
};
// 监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常
(window.onbeforeunload = function () {
this.websocket.close();
}),
// 路由跳转时结束websocket链接 // 路由跳转时结束websocket链接
this.$router.afterEach(function () { // this.$router.afterEach(function() {
this.websocket.close(); // this.websocket.close()
}); // })
// 监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常
window.onbeforeunload = function() {
console.log("窗口关闭")
this.websocket.close()
}
}, },
bindEnter() { bindEnter() {
const content = this.content; const content = this.content;
...@@ -377,7 +380,14 @@ export default { ...@@ -377,7 +380,14 @@ export default {
this.storagedecodeTime = Number(data.decodeTime); this.storagedecodeTime = Number(data.decodeTime);
this.storagesignatureTime = Number(data.signatureTime); this.storagesignatureTime = Number(data.signatureTime);
} else { } else {
this.$message.error(msg); this.$message({
message: msg,
type: 'error',
duration: 3000
})
setTimeout(() => {
this.$router.go(-1)
}, 3000)
} }
var { data, code } = await signdetail(projectId); var { data, code } = await signdetail(projectId);
if (code == 200) { if (code == 200) {
...@@ -435,6 +445,7 @@ export default { ...@@ -435,6 +445,7 @@ export default {
// }, // },
destroyed() { destroyed() {
//清除定时器 //清除定时器
clearInterval(this.timer);
clearInterval(this.timer1); clearInterval(this.timer1);
this.websocket.close(); this.websocket.close();
} }
......
...@@ -198,10 +198,13 @@ ...@@ -198,10 +198,13 @@
// 撤回 // 撤回
async withdraw() { async withdraw() {
try { try {
let message={}
message.projectId=localStorage.getItem("projectId")
message.bidFileId=this.form.bidbookId
const { const {
msg, msg,
code code
} = await revocationBidbFile(this.form.bidbookId) } = await revocationBidbFile(message)
if (code == 200) { if (code == 200) {
this.$message({ this.$message({
message: msg, message: msg,
......
...@@ -216,9 +216,9 @@ export default { ...@@ -216,9 +216,9 @@ export default {
newlabel = label; newlabel = label;
} else if (status == 1) { } else if (status == 1) {
newlabel = label; newlabel = label;
newlabel = label.replace('发布', '编辑'); newlabel = label.replace('递交', '编辑');
} else { } else {
newlabel = label.replace('发布', '查看'); newlabel = label.replace('递交', '查看');
} }
return newlabel; return newlabel;
}, },
...@@ -239,23 +239,12 @@ export default { ...@@ -239,23 +239,12 @@ export default {
for (let item2 of data) { for (let item2 of data) {
if (item1.id == item2.buttonId) { if (item1.id == item2.buttonId) {
item1.bright = true; item1.bright = true;
if (item2.buttonId == 4 && item2.status == 2) {
item1.url = '/purchaser/bid/reviewed/SeeinquiryAnnouncement';
item1.label = '查看询价公告';
} else if (item2.buttonId == 5 && item2.status == 2) {
item1.url = '/purchaser/bid/reviewed/SeetenderAnnouncement';
item1.label = '查看招标公告';
} else if (item2.buttonId == 9 && item2.status == 2) {
item1.url = '/purchaser/bid/bidStage/seeBidSet';
item1.label = '开标设置查看';
} else {
item1.url = this.geturl(item1.url, item2.status); item1.url = this.geturl(item1.url, item2.status);
item1.label = this.getlabel(item1.label, item2.status); item1.label = this.getlabel(item1.label, item2.status);
} }
} }
} }
} }
}
this.remark = data[0].remark; this.remark = data[0].remark;
} else { } else {
this.$message.error(msg); this.$message.error(msg);
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
</slot> </slot>
</priceDetail> </priceDetail>
<!-- 报价弹窗 --> <!-- 报价弹窗 -->
<el-dialog :visible.sync="dialogFormVisible" title="报价" width="50%"> <el-dialog :visible.sync="dialogFormVisible" title="报价" width="1000px">
<dataTable :table-data="commoditylist" :columns="commoditycolumns"> <dataTable :table-data="commoditylist" :columns="commoditycolumns">
<el-table-column slot="operate" label="报价" align="center" fixed="right" width="150"> <el-table-column slot="operate" label="报价" align="center" fixed="right" width="150">
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -230,4 +230,14 @@ export default { ...@@ -230,4 +230,14 @@ export default {
</script> </script>
<style scoped> <style scoped>
.el-table::before {
z-index: inherit;
}
.table-fixed>.el-table__fixed-right {
height: 100% !important;
}
</style> </style>
...@@ -5,299 +5,34 @@ ...@@ -5,299 +5,34 @@
<h3>查看</h3> <h3>查看</h3>
<div>查看基本信息、企业资质文件</div> <div>查看基本信息、企业资质文件</div>
</div> </div>
<div class="detail-list"> <companyDetail></companyDetail>
<div> <div class="bottomButton">
<h5>基本信息</h5> <el-button @click="edit">编辑</el-button>
<ul class="flex">
<li>
<div>单位名称</div>
<div>{{detail.companyName}}</div>
</li>
<li>
<div>注册角色</div>
<div>11</div>
</li>
<li>
<div>法人姓名</div>
<div>{{detail.legalPersonName}}</div>
</li>
<li>
<div>法人电话</div>
<div>11</div>
</li>
<li>
<div>统一社会信用代码</div>
<div>{{detail.socialCode}}</div>
</li>
<li>
<div>行政区域 </div>
<div>{{detail.companyName}}</div>
</li>
<li>
<div>单位性质</div>
<div>{{detail.companyNature}}</div>
</li>
<li>
<div>单位所在地</div>
<div>{{detail.location}}</div>
</li>
<li>
<div>行业类型</div>
<div>222</div>
</li>
<li>
<div>开户银行名称</div>
<div>222</div>
</li>
<li>
<div>结算账户</div>
<div>222</div>
</li>
<li>
<div>结算账户名</div>
<div>222</div>
</li>
<li>
<div>注册资本(万元)</div>
<div>{{detail.registeredCapital}}</div>
</li>
<li>
<div>联系地址</div>
<div>{{detail.contactAddress}}</div>
</li>
<li>
<div>管理员姓名</div>
<div>{{detail.companyName}}</div>
</li>
<li>
<div> 手机号 </div>
<div>{{detail.legalPersonPhone}}</div>
</li>
<li>
<div> 身份证 </div>
<div>222</div>
</li>
<li>
<div>电子邮箱 </div>
<div>{{detail.companyName}}</div>
</li>
</ul>
<div class="detail-item">
<div>经营范围</div>
<div>一般项目:技术服务,技术开发</div>
</div>
<div class="detail-item">
<div>法人身份证正反面</div>
<el-image v-for="(item,index) in imglist" :src="item.src" :key="index" style="margin-right:20px"></el-image>
</div>
<div class="detail-item">
<div>三证合一扫描件</div>
<el-image v-for="(item,index) in imglist" :src="item.src" :key="index" style="margin-right:20px"></el-image>
</div>
<div class="detail-item">
<div>其他资料</div>
<div class="flex-between pdf">
<div>pdf文件</div>
<div>预览</div>
<div>下载</div>
</div>
</div>
</div>
</div>
<div class="operation">
<button @click="edit">编辑</button>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { import companyDetail from '@components/detail/companyDetail.vue';
companyDetail import dataBreadcrumb from '@components/dataBreadcrumb.vue';
} from '@api/common/list' export default {
import dataBreadcrumb from '@components/dataBreadcrumb.vue'
export default {
components: { components: {
dataBreadcrumb dataBreadcrumb,
companyDetail
}, },
data() { data() {
return { return {
detail: "", breads: ['查看基本信息', '企业资质文件']
breads: ['查看基本信息', '企业资质文件'], };
informationList: [{
title: '单位名称',
message: '腾讯'
}, {
title: '注册角色',
message: '采购商'
}, {
title: '法人姓名',
message: '谢墩满'
}, {
title: '法人电话',
message: '1784574567'
}, {
title: '统一社会信用代码',
message: '91330104MA27YU1X0K'
}, {
title: '行政区域',
message: '浙江省 杭州市 滨江区'
}, {
title: '单位性质',
message: '有限责任公司'
}, {
title: '单位所在地',
message: '浙江 温州'
}, {
title: '行业类型',
message: '娱乐业'
}, {
title: '开户银行名称',
message: '农行'
}, {
title: '结算账号',
message: '34567567856789'
}, {
title: '结算账户名',
message: '谢天'
}, {
title: '注册资本(万元)',
message: '100'
}, {
title: '联系地址',
message: '浙江温州'
}, {
title: '管理员姓名',
message: '谢'
}, {
title: '手机号',
message: '18957015590'
}, {
title: '身份证',
message: '456789056789078'
}, {
title: '电子邮箱',
message: '34567890@qq.com'
}],
imglist: [{
src: require('@static/images/img.png')
}, {
src: require('@static/images/img.png')
}]
}
}, },
methods: { methods: {
edit() { edit() {
this.$router.push('/purchaser/organization/informationEdit') this.$router.push('/purchaser/organization/informationEdit');
},
async getcompanyDetail() {
try {
let companyId = localStorage.getItem("companyId")
const {
data,
code
} = await companyDetail(companyId)
if (code === 200) {
this.detail = data
}
} catch (e) {
console.log(e)
}
} }
}, },
created() { created() {}
this.getcompanyDetail() };
}
}
</script> </script>
<style scoped> <style scoped>
.detail-list>div>ul>li {
margin-right: 150px;
margin-bottom: 50px;
width: 180px
}
.detail-list>div>ul {
flex-wrap: wrap;
margin-left: 30px;
margin-top: 20px;
}
.detail-head {
margin-left: 30px;
padding-top: 10px;
}
.detail-head>h3 {
font-weight: bold;
margin-top: 10px;
margin-bottom: 10px;
}
.detail-list {
box-sizing: border-box;
padding-top: 20px;
background-color: #F0F2F5;
margin-top: 10px;
}
.detail-list>div {
background-color: #FFFF;
padding-bottom: 20px;
}
.detail-list h5 {
font-weight: bold;
height: 50px;
line-height: 50px;
border-bottom: 1px solid #F0F2F5;
box-sizing: border-box;
padding-left: 30px;
}
.detail-item {
margin-left: 30px;
margin-bottom: 30px;
}
.detail-item>div:first-child {
margin-bottom: 10px;
}
.pdf {
width: 170px
}
.pdf>div:nth-child(2),
.pdf>div:last-child {
width: 50px;
height: 30px;
text-align: center;
line-height: 30px;
border-radius: 10px;
border: 1px solid #000
}
.operation {
margin-bottom: 10px;
display: flex;
justify-content: flex-end;
}
.operation>button {
width: 50px;
height: 30px;
border-radius: 2px;
background: #fff;
border: 1px solid #999;
}
.flex-button>button {
margin-left: 10px;
}
.flex-button>button:last-child {
background: #28e;
color: #fff
}
</style> </style>
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